PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPlBlci11c2VyIHdlYiBkaXJlY3RvcmllcyAtIEFwYWNoZSBIVFRQIFNlcnZlcjwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+CjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iLi4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuMzwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjM8L2E+ICZndDsgPGEgaHJlZj0iLi8iPkhvdy1UbyAvIFR1dG9yaWFsczwvYT48L2Rpdj48ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPjxkaXYgaWQ9InByZWFtYmxlIj48aDE+UGVyLXVzZXIgd2ViIGRpcmVjdG9yaWVzPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9ob3d0by9wdWJsaWNfaHRtbC5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvaG93dG8vcHVibGljX2h0bWwuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9ob3d0by9wdWJsaWNfaHRtbC5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL2hvd3RvL3B1YmxpY19odG1sLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL2hvd3RvL3B1YmxpY19odG1sLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+Cgo8cD5PbiBzeXN0ZW1zIHdpdGggbXVsdGlwbGUgdXNlcnMsIGVhY2ggdXNlciBjYW4gYmUgcGVybWl0dGVkIHRvIGhhdmUgYQogICAgd2ViIHNpdGUgaW4gdGhlaXIgaG9tZSBkaXJlY3RvcnkgdXNpbmcgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfdXNlcmRpci5odG1sI3VzZXJkaXIiPlVzZXJEaXI8L2E+PC9jb2RlPiBkaXJlY3RpdmUuIFZpc2l0b3JzCiAgICB0byBhIFVSTCA8Y29kZT5odHRwOi8vZXhhbXBsZS5jb20vfnVzZXJuYW1lLzwvY29kZT4gd2lsbCBnZXQgY29udGVudAogICAgb3V0IG9mIHRoZSBob21lIGRpcmVjdG9yeSBvZiB0aGUgdXNlciAiPGNvZGU+dXNlcm5hbWU8L2NvZGU+Iiwgb3V0IG9mCiAgICB0aGUgc3ViZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF91c2VyZGlyLmh0bWwjdXNlcmRpciI+VXNlckRpcjwvYT48L2NvZGU+IGRpcmVjdGl2ZS48L3A+CjxwPk5vdGUgdGhhdCwgYnkgZGVmYXVsdCwgYWNjZXNzIHRvIHRoZXNlIGRpcmVjdG9yaWVzIGlzIDxzdHJvbmc+bm90PC9zdHJvbmc+CiAgICBlbmFibGVkLiBZb3UgY2FuIGVuYWJsZSBhY2Nlc3Mgd2hlbiB1c2luZyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3VzZXJkaXIuaHRtbCN1c2VyZGlyIj5Vc2VyRGlyPC9hPjwvY29kZT4gYnkgdW5jb21tZW50aW5nIHRoZSBsaW5lPC9wPgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICNJbmNsdWRlIGNvbmYvZXh0cmEvaHR0cGQtdXNlcmRpci5jb25mCiAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgPHA+aW4gdGhlIGRlZmF1bHQgY29uZmlnIGZpbGUsIGFuZCBhZGFwdGluZyB0aGUgPGNvZGU+aHR0cGQtdXNlcmRpci5jb25mPC9jb2RlPgogICAgZmlsZSBhcyBuZWNlc3NhcnksIG9yIGJ5IGluY2x1ZGluZyB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aXZlcyBpbiBhCiAgICA8Y29kZT5EaXJlY3Rvcnk8L2NvZGU+IGJsb2NrIHdpdGhpbiB0aGUgbWFpbiBjb25maWcgZmlsZS48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjx1bCBpZD0idG9jIj48bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNyZWxhdGVkIj5QZXItdXNlciB3ZWIgZGlyZWN0b3JpZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdXNlcmRpciI+U2V0dGluZyB0aGUgZmlsZSBwYXRoIHdpdGggVXNlckRpcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNyZWRpcmVjdCI+UmVkaXJlY3RpbmcgdG8gZXh0ZXJuYWwgVVJMczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNlbmFibGUiPlJlc3RyaWN0aW5nIHdoYXQgdXNlcnMgYXJlIHBlcm1pdHRlZCB0byB1c2UgdGhpcyAKICAgIGZlYXR1cmU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY2dpIj5FbmFibGluZyBhIGNnaSBkaXJlY3RvcnkgZm9yIGVhY2ggdXNlcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNodGFjY2VzcyI+QWxsb3dpbmcgdXNlcnMgdG8gYWx0ZXIgY29uZmlndXJhdGlvbjwvYT48L2xpPgo8L3VsPjxoMz5TZWUgYWxzbzwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iLi4vdXJsbWFwcGluZy5odG1sIj5NYXBwaW5nIFVSTHMgdG8gdGhlIEZpbGVzeXN0ZW08L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJyZWxhdGVkIiBpZD0icmVsYXRlZCI+UGVyLXVzZXIgd2ViIGRpcmVjdG9yaWVzPC9hPjwvaDI+CiAgICAKICAgIDx0YWJsZSBjbGFzcz0icmVsYXRlZCI+PHRyPjx0aD5SZWxhdGVkIE1vZHVsZXM8L3RoPjx0aD5SZWxhdGVkIERpcmVjdGl2ZXM8L3RoPjwvdHI+PHRyPjx0ZD48dWw+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfdXNlcmRpci5odG1sIj5tb2RfdXNlcmRpcjwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PHRkPjx1bD48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF91c2VyZGlyLmh0bWwjdXNlcmRpciI+VXNlckRpcjwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnltYXRjaCI+RGlyZWN0b3J5TWF0Y2g8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjYWxsb3dvdmVycmlkZSI+QWxsb3dPdmVycmlkZTwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPgogICAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0idXNlcmRpciIgaWQ9InVzZXJkaXIiPlNldHRpbmcgdGhlIGZpbGUgcGF0aCB3aXRoIFVzZXJEaXI8L2E+PC9oMj4KICAgIAoKICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3VzZXJkaXIuaHRtbCN1c2VyZGlyIj5Vc2VyRGlyPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSBzcGVjaWZpZXMgYSBkaXJlY3Rvcnkgb3V0IG9mIHdoaWNoIHBlci11c2VyCiAgICBjb250ZW50IGlzIGxvYWRlZC4gVGhpcyBkaXJlY3RpdmUgbWF5IHRha2Ugc2V2ZXJhbCBkaWZmZXJlbnQgZm9ybXMuPC9wPgoKICAgIDxwPklmIGEgcGF0aCBpcyBnaXZlbiB3aGljaCBkb2VzIG5vdCBzdGFydCB3aXRoIGEgbGVhZGluZyBzbGFzaCwgaXQgaXMKICAgIGFzc3VtZWQgdG8gYmUgYSBkaXJlY3RvcnkgcGF0aCByZWxhdGl2ZSB0byB0aGUgaG9tZSBkaXJlY3Rvcnkgb2YgdGhlCiAgICBzcGVjaWZpZWQgdXNlci4gR2l2ZW4gdGhpcyBjb25maWd1cmF0aW9uOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgVXNlckRpciBwdWJsaWNfaHRtbAogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD50aGUgVVJMIDxjb2RlPmh0dHA6Ly9leGFtcGxlLmNvbS9+cmJvd2VuL2ZpbGUuaHRtbDwvY29kZT4gd2lsbCBiZQogICAgdHJhbnNsYXRlZCB0byB0aGUgZmlsZSBwYXRoCiAgICA8Y29kZT4vaG9tZS9yYm93ZW4vcHVibGljX2h0bWwvZmlsZS5odG1sPC9jb2RlPjwvcD4KCiAgICA8cD5JZiBhIHBhdGggaXMgZ2l2ZW4gc3RhcnRpbmcgd2l0aCBhIHNsYXNoLCBhIGRpcmVjdG9yeSBwYXRoIHdpbGwgYmUKICAgIGNvbnN0cnVjdGVkIHVzaW5nIHRoYXQgcGF0aCwgcGx1cyB0aGUgdXNlcm5hbWUgc3BlY2lmaWVkLiBHaXZlbiB0aGlzCiAgICBjb25maWd1cmF0aW9uOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgVXNlckRpciAvdmFyL2h0bWwKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+dGhlIFVSTCA8Y29kZT5odHRwOi8vZXhhbXBsZS5jb20vfnJib3dlbi9maWxlLmh0bWw8L2NvZGU+IHdpbGwgYmUKICAgIHRyYW5zbGF0ZWQgdG8gdGhlIGZpbGUgcGF0aCA8Y29kZT4vdmFyL2h0bWwvcmJvd2VuL2ZpbGUuaHRtbDwvY29kZT48L3A+CgogICAgPHA+SWYgYSBwYXRoIGlzIHByb3ZpZGVkIHdoaWNoIGNvbnRhaW5zIGFuIGFzdGVyaXNrICgqKSwgYSBwYXRoIGlzIHVzZWQKICAgIGluIHdoaWNoIHRoZSBhc3RlcmlzayBpcyByZXBsYWNlZCB3aXRoIHRoZSB1c2VybmFtZS4gR2l2ZW4gdGhpcwogICAgY29uZmlndXJhdGlvbjo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIFVzZXJEaXIgL3Zhci93d3cvKi9kb2NzCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPnRoZSBVUkwgPGNvZGU+aHR0cDovL2V4YW1wbGUuY29tL35yYm93ZW4vZmlsZS5odG1sPC9jb2RlPiB3aWxsIGJlCiAgICB0cmFuc2xhdGVkIHRvIHRoZSBmaWxlIHBhdGgKICAgIDxjb2RlPi92YXIvd3d3L3Jib3dlbi9kb2NzL2ZpbGUuaHRtbDwvY29kZT48L3A+CgogICAgPHA+TXVsdGlwbGUgZGlyZWN0b3JpZXMgb3IgZGlyZWN0b3J5IHBhdGhzIGNhbiBhbHNvIGJlIHNldC48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIFVzZXJEaXIgcHVibGljX2h0bWwgL3Zhci9odG1sCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkZvciB0aGUgVVJMIDxjb2RlPmh0dHA6Ly9leGFtcGxlLmNvbS9+cmJvd2VuL2ZpbGUuaHRtbDwvY29kZT4sIAogICAgQXBhY2hlIHdpbGwgc2VhcmNoIGZvciA8Y29kZT5+cmJvd2VuPC9jb2RlPi4gSWYgaXQgaXNuJ3QgZm91bmQsIAogICAgQXBhY2hlIHdpbGwgc2VhcmNoIGZvciA8Y29kZT5yYm93ZW48L2NvZGU+IGluIDxjb2RlPi92YXIvaHRtbDwvY29kZT4uIElmCiAgICBmb3VuZCwgdGhlIGFib3ZlIFVSTCB3aWxsIHRoZW4gYmUgdHJhbnNsYXRlZCB0byB0aGUgZmlsZSBwYXRoIAogICAgPGNvZGU+L3Zhci9odG1sL3Jib3dlbi9maWxlLmh0bWw8L2NvZGU+PC9wPgoKICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJyZWRpcmVjdCIgaWQ9InJlZGlyZWN0Ij5SZWRpcmVjdGluZyB0byBleHRlcm5hbCBVUkxzPC9hPjwvaDI+CiAgICAKICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3VzZXJkaXIuaHRtbCN1c2VyZGlyIj5Vc2VyRGlyPC9hPjwvY29kZT4gZGlyZWN0aXZlIGNhbiBiZQogICAgICB1c2VkIHRvIHJlZGlyZWN0IHVzZXIgZGlyZWN0b3J5IHJlcXVlc3RzIHRvIGV4dGVybmFsIFVSTHMuPC9wPgogICAgICAKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBVc2VyRGlyIGh0dHA6Ly9leGFtcGxlLm9yZy91c2Vycy8qLwogICAgPC9jb2RlPjwvcD48L2Rpdj4KICAgIAogICAgPHA+VGhlIGFib3ZlIGV4YW1wbGUgd2lsbCByZWRpcmVjdCBhIHJlcXVlc3QgZm9yCiAgICA8Y29kZT5odHRwOi8vZXhhbXBsZS5jb20vfmJvYi9hYmMuaHRtbDwvY29kZT4gdG8KICAgIDxjb2RlPmh0dHA6Ly9leGFtcGxlLm9yZy91c2Vycy9ib2IvYWJjLmh0bWw8L2NvZGU+LjwvcD4KICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJlbmFibGUiIGlkPSJlbmFibGUiPlJlc3RyaWN0aW5nIHdoYXQgdXNlcnMgYXJlIHBlcm1pdHRlZCB0byB1c2UgdGhpcyAKICAgIGZlYXR1cmU8L2E+PC9oMj4KICAgIAoKICAgIDxwPlVzaW5nIHRoZSBzeW50YXggc2hvd24gaW4gdGhlIFVzZXJEaXIgZG9jdW1lbnRhdGlvbiwgeW91IGNhbiByZXN0cmljdAogICAgd2hhdCB1c2VycyBhcmUgcGVybWl0dGVkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uYWxpdHk6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBVc2VyRGlyIGRpc2FibGVkIHJvb3QganJvIGZpc2gKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VGhlIGNvbmZpZ3VyYXRpb24gYWJvdmUgd2lsbCBlbmFibGUgdGhlIGZlYXR1cmUgZm9yIGFsbCB1c2VycwogICAgZXhjZXB0IGZvciB0aG9zZSBsaXN0ZWQgaW4gdGhlIDxjb2RlPmRpc2FibGVkPC9jb2RlPiBzdGF0ZW1lbnQuCiAgICBZb3UgY2FuLCBsaWtld2lzZSwgZGlzYWJsZSB0aGUgZmVhdHVyZSBmb3IgYWxsIGJ1dCBhIGZldyB1c2VycyBieQogICAgdXNpbmcgYSBjb25maWd1cmF0aW9uIGxpa2UgdGhlIGZvbGxvd2luZzo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIFVzZXJEaXIgZGlzYWJsZWQ8YnIgLz4KICAgICAgVXNlckRpciBlbmFibGVkIHJib3dlbiBrcmlldHoKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+U2VlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfdXNlcmRpci5odG1sI3VzZXJkaXIiPlVzZXJEaXI8L2E+PC9jb2RlPgogICAgZG9jdW1lbnRhdGlvbiBmb3IgYWRkaXRpb25hbCBleGFtcGxlcy48L3A+CgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNnaSIgaWQ9ImNnaSI+RW5hYmxpbmcgYSBjZ2kgZGlyZWN0b3J5IGZvciBlYWNoIHVzZXI8L2E+PC9oMj4KICAKCiAgIDxwPkluIG9yZGVyIHRvIGdpdmUgZWFjaCB1c2VyIHRoZWlyIG93biBjZ2ktYmluIGRpcmVjdG9yeSwgeW91IGNhbiB1c2UKICAgIGEgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnkiPiZsdDtEaXJlY3RvcnkmZ3Q7PC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSB0byBtYWtlIGEgcGFydGljdWxhciBzdWJkaXJlY3Rvcnkgb2YgYSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkKICAgIGNnaS1lbmFibGVkLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgJmx0O0RpcmVjdG9yeSAvaG9tZS8qL3B1YmxpY19odG1sL2NnaS1iaW4vJmd0OzxiciAvPgogICAgICAgT3B0aW9ucyBFeGVjQ0dJPGJyIC8+CiAgICAgICBTZXRIYW5kbGVyIGNnaS1zY3JpcHQ8YnIgLz4KICAgICAgICZsdDsvRGlyZWN0b3J5Jmd0OwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5UaGVuLCBwcmVzdW1pbmcgdGhhdCA8Y29kZT5Vc2VyRGlyPC9jb2RlPiBpcyBzZXQgdG8KICAgIDxjb2RlPnB1YmxpY19odG1sPC9jb2RlPiwgYSBjZ2kgcHJvZ3JhbSA8Y29kZT5leGFtcGxlLmNnaTwvY29kZT4KICAgIGNvdWxkIGJlIGxvYWRlZCBmcm9tIHRoYXQgZGlyZWN0b3J5IGFzOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgIGh0dHA6Ly9leGFtcGxlLmNvbS9+cmJvd2VuL2NnaS1iaW4vZXhhbXBsZS5jZ2kKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iaHRhY2Nlc3MiIGlkPSJodGFjY2VzcyI+QWxsb3dpbmcgdXNlcnMgdG8gYWx0ZXIgY29uZmlndXJhdGlvbjwvYT48L2gyPgogICAgCgogICAgPHA+SWYgeW91IHdhbnQgdG8gYWxsb3dzIHVzZXJzIHRvIG1vZGlmeSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gaW4KICAgIHRoZWlyIHdlYiBzcGFjZSwgdGhleSB3aWxsIG5lZWQgdG8gdXNlIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZXMgdG8KICAgIG1ha2UgdGhlc2UgY2hhbmdlZC4gRW5zdXJlIHRoYXQgeW91IGhhdmUgc2V0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjYWxsb3dvdmVycmlkZSI+QWxsb3dPdmVycmlkZTwvYT48L2NvZGU+IHRvIGEKICAgIHZhbHVlIHN1ZmZpY2llbnQgZm9yIHRoZSBkaXJlY3RpdmVzIHRoYXQgeW91IHdhbnQgdG8gcGVybWl0IHRoZSB1c2VycwogICAgdG8gbW9kaWZ5LiBTZWUgdGhlIDxhIGhyZWY9Imh0YWNjZXNzLmh0bWwiPi5odGFjY2VzcyB0dXRvcmlhbDwvYT4gZm9yCiAgICBhZGRpdGlvbmFsIGRldGFpbHMgb24gaG93IHRoaXMgd29ya3MuPC9wPgoKICA8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9ob3d0by9wdWJsaWNfaHRtbC5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvaG93dG8vcHVibGljX2h0bWwuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9ob3d0by9wdWJsaWNfaHRtbC5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL2hvd3RvL3B1YmxpY19odG1sLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL2hvd3RvL3B1YmxpY19odG1sLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTEgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==