PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPkN1c3RvbSBFcnJvciBSZXNwb25zZXMgLSBBcGFjaGUgSFRUUCBTZXJ2ZXI8L3RpdGxlPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSIuL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjE8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy1wcm9qZWN0LyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLyI+VmVyc2lvbiAyLjE8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkN1c3RvbSBFcnJvciBSZXNwb25zZXM8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4vZW4vY3VzdG9tLWVycm9yLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2VzL2N1c3RvbS1lcnJvci5odG1sIiBocmVmbGFuZz0iZXMiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRXNwYfFvbCI+Jm5ic3A7ZXMmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9qYS9jdXN0b20tZXJyb3IuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2tvL2N1c3RvbS1lcnJvci5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PgoKICAgIDxwPkFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSBhbGxvd3Mgd2VibWFzdGVycyB0byBjb25maWd1cmUgdGhlIHJlc3BvbnNlIAogICAgb2YgQXBhY2hlIHRvIHNvbWUgZXJyb3Igb3IgcHJvYmxlbS48L3A+CgogICAgPHA+Q3VzdG9taXphYmxlIHJlc3BvbnNlcyBjYW4gYmUgZGVmaW5lZCB0byBiZSBhY3RpdmF0ZWQgaW4gdGhlIGV2ZW50IG9mIAogICAgYSBzZXJ2ZXIgZGV0ZWN0ZWQgZXJyb3Igb3IgcHJvYmxlbS48L3A+CgogICAgPHA+SWYgYSBzY3JpcHQgY3Jhc2hlcyBhbmQgcHJvZHVjZXMgYSAiNTAwIFNlcnZlciBFcnJvciIgcmVzcG9uc2UsIAogICAgdGhlbiB0aGlzIHJlc3BvbnNlIGNhbiBiZSByZXBsYWNlZCB3aXRoIGVpdGhlciBzb21lIGZyaWVuZGxpZXIgdGV4dCBvciBieSAKICAgIGEgcmVkaXJlY3Rpb24gdG8gYW5vdGhlciBVUkwgKGxvY2FsIG9yIGV4dGVybmFsKS48L3A+CiAgPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PHVsIGlkPSJ0b2MiPjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYmVoYXZpb3IiPkJlaGF2aW9yPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2N1c3RvbSI+Q3VzdG9tIEVycm9yIFJlc3BvbnNlcyBhbmQgUmVkaXJlY3RzPC9hPjwvbGk+CjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iYmVoYXZpb3IiIGlkPSJiZWhhdmlvciI+QmVoYXZpb3I8L2E+PC9oMj4KICAgIAoKICAgIDxoMz5PbGQgQmVoYXZpb3I8L2gzPgogICAgICAKCiAgICAgIDxwPk5DU0EgaHR0cGQgMS4zIHdvdWxkIHJldHVybiBzb21lIGJvcmluZyBvbGQgZXJyb3IvcHJvYmxlbSBtZXNzYWdlIAogICAgICB3aGljaCB3b3VsZCBvZnRlbiBiZSBtZWFuaW5nbGVzcyB0byB0aGUgdXNlciwgYW5kIHdvdWxkIHByb3ZpZGUgbm8gCiAgICAgIG1lYW5zIG9mIGxvZ2dpbmcgdGhlIHN5bXB0b21zIHdoaWNoIGNhdXNlZCBpdC48L3A+CiAgICAKCiAgICA8aDM+TmV3IEJlaGF2aW9yPC9oMz4KICAgICAgCgogICAgICA8cD5UaGUgc2VydmVyIGNhbiBiZSBhc2tlZCB0bzo8L3A+CgogICAgICA8b2w+CiAgICAgICAgPGxpPkRpc3BsYXkgc29tZSBvdGhlciB0ZXh0LCBpbnN0ZWFkIG9mIHRoZSBOQ1NBIGhhcmQgY29kZWQgCiAgICAgICAgbWVzc2FnZXMsIG9yPC9saT4KCiAgICAgICAgPGxpPnJlZGlyZWN0IHRvIGEgbG9jYWwgVVJMLCBvcjwvbGk+CgogICAgICAgIDxsaT5yZWRpcmVjdCB0byBhbiBleHRlcm5hbCBVUkwuPC9saT4KICAgICAgPC9vbD4KCiAgICAgIDxwPlJlZGlyZWN0aW5nIHRvIGFub3RoZXIgVVJMIGNhbiBiZSB1c2VmdWwsIGJ1dCBvbmx5IGlmIHNvbWUgCiAgICAgIGluZm9ybWF0aW9uIGNhbiBiZSBwYXNzZWQgd2hpY2ggY2FuIHRoZW4gYmUgdXNlZCB0byBleHBsYWluIGFuZC9vciBsb2cgCiAgICAgIHRoZSBlcnJvci9wcm9ibGVtIG1vcmUgY2xlYXJseS48L3A+CgogICAgICA8cD5UbyBhY2hpZXZlIHRoaXMsIEFwYWNoZSB3aWxsIGRlZmluZSBuZXcgQ0dJLWxpa2UgZW52aXJvbm1lbnQgCiAgICAgIHZhcmlhYmxlczo8L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICBSRURJUkVDVF9IVFRQX0FDQ0VQVD0qLyosIGltYWdlL2dpZiwgaW1hZ2UveC14Yml0bWFwLCAKICAgICAgICAgICAgaW1hZ2UvanBlZzxiciAvPgogICAgICAgIFJFRElSRUNUX0hUVFBfVVNFUl9BR0VOVD1Nb3ppbGxhLzEuMWIyIChYMTE7IEk7IEhQLVVYIEEuMDkuMDUgCiAgICAgICAgICAgIDkwMDAvNzEyKTxiciAvPgogICAgICAgIFJFRElSRUNUX1BBVEg9LjovYmluOi91c3IvbG9jYWwvYmluOi9ldGM8YnIgLz4KICAgICAgICBSRURJUkVDVF9RVUVSWV9TVFJJTkc9PGJyIC8+CiAgICAgICAgUkVESVJFQ1RfUkVNT1RFX0FERFI9MTIxLjM0NS43OC4xMjM8YnIgLz4KICAgICAgICBSRURJUkVDVF9SRU1PVEVfSE9TVD1vb2guYWhoaC5jb208YnIgLz4KICAgICAgICBSRURJUkVDVF9TRVJWRVJfTkFNRT1jcmFzaC5iYW5nLmVkdTxiciAvPgogICAgICAgIFJFRElSRUNUX1NFUlZFUl9QT1JUPTgwPGJyIC8+CiAgICAgICAgUkVESVJFQ1RfU0VSVkVSX1NPRlRXQVJFPUFwYWNoZS8wLjguMTU8YnIgLz4KICAgICAgICBSRURJUkVDVF9VUkw9L2NnaS1iaW4vYnVnZ3kucGwKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgIDxwPk5vdGUgdGhlIDxjb2RlPlJFRElSRUNUXzwvY29kZT4gcHJlZml4LjwvcD4KCiAgICAgIDxwPkF0IGxlYXN0IDxjb2RlPlJFRElSRUNUX1VSTDwvY29kZT4gYW5kCiAgICAgIDxjb2RlPlJFRElSRUNUX1FVRVJZX1NUUklORzwvY29kZT4gd2lsbCBiZSBwYXNzZWQgdG8gdGhlCiAgICAgIG5ldyBVUkwgKGFzc3VtaW5nIGl0J3MgYSBjZ2ktc2NyaXB0IG9yIGEgY2dpLWluY2x1ZGUpLiBUaGUKICAgICAgb3RoZXIgdmFyaWFibGVzIHdpbGwgZXhpc3Qgb25seSBpZiB0aGV5IGV4aXN0ZWQgcHJpb3IgdG8KICAgICAgdGhlIGVycm9yL3Byb2JsZW0uIDxzdHJvbmc+Tm9uZTwvc3Ryb25nPiBvZiB0aGVzZSB3aWxsIGJlCiAgICAgIHNldCBpZiB5b3VyIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNlcnJvcmRvY3VtZW50Ij5FcnJvckRvY3VtZW50PC9hPjwvY29kZT4gaXMgYW4gCiAgICAgIDxlbT5leHRlcm5hbDwvZW0+IHJlZGlyZWN0IChhbnl0aGluZyBzdGFydGluZyB3aXRoIGEgCiAgICAgIHNjaGVtZSBuYW1lIGxpa2UgPGNvZGU+aHR0cDo8L2NvZGU+LCBldmVuIGlmIGl0IHJlZmVycyB0byB0aGUgc2FtZSBob3N0IAogICAgICBhcyB0aGUgc2VydmVyKS48L3A+CiAgICAKICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNvbmZpZ3VyYXRpb24iIGlkPSJjb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDI+CiAgICAKCiAgICA8cD5Vc2Ugb2YgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2Vycm9yZG9jdW1lbnQiPkVycm9yRG9jdW1lbnQ8L2E+PC9jb2RlPiBpcyBlbmFibGVkIAogICAgZm9yIC5odGFjY2VzcyBmaWxlcyB3aGVuIHRoZSAKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNhbGxvd292ZXJyaWRlIj5BbGxvd092ZXJyaWRlPC9hPjwvY29kZT4gaXMgc2V0IGFjY29yZGluZ2x5LjwvcD4KCiAgICA8cD5IZXJlIGFyZSBzb21lIGV4YW1wbGVzLi4uPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBFcnJvckRvY3VtZW50IDUwMCAvY2dpLWJpbi9jcmFzaC1yZWNvdmVyIDxiciAvPgogICAgICBFcnJvckRvY3VtZW50IDUwMCAiU29ycnksIG91ciBzY3JpcHQgY3Jhc2hlZC4gT2ggZGVhciIgPGJyIC8+CiAgICAgIEVycm9yRG9jdW1lbnQgNTAwIGh0dHA6Ly94eHgvIDxiciAvPgogICAgICBFcnJvckRvY3VtZW50IDQwNCAvTGFtZV9leGN1c2VzL25vdF9mb3VuZC5odG1sIDxiciAvPgogICAgICBFcnJvckRvY3VtZW50IDQwMSAvU3Vic2NyaXB0aW9uL2hvd190b19zdWJzY3JpYmUuaHRtbAogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5UaGUgc3ludGF4IGlzLDwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgRXJyb3JEb2N1bWVudCAmbHQ7My1kaWdpdC1jb2RlJmd0OyAmbHQ7YWN0aW9uJmd0OwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD53aGVyZSB0aGUgYWN0aW9uIGNhbiBiZSw8L3A+CgogICAgPG9sPgogICAgICA8bGk+VGV4dCB0byBiZSBkaXNwbGF5ZWQuIFByZWZpeCB0aGUgdGV4dCB3aXRoIGEgcXVvdGUKICAgICAgKCIpLiBXaGF0ZXZlciBmb2xsb3dzIHRoZSBxdW90ZSBpcyBkaXNwbGF5ZWQuIDxlbT5Ob3RlOgogICAgICB0aGUgKCIpIHByZWZpeCBpc24ndCBkaXNwbGF5ZWQuPC9lbT48L2xpPgoKICAgICAgPGxpPkFuIGV4dGVybmFsIFVSTCB0byByZWRpcmVjdCB0by48L2xpPgoKICAgICAgPGxpPkEgbG9jYWwgVVJMIHRvIHJlZGlyZWN0IHRvLjwvbGk+CiAgICA8L29sPgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iY3VzdG9tIiBpZD0iY3VzdG9tIj5DdXN0b20gRXJyb3IgUmVzcG9uc2VzIGFuZCBSZWRpcmVjdHM8L2E+PC9oMj4KICAgIAoKICAgIDxwPkFwYWNoZSdzIGJlaGF2aW9yIHRvIHJlZGlyZWN0ZWQgVVJMcyBoYXMgYmVlbiBtb2RpZmllZCBzbwogICAgdGhhdCBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIHRvIGEKICAgIHNjcmlwdC9zZXJ2ZXItaW5jbHVkZS48L3A+CgogICAgPGgzPk9sZCBiZWhhdmlvcjwvaDM+CiAgICAgIAoKICAgICAgPHA+U3RhbmRhcmQgQ0dJIHZhcnMgd2VyZSBtYWRlIGF2YWlsYWJsZSB0byBhIHNjcmlwdCB3aGljaAogICAgICBoYXMgYmVlbiByZWRpcmVjdGVkIHRvLiBObyBpbmRpY2F0aW9uIG9mIHdoZXJlIHRoZQogICAgICByZWRpcmVjdGlvbiBjYW1lIGZyb20gd2FzIHByb3ZpZGVkLjwvcD4KICAgIAoKICAgIDxoMz5OZXcgYmVoYXZpb3I8L2gzPgogICAgICAKCiAgICAgIDxwPkEgbmV3IGJhdGNoIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGJlIGluaXRpYWxpemVkCiAgICAgIGZvciB1c2UgYnkgYSBzY3JpcHQgd2hpY2ggaGFzIGJlZW4gcmVkaXJlY3RlZCB0by4gRWFjaCBuZXcKICAgICAgdmFyaWFibGUgd2lsbCBoYXZlIHRoZSBwcmVmaXggPGNvZGU+UkVESVJFQ1RfPC9jb2RlPi4KICAgICAgPGNvZGU+UkVESVJFQ1RfPC9jb2RlPiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGNyZWF0ZWQgZnJvbQogICAgICB0aGUgQ0dJIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBleGlzdGVkIHByaW9yIHRvIHRoZQogICAgICByZWRpcmVjdCwgdGhleSBhcmUgcmVuYW1lZCB3aXRoIGEgPGNvZGU+UkVESVJFQ1RfPC9jb2RlPgogICAgICBwcmVmaXgsIDxlbT5pLmUuPC9lbT4sIDxjb2RlPkhUVFBfVVNFUl9BR0VOVDwvY29kZT4gYmVjb21lcwogICAgICA8Y29kZT5SRURJUkVDVF9IVFRQX1VTRVJfQUdFTlQ8L2NvZGU+LiBJbiBhZGRpdGlvbiB0byB0aGVzZQogICAgICBuZXcgdmFyaWFibGVzLCBBcGFjaGUgd2lsbCBkZWZpbmUgPGNvZGU+UkVESVJFQ1RfVVJMPC9jb2RlPgogICAgICBhbmQgPGNvZGU+UkVESVJFQ1RfU1RBVFVTPC9jb2RlPiB0byBoZWxwIHRoZSBzY3JpcHQgdHJhY2UgaXRzCiAgICAgIG9yaWdpbi4gQm90aCB0aGUgb3JpZ2luYWwgVVJMIGFuZCB0aGUgVVJMIGJlaW5nIHJlZGlyZWN0ZWQgdG8KICAgICAgY2FuIGJlIGxvZ2dlZCBpbiB0aGUgYWNjZXNzIGxvZy48L3A+CgogICAgICA8cD5JZiB0aGUgRXJyb3JEb2N1bWVudCBzcGVjaWZpZXMgYSBsb2NhbCByZWRpcmVjdCB0byBhIENHSQogICAgICBzY3JpcHQsIHRoZSBzY3JpcHQgc2hvdWxkIGluY2x1ZGUgYSAiPGNvZGU+U3RhdHVzOjwvY29kZT4iCiAgICAgIGhlYWRlciBmaWVsZCBpbiBpdHMgb3V0cHV0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGUgcHJvcGFnYXRpb24KICAgICAgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgY2xpZW50IG9mIHRoZSBlcnJvciBjb25kaXRpb24gdGhhdAogICAgICBjYXVzZWQgaXQgdG8gYmUgaW52b2tlZC4gRm9yIGluc3RhbmNlLCBhIFBlcmwgRXJyb3JEb2N1bWVudAogICAgICBzY3JpcHQgbWlnaHQgaW5jbHVkZSB0aGUgZm9sbG93aW5nOjwvcD4KCiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgIC4uLiA8YnIgLz4KICAgICAgICBwcmludCAgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG4iOyA8YnIgLz4KICAgICAgICBwcmludGYgIlN0YXR1czogJXMgQ29uZGl0aW9uIEludGVyY2VwdGVkXG4iLCAkRU5WeyJSRURJUkVDVF9TVEFUVVMifTsgPGJyIC8+CiAgICAgICAgLi4uCiAgICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgICA8cD5JZiB0aGUgc2NyaXB0IGlzIGRlZGljYXRlZCB0byBoYW5kbGluZyBhIHBhcnRpY3VsYXIgZXJyb3IKICAgICAgY29uZGl0aW9uLCBzdWNoIGFzIDxjb2RlPjQwNCZuYnNwO05vdCZuYnNwO0ZvdW5kPC9jb2RlPiwgaXQgY2FuCiAgICAgIHVzZSB0aGUgc3BlY2lmaWMgY29kZSBhbmQgZXJyb3IgdGV4dCBpbnN0ZWFkLjwvcD4KCiAgICAgIDxwPk5vdGUgdGhhdCB0aGUgc2NyaXB0IDxlbT5tdXN0PC9lbT4gZW1pdCBhbiBhcHByb3ByaWF0ZQogICAgICA8Y29kZT5TdGF0dXM6PC9jb2RlPiBoZWFkZXIgKHN1Y2ggYXMgPGNvZGU+MzAyJm5ic3A7Rm91bmQ8L2NvZGU+KSwgaWYgdGhlCiAgICAgIHJlc3BvbnNlIGNvbnRhaW5zIGEgPGNvZGU+TG9jYXRpb246PC9jb2RlPiBoZWFkZXIgKGluIG9yZGVyIHRvIGlzc3VlIGEKICAgICAgY2xpZW50IHNpZGUgcmVkaXJlY3QpLiBPdGhlcndpc2UgdGhlIDxjb2RlPkxvY2F0aW9uOjwvY29kZT4gaGVhZGVyIG1heQogICAgICBoYXZlIG5vIGVmZmVjdC48L3A+CiAgICAKICA8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuL2VuL2N1c3RvbS1lcnJvci5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9lcy9jdXN0b20tZXJyb3IuaHRtbCIgaHJlZmxhbmc9ImVzIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVzcGHxb2wiPiZuYnNwO2VzJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vamEvY3VzdG9tLWVycm9yLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9rby9jdXN0b20tZXJyb3IuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMTk5NS0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBvciBpdHMgbGljZW5zb3JzLCBhcyBhcHBsaWNhYmxlLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSIuL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD48L2Rpdj4KPC9ib2R5PjwvaHRtbD4=