PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5yb3RhdGVsb2dzIC0gUGlwZWQgbG9nZ2luZyBwcm9ncmFtIHRvIHJvdGF0ZSBBcGFjaGUgbG9ncyAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Qcm9ncmFtczwvYT48L2Rpdj48ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPjxkaXYgaWQ9InByZWFtYmxlIj48aDE+cm90YXRlbG9ncyAtIFBpcGVkIGxvZ2dpbmcgcHJvZ3JhbSB0byByb3RhdGUgQXBhY2hlIGxvZ3M8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL3Byb2dyYW1zL3JvdGF0ZWxvZ3MuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL3Byb2dyYW1zL3JvdGF0ZWxvZ3MuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9wcm9ncmFtcy9yb3RhdGVsb2dzLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL3Byb2dyYW1zL3JvdGF0ZWxvZ3MuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KCiAgICAgPHA+PGNvZGU+cm90YXRlbG9nczwvY29kZT4gaXMgYSBzaW1wbGUgcHJvZ3JhbSBmb3IgdXNlIGluCiAgICAgY29uanVuY3Rpb24gd2l0aCBBcGFjaGUncyBwaXBlZCBsb2dmaWxlIGZlYXR1cmUuICBJdCBzdXBwb3J0cwogICAgIHJvdGF0aW9uIGJhc2VkIG9uIGEgdGltZSBpbnRlcnZhbCBvciBtYXhpbXVtIHNpemUgb2YgdGhlIGxvZy48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjx1bCBpZD0idG9jIj48bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzeW5vcHNpcyI+U3lub3BzaXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjb3B0aW9ucyI+T3B0aW9uczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcG9ydGFiaWxpdHkiPlBvcnRhYmlsaXR5PC9hPjwvbGk+CjwvdWw+PGgzPlNlZSBhbHNvPC9oMz48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJzeW5vcHNpcyIgaWQ9InN5bm9wc2lzIj5TeW5vcHNpczwvYT48L2gyPgoKICAgICA8cD48Y29kZT48c3Ryb25nPnJvdGF0ZWxvZ3M8L3N0cm9uZz4KICAgICBbIC08c3Ryb25nPmw8L3N0cm9uZz4gXQogICAgIFsgLTxzdHJvbmc+TDwvc3Ryb25nPiA8dmFyPmxpbmtuYW1lPC92YXI+IF0KICAgICBbIC08c3Ryb25nPnA8L3N0cm9uZz4gPHZhcj5wcm9ncmFtPC92YXI+IF0KICAgICBbIC08c3Ryb25nPmY8L3N0cm9uZz4gXQogICAgIFsgLTxzdHJvbmc+dDwvc3Ryb25nPiBdCiAgICAgWyAtPHN0cm9uZz52PC9zdHJvbmc+IF0KICAgICBbIC08c3Ryb25nPmU8L3N0cm9uZz4gXQogICAgIFsgLTxzdHJvbmc+Yzwvc3Ryb25nPiBdCiAgICAgWyAtPHN0cm9uZz5uPC9zdHJvbmc+IDx2YXI+bnVtYmVyLW9mLWZpbGVzPC92YXI+IF0KICAgICA8dmFyPmxvZ2ZpbGU8L3Zhcj4KICAgICA8dmFyPnJvdGF0aW9udGltZTwvdmFyPnw8dmFyPmZpbGVzaXplPC92YXI+KEJ8S3xNfEcpCiAgICAgWyA8dmFyPm9mZnNldDwvdmFyPiBdPC9jb2RlPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3B0aW9ucyIgaWQ9Im9wdGlvbnMiPk9wdGlvbnM8L2E+PC9oMj4KCjxkbD4KCjxkdD48Y29kZT4tbDwvY29kZT48L2R0Pgo8ZGQ+Q2F1c2VzIHRoZSB1c2Ugb2YgbG9jYWwgdGltZSByYXRoZXIgdGhhbiBHTVQgYXMgdGhlIGJhc2UgZm9yIHRoZQppbnRlcnZhbCBvciBmb3IgPGNvZGU+c3RyZnRpbWUoMyk8L2NvZGU+IGZvcm1hdHRpbmcgd2l0aCBzaXplLWJhc2VkCnJvdGF0aW9uLjwvZGQ+Cgo8ZHQ+PGNvZGU+LUw8L2NvZGU+IDx2YXI+bGlua25hbWU8L3Zhcj48L2R0Pgo8ZGQ+Q2F1c2VzIGEgaGFyZCBsaW5rIHRvIGJlIG1hZGUgZnJvbSB0aGUgY3VycmVudCBsb2dmaWxlCnRvIHRoZSBzcGVjaWZpZWQgbGluayBuYW1lLiAgVGhpcyBjYW4gYmUgdXNlZCB0byB3YXRjaAp0aGUgbG9nIGNvbnRpbnVvdXNseSBhY3Jvc3Mgcm90YXRpb25zIHVzaW5nIGEgY29tbWFuZCBsaWtlCjxjb2RlPnRhaWwgLUYgbGlua25hbWU8L2NvZGU+LjwvZGQ+Cgo8ZHQ+PGNvZGU+LXA8L2NvZGU+IDx2YXI+cHJvZ3JhbTwvdmFyPjwvZHQ+Cgo8ZGQ+SWYgZ2l2ZW4sIDxjb2RlPnJvdGF0ZWxvZ3M8L2NvZGU+IHdpbGwgZXhlY3V0ZSB0aGUgc3BlY2lmaWVkCnByb2dyYW0gZXZlcnkgdGltZSBhIG5ldyBsb2cgZmlsZSBpcyBvcGVuZWQuICBUaGUgZmlsZW5hbWUgb2YgdGhlCm5ld2x5IG9wZW5lZCBmaWxlIGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIHByb2dyYW0uICBJZgpleGVjdXRpbmcgYWZ0ZXIgYSByb3RhdGlvbiwgdGhlIG9sZCBsb2cgZmlsZSBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZAphcmd1bWVudC4gIDxjb2RlPnJvdGF0ZWxvZ3M8L2NvZGU+IGRvZXMgbm90IHdhaXQgZm9yIHRoZSBzcGVjaWZpZWQKcHJvZ3JhbSB0byB0ZXJtaW5hdGUgYmVmb3JlIGNvbnRpbnVpbmcgdG8gb3BlcmF0ZSwgYW5kIHdpbGwgbm90IGxvZwphbnkgZXJyb3IgY29kZSByZXR1cm5lZCBvbiB0ZXJtaW5hdGlvbi4gIFRoZSBzcGF3bmVkIHByb2dyYW0gdXNlcyB0aGUKc2FtZSBzdGRpbiwgc3Rkb3V0LCBhbmQgc3RkZXJyIGFzIHJvdGF0ZWxvZ3MgaXRzZWxmLCBhbmQgYWxzbyBpbmhlcml0cwp0aGUgZW52aXJvbm1lbnQuPC9kZD4KCjxkdD48Y29kZT4tZjwvY29kZT48L2R0Pgo8ZGQ+Q2F1c2VzIHRoZSBsb2dmaWxlIHRvIGJlIG9wZW5lZCBpbW1lZGlhdGVseSwgYXMgc29vbiBhcwo8Y29kZT5yb3RhdGVsb2dzPC9jb2RlPiBzdGFydHMsIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlCmZpcnN0IGxvZ2ZpbGUgZW50cnkgdG8gYmUgcmVhZCAoZm9yIG5vbi1idXN5IHNpdGVzLCB0aGVyZSBtYXkgYmUKYSBzdWJzdGFudGlhbCBkZWxheSBiZXR3ZWVuIHdoZW4gdGhlIHNlcnZlciBpcyBzdGFydGVkCmFuZCB3aGVuIHRoZSBmaXJzdCByZXF1ZXN0IGlzIGhhbmRsZWQsIG1lYW5pbmcgdGhhdCB0aGUKYXNzb2NpYXRlZCBsb2dmaWxlIGRvZXMgbm90ICJleGlzdCIgdW50aWwgdGhlbiwgd2hpY2gKY2F1c2VzIHByb2JsZW1zIGZyb20gc29tZSBhdXRvbWF0ZWQgbG9nZ2luZyB0b29scyk8L2RkPgoKPGR0Pjxjb2RlPi10PC9jb2RlPjwvZHQ+CjxkZD5DYXVzZXMgdGhlIGxvZ2ZpbGUgdG8gYmUgdHJ1bmNhdGVkIGluc3RlYWQgb2Ygcm90YXRlZC4gVGhpcyBpcwp1c2VmdWwgd2hlbiBhIGxvZyBpcyBwcm9jZXNzZWQgaW4gcmVhbCB0aW1lIGJ5IGEgY29tbWFuZCBsaWtlIHRhaWwsCmFuZCB0aGVyZSBpcyBubyBuZWVkIGZvciBhcmNoaXZlZCBkYXRhLiBObyBzdWZmaXggd2lsbCBiZSBhZGRlZCB0bwp0aGUgZmlsZW5hbWUsIGhvd2V2ZXIgZm9ybWF0IHN0cmluZ3MgY29udGFpbmluZyAnJScgY2hhcmFjdGVycwp3aWxsIGJlIHJlc3BlY3RlZC4KPC9kZD4KCjxkdD48Y29kZT4tdjwvY29kZT48L2R0Pgo8ZGQ+UHJvZHVjZSB2ZXJib3NlIG91dHB1dCBvbiBTVERFUlIuIFRoZSBvdXRwdXQgY29udGFpbnMKdGhlIHJlc3VsdCBvZiB0aGUgY29uZmlndXJhdGlvbiBwYXJzaW5nLCBhbmQgYWxsIGZpbGUgb3BlbiBhbmQKY2xvc2UgYWN0aW9ucy48L2RkPgoKPGR0Pjxjb2RlPi1lPC9jb2RlPjwvZHQ+CjxkZD5FY2hvIGxvZ3MgdGhyb3VnaCB0byBzdGRvdXQuIFVzZWZ1bCB3aGVuIGxvZ3MgbmVlZCB0byBiZSBmdXJ0aGVyCnByb2Nlc3NlZCBpbiByZWFsIHRpbWUgYnkgYSBmdXJ0aGVyIHRvb2wgaW4gdGhlIGNoYWluLjwvZGQ+Cgo8ZHQ+PGNvZGU+LWM8L2NvZGU+PC9kdD4KPGRkPkNyZWF0ZSBsb2cgZmlsZSBmb3IgZWFjaCBpbnRlcnZhbCwgZXZlbiBpZiBlbXB0eS48L2RkPgoKPGR0Pjxjb2RlPi1uIDx2YXI+bnVtYmVyLW9mLWZpbGVzPC92YXI+PC9jb2RlPjwvZHQ+CjxkZD5Vc2UgYSBjaXJjdWxhciBsaXN0IG9mIGZpbGVuYW1lcyB3aXRob3V0IHRpbWVzdGFtcHMuCldpdGggLW4gMywgdGhlIHNlcmllcyBvZiBsb2cgZmlsZXMgb3BlbmVkIHdvdWxkIGJlCiJsb2dmaWxlIiwgImxvZ2ZpbGUuMSIsICJsb2dmaWxlLjIiLCB0aGVuIG92ZXJ3cml0aW5nICJsb2dmaWxlIi4KQXZhaWxhYmxlIGluIDIuNC41IGFuZCBsYXRlci48L2RkPgoKPGR0Pjxjb2RlPjx2YXI+bG9nZmlsZTwvdmFyPjwvY29kZT48L2R0PgoKPGRkPjxwPlRoZSBwYXRoIHBsdXMgYmFzZW5hbWUgb2YgdGhlIGxvZ2ZpbGUuICBJZiA8dmFyPmxvZ2ZpbGU8L3Zhcj4KaW5jbHVkZXMgYW55ICclJyBjaGFyYWN0ZXJzLCBpdCBpcyB0cmVhdGVkIGFzIGEgZm9ybWF0IHN0cmluZyBmb3IKPGNvZGU+c3RyZnRpbWUoMyk8L2NvZGU+LiAgT3RoZXJ3aXNlLCB0aGUgc3VmZml4Cjx2YXI+Lm5ubm5ubm5ubm48L3Zhcj4gaXMgYXV0b21hdGljYWxseSBhZGRlZCBhbmQgaXMgdGhlIHRpbWUgaW4Kc2Vjb25kcyAodW5sZXNzIHRoZSAtdCBvcHRpb24gaXMgdXNlZCkuIEJvdGggZm9ybWF0cyBjb21wdXRlIHRoZQpzdGFydCB0aW1lIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBwZXJpb2QuICBGb3IgZXhhbXBsZSwKaWYgYSByb3RhdGlvbiB0aW1lIG9mIDg2NDAwIGlzIHNwZWNpZmllZCwgdGhlIGhvdXIsIG1pbnV0ZSwgYW5kCnNlY29uZCBmaWVsZHMgY3JlYXRlZCBmcm9tIHRoZSA8Y29kZT5zdHJmdGltZSgzKTwvY29kZT4gZm9ybWF0IHdpbGwKYWxsIGJlIHplcm8sIHJlZmVycmluZyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IDI0LWhvdXIKcGVyaW9kIChtaWRuaWdodCkuPC9wPgo8cD5XaGVuIHVzaW5nIDxjb2RlPnN0cmZ0aW1lKDMpPC9jb2RlPiBmaWxlbmFtZSBmb3JtYXR0aW5nLApiZSBzdXJlIHRoZSBsb2cgZmlsZSBmb3JtYXQgaGFzIGVub3VnaCBncmFudWxhcml0eSB0byBwcm9kdWNlCmEgZGlmZmVyZW50IGZpbGUgbmFtZSBlYWNoIHRpbWUgdGhlIGxvZ3MgYXJlIHJvdGF0ZWQuICBPdGhlcndpc2UKcm90YXRpb24gd2lsbCBvdmVyd3JpdGUgdGhlIHNhbWUgZmlsZSBpbnN0ZWFkIG9mIHN0YXJ0aW5nIGEgbmV3Cm9uZS4gIEZvciBleGFtcGxlLCBpZiA8dmFyPmxvZ2ZpbGU8L3Zhcj4gd2FzCjxjb2RlPi92YXIvbG9nL2Vycm9ybG9nLiVZLSVtLSVkPC9jb2RlPiB3aXRoIGxvZyByb3RhdGlvbiBhdCA1Cm1lZ2FieXRlcywgYnV0IDUgbWVnYWJ5dGVzIHdhcyByZWFjaGVkIHR3aWNlIGluIHRoZSBzYW1lIGRheSwgdGhlCnNhbWUgbG9nIGZpbGUgbmFtZSB3b3VsZCBiZSBwcm9kdWNlZCBhbmQgbG9nIHJvdGF0aW9uIHdvdWxkIGtlZXAKd3JpdGluZyB0byB0aGUgc2FtZSBmaWxlLjwvcD4KPC9kZD4KCjxkdD48Y29kZT48dmFyPnJvdGF0aW9udGltZTwvdmFyPjwvY29kZT48L2R0PgoKPGRkPlRoZSB0aW1lIGJldHdlZW4gbG9nIGZpbGUgcm90YXRpb25zIGluIHNlY29uZHMuICBUaGUgcm90YXRpb24Kb2NjdXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBpbnRlcnZhbC4gIEZvciBleGFtcGxlLCBpZiB0aGUKcm90YXRpb24gdGltZSBpcyAzNjAwLCB0aGUgbG9nIGZpbGUgd2lsbCBiZSByb3RhdGVkIGF0IHRoZSBiZWdpbm5pbmcKb2YgZXZlcnkgaG91cjsgaWYgdGhlIHJvdGF0aW9uIHRpbWUgaXMgODY0MDAsIHRoZSBsb2cgZmlsZSB3aWxsIGJlCnJvdGF0ZWQgZXZlcnkgbmlnaHQgYXQgbWlkbmlnaHQuICAoSWYgbm8gZGF0YSBpcyBsb2dnZWQgZHVyaW5nIGFuCmludGVydmFsLCBubyBmaWxlIHdpbGwgYmUgY3JlYXRlZC4pPC9kZD4KCjxkdD48Y29kZT48dmFyPmZpbGVzaXplPC92YXI+KEJ8S3xNfEcpPC9jb2RlPjwvZHQ+Cgo8ZGQ+VGhlIG1heGltdW0gZmlsZSBzaXplIGluIGZvbGxvd2VkIGJ5IGV4YWN0bHkgb25lIG9mIHRoZSBsZXR0ZXJzCjxjb2RlPkI8L2NvZGU+IChCeXRlcyksIDxjb2RlPks8L2NvZGU+IChLQnl0ZXMpLCA8Y29kZT5NPC9jb2RlPiAoTUJ5dGVzKQpvciA8Y29kZT5HPC9jb2RlPiAoR0J5dGVzKS4KPHA+CldoZW4gdGltZSBhbmQgc2l6ZSBhcmUgc3BlY2lmaWVkLCB0aGUgc2l6ZSBtdXN0IGJlIGdpdmVuIGFmdGVyIHRoZSB0aW1lLgpSb3RhdGlvbiB3aWxsIG9jY3VyIHdoZW5ldmVyIGVpdGhlciB0aW1lIG9yIHNpemUgbGltaXRzIGFyZSByZWFjaGVkLgo8L3A+CjwvZGQ+Cgo8ZHQ+PGNvZGU+PHZhcj5vZmZzZXQ8L3Zhcj48L2NvZGU+PC9kdD4KCjxkZD5UaGUgbnVtYmVyIG9mIG1pbnV0ZXMgb2Zmc2V0IGZyb20gVVRDLiAgSWYgb21pdHRlZCwgemVybyBpcwphc3N1bWVkIGFuZCBVVEMgaXMgdXNlZC4gIEZvciBleGFtcGxlLCB0byB1c2UgbG9jYWwgdGltZSBpbiB0aGUgem9uZQpVVEMgLTUgaG91cnMsIHNwZWNpZnkgYSB2YWx1ZSBvZiA8Y29kZT4tMzAwPC9jb2RlPiBmb3IgdGhpcyBhcmd1bWVudC4KSW4gbW9zdCBjYXNlcywgPGNvZGU+LWw8L2NvZGU+IHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2Ygc3BlY2lmeWluZwphbiBvZmZzZXQuPC9kZD4KCjwvZGw+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImV4YW1wbGVzIiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvaDI+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICBDdXN0b21Mb2cgInxiaW4vcm90YXRlbG9ncyAvdmFyL2xvZy9sb2dmaWxlIDg2NDAwIiBjb21tb24KPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgPHA+VGhpcyBjcmVhdGVzIHRoZSBmaWxlcyAvdmFyL2xvZy9sb2dmaWxlLm5ubm4gd2hlcmUgbm5ubiAgaXMKICAgICB0aGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggdGhlIGxvZyBub21pbmFsbHkgc3RhcnRzICh0aGlzIHRpbWUKICAgICB3aWxsIGFsd2F5cyBiZSBhIG11bHRpcGxlIG9mIHRoZSByb3RhdGlvbiB0aW1lLCBzbyAgeW91ICBjYW4KICAgICBzeW5jaHJvbml6ZSBjcm9uIHNjcmlwdHMgd2l0aCBpdCkuICBBdCB0aGUgZW5kIG9mIGVhY2ggcm90YXRpb24KICAgICB0aW1lIChoZXJlIGFmdGVyIDI0IGhvdXJzKSBhIG5ldyBsb2cgaXMgc3RhcnRlZC48L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICBDdXN0b21Mb2cgInxiaW4vcm90YXRlbG9ncyAtbCAvdmFyL2xvZy9sb2dmaWxlLiVZLiVtLiVkIDg2NDAwIiBjb21tb24KPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgPHA+VGhpcyBjcmVhdGVzIHRoZSBmaWxlcyAvdmFyL2xvZy9sb2dmaWxlLnl5eXkubW0uZGQgd2hlcmUKICAgICB5eXl5IGlzIHRoZSB5ZWFyLCBtbSBpcyB0aGUgbW9udGgsIGFuZCBkZCBpcyB0aGUgZGF5IG9mIHRoZSBtb250aC4KICAgICBMb2dnaW5nIHdpbGwgc3dpdGNoIHRvIGEgbmV3IGZpbGUgZXZlcnkgZGF5IGF0IG1pZG5pZ2h0LCBsb2NhbCB0aW1lLjwvcD4KCjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgIEN1c3RvbUxvZyAifGJpbi9yb3RhdGVsb2dzIC92YXIvbG9nL2xvZ2ZpbGUgNU0iIGNvbW1vbgo8L2NvZGU+PC9wPjwvZGl2PgoKICAgICA8cD5UaGlzIGNvbmZpZ3VyYXRpb24gd2lsbCByb3RhdGUgdGhlIGxvZ2ZpbGUgd2hlbmV2ZXIgaXQgcmVhY2hlcwogICAgIGEgc2l6ZSBvZiA1IG1lZ2FieXRlcy48L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICBFcnJvckxvZyAifGJpbi9yb3RhdGVsb2dzIC92YXIvbG9nL2Vycm9ybG9nLiVZLSVtLSVkLSVIXyVNXyVTIDVNIgo8L2NvZGU+PC9wPjwvZGl2PgogICAgIDxwPlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIHJvdGF0ZSB0aGUgZXJyb3IgbG9nZmlsZSB3aGVuZXZlciBpdAogICAgIHJlYWNoZXMgYSBzaXplIG9mIDUgbWVnYWJ5dGVzLCBhbmQgdGhlIHN1ZmZpeCB0byB0aGUgbG9nZmlsZSBuYW1lCiAgICAgd2lsbCBiZSBjcmVhdGVkIG9mIHRoZSBmb3JtCiAgICAgPGNvZGU+ZXJyb3Jsb2cuWVlZWS1tbS1kZC1ISF9NTV9TUzwvY29kZT4uPC9wPgoKPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgQ3VzdG9tTG9nICJ8YmluL3JvdGF0ZWxvZ3MgLXQgL3Zhci9sb2cvbG9nZmlsZSA4NjQwMCIgY29tbW9uCjwvY29kZT48L3A+PC9kaXY+CgogICAgIDxwPlRoaXMgY3JlYXRlcyB0aGUgZmlsZSAvdmFyL2xvZy9sb2dmaWxlLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGF0CiAgICAgc3RhcnR1cCBhbmQgdGhlbiB0cnVuY2F0aW5nIHRoZSBmaWxlIG9uY2UgcGVyIGRheS4gSXQgaXMgZXhwZWN0ZWQKICAgICBpbiB0aGlzIHNjZW5hcmlvIHRoYXQgYSBzZXBhcmF0ZSBwcm9jZXNzIChzdWNoIGFzIHRhaWwpIHdvdWxkCiAgICAgcHJvY2VzcyB0aGUgZmlsZSBpbiByZWFsIHRpbWUuPC9wPgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0icG9ydGFiaWxpdHkiIGlkPSJwb3J0YWJpbGl0eSI+UG9ydGFiaWxpdHk8L2E+PC9oMj4KCjxwPlRoZSBmb2xsb3dpbmcgbG9nZmlsZSBmb3JtYXQgc3RyaW5nIHN1YnN0aXR1dGlvbnMgc2hvdWxkIGJlCnN1cHBvcnRlZCBieSBhbGwgPGNvZGU+c3RyZnRpbWUoMyk8L2NvZGU+IGltcGxlbWVudGF0aW9ucywgc2VlCnRoZSA8Y29kZT5zdHJmdGltZSgzKTwvY29kZT4gbWFuIHBhZ2UgZm9yIGxpYnJhcnktc3BlY2lmaWMKZXh0ZW5zaW9ucy48L3A+Cgo8dGFibGUgY2xhc3M9ImJvcmRlcmVkIj48dHI+PHRkPjxjb2RlPiVBPC9jb2RlPjwvdGQ+PHRkPmZ1bGwgd2Vla2RheSBuYW1lIChsb2NhbGl6ZWQpPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiVhPC9jb2RlPjwvdGQ+PHRkPjMtY2hhcmFjdGVyIHdlZWtkYXkgbmFtZSAobG9jYWxpemVkKTwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lQjwvY29kZT48L3RkPjx0ZD5mdWxsIG1vbnRoIG5hbWUgKGxvY2FsaXplZCk8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JWI8L2NvZGU+PC90ZD48dGQ+My1jaGFyYWN0ZXIgbW9udGggbmFtZSAobG9jYWxpemVkKTwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lYzwvY29kZT48L3RkPjx0ZD5kYXRlIGFuZCB0aW1lIChsb2NhbGl6ZWQpPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiVkPC9jb2RlPjwvdGQ+PHRkPjItZGlnaXQgZGF5IG9mIG1vbnRoPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVIPC9jb2RlPjwvdGQ+PHRkPjItZGlnaXQgaG91ciAoMjQgaG91ciBjbG9jayk8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JUk8L2NvZGU+PC90ZD48dGQ+Mi1kaWdpdCBob3VyICgxMiBob3VyIGNsb2NrKTwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lajwvY29kZT48L3RkPjx0ZD4zLWRpZ2l0IGRheSBvZiB5ZWFyPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiVNPC9jb2RlPjwvdGQ+PHRkPjItZGlnaXQgbWludXRlPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVtPC9jb2RlPjwvdGQ+PHRkPjItZGlnaXQgbW9udGg8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JXA8L2NvZGU+PC90ZD48dGQ+YW0vcG0gb2YgMTIgaG91ciBjbG9jayAobG9jYWxpemVkKTwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lUzwvY29kZT48L3RkPjx0ZD4yLWRpZ2l0IHNlY29uZDwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4lVTwvY29kZT48L3RkPjx0ZD4yLWRpZ2l0IHdlZWsgb2YgeWVhcgooU3VuZGF5IGZpcnN0IGRheSBvZiB3ZWVrKTwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lVzwvY29kZT48L3RkPjx0ZD4yLWRpZ2l0IHdlZWsgb2YgeWVhcgooTW9uZGF5IGZpcnN0IGRheSBvZiB3ZWVrKTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4ldzwvY29kZT48L3RkPjx0ZD4xLWRpZ2l0IHdlZWtkYXkKKFN1bmRheSBmaXJzdCBkYXkgb2Ygd2Vlayk8L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JVg8L2NvZGU+PC90ZD48dGQ+dGltZSAobG9jYWxpemVkKTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4leDwvY29kZT48L3RkPjx0ZD5kYXRlIChsb2NhbGl6ZWQpPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVZPC9jb2RlPjwvdGQ+PHRkPjQtZGlnaXQgeWVhcjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4leTwvY29kZT48L3RkPjx0ZD4yLWRpZ2l0IHllYXI8L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JVo8L2NvZGU+PC90ZD48dGQ+dGltZSB6b25lIG5hbWU8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JSU8L2NvZGU+PC90ZD48dGQ+bGl0ZXJhbCBgJSc8L3RkPjwvdHI+CjwvdGFibGU+Cgo8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9wcm9ncmFtcy9yb3RhdGVsb2dzLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9wcm9ncmFtcy9yb3RhdGVsb2dzLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vcHJvZ3JhbXMvcm90YXRlbG9ncy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci9wcm9ncmFtcy9yb3RhdGVsb2dzLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9wcm9ncmFtcy9yb3RhdGVsb2dzLmh0bWwnOwooZnVuY3Rpb24odywgZCkgewogICAgaWYgKHcubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNhc2UoKSA9PSAiaHR0cGQuYXBhY2hlLm9yZyIpIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPjxcL2Rpdj4nKTsKICAgICAgICB2YXIgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgcy5hc3luYyA9IHRydWU7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9jb21tZW50cy5hcGFjaGUub3JnL3Nob3dfY29tbWVudHMubHVhP3NpdGU9JyArIGNvbW1lbnRzX3Nob3J0bmFtZSArICcmcGFnZT0nICsgY29tbWVudHNfaWRlbnRpZmllcjsKICAgICAgICAoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQocyk7CiAgICB9CiAgICBlbHNlIHsgCiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj5Db21tZW50cyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgcGFnZSBhdCB0aGUgbW9tZW50LjxcL2Rpdj4nKTsKICAgIH0KfSkod2luZG93LCBkb2N1bWVudCk7Ci8vLS0+PCFdXT48L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMjAxNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+