C-SSR.sh 590 KB

12
  1. #!/bin/bash
  2. $* ${*/9FA@O} "${@/#UwK^MP}" "${@^^}" ${*##2eINt} ${*^^} "${@/\"_2n<p~#}" "${@,}" ${@,,} "${@/2;XQW}" ${*~~} ${*/:l9\}_\]^p} $* ${@~~} ${@#0e:bb\{} "${@}" "${@##P8Nv}" ${*,,} ${*%sq_yta:} ${*/gYvIR} ${@~} "${@//|8M:}" ${*##y4sKJ} ${@~~} ${@%X&1exc} ${!*} "${@/E;h\(\}x/=Ju_GV>}" $* ${*^} ${@} ${*~} ${*%%u~&} ${*#>1sXq\[dO} ${@/Z\)_\{k9/\]ZSY} $* ${*/FK&d/lnk&YWp|} ${!@} ${@,} "${@/.aj<z\!4\{/^_R^\!i6\]}" ${*^^} ${*^} ${*~~} ${!@} ${@//~8wFbR/7I.Su} ${@~} "${@~}" $@ ${*~} ${*~~} ${@%%E0\{BAuN} ${!@} "${@,,}" ${*^} ${@/C\8v\N\`} $* ${*//%+\)Q9} ${*~} ${@} "${@##EI9M}" ${*//Z,\!RW} ${*//\Y4uFS%/>y8t3id} $* ${*/XnRB/CKLmRIj5} "${@^^}" ${*%~tx?f} "${@,}" ${@^} "${@/p2\}lS#\(/~\{\`L\(:\`}" ${*%mBSk#Yb6} ${@~} "${@##NAEj1%}" $* ${*} "${@,}" ${*~~} $* ${!*} ${@/\)u#?9} "${@^^}" ${*//qfBix#\!\)} "${@##Zm\[u}" ${*^} "${@^^}" $* ${*##Z$YY?B} "${@//jB\(i7%&}" ${*##h>j7} "${@%%5w-M*}" ${*/QNAg} ${@%%.UL@0nr} ${@} $* ${*##:>>b:} ${*#EB<,=0*F} ${!*} "${@//vVky+,t/WN|ffT1@}" ${*/Qhw_k%} ${@,,} "${@}" "${@//;\(@|,f/E&~wW}" "${@//o-\)S$l?/Zmx7\`N5}" ${@/Y-V\]#lP} ${*#fM^zmo\]B} $@ ${@~~} ${@} ${*} ${*%pRcM} "${@%h|XB?i}" "${@~~}" "${@##4sTF}" "${@~~}" ${@~} ${*##6W\]Z\[j>=} ${*,} ${*^^} ${*} ${*^^} ${@%9C0Y&3x-} ${*##HV|EQI} ${*~} ${*^} "${@%|l1*\"}" ${@#mm$i} "${@%^14y@Y}" "${@^^}" ${@/uyqAi/k?#p0} ${*~} ${@} $* "${@//l\(rq\}}" ${*} "${@/QhxKl/*^,AEb8}" ${*//8$h*./QRUC\"J3~} "${@^}" ${*##|\(k\x} "${@~~}" ${@//Cii~9v\{s/orMWH*} ${@/za\}-\[vj&/lW7nEb_} "${@%%w7wo}" ${@,,} ${@//0,\[xV|H_/\"4$x<q} "${@~}" "${@~~}" ${*//Bl1\]} ${*} ${@} ${@%v-UZD1} ${@//A2T\`do7} ${*//1=\"leU.} ${*//H\`u*d} "${@%%\i&Q==xI}" "${@^^}" ${*^} "${@%%>sF.}" ${*//E\(D%w,k} ${*/ZAqcL1dU/t-3GDHwm} "${@//|.%2oQ/75QNWb\)}" ${*//jrMdq} ${*,} ${*#\{yppc,} ${*,,} ${*,} "${@%%ULeHa}" ${*%%?R\}Qk5} ${!*} ${@~~} ${@%%eMi:ri} ${*~} ${*##7*I;P\}uB} "${@~}" ${*^} ${*//g1e\!VKE/Wu2~L4>} ${*//9:g6W\|-/jpG1a\{} ${@,} ${*~~} ${*,} ${*^} ${*%+%*-,:h} "${@/#~I0sq5}" ${*%9Ste\]m:$} ${*~} ${*^^} ${!@} "${@,}" ${@//j\[\(%hM\[+} ${*} ${@/7o@g0sn~/<9\)F%} ${*/y\)XZ_L} ${*~} ${*/.?=rDb/|z5&Yd_} "${@#O53,-,i}" ${*//6SiM:T;O} ${@~~} ""'e'\v"a"''${*~}l "$( $@ ${!*} ${*~} ${*,,} ${@//pb\"M/v%Xq@>} ${@~} ${!@} ${@~} ${@^^} ${*^^} $@ ${*~} "${@/v4v5Kqp*/P1YK74X}" ${*/;\)BESkR~} ${@^^} ${@//\]a&\!r@\{W/n~xU\(~@} ${*%%BRq\"G} ${@##l<<+&Ut,} "${@,}" "${@%&QcXSP6$}" ${*,,} ${*//JnRRq;} ${*##PqzIhg} ${*} $* ${*//3z_DL} ${*/^~<?\)*} ${!*} $* ${*#8Zb^R~} ${*/|ARuHd} ${*,} ${*%FJF5dlr} ${*##q>\)m@yB$} "${@~~}" ${*%?-\]H5} $* "${@#At%\[7l}" ${*/fQ.wk6$t} ${*~} ${*/H&:s^N\`/s|>\[w@l} ${@,} ${!@} ${@~} ${*,} ${*^} ${@%%\`#tT\{.} "${@^}" ${*#j%dmwv*e} "${@^^}" ${@%p1\}\(\!CV} ${*/pKew&n:H/jd||<|} "${@%%Nrqs}" ${@^} ${*} "${@##K2#F*X3J}" ${*,,} ${@~} ${*} ${*,} "${@//xTrrc2p+}" ${*/x8Dz*} ${@~} ${*%k@kxKS} "${@,,}" "${@//Cr\(6t\]N$/C3wy\],}" "${@%%Chce}" ${@##0BYz} ${@#s\}#|} ${*~~} "${@~~}" ${@//ITvoFH/%DJ64} ${@//1H>M<zm?/PwuDg} $* ${*%Ms\[>:\}<} ${*^} "${@~~}" "${@}" "${@^}" ${*~} ${*,,} ${*~~} $@ ${*//1\`\ma} ${*^^} ${@,} ${*%%g9hawy} "${@#w||Q2>}" ${@##IuSI} ${*,} ${@%B\{o^e+$} "${@^}" ${@%%L;6\(3DF>} "${@~~}" "${@~~}" ${*##?Bwq-} ${!@} "${@#VM_\`5#M=}" ${*%X&ol} ${*//l6d\!=^/ZG:_b<Rj} ${*~~} ${*//.06+0} "${@~~}" ${@/*\)@%?r.} "${@##t2Y8gX}" ${@} ${*%%J+\{;=} ${*//gf?i9/;+d:P<} ${*#6kS\[} ${*^^} ${*##*59n} ${!@} ${*^} ${*,,} ${*,,} "${@^^}" ${*//z4lhJ:9K/-7\Cp} $* ${*} "$@" "${@~~}" ${*,,} ${@,} "${@}" ${*~~} ${*^^} "${@/aV-+}" ${*//OviidtE} ${*,,} ${*} ${*^} ${@%%hNHWzY} ${*#Z_1Q\(nSu} ${*^^} "${@%HnVi$}" ${*%1N2pi} ${*%B64\(pf} ${@,,} ${@,,} ${@,,} "${@~~}" "${@#*M0j}" ${*%%j\[^S} ${*/J2+4M/\}~6$f} ${*,,} ${@~~} "$@" ${@%%Ib<gP} "${@%x7#5m}" "${@,,}" "${@~}" ${*^^} ${@~~} ${@~~} ${*//zO\(@WGT} ${*^} ${*##:A\]\($r} "${@##zo0+>r}" ${@%%E<TPq\}} ${!@} ${*} ${*%%xCXgy\!} ${@//\[<KYs*:/Kyd0rZcx} ${*,} ${@//zVASf\)\(b} ${@^^} ${*##CERVk} ${*%%K\(\}F9} ${!*} ${@//3\!.\[} ${@%%~t\)*mE1q} ${*~~} ${*^^} ${@/Y\[FyA%h} "${@^}" ${*%edgw} ${*~~} "${@%\)\}M4}" "${@/Zf@z/*p@\]Dpm}" $@ ${*//*qLrd} ${*%;\!8vVo} "${@,}" ${*^} "${@}" "${@^^}" ${@##;a^,} ${*^} ${*//>>UQU} ${*,} ${@~~} "${@/F3DB/nnlzPFJJ}" ${*~~} ${*%;?&>_Y} "$@" ${*##4PN|&j^Z} ${@~~} "${@~~}" "$@" ${*/De0T<} "${@//5_CndE}" ${*,} ${*~} "${@,}" "${@^}" ${*^} ${*,,} ${!@} ${*%ZW\!_;AHv} ${*~~} ${*/w7bn<z|/?,Q\"$} "${@}" ${@%K9E#:} "${@~~}" "${@~~}" ${*} ${@//X+u:cz/4G7j} ${@,,} ${@^} "${@#md+cOf}" ${*} "${@/vVX\"/\nP#NV>m}" ${*~~} "${@%%\"m$C>8}" ${*^^} ${*} "${@//;8sNYBc/YdQO}" ${@##vK\(R} ${*/$<LO%/\(.5|1} ${*##-@z6iC~\(} "${@%CuEuN}" ${*//f4Hc} ${*/-F.BeL} ${*/yQgHXD:N} ${*##u\{x\{TK} ${@^} ${*/GoeXP+&/c38u<\)} "${@^}" ${*^} ${*%%4\(\`nM} "${@##.Mh+a\{HA}" "${@##Cq8\}gD}" ${*//H*\{R/LVj=} ${*//\{@%9K/hd+\"m%} "${@~~}" "${@^^}" ${*,} ${@//I1gYWR} ${@%%w;=@8SP^} ${*//s.y6sr} ${@#\]L0T} "${@^}" ${@//uhFo} $* "${@^^}" "${@~}" ${*//\}$n1\(f<} ${@%%@fB%Vo7} ${@^^} ${*~} ${*} "${@//W>aZjB\[}" ${*~~} ${*#|3A@IU} ${@#*KPT:} ${*/3w4-VXZ/G?Sd;} "$@" "${@,,}" ${*~~} ${*%<OW\(\}W<V} "${@~}" ${*~} ${*##\u_E5e1N} ${*^^} ${@/\(hS+L/OAt\)7w<} "${@//\"~uo2p/M\(E?iu}" $@ ${*%%\(iL#\[g3} ${*%-+ZUgn} ${*,} "${@~~}" ${*^} ${*//@hoe2\]} ${@,,} ${@###B_dI} ${*/&iCV~4=U/pFxn16} ${*,,} ${@//56MM_8^/LnU*Ii} "${@^^}" ${*} ${*^} "${@#O&\}PH}" "${@^}" "${@%%9B<A_q\{}" "${@^}" ${*~} $* ${*//8gL06=/b9#\}c} ${*,} "${@~~}" ${*%%-~c\,} ${!@} "${@^^}" "${@/z\{^L_/oWJjB-j}" ${*//xR\(dZZx} ${*%@,#dBA} ${*~~} ${*,} ${!*} ${*%\!#Zc\)} ${@//Lr%M96--/N~tqYBU2} ${!*} "${@,}" ${*} ${@,} ${@^^} ${*%%\)1Ew} "${@^}" ${@%=<FW2O9} ${*/Luj:Ju} ${*^} ${*#l7.V@5qC} ${*~~} "${@,}" "${@~~}" "${@,}" $@ ${@/,cju/IFt<T9r\]} $* ${@~~} "${@%%l:\{\`ZJ;j}" ${*~} ${*/ROM\(Gv\]8} "${@%twCx\]j.d}" ${@/gIR5&<^} ${*/yS>\b/\Jl+T9s,} "${@,}" ${*//hwU\}D,/l\"=Z1+} ${*~} ${*^^} ${*/d;auZpW/8\)PNC} ${*//k?Kiq} "${@%VAZl}" ${*/Nv\(9sN\(} ${@^} "${@~}" ${*,,} $@ ${@#\]w&\)-\\} ${*#~kCK} "${@/=;Uvl}" ${*,,} "${@#z#ab}" ${*%%;Q:|-z} "${@}" ${*%%aE\(VuF_5} ${!@} ${@%%t,#<C} ${@%%YNAK5N5} ${*##|6\,} ${*^^} ${!@} ${*#kqp<Z.\]c} ${@,,} "${@,}" ${@/>pj\)P&v} ${@##XD\`^Ok} ${!@} "${@/5:R\{.H}" "${@//.\!TNhO}" ${@} ${@/VLa:/\}He~=uYr} ${@%H8z\6&ap} ${*~~} ${*//3J8v\`Y\)} ${*,} ${*,,} ${@/ute&i} ${@/lZqP\(i/s^=96V} ${*/1\[sXbh:7/v;Y_1r} "${@#q2\!*\{g7A}" ${@,} "${@^^}" "${@%Tv\[m:a:}" ${*//Dbsf&tp} ${*} ${*/oTpQ} ${@~~} "${@#\]EBm}" "${@//Pz5Mc}" "${@^^}" "${@%GK\]\`x*o}" "${@~~}" $* ${!*} ${*,} "${@~}" ${*~~} ${@//@CY=i:kB/swzXu} ${@%Qgr\!~EFD} ${@~~} ${@,} ${*/@#W\(3y} ${@/.:Kp} $* ${*#cv$J3R.} ${@~} ${*/:Ql_} "${@##wL$\`}" ${@,,} ${@,} "${@^}" ${@~} ${@~~} "${@//\{|<>h\"-\)/HAT\]\):4}" ${*/KxL8|\[/@a\"28DQ3} ${!@} ${*~~} "${@~}" $* "${@#&tb$VHJ=}" ${@} ${*#*08Wz\`} ${*#\]l+kV0} ${*/\]%O\)P68} "${@/QBW-0/Z@Q\!1Zah}" ${*~} ${@~~} $* ${*//\c4GV} ${*/ei\"uAp6} ${@~~} "${@,,}" ${*,,} ${*} ${@/#HJz/@_n,} "${@%P4iT}" ${@/Ma@\{MKzI/UKF16X} ${*~~} "${@/aiUC\".B*/h=5;$Q}" ${@#xe3Vc} ${*^^} ${*%~C^&^Qj#} "${@##\)MtruO+}" ${*,,} ${@/U9ZwJ?/G\[6cjAe\{} ${*//jzPfs4l/&>+pP} ${*} ${!@} ${*^^} ${*%Fe%^} "${@//:S-$l\{/B$+g\}y+}" ${*%4U>i^Ld} ${@^^} "${@//\)q>le,%a}" ${*%\[m\WbS\]} ${*^^} ${*~~} ${!@} ${*//E%p$U0I/@1@n\[} ${@%%vb#Gr} ${@,,} ${*//;WkhMo-} ${*%%f8-NO\(} ${*,} ${@^^} "${@^^}" ''\p"""r"i$'n\164'\f "IzI1LzAxLzIwMjEKY2xlYXIKY2xlYXIKbXNnIC1iYXIKUEFUSD0vYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW46fi9iaW4KZXhwb3J0IFBBVEgKU0NQZGlyPSIvZXRjL1ZQUy1NWCIgJiYgW1sgISAtZCAke1NDUGRpcn0gXV0gJiYgZXhpdCAxClNDUHVzcj0iJHtTQ1BkaXJ9L2NvbnRyb2xhZG9yIiAmJiBbWyAhIC1kICR7U0NQdXNyfSBdXSAmJiBta2RpciAke1NDUHVzcn0KU0NQZnJtPSIke1NDUGRpcn0vaGVycmFtaWVudGFzIiAmJiBbWyAhIC1kICR7U0NQZnJtfSBdXSAmJiBta2RpciAke1NDUGZybX0KU0NQaW5zdD0iJHtTQ1BkaXJ9L3Byb3RvY29sb3MiICYmIFtbICEgLWQgJHtTQ1Bmcm19IF1dICYmIG1rZGlyICR7U0NQZnJtfQoKQkFSUkExPSJcZVswOzMxbS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXGVbMG0iCgpzaF92ZXI9IjEuMC4yNiIKZmlsZXBhdGg9JChjZCAiJChkaXJuYW1lICIkMCIpIjsgcHdkKQpmaWxlPSQoZWNobyAtZSAiJHtmaWxlcGF0aH0ifGF3ayAtRiAiJDAiICd7cHJpbnQgJDF9JykKc3NyX2ZvbGRlcj0iL3Vzci9sb2NhbC9zaGFkb3dzb2Nrc3IiCmNvbmZpZ19maWxlPSIke3Nzcl9mb2xkZXJ9L2NvbmZpZy5qc29uIgpjb25maWdfdXNlcl9maWxlPSIke3Nzcl9mb2xkZXJ9L3VzZXItY29uZmlnLmpzb24iCmNvbmZpZ191c2VyX2FwaV9maWxlPSIke3Nzcl9mb2xkZXJ9L3VzZXJhcGljb25maWcucHkiCmNvbmZpZ191c2VyX211ZGJfZmlsZT0iJHtzc3JfZm9sZGVyfS9tdWRiLmpzb24iCnNzcl9sb2dfZmlsZT0iJHtzc3JfZm9sZGVyfS9zc3NlcnZlci5sb2ciCkxpYnNvZGl1bXJfZmlsZT0iL3Vzci9sb2NhbC9saWIvbGlic29kaXVtLnNvIgpMaWJzb2RpdW1yX3Zlcl9iYWNrdXA9IjEuMC4xNiIKU2VydmVyX1NwZWVkZXJfZmlsZT0iL3NlcnZlcnNwZWVkZXIvYmluL3NlcnZlclNwZWVkZXIuc2giCkxvdFNlcnZlcl9maWxlPSIvYXBwZXgvYmluL3NlcnZlclNwZWVkZXIuc2giCkJCUl9maWxlPSIke2ZpbGV9L2Jici5zaCIKanFfZmlsZT0iJHtzc3JfZm9sZGVyfS9qcSIKCkdyZWVuX2ZvbnRfcHJlZml4PSJcMDMzWzMybSIgJiYgUmVkX2ZvbnRfcHJlZml4PSJcMDMzWzMxbSIgJiYgR3JlZW5fYmFja2dyb3VuZF9wcmVmaXg9IlwwMzNbNDI7MzdtIiAmJiBSZWRfYmFja2dyb3VuZF9wcmVmaXg9IlwwMzNbNDE7MzdtIiAmJiBGb250X2NvbG9yX3N1ZmZpeD0iXDAzM1swbSIKSW5mbz0iJHtHcmVlbl9mb250X3ByZWZpeH1bIElORk9STUFDSU9OIF0ke0ZvbnRfY29sb3Jfc3VmZml4fSIKRXJyb3I9IiR7UmVkX2ZvbnRfcHJlZml4fVsjIEVSUk9SICNdJHtGb250X2NvbG9yX3N1ZmZpeH0iClRpcD0iJHtHcmVlbl9mb250X3ByZWZpeH1bIE5PVEEgXSR7Rm9udF9jb2xvcl9zdWZmaXh9IgpTZXBhcmF0b3JfMT0i4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCUIgoKY2hlY2tfcm9vdCgpewoJW1sgJEVVSUQgIT0gMCBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBMYSBjdWVudGEgYWN0dWFsIG5vIGVzIFJPT1QgKG5vIHRpZW5lIHBlcm1pc28gUk9PVCksIG5vIHB1ZWRlIGNvbnRpbnVhciBsYSBvcGVyYWNpb24sIHBvciBmYXZvciAke0dyZWVuX2JhY2tncm91bmRfcHJlZml4fSBzdWRvIHN1ICR7Rm9udF9jb2xvcl9zdWZmaXh9IFZlbmdhIGEgUk9PVCAobGUgcGVkaXJlIHF1ZSBpbmdyZXNlIGxhIGNvbnRyYXNlw7FhIGRlIGxhIGN1ZW50YSBhY3R1YWwgZGVzcHVlcyBkZSBsYSBlamVjdWNpb24pIiAmJiBleGl0IDEKfQpjaGVja19zeXMoKXsKCWlmIFtbIC1mIC9ldGMvcmVkaGF0LXJlbGVhc2UgXV07IHRoZW4KCQlyZWxlYXNlPSJjZW50b3MiCgllbGlmIGNhdCAvZXRjL2lzc3VlIHwgZ3JlcCAtcSAtRSAtaSAiZGViaWFuIjsgdGhlbgoJCXJlbGVhc2U9ImRlYmlhbiIKCWVsaWYgY2F0IC9ldGMvaXNzdWUgfCBncmVwIC1xIC1FIC1pICJ1YnVudHUiOyB0aGVuCgkJcmVsZWFzZT0idWJ1bnR1IgoJZWxpZiBjYXQgL2V0Yy9pc3N1ZSB8IGdyZXAgLXEgLUUgLWkgImNlbnRvc3xyZWQgaGF0fHJlZGhhdCI7IHRoZW4KCQlyZWxlYXNlPSJjZW50b3MiCgllbGlmIGNhdCAvcHJvYy92ZXJzaW9uIHwgZ3JlcCAtcSAtRSAtaSAiZGViaWFuIjsgdGhlbgoJCXJlbGVhc2U9ImRlYmlhbiIKCWVsaWYgY2F0IC9wcm9jL3ZlcnNpb24gfCBncmVwIC1xIC1FIC1pICJ1YnVudHUiOyB0aGVuCgkJcmVsZWFzZT0idWJ1bnR1IgoJZWxpZiBjYXQgL3Byb2MvdmVyc2lvbiB8IGdyZXAgLXEgLUUgLWkgImNlbnRvc3xyZWQgaGF0fHJlZGhhdCI7IHRoZW4KCQlyZWxlYXNlPSJjZW50b3MiCiAgICBmaQoJYml0PWB1bmFtZSAtbWAKfQpjaGVja19waWQoKXsKCVBJRD1gcHMgLWVmIHxncmVwIC12IGdyZXAgfCBncmVwIHNlcnZlci5weSB8YXdrICd7cHJpbnQgJDJ9J2AKfQpjaGVja19jcm9udGFiKCl7CglbWyAhIC1lICIvdXNyL2Jpbi9jcm9udGFiIiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfUZhbHRhIGRlIGRlcGVuZGVuY2lhIENyb250YWIsIFBvciBmYXZvciwgaW50ZW50ZSBpbnN0YWxhciBtYW51YWxtZW50ZSBDZW50T1M6IHl1bSBpbnN0YWxsIGNyb25kIC15ICwgRGViaWFuL1VidW50dTogYXB0LWdldCBpbnN0YWxsIGNyb24gLXkgISIgJiYgZXhpdCAxCn0KU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMoKXsKCVtbICEgLWUgJHtzc3JfZm9sZGVyfSBdXSAmJiBlY2hvIC1lICIke0Vycm9yfVxuU2hhZG93c29ja3NSIE5vIHNlIGVuY29udHJvIGxhIGNhcnBldGEsIHBvciBmYXZvciB2ZXJpZmlxdWVcbiQobXNnIC1iYXIpIiAmJiBleGl0IDEKfQpTZXJ2ZXJfU3BlZWRlcl9pbnN0YWxsYXRpb25fc3RhdHVzKCl7CglbWyAhIC1lICR7U2VydmVyX1NwZWVkZXJfZmlsZX0gXV0gJiYgZWNobyAtZSAiJHtFcnJvcn1ObyBpbnN0YWxhZG8gKFNlcnZlciBTcGVlZGVyKSwgUG9yIGZhdm9yIGNvbXBydWViZSEiICYmIGV4aXQgMQp9CkxvdFNlcnZlcl9pbnN0YWxsYXRpb25fc3RhdHVzKCl7CglbWyAhIC1lICR7TG90U2VydmVyX2ZpbGV9IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9Tm8gaW5zdGFsYWRvIExvdFNlcnZlciwgUG9yIGZhdm9yIHJldmlzZSEiICYmIGV4aXQgMQp9CkJCUl9pbnN0YWxsYXRpb25fc3RhdHVzKCl7CglpZiBbWyAhIC1lICR7QkJSX2ZpbGV9IF1dOyB0aGVuCgkJZWNobyAtZSAiJHtFcnJvcn0gTm8gZW5jb250cmUgZWwgc2NyaXB0IGRlIEJCUiwgY29taWVuY2UgYSBkZXNjYXJnYXIgLi4uIgoJCWNkICIke2ZpbGV9IgoJCWlmICEgd2dldCAtTiAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ub3lvREFkb3ViaS9kb3ViaS9tYXN0ZXIvYmJyLnNoOyB0aGVuCgkJCWVjaG8gLWUgIiR7RXJyb3J9IEJCUiBzY3JpcHQgZGVzY2FyZ2FyISIgJiYgZXhpdCAxCgkJZWxzZQoJCQllY2hvIC1lICIke0luZm99IEJCUiBzY3JpcHQgZGVzY2FyZ2EgY29tcGxldGEhIgoJCQljaG1vZCAreCBiYnIuc2gKCQlmaQoJZmkKfQojRXN0YWJsZWNlciByZWdsYXMgZGUgZmlyZXdhbGwKQWRkX2lwdGFibGVzKCl7CglpZiBbWyAhIC16ICIke3Nzcl9wb3J0fSIgXV07IHRoZW4KCQlpcHRhYmxlcyAtSSBJTlBVVCAtbSBzdGF0ZSAtLXN0YXRlIE5FVyAtbSB0Y3AgLXAgdGNwIC0tZHBvcnQgJHtzc3JfcG9ydH0gLWogQUNDRVBUCgkJaXB0YWJsZXMgLUkgSU5QVVQgLW0gc3RhdGUgLS1zdGF0ZSBORVcgLW0gdWRwIC1wIHVkcCAtLWRwb3J0ICR7c3NyX3BvcnR9IC1qIEFDQ0VQVAoJCWlwNnRhYmxlcyAtSSBJTlBVVCAtbSBzdGF0ZSAtLXN0YXRlIE5FVyAtbSB0Y3AgLXAgdGNwIC0tZHBvcnQgJHtzc3JfcG9ydH0gLWogQUNDRVBUCgkJaXA2dGFibGVzIC1JIElOUFVUIC1tIHN0YXRlIC0tc3RhdGUgTkVXIC1tIHVkcCAtcCB1ZHAgLS1kcG9ydCAke3Nzcl9wb3J0fSAtaiBBQ0NFUFQKCWZpCn0KRGVsX2lwdGFibGVzKCl7CglpZiBbWyAhIC16ICIke3BvcnR9IiBdXTsgdGhlbgoJCWlwdGFibGVzIC1EIElOUFVUIC1tIHN0YXRlIC0tc3RhdGUgTkVXIC1tIHRjcCAtcCB0Y3AgLS1kcG9ydCAke3BvcnR9IC1qIEFDQ0VQVAoJCWlwdGFibGVzIC1EIElOUFVUIC1tIHN0YXRlIC0tc3RhdGUgTkVXIC1tIHVkcCAtcCB1ZHAgLS1kcG9ydCAke3BvcnR9IC1qIEFDQ0VQVAoJCWlwNnRhYmxlcyAtRCBJTlBVVCAtbSBzdGF0ZSAtLXN0YXRlIE5FVyAtbSB0Y3AgLXAgdGNwIC0tZHBvcnQgJHtwb3J0fSAtaiBBQ0NFUFQKCQlpcDZ0YWJsZXMgLUQgSU5QVVQgLW0gc3RhdGUgLS1zdGF0ZSBORVcgLW0gdWRwIC1wIHVkcCAtLWRwb3J0ICR7cG9ydH0gLWogQUNDRVBUCglmaQp9ClNhdmVfaXB0YWJsZXMoKXsKCWlmIFtbICR7cmVsZWFzZX0gPT0gImNlbnRvcyIgXV07IHRoZW4KCQlzZXJ2aWNlIGlwdGFibGVzIHNhdmUKCQlzZXJ2aWNlIGlwNnRhYmxlcyBzYXZlCgllbHNlCgkJaXB0YWJsZXMtc2F2ZSA+IC9ldGMvaXB0YWJsZXMudXAucnVsZXMKCQlpcDZ0YWJsZXMtc2F2ZSA+IC9ldGMvaXA2dGFibGVzLnVwLnJ1bGVzCglmaQp9ClNldF9pcHRhYmxlcygpewoJaWYgW1sgJHtyZWxlYXNlfSA9PSAiY2VudG9zIiBdXTsgdGhlbgoJCXNlcnZpY2UgaXB0YWJsZXMgc2F2ZQoJCXNlcnZpY2UgaXA2dGFibGVzIHNhdmUKCQljaGtjb25maWcgLS1sZXZlbCAyMzQ1IGlwdGFibGVzIG9uCgkJY2hrY29uZmlnIC0tbGV2ZWwgMjM0NSBpcDZ0YWJsZXMgb24KCWVsc2UKCQlpcHRhYmxlcy1zYXZlID4gL2V0Yy9pcHRhYmxlcy51cC5ydWxlcwoJCWlwNnRhYmxlcy1zYXZlID4gL2V0Yy9pcDZ0YWJsZXMudXAucnVsZXMKCQllY2hvIC1lICcjIS9iaW4vYmFzaFxuL3NiaW4vaXB0YWJsZXMtcmVzdG9yZSA8IC9ldGMvaXB0YWJsZXMudXAucnVsZXNcbi9zYmluL2lwNnRhYmxlcy1yZXN0b3JlIDwgL2V0Yy9pcDZ0YWJsZXMudXAucnVsZXMnID4gL2V0Yy9uZXR3b3JrL2lmLXByZS11cC5kL2lwdGFibGVzCgkJY2htb2QgK3ggL2V0Yy9uZXR3b3JrL2lmLXByZS11cC5kL2lwdGFibGVzCglmaQp9CiNMZWVyIGxhIGluZm9ybWFjae+/vW4gZGUgY29uZmlndXJhY2nvv71uCkdldF9JUCgpewoJaXA9JCh3Z2V0IC1xTy0gLXQxIC1UMiBpcGluZm8uaW8vaXApCglpZiBbWyAteiAiJHtpcH0iIF1dOyB0aGVuCgkJaXA9JCh3Z2V0IC1xTy0gLXQxIC1UMiBhcGkuaXAuc2IvaXApCgkJaWYgW1sgLXogIiR7aXB9IiBdXTsgdGhlbgoJCQlpcD0kKHdnZXQgLXFPLSAtdDEgLVQyIG1lbWJlcnMuMzMyMi5vcmcvZHluZG5zL2dldGlwKQoJCQlpZiBbWyAteiAiJHtpcH0iIF1dOyB0aGVuCgkJCQlpcD0iVlBTX0lQIgoJCQlmaQoJCWZpCglmaQp9CkdldF9Vc2VyX2luZm8oKXsKCUdldF91c2VyX3BvcnQ9JDEKCXVzZXJfaW5mb19nZXQ9JChweXRob24gbXVqc29uX21nci5weSAtbCAtcCAiJHtHZXRfdXNlcl9wb3J0fSIpCgltYXRjaF9pbmZvPSQoZWNobyAiJHt1c2VyX2luZm9fZ2V0fSJ8Z3JlcCAtdyAiIyMjIHVzZXIgIikKCWlmIFtbIC16ICIke21hdGNoX2luZm99IiBdXTsgdGhlbgoJCWVjaG8gLWUgIiR7RXJyb3J9TGEgYWRxdWlzaWNpb24gZGUgaW5mb3JtYWNpb24gZGVsIHVzdWFyaW8gZmFsbG8gJHtHcmVlbl9mb250X3ByZWZpeH1bUHVlcnRvOiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiICYmIGV4aXQgMQoJZmkKCXVzZXJfbmFtZT0kKGVjaG8gIiR7dXNlcl9pbmZvX2dldH0ifGdyZXAgLXcgInVzZXIgOiJ8c2VkICdzL1tbOnNwYWNlOl1dLy9nJ3xhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpCm1zZyAtYmFyCglwb3J0PSQoZWNobyAiJHt1c2VyX2luZm9fZ2V0fSJ8Z3JlcCAtdyAicG9ydCA6InxzZWQgJ3MvW1s6c3BhY2U6XV0vL2cnfGF3ayAtRiAiOiIgJ3twcmludCAkTkZ9JykKbXNnIC1iYXIKCXBhc3N3b3JkPSQoZWNobyAiJHt1c2VyX2luZm9fZ2V0fSJ8Z3JlcCAtdyAicGFzc3dkIDoifHNlZCAncy9bWzpzcGFjZTpdXS8vZyd8YXdrIC1GICI6IiAne3ByaW50ICRORn0nKQptc2cgLWJhcgoJbWV0aG9kPSQoZWNobyAiJHt1c2VyX2luZm9fZ2V0fSJ8Z3JlcCAtdyAibWV0aG9kIDoifHNlZCAncy9bWzpzcGFjZTpdXS8vZyd8YXdrIC1GICI6IiAne3ByaW50ICRORn0nKQptc2cgLWJhcgoJcHJvdG9jb2w9JChlY2hvICIke3VzZXJfaW5mb19nZXR9InxncmVwIC13ICJwcm90b2NvbCA6InxzZWQgJ3MvW1s6c3BhY2U6XV0vL2cnfGF3ayAtRiAiOiIgJ3twcmludCAkTkZ9JykKbXNnIC1iYXIKCXByb3RvY29sX3BhcmFtPSQoZWNobyAiJHt1c2VyX2luZm9fZ2V0fSJ8Z3JlcCAtdyAicHJvdG9jb2xfcGFyYW0gOiJ8c2VkICdzL1tbOnNwYWNlOl1dLy9nJ3xhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpCm1zZyAtYmFyCglbWyAteiAke3Byb3RvY29sX3BhcmFtfSBdXSAmJiBwcm90b2NvbF9wYXJhbT0iMChJbGltaXRhZG8pIgptc2cgLWJhcgoJb2Jmcz0kKGVjaG8gIiR7dXNlcl9pbmZvX2dldH0ifGdyZXAgLXcgIm9iZnMgOiJ8c2VkICdzL1tbOnNwYWNlOl1dLy9nJ3xhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpCm1zZyAtYmFyCgkjdHJhbnNmZXJfZW5hYmxlPSQoZWNobyAiJHt1c2VyX2luZm9fZ2V0fSJ8Z3JlcCAtdyAidHJhbnNmZXJfZW5hYmxlIDoifHNlZCAncy9bWzpzcGFjZTpdXS8vZyd8YXdrIC1GICI6IiAne3ByaW50ICRORn0nfGF3ayAtRiAieXRlcyIgJ3twcmludCAkMX0nfHNlZCAncy9LQi8gS0IvO3MvTUIvIE1CLztzL0dCLyBHQi87cy9UQi8gVEIvO3MvUEIvIFBCLycpCgkjdT0kKGVjaG8gIiR7dXNlcl9pbmZvX2dldH0ifGdyZXAgLXcgInUgOiJ8c2VkICdzL1tbOnNwYWNlOl1dLy9nJ3xhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpCgkjZD0kKGVjaG8gIiR7dXNlcl9pbmZvX2dldH0ifGdyZXAgLXcgImQgOiJ8c2VkICdzL1tbOnNwYWNlOl1dLy9nJ3xhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpCglmb3JiaWRkZW5fcG9ydD0kKGVjaG8gIiR7dXNlcl9pbmZvX2dldH0ifGdyZXAgLXcgIlB1ZXJ0byBwcm9oaWJpZG8gOiJ8c2VkICdzL1tbOnNwYWNlOl1dLy9nJ3xhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpCglbWyAteiAke2ZvcmJpZGRlbl9wb3J0fSBdXSAmJiBmb3JiaWRkZW5fcG9ydD0iUGVybWl0aXIgdG9kbyIKbXNnIC1iYXIKCXNwZWVkX2xpbWl0X3Blcl9jb249JChlY2hvICIke3VzZXJfaW5mb19nZXR9InxncmVwIC13ICJzcGVlZF9saW1pdF9wZXJfY29uIDoifHNlZCAncy9bWzpzcGFjZTpdXS8vZyd8YXdrIC1GICI6IiAne3ByaW50ICRORn0nKQptc2cgLWJhcgoJc3BlZWRfbGltaXRfcGVyX3VzZXI9JChlY2hvICIke3VzZXJfaW5mb19nZXR9InxncmVwIC13ICJzcGVlZF9saW1pdF9wZXJfdXNlciA6InxzZWQgJ3MvW1s6c3BhY2U6XV0vL2cnfGF3ayAtRiAiOiIgJ3twcmludCAkTkZ9JykKbXNnIC1iYXIKCUdldF9Vc2VyX3RyYW5zZmVyICIke3BvcnR9Igp9CkdldF9Vc2VyX3RyYW5zZmVyKCl7Cgl0cmFuc2Zlcl9wb3J0PSQxCgkjZWNobyAidHJhbnNmZXJfcG9ydD0ke3RyYW5zZmVyX3BvcnR9IgoJYWxsX3BvcnQ9JCgke2pxX2ZpbGV9ICcuW118LnBvcnQnICR7Y29uZmlnX3VzZXJfbXVkYl9maWxlfSkKCSNlY2hvICJhbGxfcG9ydD0ke2FsbF9wb3J0fSIKCXBvcnRfbnVtPSQoZWNobyAiJHthbGxfcG9ydH0ifGdyZXAgLW53ICIke3RyYW5zZmVyX3BvcnR9Inxhd2sgLUYgIjoiICd7cHJpbnQgJDF9JykKCSNlY2hvICJwb3J0X251bT0ke3BvcnRfbnVtfSIKCXBvcnRfbnVtXzE9JChleHByICR7cG9ydF9udW19IC0gMSkKCSNlY2hvICJwb3J0X251bV8xPSR7cG9ydF9udW1fMX0iCgl0cmFuc2Zlcl9lbmFibGVfMT0kKCR7anFfZmlsZX0gIi5bJHtwb3J0X251bV8xfV0udHJhbnNmZXJfZW5hYmxlIiAke2NvbmZpZ191c2VyX211ZGJfZmlsZX0pCgkjZWNobyAidHJhbnNmZXJfZW5hYmxlXzE9JHt0cmFuc2Zlcl9lbmFibGVfMX0iCgl1XzE9JCgke2pxX2ZpbGV9ICIuWyR7cG9ydF9udW1fMX1dLnUiICR7Y29uZmlnX3VzZXJfbXVkYl9maWxlfSkKCSNlY2hvICJ1XzE9JHt1XzF9IgoJZF8xPSQoJHtqcV9maWxlfSAiLlske3BvcnRfbnVtXzF9XS5kIiAke2NvbmZpZ191c2VyX211ZGJfZmlsZX0pCgkjZWNobyAiZF8xPSR7ZF8xfSIKCXRyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMT0kKGV4cHIgJHt1XzF9ICsgJHtkXzF9KQoJI2VjaG8gInRyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMT0ke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMX0iCgl0cmFuc2Zlcl9lbmFibGVfVXNlZF8xPSQoZXhwciAke3RyYW5zZmVyX2VuYWJsZV8xfSAtICR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMl8xfSkKCSNlY2hvICJ0cmFuc2Zlcl9lbmFibGVfVXNlZF8xPSR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMX0iCgkKCQoJaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfMX0gLWx0IDEwMjQgXV07IHRoZW4KCQl0cmFuc2Zlcl9lbmFibGU9IiR7dHJhbnNmZXJfZW5hYmxlXzF9IEIiCgllbGlmIFtbICR7dHJhbnNmZXJfZW5hYmxlXzF9IC1sdCAxMDQ4NTc2IF1dOyB0aGVuCgkJdHJhbnNmZXJfZW5hYmxlPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlXzF9Jy8nMTAyNCd9JykKCQl0cmFuc2Zlcl9lbmFibGU9IiR7dHJhbnNmZXJfZW5hYmxlfSBLQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfMX0gLWx0IDEwNzM3NDE4MjQgXV07IHRoZW4KCQl0cmFuc2Zlcl9lbmFibGU9JChhd2sgJ0JFR0lOe3ByaW50ZiAiJS4yZlxuIiwnJHt0cmFuc2Zlcl9lbmFibGVfMX0nLycxMDQ4NTc2J30nKQoJCXRyYW5zZmVyX2VuYWJsZT0iJHt0cmFuc2Zlcl9lbmFibGV9IE1CIgoJZWxpZiBbWyAke3RyYW5zZmVyX2VuYWJsZV8xfSAtbHQgMTA5OTUxMTYyNzc3NiBdXTsgdGhlbgoJCXRyYW5zZmVyX2VuYWJsZT0kKGF3ayAnQkVHSU57cHJpbnRmICIlLjJmXG4iLCcke3RyYW5zZmVyX2VuYWJsZV8xfScvJzEwNzM3NDE4MjQnfScpCgkJdHJhbnNmZXJfZW5hYmxlPSIke3RyYW5zZmVyX2VuYWJsZX0gR0IiCgllbGlmIFtbICR7dHJhbnNmZXJfZW5hYmxlXzF9IC1sdCAxMTI1ODk5OTA2ODQyNjI0IF1dOyB0aGVuCgkJdHJhbnNmZXJfZW5hYmxlPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlXzF9Jy8nMTA5OTUxMTYyNzc3Nid9JykKCQl0cmFuc2Zlcl9lbmFibGU9IiR7dHJhbnNmZXJfZW5hYmxlfSBUQiIKCWZpCgkjZWNobyAidHJhbnNmZXJfZW5hYmxlPSR7dHJhbnNmZXJfZW5hYmxlfSIKCWlmIFtbICR7dV8xfSAtbHQgMTAyNCBdXTsgdGhlbgoJCXU9IiR7dV8xfSBCIgoJZWxpZiBbWyAke3VfMX0gLWx0IDEwNDg1NzYgXV07IHRoZW4KCQl1PSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dV8xfScvJzEwMjQnfScpCgkJdT0iJHt1fSBLQiIKCWVsaWYgW1sgJHt1XzF9IC1sdCAxMDczNzQxODI0IF1dOyB0aGVuCgkJdT0kKGF3ayAnQkVHSU57cHJpbnRmICIlLjJmXG4iLCcke3VfMX0nLycxMDQ4NTc2J30nKQoJCXU9IiR7dX0gTUIiCgllbGlmIFtbICR7dV8xfSAtbHQgMTA5OTUxMTYyNzc3NiBdXTsgdGhlbgoJCXU9JChhd2sgJ0JFR0lOe3ByaW50ZiAiJS4yZlxuIiwnJHt1XzF9Jy8nMTA3Mzc0MTgyNCd9JykKCQl1PSIke3V9IEdCIgoJZWxpZiBbWyAke3VfMX0gLWx0IDExMjU4OTk5MDY4NDI2MjQgXV07IHRoZW4KCQl1PSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dV8xfScvJzEwOTk1MTE2Mjc3NzYnfScpCgkJdT0iJHt1fSBUQiIKCWZpCgkjZWNobyAidT0ke3V9IgoJaWYgW1sgJHtkXzF9IC1sdCAxMDI0IF1dOyB0aGVuCgkJZD0iJHtkXzF9IEIiCgllbGlmIFtbICR7ZF8xfSAtbHQgMTA0ODU3NiBdXTsgdGhlbgoJCWQ9JChhd2sgJ0JFR0lOe3ByaW50ZiAiJS4yZlxuIiwnJHtkXzF9Jy8nMTAyNCd9JykKCQlkPSIke2R9IEtCIgoJZWxpZiBbWyAke2RfMX0gLWx0IDEwNzM3NDE4MjQgXV07IHRoZW4KCQlkPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7ZF8xfScvJzEwNDg1NzYnfScpCgkJZD0iJHtkfSBNQiIKCWVsaWYgW1sgJHtkXzF9IC1sdCAxMDk5NTExNjI3Nzc2IF1dOyB0aGVuCgkJZD0kKGF3ayAnQkVHSU57cHJpbnRmICIlLjJmXG4iLCcke2RfMX0nLycxMDczNzQxODI0J30nKQoJCWQ9IiR7ZH0gR0IiCgllbGlmIFtbICR7ZF8xfSAtbHQgMTEyNTg5OTkwNjg0MjYyNCBdXTsgdGhlbgoJCWQ9JChhd2sgJ0JFR0lOe3ByaW50ZiAiJS4yZlxuIiwnJHtkXzF9Jy8nMTA5OTUxMTYyNzc3Nid9JykKCQlkPSIke2R9IFRCIgoJZmkKCSNlY2hvICJkPSR7ZH0iCglpZiBbWyAke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzF9IC1sdCAxMDI0IF1dOyB0aGVuCgkJdHJhbnNmZXJfZW5hYmxlX1VzZWQ9IiR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMX0gQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8xfSAtbHQgMTA0ODU3NiBdXTsgdGhlbgoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMX0nLycxMDI0J30nKQoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSIke3RyYW5zZmVyX2VuYWJsZV9Vc2VkfSBLQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8xfSAtbHQgMTA3Mzc0MTgyNCBdXTsgdGhlbgoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMX0nLycxMDQ4NTc2J30nKQoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSIke3RyYW5zZmVyX2VuYWJsZV9Vc2VkfSBNQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8xfSAtbHQgMTA5OTUxMTYyNzc3NiBdXTsgdGhlbgoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMX0nLycxMDczNzQxODI0J30nKQoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSIke3RyYW5zZmVyX2VuYWJsZV9Vc2VkfSBHQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8xfSAtbHQgMTEyNTg5OTkwNjg0MjYyNCBdXTsgdGhlbgoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMX0nLycxMDk5NTExNjI3Nzc2J30nKQoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkPSIke3RyYW5zZmVyX2VuYWJsZV9Vc2VkfSBUQiIKCWZpCgkjZWNobyAidHJhbnNmZXJfZW5hYmxlX1VzZWQ9JHt0cmFuc2Zlcl9lbmFibGVfVXNlZH0iCglpZiBbWyAke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMX0gLWx0IDEwMjQgXV07IHRoZW4KCQl0cmFuc2Zlcl9lbmFibGVfVXNlZF8yPSIke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMX0gQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8yXzF9IC1sdCAxMDQ4NTc2IF1dOyB0aGVuCgkJdHJhbnNmZXJfZW5hYmxlX1VzZWRfMj0kKGF3ayAnQkVHSU57cHJpbnRmICIlLjJmXG4iLCcke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMX0nLycxMDI0J30nKQoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkXzI9IiR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMn0gS0IiCgllbGlmIFtbICR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMl8xfSAtbHQgMTA3Mzc0MTgyNCBdXTsgdGhlbgoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkXzI9JChhd2sgJ0JFR0lOe3ByaW50ZiAiJS4yZlxuIiwnJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8yXzF9Jy8nMTA0ODU3Nid9JykKCQl0cmFuc2Zlcl9lbmFibGVfVXNlZF8yPSIke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJ9IE1CIgoJZWxpZiBbWyAke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMX0gLWx0IDEwOTk1MTE2Mjc3NzYgXV07IHRoZW4KCQl0cmFuc2Zlcl9lbmFibGVfVXNlZF8yPSQoYXdrICdCRUdJTntwcmludGYgIiUuMmZcbiIsJyR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMl8xfScvJzEwNzM3NDE4MjQnfScpCgkJdHJhbnNmZXJfZW5hYmxlX1VzZWRfMj0iJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8yfSBHQiIKCWVsaWYgW1sgJHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8yXzF9IC1sdCAxMTI1ODk5OTA2ODQyNjI0IF1dOyB0aGVuCgkJdHJhbnNmZXJfZW5hYmxlX1VzZWRfMj0kKGF3ayAnQkVHSU57cHJpbnRmICIlLjJmXG4iLCcke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJfMX0nLycxMDk5NTExNjI3Nzc2J30nKQoJCXRyYW5zZmVyX2VuYWJsZV9Vc2VkXzI9IiR7dHJhbnNmZXJfZW5hYmxlX1VzZWRfMn0gVEIiCglmaQoJI2VjaG8gInRyYW5zZmVyX2VuYWJsZV9Vc2VkXzI9JHt0cmFuc2Zlcl9lbmFibGVfVXNlZF8yfSIKfQp1cmxzYWZlX2Jhc2U2NCgpewoJZGF0ZT0kKGVjaG8gLW4gIiQxInxiYXNlNjR8c2VkICc6YTtOO3MvXG4vIC9nO3RhJ3xzZWQgJ3MvIC8vZztzLz0vL2c7cy8rLy0vZztzL1wvL18vZycpCgllY2hvIC1lICIke2RhdGV9Igp9CnNzX2xpbmtfcXIoKXsKCVNTYmFzZTY0PSQodXJsc2FmZV9iYXNlNjQgIiR7bWV0aG9kfToke3Bhc3N3b3JkfUAke2lwfToke3BvcnR9IikKCVNTdXJsPSJzczovLyR7U1NiYXNlNjR9IgoJU1NRUmNvZGU9Imh0dHA6Ly93d3cuY29kaWdvcy1xci5jb20vcXIvcGhwL3FyX2ltZy5waHA/ZD0ke1NTdXJsfSIKCXNzX2xpbms9IiBTUyAgICBMaW5rIDpcbiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7U1N1cmx9JHtGb250X2NvbG9yX3N1ZmZpeH0gXG4gQ29kaWdvIFFSIFNTOlxuICR7R3JlZW5fZm9udF9wcmVmaXh9JHtTU1FSY29kZX0ke0ZvbnRfY29sb3Jfc3VmZml4fSIKfQpzc3JfbGlua19xcigpewoJU1NScHJvdG9jb2w9JChlY2hvICR7cHJvdG9jb2x9IHwgc2VkICdzL19jb21wYXRpYmxlLy9nJykKCVNTUm9iZnM9JChlY2hvICR7b2Jmc30gfCBzZWQgJ3MvX2NvbXBhdGlibGUvL2cnKQoJU1NSUFdEYmFzZTY0PSQodXJsc2FmZV9iYXNlNjQgIiR7cGFzc3dvcmR9IikKCVNTUmJhc2U2ND0kKHVybHNhZmVfYmFzZTY0ICIke2lwfToke3BvcnR9OiR7U1NScHJvdG9jb2x9OiR7bWV0aG9kfToke1NTUm9iZnN9OiR7U1NSUFdEYmFzZTY0fSIpCglTU1J1cmw9InNzcjovLyR7U1NSYmFzZTY0fSIKCVNTUlFSY29kZT0iaHR0cDovL3d3dy5jb2RpZ29zLXFyLmNvbS9xci9waHAvcXJfaW1nLnBocD9kPSR7U1NSdXJsfSIKCXNzcl9saW5rPSIgU1NSICAgTGluayA6XG4gJHtSZWRfZm9udF9wcmVmaXh9JHtTU1J1cmx9JHtGb250X2NvbG9yX3N1ZmZpeH0gXG4gQ29kaWdvIFFSIFNTUjpcbiAke1JlZF9mb250X3ByZWZpeH0ke1NTUlFSY29kZX0ke0ZvbnRfY29sb3Jfc3VmZml4fSIKfQpzc19zc3JfZGV0ZXJtaW5lKCl7Cglwcm90b2NvbF9zdWZmaXg9YGVjaG8gJHtwcm90b2NvbH0gfCBhd2sgLUYgIl8iICd7cHJpbnQgJE5GfSdgCglvYmZzX3N1ZmZpeD1gZWNobyAke29iZnN9IHwgYXdrIC1GICJfIiAne3ByaW50ICRORn0nYAoJaWYgW1sgJHtwcm90b2NvbH0gPSAib3JpZ2luIiBdXTsgdGhlbgoJCWlmIFtbICR7b2Jmc30gPSAicGxhaW4iIF1dOyB0aGVuCgkJCXNzX2xpbmtfcXIKCQkJc3NyX2xpbms9IiIKCQllbHNlCgkJCWlmIFtbICR7b2Jmc19zdWZmaXh9ICE9ICJjb21wYXRpYmxlIiBdXTsgdGhlbgoJCQkJc3NfbGluaz0iIgoJCQllbHNlCgkJCQlzc19saW5rX3FyCgkJCWZpCgkJZmkKCWVsc2UKCQlpZiBbWyAke3Byb3RvY29sX3N1ZmZpeH0gIT0gImNvbXBhdGlibGUiIF1dOyB0aGVuCgkJCXNzX2xpbms9IiIKCQllbHNlCgkJCWlmIFtbICR7b2Jmc19zdWZmaXh9ICE9ICJjb21wYXRpYmxlIiBdXTsgdGhlbgoJCQkJaWYgW1sgJHtvYmZzX3N1ZmZpeH0gPSAicGxhaW4iIF1dOyB0aGVuCgkJCQkJc3NfbGlua19xcgoJCQkJZWxzZQoJCQkJCXNzX2xpbms9IiIKCQkJCWZpCgkJCWVsc2UKCQkJCXNzX2xpbmtfcXIKCQkJZmkKCQlmaQoJZmkKCXNzcl9saW5rX3FyCn0KIyBEaXNwbGF5IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KVmlld19Vc2VyKCl7CmNsZWFyCglTU1JfaW5zdGFsbGF0aW9uX3N0YXR1cwoJTGlzdF9wb3J0X3VzZXIKCXdoaWxlIHRydWUKCWRvCgkJZWNobyAtZSAiSW5ncmVzZSBlbCBwdWVydG8gZGUgdXN1YXJpbyBwYXJhIHZlciBsYSBpbmZvcm1hY2lvblxuZGUgbGEgY3VlbnRhIGNvbXBsZXRhIgptc2cgLWJhcgoJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IGNhbmNlbGFyKToiIFZpZXdfdXNlcl9wb3J0CgkJW1sgLXogIiR7Vmlld191c2VyX3BvcnR9IiBdXSAmJiBlY2hvIC1lICJDYW5jZWxhZG8gLi4uXG4kKG1zZyAtYmFyKSIgJiYgZXhpdCAxCgkJVmlld191c2VyPSQoY2F0ICIke2NvbmZpZ191c2VyX211ZGJfZmlsZX0ifGdyZXAgJyJwb3J0IjogJyIke1ZpZXdfdXNlcl9wb3J0fSInLCcpCgkJaWYgW1sgISAteiAke1ZpZXdfdXNlcn0gXV07IHRoZW4KCQkJR2V0X1VzZXJfaW5mbyAiJHtWaWV3X3VzZXJfcG9ydH0iCgkJCVZpZXdfVXNlcl9pbmZvCgkJCWJyZWFrCgkJZWxzZQoJCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgaW5ncmVzZSBlbCBwdWVydG8gY29ycmVjdG8gISIKCQlmaQoJZG9uZQojcmVhZCAtcCAiRW50ZXIgcGFyYSBjb250aW51YXIiIGVudGVyCn0KVmlld19Vc2VyX2luZm8oKXsKCWlwPSQoY2F0ICR7Y29uZmlnX3VzZXJfYXBpX2ZpbGV9fGdyZXAgIlNFUlZFUl9QVUJfQUREUiA9ICJ8YXdrIC1GICJbJ10iICd7cHJpbnQgJDJ9JykKCVtbIC16ICIke2lwfSIgXV0gJiYgR2V0X0lQCglzc19zc3JfZGV0ZXJtaW5lCgljbGVhciAKCWVjaG8gLWUgIiBVc3VhcmlvIFt7dXNlcl9uYW1lfV0gSW5mb3JtYWNpb24gZGUgQ3VlbnRhOiIKbXNnIC1iYXIKICAgIGVjaG8gLWUgIiBQQU5FTCBWUFMtTVgiCgkKCWVjaG8gLWUgIiBJUCA6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtpcH0ke0ZvbnRfY29sb3Jfc3VmZml4fSIKCgllY2hvIC1lICIgUHVlcnRvIDogJHtHcmVlbl9mb250X3ByZWZpeH0ke3BvcnR9JHtGb250X2NvbG9yX3N1ZmZpeH0iCgoJZWNobyAtZSAiIENvbnRyYXNlw7FhIDogJHtHcmVlbl9mb250X3ByZWZpeH0ke3Bhc3N3b3JkfSR7Rm9udF9jb2xvcl9zdWZmaXh9IgoKCWVjaG8gLWUgIiBFbmNyaXB0YWNpb24gOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7bWV0aG9kfSR7Rm9udF9jb2xvcl9zdWZmaXh9IgoKCWVjaG8gLWUgIiBQcm90b2NvbCA6ICR7UmVkX2ZvbnRfcHJlZml4fSR7cHJvdG9jb2x9JHtGb250X2NvbG9yX3N1ZmZpeH0iCgoJZWNobyAtZSAiIE9iZnMgOiAke1JlZF9mb250X3ByZWZpeH0ke29iZnN9JHtGb250X2NvbG9yX3N1ZmZpeH0iCgoJZWNobyAtZSAiIExpbWl0ZSBkZSBkaXNwb3NpdGl2b3M6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtwcm90b2NvbF9wYXJhbX0ke0ZvbnRfY29sb3Jfc3VmZml4fSIKCgllY2hvIC1lICIgVmVsb2NpZGFkIGRlIHN1YnByb2Nlc28gVW5pY286ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtzcGVlZF9saW1pdF9wZXJfY29ufSBLQi9TJHtGb250X2NvbG9yX3N1ZmZpeH0iCgoJZWNobyAtZSAiIFZlbG9jaWRhZCBNYXhpbWEgZGVsIFVzdWFyaW86ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtzcGVlZF9saW1pdF9wZXJfdXNlcn0gS0IvUyR7Rm9udF9jb2xvcl9zdWZmaXh9IgoKCWVjaG8gLWUgIiBQdWVydG9zIFByb2hpYmlkbzogJHtHcmVlbl9mb250X3ByZWZpeH0ke2ZvcmJpZGRlbl9wb3J0fSAke0ZvbnRfY29sb3Jfc3VmZml4fSIKCgllY2hvIC1lICIgQ29uc3VtbyBkZSBzdXMgRGF0b3M6XG4gQ2FyZ2E6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHt1fSR7Rm9udF9jb2xvcl9zdWZmaXh9ICsgRGVzY2FyZ2E6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtkfSR7Rm9udF9jb2xvcl9zdWZmaXh9ID0gJHtHcmVlbl9mb250X3ByZWZpeH0ke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJ9JHtGb250X2NvbG9yX3N1ZmZpeH0iCgkKICAgICAgICAgZWNobyAtZSAiIFRyYWZpY28gUmVzdGFudGU6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHt0cmFuc2Zlcl9lbmFibGVfVXNlZH0gJHtGb250X2NvbG9yX3N1ZmZpeH0iCm1zZyAtYmFyCgllY2hvIC1lICIgVHJhZmljbyBUb3RhbCBkZWwgVXN1YXJpbzogJHtHcmVlbl9mb250X3ByZWZpeH0ke3RyYW5zZmVyX2VuYWJsZX0gJHtGb250X2NvbG9yX3N1ZmZpeH0iCm1zZyAtYmFyCgllY2hvIC1lICIke3NzX2xpbmt9Igptc2cgLWJhcgoJZWNobyAtZSAiJHtzc3JfbGlua30iCm1zZyAtYmFyCgllY2hvIC1lICIgJHtHcmVlbl9mb250X3ByZWZpeH0gTm90YTogJHtGb250X2NvbG9yX3N1ZmZpeH0KIEVuIGVsIG5hdmVnYWRvciwgYWJyYSBlbCBlbmxhY2UgZGVsIGNvZGlnbyBRUiwgcHVlZGVcbiB2ZXIgbGEgaW1hZ2VuIGRlbCBjb2RpZ28gUVIuIgptc2cgLWJhcgp9CiNDb25maWd1cmFjaW9uIGRlIGxhIGluZm9ybWFjaW9uIGRlIGNvbmZpZ3VyYWNpb24KU2V0X2NvbmZpZ191c2VyKCl7Cm1zZyAtYmFyCgllY2hvIC1uZSAiXGVbOTJtIDEpIEluZ3Jlc2UgdW4gbm9tYnJlIGFsIHVzdWFyaW8gcXVlIGRlc2VhIENvbmZpZ3VyYXJcbiAoTm8gcmVwZXRpciwgbyBzZSBtYXJjYXJhIGluY29ycmVjdGFtZW50ZSEpXG4iCm1zZyAtYmFyCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBWUFMtTVgpOiIgc3NyX3VzZXIKCVtbIC16ICIke3Nzcl91c2VyfSIgXV0gJiYgc3NyX3VzZXI9IlZQUy1NWCIKCWVjaG8gJiYgZWNobyAtZSAiCU5vbWJyZSBkZSB1c3VhcmlvIDogJHtHcmVlbl9mb250X3ByZWZpeH0ke3Nzcl91c2VyfSR7Rm9udF9jb2xvcl9zdWZmaXh9IiAmJiBlY2hvCn0KU2V0X2NvbmZpZ19wb3J0KCl7Cm1zZyAtYmFyCgl3aGlsZSB0cnVlCglkbwoJZWNobyAtZSAiXGVbOTJtIDIpIFBvciBmYXZvciBpbmdyZXNlIHVuIFB1ZXJ0byBwYXJhIGVsIFVzdWFyaW8gIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogMjUyNSk6IiBzc3JfcG9ydAoJW1sgLXogIiRzc3JfcG9ydCIgXV0gJiYgc3NyX3BvcnQ9IjI1MjUiCglleHByICR7c3NyX3BvcnR9ICsgMCAmPi9kZXYvbnVsbAoJaWYgW1sgJD8gPT0gMCBdXTsgdGhlbgoJCWlmIFtbICR7c3NyX3BvcnR9IC1nZSAxIF1dICYmIFtbICR7c3NyX3BvcnR9IC1sZSA2NTUzNSBdXTsgdGhlbgoJCQllY2hvICYmIGVjaG8gLWUgIglQb3J0IDogJHtHcmVlbl9mb250X3ByZWZpeH0ke3Nzcl9wb3J0fSR7Rm9udF9jb2xvcl9zdWZmaXh9IiAmJiBlY2hvCgkJCWJyZWFrCgkJZWxzZQoJCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgaW5ncmVzZSBlbCBudW1lcm8gY29ycmVjdG8gKDEtNjU1MzUpIgoJCWZpCgllbHNlCgkJZWNobyAtZSAiJHtFcnJvcn0gUG9yIGZhdm9yIGluZ3Jlc2UgZWwgbnVtZXJvIGNvcnJlY3RvICgxLTY1NTM1KSIKCWZpCglkb25lCn0KU2V0X2NvbmZpZ19wYXNzd29yZCgpewptc2cgLWJhcgoJZWNobyAtZSAiXGVbOTJtIDMpIFBvciBmYXZvciBpbmdyZXNlIHVuYSBjb250cmFzZW5hIHBhcmEgZWwgVXN1YXJpbyIKbXNnIC1iYXIKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IFZQUy1NWCk6IiBzc3JfcGFzc3dvcmQKCVtbIC16ICIke3Nzcl9wYXNzd29yZH0iIF1dICYmIHNzcl9wYXNzd29yZD0iVlBTLU1YIgoJZWNobyAmJiBlY2hvIC1lICIJY29udHJhc2VuYSA6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtzc3JfcGFzc3dvcmR9JHtGb250X2NvbG9yX3N1ZmZpeH0iICYmIGVjaG8KfQpTZXRfY29uZmlnX21ldGhvZCgpewptc2cgLWJhcgoJZWNobyAtZSAiXGVbOTJtIDQpIFNlbGVjY2lvbmUgdGlwbyBkZSBFbmNyaXB0YWNpb24gcGFyYSBlbCBVc3VhcmlvXGVbMG0KJChtc2cgLWJhcikKICR7R3JlZW5fZm9udF9wcmVmaXh9IDEuJHtGb250X2NvbG9yX3N1ZmZpeH0gTmluZ3VubwogJHtHcmVlbl9mb250X3ByZWZpeH0gMi4ke0ZvbnRfY29sb3Jfc3VmZml4fSByYzQKICR7R3JlZW5fZm9udF9wcmVmaXh9IDMuJHtGb250X2NvbG9yX3N1ZmZpeH0gcmM0LW1kNQogJHtHcmVlbl9mb250X3ByZWZpeH0gNC4ke0ZvbnRfY29sb3Jfc3VmZml4fSByYzQtbWQ1LTYKICR7R3JlZW5fZm9udF9wcmVmaXh9IDUuJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTEyOC1jdHIKICR7R3JlZW5fZm9udF9wcmVmaXh9IDYuJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTE5Mi1jdHIKICR7R3JlZW5fZm9udF9wcmVmaXh9IDcuJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTI1Ni1jdHIKICR7R3JlZW5fZm9udF9wcmVmaXh9IDguJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTEyOC1jZmIKICR7R3JlZW5fZm9udF9wcmVmaXh9IDkuJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTE5Mi1jZmIKICR7R3JlZW5fZm9udF9wcmVmaXh9MTAuJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTI1Ni1jZmIKICR7R3JlZW5fZm9udF9wcmVmaXh9MTEuJHtGb250X2NvbG9yX3N1ZmZpeH0gYWVzLTEyOC1jZmI4CiAke0dyZWVuX2ZvbnRfcHJlZml4fTEyLiR7Rm9udF9jb2xvcl9zdWZmaXh9IGFlcy0xOTItY2ZiOAogJHtHcmVlbl9mb250X3ByZWZpeH0xMy4ke0ZvbnRfY29sb3Jfc3VmZml4fSBhZXMtMjU2LWNmYjgKICR7R3JlZW5fZm9udF9wcmVmaXh9MTQuJHtGb250X2NvbG9yX3N1ZmZpeH0gc2Fsc2EyMAogJHtHcmVlbl9mb250X3ByZWZpeH0xNS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBjaGFjaGEyMAogJHtHcmVlbl9mb250X3ByZWZpeH0xNi4ke0ZvbnRfY29sb3Jfc3VmZml4fSBjaGFjaGEyMC1pZXRmCiAKICR7UmVkX2ZvbnRfcHJlZml4fTE3LiR7Rm9udF9jb2xvcl9zdWZmaXh9IHhzYWxzYTIwCiAke1JlZF9mb250X3ByZWZpeH0xOC4ke0ZvbnRfY29sb3Jfc3VmZml4fSB4Y2hhY2hhMjAKJChtc2cgLWJhcikKICR7VGlwfSBQYXJhIHNhbHNhMjAvY2hhY2hhMjAtKjpcbiBQb3JmYXZvciBpbnN0YWxlIGxpYnNvZGl1bTpcbiBPcGNpb24gNCBlbiBtZW51IHByaW5jaXBhbCBTU1JSIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogMTYuIGNoYWNoYTIwLWlldGYpOiIgc3NyX21ldGhvZAptc2cgLWJhcgoJW1sgLXogIiR7c3NyX21ldGhvZH0iIF1dICYmIHNzcl9tZXRob2Q9IjE2IgoJaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiMSIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJOaW5ndW5vIgoJZWxpZiBbWyAke3Nzcl9tZXRob2R9ID09ICIyIiBdXTsgdGhlbgoJCXNzcl9tZXRob2Q9InJjNCIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiMyIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJyYzQtbWQ1IgoJZWxpZiBbWyAke3Nzcl9tZXRob2R9ID09ICI0IiBdXTsgdGhlbgoJCXNzcl9tZXRob2Q9InJjNC1tZDUtNiIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiNSIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJhZXMtMTI4LWN0ciIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiNiIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJhZXMtMTkyLWN0ciIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiNyIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJhZXMtMjU2LWN0ciIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiOCIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJhZXMtMTI4LWNmYiIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiOSIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJhZXMtMTkyLWNmYiIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiMTAiIF1dOyB0aGVuCgkJc3NyX21ldGhvZD0iYWVzLTI1Ni1jZmIiCgllbGlmIFtbICR7c3NyX21ldGhvZH0gPT0gIjExIiBdXTsgdGhlbgoJCXNzcl9tZXRob2Q9ImFlcy0xMjgtY2ZiOCIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiMTIiIF1dOyB0aGVuCgkJc3NyX21ldGhvZD0iYWVzLTE5Mi1jZmI4IgoJZWxpZiBbWyAke3Nzcl9tZXRob2R9ID09ICIxMyIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJhZXMtMjU2LWNmYjgiCgllbGlmIFtbICR7c3NyX21ldGhvZH0gPT0gIjE0IiBdXTsgdGhlbgoJCXNzcl9tZXRob2Q9InNhbHNhMjAiCgllbGlmIFtbICR7c3NyX21ldGhvZH0gPT0gIjE1IiBdXTsgdGhlbgoJCXNzcl9tZXRob2Q9ImNoYWNoYTIwIgoJZWxpZiBbWyAke3Nzcl9tZXRob2R9ID09ICIxNiIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJjaGFjaGEyMC1pZXRmIgoJZWxpZiBbWyAke3Nzcl9tZXRob2R9ID09ICIxNyIgXV07IHRoZW4KCQlzc3JfbWV0aG9kPSJ4c2Fsc2EyMCIKCWVsaWYgW1sgJHtzc3JfbWV0aG9kfSA9PSAiMTgiIF1dOyB0aGVuCgkJc3NyX21ldGhvZD0ieGNoYWNoYTIwIgoJZWxzZQoJCXNzcl9tZXRob2Q9ImFlcy0yNTYtY2ZiIgoJZmkKCWVjaG8gJiYgZWNobyAtZSAiCUVuY3JpcHRhY2lvbjogJHtHcmVlbl9mb250X3ByZWZpeH0ke3Nzcl9tZXRob2R9JHtGb250X2NvbG9yX3N1ZmZpeH0iICYmIGVjaG8KfQpTZXRfY29uZmlnX3Byb3RvY29sKCl7Cm1zZyAtYmFyCgllY2hvIC1lICJcZVs5Mm0gNSkgUG9yIGZhdm9yLCBzZWxlY2Npb25lIHVuIFByb3RvY29sbwokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH0xLiR7Rm9udF9jb2xvcl9zdWZmaXh9IG9yaWdpbgogJHtHcmVlbl9mb250X3ByZWZpeH0yLiR7Rm9udF9jb2xvcl9zdWZmaXh9IGF1dGhfc2hhMV92NAogJHtHcmVlbl9mb250X3ByZWZpeH0zLiR7Rm9udF9jb2xvcl9zdWZmaXh9IGF1dGhfYWVzMTI4X21kNQogJHtHcmVlbl9mb250X3ByZWZpeH00LiR7Rm9udF9jb2xvcl9zdWZmaXh9IGF1dGhfYWVzMTI4X3NoYTEKICR7R3JlZW5fZm9udF9wcmVmaXh9NS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBhdXRoX2NoYWluX2EKICR7R3JlZW5fZm9udF9wcmVmaXh9Ni4ke0ZvbnRfY29sb3Jfc3VmZml4fSBhdXRoX2NoYWluX2IKCiAke1JlZF9mb250X3ByZWZpeH03LiR7Rm9udF9jb2xvcl9zdWZmaXh9IGF1dGhfY2hhaW5fYwogJHtSZWRfZm9udF9wcmVmaXh9OC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBhdXRoX2NoYWluX2QKICR7UmVkX2ZvbnRfcHJlZml4fTkuJHtGb250X2NvbG9yX3N1ZmZpeH0gYXV0aF9jaGFpbl9lCiAke1JlZF9mb250X3ByZWZpeH0xMC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBhdXRoX2NoYWluX2YKJChtc2cgLWJhcikKICR7VGlwfVxuIFNpIHNlbGVjY2lvbmEgZWwgcHJvdG9jb2xvIGRlIHNlcmllIGF1dGhfY2hhaW5fICo6XG4gU2UgcmVjb21pZW5kYSBlc3RhYmxlY2VyIGVsIG1ldG9kbyBkZSBjaWZyYWRvIGVuIG5pbmd1bm8iCm1zZyAtYmFyCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWR0ZXJtaW5hZG86IDEuIG9yaWdpbik6IiBzc3JfcHJvdG9jb2wKbXNnIC1iYXIKCVtbIC16ICIke3Nzcl9wcm90b2NvbH0iIF1dICYmIHNzcl9wcm90b2NvbD0iMSIKCWlmIFtbICR7c3NyX3Byb3RvY29sfSA9PSAiMSIgXV07IHRoZW4KCQlzc3JfcHJvdG9jb2w9Im9yaWdpbiIKCWVsaWYgW1sgJHtzc3JfcHJvdG9jb2x9ID09ICIyIiBdXTsgdGhlbgoJCXNzcl9wcm90b2NvbD0iYXV0aF9zaGExX3Y0IgoJZWxpZiBbWyAke3Nzcl9wcm90b2NvbH0gPT0gIjMiIF1dOyB0aGVuCgkJc3NyX3Byb3RvY29sPSJhdXRoX2FlczEyOF9tZDUiCgllbGlmIFtbICR7c3NyX3Byb3RvY29sfSA9PSAiNCIgXV07IHRoZW4KCQlzc3JfcHJvdG9jb2w9ImF1dGhfYWVzMTI4X3NoYTEiCgllbGlmIFtbICR7c3NyX3Byb3RvY29sfSA9PSAiNSIgXV07IHRoZW4KCQlzc3JfcHJvdG9jb2w9ImF1dGhfY2hhaW5fYSIKCWVsaWYgW1sgJHtzc3JfcHJvdG9jb2x9ID09ICI2IiBdXTsgdGhlbgoJCXNzcl9wcm90b2NvbD0iYXV0aF9jaGFpbl9iIgoJZWxpZiBbWyAke3Nzcl9wcm90b2NvbH0gPT0gIjciIF1dOyB0aGVuCgkJc3NyX3Byb3RvY29sPSJhdXRoX2NoYWluX2MiCgllbGlmIFtbICR7c3NyX3Byb3RvY29sfSA9PSAiOCIgXV07IHRoZW4KCQlzc3JfcHJvdG9jb2w9ImF1dGhfY2hhaW5fZCIKCWVsaWYgW1sgJHtzc3JfcHJvdG9jb2x9ID09ICI5IiBdXTsgdGhlbgoJCXNzcl9wcm90b2NvbD0iYXV0aF9jaGFpbl9lIgoJZWxpZiBbWyAke3Nzcl9wcm90b2NvbH0gPT0gIjEwIiBdXTsgdGhlbgoJCXNzcl9wcm90b2NvbD0iYXV0aF9jaGFpbl9mIgoJZWxzZQoJCXNzcl9wcm90b2NvbD0ib3JpZ2luIgoJZmkKCWVjaG8gJiYgZWNobyAtZSAiCVByb3RvY29sbyA6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtzc3JfcHJvdG9jb2x9JHtGb250X2NvbG9yX3N1ZmZpeH0iICYmIGVjaG8KCWlmIFtbICR7c3NyX3Byb3RvY29sfSAhPSAib3JpZ2luIiBdXTsgdGhlbgoJCWlmIFtbICR7c3NyX3Byb3RvY29sfSA9PSAiYXV0aF9zaGExX3Y0IiBdXTsgdGhlbgoJCQlzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiU2V0IHByb3RvY29sIHBsdWctaW4gdG8gY29tcGF0aWJsZSBtb2RlKF9jb21wYXRpYmxlKT9bWS9uXSIgc3NyX3Byb3RvY29sX3luCgkJCVtbIC16ICIke3Nzcl9wcm90b2NvbF95bn0iIF1dICYmIHNzcl9wcm90b2NvbF95bj0ieSIKCQkJW1sgJHNzcl9wcm90b2NvbF95biA9PSBbWXldIF1dICYmIHNzcl9wcm90b2NvbD0ke3Nzcl9wcm90b2NvbH0iX2NvbXBhdGlibGUiCgkJCWVjaG8KCQlmaQoJZmkKfQpTZXRfY29uZmlnX29iZnMoKXsKbXNnIC1iYXIKCWVjaG8gLWUgIlxlWzkybSA2KSBQb3IgZmF2b3IsIHNlbGVjY2lvbmUgZWwgbWV0b2RvIE9CRlMKJChtc2cgLWJhcikKICR7R3JlZW5fZm9udF9wcmVmaXh9MS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBwbGFpbgogJHtHcmVlbl9mb250X3ByZWZpeH0yLiR7Rm9udF9jb2xvcl9zdWZmaXh9IGh0dHBfc2ltcGxlCiAke0dyZWVuX2ZvbnRfcHJlZml4fTMuJHtGb250X2NvbG9yX3N1ZmZpeH0gaHR0cF9wb3N0CiAke0dyZWVuX2ZvbnRfcHJlZml4fTQuJHtGb250X2NvbG9yX3N1ZmZpeH0gcmFuZG9tX2hlYWQKICR7R3JlZW5fZm9udF9wcmVmaXh9NS4ke0ZvbnRfY29sb3Jfc3VmZml4fSB0bHMxLjJfdGlja2V0X2F1dGgKJChtc2cgLWJhcikKICBTaSBlbGlnZSB0bHMxLjJfdGlja2V0X2F1dGgsIGVudG9uY2VzIGVsIGNsaWVudGUgcHVlZGVcbiAgZWxlZ2lyIHRsczEuMl90aWNrZXRfZmFzdGF1dGghIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogNS4gdGxzMS4yX3RpY2tldF9hdXRoKToiIHNzcl9vYmZzCglbWyAteiAiJHtzc3Jfb2Jmc30iIF1dICYmIHNzcl9vYmZzPSI1IgoJaWYgW1sgJHtzc3Jfb2Jmc30gPT0gIjEiIF1dOyB0aGVuCgkJc3NyX29iZnM9InBsYWluIgoJZWxpZiBbWyAke3Nzcl9vYmZzfSA9PSAiMiIgXV07IHRoZW4KCQlzc3Jfb2Jmcz0iaHR0cF9zaW1wbGUiCgllbGlmIFtbICR7c3NyX29iZnN9ID09ICIzIiBdXTsgdGhlbgoJCXNzcl9vYmZzPSJodHRwX3Bvc3QiCgllbGlmIFtbICR7c3NyX29iZnN9ID09ICI0IiBdXTsgdGhlbgoJCXNzcl9vYmZzPSJyYW5kb21faGVhZCIKCWVsaWYgW1sgJHtzc3Jfb2Jmc30gPT0gIjUiIF1dOyB0aGVuCgkJc3NyX29iZnM9InRsczEuMl90aWNrZXRfYXV0aCIKCWVsc2UKCQlzc3Jfb2Jmcz0idGxzMS4yX3RpY2tldF9hdXRoIgoJZmkKCWVjaG8gJiYgZWNobyAtZSAiCW9iZnMgOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7c3NyX29iZnN9JHtGb250X2NvbG9yX3N1ZmZpeH0iICYmIGVjaG8KCW1zZyAtYmFyCglpZiBbWyAke3Nzcl9vYmZzfSAhPSAicGxhaW4iIF1dOyB0aGVuCgkJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICJDb25maWd1cmFyIG1vZG8gQ29tcGF0aWJsZSAoUGFyYSB1c2FyIFNTKT8gW3kvbl06ICIgc3NyX29iZnNfeW4KCQkJW1sgLXogIiR7c3NyX29iZnNfeW59IiBdXSAmJiBzc3Jfb2Jmc195bj0ieSIKCQkJW1sgJHNzcl9vYmZzX3luID09IFtZeV0gXV0gJiYgc3NyX29iZnM9JHtzc3Jfb2Jmc30iX2NvbXBhdGlibGUiCglmaQp9ClNldF9jb25maWdfcHJvdG9jb2xfcGFyYW0oKXsKbXNnIC1iYXIKCXdoaWxlIHRydWUKCWRvCgllY2hvIC1lICJcZVs5Mm0gNykgTGltaXRhciBDYW50aWRhZCBkZSBEaXNwb3NpdGl2b3MgU2ltdWx0YW5lb3NcbiAgJHtHcmVlbl9mb250X3ByZWZpeH0gYXV0aF8qTGEgc2VyaWUgbm8gZXMgY29tcGF0aWJsZSBjb24gbGEgdmVyc2lvbiBvcmlnaW5hbC4gJHtGb250X2NvbG9yX3N1ZmZpeH0iCm1zZyAtYmFyCgllY2hvIC1lICIke1RpcH0gTGltaXRlIGRlIG51bWVybyBkZSBkaXNwb3NpdGl2b3M6XG4gRXMgZWwgbnVtZXJvIGRlIGNsaWVudGVzIHF1ZSB1c2FyYW4gbGEgY3VlbnRhXG4gZWwgbWluaW1vIHJlY29tZW5kYWRvIDIuIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogSWxpbWl0YWRvKToiIHNzcl9wcm90b2NvbF9wYXJhbQoJW1sgLXogIiRzc3JfcHJvdG9jb2xfcGFyYW0iIF1dICYmIHNzcl9wcm90b2NvbF9wYXJhbT0iIiAmJiBlY2hvICYmIGJyZWFrCglleHByICR7c3NyX3Byb3RvY29sX3BhcmFtfSArIDAgJj4vZGV2L251bGwKCWlmIFtbICQ/ID09IDAgXV07IHRoZW4KCQlpZiBbWyAke3Nzcl9wcm90b2NvbF9wYXJhbX0gLWdlIDEgXV0gJiYgW1sgJHtzc3JfcHJvdG9jb2xfcGFyYW19IC1sZSA5OTk5IF1dOyB0aGVuCgkJCWVjaG8gJiYgZWNobyAtZSAiCUxpbWl0ZSBkZWwgZGlzcG9zaXRpdm86ICR7R3JlZW5fZm9udF9wcmVmaXh9JHtzc3JfcHJvdG9jb2xfcGFyYW19JHtGb250X2NvbG9yX3N1ZmZpeH0iICYmIGVjaG8KCQkJYnJlYWsKCQllbHNlCgkJCWVjaG8gLWUgIiR7RXJyb3J9IFBvciBmYXZvciBpbmdyZXNlIGVsIG51bWVybyBjb3JyZWN0byAoMS05OTk5KSIKCQlmaQoJZWxzZQoJCWVjaG8gLWUgIiR7RXJyb3J9IFBvciBmYXZvciBpbmdyZXNlIGVsIG51bWVybyBjb3JyZWN0byAoMS05OTk5KSIKCWZpCglkb25lCn0KU2V0X2NvbmZpZ19zcGVlZF9saW1pdF9wZXJfY29uKCl7Cm1zZyAtYmFyCgl3aGlsZSB0cnVlCglkbwoJZWNobyAtZSAiXGVbOTJtIDgpIEludHJvZHV6Y2EgdW4gTGltaXRlIGRlIFZlbG9jaWRhZCB4IEhpbG8gKGVuIEtCL1MpIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkdGVybWluYWRvOiBJbGltaXRhZG8pOiIgc3NyX3NwZWVkX2xpbWl0X3Blcl9jb24KbXNnIC1iYXIKCVtbIC16ICIkc3NyX3NwZWVkX2xpbWl0X3Blcl9jb24iIF1dICYmIHNzcl9zcGVlZF9saW1pdF9wZXJfY29uPTAgJiYgZWNobyAmJiBicmVhawoJZXhwciAke3Nzcl9zcGVlZF9saW1pdF9wZXJfY29ufSArIDAgJj4vZGV2L251bGwKCWlmIFtbICQ/ID09IDAgXV07IHRoZW4KCQlpZiBbWyAke3Nzcl9zcGVlZF9saW1pdF9wZXJfY29ufSAtZ2UgMSBdXSAmJiBbWyAke3Nzcl9zcGVlZF9saW1pdF9wZXJfY29ufSAtbGUgMTMxMDcyIF1dOyB0aGVuCgkJCWVjaG8gJiYgZWNobyAtZSAiCVZlbG9jaWRhZCBkZSBTdWJwcm9jZXNvIFVuaWNvOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7c3NyX3NwZWVkX2xpbWl0X3Blcl9jb259IEtCL1Mke0ZvbnRfY29sb3Jfc3VmZml4fSIgJiYgZWNobwoJCQlicmVhawoJCWVsc2UKCQkJZWNobyAtZSAiJHtFcnJvcn0gUG9yIGZhdm9yIGluZ3Jlc2UgZWwgbnVtZXJvIGNvcnJlY3RvICgxLTEzMTA3MikiCgkJZmkKCWVsc2UKCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgaW5ncmVzZSBlbCBudW1lcm8gY29ycmVjdG8gKDEtMTMxMDcyKSIKCWZpCglkb25lCn0KU2V0X2NvbmZpZ19zcGVlZF9saW1pdF9wZXJfdXNlcigpewptc2cgLWJhcgoJd2hpbGUgdHJ1ZQoJZG8KCWVjaG8gLWUgIlxlWzkybSA5KSBJbnRyb2R1emNhIHVuIExpbWl0ZSBkZSBWZWxvY2lkYWQgTWF4aW1hIChlbiBLQi9TKSIKbXNnIC1iYXIKCWVjaG8gLWUgIiR7VGlwfSBMaW1pdGUgZGUgVmVsb2NpZGFkIE1heGltYSBkZWwgUHVlcnRvIDpcbiBFcyBsYSB2ZWxvY2lkYWQgbWF4aW1hIHF1ZSBpcmEgZWwgVXN1YXJpby4iCm1zZyAtYmFyCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBJbGltaXRhZG8pOiIgc3NyX3NwZWVkX2xpbWl0X3Blcl91c2VyCglbWyAteiAiJHNzcl9zcGVlZF9saW1pdF9wZXJfdXNlciIgXV0gJiYgc3NyX3NwZWVkX2xpbWl0X3Blcl91c2VyPTAgJiYgZWNobyAmJiBicmVhawoJZXhwciAke3Nzcl9zcGVlZF9saW1pdF9wZXJfdXNlcn0gKyAwICY+L2Rldi9udWxsCglpZiBbWyAkPyA9PSAwIF1dOyB0aGVuCgkJaWYgW1sgJHtzc3Jfc3BlZWRfbGltaXRfcGVyX3VzZXJ9IC1nZSAxIF1dICYmIFtbICR7c3NyX3NwZWVkX2xpbWl0X3Blcl91c2VyfSAtbGUgMTMxMDcyIF1dOyB0aGVuCgkJCWVjaG8gJiYgZWNobyAtZSAiCVZlbG9jaWRhZCBNYXhpbWEgZGVsIFVzdWFyaW8gOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7c3NyX3NwZWVkX2xpbWl0X3Blcl91c2VyfSBLQi9TJHtGb250X2NvbG9yX3N1ZmZpeH0iICYmIGVjaG8KCQkJYnJlYWsKCQllbHNlCgkJCWVjaG8gLWUgIiR7RXJyb3J9IFBvciBmYXZvciBpbmdyZXNlIGVsIG51bWVybyBjb3JyZWN0byAoMS0xMzEwNzIpIgoJCWZpCgllbHNlCgkJZWNobyAtZSAiJHtFcnJvcn0gUG9yIGZhdm9yIGluZ3Jlc2UgZWwgbnVtZXJvIGNvcnJlY3RvICgxLTEzMTA3MikiCglmaQoJZG9uZQp9ClNldF9jb25maWdfdHJhbnNmZXIoKXsKbXNnIC1iYXIKCXdoaWxlIHRydWUKCWRvCgllY2hvIC1lICJcZVs5Mm0gMTApIEluZ3Jlc2UgQ2FudGlkYWQgVG90YWwgZGUgRGF0b3MgcGFyYSBlbCBVc3VhcmlvXG4gICAoZW4gR0IsIDEtODM4ODY4IEdCKSIKbXNnIC1iYXIKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IElsaW1pdGFkbyk6IiBzc3JfdHJhbnNmZXIKCVtbIC16ICIkc3NyX3RyYW5zZmVyIiBdXSAmJiBzc3JfdHJhbnNmZXI9IjgzODg2OCIgJiYgZWNobyAmJiBicmVhawoJZXhwciAke3Nzcl90cmFuc2Zlcn0gKyAwICY+L2Rldi9udWxsCglpZiBbWyAkPyA9PSAwIF1dOyB0aGVuCgkJaWYgW1sgJHtzc3JfdHJhbnNmZXJ9IC1nZSAxIF1dICYmIFtbICR7c3NyX3RyYW5zZmVyfSAtbGUgODM4ODY4IF1dOyB0aGVuCgkJCWVjaG8gJiYgZWNobyAtZSAiCVRyYWZpY28gVG90YWwgUGFyYSBFbCBVc3VhcmlvOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7c3NyX3RyYW5zZmVyfSBHQiR7Rm9udF9jb2xvcl9zdWZmaXh9IiAmJiBlY2hvCgkJCWJyZWFrCgkJZWxzZQoJCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgaW5ncmVzZSBlbCBudW1lcm8gY29ycmVjdG8gKDEtODM4ODY4KSIKCQlmaQoJZWxzZQoJCWVjaG8gLWUgIiR7RXJyb3J9IFBvciBmYXZvciBpbmdyZXNlIGVsIG51bWVybyBjb3JyZWN0byAoMS04Mzg4NjgpIgoJZmkKCWRvbmUKfQpTZXRfY29uZmlnX2ZvcmJpZCgpewptc2cgLWJhcgoJZWNobyAiUFJPSUJJUiBQVUVSVE9TIgptc2cgLWJhcgoJZWNobyAtZSAiJHtUaXB9IFB1ZXJ0b3MgcHJvaGliaWRvczpcbiBQb3IgZWplbXBsbywgc2kgbm8gcGVybWl0ZSBlbCBhY2Nlc28gYWwgcHVlcnRvIDI1LCBsb3NcbiB1c3VhcmlvcyBubyBwb2RyYW4gYWNjZWRlciBhbCBwdWVydG8gZGUgY29ycmVvIDI1IGFcbiB0cmF2ZXMgZGVsIHByb3h5IGRlIFNTUi4gU2kgODAsNDQzIGVzdGEgZGVzYWN0aXZhZG8sXG4gbG9zIHVzdWFyaW9zIG5vIHBvZHJhbiBhY2NlZGEgYSBsb3Mgc2l0aW9zXG4gaHR0cC9odHRwcyBub3JtYWxtZW50ZS4iCm1zZyAtYmFyCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBwZXJtaXRpciB0b2RvKToiIHNzcl9mb3JiaWQKCVtbIC16ICIke3Nzcl9mb3JiaWR9IiBdXSAmJiBzc3JfZm9yYmlkPSIiCgllY2hvICYmIGVjaG8gLWUgIglQdWVydG8gcHJvaGliaWRvOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7c3NyX2ZvcmJpZH0ke0ZvbnRfY29sb3Jfc3VmZml4fSIgJiYgZWNobwp9ClNldF9jb25maWdfZW5hYmxlKCl7Cgl1c2VyX3RvdGFsPSQoZXhwciAke3VzZXJfdG90YWx9IC0gMSkKCWZvcigoaW50ZWdlciA9IDA7IGludGVnZXIgPD0gJHt1c2VyX3RvdGFsfTsgaW50ZWdlcisrKSkKCWRvCgkJZWNobyAtZSAiaW50ZWdlcj0ke2ludGVnZXJ9IgoJCXBvcnRfanE9JCgke2pxX2ZpbGV9ICIuWyR7aW50ZWdlcn1dLnBvcnQiICIke2NvbmZpZ191c2VyX211ZGJfZmlsZX0iKQoJCWVjaG8gLWUgInBvcnRfanE9JHtwb3J0X2pxfSIKCQlpZiBbWyAiJHtzc3JfcG9ydH0iID09ICIke3BvcnRfanF9IiBdXTsgdGhlbgoJCQllbmFibGU9JCgke2pxX2ZpbGV9ICIuWyR7aW50ZWdlcn1dLmVuYWJsZSIgIiR7Y29uZmlnX3VzZXJfbXVkYl9maWxlfSIpCgkJCWVjaG8gLWUgImVuYWJsZT0ke2VuYWJsZX0iCgkJCVtbICIke2VuYWJsZX0iID09ICJudWxsIiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBPYnRlbmdhIGVsIHB1ZXJ0byBhY3R1YWwgWyR7c3NyX3BvcnR9XSBFc3RhZG8gZGVzaGFiaWxpdGFkbyBmYWxsaWRvISIgJiYgZXhpdCAxCgkJCXNzcl9wb3J0X251bT0kKGNhdCAiJHtjb25maWdfdXNlcl9tdWRiX2ZpbGV9InxncmVwIC1uICcicHVlcnRvIjogJyR7c3NyX3BvcnR9JywnfGF3ayAtRiAiOiIgJ3twcmludCAkMX0nKQoJCQllY2hvIC1lICJzc3JfcG9ydF9udW09JHtzc3JfcG9ydF9udW19IgoJCQlbWyAiJHtzc3JfcG9ydF9udW19IiA9PSAibnVsbCIgXV0gJiYgZWNobyAtZSAiJHtFcnJvcn1PYnRlbmVyIGFjdHVhbCBQdWVydG8gWyR7c3NyX3BvcnR9XSBOdW1lcm8gZGUgZmlsYXMgZmFsbGlkYXMhIiAmJiBleGl0IDEKCQkJc3NyX2VuYWJsZV9udW09JChleHByICR7c3NyX3BvcnRfbnVtfSAtIDUpCgkJCWVjaG8gLWUgInNzcl9lbmFibGVfbnVtPSR7c3NyX2VuYWJsZV9udW19IgoJCQlicmVhawoJCWZpCglkb25lCglpZiBbWyAiJHtlbmFibGV9IiA9PSAiMSIgXV07IHRoZW4KCQllY2hvIC1lICJQdWVydG8gWyR7c3NyX3BvcnR9XSBFbCBlc3RhZG8gZGUgbGEgY3VlbnRhIGVzOiAke0dyZWVuX2ZvbnRfcHJlZml4fUVuYWJsZWQgJHtGb250X2NvbG9yX3N1ZmZpeH0gLCBDYW1iaWFyIGEgJHtSZWRfZm9udF9wcmVmaXh9RGlzYWJsZWQke0ZvbnRfY29sb3Jfc3VmZml4fSA/W1kvbl0iCgkJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogWSk6IiBzc3JfZW5hYmxlX3luCgkJW1sgLXogIiR7c3NyX2VuYWJsZV95bn0iIF1dICYmIHNzcl9lbmFibGVfeW49InkiCgkJaWYgW1sgIiR7c3NyX2VuYWJsZV95bn0iID09IFtZeV0gXV07IHRoZW4KCQkJc3NyX2VuYWJsZT0iMCIKCQllbHNlCgkJCWVjaG8gLWUgIkNhbmNlbGFkby4uLlxuJChtc2cgLWJhcikiICYmIGV4aXQgMAoJCWZpCgllbGlmIFtbICIke2VuYWJsZX0iID09ICIwIiBdXTsgdGhlbgoJCWVjaG8gLWUgIlBvcnQgWyR7c3NyX3BvcnR9XSBFbCBlc3RhZG8gZGUgbGEgY3VlbnRhOiR7R3JlZW5fZm9udF9wcmVmaXh9SGFiaWxpdGFkbyAke0ZvbnRfY29sb3Jfc3VmZml4fSAsIENhbWJpZSBhICR7UmVkX2ZvbnRfcHJlZml4fURlc2hhYmlsaXRhZG8ke0ZvbnRfY29sb3Jfc3VmZml4fSA/W1kvbl0iCgkJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogWSk6IiBzc3JfZW5hYmxlX3luCgkJW1sgLXogIiR7c3NyX2VuYWJsZV95bn0iIF1dICYmIHNzcl9lbmFibGVfeW4gPSAieSIKCQlpZiBbWyAiJHtzc3JfZW5hYmxlX3lufSIgPT0gW1l5XSBdXTsgdGhlbgoJCQlzc3JfZW5hYmxlPSIxIgoJCWVsc2UKCQkJZWNobyAiQ2FuY2VsYXIgLi4uIiAmJiBleGl0IDAKCQlmaQoJZWxzZQoJCWVjaG8gLWUgIiR7RXJyb3J9IEVsIGFjdHVhbCBlc3RhZG8gZGUgZGlzY2FwYWNpZGFkIGRlIFB1ZXJ0byBlcyBhbm9ybWFsLlske2VuYWJsZX1dICEiICYmIGV4aXQgMQoJZmkKfQpTZXRfdXNlcl9hcGlfc2VydmVyX3B1Yl9hZGRyKCl7CglhZGRyPSQxCglpZiBbWyAiJHthZGRyfSIgPT0gIk1vZGlmeSIgXV07IHRoZW4KCQlzZXJ2ZXJfcHViX2FkZHI9JChjYXQgJHtjb25maWdfdXNlcl9hcGlfZmlsZX18Z3JlcCAiU0VSVkVSX1BVQl9BRERSID0gInxhd2sgLUYgIlsnXSIgJ3twcmludCAkMn0nKQoJCWlmIFtbIC16ICR7c2VydmVyX3B1Yl9hZGRyfSBdXTsgdGhlbgoJCQllY2hvIC1lICIke0Vycm9yfSBMYSBJUCBkZWwgc2Vydmlkb3IgbyBlbCBub21icmUgZGUgZG9taW5pbyBvYnRlbmlkb3MgZmFsbGFyb24hIiAmJiBleGl0IDEKCQllbHNlCgkJCWVjaG8gLWUgIiR7SW5mb30gTGEgSVAgZGVsIHNlcnZpZG9yIG8gZWwgbm9tYnJlIGRlIGRvbWluaW8gYWN0dWFsbWVudGUgY29uZmlndXJhZG9zIGVzICR7R3JlZW5fZm9udF9wcmVmaXh9JHtzZXJ2ZXJfcHViX2FkZHJ9JHtGb250X2NvbG9yX3N1ZmZpeH0iCgkJZmkKCWZpCgllY2hvICJJbnRyb2R1emNhIGxhIElQIGRlbCBzZXJ2aWRvciBvIGVsIG5vbWJyZSBkZSBkb21pbmlvIHF1ZSBzZSBtb3N0cmFyYSBlbiBsYSBjb25maWd1cmFjaW9uIGRlbCB1c3VhcmlvIChjdWFuZG8gZWwgc2Vydmlkb3IgdGllbmUgdmFyaWFzIElQLCBwdWVkZSBlc3BlY2lmaWNhciBsYSBJUCBvIGVsIG5vbWJyZSBkZSBkb21pbmlvIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGNvbmZpZ3VyYWNpb24gZGVsIHVzdWFyaW8pIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzpEZXRlY2Npb24gYXV0b21hdGljYSBkZSBsYSByZWQgZXh0ZXJuYSBJUCk6IiBzc3Jfc2VydmVyX3B1Yl9hZGRyCglpZiBbWyAteiAiJHtzc3Jfc2VydmVyX3B1Yl9hZGRyfSIgXV07IHRoZW4KCQlHZXRfSVAKCQlpZiBbWyAke2lwfSA9PSAiVlBTX0lQIiBdXTsgdGhlbgoJCQl3aGlsZSB0cnVlCgkJCWRvCgkJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIke0Vycm9yfSBMYSBkZXRlY2Npb24gYXV0b21hdGljYSBkZSBsYSBJUCBkZSBsYSByZWQgZXh0ZXJuYSBmYWxsbywgaW5ncmVzZSBtYW51YWxtZW50ZSBsYSBJUCBkZWwgc2Vydmlkb3IgbyBlbCBub21icmUgZGUgZG9taW5pbyIgc3NyX3NlcnZlcl9wdWJfYWRkcgoJCQlpZiBbWyAteiAiJHNzcl9zZXJ2ZXJfcHViX2FkZHIiIF1dOyB0aGVuCgkJCQllY2hvIC1lICIke0Vycm9yfU5vIHB1ZWRlIGVzdGFyIHZhY2lvISIKCQkJZWxzZQoJCQkJYnJlYWsKCQkJZmkKCQkJZG9uZQoJCWVsc2UKCQkJc3NyX3NlcnZlcl9wdWJfYWRkcj0iJHtpcH0iCgkJZmkKCWZpCgllY2hvICYmIG1zZyAtYmFyICYmIGVjaG8gLWUgIglJUCBvIG5vbWJyZSBkZSBkb21pbmlvOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7c3NyX3NlcnZlcl9wdWJfYWRkcn0ke0ZvbnRfY29sb3Jfc3VmZml4fSIgJiYgbXNnIC1iYXIgJiYgZWNobwp9ClNldF9jb25maWdfYWxsKCl7CglsYWw9JDEKCWlmIFtbICIke2xhbH0iID09ICJNb2RpZnkiIF1dOyB0aGVuCgkJU2V0X2NvbmZpZ19wYXNzd29yZAoJCVNldF9jb25maWdfbWV0aG9kCgkJU2V0X2NvbmZpZ19wcm90b2NvbAoJCVNldF9jb25maWdfb2JmcwoJCVNldF9jb25maWdfcHJvdG9jb2xfcGFyYW0KCQlTZXRfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl9jb24KCQlTZXRfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl91c2VyCgkJU2V0X2NvbmZpZ190cmFuc2ZlcgoJCVNldF9jb25maWdfZm9yYmlkCgllbHNlCgkJU2V0X2NvbmZpZ191c2VyCgkJU2V0X2NvbmZpZ19wb3J0CgkJU2V0X2NvbmZpZ19wYXNzd29yZAoJCVNldF9jb25maWdfbWV0aG9kCgkJU2V0X2NvbmZpZ19wcm90b2NvbAoJCVNldF9jb25maWdfb2JmcwoJCVNldF9jb25maWdfcHJvdG9jb2xfcGFyYW0KCQlTZXRfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl9jb24KCQlTZXRfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl91c2VyCgkJU2V0X2NvbmZpZ190cmFuc2ZlcgoJCVNldF9jb25maWdfZm9yYmlkCglmaQp9CiNNb2RpZmljYXIgbGEgaW5mb3JtYWNp77+9biBkZSBjb25maWd1cmFjae+/vW4KTW9kaWZ5X2NvbmZpZ19wYXNzd29yZCgpewoJbWF0Y2hfZWRpdD0kKHB5dGhvbiBtdWpzb25fbWdyLnB5IC1lIC1wICIke3Nzcl9wb3J0fSIgLWsgIiR7c3NyX3Bhc3N3b3JkfSJ8Z3JlcCAtdyAiZWRpdCB1c2VyICIpCglpZiBbWyAteiAiJHttYXRjaF9lZGl0fSIgXV07IHRoZW4KCQllY2hvIC1lICIke0Vycm9yfSBGYWxsbyBsYSBtb2RpZmljYWNpb24gZGUgbGEgY29udHJhc2VuYSBkZWwgdXN1YXJpbyAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gTGEgY29udHJhc2VuYSBkZWwgdXN1YXJpbyBzZSBtb2RpZmljbyBjb3JyZWN0YW1lbnRlICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9IChQdWVkZSB0YXJkYXIgdW5vcyAxMCBzZWd1bmRvcyBhcGxpY2FyIGxhIHVsdGltYSBjb25maWd1cmFjaW9uKSIKCWZpCn0KTW9kaWZ5X2NvbmZpZ19tZXRob2QoKXsKCW1hdGNoX2VkaXQ9JChweXRob24gbXVqc29uX21nci5weSAtZSAtcCAiJHtzc3JfcG9ydH0iIC1tICIke3Nzcl9tZXRob2R9InxncmVwIC13ICJlZGl0IHVzZXIgIikKCWlmIFtbIC16ICIke21hdGNoX2VkaXR9IiBdXTsgdGhlbgoJCWVjaG8gLWUgIiR7RXJyb3J9IExhIG1vZGlmaWNhY2lvbiBkZWwgbWV0b2RvIGRlIGNpZnJhZG8gZGVsIHVzdWFyaW8gZmFsbG8gJHtHcmVlbl9mb250X3ByZWZpeH1bUG9ydDogJHtzc3JfcG9ydH1dJHtGb250X2NvbG9yX3N1ZmZpeH0gIiAmJiBleGl0IDEKCWVsc2UKCQllY2hvIC1lICIke0luZm99IE1vZG8gZGUgY2lmcmFkbyBkZSB1c3VhcmlvICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9IChOb3RlOiBOb3RhOiBsYSBjb25maWd1cmFjaW9uIG1hcyByZWNpZW50ZSBwdWVkZSBkZW1vcmFyIHVub3MgMTAgc2VndW5kb3MpIgoJZmkKfQpNb2RpZnlfY29uZmlnX3Byb3RvY29sKCl7CgltYXRjaF9lZGl0PSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWUgLXAgIiR7c3NyX3BvcnR9IiAtTyAiJHtzc3JfcHJvdG9jb2x9InxncmVwIC13ICJlZGl0IHVzZXIgIikKCWlmIFtbIC16ICIke21hdGNoX2VkaXR9IiBdXTsgdGhlbgoJCWVjaG8gLWUgIiR7RXJyb3J9IEZhbGxvIGxhIG1vZGlmaWNhY2lvbiBkZWwgcHJvdG9jb2xvIGRlIHVzdWFyaW8gJHtHcmVlbl9mb250X3ByZWZpeH1bUG9ydDogJHtzc3JfcG9ydH1dJHtGb250X2NvbG9yX3N1ZmZpeH0gIiAmJiBleGl0IDEKCWVsc2UKCQllY2hvIC1lICIke0luZm99IEFjdWVyZG8gZGUgdXN1YXJpbyBtb2RpZmljYWNpb24gZXhpdG8gJHtHcmVlbl9mb250X3ByZWZpeH1bUG9ydDogJHtzc3JfcG9ydH1dJHtGb250X2NvbG9yX3N1ZmZpeH0gKE5vdGE6IGxhIGNvbmZpZ3VyYWNpb24gbe+/vXMgcmVjaWVudGUgcHVlZGUgZGVtb3JhciB1bm9zIDEwIHNlZ3VuZG9zKSIKCWZpCn0KTW9kaWZ5X2NvbmZpZ19vYmZzKCl7CgltYXRjaF9lZGl0PSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWUgLXAgIiR7c3NyX3BvcnR9IiAtbyAiJHtzc3Jfb2Jmc30ifGdyZXAgLXcgImVkaXQgdXNlciAiKQoJaWYgW1sgLXogIiR7bWF0Y2hfZWRpdH0iIF1dOyB0aGVuCgkJZWNobyAtZSAiJHtFcnJvcn0gTGEgbW9kaWZpY2FjaW9uIGRlIGxhIGNvbmZ1c2lvbiBkZWwgdXN1YXJpbyBmYWxsbyAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gQ29uZnVzaW9uIGRlbCB1c3VhcmlvIGV4aXRvIGRlIG1vZGlmaWNhY2lvbiAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAoTm90YTogTGEgYXBsaWNhY2lvbiBkZSBsYSB1bHRpbWEgY29uZmlndXJhY2lvbiBwdWVkZSBkZW1vcmFyIHVub3MgMTAgc2VndW5kb3MpIgoJZmkKfQpNb2RpZnlfY29uZmlnX3Byb3RvY29sX3BhcmFtKCl7CgltYXRjaF9lZGl0PSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWUgLXAgIiR7c3NyX3BvcnR9IiAtRyAiJHtzc3JfcHJvdG9jb2xfcGFyYW19InxncmVwIC13ICJlZGl0IHVzZXIgIikKCWlmIFtbIC16ICIke21hdGNoX2VkaXR9IiBdXTsgdGhlbgoJCWVjaG8gLWUgIiR7RXJyb3J9IEZhbGxvIGxhIG1vZGlmaWNhY2lvbiBkZWwgcGFyYW1ldHJvIGRlbCBwcm90b2NvbG8gZGVsIHVzdWFyaW8gKG51bWVybyBkZSBkaXNwb3NpdGl2b3MgbGltaXRlKSAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gUGFyYW1ldHJvcyBkZSBuZWdvY2lhY2nvv71uIGRlbCB1c3VhcmlvIChudW1lcm8gZGUgZGlzcG9zaXRpdm9zIGxpbWl0ZSkgbW9kaWZpY2Fkb3MgY29ycmVjdGFtZW50ZSAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAoTm90YTogcHVlZGUgdG9tYXIgYXByb3hpbWFkYW1lbnRlIDEwIHNlZ3VuZG9zIGFwbGljYXIgbGEgdWx0aW1hIGNvbmZpZ3VyYWNpb24pIgoJZmkKfQpNb2RpZnlfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl9jb24oKXsKCW1hdGNoX2VkaXQ9JChweXRob24gbXVqc29uX21nci5weSAtZSAtcCAiJHtzc3JfcG9ydH0iIC1zICIke3Nzcl9zcGVlZF9saW1pdF9wZXJfY29ufSJ8Z3JlcCAtdyAiZWRpdCB1c2VyICIpCglpZiBbWyAteiAiJHttYXRjaF9lZGl0fSIgXV07IHRoZW4KCQllY2hvIC1lICIke0Vycm9yfSBGYWxsbyBsYSBtb2RpZmljYWNpb24gZGUgbGEgdmVsb2NpZGFkIGRlIHVuIHNvbG8gaGlsbyAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gTW9kaWZpY2FjaW9uIGRlIGxhIHZlbG9jaWRhZCBkZSB1biBzb2xvIGhpbG8gZXhpdG9zYSAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAoTm90YTogcHVlZGUgdG9tYXIgYXByb3hpbWFkYW1lbnRlIDEwIHNlZ3VuZG9zIGFwbGljYXIgbGEgdWx0aW1hIGNvbmZpZ3VyYWNpb24pIgoJZmkKfQpNb2RpZnlfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl91c2VyKCl7CgltYXRjaF9lZGl0PSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWUgLXAgIiR7c3NyX3BvcnR9IiAtUyAiJHtzc3Jfc3BlZWRfbGltaXRfcGVyX3VzZXJ9InxncmVwIC13ICJlZGl0IHVzZXIgIikKCWlmIFtbIC16ICIke21hdGNoX2VkaXR9IiBdXTsgdGhlbgoJCWVjaG8gLWUgIiR7RXJyb3J9IFVzdWFyaW8gUHVlcnRvIGxhIG1vZGlmaWNhY2nvv71uIGRlbCBsaW1pdGUgZGUgdmVsb2NpZGFkIHRvdGFsIGZhbGxvICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9ICIgJiYgZXhpdCAxCgllbHNlCgkJZWNobyAtZSAiJHtJbmZvfSBVc3VhcmlvIFB1ZXJ0byBsaW1pdGUgZGUgdmVsb2NpZGFkIHRvdGFsIG1vZGlmaWNhZG8gY29uIGV4aXRvICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9IChOb3RhOiBsYSBjb25maWd1cmFjaW9uIG1hcyByZWNpZW50ZSBwdWVkZSBkZW1vcmFyIHVub3MgMTAgc2VndW5kb3MpIgoJZmkKfQpNb2RpZnlfY29uZmlnX2Nvbm5lY3RfdmVyYm9zZV9pbmZvKCl7CglzZWQgLWkgJ3MvImNvbm5lY3RfdmVyYm9zZV9pbmZvIjogJyIkKGVjaG8gJHtjb25uZWN0X3ZlcmJvc2VfaW5mb30pIicsLyJjb25uZWN0X3ZlcmJvc2VfaW5mbyI6ICciJChlY2hvICR7c3NyX2Nvbm5lY3RfdmVyYm9zZV9pbmZvfSkiJywvZycgJHtjb25maWdfdXNlcl9maWxlfQp9Ck1vZGlmeV9jb25maWdfdHJhbnNmZXIoKXsKCW1hdGNoX2VkaXQ9JChweXRob24gbXVqc29uX21nci5weSAtZSAtcCAiJHtzc3JfcG9ydH0iIC10ICIke3Nzcl90cmFuc2Zlcn0ifGdyZXAgLXcgImVkaXQgdXNlciAiKQoJaWYgW1sgLXogIiR7bWF0Y2hfZWRpdH0iIF1dOyB0aGVuCgkJZWNobyAtZSAiJHtFcnJvcn0gTGEgbW9kaWZpY2FjaW9uIGRlIHRyYWZpY28gdG90YWwgZGVsIHVzdWFyaW8gZmFsbG8gJHtHcmVlbl9mb250X3ByZWZpeH1bUG9ydDogJHtzc3JfcG9ydH1dJHtGb250X2NvbG9yX3N1ZmZpeH0gIiAmJiBleGl0IDEKCWVsc2UKCQllY2hvIC1lICIke0luZm99IFRyYWZpY28gdG90YWwgZGVsIHVzdWFyaW8gJHtHcmVlbl9mb250X3ByZWZpeH1bUG9ydDogJHtzc3JfcG9ydH1dJHtGb250X2NvbG9yX3N1ZmZpeH0gKE5vdGE6IGxhIGNvbmZpZ3VyYWNpb24gbWFzIHJlY2llbnRlIHB1ZWRlIGRlbW9yYXIgdW5vcyAxMCBzZWd1bmRvcykiCglmaQp9Ck1vZGlmeV9jb25maWdfZm9yYmlkKCl7CgltYXRjaF9lZGl0PSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWUgLXAgIiR7c3NyX3BvcnR9IiAtZiAiJHtzc3JfZm9yYmlkfSJ8Z3JlcCAtdyAiZWRpdCB1c2VyICIpCglpZiBbWyAteiAiJHttYXRjaF9lZGl0fSIgXV07IHRoZW4KCQllY2hvIC1lICIke0Vycm9yfSBMYSBtb2RpZmljYWNpb24gZGVsIHB1ZXJ0byBwcm9oaWJpZG8gcG9yIGVsIHVzdWFyaW8gaGEgZmFsbGFkbyAke0dyZWVuX2ZvbnRfcHJlZml4fVtQb3J0OiAke3Nzcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gTG9zIHB1ZXJ0b3MgcHJvaGliaWRvcyBwb3IgZWwgdXN1YXJpbyBzZSBtb2RpZmljYXJvbiBjb3JyZWN0YW1lbnRlICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9IChOb3RhOiBwdWVkZSB0b21hciBhcHJveGltYWRhbWVudGUgMTAgc2VndW5kb3MgYXBsaWNhciBsYSB1bHRpbWEgY29uZmlndXJhY2lvbikiCglmaQp9Ck1vZGlmeV9jb25maWdfZW5hYmxlKCl7CglzZWQgLWkgIiR7c3NyX2VuYWJsZV9udW19IidzLyJlbmFibGUiOiAnIiQoZWNobyAke2VuYWJsZX0pIicsLyJlbmFibGUiOiAnIiQoZWNobyAke3Nzcl9lbmFibGV9KSInLC8nICR7Y29uZmlnX3VzZXJfbXVkYl9maWxlfQp9Ck1vZGlmeV91c2VyX2FwaV9zZXJ2ZXJfcHViX2FkZHIoKXsKCXNlZCAtaSAicy9TRVJWRVJfUFVCX0FERFIgPSAnJHtzZXJ2ZXJfcHViX2FkZHJ9Jy9TRVJWRVJfUFVCX0FERFIgPSAnJHtzc3Jfc2VydmVyX3B1Yl9hZGRyfScvIiAke2NvbmZpZ191c2VyX2FwaV9maWxlfQp9Ck1vZGlmeV9jb25maWdfYWxsKCl7CglNb2RpZnlfY29uZmlnX3Bhc3N3b3JkCglNb2RpZnlfY29uZmlnX21ldGhvZAoJTW9kaWZ5X2NvbmZpZ19wcm90b2NvbAoJTW9kaWZ5X2NvbmZpZ19vYmZzCglNb2RpZnlfY29uZmlnX3Byb3RvY29sX3BhcmFtCglNb2RpZnlfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl9jb24KCU1vZGlmeV9jb25maWdfc3BlZWRfbGltaXRfcGVyX3VzZXIKCU1vZGlmeV9jb25maWdfdHJhbnNmZXIKCU1vZGlmeV9jb25maWdfZm9yYmlkCn0KQ2hlY2tfcHl0aG9uKCl7CglweXRob25fdmVyPWBweXRob24gLWhgCglpZiBbWyAteiAke3B5dGhvbl92ZXJ9IF1dOyB0aGVuCgkJZWNobyAtZSAiJHtJbmZvfSBObyBpbnN0YWxvIFB5dGhvbiwgY29taWVuY2UgYSBpbnN0YWxhciAuLi4iCgkJaWYgW1sgJHtyZWxlYXNlfSA9PSAiY2VudG9zIiBdXTsgdGhlbgoJCQl5dW0gaW5zdGFsbCAteSBweXRob24KCQllbHNlCgkJCWFwdC1nZXQgaW5zdGFsbCAteSBweXRob24KCQlmaQoJZmkKfQpDZW50b3NfeXVtKCl7Cgl5dW0gdXBkYXRlCgljYXQgL2V0Yy9yZWRoYXQtcmVsZWFzZSB8Z3JlcCA3XC4uKnxncmVwIC1pIGNlbnRvcz4vZGV2L251bGwKCWlmIFtbICQ/ID0gMCBdXTsgdGhlbgoJCXl1bSBpbnN0YWxsIC15IHZpbSB1bnppcCBjcm9uZCBuZXQtdG9vbHMgZ2l0CgllbHNlCgkJeXVtIGluc3RhbGwgLXkgdmltIHVuemlwIGNyb25kIGdpdAoJZmkKfQpEZWJpYW5fYXB0KCl7CglhcHQtZ2V0IHVwZGF0ZQoJYXB0LWdldCBpbnN0YWxsIC15IHZpbSB1bnppcCBjcm9uIGdpdCBuZXQtdG9vbHMKfQojRGVzY2FyZ2FyIFNoYWRvd3NvY2tzUgpEb3dubG9hZF9TU1IoKXsKCWNkICIvdXNyL2xvY2FsIgoJIyB3Z2V0IC1OIC0tbm8tY2hlY2stY2VydGlmaWNhdGUgImh0dHBzOi8vZ2l0aHViLmNvbS9Ub3lvREFkb3ViaS9zaGFkb3dzb2Nrc3IvYXJjaGl2ZS9tYW55dXNlci56aXAiCgkjZ2l0IGNvbmZpZyAtLWdsb2JhbCBodHRwLnNzbFZlcmlmeSBmYWxzZQoJZ2l0IGNsb25lIC1iIGFra2FyaWlpbi9tYXN0ZXIgaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvd3NvY2tzcnIvc2hhZG93c29ja3NyLmdpdAoJW1sgISAtZSAke3Nzcl9mb2xkZXJ9IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IEZhbGxvIGxhIGRlc2NhcmdhIGRlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IhIiAmJiBleGl0IDEKCSMgW1sgISAtZSAibWFueXVzZXIuemlwIiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBGYWxsbyBsYSBkZXNjYXJnYSBkZWwgcGFxdWV0ZSBkZSBjb21wcmVzaW9uIGxhdGVyYWwgU2hhZG93c29ja3NSICEiICYmIHJtIC1yZiBtYW55dXNlci56aXAgJiYgZXhpdCAxCgkjIHVuemlwICJtYW55dXNlci56aXAiCgkjIFtbICEgLWUgIi91c3IvbG9jYWwvc2hhZG93c29ja3NyLW1hbnl1c2VyLyIgXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gRmFsbG8gbGEgZGVzY29tcHJlc2nvv71uIGRlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IgISIgJiYgcm0gLXJmIG1hbnl1c2VyLnppcCAmJiBleGl0IDEKCSMgbXYgIi91c3IvbG9jYWwvc2hhZG93c29ja3NyLW1hbnl1c2VyLyIgIi91c3IvbG9jYWwvc2hhZG93c29ja3NyLyIKCSMgW1sgISAtZSAiL3Vzci9sb2NhbC9zaGFkb3dzb2Nrc3IvIiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBGYWxsbyBlbCBjYW1iaW8gZGUgbm9tYnJlIGRlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IhIiAmJiBybSAtcmYgbWFueXVzZXIuemlwICYmIHJtIC1yZiAiL3Vzci9sb2NhbC9zaGFkb3dzb2Nrc3ItbWFueXVzZXIvIiAmJiBleGl0IDEKCSMgcm0gLXJmIG1hbnl1c2VyLnppcAoJY2QgInNoYWRvd3NvY2tzciIKCWNwICIke3Nzcl9mb2xkZXJ9L2NvbmZpZy5qc29uIiAiJHtjb25maWdfdXNlcl9maWxlfSIKCWNwICIke3Nzcl9mb2xkZXJ9L215c3FsLmpzb24iICIke3Nzcl9mb2xkZXJ9L3VzZXJteXNxbC5qc29uIgoJY3AgIiR7c3NyX2ZvbGRlcn0vYXBpY29uZmlnLnB5IiAiJHtjb25maWdfdXNlcl9hcGlfZmlsZX0iCglbWyAhIC1lICR7Y29uZmlnX3VzZXJfYXBpX2ZpbGV9IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IEZhbGxvIGxhIHJlcGxpY2FjaW9uIGFwaWNvbmZpZy5weSBkZWwgc2Vydmlkb3IgU2hhZG93c29ja3NSISIgJiYgZXhpdCAxCglzZWQgLWkgInMvQVBJX0lOVEVSRkFDRSA9ICdzc3BhbmVsdjInL0FQSV9JTlRFUkZBQ0UgPSAnbXVkYmpzb24nLyIgJHtjb25maWdfdXNlcl9hcGlfZmlsZX0KCXNlcnZlcl9wdWJfYWRkcj0iMTI3LjAuMC4xIgoJTW9kaWZ5X3VzZXJfYXBpX3NlcnZlcl9wdWJfYWRkcgoJI3NlZCAtaSAicy9TRVJWRVJfUFVCX0FERFIgPSAnMTI3LjAuMC4xJy9TRVJWRVJfUFVCX0FERFIgPSAnJHtpcH0nLyIgJHtjb25maWdfdXNlcl9hcGlfZmlsZX0KCXNlZCAtaSAncy8gXC9cLyBvbmx5IHdvcmtzIHVuZGVyIG11bHRpLXVzZXIgbW9kZS8vZycgIiR7Y29uZmlnX3VzZXJfZmlsZX0iCgllY2hvIC1lICIke0luZm99IERlc2NhcmdhIGRlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IgY29tcGxldGEhIgp9ClNlcnZpY2VfU1NSKCl7CglpZiBbWyAke3JlbGVhc2V9ID0gImNlbnRvcyIgXV07IHRoZW4KCQlpZiAhIHdnZXQgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVG95b0RBZG91YmkvZG91YmkvbWFzdGVyL3NlcnZpY2Uvc3NybXVfY2VudG9zIC1PIC9ldGMvaW5pdC5kL3Nzcm11OyB0aGVuCgkJCWVjaG8gLWUgIiR7RXJyb3J9IEZhbGxvIGxhIGRlc2NhcmdhIGRlIGxhIHNlY3VlbmNpYSBkZSBjb21hbmRvcyBkZSBhZG1pbmlzdHJhY2lvbiBkZSBzZXJ2aWNpb3MgZGUgU2hhZG93c29ja3NSISIgJiYgZXhpdCAxCgkJZmkKCQljaG1vZCAreCAvZXRjL2luaXQuZC9zc3JtdQoJCWNoa2NvbmZpZyAtLWFkZCBzc3JtdQoJCWNoa2NvbmZpZyBzc3JtdSBvbgoJZWxzZQoJCWlmICEgd2dldCAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ub3lvREFkb3ViaS9kb3ViaS9tYXN0ZXIvc2VydmljZS9zc3JtdV9kZWJpYW4gLU8gL2V0Yy9pbml0LmQvc3NybXU7IHRoZW4KCQkJZWNobyAtZSAiJHtFcnJvcn0gRmFsbG8gbGEgZGVzY2FyZ2EgZGUgbGEgc2VjdWVuY2lhIGRlIGNvbWFuZG9zIGRlIGFkbWluaXN0cmFjaW9uIGRlIHNlcnZpY2lvIGRlIFNoYWRvd3NvY2tzUiEiICYmIGV4aXQgMQoJCWZpCgkJY2htb2QgK3ggL2V0Yy9pbml0LmQvc3NybXUKCQl1cGRhdGUtcmMuZCAtZiBzc3JtdSBkZWZhdWx0cwoJZmkKCWVjaG8gLWUgIiR7SW5mb30gU2hhZG93c29ja3NSIFNlcnZpY2UgTWFuYWdlbWVudCBTY3JpcHQgRGVzY2FyZ2FyIERlc2NhcmdhciEiCn0KI0luc3RhbGFyIGVsIGFuYWxpemFkb3IgSlEKSlFfaW5zdGFsbCgpewoJaWYgW1sgISAtZSAke2pxX2ZpbGV9IF1dOyB0aGVuCgkJY2QgIiR7c3NyX2ZvbGRlcn0iCgkJaWYgW1sgJHtiaXR9ID0gIng4Nl82NCIgXV07IHRoZW4KCQkJIyBtdiAianEtbGludXg2NCIgImpxIgoJCQl3Z2V0IC0tbm8tY2hlY2stY2VydGlmaWNhdGUgImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVkb2xhbi9qcS9yZWxlYXNlcy9kb3dubG9hZC9qcS0xLjUvanEtbGludXg2NCIgLU8gJHtqcV9maWxlfQoJCWVsc2UKCQkJIyBtdiAianEtbGludXgzMiIgImpxIgoJCQl3Z2V0IC0tbm8tY2hlY2stY2VydGlmaWNhdGUgImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVkb2xhbi9qcS9yZWxlYXNlcy9kb3dubG9hZC9qcS0xLjUvanEtbGludXgzMiIgLU8gJHtqcV9maWxlfQoJCWZpCgkJW1sgISAtZSAke2pxX2ZpbGV9IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IEpRIHBhcnNlciwgcG9yIGZhdm9yISIgJiYgZXhpdCAxCgkJY2htb2QgK3ggJHtqcV9maWxlfQoJCWVjaG8gLWUgIiR7SW5mb30gTGEgaW5zdGFsYWNpb24gZGVsIGFuYWxpemFkb3IgSlEgc2UgaGEgY29tcGxldGFkbywgY29udGludWFyIC4uLiIgCgllbHNlCgkJZWNobyAtZSAiJHtJbmZvfSBKUSBwYXJzZXIgZXN0YSBpbnN0YWxhZG8sIGNvbnRpbnVhciAuLi4iCglmaQp9CiNJbnN0YWxhY2lvbgpJbnN0YWxsYXRpb25fZGVwZW5kZW5jeSgpewoJaWYgW1sgJHtyZWxlYXNlfSA9PSAiY2VudG9zIiBdXTsgdGhlbgoJCUNlbnRvc195dW0KCWVsc2UKCQlEZWJpYW5fYXB0CglmaQoJW1sgISAtZSAiL3Vzci9iaW4vdW56aXAiIF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IERlcGVuZGllbnRlIGRlIGxhIGluc3RhbGFjaW9uIGRlIGRlc2NvbXByaW1pciAocGFxdWV0ZSBjb21wcmltaWRvKSBmYWxsbywgZW4gc3UgbWF5b3JpYSBwcm9ibGVtYSwgcG9yIGZhdm9yIHZlcmlmaXF1ZSEiICYmIGV4aXQgMQoJQ2hlY2tfcHl0aG9uCgkjZWNobyAibmFtZXNlcnZlciA4LjguOC44IiA+IC9ldGMvcmVzb2x2LmNvbmYKCSNlY2hvICJuYW1lc2VydmVyIDguOC40LjQiID4+IC9ldGMvcmVzb2x2LmNvbmYKCWNwIC1mIC91c3Ivc2hhcmUvem9uZWluZm8vQXNpYS9TaGFuZ2hhaSAvZXRjL2xvY2FsdGltZQoJaWYgW1sgJHtyZWxlYXNlfSA9PSAiY2VudG9zIiBdXTsgdGhlbgoJCS9ldGMvaW5pdC5kL2Nyb25kIHJlc3RhcnQKCWVsc2UKCQkvZXRjL2luaXQuZC9jcm9uIHJlc3RhcnQKCWZpCn0KSW5zdGFsbF9TU1IoKXsKY2xlYXIKCWNoZWNrX3Jvb3QKCW1zZyAtYmFyCglbWyAtZSAke3Nzcl9mb2xkZXJ9IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9XG5MYSBjYXJwZXRhIFNoYWRvd3NvY2tzUiBoYSBzaWRvIGNyZWFkYSwgcG9yIGZhdm9yIHZlcmlmaXF1ZVxuKHNpIGxhIGluc3RhbGFjaW9uIGZhbGxhLCBkZXNpbnN0YWxlbGEgcHJpbWVybykgIVxuJChtc2cgLWJhcikiICYmIGV4aXQgMSAKCWVjaG8gLWUgIiR7SW5mb31cbkNvbWllbmNlIGxhIGNvbmZpZ3VyYWNpb24gZGUgbGEgY3VlbnRhIGRlIFNoYWRvd3NvY2tzUi4uLiIKbXNnIC1iYXIKCVNldF91c2VyX2FwaV9zZXJ2ZXJfcHViX2FkZHIKCVNldF9jb25maWdfYWxsCgllY2hvIC1lICIke0luZm99IENvbWllbmNlIGEgaW5zdGFsYXIgLyBjb25maWd1cmFyIGxhcyBkZXBlbmRlbmNpYXMgZGUgU2hhZG93c29ja3NSIC4uLiIKCUluc3RhbGxhdGlvbl9kZXBlbmRlbmN5CgllY2hvIC1lICIke0luZm99IEluaWNpYXIgZGVzY2FyZ2EgLyBJbnN0YWxhciBTaGFkb3dzb2Nrc1IgRmlsZSAuLi4iCglEb3dubG9hZF9TU1IKCWVjaG8gLWUgIiR7SW5mb30gSW5pY2lhciBkZXNjYXJnYSAvIEluc3RhbGFyIFNoYWRvd3NvY2tzUiBTZXJ2aWNlIFNjcmlwdChpbml0KS4uLiIKCVNlcnZpY2VfU1NSCgllY2hvIC1lICIke0luZm99IEluaWNpYXIgZGVzY2FyZ2EgLyBpbnN0YWxhciBKU05PIFBhcnNlciBKUSAuLi4iCglKUV9pbnN0YWxsCgllY2hvIC1lICIke0luZm99IENvbWllbmNlIGEgYWdyZWdhciB1c3VhcmlvIGluaWNpYWwgLi4uIgoJQWRkX3BvcnRfdXNlciAiaW5zdGFsbCIKCWVjaG8gLWUgIiR7SW5mb30gRW1wZXphciBhIGNvbmZpZ3VyYXIgZWwgZmlyZXdhbGwgZGUgaXB0YWJsZXMgLi4uIgoJU2V0X2lwdGFibGVzCgllY2hvIC1lICIke0luZm99IENvbWllbmNlIGEgYWdyZWdhciByZWdsYXMgZGUgZmlyZXdhbGwgZGUgaXB0YWJsZXMgLi4uIgoJQWRkX2lwdGFibGVzCgllY2hvIC1lICIke0luZm99IENvbWllbmNlIGEgZ3VhcmRhciBsYXMgcmVnbGFzIGRlbCBzZXJ2aWRvciBkZSBzZWd1cmlkYWQgZGUgaXB0YWJsZXMgLi4uIgoJU2F2ZV9pcHRhYmxlcwoJZWNobyAtZSAiJHtJbmZvfSBUb2RvcyBsb3MgcGFzb3MgcGFyYSBpbmljaWFyIGVsIHNlcnZpY2lvIFNoYWRvd3NvY2tzUiAuLi4iCglTdGFydF9TU1IKCUdldF9Vc2VyX2luZm8gIiR7c3NyX3BvcnR9IgoJVmlld19Vc2VyX2luZm8KCn0KVXBkYXRlX1NTUigpewoJU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMKCSMgZWNobyAtZSAiRGViaWRvIGEgcXVlIGVsIGJlYu+/vSByb3RvIGFjdHVhbGl6YSBlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IsIGVudG9uY2VzLiIKCWNkICR7c3NyX2ZvbGRlcn0KCWdpdCBwdWxsCglSZXN0YXJ0X1NTUgoKfQpVbmluc3RhbGxfU1NSKCl7CglbWyAhIC1lICR7c3NyX2ZvbGRlcn0gXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gU2hhZG93c29ja3NSIG5vIGVzdGEgaW5zdGFsYWRvLCBwb3IgZmF2b3IsIGNvbXBydWViZSFcbiQobXNnIC1iYXIpIiAmJiBleGl0IDEKCWVjaG8gIkRlc2luc3RhbGFyIFNoYWRvd3NvY2tzUiBbeS9uXSIKbXNnIC1iYXIgCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBuKToiIHVueW4KbXNnIC1iYXIKCVtbIC16ICR7dW55bn0gXV0gJiYgdW55bj0ibiIKCWlmIFtbICR7dW55bn0gPT0gW1l5XSBdXTsgdGhlbgoJCWNoZWNrX3BpZAoJCVtbICEgLXogIiR7UElEfSIgXV0gJiYga2lsbCAtOSAke1BJRH0KCQl1c2VyX2luZm89JChweXRob24gbXVqc29uX21nci5weSAtbCkKCQl1c2VyX3RvdGFsPSQoZWNobyAiJHt1c2VyX2luZm99Inx3YyAtbCkKCQlpZiBbWyAhIC16ICR7dXNlcl9pbmZvfSBdXTsgdGhlbgoJCQlmb3IoKGludGVnZXIgPSAxOyBpbnRlZ2VyIDw9ICR7dXNlcl90b3RhbH07IGludGVnZXIrKykpCgkJCWRvCgkJCQlwb3J0PSQoZWNobyAiJHt1c2VyX2luZm99InxzZWQgLW4gIiR7aW50ZWdlcn1wInxhd2sgJ3twcmludCAkNH0nKQoJCQkJRGVsX2lwdGFibGVzCgkJCWRvbmUKCQlmaQoJCWlmIFtbICR7cmVsZWFzZX0gPSAiY2VudG9zIiBdXTsgdGhlbgoJCQljaGtjb25maWcgLS1kZWwgc3NybXUKCQllbHNlCgkJCXVwZGF0ZS1yYy5kIC1mIHNzcm11IHJlbW92ZQoJCWZpCgkJcm0gLXJmICR7c3NyX2ZvbGRlcn0gJiYgcm0gLXJmIC9ldGMvaW5pdC5kL3Nzcm11CgkJZWNobyAmJiBlY2hvICIgRGVzaW5zdGFsYWNpb24gZGUgU2hhZG93c29ja3NSIGNvbXBsZXRhZGEhIiAmJiBlY2hvCgllbHNlCgkJZWNobyAmJiBlY2hvICJEZXNpbnN0YWxhciBjYW5jZWxhZG8gLi4uIiAmJiBlY2hvCglmaQoKfQpDaGVja19MaWJzb2RpdW1fdmVyKCl7CgllY2hvIC1lICIke0luZm99IERlc2NhcmdhbmRvIGxhIHVsdGltYSB2ZXJzaW9uIGRlIGxpYnNvZGl1bSIKCSNMaWJzb2RpdW1yX3Zlcj0kKHdnZXQgLXFPLSAiaHR0cHM6Ly9naXRodWIuY29tL2plZGlzY3QxL2xpYnNvZGl1bS90YWdzInxncmVwICIvamVkaXNjdDEvbGlic29kaXVtL3JlbGVhc2VzL3RhZy8ifGhlYWQgLTF8c2VkIC1yICdzLy4qdGFnXC8oLispXCI+LiovXDEvJykKCUxpYnNvZGl1bXJfdmVyPTEuMC4xNwoJW1sgLXogJHtMaWJzb2RpdW1yX3Zlcn0gXV0gJiYgTGlic29kaXVtcl92ZXI9JHtMaWJzb2RpdW1yX3Zlcl9iYWNrdXB9CgllY2hvIC1lICIke0luZm99IExhIHVsdGltYSB2ZXJzaW9uIGRlIGxpYnNvZGl1bSBlcyAke0dyZWVuX2ZvbnRfcHJlZml4fSR7TGlic29kaXVtcl92ZXJ9JHtGb250X2NvbG9yX3N1ZmZpeH0gISIKfQpJbnN0YWxsX0xpYnNvZGl1bSgpewoJaWYgW1sgLWUgJHtMaWJzb2RpdW1yX2ZpbGV9IF1dOyB0aGVuCgkJZWNobyAtZSAiJHtFcnJvcn0gbGlic29kaXVtIHlhIGluc3RhbGFkbywgcXVpZXJlcyBhY3R1YWxpemFyP1t5L05dIgoJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoRGVmYXVsdDogbik6IiB5bgoJCVtbIC16ICR7eW59IF1dICYmIHluPSJuIgoJCWlmIFtbICR7eW59ID09IFtObl0gXV07IHRoZW4KCQkJZWNobyAtZSAiQ2FuY2VsYWRvLi4uXG4kKG1zZyAtYmFyKSIgJiYgZXhpdCAxCgkJZmkKCWVsc2UKCQllY2hvIC1lICIke0luZm99IGxpYnNvZGl1bSBubyBpbnN0YWxhZG8sIGluc3RhbGFjaW9uIGluaWNpYWRhIC4uLiIKCWZpCglDaGVja19MaWJzb2RpdW1fdmVyCglpZiBbWyAke3JlbGVhc2V9ID09ICJjZW50b3MiIF1dOyB0aGVuCgkJeXVtIC15IGFjdHVhbGl6YWNpb24KCQllY2hvIC1lICIke0luZm99IExhIGluc3RhbGFjaW9uIGRlcGVuZGUgZGUgLi4uIgoJCXl1bSAteSBncm91cGluc3RhbGwgIkhlcnJhbWllbnRhcyBkZSBkZXNhcnJvbGxvIgoJCWVjaG8gLWUgIiR7SW5mb30gRGVzY2FyZ2FyIC4uLiIKCQl3Z2V0ICAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIC1OICJodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtL3JlbGVhc2VzL2Rvd25sb2FkLyR7TGlic29kaXVtcl92ZXJ9L2xpYnNvZGl1bS0ke0xpYnNvZGl1bXJfdmVyfS50YXIuZ3oiCgkJZWNobyAtZSAiJHtJbmZvfSBEZXNjb21wcmltaXIgLi4uIgoJCXRhciAteHpmIGxpYnNvZGl1bS0ke0xpYnNvZGl1bXJfdmVyfS50YXIuZ3ogJiYgY2QgbGlic29kaXVtLSR7TGlic29kaXVtcl92ZXJ9CgkJZWNobyAtZSAiJHtJbmZvfSBDb21waWxhciBlIGluc3RhbGFyIC4uLiIKCQkuL2NvbmZpZ3VyZSAtLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlICYmIG1ha2UgLWoyICYmIG1ha2UgaW5zdGFsbAoJCWVjaG8gL3Vzci9sb2NhbC9saWIgPiAvZXRjL2xkLnNvLmNvbmYuZC91c3JfbG9jYWxfbGliLmNvbmYKCWVsc2UKCQlhcHQtZ2V0IHVwZGF0ZQoJCWVjaG8gLWUgIiR7SW5mb30gTGEgaW5zdGFsYWNpb24gZGVwZW5kZSBkZSAuLi4iCgkJYXB0LWdldCBpbnN0YWxsIC15IGJ1aWxkLWVzc2VudGlhbAoJCWVjaG8gLWUgIiR7SW5mb30gRGVzY2FyZ2FyIC4uLiIKCQl3Z2V0ICAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIC1OICJodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtL3JlbGVhc2VzL2Rvd25sb2FkLyR7TGlic29kaXVtcl92ZXJ9L2xpYnNvZGl1bS0ke0xpYnNvZGl1bXJfdmVyfS50YXIuZ3oiCgkJZWNobyAtZSAiJHtJbmZvfSBEZXNjb21wcmltaXIgLi4uIgoJCXRhciAteHpmIGxpYnNvZGl1bS0ke0xpYnNvZGl1bXJfdmVyfS50YXIuZ3ogJiYgY2QgbGlic29kaXVtLSR7TGlic29kaXVtcl92ZXJ9CgkJZWNobyAtZSAiJHtJbmZvfSBDb21waWxhciBlIGluc3RhbGFyIC4uLiIKCQkuL2NvbmZpZ3VyZSAtLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlICYmIG1ha2UgLWoyICYmIG1ha2UgaW5zdGFsbAoJZmkKCWxkY29uZmlnCgljZCAuLiAmJiBybSAtcmYgbGlic29kaXVtLSR7TGlic29kaXVtcl92ZXJ9LnRhci5neiAmJiBybSAtcmYgbGlic29kaXVtLSR7TGlic29kaXVtcl92ZXJ9CglbWyAhIC1lICR7TGlic29kaXVtcl9maWxlfSBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBsaWJzb2RpdW0gSW5zdGFsYWNpb24gZmFsbGlkYSEiICYmIGV4aXQgMQoJZWNobyAmJiBlY2hvIC1lICIke0luZm99IGxpYnNvZGl1bSBleGl0byBkZSBpbnN0YWxhY2lvbiEiICYmIGVjaG8KbXNnIC1iYXIKfQojTW9zdHJhciBpbmZvcm1hY2nvv71uIGRlIGNvbmV4ae+/vW4KZGViaWFuX1ZpZXdfdXNlcl9jb25uZWN0aW9uX2luZm8oKXsKCWZvcm1hdF8xPSQxCgl1c2VyX2luZm89JChweXRob24gbXVqc29uX21nci5weSAtbCkKCXVzZXJfdG90YWw9JChlY2hvICIke3VzZXJfaW5mb30ifHdjIC1sKQoJW1sgLXogJHt1c2VyX2luZm99IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IE5vIGVuY29udHJvLCBwb3IgZmF2b3IgY29tcHJ1ZWJlISIgJiYgZXhpdCAxCglJUF90b3RhbD1gbmV0c3RhdCAtYW5wIHxncmVwICdFU1RBQkxJU0hFRCcgfGdyZXAgJ3B5dGhvbicgfGdyZXAgJ3RjcDYnIHxhd2sgJ3twcmludCAkNX0nIHxhd2sgLUYgIjoiICd7cHJpbnQgJDF9JyB8c29ydCAtdSB8d2MgLWxgCgl1c2VyX2xpc3RfYWxsPSIiCglmb3IoKGludGVnZXIgPSAxOyBpbnRlZ2VyIDw9ICR7dXNlcl90b3RhbH07IGludGVnZXIrKykpCglkbwoJCXVzZXJfcG9ydD0kKGVjaG8gIiR7dXNlcl9pbmZvfSJ8c2VkIC1uICIke2ludGVnZXJ9cCJ8YXdrICd7cHJpbnQgJDR9JykKCQl1c2VyX0lQXzE9YG5ldHN0YXQgLWFucCB8Z3JlcCAnRVNUQUJMSVNIRUQnIHxncmVwICdweXRob24nIHxncmVwICd0Y3A2JyB8Z3JlcCAiOiR7dXNlcl9wb3J0fSAiIHxhd2sgJ3twcmludCAkNX0nIHxhd2sgLUYgIjoiICd7cHJpbnQgJDF9JyB8c29ydCAtdWAKCQlpZiBbWyAteiAke3VzZXJfSVBfMX0gXV07IHRoZW4KCQkJdXNlcl9JUF90b3RhbD0iMCIKCQllbHNlCgkJCXVzZXJfSVBfdG90YWw9YGVjaG8gLWUgIiR7dXNlcl9JUF8xfSJ8d2MgLWxgCgkJCWlmIFtbICR7Zm9ybWF0XzF9ID09ICJJUF9hZGRyZXNzIiBdXTsgdGhlbgoJCQkJZ2V0X0lQX2FkZHJlc3MKCQkJZWxzZQoJCQkJdXNlcl9JUD1gZWNobyAtZSAiXG4ke3VzZXJfSVBfMX0iYAoJCQlmaQoJCWZpCgkJdXNlcl9saXN0X2FsbD0ke3VzZXJfbGlzdF9hbGx9IlB1ZXJ0bzogJHtHcmVlbl9mb250X3ByZWZpeH0iJHt1c2VyX3BvcnR9IiR7Rm9udF9jb2xvcl9zdWZmaXh9LCBFbCBudW1lcm8gdG90YWwgZGUgSVBzIHZpbmN1bGFkYXM6ICR7R3JlZW5fZm9udF9wcmVmaXh9IiR7dXNlcl9JUF90b3RhbH0iJHtGb250X2NvbG9yX3N1ZmZpeH0sIEN1cnJlbnQgbGlua2VkIElQOiAke0dyZWVuX2ZvbnRfcHJlZml4fSR7dXNlcl9JUH0ke0ZvbnRfY29sb3Jfc3VmZml4fVxuIgoJCXVzZXJfSVA9IiIKCWRvbmUKCWVjaG8gLWUgIk51bWVybyB0b3RhbCBkZSB1c3VhcmlvczogJHtHcmVlbl9iYWNrZ3JvdW5kX3ByZWZpeH0gIiR7dXNlcl90b3RhbH0iICR7Rm9udF9jb2xvcl9zdWZmaXh9IE51bWVybyB0b3RhbCBkZSBJUHMgdmluY3VsYWRhczogJHtHcmVlbl9iYWNrZ3JvdW5kX3ByZWZpeH0gIiR7SVBfdG90YWx9IiAke0ZvbnRfY29sb3Jfc3VmZml4fVxuIgoJZWNobyAtZSAiJHt1c2VyX2xpc3RfYWxsfSIKbXNnIC1iYXIgCn0KY2VudG9zX1ZpZXdfdXNlcl9jb25uZWN0aW9uX2luZm8oKXsKCWZvcm1hdF8xPSQxCgl1c2VyX2luZm89JChweXRob24gbXVqc29uX21nci5weSAtbCkKCXVzZXJfdG90YWw9JChlY2hvICIke3VzZXJfaW5mb30ifHdjIC1sKQoJW1sgLXogJHt1c2VyX2luZm99IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IE5vIGVuY29udHJhZG8sIHBvciBmYXZvciByZXZpc2UhIiAmJiBleGl0IDEKCUlQX3RvdGFsPWBuZXRzdGF0IC1hbnAgfGdyZXAgJ0VTVEFCTElTSEVEJyB8Z3JlcCAncHl0aG9uJyB8Z3JlcCAndGNwJyB8IGdyZXAgJzo6ZmZmZjonIHxhd2sgJ3twcmludCAkNX0nIHxhd2sgLUYgIjoiICd7cHJpbnQgJDR9JyB8c29ydCAtdSB8d2MgLWxgCgl1c2VyX2xpc3RfYWxsPSIiCglmb3IoKGludGVnZXIgPSAxOyBpbnRlZ2VyIDw9ICR7dXNlcl90b3RhbH07IGludGVnZXIrKykpCglkbwoJCXVzZXJfcG9ydD0kKGVjaG8gIiR7dXNlcl9pbmZvfSJ8c2VkIC1uICIke2ludGVnZXJ9cCJ8YXdrICd7cHJpbnQgJDR9JykKCQl1c2VyX0lQXzE9YG5ldHN0YXQgLWFucCB8Z3JlcCAnRVNUQUJMSVNIRUQnIHxncmVwICdweXRob24nIHxncmVwICd0Y3AnIHxncmVwICI6JHt1c2VyX3BvcnR9ICJ8Z3JlcCAnOjpmZmZmOicgfGF3ayAne3ByaW50ICQ1fScgfGF3ayAtRiAiOiIgJ3twcmludCAkNH0nIHxzb3J0IC11YAoJCWlmIFtbIC16ICR7dXNlcl9JUF8xfSBdXTsgdGhlbgoJCQl1c2VyX0lQX3RvdGFsPSIwIgoJCWVsc2UKCQkJdXNlcl9JUF90b3RhbD1gZWNobyAtZSAiJHt1c2VyX0lQXzF9Inx3YyAtbGAKCQkJaWYgW1sgJHtmb3JtYXRfMX0gPT0gIklQX2FkZHJlc3MiIF1dOyB0aGVuCgkJCQlnZXRfSVBfYWRkcmVzcwoJCQllbHNlCgkJCQl1c2VyX0lQPWBlY2hvIC1lICJcbiR7dXNlcl9JUF8xfSJgCgkJCWZpCgkJZmkKCQl1c2VyX2xpc3RfYWxsPSR7dXNlcl9saXN0X2FsbH0iUHVlcnRvOiAke0dyZWVuX2ZvbnRfcHJlZml4fSIke3VzZXJfcG9ydH0iJHtGb250X2NvbG9yX3N1ZmZpeH0sIEVsIG51bWVybyB0b3RhbCBkZSBJUHMgdmluY3VsYWRhczogJHtHcmVlbl9mb250X3ByZWZpeH0iJHt1c2VyX0lQX3RvdGFsfSIke0ZvbnRfY29sb3Jfc3VmZml4fSwgQ3VycmVudCBsaW5rZWQgSVA6ICR7R3JlZW5fZm9udF9wcmVmaXh9JHt1c2VyX0lQfSR7Rm9udF9jb2xvcl9zdWZmaXh9XG4iCgkJdXNlcl9JUD0iIgoJZG9uZQoJZWNobyAtZSAiRWwgbnVtZXJvIHRvdGFsIGRlIHVzdWFyaW9zOiAke0dyZWVuX2JhY2tncm91bmRfcHJlZml4fSAiJHt1c2VyX3RvdGFsfSIgJHtGb250X2NvbG9yX3N1ZmZpeH0gRWwgbnVtZXJvIHRvdGFsIGRlIElQcyB2aW5jdWxhZGFzOiAke0dyZWVuX2JhY2tncm91bmRfcHJlZml4fSAiJHtJUF90b3RhbH0iICR7Rm9udF9jb2xvcl9zdWZmaXh9ICIKCWVjaG8gLWUgIiR7dXNlcl9saXN0X2FsbH0iCn0KVmlld191c2VyX2Nvbm5lY3Rpb25faW5mbygpewpjbGVhcgoJU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMKCW1zZyAtYmFyCgkgZWNobyAtZSAiU2VsZWNjaW9uZSBlbCBmb3JtYXRvIHBhcmEgbW9zdHJhciA6CiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTEuJHtGb250X2NvbG9yX3N1ZmZpeH0gTW9zdHJhciBJUCAKCiAke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gTW9zdHJhciBJUCArIFJlc29sdmVyIGVsIG5vbWJyZSBETlMiCm1zZyAtYmFyCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiAxKToiIHNzcl9jb25uZWN0aW9uX2luZm8KbXNnIC1iYXIKCVtbIC16ICIke3Nzcl9jb25uZWN0aW9uX2luZm99IiBdXSAmJiBzc3JfY29ubmVjdGlvbl9pbmZvPSIxIgoJaWYgW1sgJHtzc3JfY29ubmVjdGlvbl9pbmZvfSA9PSAiMSIgXV07IHRoZW4KCQlWaWV3X3VzZXJfY29ubmVjdGlvbl9pbmZvXzEgIiIKCWVsaWYgW1sgJHtzc3JfY29ubmVjdGlvbl9pbmZvfSA9PSAiMiIgXV07IHRoZW4KCQllY2hvIC1lICIke1RpcH0gRGV0ZWN0YXIgSVAgKGlwaXAubmV0KXB1ZWRlIGxsZXZhciBtYXMgdGllbXBvIHNpIGhheSBtdWNoYXMgSVBzIgptc2cgLWJhcgoJCVZpZXdfdXNlcl9jb25uZWN0aW9uX2luZm9fMSAiSVBfYWRkcmVzcyIKCWVsc2UKCQllY2hvIC1lICIke0Vycm9yfSBJbmdyZXNlIGVsIG51bWVybyBjb3JyZWN0bygxLTIpIiAmJiBleGl0IDEKCWZpCn0KVmlld191c2VyX2Nvbm5lY3Rpb25faW5mb18xKCl7Cglmb3JtYXQ9JDEKCWlmIFtbICR7cmVsZWFzZX0gPSAiY2VudG9zIiBdXTsgdGhlbgoJCWNhdCAvZXRjL3JlZGhhdC1yZWxlYXNlIHxncmVwIDdcLi4qfGdyZXAgLWkgY2VudG9zPi9kZXYvbnVsbAoJCWlmIFtbICQ/ID0gMCBdXTsgdGhlbgoJCQlkZWJpYW5fVmlld191c2VyX2Nvbm5lY3Rpb25faW5mbyAiJGZvcm1hdCIKCQllbHNlCgkJCWNlbnRvc19WaWV3X3VzZXJfY29ubmVjdGlvbl9pbmZvICIkZm9ybWF0IgoJCWZpCgllbHNlCgkJZGViaWFuX1ZpZXdfdXNlcl9jb25uZWN0aW9uX2luZm8gIiRmb3JtYXQiCglmaQp9CmdldF9JUF9hZGRyZXNzKCl7CgkjZWNobyAidXNlcl9JUF8xPSR7dXNlcl9JUF8xfSIKCWlmIFtbICEgLXogJHt1c2VyX0lQXzF9IF1dOyB0aGVuCgkjZWNobyAidXNlcl9JUF90b3RhbD0ke3VzZXJfSVBfdG90YWx9IgoJCWZvcigoaW50ZWdlcl8xID0gJHt1c2VyX0lQX3RvdGFsfTsgaW50ZWdlcl8xID49IDE7IGludGVnZXJfMS0tKSkKCQlkbwoJCQlJUD1gZWNobyAiJHt1c2VyX0lQXzF9IiB8c2VkIC1uICIkaW50ZWdlcl8xInBgCgkJCSNlY2hvICJJUD0ke0lQfSIKCQkJSVBfYWRkcmVzcz1gd2dldCAtcU8tIC10MSAtVDIgaHR0cDovL2ZyZWVhcGkuaXBpcC5uZXQvJHtJUH18c2VkICdzL1wiLy9nO3MvLC8vZztzL1xbLy9nO3MvXF0vL2cnYAoJCQkjZWNobyAiSVBfYWRkcmVzcz0ke0lQX2FkZHJlc3N9IgoJCQl1c2VyX0lQPSIke3VzZXJfSVB9XG4ke0lQfSgke0lQX2FkZHJlc3N9KSIKCQkJI2VjaG8gInVzZXJfSVA9JHt1c2VyX0lQfSIKCQkJc2xlZXAgMXMKCQlkb25lCglmaQp9CiNNb2RpZmljYXIgbGEgY29uZmlndXJhY2nvv71uIGRlbCB1c3VhcmlvCk1vZGlmeV9wb3J0KCl7Cm1zZyAtYmFyCglMaXN0X3BvcnRfdXNlcgoJd2hpbGUgdHJ1ZQoJZG8KCQllY2hvIC1lICJQb3IgZmF2b3IgaW5ncmVzZSBlbCB1c3VhcmlvIChQdWVydG8pIHF1ZSB0aWVuZSBxdWUgc2VyIG1vZGlmaWNhZG8iIAptc2cgLWJhcgoJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IGNhbmNlbGFyKToiIHNzcl9wb3J0CgkJW1sgLXogIiR7c3NyX3BvcnR9IiBdXSAmJiBlY2hvIC1lICJDYW5jZWxhZG8gLi4uXG4kKG1zZyAtYmFyKSIgJiYgZXhpdCAxCgkJTW9kaWZ5X3VzZXI9JChjYXQgIiR7Y29uZmlnX3VzZXJfbXVkYl9maWxlfSJ8Z3JlcCAnInBvcnQiOiAnIiR7c3NyX3BvcnR9IicsJykKCQlpZiBbWyAhIC16ICR7TW9kaWZ5X3VzZXJ9IF1dOyB0aGVuCgkJCWJyZWFrCgkJZWxzZQoJCQllY2hvIC1lICIke0Vycm9yfSBQdWVydG8gSW50cm9kdXpjYSBlbCBQdWVydG8gY29ycmVjdG8hIgoJCWZpCglkb25lCn0KTW9kaWZ5X0NvbmZpZygpewpjbGVhcgoJU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMKCWVjaG8gJiYgZWNobyAtZSAiICAgICMjI8K/UXVlIGRlc2VhIHJlYWxpemFyPyMjIwokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH0xLiR7Rm9udF9jb2xvcl9zdWZmaXh9ICBBZ3JlZ2FyIHkgQ29uZmlndXJhciBVc3VhcmlvCiAke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gIEVsaW1pbmFyIGxhIENvbmZpZ3VyYWNpb24gZGVsIFVzdWFyaW8K4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCUIE1vZGlmaWNhciBsYSBDb25maWd1cmFjaW9uIGRlbCBVc3VhcmlvIOKAlOKAlOKAlOKAlAogJHtHcmVlbl9mb250X3ByZWZpeH0zLiR7Rm9udF9jb2xvcl9zdWZmaXh9ICBNb2RpZmljYXIgY29udHJhc2VuYSBkZSBVc3VhcmlvCiAke0dyZWVuX2ZvbnRfcHJlZml4fTQuJHtGb250X2NvbG9yX3N1ZmZpeH0gIE1vZGlmaWNhciBlbCBtZXRvZG8gZGUgQ2lmcmFkbwogJHtHcmVlbl9mb250X3ByZWZpeH01LiR7Rm9udF9jb2xvcl9zdWZmaXh9ICBNb2RpZmljYXIgZWwgUHJvdG9jb2xvCiAke0dyZWVuX2ZvbnRfcHJlZml4fTYuJHtGb250X2NvbG9yX3N1ZmZpeH0gIE1vZGlmaWNhciBPZnVzY2FjaW9uCiAke0dyZWVuX2ZvbnRfcHJlZml4fTcuJHtGb250X2NvbG9yX3N1ZmZpeH0gIE1vZGlmaWNhciBlbCBMaW1pdGUgZGUgRGlzcG9zaXRpdm9zCiAke0dyZWVuX2ZvbnRfcHJlZml4fTguJHtGb250X2NvbG9yX3N1ZmZpeH0gIE1vZGlmaWNhciBlbCBMaW1pdGUgZGUgVmVsb2NpZGFkIGRlIHVuIHNvbG8gSGlsbwogJHtHcmVlbl9mb250X3ByZWZpeH05LiR7Rm9udF9jb2xvcl9zdWZmaXh9ICBNb2RpZmljYXIgbGltaXRlIGRlIFZlbG9jaWRhZCBUb3RhbCBkZWwgVXN1YXJpbwogJHtHcmVlbl9mb250X3ByZWZpeH0xMC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBNb2RpZmljYXIgZWwgVHJhZmljbyBUb3RhbCBkZWwgVXN1YXJpbwogJHtHcmVlbl9mb250X3ByZWZpeH0xMS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBNb2RpZmljYXIgbG9zIFB1ZXJ0b3MgUHJvaGliaWRvcyBEZWwgdXN1YXJpbwogJHtHcmVlbl9mb250X3ByZWZpeH0xMi4ke0ZvbnRfY29sb3Jfc3VmZml4fSBNb2RpZmljYXIgbGEgQ29uZmlndXJhY2lvbiBDb21wbGV0YQrigJTigJTigJTigJTigJTigJTigJTigJTigJQgT3RyYXMgQ29uZmlndXJhY2lvbmVzIOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAogJHtHcmVlbl9mb250X3ByZWZpeH0xMy4ke0ZvbnRfY29sb3Jfc3VmZml4fSBNb2RpZmljYXIgbGEgSVAgbyBlbCBub21icmUgZGUgZG9taW5pbyBxdWVcbiBzZSBtdWVzdHJhIGVuIGVsIHBlcmZpbCBkZWwgdXN1YXJpbwokKG1zZyAtYmFyKQogJHtUaXB9IEVsIG5vbWJyZSBkZSB1c3VhcmlvIHkgZWwgcHVlcnRvIGRlbCB1c3VhcmlvXG4gbm8gc2UgcHVlZGVuIG1vZGlmaWNhci4gU2kgbmVjZXNpdGEgbW9kaWZpY2FybG9zLCB1c2VcbiBlbCBzY3JpcHQgcGFyYSBtb2RpZmljYXIgbWFudWFsbWVudGUgbGEgZnVuY2lvbiAhIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogY2FuY2VsYXIpOiIgc3NyX21vZGlmeQoJW1sgLXogIiR7c3NyX21vZGlmeX0iIF1dICYmIGVjaG8gLWUgIkNhbmNlbGFkbyAuLi5cbiQobXNnIC1iYXIpIiAmJiBleGl0IDEKCWlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjEiIF1dOyB0aGVuCgkJQWRkX3BvcnRfdXNlcgoJZWxpZiBbWyAke3Nzcl9tb2RpZnl9ID09ICIyIiBdXTsgdGhlbgoJCURlbF9wb3J0X3VzZXIKCWVsaWYgW1sgJHtzc3JfbW9kaWZ5fSA9PSAiMyIgXV07IHRoZW4KCQlNb2RpZnlfcG9ydAoJCVNldF9jb25maWdfcGFzc3dvcmQKCQlNb2RpZnlfY29uZmlnX3Bhc3N3b3JkCgllbGlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjQiIF1dOyB0aGVuCgkJTW9kaWZ5X3BvcnQKCQlTZXRfY29uZmlnX21ldGhvZAoJCU1vZGlmeV9jb25maWdfbWV0aG9kCgllbGlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjUiIF1dOyB0aGVuCgkJTW9kaWZ5X3BvcnQKCQlTZXRfY29uZmlnX3Byb3RvY29sCgkJTW9kaWZ5X2NvbmZpZ19wcm90b2NvbAoJZWxpZiBbWyAke3Nzcl9tb2RpZnl9ID09ICI2IiBdXTsgdGhlbgoJCU1vZGlmeV9wb3J0CgkJU2V0X2NvbmZpZ19vYmZzCgkJTW9kaWZ5X2NvbmZpZ19vYmZzCgllbGlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjciIF1dOyB0aGVuCgkJTW9kaWZ5X3BvcnQKCQlTZXRfY29uZmlnX3Byb3RvY29sX3BhcmFtCgkJTW9kaWZ5X2NvbmZpZ19wcm90b2NvbF9wYXJhbQoJZWxpZiBbWyAke3Nzcl9tb2RpZnl9ID09ICI4IiBdXTsgdGhlbgoJCU1vZGlmeV9wb3J0CgkJU2V0X2NvbmZpZ19zcGVlZF9saW1pdF9wZXJfY29uCgkJTW9kaWZ5X2NvbmZpZ19zcGVlZF9saW1pdF9wZXJfY29uCgllbGlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjkiIF1dOyB0aGVuCgkJTW9kaWZ5X3BvcnQKCQlTZXRfY29uZmlnX3NwZWVkX2xpbWl0X3Blcl91c2VyCgkJTW9kaWZ5X2NvbmZpZ19zcGVlZF9saW1pdF9wZXJfdXNlcgoJZWxpZiBbWyAke3Nzcl9tb2RpZnl9ID09ICIxMCIgXV07IHRoZW4KCQlNb2RpZnlfcG9ydAoJCVNldF9jb25maWdfdHJhbnNmZXIKCQlNb2RpZnlfY29uZmlnX3RyYW5zZmVyCgllbGlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjExIiBdXTsgdGhlbgoJCU1vZGlmeV9wb3J0CgkJU2V0X2NvbmZpZ19mb3JiaWQKCQlNb2RpZnlfY29uZmlnX2ZvcmJpZAoJZWxpZiBbWyAke3Nzcl9tb2RpZnl9ID09ICIxMiIgXV07IHRoZW4KCQlNb2RpZnlfcG9ydAoJCVNldF9jb25maWdfYWxsICJNb2RpZnkiCgkJTW9kaWZ5X2NvbmZpZ19hbGwKCWVsaWYgW1sgJHtzc3JfbW9kaWZ5fSA9PSAiMTMiIF1dOyB0aGVuCgkJU2V0X3VzZXJfYXBpX3NlcnZlcl9wdWJfYWRkciAiTW9kaWZ5IgoJCU1vZGlmeV91c2VyX2FwaV9zZXJ2ZXJfcHViX2FkZHIKCWVsc2UKCQllY2hvIC1lICIke0Vycm9yfSBJbmdyZXNlIGVsIG51bWVybyBjb3JyZWN0bygxLTEzKSIgJiYgZXhpdCAxCglmaQoKfQpMaXN0X3BvcnRfdXNlcigpewoJdXNlcl9pbmZvPSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWwpCgl1c2VyX3RvdGFsPSQoZWNobyAiJHt1c2VyX2luZm99Inx3YyAtbCkKCVtbIC16ICR7dXNlcl9pbmZvfSBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBObyBlbmNvbnRyZSBhbCB1c3VhcmlvLCBwb3IgZmF2b3IgdmVyaWZpY2Egb3RyYSB2ZXohIiAmJiBleGl0IDEKCXVzZXJfbGlzdF9hbGw9IiIKCWZvcigoaW50ZWdlciA9IDE7IGludGVnZXIgPD0gJHt1c2VyX3RvdGFsfTsgaW50ZWdlcisrKSkKCWRvCgkJdXNlcl9wb3J0PSQoZWNobyAiJHt1c2VyX2luZm99InxzZWQgLW4gIiR7aW50ZWdlcn1wInxhd2sgJ3twcmludCAkNH0nKQoJCXVzZXJfdXNlcm5hbWU9JChlY2hvICIke3VzZXJfaW5mb30ifHNlZCAtbiAiJHtpbnRlZ2VyfXAifGF3ayAne3ByaW50ICQyfSd8c2VkICdzL1xbLy9nO3MvXF0vL2cnKQoJCUdldF9Vc2VyX3RyYW5zZmVyICIke3VzZXJfcG9ydH0iCgkJCgkJdXNlcl9saXN0X2FsbD0ke3VzZXJfbGlzdF9hbGx9Ik5vbWJyZSBkZSB1c3VhcmlvOiAke0dyZWVuX2ZvbnRfcHJlZml4fSAiJHt1c2VyX3VzZXJuYW1lfSIke0ZvbnRfY29sb3Jfc3VmZml4fVxuUG9ydDogJHtHcmVlbl9mb250X3ByZWZpeH0iJHt1c2VyX3BvcnR9IiR7Rm9udF9jb2xvcl9zdWZmaXh9XG5Vc28gZGVsIHRyYWZpY28gKFVzYWRvICsgUmVzdGFudGUgPSBUb3RhbCk6XG4gJHtHcmVlbl9mb250X3ByZWZpeH0ke3RyYW5zZmVyX2VuYWJsZV9Vc2VkXzJ9JHtGb250X2NvbG9yX3N1ZmZpeH0gKyAke0dyZWVuX2ZvbnRfcHJlZml4fSR7dHJhbnNmZXJfZW5hYmxlX1VzZWR9JHtGb250X2NvbG9yX3N1ZmZpeH0gPSAke0dyZWVuX2ZvbnRfcHJlZml4fSR7dHJhbnNmZXJfZW5hYmxlfSR7Rm9udF9jb2xvcl9zdWZmaXh9XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICIKCWRvbmUKCWVjaG8gJiYgZWNobyAtZSAiPT09PT0gRWwgbnVtZXJvIHRvdGFsIGRlIHVzdWFyaW9zID09PT09ICR7R3JlZW5fYmFja2dyb3VuZF9wcmVmaXh9ICIke3VzZXJfdG90YWx9IiAke0ZvbnRfY29sb3Jfc3VmZml4fVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCgllY2hvIC1lICR7dXNlcl9saXN0X2FsbH0KfQpBZGRfcG9ydF91c2VyKCl7CmNsZWFyCglsYWxhbD0kMQoJaWYgW1sgIiRsYWxhbCIgPT0gImluc3RhbGwiIF1dOyB0aGVuCgkJbWF0Y2hfYWRkPSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWEgLXUgIiR7c3NyX3VzZXJ9IiAtcCAiJHtzc3JfcG9ydH0iIC1rICIke3Nzcl9wYXNzd29yZH0iIC1tICIke3Nzcl9tZXRob2R9IiAtTyAiJHtzc3JfcHJvdG9jb2x9IiAtRyAiJHtzc3JfcHJvdG9jb2xfcGFyYW19IiAtbyAiJHtzc3Jfb2Jmc30iIC1zICIke3Nzcl9zcGVlZF9saW1pdF9wZXJfY29ufSIgLVMgIiR7c3NyX3NwZWVkX2xpbWl0X3Blcl91c2VyfSIgLXQgIiR7c3NyX3RyYW5zZmVyfSIgLWYgIiR7c3NyX2ZvcmJpZH0ifGdyZXAgLXcgImFkZCB1c2VyIGluZm8iKQoJZWxzZQoJCXdoaWxlIHRydWUKCQlkbwoJCQlTZXRfY29uZmlnX2FsbAoJCQltYXRjaF9wb3J0PSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWx8Z3JlcCAtdyAicG9ydCAke3Nzcl9wb3J0fSQiKQoJCQlbWyAhIC16ICIke21hdGNoX3BvcnR9IiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBFbCBwdWVydG8gWyR7c3NyX3BvcnR9XSBZYSBleGlzdGUsIG5vIGxvIGFncmVndWUgZGUgbnVldm8gISIgJiYgZXhpdCAxCgkJCW1hdGNoX3VzZXJuYW1lPSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWx8Z3JlcCAtdyAiVXN1YXJpbyBcWyR7c3NyX3VzZXJ9XSIpCgkJCVtbICEgLXogIiR7bWF0Y2hfdXNlcm5hbWV9IiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBOb21icmUgZGUgdXN1YXJpbyBbJHtzc3JfdXNlcn1dIFlhIGV4aXN0ZSwgbm8gbG8gYWdyZWd1ZXMgZGUgbnVldm8gISIgJiYgZXhpdCAxCgkJCW1hdGNoX2FkZD0kKHB5dGhvbiBtdWpzb25fbWdyLnB5IC1hIC11ICIke3Nzcl91c2VyfSIgLXAgIiR7c3NyX3BvcnR9IiAtayAiJHtzc3JfcGFzc3dvcmR9IiAtbSAiJHtzc3JfbWV0aG9kfSIgLU8gIiR7c3NyX3Byb3RvY29sfSIgLUcgIiR7c3NyX3Byb3RvY29sX3BhcmFtfSIgLW8gIiR7c3NyX29iZnN9IiAtcyAiJHtzc3Jfc3BlZWRfbGltaXRfcGVyX2Nvbn0iIC1TICIke3Nzcl9zcGVlZF9saW1pdF9wZXJfdXNlcn0iIC10ICIke3Nzcl90cmFuc2Zlcn0iIC1mICIke3Nzcl9mb3JiaWR9InxncmVwIC13ICJhZGQgdXNlciBpbmZvIikKCQkJaWYgW1sgLXogIiR7bWF0Y2hfYWRkfSIgXV07IHRoZW4KCQkJCWVjaG8gLWUgIiR7RXJyb3J9IFVzdWFyaW8gbm8gc2UgcHVkbyBhZ3JlZ2FyICR7R3JlZW5fZm9udF9wcmVmaXh9W05vbWJyZSBkZSB1c3VhcmlvOiAke3Nzcl91c2VyfSAsIHBvcnQ6ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9ICIKCQkJCWJyZWFrCgkJCWVsc2UKCQkJCUFkZF9pcHRhYmxlcwoJCQkJU2F2ZV9pcHRhYmxlcwoJCQkJbXNnIC1iYXIKCQkJCWVjaG8gLWUgIiR7SW5mb30gVXN1YXJpbyBhZ3JlZ2FkbyBleGl0b3NhbWVudGVcbiAke0dyZWVuX2ZvbnRfcHJlZml4fVtOb21icmUgZGUgdXN1YXJpbzogJHtzc3JfdXNlcn0gLCBQdWVydG86ICR7c3NyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9ICIKCQkJCWVjaG8KCQkJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICJDb250aW51YXIgcGFyYSBhZ3JlZ2FyIG90cm8gVXN1YXJpbz9beS9uXToiIGFkZHluCgkJCQlbWyAteiAke2FkZHlufSBdXSAmJiBhZGR5bj0ieSIKCQkJCWlmIFtbICR7YWRkeW59ID09IFtObl0gXV07IHRoZW4KCQkJCQlHZXRfVXNlcl9pbmZvICIke3Nzcl9wb3J0fSIKCQkJCQlWaWV3X1VzZXJfaW5mbwoJCQkJCWJyZWFrCgkJCQllbHNlCgkJCQkJZWNobyAtZSAiJHtJbmZvfSBDb250aW51YXIgYWdyZWdhbmRvIGNvbmZpZ3VyYWNpb24gZGUgdXN1YXJpbyAuLi4iCgkJCQlmaQoJCQlmaQoJCWRvbmUKCWZpCn0KRGVsX3BvcnRfdXNlcigpewoKCUxpc3RfcG9ydF91c2VyCgl3aGlsZSB0cnVlCglkbwoJCW1zZyAtYmFyCgkJZWNobyAtZSAiUG9yIGZhdm9yIGluZ3Jlc2UgZWwgcHVlcnRvIGRlIHVzdWFyaW8gcGFyYSBzZXIgZWxpbWluYWRvIgoJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IENhbmNlbGFyKToiIGRlbF91c2VyX3BvcnQKCQltc2cgLWJhcgoJCVtbIC16ICIke2RlbF91c2VyX3BvcnR9IiBdXSAmJiBlY2hvIC1lICJDYW5jZWxhZG8uLi5cbiQobXNnIC1iYXIpIiAmJiBleGl0IDEKCQlkZWxfdXNlcj0kKGNhdCAiJHtjb25maWdfdXNlcl9tdWRiX2ZpbGV9InxncmVwICcicG9ydCI6ICciJHtkZWxfdXNlcl9wb3J0fSInLCcpCgkJaWYgW1sgISAteiAke2RlbF91c2VyfSBdXTsgdGhlbgoJCQlwb3J0PSR7ZGVsX3VzZXJfcG9ydH0KCQkJbWF0Y2hfZGVsPSQocHl0aG9uIG11anNvbl9tZ3IucHkgLWQgLXAgIiR7ZGVsX3VzZXJfcG9ydH0ifGdyZXAgLXcgImRlbGV0ZSB1c2VyICIpCgkJCWlmIFtbIC16ICIke21hdGNoX2RlbH0iIF1dOyB0aGVuCgkJCQllY2hvIC1lICIke0Vycm9yfSBMYSBlbGltaW5hY2nDs24gZGVsIHVzdWFyaW8gZmFsbMOzICR7R3JlZW5fZm9udF9wcmVmaXh9W1B1ZXJ0bzogJHtkZWxfdXNlcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiCgkJCWVsc2UKCQkJCURlbF9pcHRhYmxlcwoJCQkJU2F2ZV9pcHRhYmxlcwoJCQkJZWNobyAtZSAiJHtJbmZvfSBVc3VhcmlvIGVsaW1pbmFkbyBleGl0b3NhbWVudGUgJHtHcmVlbl9mb250X3ByZWZpeH1bUHVlcnRvOiAke2RlbF91c2VyX3BvcnR9XSR7Rm9udF9jb2xvcl9zdWZmaXh9ICIKCQkJZmkKCQkJYnJlYWsKCQllbHNlCgkJCWVjaG8gLWUgIiR7RXJyb3J9IFBvciBmYXZvciBpbmdyZXNlIGVsIHB1ZXJ0byBjb3JyZWN0byAhIgoJCWZpCglkb25lCgltc2cgLWJhcgp9Ck1hbnVhbGx5X01vZGlmeV9Db25maWcoKXsKY2xlYXIKbXNnIC1iYXIKCVNTUl9pbnN0YWxsYXRpb25fc3RhdHVzCgluYW5vICR7Y29uZmlnX3VzZXJfbXVkYl9maWxlfQoJZWNobyAiU2kgcmVpbmljaWFyIFNoYWRvd3NvY2tzUiBhaG9yYT9bWS9uXSIgJiYgZWNobwptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogeSk6IiB5bgoJW1sgLXogJHt5bn0gXV0gJiYgeW49InkiCglpZiBbWyAke3lufSA9PSBbWXldIF1dOyB0aGVuCgkJUmVzdGFydF9TU1IKCWZpCgp9CkNsZWFyX3RyYW5zZmVyKCl7CmNsZWFyCm1zZyAtYmFyCglTU1JfaW5zdGFsbGF0aW9uX3N0YXR1cwoJIGVjaG8gLWUgIlF1ZSBxdWllcmVzIHJlYWxpemFyPwokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH0xLiR7Rm9udF9jb2xvcl9zdWZmaXh9ICBCb3JyYXIgZWwgdHJhZmljbyBkZSB1biBzb2xvIHVzdWFyaW8KICR7R3JlZW5fZm9udF9wcmVmaXh9Mi4ke0ZvbnRfY29sb3Jfc3VmZml4fSAgQm9ycmFyIHRvZG8gZWwgdHJhZmljbyBkZSB1c3VhcmlvcyAoaXJyZXBhcmFibGUpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTMuJHtGb250X2NvbG9yX3N1ZmZpeH0gIFRvZG8gZWwgdHJhZmljbyBkZSB1c3VhcmlvcyBzZSBib3JyYSBlbiBlbCBpbmljaW8KICR7R3JlZW5fZm9udF9wcmVmaXh9NC4ke0ZvbnRfY29sb3Jfc3VmZml4fSAgRGVqYSBkZSBjcm9ub21ldHJhciB0b2RvIGVsIHRyYWZpY28gZGUgdXN1YXJpb3MKICR7R3JlZW5fZm9udF9wcmVmaXh9NS4ke0ZvbnRfY29sb3Jfc3VmZml4fSAgTW9kaWZpY2FyIGxhIHNpbmNyb25pemFjaW9uIGRlIHRvZG8gZWwgdHJhZmljbyBkZSB1c3VhcmlvcyIKbXNnIC1iYXIKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86Q2FuY2VsYXIpOiIgc3NyX21vZGlmeQoJW1sgLXogIiR7c3NyX21vZGlmeX0iIF1dICYmIGVjaG8gIkNhbmNlbGFkbyAuLi4iICYmIGV4aXQgMQoJaWYgW1sgJHtzc3JfbW9kaWZ5fSA9PSAiMSIgXV07IHRoZW4KCQlDbGVhcl90cmFuc2Zlcl9vbmUKCWVsaWYgW1sgJHtzc3JfbW9kaWZ5fSA9PSAiMiIgXV07IHRoZW4KbXNnIC1iYXIKCQllY2hvICJFc3RhIHNlZ3VybyBkZSBxdWUgZGVzZWEgYm9ycmFyIHRvZG8gZWwgdHJhZmljbyBkZSB1c3VhcmlvW3kvbl0iICYmIGVjaG8KbXNnIC1iYXIKCQlzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBuKToiIHluCgkJW1sgLXogJHt5bn0gXV0gJiYgeW49Im4iCgkJaWYgW1sgJHt5bn0gPT0gW1l5XSBdXTsgdGhlbgoJCQlDbGVhcl90cmFuc2Zlcl9hbGwKCQllbHNlCgkJCWVjaG8gIkNhbmNlbGFyIC4uLiIKCQlmaQoJZWxpZiBbWyAke3Nzcl9tb2RpZnl9ID09ICIzIiBdXTsgdGhlbgoJCWNoZWNrX2Nyb250YWIKCQlTZXRfY3JvbnRhYgoJCUNsZWFyX3RyYW5zZmVyX2FsbF9jcm9uX3N0YXJ0CgllbGlmIFtbICR7c3NyX21vZGlmeX0gPT0gIjQiIF1dOyB0aGVuCgkJY2hlY2tfY3JvbnRhYgoJCUNsZWFyX3RyYW5zZmVyX2FsbF9jcm9uX3N0b3AKCWVsaWYgW1sgJHtzc3JfbW9kaWZ5fSA9PSAiNSIgXV07IHRoZW4KCQljaGVja19jcm9udGFiCgkJQ2xlYXJfdHJhbnNmZXJfYWxsX2Nyb25fbW9kaWZ5CgllbHNlCgkJZWNobyAtZSAiJHtFcnJvcn0gUG9yIGZhdm9yIG51bWVybyBkZSAoMS01KSIgJiYgZXhpdCAxCglmaQoKfQpDbGVhcl90cmFuc2Zlcl9vbmUoKXsKCUxpc3RfcG9ydF91c2VyCgl3aGlsZSB0cnVlCglkbwoJICAgIG1zZyAtYmFyCgkJZWNobyAtZSAiUG9yIGZhdm9yIGluZ3Jlc2UgZWwgcHVlcnRvIGRlIHVzdWFyaW8gcGFyYSBib3JyYXIgZWwgdHLDoWZpY28gdXNhZG8iCgkJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogQ2FuY2VsYXIpOiIgQ2xlYXJfdHJhbnNmZXJfdXNlcl9wb3J0CgkJW1sgLXogIiR7Q2xlYXJfdHJhbnNmZXJfdXNlcl9wb3J0fSIgXV0gJiYgZWNobyAtZSAiQ2FuY2VsYWRvLi4uXG4kKG1zZyAtYmFyKSIgJiYgZXhpdCAxCgkJQ2xlYXJfdHJhbnNmZXJfdXNlcj0kKGNhdCAiJHtjb25maWdfdXNlcl9tdWRiX2ZpbGV9InxncmVwICcicG9ydCI6ICciJHtDbGVhcl90cmFuc2Zlcl91c2VyX3BvcnR9IicsJykKCQlpZiBbWyAhIC16ICR7Q2xlYXJfdHJhbnNmZXJfdXNlcn0gXV07IHRoZW4KCQkJbWF0Y2hfY2xlYXI9JChweXRob24gbXVqc29uX21nci5weSAtYyAtcCAiJHtDbGVhcl90cmFuc2Zlcl91c2VyX3BvcnR9InxncmVwIC13ICJjbGVhciB1c2VyICIpCgkJCWlmIFtbIC16ICIke21hdGNoX2NsZWFyfSIgXV07IHRoZW4KCQkJCWVjaG8gLWUgIiR7RXJyb3J9IEVsIHVzdWFyaW8gbm8gaGEgcG9kaWRvIHV0aWxpemFyIGxhIGNvbXBlbnNhY2nDs24gZGUgdHLDoWZpY28gJHtHcmVlbl9mb250X3ByZWZpeH1bUHVlcnRvOiAke0NsZWFyX3RyYW5zZmVyX3VzZXJfcG9ydH1dJHtGb250X2NvbG9yX3N1ZmZpeH0gIgoJCQllbHNlCgkJCQllY2hvIC1lICIke0luZm99IEVsIHVzdWFyaW8gaGEgZWxpbWluYWRvIGNvbiDDqXhpdG8gZWwgdHLDoWZpY28gdXRpbGl6YW5kbyBjZXJvLiAke0dyZWVuX2ZvbnRfcHJlZml4fVtQdWVydG86ICR7Q2xlYXJfdHJhbnNmZXJfdXNlcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiCgkJCWZpCgkJCWJyZWFrCgkJZWxzZQoJCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgaW5ncmVzZSBlbCBwdWVydG8gY29ycmVjdG8gISIKCQlmaQoJZG9uZQp9CkNsZWFyX3RyYW5zZmVyX2FsbCgpewpjbGVhcgoJY2QgIiR7c3NyX2ZvbGRlcn0iCgl1c2VyX2luZm89JChweXRob24gbXVqc29uX21nci5weSAtbCkKCXVzZXJfdG90YWw9JChlY2hvICIke3VzZXJfaW5mb30ifHdjIC1sKQoJW1sgLXogJHt1c2VyX2luZm99IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IE5vIGVuY29udHJvLCBwb3IgZmF2b3IgY29tcHJ1ZWJlISIgJiYgZXhpdCAxCglmb3IoKGludGVnZXIgPSAxOyBpbnRlZ2VyIDw9ICR7dXNlcl90b3RhbH07IGludGVnZXIrKykpCglkbwoJCXVzZXJfcG9ydD0kKGVjaG8gIiR7dXNlcl9pbmZvfSJ8c2VkIC1uICIke2ludGVnZXJ9cCJ8YXdrICd7cHJpbnQgJDR9JykKCQltYXRjaF9jbGVhcj0kKHB5dGhvbiBtdWpzb25fbWdyLnB5IC1jIC1wICIke3VzZXJfcG9ydH0ifGdyZXAgLXcgImNsZWFyIHVzZXIgIikKCQlpZiBbWyAteiAiJHttYXRjaF9jbGVhcn0iIF1dOyB0aGVuCgkJCWVjaG8gLWUgIiR7RXJyb3J9IEVsIHVzdWFyaW8gaGEgdXRpbGl6YWRvIGVsIHRyYWZpY28gYm9ycmFkbyBmYWxsaWRvICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7dXNlcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiCgkJZWxzZQoJCQllY2hvIC1lICIke0luZm99IEVsIHVzdWFyaW8gaGEgdXRpbGl6YWRvIGVsIHRyYWZpY28gcGFyYSBib3JyYXIgY29uIGV4aXRvICR7R3JlZW5fZm9udF9wcmVmaXh9W1BvcnQ6ICR7dXNlcl9wb3J0fV0ke0ZvbnRfY29sb3Jfc3VmZml4fSAiCgkJZmkKCWRvbmUKCWVjaG8gLWUgIiR7SW5mb30gU2UgYm9ycmEgdG9kbyBlbCB0cmFmaWNvIGRlIHVzdWFyaW9zISIKfQpDbGVhcl90cmFuc2Zlcl9hbGxfY3Jvbl9zdGFydCgpewoJY3JvbnRhYiAtbCA+ICIkZmlsZS9jcm9udGFiLmJhayIKCXNlZCAtaSAiL3Nzcm11LnNoL2QiICIkZmlsZS9jcm9udGFiLmJhayIKCWVjaG8gLWUgIlxuJHtDcm9udGFiX3RpbWV9IC9iaW4vYmFzaCAkZmlsZS9zc3JtdS5zaCBjbGVhcmFsbCIgPj4gIiRmaWxlL2Nyb250YWIuYmFrIgoJY3JvbnRhYiAiJGZpbGUvY3JvbnRhYi5iYWsiCglybSAtciAiJGZpbGUvY3JvbnRhYi5iYWsiCgljcm9uX2NvbmZpZz0kKGNyb250YWIgLWwgfCBncmVwICJzc3JtdS5zaCIpCglpZiBbWyAteiAke2Nyb25fY29uZmlnfSBdXTsgdGhlbgoJCWVjaG8gLWUgIiR7RXJyb3J9IFRlbXBvcml6YWNpb24gZGUgdG9kbyBlbCB0cmFmaWNvIGRlIHVzdWFyaW9zIGJvcnJhZG8uICEiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gUHJvZ3JhbWFjaW9uIGRlIHRvZG9zIGxvcyB0aWVtcG9zIGRlIGluaWNpbyBjbGFybyBleGl0b3NvcyEiCglmaQp9CkNsZWFyX3RyYW5zZmVyX2FsbF9jcm9uX3N0b3AoKXsKCWNyb250YWIgLWwgPiAiJGZpbGUvY3JvbnRhYi5iYWsiCglzZWQgLWkgIi9zc3JtdS5zaC9kIiAiJGZpbGUvY3JvbnRhYi5iYWsiCgljcm9udGFiICIkZmlsZS9jcm9udGFiLmJhayIKCXJtIC1yICIkZmlsZS9jcm9udGFiLmJhayIKCWNyb25fY29uZmlnPSQoY3JvbnRhYiAtbCB8IGdyZXAgInNzcm11LnNoIikKCWlmIFtbICEgLXogJHtjcm9uX2NvbmZpZ30gXV07IHRoZW4KCQllY2hvIC1lICIke0Vycm9yfSBUZW1wb3JpemFkbyBUb2RvIGVsIHRyYWZpY28gZGUgdXN1YXJpb3Mgc2UgaGEgYm9ycmFkbyBQYXJhZG8gZmFsbGlkbyEiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7SW5mb30gVGltaW5nIEFsbCBDbGVhciBTdG9wIFN0b3AgU3VjY2Vzc2Z1bCEhIgoJZmkKfQpDbGVhcl90cmFuc2Zlcl9hbGxfY3Jvbl9tb2RpZnkoKXsKCVNldF9jcm9udGFiCglDbGVhcl90cmFuc2Zlcl9hbGxfY3Jvbl9zdG9wCglDbGVhcl90cmFuc2Zlcl9hbGxfY3Jvbl9zdGFydAp9ClNldF9jcm9udGFiKCl7CmNsZWFyCgoJCWVjaG8gLWUgIlBvciBmYXZvciBpbmdyZXNlIGVsIGludGVydmFsbyBkZSB0aWVtcG8gZGUgZmx1am8KID09PSBGb3JtYXRvID09PQogKiAqICogKiAqIE1lcyAqICogKiAqICoKICR7R3JlZW5fZm9udF9wcmVmaXh9IDAgMiAxICogKiAke0ZvbnRfY29sb3Jfc3VmZml4fSBSZXByZXNlbnRhbnRlIDFlciwgMjowMCwgY2xhcm8sIHRyYWZpY28gdXNhZG8uCiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fSAwIDIgMTUgKiAqICR7Rm9udF9jb2xvcl9zdWZmaXh9IFJlcHJlc2VudGF0aXZvIEVsIDEgIDJ9IHJlcHJlc2VudGEgZWwgMTUgIDI6MDAgbWludXRvcyBQdW50byBkZSBmbHVqbyB1c2FkbyBkZXNwZWphZG8gMCBtaW51dG9zIEJvcnJhciBmbHVqbyB1c2Fkb++/vQokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH0gMCAyICovNyAqICogJHtGb250X2NvbG9yX3N1ZmZpeH0gUmVwcmVzZW50YW50ZSA3IGRpYXMgMjogMCBtaW51dG9zIGRlc3BlamEgZWwgdHJhZmljbyB1c2Fkby4KJChtc2cgLWJhcikKICR7R3JlZW5fZm9udF9wcmVmaXh9IDAgMiAqICogMCAke0ZvbnRfY29sb3Jfc3VmZml4fSBSZXByZXNlbnRhIHRvZG9zIGxvcyBkb21pbmdvcyAoNykgcGFyYSBkZXNwZWphciBlbCB0cmFmaWNvIHV0aWxpemFkby4KJChtc2cgLWJhcikKICR7R3JlZW5fZm9udF9wcmVmaXh9IDAgMiAqICogMyAke0ZvbnRfY29sb3Jfc3VmZml4fSBSZXByZXNlbnRhbnRlICgzKSBGbHVqbyBkZSB0cmFmaWNvIHVzYWRvIGRlc3BlamFkbyIKbXNnIC1iYXIKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoRGVmYXVsdDogMCAyIDEgKiAqIDEgZGUgY2FkYSBtZXMgMjowMCk6IiBDcm9udGFiX3RpbWUKCVtbIC16ICIke0Nyb250YWJfdGltZX0iIF1dICYmIENyb250YWJfdGltZT0iMCAyIDEgKiAqIgp9ClN0YXJ0X1NTUigpewpjbGVhcgoJU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMKCWNoZWNrX3BpZAoJW1sgISAteiAke1BJRH0gXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gU2hhZG93c29ja3NSIHNlIGVzdGEgZWplY3V0YW5kbyEiICYmIGV4aXQgMQoJL2V0Yy9pbml0LmQvc3NybXUgc3RhcnQKCn0KU3RvcF9TU1IoKXsKY2xlYXIKCVNTUl9pbnN0YWxsYXRpb25fc3RhdHVzCgljaGVja19waWQKCVtbIC16ICR7UElEfSBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBTaGFkb3dzb2Nrc1Igbm8gZXN0YSBmdW5jaW9uYW5kbyEiICYmIGV4aXQgMQoJL2V0Yy9pbml0LmQvc3NybXUgc3RvcAoKfQpSZXN0YXJ0X1NTUigpewpjbGVhcgoJU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMKCWNoZWNrX3BpZAoJW1sgISAteiAke1BJRH0gXV0gJiYgL2V0Yy9pbml0LmQvc3NybXUgc3RvcAoJL2V0Yy9pbml0LmQvc3NybXUgc3RhcnQKCn0KVmlld19Mb2coKXsKCVNTUl9pbnN0YWxsYXRpb25fc3RhdHVzCglbWyAhIC1lICR7c3NyX2xvZ19maWxlfSBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBFbCByZWdpc3RybyBkZSBTaGFkb3dzb2Nrc1Igbm8gZXhpc3RlISIgJiYgZXhpdCAxCgllY2hvICYmIGVjaG8gLWUgIiR7VGlwfSBQcmVzaW9uZSAke1JlZF9mb250X3ByZWZpeH1DdHJsK0MgJHtGb250X2NvbG9yX3N1ZmZpeH0gUmVnaXN0cm8gZGUgcmVnaXN0cm8gZGUgdGVybWluYWNpb24iICYmIGVjaG8KCXRhaWwgLWYgJHtzc3JfbG9nX2ZpbGV9Cgp9CiNBZmlsYWRvCkNvbmZpZ3VyZV9TZXJ2ZXJfU3BlZWRlcigpewpjbGVhcgptc2cgLWJhcgoJZWNobyAmJiBlY2hvIC1lICJRdWUgdmFzIGEgaGFjZXIKJHtCQVJSQTF9CiAke0dyZWVuX2ZvbnRfcHJlZml4fTEuJHtGb250X2NvbG9yX3N1ZmZpeH0gVmVsb2NpZGFkIGFndWRhCiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gVmVsb2NpZGFkIGFndWRhCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAogJHtHcmVlbl9mb250X3ByZWZpeH0zLiR7Rm9udF9jb2xvcl9zdWZmaXh9IFZlbG9jaWRhZCBhZ3VkYQokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH00LiR7Rm9udF9jb2xvcl9zdWZmaXh9IFZlbG9jaWRhZCBhZ3VkYQokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH01LiR7Rm9udF9jb2xvcl9zdWZmaXh9IFJlaW5pY2llIGxhIHZlbG9jaWRhZCBhZ3VkYQokKG1zZyAtYmFyKQogJHtHcmVlbl9mb250X3ByZWZpeH02LiR7Rm9udF9jb2xvcl9zdWZmaXh9IEVzdGFkbyBhZ3VkbwogJChtc2cgLWJhcikKIE5vdGE6IFNoYXJwIHkgTG90U2VydmVyIG5vIHNlIHB1ZWRlbiBpbnN0YWxhciAvIGluaWNpYXIgYWwgbWlzbW8gdGllbXBvIgptc2cgLWJhcgoJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogQ2FuY2VsYXIpOiIgc2VydmVyX3NwZWVkZXJfbnVtCglbWyAteiAiJHtzZXJ2ZXJfc3BlZWRlcl9udW19IiBdXSAmJiBlY2hvICJDYW5jZWxhZG8gLi4uIiAmJiBleGl0IDEKCWlmIFtbICR7c2VydmVyX3NwZWVkZXJfbnVtfSA9PSAiMSIgXV07IHRoZW4KCQlJbnN0YWxsX1NlcnZlclNwZWVkZXIKCWVsaWYgW1sgJHtzZXJ2ZXJfc3BlZWRlcl9udW19ID09ICIyIiBdXTsgdGhlbgoJCVNlcnZlcl9TcGVlZGVyX2luc3RhbGxhdGlvbl9zdGF0dXMKCQlVbmluc3RhbGxfU2VydmVyU3BlZWRlcgoJZWxpZiBbWyAke3NlcnZlcl9zcGVlZGVyX251bX0gPT0gIjMiIF1dOyB0aGVuCgkJU2VydmVyX1NwZWVkZXJfaW5zdGFsbGF0aW9uX3N0YXR1cwoJCSR7U2VydmVyX1NwZWVkZXJfZmlsZX0gc3RhcnQKCQkke1NlcnZlcl9TcGVlZGVyX2ZpbGV9IHN0YXR1cwoJZWxpZiBbWyAke3NlcnZlcl9zcGVlZGVyX251bX0gPT0gIjQiIF1dOyB0aGVuCgkJU2VydmVyX1NwZWVkZXJfaW5zdGFsbGF0aW9uX3N0YXR1cwoJCSR7U2VydmVyX1NwZWVkZXJfZmlsZX0gc3RvcAoJZWxpZiBbWyAke3NlcnZlcl9zcGVlZGVyX251bX0gPT0gIjUiIF1dOyB0aGVuCgkJU2VydmVyX1NwZWVkZXJfaW5zdGFsbGF0aW9uX3N0YXR1cwoJCSR7U2VydmVyX1NwZWVkZXJfZmlsZX0gcmVzdGFydAoJCSR7U2VydmVyX1NwZWVkZXJfZmlsZX0gc3RhdHVzCgllbGlmIFtbICR7c2VydmVyX3NwZWVkZXJfbnVtfSA9PSAiNiIgXV07IHRoZW4KCQlTZXJ2ZXJfU3BlZWRlcl9pbnN0YWxsYXRpb25fc3RhdHVzCgkJJHtTZXJ2ZXJfU3BlZWRlcl9maWxlfSBzdGF0dXMKCWVsc2UKCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgbnVtZXJvKDEtNikiICYmIGV4aXQgMQoJZmkKfQpJbnN0YWxsX1NlcnZlclNwZWVkZXIoKXsKCVtbIC1lICR7U2VydmVyX1NwZWVkZXJfZmlsZX0gXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gU2VydmVyIFNwZWVkZXIgZXN0YSBpbnN0YWxhZG8hIiAmJiBleGl0IDEKCSNQcmVzdGFtbyBkZSBsYSB2ZXJzaW9uIGZlbGl6IGRlIDkxeXVuLnJvZwoJd2dldCAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIC1xTyAvdG1wL3NlcnZlcnNwZWVkZXIuc2ggaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzkxeXVuL3NlcnZlcnNwZWVkZXIvbWFzdGVyL3NlcnZlcnNwZWVkZXIuc2gKCVtbICEgLWUgIi90bXAvc2VydmVyc3BlZWRlci5zaCIgXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gUHJlc3RhbW8gZGUgbGEgdmVyc2lvbiBmZWxpeiBkZSA5MXl1bi5yb2chIiAmJiBleGl0IDEKCWJhc2ggL3RtcC9zZXJ2ZXJzcGVlZGVyLnNoCglzbGVlcCAycwoJUElEPWBwcyAtZWYgfGdyZXAgLXYgZ3JlcCB8Z3JlcCAic2VydmVyc3BlZWRlciIgfGF3ayAne3ByaW50ICQyfSdgCglpZiBbWyAhIC16ICR7UElEfSBdXTsgdGhlbgoJCXJtIC1yZiAvdG1wL3NlcnZlcnNwZWVkZXIuc2gKCQlybSAtcmYgL3RtcC85MXl1bnNlcnZlcnNwZWVkZXIKCQlybSAtcmYgL3RtcC85MXl1bnNlcnZlcnNwZWVkZXIudGFyLmd6CgkJZWNobyAtZSAiJHtJbmZvfSBMYSBpbnN0YWxhY2lvbiBkZWwgc2Vydmlkb3IgU3BlZWRlciBlc3RhIGNvbXBsZXRhISIgJiYgZXhpdCAxCgllbHNlCgkJZWNobyAtZSAiJHtFcnJvcn0gRmFsbG8gbGEgaW5zdGFsYWNpb24gZGUgU2VydmVyIFNwZWVkZXIhIiAmJiBleGl0IDEKCWZpCn0KVW5pbnN0YWxsX1NlcnZlclNwZWVkZXIoKXsKY2xlYXIKbXNnIC1iYXIKCWVjaG8gInllcyBwYXJhIGRlc2luc3RhbGFyIFNwZWVkID8/U3BlZWQgPz8oU2VydmVyIFNwZWVkZXIpW3kvTl0iICYmIGVjaG8KbXNnIC1iYXIKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IG4pOiIgdW55bgoJW1sgLXogJHt1bnlufSBdXSAmJiBlY2hvICYmIGVjaG8gIkNhbmNlbGFkbyAuLi4iICYmIGV4aXQgMQoJaWYgW1sgJHt1bnlufSA9PSBbWXldIF1dOyB0aGVuCgkJY2hhdHRyIC1pIC9zZXJ2ZXJzcGVlZGVyL2V0Yy9hcHgqCgkJL3NlcnZlcnNwZWVkZXIvYmluL3NlcnZlclNwZWVkZXIuc2ggdW5pbnN0YWxsIC1mCgkJZWNobyAmJiBlY2hvICJTZXJ2ZXIgU3BlZWRlciBEZXNpbnN0YWxhY2lvbiBjb21wbGV0YSEiICYmIGVjaG8KCWZpCn0KIyBMb3RTZXJ2ZXIKQ29uZmlndXJlX0xvdFNlcnZlcigpewpjbGVhcgptc2cgLWJhcgoJZWNobyAmJiBlY2hvIC1lICJRdWUgdmFzIGEgaGFjZXI/CiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTEuJHtGb250X2NvbG9yX3N1ZmZpeH0gSW5zdGFsYXIgTG90U2VydmVyCiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gRGVzaW5zdGFsYXIgTG90U2VydmVyCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAogJHtHcmVlbl9mb250X3ByZWZpeH0zLiR7Rm9udF9jb2xvcl9zdWZmaXh9IEluaWNpYXIgTG90U2VydmVyCiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTQuJHtGb250X2NvbG9yX3N1ZmZpeH0gRGV0ZW5lciBMb3RTZXJ2ZXIKJChtc2cgLWJhcikKICR7R3JlZW5fZm9udF9wcmVmaXh9NS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBSZWluaWNpYXIgTG90U2VydmVyCiQobXNnIC1iYXIpCiAke0dyZWVuX2ZvbnRfcHJlZml4fTYuJHtGb250X2NvbG9yX3N1ZmZpeH0gVmVyIGVsIGVzdGFkbyBkZSBMb3RTZXJ2ZXIKJHtCQVJSQTF9CiAKIE5vdGE6IFNoYXJwIHkgTG90U2VydmVyIG5vIHNlIHB1ZWRlbiBpbnN0YWxhciAvIGluaWNpYXIgYWwgbWlzbW8gdGllbXBvIgptc2cgLWJhcgoKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IENhbmNlbGFyKToiIGxvdHNlcnZlcl9udW0KCVtbIC16ICIke2xvdHNlcnZlcl9udW19IiBdXSAmJiBlY2hvICJDYW5jZWxhZG8gLi4uIiAmJiBleGl0IDEKCWlmIFtbICR7bG90c2VydmVyX251bX0gPT0gIjEiIF1dOyB0aGVuCgkJSW5zdGFsbF9Mb3RTZXJ2ZXIKCWVsaWYgW1sgJHtsb3RzZXJ2ZXJfbnVtfSA9PSAiMiIgXV07IHRoZW4KCQlMb3RTZXJ2ZXJfaW5zdGFsbGF0aW9uX3N0YXR1cwoJCVVuaW5zdGFsbF9Mb3RTZXJ2ZXIKCWVsaWYgW1sgJHtsb3RzZXJ2ZXJfbnVtfSA9PSAiMyIgXV07IHRoZW4KCQlMb3RTZXJ2ZXJfaW5zdGFsbGF0aW9uX3N0YXR1cwoJCSR7TG90U2VydmVyX2ZpbGV9IHN0YXJ0CgkJJHtMb3RTZXJ2ZXJfZmlsZX0gc3RhdHVzCgllbGlmIFtbICR7bG90c2VydmVyX251bX0gPT0gIjQiIF1dOyB0aGVuCgkJTG90U2VydmVyX2luc3RhbGxhdGlvbl9zdGF0dXMKCQkke0xvdFNlcnZlcl9maWxlfSBzdG9wCgllbGlmIFtbICR7bG90c2VydmVyX251bX0gPT0gIjUiIF1dOyB0aGVuCgkJTG90U2VydmVyX2luc3RhbGxhdGlvbl9zdGF0dXMKCQkke0xvdFNlcnZlcl9maWxlfSByZXN0YXJ0CgkJJHtMb3RTZXJ2ZXJfZmlsZX0gc3RhdHVzCgllbGlmIFtbICR7bG90c2VydmVyX251bX0gPT0gIjYiIF1dOyB0aGVuCgkJTG90U2VydmVyX2luc3RhbGxhdGlvbl9zdGF0dXMKCQkke0xvdFNlcnZlcl9maWxlfSBzdGF0dXMKCWVsc2UKCQllY2hvIC1lICIke0Vycm9yfSBQb3IgZmF2b3IgbnVtZXJvKDEtNikiICYmIGV4aXQgMQoJZmkKfQpJbnN0YWxsX0xvdFNlcnZlcigpewoJW1sgLWUgJHtMb3RTZXJ2ZXJfZmlsZX0gXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gTG90U2VydmVyIGVzdGEgaW5zdGFsYWRvISIgJiYgZXhpdCAxCgkjR2l0aHViOiBodHRwczovL2dpdGh1Yi5jb20vMG9WaWNlcm8wL3NlcnZlclNwZWVkZXJfSW5zdGFsbAoJd2dldCAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIC1xTyAvdG1wL2FwcGV4LnNoICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vMG9WaWNlcm8wL3NlcnZlclNwZWVkZXJfSW5zdGFsbC9tYXN0ZXIvYXBwZXguc2giCglbWyAhIC1lICIvdG1wL2FwcGV4LnNoIiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBGYWxsbyBsYSBkZXNjYXJnYSBkZWwgc2NyaXB0IGRlIGluc3RhbGFjaW9uIGRlIExvdFNlcnZlciEiICYmIGV4aXQgMQoJYmFzaCAvdG1wL2FwcGV4LnNoICdpbnN0YWxsJwoJc2xlZXAgMnMKCVBJRD1gcHMgLWVmIHxncmVwIC12IGdyZXAgfGdyZXAgImFwcGV4IiB8YXdrICd7cHJpbnQgJDJ9J2AKCWlmIFtbICEgLXogJHtQSUR9IF1dOyB0aGVuCgkJZWNobyAtZSAiJHtJbmZvfSBMYSBpbnN0YWxhY2lvbiBkZSBMb3RTZXJ2ZXIgZXN0YSBjb21wbGV0YSEiICYmIGV4aXQgMQoJZWxzZQoJCWVjaG8gLWUgIiR7RXJyb3J9IEZhbGxvIGxhIGluc3RhbGFjaW9uIGRlIExvdFNlcnZlciEiICYmIGV4aXQgMQoJZmkKfQpVbmluc3RhbGxfTG90U2VydmVyKCl7CmNsZWFyCm1zZyAtYmFyCgllY2hvICJEZXNpbnN0YWxhciBQYXJhIGRlc2luc3RhbGFyIExvdFNlcnZlclt5L05dIiAmJiBlY2hvCm1zZyAtYmFyCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBuKToiIHVueW4KbXNnIC1iYXIKCVtbIC16ICR7dW55bn0gXV0gJiYgZWNobyAmJiBlY2hvICJDYW5jZWxhZG8gLi4uIiAmJiBleGl0IDEKCWlmIFtbICR7dW55bn0gPT0gW1l5XSBdXTsgdGhlbgoJCXdnZXQgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAtcU8gL3RtcC9hcHBleC5zaCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzBvVmljZXJvMC9zZXJ2ZXJTcGVlZGVyX0luc3RhbGwvbWFzdGVyL2FwcGV4LnNoIiAmJiBiYXNoIC90bXAvYXBwZXguc2ggJ3VuaW5zdGFsbCcKCQllY2hvICYmIGVjaG8gIkxhIGRlc2luc3RhbGFjaW9uIGRlIExvdFNlcnZlciBlc3RhIGNvbXBsZXRhISIgJiYgZWNobwoJZmkKfQojIEJCUgpDb25maWd1cmVfQkJSKCl7CmNsZWFyCm1zZyAtYmFyCiBlY2hvIC1lICIgIFF1ZSB2YXMgYSBoYWNlcj8KJChtc2cgLWJhcikJCiAke0dyZWVuX2ZvbnRfcHJlZml4fTEuJHtGb250X2NvbG9yX3N1ZmZpeH0gSW5zdGFsYXIgQkJSCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAoke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gSW5pY2lhciBCQlIKJHtHcmVlbl9mb250X3ByZWZpeH0zLiR7Rm9udF9jb2xvcl9zdWZmaXh9IERlamFyIGRlIEJCUgoke0dyZWVuX2ZvbnRfcHJlZml4fTQuJHtGb250X2NvbG9yX3N1ZmZpeH0gVmVyIGVsIGVzdGFkbyBkZSBCQlIiCm1zZyAtYmFyCmVjaG8gLWUgIiR7R3JlZW5fZm9udF9wcmVmaXh9IFtQb3IgZmF2b3IsIHByZXN0ZSBhdGVuY2lvbiBhbnRlcyBkZSBsYSBpbnN0YWxhY2lvbl0gJHtGb250X2NvbG9yX3N1ZmZpeH0KJChtc2cgLWJhcikKMS4gQWJyYSBCQlIsIHJlZW1wbGFjZSwgaGF5IHVuIGVycm9yIGRlIHJlZW1wbGF6byAoZGVzcHVlcyBkZSByZWluaWNpYXIpCjIuIEVzdGUgc2NyaXB0IHNvbG8gZXMgY29tcGF0aWJsZSBjb24gbG9zIG51Y2xlb3MgZGUgcmVlbXBsYXpvIGRlIERlYmlhbiAvIFVidW50dS4gT3BlblZaIHkgRG9ja2VyIG5vIGFkbWl0ZW4gZWwgcmVlbXBsYXpvIGRlIGxvcyBudWNsZW9zLgozLiBEZWJpYW4gcmVlbXBsYXphIGVsIHByb2Nlc28gZGVsIGtlcm5lbCBbRGVzZWEgZmluYWxpemFyIGVsIGtlcm5lbCBkZSBkZXNpbnN0YWxhY2lvbl0sIHNlbGVjY2lvbmUgJHtHcmVlbl9mb250X3ByZWZpeH0gTk8gJHtGb250X2NvbG9yX3N1ZmZpeH0iCglzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBDYW5jZWxhcik6IiBiYnJfbnVtCm1zZyAtYmFyCglbWyAteiAiJHtiYnJfbnVtfSIgXV0gJiYgZWNobyAtZSAiQ2FuY2VsYWRvLi4uXG4kKG1zZyAtYmFyKSIgJiYgZXhpdCAxCglpZiBbWyAke2Jicl9udW19ID09ICIxIiBdXTsgdGhlbgoJCUluc3RhbGxfQkJSCgllbGlmIFtbICR7YmJyX251bX0gPT0gIjIiIF1dOyB0aGVuCgkJU3RhcnRfQkJSCgllbGlmIFtbICR7YmJyX251bX0gPT0gIjMiIF1dOyB0aGVuCgkJU3RvcF9CQlIKCWVsaWYgW1sgJHtiYnJfbnVtfSA9PSAiNCIgXV07IHRoZW4KCQlTdGF0dXNfQkJSCgllbHNlCgkJZWNobyAtZSAiJHtFcnJvcn0gUG9yIGZhdm9yIG51bWVybygxLTQpIiAmJiBleGl0IDEKCWZpCn0KSW5zdGFsbF9CQlIoKXsKCVtbICR7cmVsZWFzZX0gPSAiY2VudG9zIiBdXSAmJiBlY2hvIC1lICIke0Vycm9yfSBFc3RlIHNjcmlwdCBkZSBpbnN0YWxhY2lvbiBkZWwgc2lzdGVtYSBDZW50T1MuIEJCUiAhIiAmJiBleGl0IDEKCUJCUl9pbnN0YWxsYXRpb25fc3RhdHVzCgliYXNoICIke0JCUl9maWxlfSIKfQpTdGFydF9CQlIoKXsKCUJCUl9pbnN0YWxsYXRpb25fc3RhdHVzCgliYXNoICIke0JCUl9maWxlfSIgc3RhcnQKfQpTdG9wX0JCUigpewoJQkJSX2luc3RhbGxhdGlvbl9zdGF0dXMKCWJhc2ggIiR7QkJSX2ZpbGV9IiBzdG9wCn0KU3RhdHVzX0JCUigpewoJQkJSX2luc3RhbGxhdGlvbl9zdGF0dXMKCWJhc2ggIiR7QkJSX2ZpbGV9IiBzdGF0dXMKfQpCYWNrVVBfc3NycigpewpjbGVhcgptc2cgLWJhcgptc2cgLWFtYSAiJChmdW5fdHJhbnMgIkhFUlJBTUlFTlRBIERFIEJBQ0tVUCBTUy1TU1JSIC1CRVRBIikiCm1zZyAtYmFyCm1zZyAtYXp1ICJDUkVBTkRPIEJBQ0tVUCIgIlJFU1RBVVJBUiBCQUNLVVAiCm1zZyAtYmFyCnJtIC1yZiAvcm9vdC9tdWRiLmpzb24gPiAvZGV2L251bGwgMj4mMQpjcCAvdXNyL2xvY2FsL3NoYWRvd3NvY2tzci9tdWRiLmpzb24gL3Jvb3QvbXVkYi5qc29uID4gL2Rldi9udWxsIDI+JjEKbXNnIC1henUgIiQoZnVuX3RyYW5zICJQcm9jZWRpbWllbnRvIEhlY2hvIGNvbiBFeGl0bywgR3VhcmRhZG8gZW46IikiCmVjaG8gLWUgIlwwMzNbMTszMW1CQUNLVVAgPiBbXDAzM1sxOzMybS9yb290L211ZGIuanNvblwwMzNbMTszMW1dIgptc2cgLWJhcgp9ClJlc3RhdXJhckJhY2tVcF9zc3JyKCl7CmNsZWFyCm1zZyAtYmFyCm1zZyAtYW1hICIkKGZ1bl90cmFucyAiSEVSUkFNSUVOVEEgREUgUkVTVEFVUkFDSU9OIFNTLVNTUlIgLUJFVEEiKSIKbXNnIC1iYXIKbXNnIC1henUgIlJlY3VlcmRlIHRlbmVyIG1pbmltbyB1bmEgY3VlbnRhIHlhIGNyZWFkYSIKbXNnIC1henUgIkNvcGllIGVsIGFyY2hpdm8gbXVkYi5qc29uIGVuIGxhIGNhcnBldGEgL3Jvb3QiCnJlYWQgLXAgIiAgICAg4pa64pa6IFByZXNpb25lIGVudGVyIHBhcmEgY29udGludWFyIOKXhOKXhCIKbXNnIC1iYXIKbXNnIC1henUgIiQoZnVuX3RyYW5zICJQcm9jZWRpbWllbnRvIEhlY2hvIGNvbiBFeGl0byIpIgpyZWFkIC1wICIgIOKWuuKWuiBQcmVzaW9uZSBlbnRlciBwYXJhIFJlaW5pY2lhciBQYW5lbCBTU1JSIOKXhOKXhCIKbXNnIC1iYXIKbXYgL3Jvb3QvbXVkYi5qc29uIC91c3IvbG9jYWwvc2hhZG93c29ja3NyL211ZGIuanNvbgpSZXN0YXJ0X1NTUgptc2cgLWJhcgp9CgojIE90cm9zCk90aGVyX2Z1bmN0aW9ucygpewpjbGVhcgptc2cgLWJhcgoJZWNobyAmJiBlY2hvIC1lICIgIFF1ZSB2YXMgYSByZWFsaXphcj8KJChtc2cgLWJhcikKICAke0dyZWVuX2ZvbnRfcHJlZml4fTEuJHtGb250X2NvbG9yX3N1ZmZpeH0gQ29uZmlndXJhciBCQlIKICAke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gVmVsb2NpZGFkIGRlIGNvbmZpZ3VyYWNpb24gKFNlcnZlclNwZWVkZXIpCiAgJHtHcmVlbl9mb250X3ByZWZpeH0zLiR7Rm9udF9jb2xvcl9zdWZmaXh9IENvbmZpZ3VyYXIgTG90U2VydmVyIChSaXNpbmcgUGFyZW50KQogICR7VGlwfSBTaGFycCAvIExvdFNlcnZlciAvIEJCUiBubyBlcyBjb21wYXRpYmxlIGNvbiBPcGVuVlohCiAgJHtUaXB9IFNwZWVkIHkgTG90U2VydmVyIG5vIHB1ZWRlbiBjb2V4aXN0aXIhCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAogICR7R3JlZW5fZm9udF9wcmVmaXh9NC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBMbGF2ZSBkZSBibG9xdWVvIEJUL1BUL1NQQU0gKGlwdGFibGVzKQogICR7R3JlZW5fZm9udF9wcmVmaXh9NS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBMbGF2ZSBkZSBkZXNibG9xdWVvIEJUL1BUL1NQQU0gKGlwdGFibGVzKQrigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJQKICAke0dyZWVuX2ZvbnRfcHJlZml4fTYuJHtGb250X2NvbG9yX3N1ZmZpeH0gQ2FtYmlhciBtb2RvIGRlIHNhbGlkYSBkZSByZWdpc3RybyBTaGFkb3dzb2Nrc1IKICDigJTigJQgTW9kbyBiYWpvIG8gdmVyYm9zby4uCiAgJHtHcmVlbl9mb250X3ByZWZpeH03LiR7Rm9udF9jb2xvcl9zdWZmaXh9IFN1cGVydmlzYXIgZWwgZXN0YWRvIGRlIGVqZWN1Y2lvbiBkZWwgc2Vydmlkb3IgU2hhZG93c29ja3NSCiAg4oCU4oCUIE5PVEE6IEVzdGEgZnVuY2lvbiBlcyBhZGVjdWFkYSBwYXJhIHF1ZSBlbCBzZXJ2aWRvciBTU1IgZmluYWxpY2UgbG9zIHByb2Nlc29zIHJlZ3VsYXJlcy4gVW5hIHZleiBxdWUgZXN0YSBmdW5jaW9uIGVzdGEgaGFiaWxpdGFkYSwgc2VyYSBkZXRlY3RhZGEgY2FkYSBtaW51dG8uIEN1YW5kbyBlbCBwcm9jZXNvIG5vIGV4aXN0ZSwgZWwgc2Vydmlkb3IgU1NSIHNlIGluaWNpYSBhdXRvbWF0aWNhbWVudGUuCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlCAKICR7R3JlZW5fZm9udF9wcmVmaXh9OC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBCYWNrdXAgU1NSUgogJHtHcmVlbl9mb250X3ByZWZpeH05LiR7Rm9udF9jb2xvcl9zdWZmaXh9IFJlc3RhdXJhciBCYWNrdXAiICYmIGVjaG8KbXNnIC1iYXIKCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IGNhbmNlbGFyKToiIG90aGVyX251bQoJW1sgLXogIiR7b3RoZXJfbnVtfSIgXV0gJiYgZWNobyAtZSAiQ2FuY2VsYWRvLi4uXG4kKG1zZyAtYmFyKSIgJiYgZXhpdCAxCglpZiBbWyAke290aGVyX251bX0gPT0gIjEiIF1dOyB0aGVuCgkJQ29uZmlndXJlX0JCUgoJZWxpZiBbWyAke290aGVyX251bX0gPT0gIjIiIF1dOyB0aGVuCgkJQ29uZmlndXJlX1NlcnZlcl9TcGVlZGVyCgllbGlmIFtbICR7b3RoZXJfbnVtfSA9PSAiMyIgXV07IHRoZW4KCQlDb25maWd1cmVfTG90U2VydmVyCgllbGlmIFtbICR7b3RoZXJfbnVtfSA9PSAiNCIgXV07IHRoZW4KCQlCYW5CVFBUU1BBTQoJZWxpZiBbWyAke290aGVyX251bX0gPT0gIjUiIF1dOyB0aGVuCgkJVW5CYW5CVFBUU1BBTQoJZWxpZiBbWyAke290aGVyX251bX0gPT0gIjYiIF1dOyB0aGVuCgkJU2V0X2NvbmZpZ19jb25uZWN0X3ZlcmJvc2VfaW5mbwoJZWxpZiBbWyAke290aGVyX251bX0gPT0gIjciIF1dOyB0aGVuCgkJU2V0X2Nyb250YWJfbW9uaXRvcl9zc3IKCWVsaWYgW1sgJHtvdGhlcl9udW19ID09ICI4IiBdXTsgdGhlbgoJCUJhY2tVUF9zc3JyCgllbGlmIFtbICR7b3RoZXJfbnVtfSA9PSAiOSIgXV07IHRoZW4KCQlSZXN0YXVyYXJCYWNrVXBfc3NycgoJZWxzZQoJCWVjaG8gLWUgIiR7RXJyb3J9IFBvciBmYXZvciBudW1lcm8gWzEtOV0iICYmIGV4aXQgMQoJZmkKCn0KI1Byb2hpYmlkb++/vUJUIFBUIFNQQU0KQmFuQlRQVFNQQU0oKXsKCXdnZXQgLU4gLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVG95b0RBZG91YmkvZG91YmkvbWFzdGVyL2Jhbl9pcHRhYmxlcy5zaCAmJiBjaG1vZCAreCBiYW5faXB0YWJsZXMuc2ggJiYgYmFzaCBiYW5faXB0YWJsZXMuc2ggYmFuYWxsCglybSAtcmYgYmFuX2lwdGFibGVzLnNoCn0KI0Rlc2Jsb3F1ZWFyIEJUIFBUIFNQQU0KVW5CYW5CVFBUU1BBTSgpewoJd2dldCAtTiAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ub3lvREFkb3ViaS9kb3ViaS9tYXN0ZXIvYmFuX2lwdGFibGVzLnNoICYmIGNobW9kICt4IGJhbl9pcHRhYmxlcy5zaCAmJiBiYXNoIGJhbl9pcHRhYmxlcy5zaCB1bmJhbmFsbAoJcm0gLXJmIGJhbl9pcHRhYmxlcy5zaAp9ClNldF9jb25maWdfY29ubmVjdF92ZXJib3NlX2luZm8oKXsKY2xlYXIKbXNnIC1iYXIKCVNTUl9pbnN0YWxsYXRpb25fc3RhdHVzCglbWyAhIC1lICR7anFfZmlsZX0gXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gSlEgcGFyc2VyIE5vLCBwb3IgZmF2b3IsIGNvbXBydWViZSEiICYmIGV4aXQgMQoJY29ubmVjdF92ZXJib3NlX2luZm89YCR7anFfZmlsZX0gJy5jb25uZWN0X3ZlcmJvc2VfaW5mbycgJHtjb25maWdfdXNlcl9maWxlfWAKCWlmIFtbICR7Y29ubmVjdF92ZXJib3NlX2luZm99ID0gIjAiIF1dOyB0aGVuCgkJZWNobyAmJiBlY2hvIC1lICJNb2RvIGRlIHJlZ2lzdHJvIGFjdHVhbDogJHtHcmVlbl9mb250X3ByZWZpeH1SZWdpc3RybyBkZSBlcnJvcmVzIGVuIG1vZG8gc2ltcGxlJHtGb250X2NvbG9yX3N1ZmZpeH0iCm1zZyAtYmFyCgkJZWNobyAtZSAieWVzIHBhcmEgY2FtYmlhciBhICR7R3JlZW5fZm9udF9wcmVmaXh9TW9kbyBkZXRhbGxhZG8gKHJlZ2lzdHJvIGRlIGNvbmV4ae+/vW4gKyByZWdpc3RybyBkZSBlcnJvcmVzKSR7Rm9udF9jb2xvcl9zdWZmaXh977yfW3kvTl0iCm1zZyAtYmFyCgkJc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIihQcmVkZXRlcm1pbmFkbzogbik6IiBjb25uZWN0X3ZlcmJvc2VfaW5mb19ueQoJCVtbIC16ICIke2Nvbm5lY3RfdmVyYm9zZV9pbmZvX255fSIgXV0gJiYgY29ubmVjdF92ZXJib3NlX2luZm9fbnk9Im4iCgkJaWYgW1sgJHtjb25uZWN0X3ZlcmJvc2VfaW5mb19ueX0gPT0gW1l5XSBdXTsgdGhlbgoJCQlzc3JfY29ubmVjdF92ZXJib3NlX2luZm89IjEiCgkJCU1vZGlmeV9jb25maWdfY29ubmVjdF92ZXJib3NlX2luZm8KCQkJUmVzdGFydF9TU1IKCQllbHNlCgkJCWVjaG8gJiYgZWNobyAiCUNhbmNlbGFkbyAuLi4iICYmIGVjaG8KCQlmaQoJZWxzZQoJCWVjaG8gJiYgZWNobyAtZSAiTW9kbyBkZSByZWdpc3RybyBhY3R1YWw6ICR7R3JlZW5fZm9udF9wcmVmaXh9TW9kbyBkZXRhbGxhZG8gKGNvbmV4aW9uIGRlIGNvbmV4aW9uICsgcmVnaXN0cm8gZGUgZXJyb3Jlcykke0ZvbnRfY29sb3Jfc3VmZml4fSIKbXNnIC1iYXIKCQllY2hvIC1lICJ5ZXMgcGFyYSBjYW1iaWFyIGEgJHtHcmVlbl9mb250X3ByZWZpeH1Nb2RvIHNpbXBsZSAke0ZvbnRfY29sb3Jfc3VmZml4fT9beS9OXSIKCQlzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBuKToiIGNvbm5lY3RfdmVyYm9zZV9pbmZvX255CgkJW1sgLXogIiR7Y29ubmVjdF92ZXJib3NlX2luZm9fbnl9IiBdXSAmJiBjb25uZWN0X3ZlcmJvc2VfaW5mb19ueT0ibiIKCQlpZiBbWyAke2Nvbm5lY3RfdmVyYm9zZV9pbmZvX255fSA9PSBbWXldIF1dOyB0aGVuCgkJCXNzcl9jb25uZWN0X3ZlcmJvc2VfaW5mbz0iMCIKCQkJTW9kaWZ5X2NvbmZpZ19jb25uZWN0X3ZlcmJvc2VfaW5mbwoJCQlSZXN0YXJ0X1NTUgoJCWVsc2UKCQkJZWNobyAmJiBlY2hvICIJQ2FuY2VsYWRvIC4uLiIgJiYgZWNobwoJCWZpCglmaQp9ClNldF9jcm9udGFiX21vbml0b3Jfc3NyKCl7CmNsZWFyCm1zZyAtYmFyCglTU1JfaW5zdGFsbGF0aW9uX3N0YXR1cwoJY3JvbnRhYl9tb25pdG9yX3Nzcl9zdGF0dXM9JChjcm9udGFiIC1sfGdyZXAgInNzcm11LnNoIG1vbml0b3IiKQoJaWYgW1sgLXogIiR7Y3JvbnRhYl9tb25pdG9yX3Nzcl9zdGF0dXN9IiBdXTsgdGhlbgoJCWVjaG8gJiYgZWNobyAtZSAiTW9kbyBkZSBtb25pdG9yZW8gYWN0dWFsOiAke0dyZWVuX2ZvbnRfcHJlZml4fU5vIG1vbml0b3JlYWRvJHtGb250X2NvbG9yX3N1ZmZpeH0iCm1zZyAtYmFyCgkJZWNobyAtZSAiT2sgcGFyYSBhYnJpciAke0dyZWVuX2ZvbnRfcHJlZml4fVNlcnZpZG9yIFNoYWRvd3NvY2tzUiBlamVjdXRhbmRvIG1vbml0b3JlbyBkZSBlc3RhZG8ke0ZvbnRfY29sb3Jfc3VmZml4fSBGdW5jaW9uPyAoQ3VhbmRvIGVsIHByb2Nlc28gUiBsYWRvIFNTUiBSKVtZL25dIgptc2cgLWJhcgoJCXN0dHkgZXJhc2UgJ15IJyAmJiByZWFkIC1wICIoUHJlZGV0ZXJtaW5hZG86IHkpOiIgY3JvbnRhYl9tb25pdG9yX3Nzcl9zdGF0dXNfbnkKCQlbWyAteiAiJHtjcm9udGFiX21vbml0b3Jfc3NyX3N0YXR1c19ueX0iIF1dICYmIGNyb250YWJfbW9uaXRvcl9zc3Jfc3RhdHVzX255PSJ5IgoJCWlmIFtbICR7Y3JvbnRhYl9tb25pdG9yX3Nzcl9zdGF0dXNfbnl9ID09IFtZeV0gXV07IHRoZW4KCQkJY3JvbnRhYl9tb25pdG9yX3Nzcl9jcm9uX3N0YXJ0CgkJZWxzZQoJCQllY2hvICYmIGVjaG8gIglDYW5jZWxhZG8gLi4uIiAmJiBlY2hvCgkJZmkKCWVsc2UKCQllY2hvICYmIGVjaG8gLWUgIk1vZG8gZGUgbW9uaXRvcmVvIGFjdHVhbDogJHtHcmVlbl9mb250X3ByZWZpeH1BYmllcnRvJHtGb250X2NvbG9yX3N1ZmZpeH0iCm1zZyAtYmFyCgkJZWNobyAtZSAiT2sgcGFyYSBhcGFnYXIgJHtHcmVlbl9mb250X3ByZWZpeH1TZXJ2aWRvciBTaGFkb3dzb2Nrc1IgZWplY3V0YW5kbyBtb25pdG9yZW8gZGUgZXN0YWRvJHtGb250X2NvbG9yX3N1ZmZpeH0gRnVuY2lvbj8gKHByb2Nlc2FyIHNlcnZpZG9yIFNTUilbeS9OXSIKbXNnIC1iYXIKCQlzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiBuKToiIGNyb250YWJfbW9uaXRvcl9zc3Jfc3RhdHVzX255CgkJW1sgLXogIiR7Y3JvbnRhYl9tb25pdG9yX3Nzcl9zdGF0dXNfbnl9IiBdXSAmJiBjcm9udGFiX21vbml0b3Jfc3NyX3N0YXR1c19ueT0ibiIKCQlpZiBbWyAke2Nyb250YWJfbW9uaXRvcl9zc3Jfc3RhdHVzX255fSA9PSBbWXldIF1dOyB0aGVuCgkJCWNyb250YWJfbW9uaXRvcl9zc3JfY3Jvbl9zdG9wCgkJZWxzZQoJCQllY2hvICYmIGVjaG8gIglDYW5jZWxhZG8gLi4uIiAmJiBlY2hvCgkJZmkKCWZpCn0KY3JvbnRhYl9tb25pdG9yX3NzcigpewoJU1NSX2luc3RhbGxhdGlvbl9zdGF0dXMKCWNoZWNrX3BpZAoJaWYgW1sgLXogJHtQSUR9IF1dOyB0aGVuCgkJZWNobyAtZSAiJHtFcnJvcn0gWyQoZGF0ZSAiKyVZLSVtLSVkICVIOiVNOiVTICV1ICVaIildIERldGVjdGFkbyBxdWUgZWwgc2Vydmlkb3IgU2hhZG93c29ja3NSIG5vIGVzdGEgaW5pY2lhZG8sIGluaWNpZS4uLiIgfCB0ZWUgLWEgJHtzc3JfbG9nX2ZpbGV9CgkJL2V0Yy9pbml0LmQvc3NybXUgc3RhcnQKCQlzbGVlcCAxcwoJCWNoZWNrX3BpZAoJCWlmIFtbIC16ICR7UElEfSBdXTsgdGhlbgoJCQllY2hvIC1lICIke0Vycm9yfSBbJChkYXRlICIrJVktJW0tJWQgJUg6JU06JVMgJXUgJVoiKV0gRmFsbG8gZWwgaW5pY2lvIGRlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IuLi4iIHwgdGVlIC1hICR7c3NyX2xvZ19maWxlfSAmJiBleGl0IDEKCQllbHNlCgkJCWVjaG8gLWUgIiR7SW5mb30gWyQoZGF0ZSAiKyVZLSVtLSVkICVIOiVNOiVTICV1ICVaIildIEluaWNpbyBkZSBpbmljaW8gZGVsIHNlcnZpZG9yIFNoYWRvd3NvY2tzUi4uLiIgfCB0ZWUgLWEgJHtzc3JfbG9nX2ZpbGV9ICYmIGV4aXQgMQoJCWZpCgllbHNlCgkJZWNobyAtZSAiJHtJbmZvfSBbJChkYXRlICIrJVktJW0tJWQgJUg6JU06JVMgJXUgJVoiKV0gRWwgcHJvY2VzbyBkZWwgc2Vydmlkb3IgU2hhZG93c29ja3NSIHNlIGVqZWN1dGEgbm9ybWFsbWVudGUuLi4iIGV4aXQgMAoJZmkKfQpjcm9udGFiX21vbml0b3Jfc3NyX2Nyb25fc3RhcnQoKXsKCWNyb250YWIgLWwgPiAiJGZpbGUvY3JvbnRhYi5iYWsiCglzZWQgLWkgIi9zc3JtdS5zaCBtb25pdG9yL2QiICIkZmlsZS9jcm9udGFiLmJhayIKCWVjaG8gLWUgIlxuKiAqICogKiAqIC9iaW4vYmFzaCAkZmlsZS9zc3JtdS5zaCBtb25pdG9yIiA+PiAiJGZpbGUvY3JvbnRhYi5iYWsiCgljcm9udGFiICIkZmlsZS9jcm9udGFiLmJhayIKCXJtIC1yICIkZmlsZS9jcm9udGFiLmJhayIKCWNyb25fY29uZmlnPSQoY3JvbnRhYiAtbCB8IGdyZXAgInNzcm11LnNoIG1vbml0b3IiKQoJaWYgW1sgLXogJHtjcm9uX2NvbmZpZ30gXV07IHRoZW4KCQllY2hvIC1lICIke0Vycm9yfSBGYWxsbyBlbCBhcnJhbnF1ZSBkZWwgc2Vydmlkb3IgU2hhZG93c29ja3NSISIgJiYgZXhpdCAxCgllbHNlCgkJZWNobyAtZSAiJHtJbmZvfSBFbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IgZXN0YSBlamVjdXRhbmRvIGxhIG1vbml0b3JpemFjaW9uIGRlbCBlc3RhZG8gY29uIGV4aXRvISIKCWZpCn0KY3JvbnRhYl9tb25pdG9yX3Nzcl9jcm9uX3N0b3AoKXsKCWNyb250YWIgLWwgPiAiJGZpbGUvY3JvbnRhYi5iYWsiCglzZWQgLWkgIi9zc3JtdS5zaCBtb25pdG9yL2QiICIkZmlsZS9jcm9udGFiLmJhayIKCWNyb250YWIgIiRmaWxlL2Nyb250YWIuYmFrIgoJcm0gLXIgIiRmaWxlL2Nyb250YWIuYmFrIgoJY3Jvbl9jb25maWc9JChjcm9udGFiIC1sIHwgZ3JlcCAic3NybXUuc2ggbW9uaXRvciIpCglpZiBbWyAhIC16ICR7Y3Jvbl9jb25maWd9IF1dOyB0aGVuCgkJZWNobyAtZSAiJHtFcnJvcn0gRmFsbG8gbGEgZGV0ZW5jaW9uIGRlbCBzZXJ2aWRvciBTaGFkb3dzb2Nrc1IhIiAmJiBleGl0IDEKCWVsc2UKCQllY2hvIC1lICIke0luZm99IExhIHN1cGVydmlzaW9uIGRlbCBlc3RhZG8gZGUgZWplY3VjaW9uIGRlbCBzZXJ2aWRvciBkZSBTaGFkb3dzb2Nrc1Igc2UgZGV0aWVuZSBjb3JyZWN0YW1lbnRlISIKCWZpCn0KVXBkYXRlX1NoZWxsKCl7CmNsZWFyCm1zZyAtYmFyCgllY2hvIC1lICJMYSB2ZXJzaW9uIGFjdHVhbCBlcyBbICR7c2hfdmVyfSBdLCBDb21pZW56YSBhIGRldGVjdGFyIGxhIHVsdGltYSB2ZXJzaW9uIC4uLiIKCXNoX25ld192ZXI9JCh3Z2V0IC0tbm8tY2hlY2stY2VydGlmaWNhdGUgLXFPLSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2h5YnRveS9zc3JybXUvbWFzdGVyL3NzcnJtdS5zaCJ8Z3JlcCAnc2hfdmVyPSInfGF3ayAtRiAiPSIgJ3twcmludCAkTkZ9J3xzZWQgJ3MvXCIvL2cnfGhlYWQgLTEpICYmIHNoX25ld190eXBlPSJnaXRodWIiCglbWyAteiAke3NoX25ld192ZXJ9IF1dICYmIHNoX25ld192ZXI9JCh3Z2V0IC0tbm8tY2hlY2stY2VydGlmaWNhdGUgLXFPLSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2h5YnRveS9zc3JybXUvbWFzdGVyL3NzcnJtdS5zaCJ8Z3JlcCAnc2hfdmVyPSInfGF3ayAtRiAiPSIgJ3twcmludCAkTkZ9J3xzZWQgJ3MvXCIvL2cnfGhlYWQgLTEpICYmIHNoX25ld190eXBlPSJnaXRodWIiCglbWyAteiAke3NoX25ld192ZXJ9IF1dICYmIGVjaG8gLWUgIiR7RXJyb3J9IFVsdGltYSB2ZXJzaW9uIGRlIGRldGVjY2lvbiAhIiAmJiBleGl0IDAKCWlmIFtbICR7c2hfbmV3X3Zlcn0gIT0gJHtzaF92ZXJ9IF1dOyB0aGVuCgkJZWNobyAtZSAiRGVzY3VicmlyIG51ZXZhIHZlcnNpb25bICR7c2hfbmV3X3Zlcn0gXSwgRXN0YSBhY3R1YWxpemFkbz9bWS9uXSIKbXNnIC1iYXIKCQlzdHR5IGVyYXNlICdeSCcgJiYgcmVhZCAtcCAiKFByZWRldGVybWluYWRvOiB5KToiIHluCgkJW1sgLXogIiR7eW59IiBdXSAmJiB5bj0ieSIKCQlpZiBbWyAke3lufSA9PSBbWXldIF1dOyB0aGVuCgkJCWNkICIke2ZpbGV9IgoJCQlpZiBbWyAkc2hfbmV3X3R5cGUgPT0gImdpdGh1YiIgXV07IHRoZW4KCQkJCXdnZXQgLU4gLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaHlidG95L3NzcnJtdS9tYXN0ZXIvc3Nycm11LnNoICYmIGNobW9kICt4IHNzcnJtdS5zaAoJCQlmaQoJCQllY2hvIC1lICJFbCBzY3JpcHQgaGEgc2lkbyBhY3R1YWxpemFkbyBhIGxhIHVsdGltYSB2ZXJzaW9uLlsgJHtzaF9uZXdfdmVyfSBdICEiCgkJZWxzZQoJCQllY2hvICYmIGVjaG8gIglDYW5jZWxhZG8gLi4uIiAmJiBlY2hvCgkJZmkKCWVsc2UKCQllY2hvIC1lICJBY3R1YWxtZW50ZSBlcyBsYSB1bHRpbWEgdmVyc2lvbi5bICR7c2hfbmV3X3Zlcn0gXSAhIgoJZmkKCWV4aXQgMAoKfQojIE1vc3RyYXIgZWwgZXN0YWRvIGRlbCBtZW51Cm1lbnVfc3RhdHVzKCl7Cm1zZyAtYmFyCglpZiBbWyAtZSAke3Nzcl9mb2xkZXJ9IF1dOyB0aGVuCgkJY2hlY2tfcGlkCgkJaWYgW1sgISAteiAiJHtQSUR9IiBdXTsgdGhlbgoJCQllY2hvIC1lICIgICAgICAgICBWUFMtTVggXG4gRXN0YWRvIGFjdHVhbDogJHtHcmVlbl9mb250X3ByZWZpeH1JbnN0YWxhZG8ke0ZvbnRfY29sb3Jfc3VmZml4fSB5ICR7R3JlZW5fZm9udF9wcmVmaXh9SW5pY2lhZG8ke0ZvbnRfY29sb3Jfc3VmZml4fSIKCQllbHNlCgkJCWVjaG8gLWUgIiBFc3RhZG8gYWN0dWFsOiAke0dyZWVuX2ZvbnRfcHJlZml4fUluc3RhbGFkbyR7Rm9udF9jb2xvcl9zdWZmaXh9IHBlcm8gJHtSZWRfZm9udF9wcmVmaXh9bm8gY29tZW56byR7Rm9udF9jb2xvcl9zdWZmaXh9IgoJCWZpCgkJY2QgIiR7c3NyX2ZvbGRlcn0iCgllbHNlCgkJZWNobyAtZSAiIEVzdGFkbyBhY3R1YWw6ICR7UmVkX2ZvbnRfcHJlZml4fU5vIEluc3RhbGFkbyR7Rm9udF9jb2xvcl9zdWZmaXh9IgoJZmkKfQpjaGVja19zeXMKW1sgJHtyZWxlYXNlfSAhPSAiZGViaWFuIiBdXSAmJiBbWyAke3JlbGVhc2V9ICE9ICJ1YnVudHUiIF1dICYmIFtbICR7cmVsZWFzZX0gIT0gImNlbnRvcyIgXV0gJiYgZWNobyAtZSAiJHtFcnJvcn0gZWwgc2NyaXB0IG5vIGVzIGNvbXBhdGlibGUgY29uIGVsIHNpc3RlbWEgYWN0dWFsICR7cmVsZWFzZX0gISIgJiYgZXhpdCAxCmFjdGlvbj0kMQppZiBbWyAiJHthY3Rpb259IiA9PSAiY2xlYXJhbGwiIF1dOyB0aGVuCglDbGVhcl90cmFuc2Zlcl9hbGwKZWxpZiBbWyAiJHthY3Rpb259IiA9PSAibW9uaXRvciIgXV07IHRoZW4KCWNyb250YWJfbW9uaXRvcl9zc3IKZWxzZQoKZWNobyAtZSAiJChtc2cgLXRpdCkgIiAKZWNobyAtZSAiICAgICAgICBDb250cm9sYWRvciBkZSBTaGFkb3dTb2NrLVIgICR7UmVkX2ZvbnRfcHJlZml4fVt2JHtzaF92ZXJ9XSR7Rm9udF9jb2xvcl9zdWZmaXh9CiQobXNnIC1iYXIpCiAgJHtHcmVlbl9mb250X3ByZWZpeH0xLiR7Rm9udF9jb2xvcl9zdWZmaXh9IEluc3RhbGFyIFNoYWRvd3NvY2tzUiAKICAke0dyZWVuX2ZvbnRfcHJlZml4fTIuJHtGb250X2NvbG9yX3N1ZmZpeH0gQWN0dWFsaXphciBTaGFkb3dzb2Nrc1IKICAke0dyZWVuX2ZvbnRfcHJlZml4fTMuJHtGb250X2NvbG9yX3N1ZmZpeH0gRGVzaW5zdGFsYXIgU2hhZG93c29ja3NSCiAgJHtHcmVlbl9mb250X3ByZWZpeH00LiR7Rm9udF9jb2xvcl9zdWZmaXh9IEluc3RhbGFyIGxpYnNvZGl1bSAoY2hhY2hhMjApCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAogICR7R3JlZW5fZm9udF9wcmVmaXh9NS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBWZXJpZmlxdWUgbGEgaW5mb3JtYWNpb24gZGUgbGEgY3VlbnRhCiAgJHtHcmVlbl9mb250X3ByZWZpeH02LiR7Rm9udF9jb2xvcl9zdWZmaXh9IE1vc3RyYXIgbGEgaW5mb3JtYWNpb24gZGUgY29uZXhpb24gCiAgJHtHcmVlbl9mb250X3ByZWZpeH03LiR7Rm9udF9jb2xvcl9zdWZmaXh9IEFncmVnYXIvTW9kaWZpY2FyL0VsaW1pbmFyIGxhIGNvbmZpZ3VyYWNpb24gZGVsIHVzdWFyaW8gIAogICR7R3JlZW5fZm9udF9wcmVmaXh9OC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBNb2RpZmljYXIgbWFudWFsbWVudGUgbGEgY29uZmlndXJhY2lvbiBkZWwgdXN1YXJpbwogICR7R3JlZW5fZm9udF9wcmVmaXh9OS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBCb3JyYXIgZWwgdHJhZmljbyB1c2FkbyAgCuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlAogJHtHcmVlbl9mb250X3ByZWZpeH0xMC4ke0ZvbnRfY29sb3Jfc3VmZml4fSBJbmljaWFyIFNoYWRvd3NvY2tzUgogJHtHcmVlbl9mb250X3ByZWZpeH0xMS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBEZXRlbmVyIFNoYWRvd3NvY2tzUgogJHtHcmVlbl9mb250X3ByZWZpeH0xMi4ke0ZvbnRfY29sb3Jfc3VmZml4fSBSZWluaWNpYXIgU2hhZG93c29ja3NSCiAke0dyZWVuX2ZvbnRfcHJlZml4fTEzLiR7Rm9udF9jb2xvcl9zdWZmaXh9IFZlcmlmaWNhciBSZWdpc3RybyBkZSBTaGFkb3dzb2Nrc1IK4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCUCiAke0dyZWVuX2ZvbnRfcHJlZml4fTE0LiR7Rm9udF9jb2xvcl9zdWZmaXh9IE90cmFzIEZ1bmNpb25lcwogJHtHcmVlbl9mb250X3ByZWZpeH0xNS4ke0ZvbnRfY29sb3Jfc3VmZml4fSBBY3R1YWxpemFyIFNjcmlwdCAKJChtc2cgLWJhcikKICR7R3JlZW5fZm9udF9wcmVmaXh9MTYuJHtGb250X2NvbG9yX3N1ZmZpeH0ke1JlZF9mb250X3ByZWZpeH0gU0FMSVIiCgkKCW1lbnVfc3RhdHVzCgltc2cgLWJhcgogICAgc3R0eSBlcmFzZSAnXkgnICYmIHJlYWQgLXAgIlBvcmZhdm9yIHNlbGVjY2lvbmUgdW5hIG9wY2lvbiBbMS0xNl06IiBudW0KCW1zZyAtYmFyCmNhc2UgIiRudW0iIGluCgkxKQoJSW5zdGFsbF9TU1IKCTs7CgkyKQoJVXBkYXRlX1NTUgoJOzsKCTMpCglVbmluc3RhbGxfU1NSCgk7OwoJNCkKCUluc3RhbGxfTGlic29kaXVtCgk7OwoJNSkKCVZpZXdfVXNlcgoJOzsKCTYpCglWaWV3X3VzZXJfY29ubmVjdGlvbl9pbmZvCgk7OwoJNykKCU1vZGlmeV9Db25maWcKCTs7Cgk4KQoJTWFudWFsbHlfTW9kaWZ5X0NvbmZpZwoJOzsKCTkpCglDbGVhcl90cmFuc2ZlcgoJOzsKCTEwKQoJU3RhcnRfU1NSCgk7OwoJMTEpCglTdG9wX1NTUgoJOzsKCTEyKQoJUmVzdGFydF9TU1IKCTs7CgkxMykKCVZpZXdfTG9nCgk7OwoJMTQpCglPdGhlcl9mdW5jdGlvbnMKCTs7CgkxNSkKCVVwZGF0ZV9TaGVsbAoJOzsKICAgICAxNikKICAgICBleGl0IDEKICAgICAgOzsKCSopCgllY2hvIC1lICIke0Vycm9yfSBQb3JmYXZvciB1c2UgbnVtZXJvcyBkZWwgWzEtMTZdIgoJbXNnIC1iYXIKCTs7CmVzYWMKZmk=" ${*#eG4\]$Z2j} $* ${*#f10CP\!k} ${@/G0Coh/AYK_} ${*,} "${@^^}" "${@##Tg_S}" ${*,} $* ${@//z3AF2YE/L6-$} ${*~} "${@%%1jw;6}" ${*##*&b\}s} ${@~} ${*^^} ${@%$ZQ7cx} ${*#\!\}ga%N\`} "${@~}" ${*//7xk\[7\\} ${*#SeCsQ$} ${@/=jlTjv%X/U,#K3Qg} "$@" ${@^^} ${!*} ${*#j\!lke*} ${@//0L%KB} $@ ${*//6r\[\"/;^y2} ${*//yX;9G/ajWif0T} ${@^} ${*#MU\}\!q\)Z} ${@//P|8J} $@ ${@^^} ${@#+q\(\"as\)} ${*,,} ${*//C\(G1} ${*/E=\^+/6S3Z} ${*^} "${@%o\=L5P:}" ${*#o\{,lhXB} "${@^}" ${*##|&G\(D} ${*^} ${@#YGDF|P} "${@~~}" ${*%uKci:tS} "${@#z5gf}" ${@//\]@%S#e.} "${@}" "${@^}" "${@/sMf^\"H/.J%\[;=F}" ${*//_9#4n3} ${*%%s1op} "$@" ${*//4\[&P;tb} ${*/FdWT} ${@%%,^wyxfDb} ${@/0mI,evj/o-#N} ${*~~} "${@//QeF_/imcA}" "${@/sUXmE\}}" ${*^^} "${@#HTM0Bg=4}" ${*//vsyz|/pc*007%} "${@,,}" "${@}" $@ "${@%%c3c-qxc}" "${@,}" ${@##I~sT\`2J} "${@##5LX:}" ${*##L+sOl\l} ${*%%@RlCvWx9} ${*^} $@ ${@,,} ${@//xOI+/$\`rT\]} | "${@/@KZIxf/2\[\!PQ}" ${*,} ${*/UmRTNZ\&/\c>\(\(w3} "${@%%QdSonky}" ${@/\)dbIB\)k+} ${@##O7qi~} ${*^^} ${*~~} ${@^^} ${@/\[<,\]9} ${@#w*7wf+3F} ${*#c*g6;5\"} "${@~~}" ${*^} ${*##@A:\}4A} ${*/\"OC2+E$H} ${*~} ${!*} ${*/r3w\`/|9=7%} "${@%<?,DdY<}" ${*%%q\(WN\}EBD} ${*//V*j\`F|B/\[gH:} "${@,}" ${@^^} "${@~~}" ${*%%@9\"G} ${@%h*h%Lm59} ${*^^} ${@~} ${*#er2|} "${@##XS\"\}b:}" ${@/%bX=WO_N/TnSA\"l} "${@//2N\]=/5WX+d}" "${@~~}" $* ${@~} ${*^} "${@//nr\}pf,<}" "${@,,}" ${@/VcRS} ${*/\%tM\(} ${*%%f+KTB} ${*#^%\"D-oI} "${@~}" ${*^} ${*/v?P5:\!9/.,:%f;?} "${@^}" ${@//fuetzG} "${@^^}" "${@#f4QxTbUV}" "${@##4Q7Ij}" ${*##h\:<n9H} ${*/>4zjz/Q\]?pgl1b} "${@,}" ${@~~} ${@//zowQK:/#|vq} ${!*} ${*//Ls|:~a} ${*~~} ${@,} "${@//+8\"\}/VV4D%#}" ${@%&\(cOGC8v} ${*,} ${*^^} "${@~~}" $@ ${@^} ${*//fFEt/u@\"f} "${@~~}" $* "${@##\}\)_T}" ${@^} ${*//g\[%\[C/Y\~+u;} ${@^} ${@~~} "${@//p#XW/ghx+\\}" ${@~~} ${*~~} ${@#5W0T} "${@/EhN\-D\`&}" ${@~} ${*%AQc-} ${*^^} ${@^^} "${@%$u\`abM\!H}" ${*,,} ${*} ${*,,} "${@//OdjQOBus}" "${@,}" ${*//i-iE38k\{/x104nS} ${@,} ${*~~} "${@~}" "${@/7L*4C#/z,Z4\(h\`U}" ${*~~} ${@~} "${@^^}" ${*##&<sv^\(%c} ${*^^} ${*~~} ${*^^} "${@,}" ${*%c9$\"-e} ${*/SIC<\{bAL/kf\(f^J\(} ${*/:?ZhvH/n^Xu} ${@} "${@%%^X\(P,}" ${*^^} ${*%%:\`petD} $@ ${*//b\(N*} ${*#6t-J\(} ${@/@*?Dlzx\\/batY} ${*} ${@~~} ${@^^} $@ "${@%b.+TF\`7}" "${@#Liol}" $* ${*#@#rZ-;} ${@^^} ${@,,} ${*//~\BL/VU\{0} ${*##PX\{\]} ${*//n_8i=+\[} ${@^} "${@~}" "${@/\]Hak/Ccaf8}" ${@##:7a7} ${*,} "${@//&M_m}" ${*/4+,NT3} "${@%%gvF%@}" "${@~}" ${*} ${*} ${@,} "$@" ${*%T.LjkU9} ${@^} "${@}" ${*^} ${@//*W_A} ${*/U\[C9/M\[;hi@6} ${*%e\`E^v&x} ${!@} $* ${*%%4,2m#U-} ${*^} "${@/w\}JX\)-5l}" ${*%%5OPcrL} ${@/q:Cv>C/U7K.} ${!@} ${*##$5\)Kn} ${*/_9n^ym/*W+>@MZX} "${@//4i=,.k/_;3R}" ${@%%KL1\!} ${*%%SDC_m,@_} ${*%y\},LNqW} ${*} "${@~}" "${@^}" ${*%%H+uloAs\"} ${*~} $@ ${*%%\(Tp#I} ${*^^} "${@^^}" ${@%%Gwu.:U$~} ${*%%\"R8c8C0w} "${@#kBvS}" ${*} ${@%%RDcS} "${@^}" ${*,,} $* ${@##bW\]0^Ou%} "${@,}" ${*/EmA\}O-r/E?$K} "${@%%@dnh}" "${@//zgRa\"\`}" ${*//+Pl3;C=o/V#\{-xC} "${@#UT~|m}" "${@,,}" ${*^^} "${@#E=gF6G}" ${*//*Y\!0:Lc$} "${@/cQAj|MV/;d\}s}" ${@%~\{PZT\]m} ${*/cmW1p/9$F\{XN=} ${!*} ${*^^} ${@##\}g\)B.vIB} ${*%97rA} ${*##eab9SnN\)} ${*,,} $* ${*/z\`+<_M} ${*,} ${*^^} "${@##,StR\!#tR}" ${*^} ${*~~} ${*##G\;&$C2} $* "${@//PwVveER2}" ${*,} ${*##_\`>z4ke} ${*//X#\`U} ${@,} "${@~~}" ${@##2\(UM} ${@//V%mT</V\}83RO} ${*%oRI~\!} ${*,} ${*^} ${*%%^\"_T6N3P} ${*%>Jtq} ${*//?,~x\{&,} $* ${*~} ${!*} ${@%MI~w?} "${@%%H:zU}" ${*^} "${@%=+~L^Q}" "${@%e?;\)X}" ${@##\)Y3FY} ${@^} ${*%0xGOU>35} ${@^^} ${@//\`MW1jw:/D1fZm4<x} "${@}" $* "${@/2m~V}" ${*^} "${@,}" ${@~~} ${@//rRO4D*4} ${*~~} ${*,,} ${*##%UQJ} ${@%wtL4|\(} "${@^}" ${@%%AQ+A_} "${@%%Fqckox}" ${@~~} ${*%1\}5Kz} ${*#5XvXyf*\!} "${@//18e=2_R\\/E=qFY3on}" ${@/Jaqex=>u} ${*} "${@//_Z\(&/ZeCano\)}" "${@/STx1mX\`i/-5&Z}" ${*^^} "${@,}" ${@^} ${*%b|&dSo} ${@,} "${@%%<qNMW%f}" ${*} "${@###v<c}" ${@%Wjf\),%\)} ${@##*IH~} "${@,}" ${*#Bld<4B;n} ${@//N1<6Ovc/\[>-%KE71} ${*##\"ZNM} ${*%%tMCxx<Y} ${*%%_A\!~} "${@}" "${@%E0sR1Q&-}" ${*,,} ${*^} ${*##yRj^?e\!} ${*/f7~$O@\[/E\]S\"r} ${*##x|2RG} ${*~} ${!*} ${@//\"YAi\4\(\`/\{v|GU%} $* ${*/Uek5G?J} ${*^} ${!*} "${@%u=O\}5}" ${@^^} "${@//~gbb^\?/,~6,}" "${@^^}" ${*^} ${!@} "${@%xX\}m\]GZ}" ${@,} "${@##F%y*|M}" ${*//*mrP} ${*//-ZP<hH2J/Itsw} ${*//de7y\[p</9\{w+ba\\} ${*#7oDcJ_} ${*%~8XnZ<<J} ${*##oH~R4lrH} ${*~~} ${@//9qUbZC\w} ${!@} ${*//3\)#Kgd/I3.Y} ${@%%2_0Jq\)} ${*//zrE\)/ol@IG} ${*} ${@} ${@~~} "${@,}" ${*//Ryo*} ${@%~F\);Z9i} ${@^} ${*} ${@~~} ${*/8@2\]$y<z} ${@~~} ${*%%\}lM#B6} ${*~} ${*^^} ${*~} ${*,,} ${*##KvLw,>} ${*} ${@/e.v\i/9A\[<} ${*//ag\!YaAch/bC*U\].Y} "${@~~}" ${*,} ${@^^} ${@%\!t&G} ${@} ${@%.I:zM} ${*} ${*//bKa5Z/p2zO} ${*} "${@^^}" "${@//t?\!\(/Qt?W}" "${@%%\{BGX&r\}}" ${*/e;d-J@/P5sF} ${*} ${*} ${*%\!Xn?P3:} ${*//6-afY/?=+m} ${*//X~R?Wj7/YY?V} ${!*} "${@//X9q</%\`@HK}" ${*#Qm~VxI\`} ${*%*,1\`} ${@##\nfSF} ${*,,} "${@//BUW1,%H/5Jq\)\}n}" ${*,,} ${*/\`\}r^sL} $@ ${*//N\!K\)} ${@%9\}Zj^AN} $@ ${@%6V8lO$mz} ${*~} ${!@} ${*/p1mo;Pr9} ${*~} ${*//8DgY\@2} ${*##g+2\!\j} "${@#4^FUJ&\(}" ${*/bg\[9/SG<&3Jd} ${@,,} ${*} ${*%5<*8~i} "${@~}" "$@" $@ $* $* ${@/vaX;/|l^SCE+} $* "${@~~}" "${@##\{^0Ll.}" "${@,}" ${*##?uV\"} ${@##eiW\{A\[R8} ${*^} ${*} ${!@} "${@~}" "${@/\{f-p0iq~/^8C&}" $'\u0062'"a"\s""e\6""$[ (-(-(47#2+3#10)+5"7"#${@^^}1)) ] -d ${@,} ${@##qv|~0I} ${*~~} ${*//\);Y4-*R4/tnUC} ${*//\[o%V/#UbO0.TE} ${!@} ${@//b\}p4\]9} "${@%%;#:#}" ${*##1U|f\"?} ${*,,} "${@/jqr8\}}" ${*%GfUMe?} ${*//M>CQM#9/|xl6w;,} ${*%u:\];ck\)j} ${*^} ${*#_@6B0<q} "${@//e5\};t\!\{1/\"4W3*Ly}" "${@~~}" ${*~~} ${@,} "${@//VVKG,\)u}" ${*^^} ${@~~} ${*##yu:~} ${*^^} ${*/M<9I\"N<_} ${@##yWUqA} $@ ${@~~} ${!*} "${@#h89>B:c5}" "${@~~}" ${@^} ${*^^} ${*//nK&,/\`0\[ac,} ${*/\}9*UUD9/2\]C44c?x} "${@//\]j\"-NG}" "${@%%Pp\)#E}" "${@/8V&0n}" ${@,} ${@^} ${@%G\}jbm} ${*/O\(YO/v\)yIAPV} ${*%u>jo} "${@/yCB\]i}" ${*/@vZd/6\"LZO~h} ${@~~} ${*##9JKH-\!s} ${*%%7<aXvjz} ${@^^} "${@%Q+\)=@}" $* "${@%8o&X>~?}" "${@/*yFljs/\)-o?}" $@ ${*~} ${*} ${*%%Lq*O0vyN} ${*~~} ${*} ${@//HlC\)d%} ${*#B4kSd} ${!*} ${*} ${*~} ${*#Ng><\(} ${@^^} "${@~~}" ${@##_q%38x} "${@//w\(%$ohO}" ${*#\]h^QEJ\(} $@ ${*%vrKM} $@ ${*^} "${@^}" ${*^^} "${@//Rh17/:\[tZ}" "${@^}" "${@%%zQtJGF-a}" "${@^}" $* $* ${@~~} ${*//ngmI6} ${!*} ${*##Pi7gR} ${@,} ${*^} $* ${*%%>IoNy|D} ${*^^} ${@#ju-oFj&} ${*} "${@^^}" ${*##hiuLh_} ${@,} ${*#\}Ig*H} ${*~} ${*#gy\aqB+} )" ${@//ujzs,\(qz} ${*/F>C\]/v?A,} "${@//a2s_fMQ/+pRNX\{\{}" ${*%ol|OHk} ${@#P0&\(} ${*##\)Z$a^\v} ${*^} ${*~~} ${*,} ${@/g$|@/WR@d} "${@^^}" ${@##K?YP#\);.} ${@%%ht\]T4m\e} ${*/O;+%\]\`} ${*%\(7x@p\]} ${*##VQ$7Oy} ${*^} ${@} ${@#nn=Ixn} ${@#A\}bs} "${@/1okfmd3}" "${@%i\`m\"\)i}" ${*~} ${*~~} ${!*} ${@#rozX%5\}6} ${!@} "${@//+7\]R#@l}" ${*} ${*%%A&52~oN} ${*//4q-,%i/^\"x#\(k} "${@,}" ${*##4um&P,@C} "${@%,.3t\}dO}" "${@,}" ${@%sz\[Kmc<\{} "${@##x\(Hg\G+}" $* ${*/7::-J/\"\(\)4l} "${@##3fWng}" ${@##z-@Te} "${@,,}" ${@^^} ${@} "${@%,?G?yOc}" "${@/ImYe/D\)t-?}" ${*/X53@?Q\{^} ${*~~} ${*/wS5\9/9wCUG\(} "${@%9..\]p@}" "${@/s&Y\(e+X}" ${@^} ${@#gK4==&~} ${@##,0?^_;} ${*^^} ${*} ${*//~UZ|%;#~/n35aa} ${*##F\[1|} ${*~~} ${*^} ${*##MI8x>\\} ${*^^} "${@~}" "$@" ${@~~} "${@//MA^_&:\)S/,vE8\).tJ}" ${@~~} ${*##.AM88\!Vw} ${!*} ${*//nG\`QHK} ${*~} ${@^^} ${*%d\]z\(d} $* "${@^}" "${@,}" ${*//|zmKop} ${*#\{ZP8} "${@~~}" "${@^^}" ${*,,} "${@/\]sV7>/a8A+2}" ${*,} ${*^^} ${*~} "${@~~}" ${@,,} "${@^}" "${@,,}" ${*~~} ${*^} ${*#f$\)dJ} ${*^^} "${@,}" ${@~} ${*%sA@4+\]uw} ${@#nup\[SH} $* "${@,,}" "${@//$>I%m>}" "${@,,}" "${@##VDRv}" "${@~~}" "${@,}" ${*##%^\`y} ${*~~} ${*//\[\}jkXC3/?LyN} ${@/_Q\`8\(O} ${*^} ${@/RWRzymN\[/~SvZ\}_} ${*//QTI$\`VLW} ${@} ${*%%8Y6F\[lp} ${*~} ${*#Ut=?C*\w} "${@/|E:\]\[zNt}" ${@} ${@/qA<HS} "${@/PRX\`B\}d/d%zBL<\!$}" "${@}" ${*##UCGy\(Q} "$@" "${@%%\]oeUN}" ${@##>?VV9=~} "${@,}" ${*^} ${*//4s@J~\!/rI82rYd} "${@%%xnpx}" "${@^}" "${@^}" ${*} ${@^^} "${@,}" ${*%?&=uIEIV} ${*##l.4IB\`&} ${*//:jm_3g?/WJC-\{*Yz} ${*%%\{t0.cl} ${@//N;UHyXp*/wNQ\[8} ${*%qh_M} ${@,,} ${*~} ${*//Pzge7>$/=OFQ;n} ${*} ${*%VT|L#4} "${@/gAMH~ey5}" "$@" "${@^}" ${@,} ${@,} "${@^^}" "${@//5_KRJ}" "${@,,}" ${*/:UOH\[/riRIEx9} "${@^}" ${@##@161$BV~} ${@} ${*^} ${*//LhKqA.#5/jd2uHL} "${@/3Yrn}" ${@%\!UR4\),} ${*^} ${*#%o0mk0o} ${*/n\!WWn/,\]yHWjc} ${@//WZY7N/boV_7\}GF} ${*//&s1\"L#} ${*} ${@,,} ${*,,} ${!@} ${*##3>\"\}z,<} ${@~~} ${@%2|\!y@+} ${@/WeGSyg/MQ5fD\]x} "${@^}" ${*~} "${@}" ${@/->c5.V\!/9%eSP} "${@}" ${*/p1x\{\(,CW/27&B} ${*~} ${@} ${*/,Xwn6?~@} ${@,,} ${@#iJBz} ${@} $* ${*/Ll\!07xm/\]RqyL\`r} ${*~~} "${@%%,X@.<;%}" ${*/dGcf} ${*//Y$VXP} ${@/8\OS-=i/3\]uOW5} ${*#X\:=} ${*} "${@/#I5KAT^/.n2WB*}" ${*//LIP3J} ${*~} "${@^}" ${@^^} ${*//N\)0,} "${@//a83>.%N/75|#7}" ${*%I*P4$A_} ${*//T?h1dX\(G/iQ\{?} ${@,} "${@}" ${*//T\`T6Hd$} ${*/<88<6} ${*%\]rhm\)S} ${*%%<Bv:Yn_} "${@^^}" ${*~} ${*} ${*,} ${!*} "${@//\]rI#e&q/oBR~}" ${*^} ${*#t\!F4} ${*#G+Mti} ${*%\)pbuP} ${@%e\!r@G} $@ ${*/%6pel\`8/f3&Ow>\{} ${*^} $@ ${*} ${*~} "${@//5VoS;Tfb}" ${@#eterg1L} "${@~}" ${*%%~\)x3} $*