///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> Minneapolis Content
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czowOiIiO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6MDtzOjExOiJtZXRhQ29udGVudCI7TjtzOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjc6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjQ6Im5ld3MiO3M6NzoiU2VjdGlvbiI7czo0OiJuZXdzIjtzOjE2OiJPQVNRdWVyeUNhdGVnb3J5IjtzOjQ6Ik5ld3MiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6NjoiU2VhcmNoIjtzOjEwOiJwYWdlUGFyYW1zIjtzOjMxOiIKICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgIjtzOjc6Ik9yaWdVcmwiO3M6Mzg6Ii8yMDEyLTEyLTI2L2FydHMvdG9wLTEwLXBsYXlzLW9mLTIwMTIvIjtzOjM6IlVybCI7czo3ODoiL2Fkcy9mbGF0QWRzL2NsaWNrdG9wL2NsaWNrdG9wLy8vb3JpZ1VybDovMjAxMi0xMi0yNi9hcnRzL3RvcC0xMC1wbGF5cy1vZi0yMDEyIjt9fQ

Top

news

Stories

 
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo3OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czo0NDcwMjoiPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIHZhciBNVk5fUFVCID0gTVZOX1BVQiB8fCB7J2FjdGlvbic6J2FydGljbGUnLCAndXJsJzonaHR0cDovL3d3dy5jaXR5cGFnZXMuY29tLzIwMTItMTItMjYvYXJ0cy90b3AtMTAtcGxheXMtb2YtMjAxMi8nfTsNCiAgICB2YXIgTVZOX1NIT1dfV0VMQ09NRSA9IE1WTl9TSE9XX1dFTENPTUUgfHwgdHJ1ZTsNCiAgICBpZighd2luZG93LlJlY2FwdGNoYSl7DQogICAgICAgICQuZ2V0U2NyaXB0KCdodHRwOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS9qcy9yZWNhcHRjaGFfYWpheC5qcycpOw0KICAgIH0NCjwvc2NyaXB0Pg0KDQo8ZGl2IGNsYXNzPSdjb250ZW50dmlldyc+DQogPGRpdiBjbGFzcz0nc2hhcmVzJz4NCiA8dWwgY2xhc3M9IlNoYXJlX0J1dHRvbnMiPjxsaSBjbGFzcz0iRmFjZWJvb2tfTGlrZSI+PGRpdiBpZD0iZmItcm9vdCI+PC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKKGZ1bmN0aW9uKGQsIHMsIGlkKSB7DQogIHZhciBqcywgZmpzID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTsNCiAgaWYgKGQuZ2V0RWxlbWVudEJ5SWQoaWQpKSByZXR1cm47DQogIGpzID0gZC5jcmVhdGVFbGVtZW50KHMpOyBqcy5pZCA9IGlkOw0KICBqcy5zcmMgPSAiLy9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9hbGwuanMjeGZibWw9MSZhcHBJZD0yMDc5MTA2NzU4OTE2MDQiOw0KICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7DQogICAgfShkb2N1bWVudCwgJ3NjcmlwdCcsICdmYWNlYm9vay1qc3NkaycpKTsKLy9dXT4KPC9zY3JpcHQ+CjxkaXYgY2xhc3M9ImZiLWxpa2UiIGRhdGEtc2VuZD0idHJ1ZSIgZGF0YS1ocmVmPSJodHRwJTNBJTJGJTJGd3d3LmNpdHlwYWdlcy5jb20lMkYyMDEyLTEyLTI2JTJGYXJ0cyUyRnRvcC0xMC1wbGF5cy1vZi0yMDEyJTJGIiBkYXRhLWxheW91dD0iYnV0dG9uX2NvdW50IiBkYXRhLXdpZHRoPSIxNTAiIGRhdGEtc2hvdy1mYWNlcz0idHJ1ZSI+PC9kaXY+PC9saT4KPGxpIGNsYXNzPSJUd2l0dGVyIj48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3NoYXJlIiBjbGFzcz0idHdpdHRlci1zaGFyZS1idXR0b24iIGRhdGEtdGV4dD0iVG9wIDEwIHBsYXlzIG9mIDIwMTIiIGRhdGEtdXJsPSJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vMjAxMi0xMi0yNi9hcnRzL3RvcC0xMC1wbGF5cy1vZi0yMDEyLyIgZGF0YS12aWE9ImNpdHlwYWdlcyI+PC9hPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCiFmdW5jdGlvbihkLHMsaWQpe3ZhciBqcyxmanM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTtpZighZC5nZXRFbGVtZW50QnlJZChpZCkpe2pzPWQuY3JlYXRlRWxlbWVudChzKTtqcy5pZD1pZDtqcy5zcmM9Ii8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy5qcyI7ZmpzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpzLGZqcyk7fX0oZG9jdW1lbnQsInNjcmlwdCIsInR3aXR0ZXItd2pzIik7Ci8vXV0+Cjwvc2NyaXB0PjwvbGk+CjxsaSBjbGFzcz0iU3R1bWJsZV9VcG9uIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCihmdW5jdGlvbigpIHt2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgbGkudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOyBsaS5hc3luYyA9IHRydWU7DQogICAgbGkuc3JjID0gKCdodHRwczonID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3BsYXRmb3JtLnN0dW1ibGV1cG9uLmNvbS8xL3dpZGdldHMuanMnOw0KICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGxpLCBzKTsNCiAgfSkoKTsKLy9dXT4KPC9zY3JpcHQ+CjxzdTpiYWRnZSBsYXlvdXQ9IjEiPjwvc3U6YmFkZ2U+PC9saT4KPGxpIGNsYXNzPSJQb2NrZXQiPjxhIGRhdGEtcG9ja2V0LWxhYmVsPSJwb2NrZXQiIGRhdGEtc2F2ZS11cmw9Imh0dHAlM0ElMkYlMkZ3d3cuY2l0eXBhZ2VzLmNvbSUyRjIwMTItMTItMjYlMkZhcnRzJTJGdG9wLTEwLXBsYXlzLW9mLTIwMTIlMkYiIGRhdGEtcG9ja2V0LWNvdW50PSJob3Jpem9udGFsIiBjbGFzcz0icG9ja2V0LWJ0biIgZGF0YS1sYW5nPSJlbiI+PC9hPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IWZ1bmN0aW9uKGQsaSl7aWYoIWQuZ2V0RWxlbWVudEJ5SWQoaSkpe3ZhciBqPWQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ai5pZD1pO2ouc3JjPSJodHRwczovL3dpZGdldHMuZ2V0cG9ja2V0LmNvbS92MS9qL2J0bi5qcz92PTEiO3ZhciB3PWQuZ2V0RWxlbWVudEJ5SWQoaSk7ZC5ib2R5LmFwcGVuZENoaWxkKGopO319KGRvY3VtZW50LCJwb2NrZXQtYnRuLWpzIik7PC9zY3JpcHQ+PC9saT4KPGxpIGNsYXNzPSJHb29nbGVQbHVzIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCihmdW5jdGlvbigpIHsNCiAgICB2YXIgcG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcG8udHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOyBwby5hc3luYyA9IHRydWU7DQogICAgcG8uc3JjID0gJ2h0dHBzOi8vYXBpcy5nb29nbGUuY29tL2pzL3BsdXNvbmUuanMnOw0KICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHBvLCBzKTsNCiAgfSkoKTsKLy9dXT4KPC9zY3JpcHQ+CjxnOnBsdXNvbmUgc2l6ZT0ibWVkaXVtIiBocmVmPSJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vMjAxMi0xMi0yNi9hcnRzL3RvcC0xMC1wbGF5cy1vZi0yMDEyLyI+PC9nOnBsdXNvbmU+PC9saT48L3VsPjxkaXYgY2xhc3M9IkNsZWFySXQiPjwvZGl2PiA8L2Rpdj4NCiA8ZGl2IGNsYXNzPSdjb250ZW50X2hlYWQnPg0KICA8aDEgY2xhc3M9J2hlYWRsaW5lJz5Ub3AgMTAgcGxheXMgb2YgMjAxMjwvaDE+DQogIDxoMz5PdXIgY3JpdGljIGxvb2tzIGJhY2sgb24gYSBzdGVsbGFyIHllYXIgaW4gdGhlYXRlcjwvaDM+DQogIDxkaXYgY2xhc3M9J2J5bGluZSc+DQogICAgPHNwYW4gY2xhc3M9J3RleHRzaXplJyB0aXRsZT0nQ2xpY2sgdG8gcmVzaXplIHRleHQnPjxhIGNsYXNzPSdzbScgaHJlZj0namF2YXNjcmlwdDo7JyBpZD0ndGV4dF9zaXplX3NtJz5BPC9hPiAgPGEgY2xhc3M9J21lZCcgaHJlZj0namF2YXNjcmlwdDo7JyBpZD0ndGV4dF9zaXplX21lZCc+QTwvYT4gIDxhIGNsYXNzPSdsZycgaHJlZj0namF2YXNjcmlwdDo7JyBpZD0ndGV4dF9zaXplX2xnJz5BPC9hPjwvc3Bhbj4gDQogICAgPHNwYW4gY2xhc3M9ImNvbW1lbnRsaW5rIj4NCiAgICAgICAgPGEgaHJlZj0iI2xpdmVmeXJlIj5Db21tZW50czwvYT4NCiAgICAgICAgICAgICg8c3BhbiBjbGFzcz0ibGl2ZWZ5cmUtY29tbWVudGNvdW50IiBkYXRhLWxmdjMtY291bnRlcj0idHJ1ZSI+MDwvc3Bhbj4pDQogICAgPC9zcGFuPg0KICBCeSA8YSBocmVmPSIvYXV0aG9ycy9lZC1odXljayIgQ2xhc3M9ImF1dGhvciI+RWQgSHV5Y2s8L2E+IDxzcGFuIGNsYXNzPSdwdWJkYXRlJz5XZWRuZXNkYXksIERlYyAyNiAyMDEyPC9zcGFuPg0KICA8L2Rpdj4NCiA8L2Rpdj4NCjwhLS1nb29nbGVvbjogYWxsLS0+DQogICAgICAgICAgICA8bWV0YSBuYW1lPSJ3ZWJ0aXRsZSIgY29udGVudD0iVG9wIDEwIHBsYXlzIG9mIDIwMTIgLSBPdXIgY3JpdGljIGxvb2tzIGJhY2sgb24gYSBzdGVsbGFyIHllYXIgaW4gdGhlYXRlciI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJ3ZWJkZXNjcmlwdGlvbiIgY29udGVudD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iRWQgSHV5Y2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3JVUkwiIGNvbnRlbnQ9Ii9hdXRob3JzL2VkLWh1eWNrIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0idGh1bWJuYWlsIiBjb250ZW50PSJodHRwOi8vbWVkaWEuY2l0eXBhZ2VzLmNvbS84NDM4NDE4Ljk5LmpwZyI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJ0aHVtYnNyYyIgY29udGVudD0iYzRiYi84NDM4NDE4LnQuanBnIj4KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImhlYWRsaW5lIiBjb250ZW50PSJUb3AgMTAgcGxheXMgb2YgMjAxMiI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJzdWJoZWFkbGluZSIgY29udGVudD0iT3VyIGNyaXRpYyBsb29rcyBiYWNrIG9uIGEgc3RlbGxhciB5ZWFyIGluIHRoZWF0ZXIiPgogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iMjAxMi0xMi0yMSAxNjo1NToxNiI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJjb21tZW50cyIgY29udGVudD0iMCI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJzZWN0aW9uIiBjb250ZW50PSJBcnRzIj4KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImNhdGVnb3J5IiBjb250ZW50PSJUaGVhdGVyIj4KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9Im9iamlkIiBjb250ZW50PSIyNjc0NjE5Ij4KICAgIA0KIDxkaXYgY2xhc3M9J2NvbnRlbnRfYm9keSBzbSc+DQoKPHA+SSBzYXcgdG9vIG1hbnkgZ3JlYXQgc2hvd3MgdGhpcyB5ZWFyIGFuZCBoYXZlIHRvbyBsaXR0bGUgc3BhY2UgdG8gdGFsayBhYm91dCB0aGVtIGFsbC4gQnV0IGhlcmUgYXJlIG15IGZhdm9yaXRlIDEwIHByb2R1Y3Rpb25zIGZyb20gMjAxMi48L3A+CjxoMj4xMC4gVGhlIENyaXBwbGUgb2YgSW5pc2htYWFuPC9oMj4KPGRpdiBjbGFzcz0nY29udGVudF9pbnNlcnQgY2hpc2VsX3UnPg0KIDxkaXYgY2xhc3M9J2luc2VydF9waG90byc+DQogIDxhIGhyZWY9Ii9waG90b0dhbGxlcnkvaW5kZXgvMjY3NDYxOS8wIj48aW1nIHNyYz0iaHR0cDovL21lZGlhLmNpdHlwYWdlcy5jb20vdG9wLTEwLXBsYXlzLW9mLTIwMTIuODQzODQxOC40MC5qcGciIGNsYXNzPSJmcmFtZWQiIGFsdD0iTGF0dGUgRGEgYW5kIFUgb2YgTSBhY3RvcnMgYnJpbmcgYSBwdWxzYXRpbmcgZW5lcmd5IHRvIFNwcmluZyBBd2FrZW5pbmciIC8+PC9hPg0KICA8ZGl2IGNsYXNzPSdjcmVkJz5NaWNoYWwgRGFuaWVsPC9kaXY+DQogIDxkaXYgY2xhc3M9J2NhcCc+TGF0dGUgRGEgYW5kIFUgb2YgTSBhY3RvcnMgYnJpbmcgYSBwdWxzYXRpbmcgZW5lcmd5IHRvIDxpPlNwcmluZyBBd2FrZW5pbmc8L2k+PC9kaXY+DQogPC9kaXY+DQoNCg0KDQoNCg0KDQogICAgDQogICANCg0KDQoNCg0KDQogPGRpdiBjbGFzcz0nZGV0X3JlbCc+DQo8IS0tIFJlY2VudFJlbGF0ZWQgd2lkZ2V0IGhlcmUgLS0+CiAgICA8aDI+UmVsYXRlZCBDb250ZW50PC9oMj4KICA8ZGl2IGNsYXNzPSdkZWV0cyByZWxhdGVkJz4KICAgPHVsPgogICAgPGxpID48YSBocmVmPSJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vMjAxMy0wNi0wNS9tb3ZpZXMvbXVjaC1hZG8tYWJvdXQtam9zcy13aGVkb24vIj5NdWNoIGFkbyBhYm91dCBKb3NzIFdoZWRvbjwvYT48ZGl2IGNsYXNzPSdkYXRlJz5KdW5lIDUsIDIwMTM8L2Rpdj48L2xpPjxsaSA+PGEgaHJlZj0iaHR0cDovL3d3dy5jaXR5cGFnZXMuY29tLzIwMTMtMDUtMDEvY2FsZW5kYXIvcmVkLXN1cGVyLWhpZ2gtZmFzaGlvbi8iPlJFRDogW1N1cGVyXSBIaWdoIEZhc2hpb248L2E+PGRpdiBjbGFzcz0nZGF0ZSc+TWF5IDEsIDIwMTM8L2Rpdj48L2xpPjxsaSA+PGEgaHJlZj0iaHR0cDovL2Jsb2dzLmNpdHlwYWdlcy5jb20vZ2ltbWVub2lzZS8yMDEzLzA0L3JhZGlvaGVhZF9yb21lb19qdWxpZXQucGhwIj5SYWRpb2hlYWQncyAiRXhpdCBNdXNpYyAoRm9yIGEgRmlsbSkiIGFzIGEgPGVtPlJvbWVvIGFuZCBKdWxpZXQ8L2VtPiB0ZWFjaGluZyB0b29sPC9hPjxkaXYgY2xhc3M9J2RhdGUnPkFwcmlsIDIzLCAyMDEzPC9kaXY+PC9saT48bGkgPjxhIGhyZWY9Imh0dHA6Ly9ibG9ncy5jaXR5cGFnZXMuY29tL2Jsb3R0ZXIvMjAxMy8wMy90d2l0dGVyX2FjY291bnRzX3NvbGljaXRfYm9vYl9waWNzX2Zyb21fdW5pdmVyc2l0eV9vZl9taW5uZXNvdGFfc3R1ZGVudHNfcGhvdG9zLnBocCI+VHdpdHRlciBhY2NvdW50cyBzb2xpY2l0IGJvb2IgcGljcyBmcm9tIFVuaXZlcnNpdHkgb2YgTWlubmVzb3RhIHN0dWRlbnRzIFtQSE9UT1NdPC9hPjxkaXYgY2xhc3M9J2RhdGUnPk1hcmNoIDI1LCAyMDEzPC9kaXY+PC9saT48bGkgY2xhc3M9Imxhc3QiPjxhIGhyZWY9Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTEwLTE3L2NhbGVuZGFyL21lYXN1cmUtZm9yLW1lYXN1cmUvIj5NZWFzdXJlIGZvciBNZWFzdXJlPC9hPjxkaXYgY2xhc3M9J2RhdGUnPk9jdG9iZXIgMTcsIDIwMTI8L2Rpdj48L2xpPiAgIDwvdWw+CiAgPC9kaXY+CiAgCiAgICA8aDI+TW9yZSBBYm91dDwvaDI+CiAgPGRpdiBjbGFzcz0nZGVldHMgbW9yZWFib3V0Jz4KICAgPHVsPgogICAgPGxpPjxhIGhyZWY9Ii9yZWxhdGVkL3RvL01pY2hlbGxlK0hlbnNsZXkvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0mZ3Q7Q2xpY2t8a2V5d29yZFtNaWNoZWxsZStIZW5zbGV5XSI+TWljaGVsbGUgSGVuc2xleTwvYT48L2xpPjxsaT48YSBocmVmPSIvcmVsYXRlZC90by9DYXJseWxlK0Jyb3duLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tJmd0O0NsaWNrfGtleXdvcmRbQ2FybHlsZStCcm93bl0iPkNhcmx5bGUgQnJvd248L2E+PC9saT48bGk+PGEgaHJlZj0iL3JlbGF0ZWQvdG8vVW5pdmVyc2l0eStvZitNaW5uZXNvdGEvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0mZ3Q7Q2xpY2t8a2V5d29yZFtVbml2ZXJzaXR5K29mK01pbm5lc290YV0iPlVuaXZlcnNpdHkgb2YgTWlubmVzb3RhPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9yZWxhdGVkL3RvL0FydHMlMkMrRW50ZXJ0YWlubWVudCUyQythbmQrTWVkaWEvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0mZ3Q7Q2xpY2t8a2V5d29yZFtBcnRzJTJDK0VudGVydGFpbm1lbnQlMkMrYW5kK01lZGlhXSI+QXJ0cywgRW50ZXJ0YWlubWVudCwgYW5kIE1lZGlhPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9yZWxhdGVkL3RvL1RoZWF0ZXIvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0mZ3Q7Q2xpY2t8a2V5d29yZFtUaGVhdGVyXSI+VGhlYXRlcjwvYT48L2xpPiAgIDwvdWw+CiAgPC9kaXY+CiAgPCEtLSAvUmVjZW50UmVsYXRlZCB3aWRnZXQgaGVyZSAtLT4gIDwhLS0gTmV3c2xldHRlciBTaWdudXAgLS0+DQogIDxtdm46YXJ0aWNsZS1zaWdudXAgc2VjdGlvbj0iYXJ0cyIgdHlwZT0iZW1haWwiIHNpemU9InNtYWxsIj48L212bjphcnRpY2xlLXNpZ251cD4NCiA8L2Rpdj4NCjwvZGl2Pg0KPHA+PGk+TmltYnVzIFRoZWF0ZXI8L2k+PC9wPgo8cD5TZXQgYWxtb3N0IGVudGlyZWx5IG9uIGEgc21hbGwsIGlzb2xhdGVkIElyaXNoIGlzbGFuZCwgPGEgdGl0bGU9Ik1hcnRpbiBNY0RvbmFnaCIgaHJlZj0iL3JlbGF0ZWQvdG8vTWFydGluK01jRG9uYWdoLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbTWFydGluK01jRG9uYWdoXSIgPk1hcnRpbiBNY0RvbmFnaDwvYT4ncyBwbGF5IGRlbHZlcyBkZWVwIGludG8gdGhlIGRhcmtuZXNzIHRoYXQgbGllcyB3aXRoaW4gdGhlIHZpbGxhZ2UgYW5kIHRoZXNlIGNoYXJhY3RlcnMuIE5pbWJ1cydzIHByb2R1Y3Rpb24sIHVuZGVyIHRoZSBzb2xpZCBkaXJlY3Rpb24gb2YgPGEgdGl0bGU9IkthcmkgSGFtbWVyIiBocmVmPSIvcmVsYXRlZC90by9LYXJpK0hhbW1lci8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW0thcmkrSGFtbWVyXSIgPkthcmkgSGFtbWVyPC9hPiwgZGVmdGx5IGRhbmNlcyBhbW9uZyBhbGwgb2YgdGhlIGlzc3VlcyBhdCBwbGF5LCBicmluZ2luZyBvdXQgdGhlIGh1bW9yLCB0aGUgYW5nZXIsIGFuZCB0aGUgZGVlcC1zZWF0ZWQgbWFkbmVzcyB0aGF0IGNvbWVzIGZyb20gbGl2aW5nIGluIGlzb2xhdGlvbiB3aXRoIHRoZSBzYW1lIHBlb3BsZSwgZGF5IGFmdGVyIGRheSwgaW4gYSBraW5kIG9mIGZvZ2d5IHB1cmdhdG9yeS48L3A+CjxoMj45LiBCdXp6ZXI8L2gyPgo8cD48aT5QaWxsc2J1cnkgSG91c2UgVGhlYXRlcjwvaT48L3A+CjxwPkF1ZGllbmNlcyB3aG8gbWlzc2VkIHRoaXMgZmFudGFzdGljIG5ldyBwbGF5IGJ5IDxhIHRpdGxlPSJUcmFjZXkgU2NvdHQgV2lsc29uIiBocmVmPSIvcmVsYXRlZC90by9UcmFjZXkrU2NvdHQrV2lsc29uLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbVHJhY2V5K1Njb3R0K1dpbHNvbl0iID5UcmFjZXkgU2NvdHQgV2lsc29uPC9hPiB3aWxsIGdldCBhIHNlY29uZCBjaGFuY2UgdGhpcyB3aW50ZXIsIHdoZW4gaXQgaXMgcmVtb3VudGVkIGF0IHRoZSBHdXRocmllLiBUaGUgbmV3IHByb2R1Y3Rpb24gd2lsbCBmZWF0dXJlIHRoZSByZXR1cm4gb2YgZGlyZWN0b3IgPGEgdGl0bGU9Ik1hcmlhbiBNY0NsaW50b24iIGhyZWY9Ii9yZWxhdGVkL3RvL01hcmlhbitNY0NsaW50b24vIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtNYXJpYW4rTWNDbGludG9uXSIgPk1hcmlhbiBNY0NsaW50b248L2E+LCBhcyB3ZWxsIGFzIHRoZSBzYW1lIHRyaW8gb2YgYWN0b3JzLCB0byB0ZWxsIFdpbHNvbidzIGluc2lnaHRmdWwgbWVkaXRhdGlvbiBvbiByYWNlLCBnZW50cmlmaWNhdGlvbiwgYW5kIGdvaW5nIGhvbWUgYWdhaW4uPC9wPgo8aDI+OC4gV2VydGhlciBhbmQgTG90dGU6IFRoZSBQYXNzaW9uIGFuZCB0aGUgU29ycm93PC9oMj4KPHA+PGk+VGhlIDxhIHRpdGxlPSJNb3ZpbmcgQ29tcGFueSIgaHJlZj0iL3JlbGF0ZWQvdG8vTW92aW5nK0NvbXBhbnkvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtNb3ZpbmcrQ29tcGFueV0iID5Nb3ZpbmcgQ29tcGFueTwvYT48L2k+PC9wPgo8cD5UaGUgTW92aW5nIENvbXBhbnkgcHJvdmVkIHRoYXQgR29ldGhlIGFuZCB0aGUgYmx1ZXMgY291bGQgbWl4LiBUaGUgc2hvdywgY3JhZnRlZCBieSBhY3RvcnMgPGEgdGl0bGU9Ik5hdGhhbiBLZWVwZXJzIiBocmVmPSIvcmVsYXRlZC90by9OYXRoYW4rS2VlcGVycy8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW05hdGhhbitLZWVwZXJzXSIgPk5hdGhhbiBLZWVwZXJzPC9hPiBhbmQgPGEgdGl0bGU9IkNocmlzdGluYSBCYWxkd2luIiBocmVmPSIvcmVsYXRlZC90by9DaHJpc3RpbmErQmFsZHdpbi8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW0NocmlzdGluYStCYWxkd2luXSIgPkNocmlzdGluYSBCYWxkd2luPC9hPiB3aXRoIGRpcmVjdG9yIDxhIHRpdGxlPSJEb21pbmlxdWUgU2VycmFuZCIgaHJlZj0iL3JlbGF0ZWQvdG8vRG9taW5pcXVlK1NlcnJhbmQvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtEb21pbmlxdWUrU2VycmFuZF0iID5Eb21pbmlxdWUgU2VycmFuZDwvYT4sIHRha2VzIGl0cyBjdWVzIG5vdCBqdXN0IGZyb20gR29ldGhlJ3Mgb3JpZ2luYWwgc3RvcnkgYnV0IGFsc28gPGEgdGl0bGU9IlRob21hcyBNYW5uIiBocmVmPSIvcmVsYXRlZC90by9UaG9tYXMrTWFubi8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW1Rob21hcytNYW5uXSIgPlRob21hcyBNYW5uPC9hPidzIDIwdGgtY2VudHVyeSBleHBsb3JhdGlvbiBvZiB0aGUgbWF0ZXJpYWwuIFRoZSB1bmlxdWUgbWl4IG9mIHRhbGVudHMgY29tYmluZWQgcGVyZmVjdGx5LCByZWFjaGluZyBpdHMgcGlubmFjbGUgaW4gYSBzdHVubmluZyBwaWVjZSBjZW50ZXJlZCBvbiA8YSB0aXRsZT0iVG9tIFdhaXRzIiBocmVmPSIvcmVsYXRlZC90by9Ub20rV2FpdHMvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtUb20rV2FpdHNdIiA+VG9tIFdhaXRzPC9hPidzICJUaGUgQnJpYXIgYW5kIHRoZSBSb3NlLiI8L3A+CjxoMj43LiBUIEJvbmUgTiBXZWFzZWw8L2gyPgo8cD48aT5UaGVhdHJlIFBybyBSYXRhPC9pPjwvcD4KPHA+UHJvIFJhdGEgaGFkIGEgZ3JlYXQgMjAxMiBmcm9tIGVuZCB0byBlbmQsIGJ1dCA8YSB0aXRsZT0iSm9uIEtsZWluIiBocmVmPSIvcmVsYXRlZC90by9Kb24rS2xlaW4vIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtKb24rS2xlaW5dIiA+Sm9uIEtsZWluPC9hPidzIGFic3VyZCBhbmQgYnJ1dGFsIGNvbWVkeSAmbWRhc2g7IGEga2luZCBvZiA8aT48YSB0aXRsZT0iV2FpdGluZyBGb3IgR29kb3QiIGhyZWY9Ii9yZWxhdGVkL3RvL1dhaXRpbmcrRm9yK0dvZG90LyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbV2FpdGluZytGb3IrR29kb3RdIiA+V2FpdGluZyBmb3IgR29kb3Q8L2E+PC9pPiBmb3IgdGhlIG1vZGVybiBzdGFydmluZyBjbGFzcyAmbWRhc2g7IHdhcyBlYXNpbHkgdGhlIGJlc3Qgb2YgaXRzIHByb2R1Y3Rpb25zLiBMZWQgYnkgPGEgdGl0bGU9IlRoZW8gTGFuZ2Fzb24iIGhyZWY9Ii9yZWxhdGVkL3RvL1RoZW8rTGFuZ2Fzb24vIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtUaGVvK0xhbmdhc29uXSIgPlRoZW8gTGFuZ2Fzb248L2E+IGFuZCBNYXJrIEJlbnplbCBhcyB0aGUgdGl0bGUgY2hhcmFjdGVycywgdGhlIHNob3cgc3BlZCBhbG9uZyB0aGUgY3JhY2tlZCBoaWdod2F5cyBhbmQgYnJva2VuIGNvbW11bml0aWVzIG9mIHRoZSAyMXN0IGNlbnR1cnkuPC9wPgo8aDI+Ni4gSW50byB0aGUgV29vZHM8L2gyPgo8cD48aT5NdSBQZXJmb3JtaW5nIEFydHM8L2k+PC9wPgo8cD5SaWNrIFNoaW9taSBpcyBzdGVwcGluZyBhd2F5IGZyb20gdGhlIGNvbXBhbnkgdGhhdCBoZSBncmV3IGludG8gb25lIG9mIHRoZSBUd2luIENpdGllcycgYmVzdCwgYnV0IHRoZSAyMDEyIEl2ZXkgTGlmZXRpbWUgQWNoaWV2ZW1lbnQgQXdhcmQgd2lubmVyIGxlZnQgcXVpdGUgYSBwYXJ0aW5nIGdpZnQgZm9yIGF1ZGllbmNlcyB0aGlzIHN1bW1lci4gSW4gcmUtaW1hZ2luaW5nIHRoZSBtdXNpY2FsIGFib3V0IGZhaXJ5IHRhbGUgY2hhcmFjdGVycyBhbmQgd2hhdCBoYXBwZW5zICJldmVyIGFmdGVyIiBhcyBzZXQgaW4gQXNpYSwgU2hpb21pIGRyb3ZlIGhvbWUgdGhlIHVuaXZlcnNhbCBuYXR1cmUgb2YgdGhlc2UgdGFsZXMgYW5kIGNoYXJhY3RlcnMuPC9wPgo8aDI+NS4gVGhlIEJyb3RoZXJzIFNpemU8L2gyPgo8cD48aT5QaWxsc2J1cnkgSG91c2UgVGhlYXRlciBhbmQgTW91bnQgQ3VydmU8L2k+PC9wPgo8cD5MYXN0IHllYXIncyA8aT5JbiB0aGUgUmVkIGFuZCBCcm93biBXYXRlcjwvaT4gdG9wcGVkIG91ciAyMDExIGxpc3QuIFRoZSBzZWNvbmQgcGxheSBpbiA8YSB0aXRsZT0iVGFyZWxsIEFsdmluIE1jQ3JhbmV5IiBocmVmPSIvcmVsYXRlZC90by9UYXJlbGwrQWx2aW4rTWNDcmFuZXkvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtUYXJlbGwrQWx2aW4rTWNDcmFuZXldIiA+VGFyZWxsIEFsdmluIE1jQ3JhbmV5PC9hPidzICJCcm90aGVyL1Npc3RlciBQbGF5cyIgdHJpbG9neSBuZWFybHkgcmVhY2hlZCB0aG9zZSBzYW1lIGhlaWdodHMuIFNldCBpbiBwb29yLCBydXJhbCBMb3Vpc2lhbmEsIDxpPlRoZSBCcm90aGVycyBTaXplPC9pPiBleGFtaW5lZCB0aGUgYm9uZHMgb2YgYnJvdGhlcmhvb2QgYW5kIGZyaWVuZHNoaXAgdmlhIHRocmVlIGNoYXJhY3RlcnMuIE1jQ3JhbmV5J3MgcmljaCwgcG9ldGljIGxhbmd1YWdlIHNvdW5kZWQgbmF0dXJhbCBjb21pbmcgZnJvbSB0aGUgbW91dGhzIG9mIHRoZXNlIGFjdG9ycywgd2hpY2ggb25seSBzdHJlbmd0aGVuZWQgdGhlIGV4cGVyaWVuY2UuPC9wPgo8aDI+NC4gVGhlIEJpcnRoZGF5IFBhcnR5PC9oMj4KPHA+PGk+SnVuZ2xlIFRoZWF0ZXI8L2k+PC9wPgo8cD5JbiB0aGUgaGFuZHMgb2YgYSB0aG91Z2h0ZnVsIGRpcmVjdG9yIGFuZCBjYXBhYmxlIGNhc3QsIDxhIHRpdGxlPSJOb2JlbCBQcml6ZSIgaHJlZj0iL3JlbGF0ZWQvdG8vTm9iZWwrUHJpemUvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtOb2JlbCtQcml6ZV0iID5Ob2JlbCBQcml6ZTwvYT4gd2lubmVyIDxhIHRpdGxlPSJIYXJvbGQgUGludGVyIiBocmVmPSIvcmVsYXRlZC90by9IYXJvbGQrUGludGVyLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbSGFyb2xkK1BpbnRlcl0iID5IYXJvbGQgUGludGVyPC9hPidzIHdvcmsgY2FtZSB0byBzdHVubmluZywgZnVsbCBsaWZlLiBKb2VsIFNhc3MgZGlyZWN0ZWQgYSBicmlsbGlhbnQgY2FzdCBpbiB0aGlzIGVhcmx5IHBpZWNlIGxvYWRlZCB3aXRoIGJydXRhbCBodW1vciBhbmQgZXZlci1wcmVzZW50IGJ1dCB1bmRlZmluZWQgbWVuYWNlLiBBcyB0aGUgdGFyZ2V0LCA8YSB0aXRsZT0iU3RlcGhlbiBDYXJ0bWVsbCIgaHJlZj0iL3JlbGF0ZWQvdG8vU3RlcGhlbitDYXJ0bWVsbC8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW1N0ZXBoZW4rQ2FydG1lbGxdIiA+U3RlcGhlbiBDYXJ0bWVsbDwvYT4gd2FzIGZhbnRhc3RpYywgYnV0IHRoZSBlbnRpcmUgY29tcGFueSBkaWQgc3Ryb25nIHdvcmsgdGhyb3VnaG91dC48L3A+CjxoMj4zLiBBcmUgWW91IE5vdyBvciBIYXZlIFlvdSBFdmVyIEJlZW4uLi48L2gyPgo8cD48aT48YSB0aXRsZT0iQ2FybHlsZSBCcm93biIgaHJlZj0iL3JlbGF0ZWQvdG8vQ2FybHlsZStCcm93bi8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW0Nhcmx5bGUrQnJvd25dIiA+Q2FybHlsZSBCcm93bjwvYT4gJiBDb21wYW55L1RoZSA8YSB0aXRsZT0iR3V0aHJpZSBUaGVhdGVyIiBocmVmPSIvcmVsYXRlZC90by9HdXRocmllK1RoZWF0ZXIvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtHdXRocmllK1RoZWF0ZXJdIiA+R3V0aHJpZSBUaGVhdGVyPC9hPjwvaT48L3A+CjxwPjxhIHRpdGxlPSJHYXZpbiBMYXdyZW5jZSIgaHJlZj0iL3JlbGF0ZWQvdG8vR2F2aW4rTGF3cmVuY2UvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtHYXZpbitMYXdyZW5jZV0iID5HYXZpbiBMYXdyZW5jZTwvYT4gZ2l2ZXMgb25lIG9mIHRoZSB5ZWFyJ3Mgc3RhbmRvdXQgcGVyZm9ybWFuY2VzIGFzIDxhIHRpdGxlPSJMYW5nc3RvbiBIdWdoZXMiIGhyZWY9Ii9yZWxhdGVkL3RvL0xhbmdzdG9uK0h1Z2hlcy8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW0xhbmdzdG9uK0h1Z2hlc10iID5MYW5nc3RvbiBIdWdoZXM8L2E+IGluIENhcmx5bGUgQnJvd24ncyBleGFtaW5hdGlvbiBvZiB0aGUgcG9ldCwgZXNwZWNpYWxseSBoaXMgdGVzdGltb255IGJlZm9yZSA8YSB0aXRsZT0iSm9zZXBoIE1jQ2FydGh5IiBocmVmPSIvcmVsYXRlZC90by9Kb3NlcGgrTWNDYXJ0aHkvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtKb3NlcGgrTWNDYXJ0aHldIiA+Sm9zZXBoIE1jQ2FydGh5PC9hPidzIGFudGktY29tbXVuaXN0IHdpdGNoIGh1bnQuIFRoZSBzcGVjdGVyIG9mIHRoZSBibGFja2xpc3QgaGFuZ3Mgb3ZlciB0aGUgcGxheSBhbmQgbGVuZHMgaXQgZHJhbWEsIGJ1dCBpdCBpcyBIdWdoZXMncyBvd24gY3Jvc3MtZXhhbWluYXRpb24gb2YgaGlzIGFydCBhbmQgdGhlIGNyZWF0aW9uIG9mIHBvZXRyeSB0aGF0IGFsbG93ZWQgdGhlIHNob3cgdG8gcmVhY2ggc3VjaCBhbWF6aW5nIGhlaWdodHMuPC9wPgo8aDI+Mi4gTWVhc3VyZSBmb3IgTWVhc3VyZTwvaDI+CjxwPjxpPlRlbiBUaG91c2FuZCBUaGluZ3M8L2k+PC9wPgo8cD48YSB0aXRsZT0iTWljaGVsbGUgSGVuc2xleSIgaHJlZj0iL3JlbGF0ZWQvdG8vTWljaGVsbGUrSGVuc2xleS8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW01pY2hlbGxlK0hlbnNsZXldIiA+RGlyZWN0b3IgTWljaGVsbGUgSGVuc2xleTwvYT4gYW5kIDxhIHRpdGxlPSJXaWxsaWFtIFNoYWtlc3BlYXJlIiBocmVmPSIvcmVsYXRlZC90by9XaWxsaWFtK1NoYWtlc3BlYXJlLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbV2lsbGlhbStTaGFrZXNwZWFyZV0iID5TaGFrZXNwZWFyZTwvYT4gYXJlIG5vIHN0cmFuZ2VycyB0byB5ZWFyLWVuZCBiZXN0LW9mIGxpc3RzLiBUaGVyZSBhcmUgZ29vZCByZWFzb25zIGZvciB0aGF0LiBIZW5zbGV5J3MgZGlyZWN0aW5nIHN0eWxlIGFuZCB0aGUgaGFyZCB3b3JrIHB1dCBpbiBieSB0aGUgYWN0b3JzIGNyZWF0ZSBhIEJhcmQgdGhhdCBjYW4gYmUgdW5kZXJzdG9vZCBieSBhbnkgYXVkaWVuY2UsIGJ1dCBpdCBkb2Vzbid0IGNoZWFwZW4gdGhlIGltcGFjdCAmbWRhc2g7IHRoZSBodW1vciwgZHJhbWEsIG9yIGVtb3Rpb24gJm1kYXNoOyBvZiB0aGUgd3JpdGluZy4gVGhhdCBUZW4gVGhvdXNhbmQgVGhpbmdzIHdhcyBhYmxlIHRvIG1ha2Ugc3VjaCBhIGR5bmFtaWMgZXhwZXJpZW5jZSBvdXQgb2Ygb25lIG9mIFNoYWtlc3BlYXJlJ3MgcHJvYmxlbSBwbGF5cyBpcyBhbiBldmVuIHN0cm9uZ2VyIHRlc3RhbWVudCB0byBIZW5zbGV5J3MgdGFsZW50LjwvcD4KPGgyPjEuIFNwcmluZyBBd2FrZW5pbmc8L2gyPgo8cD48aT5UaGVhdHJlIExhdHRlIERhL1RoZSA8YSB0aXRsZT0iVW5pdmVyc2l0eSBvZiBNaW5uZXNvdGEiIGhyZWY9Ii9yZWxhdGVkL3RvL1VuaXZlcnNpdHkrb2YrTWlubmVzb3RhLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbVW5pdmVyc2l0eStvZitNaW5uZXNvdGFdIiA+VW5pdmVyc2l0eSBvZiBNaW5uZXNvdGE8L2E+PC9pPjwvcD4KPHA+QXQgaXRzIGhlYXJ0LCB0aGVhdGVyIGlzIGFib3V0IGNvbmZpcm1pbmcgbGlmZSBpbiB0aGUgZmFjZSBvZiB0aGUgZGVlcGVzdCwgZGFya2VzdCB0cm91Ymxlcy4gVGhlIHlvdW5nIGNoYXJhY3RlcnMgb2YgPGk+U3ByaW5nIEF3YWtlbmluZzwvaT4gZmFjZSBwcm9ibGVtcyBhdCBob21lLCBpbiBzY2hvb2wsIGFuZCB3aXRoIHRoZWlyIG93biBidXJnZW9uaW5nIHNleHVhbGl0eS4gWWV0IGl0IHdhcyBpbXBvc3NpYmxlIHRvIGRlbnkgdGhlIGxpdmluZyBlbmVyZ3kgdGhhdCBwdWxzYXRlZCBkdXJpbmcgdGhpcyBwcm9kdWN0aW9uLCBhcyB0aGUgY29tcGFueSdzIHlvdW5nIHBlcmZvcm1lcnMgJm1kYXNoOyBtYW55IHN0aWxsIFVuaXZlcnNpdHkgb2YgTWlubmVzb3RhIHN0dWRlbnRzICZtZGFzaDsgd2VyZSByZWFkeSB0byBidXJzdCBvdXQgb2YgdGhlIHN0YWdlLiA8YSB0aXRsZT0iUGV0ZXIgUm90aHN0ZWluIiBocmVmPSIvcmVsYXRlZC90by9QZXRlcitSb3Roc3RlaW4vIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtQZXRlcitSb3Roc3RlaW5dIiA+RGlyZWN0b3IgUGV0ZXIgUm90aHN0ZWluPC9hPiBhbmQgY2hvcmVvZ3JhcGhlciA8YSB0aXRsZT0iQ2FybCBGbGluayIgaHJlZj0iL3JlbGF0ZWQvdG8vQ2FybCtGbGluay8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW0NhcmwrRmxpbmtdIiA+Q2FybCBGbGluazwvYT4ga2VwdCBqdXN0IGVub3VnaCBjb250cm9sIG9mIHRoZSBjaGFvcyB0byBtYWtlIDxpPlNwcmluZyBBd2FrZW5pbmc8L2k+IGZlZWwgZXhhY3RseSBsaWtlIGFkb2xlc2NlbmNlLjwvcD4KPHA+PGk+VmlzaXQgPGEgaHJlZj0iaHR0cDovL2NpdHlwYWdlcy5jb20vIj5jaXR5cGFnZXMuY29tPC9hPiBmb3IgbW9yZSAyMDEyIHRoZWF0cmljYWwgZmF2b3JpdGVzLjwvaT48L3A+IDwvZGl2Pg0KDQoNCjwhLS1nb29nbGVvZmY6IGFsbC0tPg0KDQo8ZGl2IGNsYXNzPSdib3R0b21saW5rcyc+DQoNCiAgICAgICAgICAgIDxoMj5SZWxhdGVkIENvbnRlbnQ8L2gyPg0KICAgICAgICA8ZGl2IGNsYXNzPSJPVVRCUkFJTiIgZGF0YS1zcmM9Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTEyLTI2L2FydHMvdG9wLTEwLXBsYXlzLW9mLTIwMTIvIiBkYXRhLXdpZGdldC1pZD0iQVJfMiIgZGF0YS1vYi10ZW1wbGF0ZT0ibWluIj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGZWF0dXJlZEFkSW5kZXhBZCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjaGlzZWxfdSBBSWZlYXR1cmVkJz4NCiAgQ2hlY2sgb3V0IHRoaXMgd2VlaydzIGZlYXR1cmVkIGFkIGZvciBTZXJ2aWNlczwhLS0gbGluayB0byBhcHByb3ByaWF0ZSBhZCBpbmRleCBjYXRlZ29yeSAtLT4NCiAgPGRpdiBjbGFzcz0naW5uZXInPg0KICAgIDxkaXY+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0nL2FkSW5kZXgvLTgwNzgzLyc+PGltZyBjbGFzcz0nZnJhbWVkJyBzcmM9J2h0dHA6Ly9tZWRpYS5jaXR5cGFnZXMuY29tLzg4NTY0NTYuMTMuanBnJy8+PC9hPjwhLS0gbGluayB0byBhZCBpbmRleCBhZCwgaW1nIGRlZiAxMywgYWR2ZXJ0aXNlciBsb2dvIC0tPg0KICAgICAgICAgICAgPGg0PjxhIGhyZWY9Jy9hZEluZGV4Ly04MDc4My8nPk1jTmFsbHkgU21pdGggQ29sbGVnZSBvZiBNdXNpYzwvYT48L2g0PjwhLS0gbGluayB0byBhZCBpbmRleCBhZCAtLT4NCiAgICAgIDxoNT4NCiAgICAgICAgPGEgaHJlZj0nL2FkSW5kZXgvLTgwNzgzLzE5MzgyOTAvJz5WaWV3IEFkPC9hPjwhLS0gbGluayB0byBhZCBpbmRleCBhZCAtLT4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nIycgdmFsdWU9IjE5MzgyOTAiIGNsYXNzPSJ0cmFjayIgbmFtZT0idmlld3NpdGUiPlZpZXcgV2Vic2l0ZTwvYT48IS0tIGlmIGFwcGxpY2FibGUsIGxpbmsgdG8gZXh0ZXJuYWwgd2Vic2l0ZSAtLT4NCiAgICAgICAgICAgICAgPC9oNT4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQogIDxhIGNsYXNzPSdtb3JlJyBocmVmPSIvYWRJbmRleC8iPk1vcmUgQWRzID4+PC9hPjwhLS0gbGluayB0byBhZCBpbmRleCAtLT4NCjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8IS0tIE5ld3NsZXR0ZXIgU2lnbnVwIC0tPg0KICAgICAgICA8bXZuOmFydGljbGUtc2lnbnVwIHNlY3Rpb249ImFydHMiIHR5cGU9ImVtYWlsIiBzaXplPSJsYXJnZSI+PC9tdm46YXJ0aWNsZS1zaWdudXA+DQogICAgDQoNCg0KPCEtLSBOT0dTQSAtLT4NCjxkaXYgY2xhc3M9J2FydGljbGVsaW5rcycgaWQ9J2FydGljbGVsaW5rcyc+DQogICAgPHRhYmxlPg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+PGEgaHJlZj0nL2ZlZWRiYWNrL3NlbmRUb0ZyaWVuZC8/b2JqaWQ9MjY3NDYxOSc+PGltZyBzcmM9J2h0dHA6Ly9hc3NldHMuY2l0eXBhZ2VzLmNvbS9pbWcvY2xlYXI1LnBuZycgaWQ9J2ltZ19lbWFpbF90b19mcmllbmQnIC8+PGRpdj5FbWFpbDxici8+dG8gRnJpZW5kPC9kaXY+PC9hPjwvdGQ+Cjx0ZD48YSBocmVmPScvZmVlZGJhY2svRW1haWxBbkVtcGxveWVlLz9kZXBhcnRtZW50PWxldHRlcnMnPjxpbWcgc3JjPSdodHRwOi8vYXNzZXRzLmNpdHlwYWdlcy5jb20vaW1nL2NsZWFyNS5wbmcnIGlkPSdpbWdfd3JpdGUnIC8+PGRpdj5Xcml0ZSB0bzxici8+RWRpdG9yPC9kaXY+PC9hPjwvdGQ+Cjx0ZD48YSBocmVmPScvY29udGVudC9wcmludFZlcnNpb24vMjY3NDYxOScgcmVsPSdub2ZvbGxvdyc+PGltZyBzcmM9J2h0dHA6Ly9hc3NldHMuY2l0eXBhZ2VzLmNvbS9pbWcvY2xlYXI1LnBuZycgaWQ9J2ltZ19wcmludCcgLz48ZGl2PlByaW50PGJyLz5BcnRpY2xlPC9kaXY+PC9hPjwvdGQ+ICAgICAgICA8L3RyPg0KICAgIDwvdGFibGU+DQo8L2Rpdj4NCg0KIDwhLS0gL05PR1NBIC0tPjwhLS0gQmVTb2NpYWwgd2lkZ2V0IGhlcmUgLS0+DQo8IS0tIGFydGljbGVsaW5rcyBlbGVtZW50IGhlcmUgLS0+DQo8IS0tIHJlZGRpdCBidXR0b24gLS0+DQogICAgPGRpdiBjbGFzcz0icmVkZGl0LWNvbnRhaW5lciI+DQogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5yZWRkaXRfbmV3d2luZG93PScxJzwvc2NyaXB0Pg0KICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vd3d3LnJlZGRpdC5jb20vc3RhdGljL2J1dHRvbi9idXR0b24xLmpzIj48L3NjcmlwdD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSd0cmlwbGViYXInPiZuYnNwOzwvZGl2Pg0KPGEgbmFtZT0iQ29tbWVudHMiPjwvYT48YSBuYW1lPSJjb21tZW50cyI+PC9hPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL3pvci5saXZlZnlyZS5jb20vd2pzL3YzLjAvamF2YXNjcmlwdHMvbGl2ZWZ5cmUuanMiPjwvc2NyaXB0Pgo8ZGl2IGNsYXNzPSJsZkJveCB2MyI+CiAgICA8c3BhbiBjbGFzcz0ibGlua3MiPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXl2b2ljZW5hdGlvbi5jb20iPjxpbWcgc3JjPSJAQXNzZXRTZXJ2ZXJQcmVmaXhAL2ltZy9sb2dvLW12bi0xMDAucG5nIiBhbHQ9Ik15IFZvaWNlIE5hdGlvbiIvPjwvYT4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm15dm9pY2VuYXRpb24uY29tL2Fib3V0L2hlbHAvIj48aW1nIGNsYXNzPSJsZkhlbHAiIHNyYz0iQEFzc2V0U2VydmVyUHJlZml4QC9pbWcvY2xlYXI1LnBuZyIgYWx0PSJIZWxwIiB0aXRsZT0iSGVscCIvPjwvYT4KICAgIDwvc3Bhbj4KICAgIDxkaXYgaWQ9ImxpdmVmeXJlIj48c2NyaXB0PgogIChmdW5jdGlvbigpIHsKICAgIAogICB2YXIgYT10aGlzO3ZhciBiLGMsZCxlLGY7ZnVuY3Rpb24gZygpe3JldHVybiBhLm5hdmlnYXRvcj9hLm5hdmlnYXRvci51c2VyQWdlbnQ6bnVsbH1mPWU9ZD1jPWI9ITE7dmFyIGg7aWYoaD1nKCkpe3ZhciBpPWEubmF2aWdhdG9yO2I9MD09aC5pbmRleE9mKCJPcGVyYSIpO2M9IWImJi0xIT1oLmluZGV4T2YoIk1TSUUiKTtlPShkPSFiJiYtMSE9aC5pbmRleE9mKCJXZWJLaXQiKSkmJi0xIT1oLmluZGV4T2YoIk1vYmlsZSIpO2Y9IWImJiFkJiYiR2Vja28iPT1pLnByb2R1Y3R9dmFyIGo9YyxrPWYsbD1kLG09ZTt2YXIgbjtpZihiJiZhLm9wZXJhKXt2YXIgbz1hLm9wZXJhLnZlcnNpb247ImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8oKX1lbHNlIGs/bj0vcnZcOihbXlwpO10rKShcKXw7KS86aj9uPS9NU0lFXHMrKFteXCk7XSspKFwpfDspLzpsJiYobj0vV2ViS2l0XC8oXFMrKS8pLG4mJm4uZXhlYyhnKCkpO3ZhciBwPWRvY3VtZW50LHE9cC5jcmVhdGVFbGVtZW50KCJsaW5rIik7cS5yZWw9InN0eWxlc2hlZXQiO3EudHlwZT0idGV4dC9jc3MiO3EuaHJlZj0iaHR0cDovL3d3dy5saXZlZnlyZS5jb20vd2pzL3YzLjAvY3NzL2xpdmVmeXJlXyIrKG0/Im1vYmlsZSI6ImVtYmVkIikrIi5jc3MiO3EubWVkaWE9ImFsbCI7cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHEpO3ZhciByPSJoZWFkZXIgaGdyb3VwIGZvb3RlciBhcnRpY2xlIHNlY3Rpb24gYXNpZGUgbmF2IGZpZ3VyZSBmaWdjYXB0aW9uIGVtYmVkIGF1ZGlvIHZpZGVvIGNhbnZhcyBkZXRhaWxzIHN1bW1hcnkgdGltZSBtYXJrIi5zcGxpdCgiICIpLHM9cC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdDtmb3IodD0wOyB0PHIubGVuZ3RoOyB0Kyspe3MuYXBwZW5kQ2hpbGQocC5jcmVhdGVFbGVtZW50KHJbdF0pKX07CiAgIH0pKCk7ICAgIAo8L3NjcmlwdD4KPGRpdiBjbGFzcz0iZnlyZSBmeXJlLXdpZHRoLWxhcmdlIj4KICA8ZGl2IGNsYXNzPSJmeXJlLXdpZGdldCI+CiAgICA8ZGl2IGNsYXNzPSJmeXJlLXN0cmVhbS1zdGF0cyI+CiAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtY29tbWVudC1jb3VudCI+CiAgICAgICAgPHNwYW4+MCBjb21tZW50czwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJmeXJlLWRpdmlkZXIiPjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZnlyZS1oZWxwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmeXJlLWJveC13cmFwcGVyIj4KICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9saXZlZnlyZS5jb20iIHRhcmdldD0iX2JsYW5rIj48c3BhbiBjbGFzcz0iZnlyZS1sb2dvLWRyb3AiPiZuYnNwPC9zcGFuPgogICAgICAgICAgPGltZyBjbGFzcz0iZnlyZS1sb2dvLWhlbHAiIHNyYz0iaHR0cDovL3d3dy5saXZlZnlyZS5jb20vd2pzL3YzLjAvaW1hZ2VzL2xmLWxvZ28ucG5nIiBhbHQ9IkxpdmVmeXJlIiAvPjwvYT4KICAgICAgICAgIAogICAgICAgICAgPHVsIGNsYXNzPSJmeXJlLWJveC1saXN0Ij4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9saXZlZnlyZS5jb20iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iR2V0IExpdmVmeXJlIj5HZXQKICAgICAgICAgICAgTGl2ZWZ5cmU8L2E+PC9saT4KCiAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vc3VwcG9ydC5saXZlZnlyZS5jb20iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0KICAgICAgICAgICAgIkZBUSI+RkFRPC9hPjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZ5cmUtYXV0aCI+CiAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtbG9naW4tYmFyIj48YSByZWw9Im5vZm9sbG93IiBocmVmPSIjIiBjbGFzcz0iZnlyZS11c2VyLWxvZ2dlZG91dCI+U2lnbiBpbjwvYT48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZ5cmUtZWRpdG9yIj4KICAgICAgPGRpdiBjbGFzcz0iZnlyZS1lZGl0b3ItY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmeXJlLWVkaXRvci1lZGl0YWJsZSIgc3R5bGU9ImhlaWdodDogMTAwcHg7Ij48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZnlyZS1lZGl0b3ItdG9vbGJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLXRvb2xiYXIgZ29vZy10b29sYmFyLWhvcml6b250YWwiIHN0eWxlPQogICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiByb2xlPSJ0b29sYmFyIiBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQ9IiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLWxlZnQgZnlyZS1mb3JtYXQtYnV0dG9uIiB0aXRsZT0iIgogICAgICAgICAgICByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9IjowIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1sZWZ0LW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLWxlZnQtaW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdCBmeXJlLW1lbnRpb24tYnV0dG9uIiB0aXRsZT0iIgogICAgICAgICAgICByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9IjoxIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1sZWZ0LW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLWxlZnQtaW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdCBmeXJlLWZvbGxvdy1idXR0b24iIHRpdGxlPSIiCiAgICAgICAgICAgIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0iOjIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLWxlZnQtb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdC1pbm5lci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgKyBGb2xsb3cKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9CiAgICAgICAgICAgICJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodCBmeXJlLXBvc3QtYnV0dG9uIGZ5cmUtcG9zdC1idXR0b24tZW5hYmxlZCIKICAgICAgICAgICAgdGl0bGU9IiIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPSI6MyI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQtb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQtaW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIFBvc3QgY29tbWVudAogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0KICAgICAgICAgICAgImdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0IGZ5cmUtcG9zdC10byBmeXJlLXBvc3QtdG8tZmFjZWJvb2siCiAgICAgICAgICAgIHRpdGxlPSIiIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0iOjQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0LW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0LWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9CiAgICAgICAgICAgICJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodCBmeXJlLXBvc3QtdG8gZnlyZS1wb3N0LXRvLXR3aXR0ZXIiCiAgICAgICAgICAgIHRpdGxlPSIiIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0iOjUiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0LW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0LWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9CiAgICAgICAgICAgICJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodCBmeXJlLXBvc3QtdG8gZnlyZS1wb3N0LXRvLWxpbmtlZGluIgogICAgICAgICAgICB0aXRsZT0iIiByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9Ijo3Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodC1vdXRlci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodC1pbm5lci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLXRvb2xiYXItc2VwYXJhdG9yIGdvb2ctaW5saW5lLWJsb2NrIiBzdHlsZT0KICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiByb2xlPSJzZXBhcmF0b3IiIGlkPSI6NiI+CiAgICAgICAgICAgICAgJm5ic3A7CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0iZnlyZS1mb3JtYXQtdG9vbGJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy10b29sYmFyIGdvb2ctdG9vbGJhci1ob3Jpem9udGFsIiBzdHlsZT0KICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiByb2xlPSJ0b29sYmFyIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24iIHRpdGxlPSJCb2xkIgogICAgICAgICAgICAgIGFyaWEtcHJlc3NlZD0idHJ1ZSIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPQogICAgICAgICAgICAgICIrYm9sZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHItaWNvbiB0ci1ib2xkIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uIiB0aXRsZT0iSXRhbGljIgogICAgICAgICAgICAgIGFyaWEtcHJlc3NlZD0idHJ1ZSIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPQogICAgICAgICAgICAgICIraXRhbGljIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24tb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24taW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ci1pY29uIHRyLWl0YWxpYyIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbiIgdGl0bGU9IlVuZGVybGluZSIKICAgICAgICAgICAgICBhcmlhLXByZXNzZWQ9InRydWUiIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0KICAgICAgICAgICAgICAiK3VuZGVybGluZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHItaWNvbiB0ci11bmRlcmxpbmUiIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24iIHRpdGxlPQogICAgICAgICAgICAgICJBZGQgb3IgcmVtb3ZlIGxpbmsiIGFyaWEtcHJlc3NlZD0idHJ1ZSIgcm9sZT0iYnV0dG9uIiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPSIrbGluayI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHItbGluayIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICAgIExpbmsKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbiIgdGl0bGU9Ik51bWJlcmVkIGxpc3QiCiAgICAgICAgICAgICAgYXJpYS1wcmVzc2VkPSJ0cnVlIiByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9CiAgICAgICAgICAgICAgIitpbnNlcnRPcmRlcmVkTGlzdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHItaWNvbiB0ci1pbnNlcnRPcmRlcmVkTGlzdCIgc3R5bGU9CiAgICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbiIgdGl0bGU9IkJ1bGxldCBsaXN0IgogICAgICAgICAgICAgIGFyaWEtcHJlc3NlZD0idHJ1ZSIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPQogICAgICAgICAgICAgICIraW5zZXJ0VW5vcmRlcmVkTGlzdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uLWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHItaWNvbiB0ci1pbnNlcnRVbm9yZGVyZWRMaXN0IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZ5cmUtY29tbWVudC1zdHJlYW0iIHN0eWxlPSIiPgogICAgICA8ZGl2IGNsYXNzPSJmeXJlLXN0cmVhbS1zb3J0Ij4KICAgICAgICBTb3J0OiA8YSBjbGFzcz0iZnlyZS1zdHJlYW0tc29ydC1uZXdlc3QiPk5ld2VzdDwvYT4gfCA8YSBjbGFzcz0KICAgICAgICAiZnlyZS1zdHJlYW0tc29ydC1vbGRlc3QiPk9sZGVzdDwvYT4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJmeXJlLXN0cmVhbS1jb250ZW50Ij4gICAgICAKICAgICAgICAKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CjwvZGl2PgogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICBNVk4ub25SZWFkeShmdW5jdGlvbigkKXsKICAgICAgICAgICAgdmFyIExGX0NvbXBvbmVudCA9IGZ1bmN0aW9uKGNvbnRyb2xsZXIpewogICAgICAgICAgICAgICAgdmFyIG1lID0gdGhpczsKICAgICAgICAgICAgICAgIG1lLk1WTiA9IGNvbnRyb2xsZXI7CiAgICAgICAgICAgICAgICBtZS52ZXJzaW9uID0gJ0xpdmVGeXJlIGZvciBNVk4gMi4wJzsKICAgICAgICAgICAgICAgIG1lLmF1dG9Jbml0ID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgTEZfQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgIGNvb2tpZU5hbWU6ICdsaXZlZnlyZV90b2tlbicsCiAgICAgICAgICAgICAgICBhbm9uTmFtZTogJ01WTlthbm9uXScsCiAgICAgICAgICAgICAgICBhbm9uOiBudWxsLAogICAgICAgICAgICAgICAgbG9naW46IGZ1bmN0aW9uKG5ld1Rva2VuKXsKICAgICAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IG5ld1Rva2VufHxWVk0uZ2V0Q29va2llKG1lLmNvb2tpZU5hbWUpfHxmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZih0b2tlbil7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ5cmUuY29udi5sb2dpbih0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5jbGVhbih0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGUpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVlZNLmRlbENvb2tpZShtZS5jb29raWVOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFuZXdUb2tlbil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUubG9naW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICBNVk4ucXVldWUoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1lLk1WTi51c2VyfHxWVk0uZ2V0Q29va2llKG1lLmFub25OYW1lKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlZNLmRlYnVnLnAoJ1JlcXVlc3RpbmcgTmV3IFRva2VuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuTVZOLnNzby5nZXRMZlRva2VuKGZ1bmN0aW9uKG9iail7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG9iaiAmJiBvYmouc3RhdHVzID09ICdzdWNjZXNzJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uc2V0Q29va2llKG1lLmNvb2tpZU5hbWUsIG9iai50b2tlbi50b2tlbiwgZmFsc2UsICIvIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5sb2dpbihvYmoudG9rZW4udG9rZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBiaW5kczogZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGlmKCFtZS5hdXRoKXsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1dGggPSBuZXcgZnlyZS5jb252LlJlbW90ZUF1dGhEZWxlZ2F0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBhdXRoLmxvZ2luID0gZnVuY3Rpb24oaGFuZGxlQXMpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTVZOLnF1ZXVlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIW1lLk1WTi51c2VyKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuTVZOLm9tbmkuYWN0aW9uU3JjID0gJ2xmJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuTVZOLm9tbmkuYWN0aW9uKG1lLk1WTi5vbW5pLmJ1aWxkQWN0aW9uKCdsb2dpbicsIHtzaWQ6IG1lLmdldFNJRCgpfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVk4ucXVldWUoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1WTi5MRi5sb2dpbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFzLmZhaWx1cmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhdXRoLmxvZ291dCA9IGZ1bmN0aW9uKGhhbmRsZUFzKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1WTi5xdWV1ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1lLk1WTi51c2VyfHxWVk0uZ2V0Q29va2llKG1lLmFub25OYW1lKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWTS5kZWxDb29raWUobWUuY29va2llTmFtZSwgJy8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlZNLmRlbENvb2tpZShtZS5hbm9uTmFtZSwgJy8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuTVZOLm9tbmkuYWN0aW9uKCdsb2dvdXQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFzLnN1Y2Nlc3MoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhdXRoLnZpZXdQcm9maWxlID0gZnVuY3Rpb24oaGFuZGxlQXMsIGF1dGhvcil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighYXV0aG9yLmlkLm1hdGNoKC9eYW5vbl8vKSAmJiBhdXRob3IucHJvZmlsZVVybCAhPSAiIil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gYXV0aG9yLnByb2ZpbGVVcmw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXMuc3VjY2VzcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuY2xlYW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhdXRoLmVkaXRQcm9maWxlID0gZnVuY3Rpb24oaGFuZGxlQXMsIGF1dGhvcil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhdXRob3IuaWQubWF0Y2goL15hbm9uXy8pKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5jbGVhbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFzLmZhaWx1cmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vd3d3Lm15dm9pY2VuYXRpb24uY29tL3Byb2ZpbGUvc2V0dGluZ3MvIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBcy5zdWNjZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWUuYXV0aCA9IGF1dGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBtZS5hdXRoOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsZWFuOiBmdW5jdGlvbihjYWxsZWRBZnRlckxvZ2luLCBhdHRlbXB0KXsKICAgICAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIE1WTi5xdWV1ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBBTk9OCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhbGxlZEFmdGVyTG9naW4gfHwgbWUuYW5vbiA9PSBudWxsKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZ5cmUuY29udi51c2VyICYmIGZ5cmUuY29udi51c2VyLmlkKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5hbm9uID0gKGZ5cmUuY29udi51c2VyLmlkLm1hdGNoKC9eYW5vbl8vKSkgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZihjYWxsZWRBZnRlckxvZ2luKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0ID0gKGF0dGVtcHQpID8gYXR0ZW1wdCArIDEgOiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF0dGVtcHQgPiA1KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlZNLmRlYnVnLnAoJ0xGIExvZ2luIEZhaWxlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uZGVsQ29va2llKG1lLmNvb2tpZU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uZGVidWcucCgnTEYgTG9naW4gQ2hlY2sgQXR0ZW1wdDogJythdHRlbXB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXttZS5jbGVhbih0cnVlLCBhdHRlbXB0KX0sIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBBTk9OIENsZWFuIFVwCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1lLmFub24gPT0gdHJ1ZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdsaSA+IGFbdGl0bGU9IkVkaXQgUHJvZmlsZSJdJywgJy5meXJlLWJveC1saXN0JykucGFyZW50KCdsaScpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgQWNjb3VudCBCdXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFNVk4udXNlciAmJiAhVlZNLmdldENvb2tpZShNVk4uTEYuYW5vbk5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gJCgnZGl2LmZ5cmUtbG9naW4tYmFyJywgJyNsaXZlZnlyZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGVsLmxlbmd0aCAmJiAkZWwuY2hpbGRyZW4oKS5sZW5ndGggPT0gMSAmJiAhJCgnLmZ5cmUtdXNlci1sb2dnZWRpbicsICRlbCkubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWwuYXBwZW5kKCc8c3BhbiBjbGFzcz0iY3JlYXRlLW12bi1hY2NvdW50Ij4gb3IgPHNwYW4gY2xhc3M9ImxmcmVnIj5DcmVhdGUgQWNjb3VudDwvc3Bhbj48L3NwYW4+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggQ29tbWVudC9SZXBseQogICAgICAgICAgICAgICAgICAgICAgICAkKCcuZnlyZS1jb21tZW50LXdyYXBwZXInKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gJCgnLmZ5cmUtY29tbWVudC11c2VyW2RhdGEtYXV0aG9yLWlkXj0iYW5vbl8iXScsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGVsLmxlbmd0aCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29tbWVudCBBdmF0YXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdhJywgJGVsKS5yZXBsYWNlV2l0aCgkKCdhIGltZycsICRlbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3RpdGxlJywgJ0Fub255bW91cyBVc2VyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbW1lbnQgQXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsID0gJGVsLnBhcmVudCgpLmZpbmQoJ2hlYWRlciBhJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsLnJlcGxhY2VXaXRoKCQoJzxzcGFuLz4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2Fub25fdXNlcm5hbWUnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dCgkZWwudGV4dCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigndGl0bGUnLCAnQW5vbnltb3VzIFVzZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21tZW50IE1lbnRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdhLmZ5cmUtbWVudGlvbltyZXNvdXJjZV49ImFjY3Q6YW5vbl8iXScsIHRoaXMpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlcGxhY2VXaXRoKCQoJzxzcGFuLz4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2Fub25fdXNlcm5hbWUnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dCgnQCcgKyAkKCdzcGFuW3Byb3BlcnR5PSJuYW1lIl0nLCB0aGlzKS50ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCd0aXRsZScsICdBbm9ueW1vdXMgVXNlcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29tbWVudCBMaWtlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmZ5cmUtYXZhdGFyJywgdGhpcykuZmlsdGVyKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgkKCdpbWdbc3JjKj0iL2Fub24vIl0nLCB0aGlzKS5sZW5ndGgpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2EnLCB0aGlzKS5yZXBsYWNlV2l0aCgkKCdhIGltZycsIHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCd0aXRsZScsICdBbm9ueW1vdXMgVXNlcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maWx0ZXIoJ1tjbGFzcyo9ImZ5cmUtY29tbWVudC1hdXRob3ItdGFnLSJdJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsYXNzZXMgPSB0aGlzLmNsYXNzTmFtZS5zcGxpdCgnICcpLCB0YWdzLCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcyA9ICQodGhpcyksICRuYW1lID0gJHRoaXMuZmluZCgnLmZ5cmUtY29tbWVudC11c2VybmFtZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZS5uZXh0KCkuaXMoJy5meXJlLW1vZGVyYXRvcicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lLm5leHQoKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgY2xhc3Nlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3Nlc1tpXS5pbmRleE9mKCdmeXJlLWNvbW1lbnQtYXV0aG9yLXRhZy0nKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID0gY2xhc3Nlc1tpXS5zcGxpdCgnLScpLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2hhcy1tdm4tYmFkZ2UnKS5yZW1vdmVDbGFzcyhjbGFzc2VzW2ldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUuYWZ0ZXIoJzxpIGNsYXNzPSJtdm4tYmFkZ2UgJyt0YWcrJyI+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0U0lEOiBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgIHZhciBzcmNfZGVzYyA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5PQVNfcXVlcnlfY2F0ZWdvcnl8fGZhbHNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKE9BU19xdWVyeV9jYXRlZ29yeS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzLywnJykpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYXJ0cyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2Rlc2MgPSAxMDMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmlsbSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb3ZpZXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19kZXNjID0gMTAzNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZGVzYyA9IDEwMzU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZXdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZGVzYyA9IDEwMzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXN0YXVyYW50cyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkaW5pbmcnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vZCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2Rlc2MgPSAxMDM3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jlc3RvZic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2Rlc2MgPSAxMDM4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzh8NTN8JytzcmNfZGVzYzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIE1WTi5sb2FkKHsKICAgICAgICAgICAgICAgICdMRic6ewogICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogTEZfQ29tcG9uZW50LAogICAgICAgICAgICAgICAgICAgIHBhcmFtczoge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBwYWdlX3RpdGxlID0gJChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpKS5maW5kKCdtZXRhW3Byb3BlcnR5PSJvZzp0aXRsZSJdLCBtZXRhW25hbWU9IndlYnRpdGxlIl0nKS5hdHRyKCdjb250ZW50Jyk7CiAgICAgICAgICAgIGlmICghcGFnZV90aXRsZSkgewogICAgICAgICAgICAgICAgcGFnZV90aXRsZSA9ICQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RpdGxlJykpLnRleHQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB3aW5kb3cuY29udiA9IGZ5cmUuY29udi5sb2FkKHsKICAgICAgICAgICAgICAgIG5ldHdvcms6ICdteXZvaWNlbmF0aW9uLmZ5cmUuY28nLAogICAgICAgICAgICAgICAgYXV0aERlbGVnYXRlOiBNVk4uTEYuYmluZHMoKSwKICAgICAgICAgICAgICAgIHN0cmluZ3M6IHsKICAgICAgICAgICAgICAgICAgICBzaGFyZURlZmF1bHRUZXh0OiBwYWdlX3RpdGxlID8gIkNoZWNrIG91dCAlcydzIHBvc3Qgb24gXCIiICsgcGFnZV90aXRsZSArICJcIiEiIDogIkNoZWNrIG91dCAlcydzIHBvc3QhIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBbewogICAgICAgICAgICAgICAgJ2FydGljbGVJZCc6ICdMMk52Ym5SbGJuUXZkbWxsZHk4eU5qYzBOakU1JywKICAgICAgICAgICAgICAgICdjaGVja3N1bSc6ICdlZGFkMjVjYTc1NWY2MGU3YTFjODZjZTQ3MTNmYjQzNCcsCiAgICAgICAgICAgICAgICAnY29sbGVjdGlvbk1ldGEnOiAnZXlKMGVYQWlPaUpxZDNRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SjBhWFJzWlNJNklsUnZjQ0F4TUNCd2JHRjVjeUJ2WmlBeU1ERXlJaXdpZFhKc0lqb2lhSFIwY0RwY0wxd3ZkM2QzTG1OcGRIbHdZV2RsY3k1amIyMWNMekl3TVRJdE1USXRNalpjTDJGeWRITmNMM1J2Y0MweE1DMXdiR0Y1Y3kxdlppMHlNREV5WEM4aUxDSjBZV2R6SWpvaWJXbHVMR0Z5ZEdsamJHVXNibVYzY3l4dGFXNWZZWEowYVdOc1pTeHRhVzVmYm1WM2N5eGhjblJwWTJ4bFgyNWxkM01zYldsdVgyRnlkR2xqYkdWZmJtVjNjeUlzSW1Ob1pXTnJjM1Z0SWpvaVpXUmhaREkxWTJFM05UVm1OakJsTjJFeFl6ZzJZMlUwTnpFelptSTBNelFpTENKaGNuUnBZMnhsU1dRaU9pSk1NazUyWW01U2JHSnVVWFprYld4c1pIazRlVTVxWXpCT2FrVTFJbjAubUQzQkZSTU5XYkoyX0R4Z2RuWnVuWURsaGR1NEhfb255QjJnYjB2ci1TQScsCiAgICAgICAgICAgICAgICAnZWwnOiAnbGl2ZWZ5cmUnLAogICAgICAgICAgICAgICAgJ3NpdGVJZCc6ICczMDQ1MzInLAogICAgICAgICAgICAgICAgJ2F1dGhQYWdlUmVsb2FkJzogdHJ1ZQogICAgICAgICAgICB9XSwgZnVuY3Rpb24od2lkZ2V0KXsKICAgICAgICAgICAgICAgIE1WTi5MRi5sb2dpbigpOwogICAgICAgICAgICAgICAgd2lkZ2V0Lm9uKCdpbml0aWFsUmVuZGVyQ29tcGxldGUnLCBNVk4uTEYuY2xlYW4pOwogICAgICAgICAgICAgICAgd2lkZ2V0Lm9uKCdjb21tZW50UG9zdGVkJywgTVZOLkxGLmNsZWFuKTsKICAgICAgICAgICAgICAgIHdpZGdldC5vbignY29tbWVudEZsYWdnZWQnLCBNVk4uTEYuY2xlYW4pOwogICAgICAgICAgICAgICAgd2lkZ2V0Lm9uKCdjb21tZW50TGlrZWQnLCBNVk4uTEYuY2xlYW4pOwogICAgICAgICAgICAgICAgd2lkZ2V0Lm9uKCdjb21tZW50U2hhcmVkJywgTVZOLkxGLmNsZWFuKTsKICAgICAgICAgICAgICAgIHdpZGdldC5vbignY29tbWVudENvdW50VXBkYXRlZCcsIGZ1bmN0aW9uKGRhdGEpewogICAgICAgICAgICAgICAgICAgIE1WTi5MRi5jbGVhbigpOwogICAgICAgICAgICAgICAgICAgIE1WTi5xdWV1ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAkKCdbZGF0YS1sZnYzLWNvdW50ZXJdJykudGV4dChkYXRhKTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBNVk4uTEYuY2hhbmdlID0gZnVuY3Rpb24oY29udil7CiAgICAgICAgICAgICAgICAgICAgTVZOLnF1ZXVlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldC5jaGFuZ2VDb2xsZWN0aW9uKGNvbnYpOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBNVk4ucXVldWUoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBCdXR0b24KICAgICAgICAgICAgICAgICAgICAkKCcubGZyZWcnLCAnI2xpdmVmeXJlJykubGl2ZSgnY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICBpZighTVZOLnVzZXIpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1WTi5vbW5pLmFjdGlvblNyYyA9ICdsZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVk4ub21uaS5hY3Rpb24oTVZOLm9tbmkuYnVpbGRBY3Rpb24oJ2pvaW4nLCB7c2lkOiBNVk4uTEYuZ2V0U0lEKCl9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1WTi5MRi5sb2dpbigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgLy8gaGFjayBvdXIgaG92ZXJjYXJkcyBvbnRvIHRoZSBsaXZlZnlyZSB1c2VyIGltZ3MvbGlua3MKICAgICAgICAgICAgICAgICAgICB2YXIgZGVfbGl2ZV9nYXRlID0gZnVuY3Rpb24oJGVsLCBzZWwsIGV2LCBjYikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVsLmRlbGVnYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWwuZGVsZWdhdGUoc2VsLCBldiwgY2IpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRlbC5saXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWwuZmluZChzZWwpLmxpdmUoZXYsIGNiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZGVfbGl2ZV9nYXRlKCQoJyNsaXZlZnlyZScpLCAnLmZ5cmUtY29tbWVudC13cmFwcGVyJywgJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KCdtdm4taG92ZXJjYXJkLWVuJykpIHJldHVybjsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlciA9ICR0aGlzLmZpbmQoJy5meXJlLWNvbW1lbnQtdXNlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlkICAgPSAkdXNlci5kYXRhKCdhdXRob3ItaWQnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdWlkIHx8IHVpZC5pbmRleE9mKCdhbm9uXycpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdtdm4taG92ZXJjYXJkLWVuJywgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkdXNlci5hZGQoJHRoaXMuZmluZCgnLmZ5cmUtY29tbWVudC11c2VybmFtZVtocmVmXScpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtb21uaS11c2VyJywgdWlkLnNwbGl0KCdAJykuc2xpY2UoMCwxKS5qb2luKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgnb21uaS11c2VybmFtZScsICR1c2VyLmRhdGEoJ2Zyb20nKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCdvbW5pLXVzZXJwaG90bycsICR1c2VyLmZpbmQoJ2ltZycpLmF0dHIoJ3NyYycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmF0dHIoJ212bi1ob3ZlcmNhcmQtZW4nLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIE5vdGlmaWNhdGlvbiBXaW5kb3cKICAgICAgICAgICAgICAgICAgICB2YXIgc2V0Tm90aWZ5UG9zaXRpb24gPSBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAkKCcuZnlyZS1ub3RpZmllci1jb250YWluZXInKS5jc3MoJ3JpZ2h0JywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCQoJ2JvZHknKS53aWR0aCgpIC0gJCgnI2xpdmVmeXJlJykub2Zmc2V0KCkubGVmdCAtIHBhcnNlSW50KCQodGhpcykuY3NzKCd3aWR0aCcpLnJlcGxhY2UoJ3B4JywgJycpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNldE5vdGlmeVBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLmJpbmQoJ3Jlc2l6ZSBzY3JvbGwnLCBzZXROb3RpZnlQb3NpdGlvbik7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0PgogICAgPGRpdiBpZD0icG93ZXJlZF9ieV9saXZlZnlyZV9uZXciPjxhIGhyZWY9Imh0dHA6Ly9saXZlZnlyZS5jb20iIHRhcmdldD0iX2JsYW5rIj5Qb3dlcmVkIGJ5IExpdmVmeXJlPC9hPjwvZGl2Pgo8L2Rpdj4NCjxkaXYgY2xhc3M9J3RyaXBsZWJhcic+Jm5ic3A7PC9kaXY+DQoNCjwhLS0gUmVjZW50QXJ0aWNsZXNXaWRnZXQgLS0+DQogICAgPCEtLSAvUmVjZW50QWVydGljbGVzV2lkZ2V0IC0tPg0KDQoNCjwvZGl2Pg0KPGZvcm0gaWQ9IlRyYWNrZXJGb3JtIj4NCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvYmppZCIgdmFsdWU9IjI2NzQ2MTkiIC8+DQogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHlwZSIgdmFsdWU9InN0b3J5IiAvPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlbmRUb0ZyaWVuZCIgdmFsdWU9IjAiIC8+DQo8L2Zvcm0+DQoNCjxkaXYgY2xhc3M9Ik9VVEJSQUlOIiBkYXRhLXNyYz0iaHR0cDovL3d3dy5jaXR5cGFnZXMuY29tLzIwMTItMTItMjYvYXJ0cy90b3AtMTAtcGxheXMtb2YtMjAxMi8iIGRhdGEtd2lkZ2V0LWlkPSJGVF9OMiIgZGF0YS1vYi10ZW1wbGF0ZT0ibWluIj48L2Rpdj4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iYXN5bmMiIHNyYz0iaHR0cDovL3dpZGdldHMub3V0YnJhaW4uY29tL291dGJyYWluLmpzIj48L3NjcmlwdD4iO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6NDQ3MDI7czoxMToibWV0YUNvbnRlbnQiO2E6MTY6e3M6MTM6Im9nOmltYWdlX2xhc3QiO2E6MTp7aTowO3M6NDQ6Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS9pbWcvY2l0eWxvZ28tbGcucG5nIjt9czo4OiJrZXl3b3JkcyI7czoxOiIsIjtzOjc6Im9nOnR5cGUiO3M6NzoiYXJ0aWNsZSI7czo4OiJvZzppbWFnZSI7YToxOntpOjA7czozOToiaHR0cDovL21lZGlhLm5ld3RpbWVzLmNvbS84NDM4NDE4LjAuanBnIjt9czoxMToib2FzU2l0ZVBhZ2UiO3M6NToiL2FydHMiO3M6MTQ6ImFkSW5kZXhTZWN0aW9uIjtzOjQ6ImFydHMiO3M6NzoicHViZGF0ZSI7czoxOToiMjAxMi0xMi0yMSAxNjo1NToxNiI7czoxMzoiY2Fub25pY2FsTGluayI7czo0MzoiLzIwMTItMTItMjYvYXJ0cy90b3AtMTAtcGxheXMtb2YtMjAxMi9mdWxsLyI7czo2OiJvZzp1cmwiO3M6NjI6Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTEyLTI2L2FydHMvdG9wLTEwLXBsYXlzLW9mLTIwMTIvIjtzOjg6IndlYlRpdGxlIjtzOjYzOiJUb3AgMTAgcGxheXMgb2YgMjAxMiAtIFBhZ2UgMSAtIEFydHMgLSBAQ0lUWU5BTUVAIC0gQFBBUEVSTkFNRUAiO3M6ODoib2c6dGl0bGUiO3M6MjA6IlRvcCAxMCBwbGF5cyBvZiAyMDEyIjtzOjYzOiJUb3AgMTAgcGxheXMgb2YgMjAxMiAtIFBhZ2UgMSAtIEFydHMgLSBAQ0lUWU5BTUVAIC0gQFBBUEVSTkFNRUAiO3M6NDoidHJ1ZSI7czo2OiJtZWRpdW0iO3M6NDoibmV3cyI7czoxMToid2ViU3ViVGl0bGUiO3M6NDoiQXJ0cyI7czoxMToiZGVzY3JpcHRpb24iO3M6MjE5OiJJIHNhdyB0b28gbWFueSBncmVhdCBzaG93cyB0aGlzIHllYXIgYW5kIGhhdmUgdG9vIGxpdHRsZSBzcGFjZSB0byB0YWxrIGFib3V0IHRoZW0gYWxsLiBCdXQgaGVyZSBhcmUgbXkgZmF2b3JpdGUgMTAgcHJvZHVjdGlvbnMgZnJvbSAyMDEyLgoxMC4gVGhlIENyaXBwbGUgb2YgSW5pc2htYWFuCk5pbWJ1cyBUaGVhdGVyClNldCBhbG1vc3QgZW50aXJlbHkgb24gYSBzbWFsbCwgaXNvbGEiO3M6MTQ6Im9nOmRlc2NyaXB0aW9uIjtzOjIxOToiSSBzYXcgdG9vIG1hbnkgZ3JlYXQgc2hvd3MgdGhpcyB5ZWFyIGFuZCBoYXZlIHRvbyBsaXR0bGUgc3BhY2UgdG8gdGFsayBhYm91dCB0aGVtIGFsbC4gQnV0IGhlcmUgYXJlIG15IGZhdm9yaXRlIDEwIHByb2R1Y3Rpb25zIGZyb20gMjAxMi4KMTAuIFRoZSBDcmlwcGxlIG9mIEluaXNobWFhbgpOaW1idXMgVGhlYXRlcgpTZXQgYWxtb3N0IGVudGlyZWx5IG9uIGEgc21hbGwsIGlzb2xhIjt9czo5OiJDYWNoZWRhdGEiO2E6MDp7fXM6NzoiQ29udGV4dCI7YToxMTp7czoxNDoiQWRJbmRleFNlY3Rpb24iO3M6NDoiYXJ0cyI7czo3OiJTZWN0aW9uIjtzOjQ6ImFydHMiO3M6MTY6Ik9BU1F1ZXJ5Q2F0ZWdvcnkiO3M6NDoiQXJ0cyI7czoxOToiT0FTUXVlcnlTdWJjYXRlZ29yeSI7czo4OiJBcnRpY2xlcyI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjM4OiIvMjAxMi0xMi0yNi9hcnRzL3RvcC0xMC1wbGF5cy1vZi0yMDEyLyI7czozOiJVcmwiO3M6ODE6Ii9jb250ZW50L3ZpZXcvdG9wLTEwLXBsYXlzLW9mLTIwMTIvL29yaWdVcmw6LzIwMTItMTItMjYvYXJ0cy90b3AtMTAtcGxheXMtb2YtMjAxMiI7czoxMzoiQ29tbWVudHNPYmpJZCI7czo3OiIyNjc0NjE5IjtzOjEwOiJTdWJzZWN0aW9uIjtzOjA6IiI7czoxNDoiT0FTUXVlcnlBdXRob3IiO3M6ODoiRWRfSHV5Y2siO3M6OToiSXNzdWVEYXRlIjtzOjEwOiIyMDEyLTEyLTI2Ijt9czoxODoiUG9zdFByb2Nlc3NNZXNzYWdlIjtPOjI0OiJWVk1fTWVzc2FnZVF1ZXVlX01lc3NhZ2UiOjI6e3M6ODoiACoAX3R5cGUiO3M6NzoiQWRJbmRleCI7czoxMToiACoAX3BheWxvYWQiO2E6MTp7aTowO2E6Mjp7czoyOiJpZCI7czo3OiIxOTM4MjkwIjtzOjQ6InR5cGUiO3M6MTE6InRvd2VyX3ZpZXdzIjt9fX19
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czoxNzA6IjwhLS0gTk9HU0EgLS0+CjxkaXYgY2xhc3M9IkFkcyIgaWQ9Ik1pZGRsZSI+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgPCEtLQogICAgICAgIE9BU19BRCgnTWlkZGxlJyk7CiAgICAgICAgLy8tLT4KICAgIDwvc2NyaXB0Pgo8L2Rpdj4KPCEtLSAvTk9HU0EgLS0+IjtzOjEzOiJjb250ZW50TGVuZ3RoIjtpOjE3MDtzOjExOiJtZXRhQ29udGVudCI7YToxOntzOjEzOiJvZzppbWFnZV9sYXN0IjthOjE6e2k6MDtzOjQ0OiJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vaW1nL2NpdHlsb2dvLWxnLnBuZyI7fX1zOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjc6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjU6Im11c2ljIjtzOjExOiJhbHBoYUxldHRlciI7czoxOiJJIjtzOjc6IlNlY3Rpb24iO3M6NToibXVzaWMiO3M6MTY6Ik9BU1F1ZXJ5Q2F0ZWdvcnkiO3M6NToiTXVzaWMiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6NjoiU2VhcmNoIjtzOjc6Ik9yaWdVcmwiO3M6MzQ6Ii9kaXJlY3RvcnkvdGhlYXRlcnMvYWxwaGFMZXR0ZXI6SS8iO3M6MzoiVXJsIjtzOjczOiIvc2VydmljZXMvZ2V0RWxlbWVudC9BZHMvWVRveE9udHpPamc2SW5CdmMybDBhVzl1SWp0ek9qWTZJazFwWkdSc1pTSTdmUT09Ijt9fQ
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czo1NzE6IjxkaXYgY2xhc3M9ImZhY2Vib29rX3JlY29tbWVuZGVkIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib29rX3JlY29tbWVuZGVkX2hlYWRlciI+CiAgICAgICAgPGgyPkNpdHlwYWdlcyBvbiBGYWNlYm9vazwvaDI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InRvcF9zdG9yaWVzIHJlY29tbWVuZGVkX3N0b3JpZXMiPgogICAgICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL2FjdGl2aXR5LnBocD9zaXRlPWNpdHlwYWdlcy5jb20sYmxvZ3MuY2l0eXBhZ2VzLmNvbSZhbXA7d2lkdGg9MzY4JmFtcDtoZWlnaHQ9MzAwJmFtcDtoZWFkZXI9ZmFsc2UmYW1wO2NvbG9yc2NoZW1lPWxpZ2h0JmFtcDtmb250PWFyaWFsJmFtcDtib3JkZXJfY29sb3I9JTIzZmZmZmZmJmFtcDtyZWNvbW1lbmRhdGlvbnM9ZmFsc2UiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOm5vbmU7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MzY4cHg7IGhlaWdodDozMDBweDsiIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIj48L2lmcmFtZT4KICAgIDwvZGl2Pgo8L2Rpdj4iO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6NTcxO3M6MTE6Im1ldGFDb250ZW50IjthOjE6e3M6MTM6Im9nOmltYWdlX2xhc3QiO2E6MTp7aTowO3M6NDQ6Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS9pbWcvY2l0eWxvZ28tbGcucG5nIjt9fXM6OToiQ2FjaGVkYXRhIjthOjA6e31zOjc6IkNvbnRleHQiO2E6MTE6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjQ6Im5ld3MiO3M6NzoiU2VjdGlvbiI7czo0OiJuZXdzIjtzOjE2OiJPQVNRdWVyeUNhdGVnb3J5IjtzOjQ6Ik5ld3MiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6NjoiU2VhcmNoIjtzOjEwOiJwYWdlUGFyYW1zIjtzOjMxOiIKICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgIjtzOjc6Ik9yaWdVcmwiO3M6Mzg6Ii8yMDEyLTEyLTI2L2FydHMvdG9wLTEwLXBsYXlzLW9mLTIwMTIvIjtzOjM6IlVybCI7czoyOToiL3NlcnZpY2VzL2ZhY2Vib29rUmVjb21tZW5kZWQiO3M6MTM6IkNvbW1lbnRzT2JqSWQiO3M6NjoiNDkyNTk4IjtzOjEwOiJTdWJzZWN0aW9uIjtzOjc6IkZlYXR1cmUiO3M6MTQ6Ik9BU1F1ZXJ5QXV0aG9yIjtzOjEyOiJNYXR0X1NueWRlcnMiO3M6OToiSXNzdWVEYXRlIjtzOjEwOiIyMDA4LTA2LTI1Ijt9fQ
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czo0MzE6IjxkaXYgY2xhc3M9J2NoaXNlbF91IHJfYm94IHNwZWNpYWxyZXBvcnRzJz4NCiAgIDxkaXYgY2xhc3M9J2dyYXknPg0KICAgIDxoMj5TcGVjaWFsIFJlcG9ydHM8L2gyPg0KICAgIDxkaXYgY2xhc3M9J2NoaXNlbF9kIHdoaXRlJz4NCiAgICAgPHVsPg0KPGxpPjxhIGhyZWY9Ii9zcGVjaWFsUmVwb3J0cy9taWNoZWxlLWJhY2htYW5uLWEtaGlzdG9yeS1vZi1jcmF6eS1ob21vcGhvYmlhLWFuZC1saWVzLTI4MjM3ODAvIj5NaWNoZWxlIEJhY2htYW5uOiBBIGhpc3Rvcnkgb2YgY3JhenksIGhvbW9waG9iaWEsIGFuZCBsaWVzPC9hPjwvbGk+ICAgICAgPGxpIGNsYXNzPSdtb3JlJz48YSBocmVmPScvc3BlY2lhbFJlcG9ydHMnPk1vcmUgU3BlY2lhbCBSZXBvcnRzID4+PC9hPjwvbGk+DQogICAgIDwvdWw+DQogICAgPC9kaXY+DQogICA8L2Rpdj4NCiAgPC9kaXY+IjtzOjEzOiJjb250ZW50TGVuZ3RoIjtpOjQzMTtzOjExOiJtZXRhQ29udGVudCI7YToxOntzOjEzOiJvZzppbWFnZV9sYXN0IjthOjE6e2k6MDtzOjQ0OiJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vaW1nL2NpdHlsb2dvLWxnLnBuZyI7fX1zOjk6IkNhY2hlZGF0YSI7YToxOntpOjA7czo3OiIyODIzNzgwIjt9czo3OiJDb250ZXh0IjthOjE3OntzOjE0OiJBZEluZGV4U2VjdGlvbiI7czo0OiJuZXdzIjtzOjc6IlNlY3Rpb24iO3M6NDoibmV3cyI7czoxNjoiT0FTUXVlcnlDYXRlZ29yeSI7czo0OiJOZXdzIjtzOjE5OiJPQVNRdWVyeVN1YmNhdGVnb3J5IjtzOjY6IlNlYXJjaCI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjQxOiIvMjAwOS0xMi0xNi9jYWxlbmRhci9tYXNvbi1qZW5uaW5ncy9mdWxsLyI7czozOiJVcmwiO3M6MzY6Ii9zcGVjaWFsUmVwb3J0cy9TcGVjaWFsUmVwb3J0c1dpZGdldCI7czoxMzoiQ29tbWVudHNPYmpJZCI7czo2OiI0OTI1OTgiO3M6MTA6IlN1YnNlY3Rpb24iO3M6NzoiRmVhdHVyZSI7czoxNDoiT0FTUXVlcnlBdXRob3IiO3M6MTI6Ik1hdHRfU255ZGVycyI7czo5OiJJc3N1ZURhdGUiO3M6MTA6IjIwMDgtMDYtMjUiO3M6MTA6ImJlc3RPZlllYXIiO3M6NDoiMjAxMyI7czoxNToiZmVhdHVyZWRTdG9yaWVzIjthOjE1OntpOjA7czo3OiIyODI4MTkwIjtpOjE7czo3OiIyODIzMDYzIjtpOjI7czo3OiIyODE2ODAyIjtpOjM7czo3OiIyODEwMDY1IjtpOjQ7czo3OiIyODAzMjYwIjtpOjU7czo3OiIyODAzMjU4IjtpOjY7czo3OiIyNzk2MzQ2IjtpOjc7czo3OiIyNzg5MDQ5IjtpOjg7czo3OiIyNzgxNTYyIjtpOjk7czo3OiIyNzc0MDYyIjtpOjEwO3M6NzoiMjc2NzQ0MCI7aToxMTtzOjc6IjI3Njc0MzgiO2k6MTI7czo3OiIyNzYxMTAwIjtpOjEzO3M6NzoiMjc1MzY3MSI7aToxNDtzOjc6IjI3NTM2NjQiO31zOjEyOiJjYXRlZ29yeU5hbWUiO3M6NzoiVGhlYXRlciI7czo0OiJwYWdlIjtzOjQ6IjEwMDciO3M6Nzoic2VjdGlvbiI7czo0OiIzNzQzIjtzOjg6ImNhdGVnb3J5IjtzOjQ6IjQyNDMiO319
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czowOiIiO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6MDtzOjExOiJtZXRhQ29udGVudCI7YToxOntzOjEzOiJvZzppbWFnZV9sYXN0IjthOjE6e2k6MDtzOjQ0OiJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vaW1nL2NpdHlsb2dvLWxnLnBuZyI7fX1zOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjE3OntzOjE0OiJBZEluZGV4U2VjdGlvbiI7czo0OiJuZXdzIjtzOjc6IlNlY3Rpb24iO3M6NDoibmV3cyI7czoxNjoiT0FTUXVlcnlDYXRlZ29yeSI7czo0OiJOZXdzIjtzOjE5OiJPQVNRdWVyeVN1YmNhdGVnb3J5IjtzOjY6IlNlYXJjaCI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjM4OiIvMjAxMi0xMi0yNi9hcnRzL3RvcC0xMC1wbGF5cy1vZi0yMDEyLyI7czozOiJVcmwiO3M6MTU6Ii9zZW8vcGFydG5lckJveCI7czoxMzoiQ29tbWVudHNPYmpJZCI7czo2OiI0OTI1OTgiO3M6MTA6IlN1YnNlY3Rpb24iO3M6NzoiRmVhdHVyZSI7czoxNDoiT0FTUXVlcnlBdXRob3IiO3M6MTI6Ik1hdHRfU255ZGVycyI7czo5OiJJc3N1ZURhdGUiO3M6MTA6IjIwMDgtMDYtMjUiO3M6MTA6ImJlc3RPZlllYXIiO3M6NDoiMjAxMyI7czoxNToiZmVhdHVyZWRTdG9yaWVzIjthOjE1OntpOjA7czo3OiIyODI4MTkwIjtpOjE7czo3OiIyODIzMDYzIjtpOjI7czo3OiIyODE2ODAyIjtpOjM7czo3OiIyODEwMDY1IjtpOjQ7czo3OiIyODAzMjYwIjtpOjU7czo3OiIyODAzMjU4IjtpOjY7czo3OiIyNzk2MzQ2IjtpOjc7czo3OiIyNzg5MDQ5IjtpOjg7czo3OiIyNzgxNTYyIjtpOjk7czo3OiIyNzc0MDYyIjtpOjEwO3M6NzoiMjc2NzQ0MCI7aToxMTtzOjc6IjI3Njc0MzgiO2k6MTI7czo3OiIyNzYxMTAwIjtpOjEzO3M6NzoiMjc1MzY3MSI7aToxNDtzOjc6IjI3NTM2NjQiO31zOjEyOiJjYXRlZ29yeU5hbWUiO3M6NzoiVGhlYXRlciI7czo0OiJwYWdlIjtzOjQ6IjEwMDciO3M6Nzoic2VjdGlvbiI7czo0OiIzNzQzIjtzOjg6ImNhdGVnb3J5IjtzOjQ6IjQyNDMiO319
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czowOiIiO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6MDtzOjExOiJtZXRhQ29udGVudCI7TjtzOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjExOntzOjE0OiJBZEluZGV4U2VjdGlvbiI7czo0OiJuZXdzIjtzOjc6IlNlY3Rpb24iO3M6NDoibmV3cyI7czoxNjoiT0FTUXVlcnlDYXRlZ29yeSI7czo0OiJOZXdzIjtzOjE5OiJPQVNRdWVyeVN1YmNhdGVnb3J5IjtzOjY6IlNlYXJjaCI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjM4OiIvMjAxMi0xMi0yNi9hcnRzL3RvcC0xMC1wbGF5cy1vZi0yMDEyLyI7czozOiJVcmwiO3M6ODQ6Ii9hZHMvZmxhdEFkcy9jbGlja2JvdHRvbS9jbGlja2JvdHRvbS8vL29yaWdVcmw6LzIwMTItMTItMjYvYXJ0cy90b3AtMTAtcGxheXMtb2YtMjAxMiI7czoxMzoiQ29tbWVudHNPYmpJZCI7czo2OiI0OTI1OTgiO3M6MTA6IlN1YnNlY3Rpb24iO3M6MDoiIjtzOjE0OiJPQVNRdWVyeUF1dGhvciI7czoxMjoiTWF0dF9TbnlkZXJzIjtzOjk6Iklzc3VlRGF0ZSI7czoxMDoiMjAwOC0wNi0yNSI7fX0
©2013 City Pages, LLC, All rights reserved.
Browse Voice Nation
  • Voice Places Minneapolis / St. Paul

    Voice Places

    Find everything you're looking for in your city

  • Happy Hour App

    Happy Hour App

    Find the best happy hour deals in your city

  • Daily Deals

    Daily Deals

    Get today's exclusive deals at savings of anywhere from 50-90%

  • Best Of

    Best Of...

    Check out the hottest list of places and things to do around your city