PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5BcGFjaGUgSVAtYmFzZWQgVmlydHVhbCBIb3N0IFN1cHBvcnQgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5IGlkPSJtYW51YWwtcGFnZSI+PGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD4KPHAgY2xhc3M9ImFwYWNoZSI+QXBhY2hlIEhUVFAgU2VydmVyIFZlcnNpb24gMi40PC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLnBuZyIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi4vIj5WZXJzaW9uIDIuNDwvYT4gJmd0OyA8YSBocmVmPSIuLyI+VmlydHVhbCBIb3N0czwvYT48L2Rpdj48ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlIElQLWJhc2VkIFZpcnR1YWwgSG9zdCBTdXBwb3J0PC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi92aG9zdHMvaXAtYmFzZWQuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL3Zob3N0cy9pcC1iYXNlZC5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL3Zob3N0cy9pcC1iYXNlZC5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL3Zob3N0cy9pcC1iYXNlZC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci92aG9zdHMvaXAtYmFzZWQuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9mb3VuZGF0aW9uL2NvbnRyaWJ1dGluZy5odG1sIiBjbGFzcz0iYmFkZ2UiPjxpbWcgc3JjPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2ltYWdlcy9TdXBwb3J0QXBhY2hlLXNtYWxsLnBuZyIgYWx0PSJTdXBwb3J0IEFwYWNoZSEiIC8+PC9hPjx1bCBpZD0idG9jIj48bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleHBsYW5hdGlvbiI+V2hhdCBpcyBJUC1iYXNlZCB2aXJ0dWFsIGhvc3Rpbmc8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcmVxdWlyZW1lbnRzIj5TeXN0ZW0gcmVxdWlyZW1lbnRzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2hvd3RvIj5Ib3cgdG8gc2V0IHVwIEFwYWNoZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNtdWx0aXBsZSI+U2V0dGluZyB1cCBtdWx0aXBsZSBkYWVtb25zPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3NpbmdsZSI+U2V0dGluZyB1cCBhIHNpbmdsZSBkYWVtb24KICB3aXRoIHZpcnR1YWwgaG9zdHM8L2E+PC9saT4KPC91bD48aDM+U2VlIGFsc288L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPgo8YSBocmVmPSJuYW1lLWJhc2VkLmh0bWwiPk5hbWUtYmFzZWQgVmlydHVhbCBIb3N0cyBTdXBwb3J0PC9hPgo8L2xpPjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJleHBsYW5hdGlvbiIgaWQ9ImV4cGxhbmF0aW9uIj5XaGF0IGlzIElQLWJhc2VkIHZpcnR1YWwgaG9zdGluZzwvYT48L2gyPgo8cD5JUC1iYXNlZCB2aXJ0dWFsIGhvc3RpbmcgaXMgYSBtZXRob2QgdG8gYXBwbHkgZGlmZmVyZW50IGRpcmVjdGl2ZXMKYmFzZWQgb24gdGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgYSByZXF1ZXN0IGlzIHJlY2VpdmVkIG9uLiAgTW9zdCBjb21tb25seSwKdGhpcyBpcyB1c2VkIHRvIHNlcnZlIGRpZmZlcmVudCB3ZWJzaXRlcyBvbiBkaWZmZXJlbnQgcG9ydHMgb3IgaW50ZXJmYWNlcy48L3A+Cgo8cD5JbiBtYW55IGNhc2VzLCA8YSBocmVmPSJuYW1lLWJhc2VkLmh0bWwiPm5hbWUtYmFzZWQKdmlydHVhbCBob3N0czwvYT4gYXJlIG1vcmUgY29udmVuaWVudCwgYmVjYXVzZSB0aGV5IGFsbG93Cm1hbnkgdmlydHVhbCBob3N0cyB0byBzaGFyZSBhIHNpbmdsZSBhZGRyZXNzL3BvcnQuClNlZSA8YSBocmVmPSJuYW1lLWJhc2VkLmh0bWwjbmFtZXZpcCI+TmFtZS1iYXNlZCB2cy4gSVAtYmFzZWQKVmlydHVhbCBIb3N0czwvYT4gdG8gaGVscCB5b3UgZGVjaWRlLiAgPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJyZXF1aXJlbWVudHMiIGlkPSJyZXF1aXJlbWVudHMiPlN5c3RlbSByZXF1aXJlbWVudHM8L2E+PC9oMj4KCiAgICA8cD5BcyB0aGUgdGVybSA8Y2l0ZT5JUC1iYXNlZDwvY2l0ZT4gaW5kaWNhdGVzLCB0aGUgc2VydmVyCiAgICA8c3Ryb25nPm11c3QgaGF2ZSBhIGRpZmZlcmVudCBJUCBhZGRyZXNzL3BvcnQgY29tYmluYXRpb24gZm9yIGVhY2ggSVAtYmFzZWQKICAgIHZpcnR1YWwgaG9zdDwvc3Ryb25nPi4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgdGhlIG1hY2hpbmUKICAgIGhhdmluZyBzZXZlcmFsIHBoeXNpY2FsIG5ldHdvcmsgY29ubmVjdGlvbnMsIG9yIGJ5IHVzZSBvZgogICAgdmlydHVhbCBpbnRlcmZhY2VzIHdoaWNoIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBtb2Rlcm4gb3BlcmF0aW5nCiAgICBzeXN0ZW1zIChzZWUgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMsIHRoZXNlIGFyZQogICAgZnJlcXVlbnRseSBjYWxsZWQgImlwIGFsaWFzZXMiLCBhbmQgdGhlICJpZmNvbmZpZyIgY29tbWFuZCBpcwogICAgbW9zdCBjb21tb25seSB1c2VkIHRvIHNldCB0aGVtIHVwKSwgYW5kL29yIHVzaW5nIG11bHRpcGxlCiAgICBwb3J0IG51bWJlcnMuPC9wPgoKICAgIDxwPiBJbiB0aGUgdGVybWlub2xvZ3kgb2YgQXBhY2hlIEhUVFAgU2VydmVyLCB1c2luZyBhIHNpbmdsZSBJUCBhZGRyZXNzCiAgICBidXQgbXVsdGlwbGUgVENQIHBvcnRzLCBpcyBhbHNvIElQLWJhc2VkIHZpcnR1YWwgaG9zdGluZy48L3A+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJob3d0byIgaWQ9Imhvd3RvIj5Ib3cgdG8gc2V0IHVwIEFwYWNoZTwvYT48L2gyPgoKICAgIDxwPlRoZXJlIGFyZSB0d28gd2F5cyBvZiBjb25maWd1cmluZyBhcGFjaGUgdG8gc3VwcG9ydCBtdWx0aXBsZQogICAgaG9zdHMuIEVpdGhlciBieSBydW5uaW5nIGEgc2VwYXJhdGUgPGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4uL3Byb2dyYW1zL2h0dHBkLmh0bWwiPmh0dHBkPC9hPjwvY29kZT4gZGFlbW9uIGZvcgogICAgZWFjaCBob3N0bmFtZSwgb3IgYnkgcnVubmluZyBhIHNpbmdsZSBkYWVtb24gd2hpY2ggc3VwcG9ydHMgYWxsIHRoZQogICAgdmlydHVhbCBob3N0cy48L3A+CgogICAgPHA+VXNlIG11bHRpcGxlIGRhZW1vbnMgd2hlbjo8L3A+CgogICAgPHVsPgogICAgICA8bGk+VGhlcmUgYXJlIHNlY3VyaXR5IHBhcnRpdGlvbmluZyBpc3N1ZXMsIHN1Y2ggYXMgY29tcGFueTEKICAgICAgZG9lcyBub3Qgd2FudCBhbnlvbmUgYXQgY29tcGFueTIgdG8gYmUgYWJsZSB0byByZWFkIHRoZWlyCiAgICAgIGRhdGEgZXhjZXB0IHZpYSB0aGUgd2ViLiBJbiB0aGlzIGNhc2UgeW91IHdvdWxkIG5lZWQgdHdvCiAgICAgIGRhZW1vbnMsIGVhY2ggcnVubmluZyB3aXRoIGRpZmZlcmVudCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3VuaXhkLmh0bWwjdXNlciI+VXNlcjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3VuaXhkLmh0bWwjZ3JvdXAiPkdyb3VwPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbGlzdGVuIj5MaXN0ZW48L2E+PC9jb2RlPiwgYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2VydmVycm9vdCI+U2VydmVyUm9vdDwvYT48L2NvZGU+IHNldHRpbmdzLjwvbGk+CgogICAgICA8bGk+WW91IGNhbiBhZmZvcmQgdGhlIG1lbW9yeSBhbmQgZmlsZSBkZXNjcmlwdG9yCiAgICAgIHJlcXVpcmVtZW50cyBvZiBsaXN0ZW5pbmcgdG8gZXZlcnkgSVAgYWxpYXMgb24gdGhlCiAgICAgIG1hY2hpbmUuIEl0J3Mgb25seSBwb3NzaWJsZSB0byA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI2xpc3RlbiI+TGlzdGVuPC9hPjwvY29kZT4gdG8gdGhlICJ3aWxkY2FyZCIKICAgICAgYWRkcmVzcywgb3IgdG8gc3BlY2lmaWMgYWRkcmVzc2VzLiBTbyBpZiB5b3UgaGF2ZSBhIG5lZWQgdG8KICAgICAgbGlzdGVuIHRvIGEgc3BlY2lmaWMgYWRkcmVzcyBmb3Igd2hhdGV2ZXIgcmVhc29uLCB0aGVuIHlvdQogICAgICB3aWxsIG5lZWQgdG8gbGlzdGVuIHRvIGFsbCBzcGVjaWZpYyBhZGRyZXNzZXMuIChBbHRob3VnaCBvbmUKICAgICAgPGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4uL3Byb2dyYW1zL2h0dHBkLmh0bWwiPmh0dHBkPC9hPjwvY29kZT4gY291bGQgbGlzdGVuIHRvIE4tMSBvZiB0aGUgYWRkcmVzc2VzLCBhbmQgYW5vdGhlciBjb3VsZAogICAgICBsaXN0ZW4gdG8gdGhlIHJlbWFpbmluZyBhZGRyZXNzLik8L2xpPgogICAgPC91bD4KCiAgICA8cD5Vc2UgYSBzaW5nbGUgZGFlbW9uIHdoZW46PC9wPgoKICAgIDx1bD4KICAgICAgPGxpPlNoYXJpbmcgb2YgdGhlIGh0dHBkIGNvbmZpZ3VyYXRpb24gYmV0d2VlbiB2aXJ0dWFsIGhvc3RzCiAgICAgIGlzIGFjY2VwdGFibGUuPC9saT4KCiAgICAgIDxsaT5UaGUgbWFjaGluZSBzZXJ2aWNlcyBhIGxhcmdlIG51bWJlciBvZiByZXF1ZXN0cywgYW5kIHNvCiAgICAgIHRoZSBwZXJmb3JtYW5jZSBsb3NzIGluIHJ1bm5pbmcgc2VwYXJhdGUgZGFlbW9ucyBtYXkgYmUKICAgICAgc2lnbmlmaWNhbnQuPC9saT4KICAgIDwvdWw+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJtdWx0aXBsZSIgaWQ9Im11bHRpcGxlIj5TZXR0aW5nIHVwIG11bHRpcGxlIGRhZW1vbnM8L2E+PC9oMj4KCiAgICA8cD5DcmVhdGUgYSBzZXBhcmF0ZSA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi4vcHJvZ3JhbXMvaHR0cGQuaHRtbCI+aHR0cGQ8L2E+PC9jb2RlPiBpbnN0YWxsYXRpb24gZm9yIGVhY2gKICAgIHZpcnR1YWwgaG9zdC4gRm9yIGVhY2ggaW5zdGFsbGF0aW9uLCB1c2UgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbGlzdGVuIj5MaXN0ZW48L2E+PC9jb2RlPiBkaXJlY3RpdmUgaW4gdGhlCiAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gc2VsZWN0IHdoaWNoIElQIGFkZHJlc3MgKG9yIHZpcnR1YWwgaG9zdCkKICAgIHRoYXQgZGFlbW9uIHNlcnZpY2VzLiBlLmcuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5MaXN0ZW4gMTkyLjAuMi4xMDA6ODA8L3ByZT4KCgogICAgPHA+SXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGFuIElQIGFkZHJlc3MgaW5zdGVhZCBvZiBhCiAgICBob3N0bmFtZSAoc2VlIDxhIGhyZWY9Ii4uL2Rucy1jYXZlYXRzLmh0bWwiPkROUyBjYXZlYXRzPC9hPikuPC9wPgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ic2luZ2xlIiBpZD0ic2luZ2xlIj5TZXR0aW5nIHVwIGEgc2luZ2xlIGRhZW1vbgogIHdpdGggdmlydHVhbCBob3N0czwvYT48L2gyPgoKICAgIDxwPkZvciB0aGlzIGNhc2UsIGEgc2luZ2xlIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuLi9wcm9ncmFtcy9odHRwZC5odG1sIj5odHRwZDwvYT48L2NvZGU+IHdpbGwgc2VydmljZQogICAgcmVxdWVzdHMgZm9yIHRoZSBtYWluIHNlcnZlciBhbmQgYWxsIHRoZSB2aXJ0dWFsIGhvc3RzLiBUaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCN2aXJ0dWFsaG9zdCI+VmlydHVhbEhvc3Q8L2E+PC9jb2RlPiBkaXJlY3RpdmUKICAgIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgdXNlZCB0byBzZXQgdGhlIHZhbHVlcyBvZiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI3NlcnZlcmFkbWluIj5TZXJ2ZXJBZG1pbjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI3NlcnZlcm5hbWUiPlNlcnZlck5hbWU8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkb2N1bWVudHJvb3QiPkRvY3VtZW50Um9vdDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2Vycm9ybG9nIj5FcnJvckxvZzwvYT48L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xvZ19jb25maWcuaHRtbCN0cmFuc2ZlcmxvZyI+VHJhbnNmZXJMb2c8L2E+PC9jb2RlPgogICAgb3IgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sb2dfY29uZmlnLmh0bWwjY3VzdG9tbG9nIj5DdXN0b21Mb2c8L2E+PC9jb2RlPgogICAgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIHRvIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGVhY2ggdmlydHVhbAogICAgaG9zdC4gZS5nLjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+Jmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC40MDo4MCZndDsKICAgIFNlcnZlckFkbWluIHdlYm1hc3RlckB3d3cxLmV4YW1wbGUuY29tCiAgICBEb2N1bWVudFJvb3QgIi93d3cvdmhvc3RzL3d3dzEiCiAgICBTZXJ2ZXJOYW1lIHd3dzEuZXhhbXBsZS5jb20KICAgIEVycm9yTG9nICIvd3d3L2xvZ3Mvd3d3MS9lcnJvcl9sb2ciCiAgICBDdXN0b21Mb2cgIi93d3cvbG9ncy93d3cxL2FjY2Vzc19sb2ciIGNvbWJpbmVkCiZsdDsvVmlydHVhbEhvc3QmZ3Q7CgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjUwOjgwJmd0OwogICAgU2VydmVyQWRtaW4gd2VibWFzdGVyQHd3dzIuZXhhbXBsZS5vcmcKICAgIERvY3VtZW50Um9vdCAiL3d3dy92aG9zdHMvd3d3MiIKICAgIFNlcnZlck5hbWUgd3d3Mi5leGFtcGxlLm9yZwogICAgRXJyb3JMb2cgIi93d3cvbG9ncy93d3cyL2Vycm9yX2xvZyIKICAgIEN1c3RvbUxvZyAiL3d3dy9sb2dzL3d3dzIvYWNjZXNzX2xvZyIgY29tYmluZWQKJmx0Oy9WaXJ0dWFsSG9zdCZndDs8L3ByZT4KCgogICAgPHA+SXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGFuIElQIGFkZHJlc3MgaW5zdGVhZCBvZiBhCiAgICBob3N0bmFtZSBpbiB0aGUgJmx0O1ZpcnR1YWxIb3N0Jmd0OyBkaXJlY3RpdmUKICAgIChzZWUgPGEgaHJlZj0iLi4vZG5zLWNhdmVhdHMuaHRtbCI+RE5TIGNhdmVhdHM8L2E+KS48L3A+CgogICAgPHA+IFNwZWNpZmljIElQIGFkZHJlc3NlcyBvciBwb3J0cyBoYXZlIHByZWNlZGVuY2Ugb3ZlciB0aGVpciB3aWxkY2FyZAogICAgZXF1aXZhbGVudHMsIGFuZCBhbnkgdmlydHVhbCBob3N0IHRoYXQgbWF0Y2hlcyBoYXMgcHJlY2VkZW5jZSBvdmVyCiAgICB0aGUgc2VydmVycyBiYXNlIGNvbmZpZ3VyYXRpb24uPC9wPgoKICAgIDxwPkFsbW9zdCA8c3Ryb25nPmFueTwvc3Ryb25nPiBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSBjYW4gYmUKICAgIHB1dCBpbiB0aGUgVmlydHVhbEhvc3QgZGlyZWN0aXZlLCB3aXRoIHRoZSBleGNlcHRpb24gb2YKICAgIGRpcmVjdGl2ZXMgdGhhdCBjb250cm9sIHByb2Nlc3MgY3JlYXRpb24gYW5kIGEgZmV3IG90aGVyCiAgICBkaXJlY3RpdmVzLiBUbyBmaW5kIG91dCBpZiBhIGRpcmVjdGl2ZSBjYW4gYmUgdXNlZCBpbiB0aGUKICAgIFZpcnR1YWxIb3N0IGRpcmVjdGl2ZSwgY2hlY2sgdGhlIDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ8L2E+IHVzaW5nIHRoZQogICAgPGEgaHJlZj0iLi4vbW9kL3F1aWNrcmVmZXJlbmNlLmh0bWwiPmRpcmVjdGl2ZSBpbmRleDwvYT4uPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3VleGVjLmh0bWwjc3VleGVjdXNlcmdyb3VwIj5TdWV4ZWNVc2VyR3JvdXA8L2E+PC9jb2RlPgogICAgbWF5IGJlIHVzZWQgaW5zaWRlIGEKICAgIFZpcnR1YWxIb3N0IGRpcmVjdGl2ZSBpZiB0aGUgPGEgaHJlZj0iLi4vc3VleGVjLmh0bWwiPnN1RVhFQwogICAgd3JhcHBlcjwvYT4gaXMgdXNlZC48L3A+CgogICAgPHA+PGVtPlNFQ1VSSVRZOjwvZW0+IFdoZW4gc3BlY2lmeWluZyB3aGVyZSB0byB3cml0ZSBsb2cgZmlsZXMsCiAgICBiZSBhd2FyZSBvZiBzb21lIHNlY3VyaXR5IHJpc2tzIHdoaWNoIGFyZSBwcmVzZW50IGlmIGFueW9uZQogICAgb3RoZXIgdGhhbiB0aGUgdXNlciB0aGF0IHN0YXJ0cyBBcGFjaGUgaGFzIHdyaXRlIGFjY2VzcyB0byB0aGUKICAgIGRpcmVjdG9yeSB3aGVyZSB0aGV5IGFyZSB3cml0dGVuLiBTZWUgdGhlIDxhIGhyZWY9Ii4uL21pc2Mvc2VjdXJpdHlfdGlwcy5odG1sIj5zZWN1cml0eSB0aXBzPC9hPiBkb2N1bWVudAogICAgZm9yIGRldGFpbHMuPC9wPgoKPC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vdmhvc3RzL2lwLWJhc2VkLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci92aG9zdHMvaXAtYmFzZWQuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS92aG9zdHMvaXAtYmFzZWQuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby92aG9zdHMvaXAtYmFzZWQuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vdHIvdmhvc3RzL2lwLWJhc2VkLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC92aG9zdHMvaXAtYmFzZWQuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE4IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=