PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iRVVDLUtSIj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImtvIiB4bWw6bGFuZz0ia28iPjxoZWFkPgo8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9RVVDLUtSIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+CjwhLS0KICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAgICAgICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZnJvbSB4bWwgc291cmNlOiBETyBOT1QgRURJVAogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgIC0tPgo8dGl0bGU+tNnB38OzuK4guPC14iAoTVBNKSAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9zdHlsZS9jc3MvcHJldHRpZnkuY3NzIiAvPgo8c2NyaXB0IHNyYz0iLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPrjwteI8L2E+IHwgPGEgaHJlZj0iLi9tb2QvZGlyZWN0aXZlcy5odG1sIj7B9r3Dvu616TwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+v+u+7jwvYT4gfCA8YSBocmVmPSIuL3NpdGVtYXAuaHRtbCI+u+fAzMauuMo8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi8iPlZlcnNpb24gMi40PC9hPjwvZGl2PjxkaXYgaWQ9InBhZ2UtY29udGVudCI+PGRpdiBpZD0icHJlYW1ibGUiPjxoMT602cHfw7O4riC48LXiIChNUE0pPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPrChtMnH0SC+8L7uOiA8L3NwYW4+PGEgaHJlZj0iLi9kZS9tcG0uaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZW4vbXBtLmh0bWwiIGhyZWZsYW5nPSJlbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2VzL21wbS5odG1sIiBocmVmbGFuZz0iZXMiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRXNwYSYjMjQxO29sIj4mbmJzcDtlcyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2ZyL21wbS5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbiYjMjMxO2FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9qYS9tcG0uaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2tvL21wbS5odG1sIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3RyL21wbS5odG1sIiBocmVmbGFuZz0idHIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iVCYjMjUyO3JrJiMyMzE7ZSI+Jm5ic3A7dHImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi96aC1jbi9tcG0uaHRtbCIgaHJlZmxhbmc9InpoLWNuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlNpbXBsaWZpZWQgQ2hpbmVzZSI+Jm5ic3A7emgtY24mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ib3V0b2ZkYXRlIj7AzCC5rryttMIgw9a9xcbHILn4v6rAzCC+xrTVtM+02S4KICAgICAgICAgICAgw9ax2b+hILqvsOa1yCCzu7/rwLogv7W+7iC5rrytuKYgwvyw7cfPvLy/5C48L2Rpdj4KCjxwPsDMILmuvK20wiC02cHfw7O4riC48LXiIChNdWx0aS1Qcm9jZXNzaW5nIE1vZHVsZSnAzCC5q775wMy45ywKvsbGxMShIMClvK259rChIMDMuKYgvu62u7DUILvnv+vHz7TCwfYgvLO47cfRtNkuPC9wPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48dWwgaWQ9InRvYyI+PGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNpbnRyb2R1Y3Rpb24iPrzSsLM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjaG9vc2luZyI+TVBNILyxxcPHz7HiPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZGVmYXVsdHMiPk1QTSCx4rq7sKo8L2E+PC9saT4KPC91bD48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImludHJvZHVjdGlvbiIgaWQ9ImludHJvZHVjdGlvbiI+vNKwszwvYT48L2gyPgoKICAgIDxwPr7GxsTEoSDApbytufa0wiC02b7nx9EgyK+w5sDHILTZvufH0SDHw7ehxvu/obytILW/wNvH0gogICAgvPYgwNa1tbfPILCtt8LHz7DtIMCvv6zHz7DUILyzsOi1x776tNkuILTZuKUgx8O3ocb7sPogtNm4pQogICAgyK+w5sC6ILq4xesgtNm4pSCx4rTJwLsgv+SxuMfPuOcsIL7utrIgseK0ycC7ILChwOUgyL/AssD7wLi3zgogICAgsbjH9sfPtMIguea5/cDMILTZuKYgvPYgwNa02S4gvsbGxMShtMIguPC14sittcggvLOw6LfOIMDMt7EKICAgILTZvufH0SDIr7Dmv6Egx9e78yDA+8DAx9i/1LTZLiCx17ehvK0gwKW4tr26xc20wiDExMbEwM+9wwogICAgyKTAuiC9x8fgvcMgvu62siC48LXiwLsgwNC+7rXpwM/B9iC8scXDx8+/qSC8rbn2v6EgxvfH1MfSCiAgICCx4rTJwLsgsOHBpMfSILz2IMDWtNkuPC9wPgoKICAgIDxwPkFwYWNoZSAyLjDAuiDAzLexILjwteLIrbXIILyzsOi4piDApbytufbAxyCwocDlILHiurvA+8DOCiAgICC6zrrQv6Gx7sH2IMiuwOXH37TZLiC8rbn2tMIgvcO9usXbwMcgs9fGrr/3IMb3xq6/oSC/rLDhx8+w7SwKICAgIL/kw7vAuyC53r7GtenAzLjnLCC53r7GtenAziC/5MO7wLsgw7O4rsfPseLAp8fYIMDavcS16b+hsNQKICAgILrQuejHz7TCILTZwd/Ds7iuILjwteIgKE11bHRpLVByb2Nlc3NpbmcgTW9kdWxlcywgTVBNcynAuwogICAgvLHFw8fSILz2IMDWtNkuPC9wPgoKICAgIDxwPrytufa4piDAzCDBpLW1t84guPC14sitx8+46SC1zrChwfYgwd+/5MfRIMDlwaHAzAogICAgwNa02To8L3A+CgogICAgPHVsPgogICAgICA8bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbXBtX3dpbm50Lmh0bWwiPm1wbV93aW5udDwvYT48L2NvZGU+sKEgQXBhY2hlIDEuM7+hvK0gu+e/68fRCiAgICAgIFBPU0lYw/4gtOu9xSDA2sO8ILPXxq6/9yCx4rTJwLsgu+e/68fSILz2IMDWtMIgte4sCiAgICAgIL7GxsTEobTCIL+pt68gtNm+58fRIL/uv7XDvMGmuKYgtPUgsfKy+8fPsO0gyL/AssD7wLi3zgogICAgICDB9r/4x9IgvPYgwNa02S4gwMwgwOXBocC6IMavyK21yCBNUE3AuyCxuMf2x9EgtNm4pQogICAgICC/7r+1w7zBpr+htbUgwPu/67XItNkuPC9saT4KCiAgICAgIDxsaT68rbn2tMIgxq/BpCC758DMxq7AxyC/5LG4wbawx7+hILT1IMavyK21ySC89iDA1rTZLgogICAgICC/ubimILXpvu4gs/TAuiDIrsDlsKG0yby6KHNjYWxhYmlsaXR5KcDMIMfKv+TH0SC758DMxq60wgogICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT6/zSCwsMC6IL6yt7m15SBNUE3AuyC757/rx8+w7SwKICAgICAgvsjBpLy6sPogv8C3obXIILzSx8HGrr/+vu6/zcDHIMijyK+8usDMIMfKv+TH0SC758DMxq60wgogICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9wcmVmb3JrLmh0bWwiPnByZWZvcms8L2E+PC9jb2RlPmluZyBNUE0gwLsgu+e/68fSILz2IMDWtNkuCiAgICAgIMPfsKG3ziC02bilILvnv+vA2r7GwMy18LfOIL+pt68gyKO9usauuKYgvK268b26x8+0wgogICAgICCwzSg8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9wZXJjaGlsZC5odG1sIj5wZXJjaGlsZDwvYT48L2NvZGU+KbD6ILCwwLogxq+6sMfRILHitMm1tQogICAgICDBprD4tci02S48L2xpPgogICAgPC91bD4KCiAgICA8cD6757/rwNqwoSC6uLHiv6EgTVBNwLogtNm4pSC+xsbExKEguPC14rD6ILDFwMcguvG9wcfYCiAgICC6uMDOtNkuIMHWtcggwvfAzLTCILytufa0wiDH0bn4v6Egv8DB9yDH0SBNUE24uMC7ILvnv+vH2L7fCiAgICDH0bTZtMIgwaHAzLTZLiC757/rsKG0ycfRIE1QTSC48bfPwLogPGEgaHJlZj0ibW9kLyI+uPC14gogICAguPG3zyDG5MDMwfY8L2E+v6EgwNa02S48L3A+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNob29zaW5nIiBpZD0iY2hvb3NpbmciPk1QTSC8scXDx8+x4jwvYT48L2gyPgoKICAgIDxwPk1QTXO0wiCxuLy6wd+/oSC8scXDx8+/qSC8rbn2v6EgxMTGxMDPtce+3yDH0bTZLgogICAgvrK3ubXluKYgu+e/68fPtMIgsM3AuyDExMbEwM+3r7ChIL7LuOkguLnAuiDH1Lz2uKYKICAgIMPWwPvIrcfSILz2IMDWtNkuIMCvtNC9ur+hvK0guO647iBNUE3AuiC+sre5teW4piC+srDtCiAgICCzqrjTwfa0wiC+xrTPuce3ziwgTVBNwMwgsbi8usHfv6EgvLHFw7XHvu4gvsbGxMShv6EKICAgIMTExsTAz7XJtqcgvsbGxMShtMIgtPUguvy4pSC807W1uKYgs7202S48L3A+CgogICAgPHA+v/jHz7TCIE1QTcC7ILyxxcPHz7fBuOkgLi9jb25maWd1cmUgvbrFqbizxq6/oQogICAgd2l0aC1tcG09IDxlbT5OQU1FPC9lbT4gvsax1LjVxq64piC757/rx8+28y4gPGVtPk5BTUU8L2VtPsC6CiAgICC/+MfPtMIgTVBNIMDMuKfAzLTZLjwvcD4KCiAgICA8cD68rbn2uKYgxMTGxMDPx9HIxCA8Y29kZT4uL2h0dHBkIC1sPC9jb2RlPiC47bfJvu63ziC8scXDx9EKICAgIE1QTcC7IL7LILz2IMDWtNkuICDAzCC47bfJvu60wiBNUE3AuyDG98fUx8+/qSC8rbn2v6EgxMTGxMDPtcgKICAgILjwtecguPC14sC7IL7Lt8HB2LTZLjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJkZWZhdWx0cyIgaWQ9ImRlZmF1bHRzIj5NUE0gseK6u7CqPC9hPjwvaDI+Cgo8cD602cC9IMeltMIgv6m3ryC/7r+1w7zBpsDHILHiursgTVBNwLsguri/qcHYtNkuIMTExsTAz73DCrTZuKOw1CC8scXDx8/B9iC+ysC4uOkgwMwgTVBNwMwgvLHFw7XItNkuPC9wPgoKPHRhYmxlPgoKPHRyPjx0ZD5CZU9TPC90ZD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvYmVvcy5odG1sIj5iZW9zPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGQ+TmV0d2FyZTwvdGQ+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGQ+T1MvMjwvdGQ+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21wbXRfb3MyLmh0bWwiPm1wbXRfb3MyPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGQ+wK+00L26PC90ZD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGQ+wKm1tb/swe48L3RkPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT48L3RkPjwvdHI+CjwvdGFibGU+CjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+sKG0ycfRIL7wvu46IDwvc3Bhbj48YSBocmVmPSIuL2RlL21wbS5odG1sIiBocmVmbGFuZz0iZGUiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRGV1dHNjaCI+Jm5ic3A7ZGUmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9lbi9tcG0uaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZXMvbXBtLmh0bWwiIGhyZWZsYW5nPSJlcyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFc3BhJiMyNDE7b2wiPiZuYnNwO2VzJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZnIvbXBtLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFuJiMyMzE7YWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2phL21wbS5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4va28vbXBtLmh0bWwiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vdHIvbXBtLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJUJiMyNTI7cmsmIzIzMTtlIj4mbmJzcDt0ciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3poLWNuL21wbS5odG1sIiBocmVmbGFuZz0iemgtY24iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iU2ltcGxpZmllZCBDaGluZXNlIj4mbmJzcDt6aC1jbiZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tcG0uaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4vbW9kLyI+uPC14jwvYT4gfCA8YSBocmVmPSIuL21vZC9kaXJlY3RpdmVzLmh0bWwiPsH2vcO+7rXpPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi9nbG9zc2FyeS5odG1sIj6/677uPC9hPiB8IDxhIGhyZWY9Ii4vc2l0ZW1hcC5odG1sIj6758DMxq64yjwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=