PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICA8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiAgICA8dGl0bGU+T1Byb2ZpbGUgSW50ZXJuYWxzPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzUuMiIgLz4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJib29rIiB0aXRsZT0iT1Byb2ZpbGUgSW50ZXJuYWxzIj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcm9maWxlLWludGVybmFscyI+PC9hPk9Qcm9maWxlIEludGVybmFsczwvaDE+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1dGhvcmdyb3VwIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdXRob3IiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJhdXRob3IiPjxzcGFuIGNsYXNzPSJmaXJzdG5hbWUiPkpvaG48L3NwYW4+IDxzcGFuIGNsYXNzPSJzdXJuYW1lIj5MZXZvbjwvc3Bhbj48L2gzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWZmaWxpYXRpb24iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRyZXNzIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJlbWFpbCI+Jmx0OzxhIGNsYXNzPSJlbWFpbCIgaHJlZj0ibWFpbHRvOmxldm9uQG1vdmVtZW50YXJpYW4ub3JnIj5sZXZvbkBtb3ZlbWVudGFyaWFuLm9yZzwvYT4mZ3Q7PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjb3B5cmlnaHQiPkNvcHlyaWdodCCpIDIwMDMgSm9obiBMZXZvbjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxociAvPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICA8cD4KICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgIDwvcD4KICAgICAgICA8ZGw+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjaW50cm9kdWN0aW9uIj4xLiBJbnRyb2R1Y3Rpb248L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ZlcnZpZXciPjEuIE92ZXJ2aWV3PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbXBvbmVudHMiPjIuIENvbXBvbmVudHMgb2YgdGhlIE9Qcm9maWxlIHN5c3RlbTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjYXJjaC1zcGVjaWZpYy1jb21wb25lbnRzIj4yLjEuIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb21wb25lbnRzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZmlsZXN5c3RlbSI+Mi4yLiBvcHJvZmlsZWZzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZHJpdmVyIj4yLjMuIEdlbmVyaWMga2VybmVsIGRyaXZlcjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RhZW1vbiI+Mi40LiBUaGUgT1Byb2ZpbGUgZGFlbW9uPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcG9zdC1wcm9maWxpbmciPjIuNS4gUG9zdC1wcm9maWxpbmcgdG9vbHM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNwZXJmb3JtYW5jZS1jb3VudGVycyI+Mi4gUGVyZm9ybWFuY2UgY291bnRlciBtYW5hZ2VtZW50PC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3BlcmZvcm1hbmNlLWNvdW50ZXJzLXVpIj4xLiBQcm92aWRpbmcgYSB1c2VyIGludGVyZmFjZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwZXJmb3JtYW5jZS1jb3VudGVycy1wcm9ncmFtbWluZyI+Mi4gUHJvZ3JhbW1pbmcgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgcmVnaXN0ZXJzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwZXJmb3JtYW5jZS1jb3VudGVycy1zdGFydCI+Mi4xLiBTdGFydGluZyBhbmQgc3RvcHBpbmcgdGhlIGNvdW50ZXJzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaWQ1Nzc0MTAiPjIuMi4gSUE2NCBhbmQgcGVyZm1vbjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcHRlciI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbGxlY3Rpbmctc2FtcGxlcyI+My4gQ29sbGVjdGluZyBhbmQgcHJvY2Vzc2luZyBzYW1wbGVzPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3JlY2VpdmluZy1pbnRlcnJ1cHRzIj4xLiBSZWNlaXZpbmcgaW50ZXJydXB0czwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb3JlLXN0cnVjdHVyZSI+Mi4gQ29yZSBkYXRhIHN0cnVjdHVyZXM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbG9nZ2luZy1zYW1wbGUiPjMuIExvZ2dpbmcgYSBzYW1wbGU8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbG9nZ2luZy1zdGFjayI+NC4gTG9nZ2luZyBzdGFjayB0cmFjZXM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc3luY2hyb25pc2luZy1idWZmZXJzIj41LiBTeW5jaHJvbmlzaW5nIHRoZSBDUFUgYnVmZmVycyB0byB0aGUgZXZlbnQgYnVmZmVyPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbnRyeS1jb29raWVzIj42LiBJZGVudGlmeWluZyBiaW5hcnkgaW1hZ2VzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ZpbmRpbmctZGVudHJ5Ij43LiBGaW5kaW5nIGEgc2FtcGxlJ3MgYmluYXJ5IGltYWdlIGFuZCBvZmZzZXQ8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGVzIj40LiBHZW5lcmF0aW5nIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9jZXNzaW5nLWJ1ZmZlciI+MS4gUHJvY2Vzc2luZyB0aGUgYnVmZmVyPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNoYW5kbGluZy1rZXJuZWwtc2FtcGxlcyI+MS4xLiBIYW5kbGluZyBrZXJuZWwgc2FtcGxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLWdlbmVyYXRpb24iPjIuIExvY2F0aW5nIGFuZCBjcmVhdGluZyBzYW1wbGUgZmlsZXM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtd3JpdGluZyI+My4gV3JpdGluZyBkYXRhIHRvIGEgc2FtcGxlIGZpbGU8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjb3V0cHV0Ij41LiBHZW5lcmF0aW5nIHVzZWZ1bCBvdXRwdXQ8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvZmlsZS1zcGVjaWZpY2F0aW9uIj4xLiBIYW5kbGluZyB0aGUgcHJvZmlsZSBzcGVjaWZpY2F0aW9uPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLWNvbGxhdGluZyI+Mi4gQ29sbGF0aW5nIHRoZSBjYW5kaWRhdGUgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZS1jbGFzc2lmeWluZyI+Mi4xLiBDbGFzc2lmeWluZyBzYW1wbGUgZmlsZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZS1pbnZlcnRpbmciPjIuMi4gQ3JlYXRpbmcgaW52ZXJ0ZWQgcHJvZmlsZSBsaXN0czwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dlbmVyYXRpbmctcHJvZmlsZS1kYXRhIj4zLiBHZW5lcmF0aW5nIHByb2ZpbGUgZGF0YTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjYmZkIj4zLjEuIFByb2Nlc3NpbmcgdGhlIGJpbmFyeSBpbWFnZTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2Nlc3Npbmctc2FtcGxlLWZpbGVzIj4zLjIuIFByb2Nlc3NpbmcgdGhlIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dlbmVyYXRpbmctb3V0cHV0Ij40LiBHZW5lcmF0aW5nIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQiPjYuIEV4dGVuZGVkIEZlYXR1cmUgSW50ZXJmYWNlPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1pbnRybyI+MS4gSW50cm9kdWN0aW9uPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1uYW1lLWFuZC1oYW5kbGVycyI+Mi4gRmVhdHVyZSBOYW1lIGFuZCBIYW5kbGVyczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtZW5hYmxlIj4zLiBFbmFibGluZyBGZWF0dXJlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtdHlwZXMtb2YtaGFuZGxlcnMiPjQuIFR5cGUgb2YgSGFuZGxlcnM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dF9pbml0Ij40LjEuIGV4dF9pbml0IEhhbmRsZXI8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHRfcHJpbnRfc3RhdHMiPjQuMi4gZXh0X3ByaW50X3N0YXRzIEhhbmRsZXI8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHRfc2ZpbGVfaGFuZGxlcnMiPjQuMy4gZXh0X3NmaWxlIEhhbmRsZXI8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtaW1wbGVtZW50YXRpb24iPjUuIEV4dGVuZGVkIEZlYXR1cmUgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtaWJzIj41LjEuIEluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbG9zc2FyeSI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI2dsb3NzYXJ5Ij5HbG9zc2FyeSBvZiBPUHJvZmlsZSBzb3VyY2UgY29uY2VwdHMgYW5kIHR5cGVzPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgIDwvZGw+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsaXN0LW9mLWZpZ3VyZXMiPgogICAgICAgIDxwPgogICAgICAgICAgPGI+TGlzdCBvZiBGaWd1cmVzPC9iPgogICAgICAgIDwvcD4KICAgICAgICA8ZGw+CiAgICAgICAgICA8ZHQ+My4xLiA8YSBocmVmPSIjaWQ1Nzc1MzgiPlRoZSBPUHJvZmlsZSBidWZmZXJzPC9hPjwvZHQ+CiAgICAgICAgPC9kbD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSJDaGFwdGVyoDEuoEludHJvZHVjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImludHJvZHVjdGlvbiI+PC9hPkNoYXB0ZXKgMS6gSW50cm9kdWN0aW9uPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvdmVydmlldyI+MS4gT3ZlcnZpZXc8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb21wb25lbnRzIj4yLiBDb21wb25lbnRzIG9mIHRoZSBPUHJvZmlsZSBzeXN0ZW08L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhcmNoLXNwZWNpZmljLWNvbXBvbmVudHMiPjIuMS4gQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbXBvbmVudHM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ZpbGVzeXN0ZW0iPjIuMi4gb3Byb2ZpbGVmczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZHJpdmVyIj4yLjMuIEdlbmVyaWMga2VybmVsIGRyaXZlcjwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGFlbW9uIj4yLjQuIFRoZSBPUHJvZmlsZSBkYWVtb248L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Bvc3QtcHJvZmlsaW5nIj4yLjUuIFBvc3QtcHJvZmlsaW5nIHRvb2xzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxwPgpUaGlzIGRvY3VtZW50IGlzIGN1cnJlbnQgZm9yIE9Qcm9maWxlIHZlcnNpb24gMC45LjctcmMyLgpUaGlzIGRvY3VtZW50IHByb3ZpZGVzIHNvbWUgZGV0YWlscyBvbiB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgT1Byb2ZpbGUgZm9yIHRoZQppbnRlcmVzdGVkIGhhY2tlci4gVGhpcyBkb2N1bWVudCBhc3N1bWVzIHN0cm9uZyBDLCB3b3JraW5nIEMrKywgcGx1cyBzb21lIGtub3dsZWRnZSBvZgprZXJuZWwgaW50ZXJuYWxzIGFuZCBDUFUgaGFyZHdhcmUuCjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICA8cD4KT25seSB0aGUgIm5ldyIgaW1wbGVtZW50YXRpb24gYXNzb2NpYXRlZCB3aXRoIGtlcm5lbCAyLjYgYW5kIGFib3ZlIGlzIGNvdmVyZWQgaGVyZS4gMi40CnVzZXMgYSB2ZXJ5IGRpZmZlcmVudCBrZXJuZWwgbW9kdWxlIGltcGxlbWVudGF0aW9uIGFuZCBkYWVtb24gdG8gcHJvZHVjZSB0aGUgc2FtcGxlIGZpbGVzLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIxLqBPdmVydmlldyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvdmVydmlldyI+PC9hPjEuoE92ZXJ2aWV3PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBpcyBhIHN0YXRpc3RpY2FsIGNvbnRpbnVvdXMgcHJvZmlsZXIuIEluIG90aGVyIHdvcmRzLCBwcm9maWxlcyBhcmUgZ2VuZXJhdGVkIGJ5CnJlZ3VsYXJseSBzYW1wbGluZyB0aGUgY3VycmVudCByZWdpc3RlcnMgb24gZWFjaCBDUFUgKGZyb20gYW4gaW50ZXJydXB0IGhhbmRsZXIsIHRoZQpzYXZlZCBQQyB2YWx1ZSBhdCB0aGUgdGltZSBvZiBpbnRlcnJ1cHQgaXMgc3RvcmVkKSwgYW5kIGNvbnZlcnRpbmcgdGhhdCBydW50aW1lIFBDCnZhbHVlIGludG8gc29tZXRoaW5nIG1lYW5pbmdmdWwgdG8gdGhlIHByb2dyYW1tZXIuCjwvcD4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBhY2hpZXZlcyB0aGlzIGJ5IHRha2luZyB0aGUgc3RyZWFtIG9mIHNhbXBsZWQgUEMgdmFsdWVzLCBhbG9uZyB3aXRoIHRoZSBkZXRhaWwKb2Ygd2hpY2ggdGFzayB3YXMgcnVubmluZyBhdCB0aGUgdGltZSBvZiB0aGUgaW50ZXJydXB0LCBhbmQgY29udmVydGluZyBpbnRvIGEgZmlsZSBvZmZzZXQKYWdhaW5zdCBhIHBhcnRpY3VsYXIgYmluYXJ5IGZpbGUuIEJlY2F1c2UgYXBwbGljYXRpb25zIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bW1hcCgpPC9jb2RlPgp0aGUgY29kZSB0aGV5IHJ1biAoYmUgaXQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vYmluL2Jhc2g8L2NvZGU+LCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9saWIvbGliZm9vLnNvPC9jb2RlPgpvciB3aGF0ZXZlciksIGl0J3MgcG9zc2libGUgdG8gZmluZCB0aGUgcmVsZXZhbnQgYmluYXJ5IGZpbGUgYW5kIG9mZnNldCBieSB3YWxraW5nCnRoZSB0YXNrJ3MgbGlzdCBvZiBtYXBwZWQgbWVtb3J5IGFyZWFzLiBFYWNoIFBDIHZhbHVlIGlzIHRodXMgY29udmVydGVkIGludG8gYSB0dXBsZQpvZiBiaW5hcnktaW1hZ2Usb2Zmc2V0LiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0IHRoZSB1c2Vyc3BhY2UgdG9vbHMgY2FuIHVzZSBkaXJlY3RseQp0byByZWNvbnN0cnVjdCB3aGVyZSB0aGUgY29kZSBjYW1lIGZyb20sIGluY2x1ZGluZyB0aGUgcGFydGljdWxhciBhc3NlbWJseSBpbnN0cnVjdGlvbnMsCnN5bWJvbCwgYW5kIHNvdXJjZSBsaW5lICh2aWEgdGhlIGJpbmFyeSdzIGRlYnVnIGluZm9ybWF0aW9uIGlmIHByZXNlbnQpLgo8L3A+CiAgICAgICAgICA8cD4KUmVndWxhcmx5IHNhbXBsaW5nIHRoZSBQQyB2YWx1ZSBsaWtlIHRoaXMgYXBwcm94aW1hdGVzIHdoYXQgYWN0dWFsbHkgd2FzIGV4ZWN1dGVkIGFuZApob3cgb2Z0ZW4gLSBtb3JlIG9mdGVuIHRoYW4gbm90LCB0aGlzIHN0YXRpc3RpY2FsIGFwcHJveGltYXRpb24gaXMgZ29vZCBlbm91Z2ggdG8KcmVmbGVjdCByZWFsaXR5LiBJbiBjb21tb24gb3BlcmF0aW9uLCB0aGUgdGltZSBiZXR3ZWVuIGVhY2ggc2FtcGxlIGludGVycnVwdCBpcyByZWd1bGF0ZWQKYnkgYSBmaXhlZCBudW1iZXIgb2YgY2xvY2sgY3ljbGVzLiBUaGlzIGltcGxpZXMgdGhhdCB0aGUgcmVzdWx0cyB3aWxsIHJlZmxlY3Qgd2hlcmUKdGhlIENQVSBpcyBzcGVuZGluZyB0aGUgbW9zdCB0aW1lOyB0aGlzIGlzIG9idmlvdXNseSBhIHZlcnkgdXNlZnVsIGluZm9ybWF0aW9uIHNvdXJjZQpmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuCjwvcD4KICAgICAgICAgIDxwPgpTb21ldGltZXMgdGhvdWdoLCBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyIG5lZWRzIGRpZmZlcmVudCBraW5kcyBvZiBpbmZvcm1hdGlvbjogZm9yIGV4YW1wbGUsCiJ3aGljaCBvZiB0aGUgc291cmNlIHJvdXRpbmVzIGNhdXNlIHRoZSBtb3N0IGNhY2hlIG1pc3NlcyA/Ii4gVGhlIHJpc2UgaW4gaW1wb3J0YW5jZSBvZgpzdWNoIG1ldHJpY3MgaW4gcmVjZW50IHllYXJzIGhhcyBsZWQgbWFueSBDUFUgbWFudWZhY3R1cmVycyB0byBwcm92aWRlIGhhcmR3YXJlIHBlcmZvcm1hbmNlCmNvdW50ZXJzIGNhcGFibGUgb2YgbWVhc3VyaW5nIHRoZXNlIGV2ZW50cyBvbiB0aGUgaGFyZHdhcmUgbGV2ZWwuIFR5cGljYWxseSwgdGhlc2UgY291bnRlcnMKaW5jcmVtZW50IG9uY2UgcGVyIGVhY2ggZXZlbnQsIGFuZCBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgb24gcmVhY2hpbmcgc29tZSBwcmUtZGVmaW5lZApudW1iZXIgb2YgZXZlbnRzLiBPUHJvZmlsZSBjYW4gdXNlIHRoZXNlIGludGVycnVwdHMgdG8gZ2VuZXJhdGUgc2FtcGxlczogdGhlbiwgdGhlCnByb2ZpbGUgcmVzdWx0cyBhcmUgYSBzdGF0aXN0aWNhbCBhcHByb3hpbWF0aW9uIG9mIHdoaWNoIGNvZGUgY2F1c2VkIGhvdyBtYW55IG9mIHRoZQpnaXZlbiBldmVudC4KPC9wPgogICAgICAgICAgPHA+CkNvbnNpZGVyIGEgc2ltcGxpZmllZCBzeXN0ZW0gdGhhdCBvbmx5IGV4ZWN1dGVzIHR3byBmdW5jdGlvbnMgQSBhbmQgQi4gQQp0YWtlcyBvbmUgY3ljbGUgdG8gZXhlY3V0ZSwgd2hlcmVhcyBCIHRha2VzIDk5IGN5Y2xlcy4gSW1hZ2luZSB3ZSBydW4gYXQKMTAwIGN5Y2xlcyBhIHNlY29uZCwgYW5kIHdlJ3ZlIHNldCB0aGUgcGVyZm9ybWFuY2UgY291bnRlciB0byBjcmVhdGUgYW4KaW50ZXJydXB0IGFmdGVyIGEgc2V0IG51bWJlciBvZiAiZXZlbnRzIiAoaW4gdGhpcyBjYXNlIGFuIGV2ZW50IGlzIG9uZQpjbG9jayBjeWNsZSkuIEl0IHNob3VsZCBiZSBjbGVhciB0aGF0IHRoZSBjaGFuY2VzIG9mIHRoZSBpbnRlcnJ1cHQKb2NjdXJyaW5nIGluIGZ1bmN0aW9uIEEgaXMgMS8xMDAsIGFuZCA5OS8xMDAgZm9yIGZ1bmN0aW9uIEIuIFRodXMsIHdlCnN0YXRpc3RpY2FsbHkgYXBwcm94aW1hdGUgdGhlIGFjdHVhbCByZWxhdGl2ZSBwZXJmb3JtYW5jZSBmZWF0dXJlcyBvZgp0aGUgdHdvIGZ1bmN0aW9ucyBvdmVyIHRpbWUuIFRoaXMgc2FtZSBhbmFseXNpcyB3b3JrcyBmb3Igb3RoZXIgdHlwZXMgb2YKZXZlbnRzLCBwcm92aWRpbmcgdGhhdCB0aGUgaW50ZXJydXB0IGlzIHRpZWQgdG8gdGhlIG51bWJlciBvZiBldmVudHMKb2NjdXJyaW5nICh0aGF0IGlzLCBhZnRlciBOIGV2ZW50cywgYW4gaW50ZXJydXB0IGlzIGdlbmVyYXRlZCkuCjwvcD4KICAgICAgICAgIDxwPgpUaGVyZSBhcmUgdHlwaWNhbGx5IG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgY291bnRlcnMsIHNvIGl0J3MgcG9zc2libGUgdG8gc2V0IHVwIHByb2ZpbGluZwpmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgZXZlbnQgdHlwZXMuIFVzaW5nIHRoZXNlIGNvdW50ZXJzIGdpdmVzIHVzIGEgcG93ZXJmdWwsIGxvdy1vdmVyaGVhZAp3YXkgb2YgZ2FpbmluZyBwZXJmb3JtYW5jZSBtZXRyaWNzLiBJZiBPUHJvZmlsZSwgb3IgdGhlIENQVSwgZG9lcyBub3Qgc3VwcG9ydCBwZXJmb3JtYW5jZQpjb3VudGVycywgdGhlbiBhIHNpbXBsZXIgbWV0aG9kIGlzIHVzZWQ6IHRoZSBrZXJuZWwgdGltZXIgaW50ZXJydXB0IGZlZWRzIHNhbXBsZXMKaW50byBPUHJvZmlsZSBpdHNlbGYuCjwvcD4KICAgICAgICAgIDxwPgpUaGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGNvbmNlcm5zIGl0c2VsZiB3aXRoIGhvdyB3ZSBnZXQgZnJvbSByZWNlaXZpbmcgc2FtcGxlcyBhdAppbnRlcnJ1cHQgdGltZSB0byBwcm9kdWNpbmcgdXNlci1yZWFkYWJsZSBwcm9maWxlIGluZm9ybWF0aW9uLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLqBDb21wb25lbnRzIG9mIHRoZSBPUHJvZmlsZSBzeXN0ZW0iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iY29tcG9uZW50cyI+PC9hPjIuoENvbXBvbmVudHMgb2YgdGhlIE9Qcm9maWxlIHN5c3RlbTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMS6gQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbXBvbmVudHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iYXJjaC1zcGVjaWZpYy1jb21wb25lbnRzIj48L2E+Mi4xLqBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29tcG9uZW50czwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpJZiBPUHJvZmlsZSBzdXBwb3J0cyB0aGUgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMgZm91bmQgb24KYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZSwgY29kZSBmb3IgbWFuYWdpbmcgdGhlIGRldGFpbHMgb2Ygc2V0dGluZwp1cCBhbmQgbWFuYWdpbmcgdGhlc2UgY291bnRlcnMgY2FuIGJlIGZvdW5kIGluIHRoZSBrZXJuZWwgc291cmNlCnRyZWUgaW4gdGhlIHJlbGV2YW50IDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YXJjaC88c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5hcmNoPC9lbT48L3NwYW4+L29wcm9maWxlLzwvY29kZT4KZGlyZWN0b3J5LiBUaGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIHdvcmtzIHZpYQpmaWxsaW5nIGluIHRoZSBvcHJvZmlsZV9vcGVyYXRpb25zIHN0cnVjdHVyZSBhdCBpbml0IHRpbWUuIFRoaXMKcHJvdmlkZXMgYSBzZXQgb2Ygb3BlcmF0aW9ucyBzdWNoIGFzIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c2V0dXAoKTwvY29kZT4sCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RhcnQoKTwvY29kZT4sIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RvcCgpPC9jb2RlPiwgZXRjLgp0aGF0IG1hbmFnZSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlscyBvZiBmaWRkbGluZyB3aXRoIHRoZQpwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVycy4KPC9wPgogICAgICAgICAgICA8cD4KVGhlIG90aGVyIGltcG9ydGFudCBmYWNpbGl0eSBhdmFpbGFibGUgdG8gdGhlIGFyY2hpdGVjdHVyZSBjb2RlIGlzCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3Byb2ZpbGVfYWRkX3NhbXBsZSgpPC9jb2RlPi4gIFRoaXMgaXMgd2hlcmUgYSBwYXJ0aWN1bGFyIHNhbXBsZQp0YWtlbiBhdCBpbnRlcnJ1cHQgdGltZSBpcyBmZWQgaW50byB0aGUgZ2VuZXJpYyBPUHJvZmlsZSBkcml2ZXIgY29kZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMi6gb3Byb2ZpbGVmcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJmaWxlc3lzdGVtIj48L2E+Mi4yLqBvcHJvZmlsZWZzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ck9Qcm9maWxlIGltcGxlbWVudHMgYSBwc2V1ZG8tZmlsZXN5c3RlbSBrbm93biBhcyAib3Byb2ZpbGVmcyIsIG1vdW50ZWQgZnJvbQp1c2Vyc3BhY2UgYXQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vZGV2L29wcm9maWxlPC9jb2RlPi4gVGhpcyBjb25zaXN0cyBvZiBzbWFsbApmaWxlcyBmb3IgcmVwb3J0aW5nIGFuZCByZWNlaXZpbmcgY29uZmlndXJhdGlvbiBmcm9tIHVzZXJzcGFjZSwgYXMgd2VsbAphcyB0aGUgYWN0dWFsIGNoYXJhY3RlciBkZXZpY2UgdGhhdCB0aGUgT1Byb2ZpbGUgdXNlcnNwYWNlIHJlY2VpdmVzIHNhbXBsZXMKZnJvbS4gQXQgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zZXR1cCgpPC9jb2RlPiB0aW1lLCB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1heQphZGQgZnVydGhlciBjb25maWd1cmF0aW9uIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIGRldGFpbHMgb2YgdGhlIHBlcmZvcm1hbmNlCmNvdW50ZXJzLiBGb3IgZXhhbXBsZSwgb24geDg2LCBvbmUgbnVtYmVyZWQgZGlyZWN0b3J5IGZvciBlYWNoIGhhcmR3YXJlCnBlcmZvcm1hbmNlIGNvdW50ZXIgaXMgYWRkZWQsIHdpdGggZmlsZXMgaW4gZWFjaCBmb3IgdGhlIGV2ZW50IHR5cGUsCnJlc2V0IHZhbHVlLCBldGMuCjwvcD4KICAgICAgICAgICAgPHA+ClRoZSBmaWxlc3lzdGVtIGFsc28gY29udGFpbnMgYSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPnN0YXRzPC9jb2RlPiBkaXJlY3Rvcnkgd2l0aAphIG51bWJlciBvZiB1c2VmdWwgY291bnRlcnMgZm9yIHZhcmlvdXMgT1Byb2ZpbGUgZXZlbnRzLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMi4zLqBHZW5lcmljIGtlcm5lbCBkcml2ZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZHJpdmVyIj48L2E+Mi4zLqBHZW5lcmljIGtlcm5lbCBkcml2ZXI8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhpcyBsaXZlcyBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRyaXZlcnMvb3Byb2ZpbGUvPC9jb2RlPiwgYW5kIGZvcm1zIHRoZSBjb3JlIG9mCmhvdyBPUHJvZmlsZSB3b3JrcyBpbiB0aGUga2VybmVsLiBJdHMgam9iIGlzIHRvIHRha2Ugc2FtcGxlcyBkZWxpdmVyZWQKZnJvbSB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgKHZpYSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wcm9maWxlX2FkZF9zYW1wbGUoKTwvY29kZT4pLAphbmQgYnVmZmVyIHRoaXMgZGF0YSwgaW4gYSB0cmFuc2Zvcm1lZCBmb3JtIGFzIGRlc2NyaWJlZCBsYXRlciwgdW50aWwgcmVsZWFzaW5nCnRoZSBkYXRhIHRvIHRoZSB1c2Vyc3BhY2UgZGFlbW9uIHZpYSB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vZGV2L29wcm9maWxlL2J1ZmZlcjwvY29kZT4KY2hhcmFjdGVyIGRldmljZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuNC6gVGhlIE9Qcm9maWxlIGRhZW1vbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJkYWVtb24iPjwvYT4yLjQuoFRoZSBPUHJvZmlsZSBkYWVtb248L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIE9Qcm9maWxlIHVzZXJzcGFjZSBkYWVtb24ncyBqb2IgaXMgdG8gdGFrZSB0aGUgcmF3IGRhdGEgcHJvdmlkZWQgYnkgdGhlCmtlcm5lbCBhbmQgd3JpdGUgaXQgdG8gdGhlIGRpc2suIEl0IHRha2VzIHRoZSBzaW5nbGUgZGF0YSBzdHJlYW0gZnJvbSB0aGUKa2VybmVsIGFuZCBsb2dzIHNhbXBsZSBkYXRhIGFnYWluc3QgYSBudW1iZXIgb2Ygc2FtcGxlIGZpbGVzIChmb3VuZCBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiRTRVNTSU9OX0RJUi9zYW1wbGVzL2N1cnJlbnQvPC9jb2RlPiwgYnkgZGVmYXVsdCBsb2NhdGVkIGF0IAo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvY3VycmVudC88L2NvZGU+LiBGb3IgdGhlIGJlbmVmaXQKb2YgdGhlICJzZXBhcmF0ZSIgZnVuY3Rpb25hbGl0eSwgdGhlIG5hbWVzL3BhdGhzIG9mIHRoZXNlIHNhbXBsZSBmaWxlcwphcmUgbWFuZ2xlZCB0byByZWZsZWN0IHdoZXJlIHRoZSBzYW1wbGVzIHdlcmUgZnJvbTogdGhpcyBjYW4gaW5jbHVkZQp0aHJlYWQgSURzLCB0aGUgYmluYXJ5IGZpbGUgcGF0aCwgdGhlIGV2ZW50IHR5cGUgdXNlZCwgYW5kIG1vcmUuCjwvcD4KICAgICAgICAgICAgPHA+CkFmdGVyIHRoaXMgZmluYWwgc3RlcCBmcm9tIGludGVycnVwdCB0byBkaXNrIGZpbGUsIHRoZSBkYXRhIGlzIG5vdwpwZXJzaXN0ZW50ICh0aGF0IGlzLCBjaGFuZ2VzIGluIHRoZSBydW5uaW5nIG9mIHRoZSBzeXN0ZW0gZG8gbm90IGludmFsaWRhdGUKc3RvcmVkIGRhdGEpLiBTbyB0aGUgcG9zdC1wcm9maWxpbmcgdG9vbHMgY2FuIHJ1biBvbiB0aGlzIGRhdGEgYXQgYW55CnRpbWUgKGFzc3VtaW5nIHRoZSBvcmlnaW5hbCBiaW5hcnkgZmlsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhbmQgdW5jaGFuZ2VkLApuYXR1cmFsbHkpLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMi41LqBQb3N0LXByb2ZpbGluZyB0b29scyI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InBvc3QtcHJvZmlsaW5nIj48L2E+Mi41LqBQb3N0LXByb2ZpbGluZyB0b29sczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+ClNvIGZhciwgd2UndmUgY29sbGVjdGVkIGRhdGEsIGJ1dCB3ZSd2ZSB5ZXQgdG8gcHJlc2VudCBpdCBpbiBhIHVzZWZ1bCBmb3JtCnRvIHRoZSB1c2VyLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHBvc3QtcHJvZmlsaW5nIHRvb2xzLiBJbiBnZW5lcmFsIGZvcm0sCnRoZXkgY29sbGF0ZSBhIHN1YnNldCBvZiB0aGUgYXZhaWxhYmxlIHNhbXBsZSBmaWxlcywgbG9hZCBhbmQgcHJvY2VzcyBlYWNoIG9uZQpjb3JyZWxhdGVkIGFnYWluc3QgdGhlIHJlbGV2YW50IGJpbmFyeSBmaWxlLCBhbmQgZmluYWxseSBwcm9kdWNlIHVzZXItcmVhZGFibGUKaW5mb3JtYXRpb24uCjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IkNoYXB0ZXKgMi6gUGVyZm9ybWFuY2UgY291bnRlciBtYW5hZ2VtZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0icGVyZm9ybWFuY2UtY291bnRlcnMiPjwvYT5DaGFwdGVyoDIuoFBlcmZvcm1hbmNlIGNvdW50ZXIgbWFuYWdlbWVudDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMtdWkiPjEuIFByb3ZpZGluZyBhIHVzZXIgaW50ZXJmYWNlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMtcHJvZ3JhbW1pbmciPjIuIFByb2dyYW1taW5nIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVyczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3BlcmZvcm1hbmNlLWNvdW50ZXJzLXN0YXJ0Ij4yLjEuIFN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0aGUgY291bnRlcnM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lkNTc3NDEwIj4yLjIuIElBNjQgYW5kIHBlcmZtb248L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIxLqBQcm92aWRpbmcgYSB1c2VyIGludGVyZmFjZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJwZXJmb3JtYW5jZS1jb3VudGVycy11aSI+PC9hPjEuoFByb3ZpZGluZyBhIHVzZXIgaW50ZXJmYWNlPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGUgcGVyZm9ybWFuY2UgY291bnRlciByZWdpc3RlcnMgbmVlZCBwcm9ncmFtbWluZyBpbiBvcmRlciB0byBzZXQgdGhlCnR5cGUgb2YgZXZlbnQgdG8gY291bnQsIGV0Yy4gT1Byb2ZpbGUgdXNlcyBhIHN0YW5kYXJkIG1vZGVsIGFjcm9zcyBhbGwKQ1BVcyBmb3IgZGVmaW5pbmcgdGhlc2UgZXZlbnRzIGFzIGZvbGxvd3MgOgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CiAgICAgICAgICAgICAgPGNvbGdyb3VwPgogICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgIDwvY29sZ3JvdXA+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+ZXZlbnQ8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5UaGUgZXZlbnQgdHlwZSBlLmcuIERBVEFfTUVNX1JFRlM8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPnVuaXQgbWFzazwvY29kZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPlRoZSBzdWItZXZlbnRzIHRvIGNvdW50IChtb3JlIGRldGFpbGVkIHNwZWNpZmljYXRpb24pPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5jb3VudGVyPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+VGhlIGhhcmR3YXJlIGNvdW50ZXIocykgdGhhdCBjYW4gY291bnQgdGhpcyBldmVudDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+Y291bnQ8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5UaGUgcmVzZXQgdmFsdWUgKGhvdyBtYW55IGV2ZW50cyBiZWZvcmUgYW4gaW50ZXJydXB0KTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+a2VybmVsPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+V2hldGhlciB0aGUgY291bnRlciBzaG91bGQgaW5jcmVtZW50IHdoZW4gaW4ga2VybmVsIHNwYWNlPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj51c2VyPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+V2hldGhlciB0aGUgY291bnRlciBzaG91bGQgaW5jcmVtZW50IHdoZW4gaW4gdXNlciBzcGFjZTwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGUgdGVybSAidW5pdCBtYXNrIiBpcyBib3Jyb3dlZCBmcm9tIHRoZSBJbnRlbCBhcmNoaXRlY3R1cmVzLCBhbmQgY2FuCmZ1cnRoZXIgc3BlY2lmeSBleGFjdGx5IHdoZW4gYSBjb3VudGVyIGlzIGluY3JlbWVudGVkIChmb3IgZXhhbXBsZSwKY2FjaGUtcmVsYXRlZCBldmVudHMgY2FuIGJlIHJlc3RyaWN0ZWQgdG8gcGFydGljdWxhciBzdGF0ZSB0cmFuc2l0aW9ucwpvZiB0aGUgY2FjaGUgbGluZXMpLgo8L3A+CiAgICAgICAgICA8cD4KQWxsIG9mIHRoZSBhdmFpbGFibGUgaGFyZHdhcmUgZXZlbnRzIGFuZCB0aGVpciBkZXRhaWxzIGFyZSBzcGVjaWZpZWQgaW4KdGhlIHRleHR1YWwgZmlsZXMgaW4gdGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZXZlbnRzPC9jb2RlPiBkaXJlY3RvcnkuIFRoZQpzeW50YXggb2YgdGhlc2UgZmlsZXMgc2hvdWxkIGJlIGZhaXJseSBvYnZpb3VzLiBUaGUgdXNlciBzcGVjaWZpZXMgdGhlCm5hbWVzIGFuZCBjb25maWd1cmF0aW9uIGRldGFpbHMgb2YgdGhlIGNob3NlbiBjb3VudGVycyB2aWEKPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPi4gVGhlc2UgYXJlIHRoZW4gd3JpdHRlbiB0byB0aGUga2VybmVsCm1vZHVsZSAoaW4gbnVtZXJpY2FsIGZvcm0pIHZpYSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9kZXYvb3Byb2ZpbGUvTi88L2NvZGU+CndoZXJlIE4gaXMgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGNvdW50ZXIgKHNvbWUgZXZlbnRzIGNhbiBvbmx5IGJlIHVzZWQKb24gc3BlY2lmaWMgY291bnRlcnM7IE9Qcm9maWxlIGhpZGVzIHRoZXNlIGRldGFpbHMgZnJvbSB0aGUgdXNlciB3aGVuCnBvc3NpYmxlKS4gT24gSUE2NCwgdGhlIHBlcmZtb24tYmFzZWQgaW50ZXJmYWNlIGJlaGF2ZXMgc29tZXdoYXQKZGlmZmVyZW50bHksIGFzIGRlc2NyaWJlZCBsYXRlci4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMi6gUHJvZ3JhbW1pbmcgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgcmVnaXN0ZXJzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InBlcmZvcm1hbmNlLWNvdW50ZXJzLXByb2dyYW1taW5nIj48L2E+Mi6gUHJvZ3JhbW1pbmcgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgcmVnaXN0ZXJzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpXZSBoYXZlIGRlc2NyaWJlZCBob3cgdGhlIHVzZXIgaW50ZXJmYWNlIGZpbGxzIGluIHRoZSBkZXNpcmVkCmNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvdW50ZXJzIGFuZCB0cmFuc21pdHMgdGhlIGluZm9ybWF0aW9uIHRvIHRoZQprZXJuZWwuIEl0IGlzIHRoZSBqb2Igb2YgdGhlIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+LSZndDtzZXR1cCgpPC9jb2RlPiBtZXRob2QKdG8gYWN0dWFsbHkgcHJvZ3JhbSB0aGUgcGVyZm9ybWFuY2UgY291bnRlciByZWdpc3RlcnMuIENsZWFybHksIHRoZQpkZXRhaWxzIG9mIGhvdyB0aGlzIGlzIGRvbmUgaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljOyBpdCBpcyBhbHNvCm1vZGVsLXNwZWNpZmljIG9uIG1hbnkgYXJjaGl0ZWN0dXJlcy4gRm9yIGV4YW1wbGUsIGkzODYgcHJvdmlkZXMgbWV0aG9kcwpmb3IgZWFjaCBtb2RlbCB0eXBlIHRoYXQgcHJvZ3JhbXMgdGhlIGNvdW50ZXIgcmVnaXN0ZXJzIGNvcnJlY3RseQooc2VlIHRoZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9wX21vZGVsXyo8L2NvZGU+IGZpbGVzIGluCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YXJjaC9pMzg2L29wcm9maWxlPC9jb2RlPiBmb3IgdGhlIGRldGFpbHMpLiBUaGUgbWV0aG9kCnJlYWRzIHRoZSB2YWx1ZXMgc3RvcmVkIGluIHRoZSB2aXJ0dWFsIG9wcm9maWxlZnMgZmlsZXMgYW5kIHByb2dyYW1zCnRoZSByZWdpc3RlcnMgYXBwcm9wcmlhdGVseSwgcmVhZHkgZm9yIHN0YXJ0aW5nIHRoZSBhY3R1YWwgcHJvZmlsaW5nCnNlc3Npb24uCjwvcD4KICAgICAgICAgIDxwPgpUaGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRyaXZlcnMgbWFrZSBzdXJlIHRvIHNhdmUgdGhlIG9sZCByZWdpc3RlcgpzZXR0aW5ncyBiZWZvcmUgZG9pbmcgT1Byb2ZpbGUgc2V0dXAuIFRoZXkgYXJlIHJlc3RvcmVkIHdoZW4gT1Byb2ZpbGUKc2h1dHMgZG93bi4gVGhpcyBpcyB1c2VmdWwsIGZvciBleGFtcGxlLCBvbiBpMzg2LCB3aGVyZSB0aGUgTk1JIHdhdGNoZG9nCnVzZXMgdGhlIHNhbWUgcGVyZm9ybWFuY2UgY291bnRlciByZWdpc3RlcnMgYXMgT1Byb2ZpbGU7IHRoZXkgY2Fubm90CnJ1biBjb25jdXJyZW50bHksIGJ1dCBPUHJvZmlsZSBtYWtlcyBzdXJlIHRvIHJlc3RvcmUgdGhlIHNldHVwIGl0IGZvdW5kCmJlZm9yZSBpdCB3YXMgcnVubmluZy4KPC9wPgogICAgICAgICAgPHA+CkluIGFkZGl0aW9uIHRvIHByb2dyYW1taW5nIHRoZSBjb3VudGVyIHJlZ2lzdGVycyB0aGVtc2VsdmVzLCBvdGhlciBzZXR1cAppcyBvZnRlbiBuZWNlc3NhcnkuIEZvciBleGFtcGxlLCBvbiBpMzg2LCB0aGUgbG9jYWwgQVBJQyBuZWVkcwpwcm9ncmFtbWluZyBpbiBvcmRlciB0byBtYWtlIHRoZSBjb3VudGVyJ3Mgb3ZlcmZsb3cgaW50ZXJydXB0IGFwcGVhciBhcwphbiBOTUkgKG5vbi1tYXNrYWJsZSBpbnRlcnJ1cHQpLiBUaGlzIGFsbG93cyBzYW1wbGluZyAoYW5kIHRoZXJlZm9yZQpwcm9maWxpbmcpIG9mIHJlZ2lvbnMgd2hlcmUgIm5vcm1hbCIgaW50ZXJydXB0cyBhcmUgbWFza2VkLCBlbmFibGluZwptb3JlIHJlbGlhYmxlIHByb2ZpbGVzLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMS6gU3RhcnRpbmcgYW5kIHN0b3BwaW5nIHRoZSBjb3VudGVycyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwZXJmb3JtYW5jZS1jb3VudGVycy1zdGFydCI+PC9hPjIuMS6gU3RhcnRpbmcgYW5kIHN0b3BwaW5nIHRoZSBjb3VudGVyczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpJbml0aWF0aW5nIGEgcHJvZmlsaW5nIHNlc3Npb24gaXMgZG9uZSB2aWEgd3JpdGluZyBhbiBBU0NJSSAnMScKdG8gdGhlIGZpbGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vZGV2L29wcm9maWxlL2VuYWJsZTwvY29kZT4uIFRoaXMgc2V0cyB1cCB0aGUKY29yZSwgYW5kIGNhbGxzIGludG8gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkcml2ZXIgdG8gYWN0dWFsbHkKZW5hYmxlIGVhY2ggY29uZmlndXJlZCBjb3VudGVyLiBBZ2FpbiwgdGhlIGRldGFpbHMgb2YgaG93IHRoaXMgaXMKZG9uZSBpcyBtb2RlbC1zcGVjaWZpYyAoZm9yIGV4YW1wbGUsIHRoZSBBdGhsb24gbW9kZWxzIGNhbiBkaXNhYmxlCm9yIGVuYWJsZSBvbiBhIHBlci1jb3VudGVyIGJhc2lzLCB1bmxpa2UgdGhlIFBQcm8gbW9kZWxzKS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMi6gSUE2NCBhbmQgcGVyZm1vbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJpZDU3NzQxMCI+PC9hPjIuMi6gSUE2NCBhbmQgcGVyZm1vbjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgSUE2NCBhcmNoaXRlY3R1cmUgcHJvdmlkZXMgYSBkaWZmZXJlbnQgaW50ZXJmYWNlIGZyb20gdGhlIG90aGVyCmFyY2hpdGVjdHVyZXMsIHVzaW5nIHRoZSBleGlzdGluZyBwZXJmbW9uIGRyaXZlci4gUmVnaXN0ZXIgcHJvZ3JhbW1pbmcKaXMgaGFuZGxlZCBlbnRpcmVseSBpbiB1c2VyLXNwYWNlIChzZWUKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3BlcmZtb24uYzwvY29kZT4gZm9yIHRoZSBkZXRhaWxzKS4gQSBwcm9jZXNzCmlzIGZvcmtlZCBmb3IgZWFjaCBDUFUsIHdoaWNoIGNyZWF0ZXMgYSBwZXJmbW9uIGNvbnRleHQgYW5kIHNldHMgdGhlCmNvdW50ZXIgcmVnaXN0ZXJzIGFwcHJvcHJpYXRlbHkgdmlhIHRoZQo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnN5c19wZXJmbW9uY3RsPC9jb2RlPiBpbnRlcmZhY2UuIEluIGFkZGl0aW9uLCB0aGUgYWN0dWFsCmluaXRpYXRpb24gYW5kIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9maWxpbmcgc2Vzc2lvbiBpcyBoYW5kbGVkIHZpYSB0aGUKc2FtZSBpbnRlcmZhY2UgdXNpbmcgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5QRk1fU1RBUlQ8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29uc3RhbnQiPlBGTV9TVE9QPC9jb2RlPi4gT24gSUE2NCwgdGhlbiwgdGhlcmUgYXJlIG5vIG9wcm9maWxlZnMKZmlsZXMgZm9yIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVycywgYXMgdGhlIGtlcm5lbCBkcml2ZXIgZG9lcyBub3QKcHJvZ3JhbSB0aGUgcmVnaXN0ZXJzIGl0c2VsZi4KPC9wPgogICAgICAgICAgICA8cD4KSW5zdGVhZCwgdGhlIHBlcmZtb24gZHJpdmVyIGZvciBPUHJvZmlsZSBzaW1wbHkgcmVnaXN0ZXJzIHdpdGggdGhlCk9Qcm9maWxlIGNvcmUgd2l0aCBhbiBPUHJvZmlsZS1zcGVjaWZpYyBVVUlELiBEdXJpbmcgYSBwcm9maWxpbmcKc2Vzc2lvbiwgdGhlIHBlcmZtb24gY29yZSBjYWxscyBpbnRvIHRoZSBPUHJvZmlsZSBwZXJmbW9uIGRyaXZlciBhbmQKc2FtcGxlcyBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBPUHJvZmlsZSBjb3JlIGl0c2VsZiBhcyB1c3VhbCAod2l0aAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wcm9maWxlX2FkZF9zYW1wbGUoKTwvY29kZT4pLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSJDaGFwdGVyoDMuoENvbGxlY3RpbmcgYW5kIHByb2Nlc3Npbmcgc2FtcGxlcyI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImNvbGxlY3Rpbmctc2FtcGxlcyI+PC9hPkNoYXB0ZXKgMy6gQ29sbGVjdGluZyBhbmQgcHJvY2Vzc2luZyBzYW1wbGVzPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNyZWNlaXZpbmctaW50ZXJydXB0cyI+MS4gUmVjZWl2aW5nIGludGVycnVwdHM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb3JlLXN0cnVjdHVyZSI+Mi4gQ29yZSBkYXRhIHN0cnVjdHVyZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2dnaW5nLXNhbXBsZSI+My4gTG9nZ2luZyBhIHNhbXBsZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2xvZ2dpbmctc3RhY2siPjQuIExvZ2dpbmcgc3RhY2sgdHJhY2VzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc3luY2hyb25pc2luZy1idWZmZXJzIj41LiBTeW5jaHJvbmlzaW5nIHRoZSBDUFUgYnVmZmVycyB0byB0aGUgZXZlbnQgYnVmZmVyPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGVudHJ5LWNvb2tpZXMiPjYuIElkZW50aWZ5aW5nIGJpbmFyeSBpbWFnZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNmaW5kaW5nLWRlbnRyeSI+Ny4gRmluZGluZyBhIHNhbXBsZSdzIGJpbmFyeSBpbWFnZSBhbmQgb2Zmc2V0PC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIxLqBSZWNlaXZpbmcgaW50ZXJydXB0cyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJyZWNlaXZpbmctaW50ZXJydXB0cyI+PC9hPjEuoFJlY2VpdmluZyBpbnRlcnJ1cHRzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpOYXR1cmFsbHksIGhvdyB0aGUgb3ZlcmZsb3cgaW50ZXJydXB0cyBhcmUgcmVjZWl2ZWQgaXMgc3BlY2lmaWMKdG8gdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSwgdW5sZXNzIHdlIGFyZSBpbiAidGltZXIiIG1vZGUsIHdoZXJlIHRoZQpsb2dnaW5nIHJvdXRpbmUgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gdGhlIHN0YW5kYXJkIGtlcm5lbCB0aW1lcgppbnRlcnJ1cHQgaGFuZGxlci4KPC9wPgogICAgICAgICAgPHA+Ck9uIHRoZSBpMzg2IGFyY2hpdGVjdHVyZSwgdGhlIGxvY2FsIEFQSUMgaXMgcHJvZ3JhbW1lZCBzdWNoIHRoYXQgd2hlbiBhCmNvdW50ZXIgb3ZlcmZsb3dzICh0aGF0IGlzLCBpdCByZWNlaXZlcyBhbiBldmVudCB0aGF0IGNhdXNlcyBhbiBpbnRlZ2VyCm92ZXJmbG93IG9mIHRoZSByZWdpc3RlciB2YWx1ZSB0byB6ZXJvKSwgYW4gTk1JIGlzIGdlbmVyYXRlZC4gVGhpcyBjYWxscwppbnRvIHRoZSBnZW5lcmFsIGhhbmRsZXIgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5kb19ubWkoKTwvY29kZT47IGJlY2F1c2UgT1Byb2ZpbGUKaGFzIHJlZ2lzdGVyZWQgaXRzZWxmIGFzIGNhcGFibGUgb2YgaGFuZGxpbmcgTk1JIGludGVycnVwdHMsIHRoaXMgd2lsbApjYWxsIGludG8gdGhlIE9Qcm9maWxlIGRyaXZlciBjb2RlIGluCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YXJjaC9pMzg2L29wcm9maWxlPC9jb2RlPi4gSGVyZSwgdGhlIHNhdmVkIFBDIHZhbHVlICh0aGUKQ1BVIHNhdmVzIHRoZSByZWdpc3RlciBzZXQgYXQgdGhlIHRpbWUgb2YgaW50ZXJydXB0IG9uIHRoZSBzdGFjawphdmFpbGFibGUgZm9yIGluc3BlY3Rpb24pIGlzIGV4dHJhY3RlZCwgYW5kIHRoZSBjb3VudGVycyBhcmUgZXhhbWluZWQgdG8KZmluZCBvdXQgd2hpY2ggb25lIGdlbmVyYXRlZCB0aGUgaW50ZXJydXB0LiBBbHNvIGRldGVybWluZWQgaXMgd2hldGhlcgp0aGUgc3lzdGVtIHdhcyBpbnNpZGUga2VybmVsIG9yIHVzZXIgc3BhY2UgYXQgdGhlIHRpbWUgb2YgdGhlIGludGVycnVwdC4KVGhlc2UgdGhyZWUgcGllY2VzIG9mIGluZm9ybWF0aW9uIGFyZSB0aGVuIGZvcndhcmRlZCBvbnRvIHRoZSBPUHJvZmlsZQpjb3JlIHZpYSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wcm9maWxlX2FkZF9zYW1wbGUoKTwvY29kZT4uIEZpbmFsbHksIHRoZQpjb3VudGVyIHZhbHVlcyBhcmUgcmVzZXQgdG8gdGhlIGNob3NlbiBjb3VudCB2YWx1ZSwgdG8gZW5zdXJlIGFub3RoZXIKaW50ZXJydXB0IGhhcHBlbnMgYWZ0ZXIgYW5vdGhlciBOIGV2ZW50cyBoYXZlIG9jY3VycmVkLiBPdGhlcgphcmNoaXRlY3R1cmVzIGJlaGF2ZSBpbiBhIHNpbWlsYXIgbWFubmVyLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLqBDb3JlIGRhdGEgc3RydWN0dXJlcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJjb3JlLXN0cnVjdHVyZSI+PC9hPjIuoENvcmUgZGF0YSBzdHJ1Y3R1cmVzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpCZWZvcmUgY29uc2lkZXJpbmcgd2hhdCBoYXBwZW5zIHdoZW4gd2UgbG9nIGEgc2FtcGxlLCB3ZSBzaGFsbCBkaWdyZXNzCmZvciBhIG1vbWVudCBhbmQgbG9vayBhdCB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgY29sbGVjdGlvbgpzeXN0ZW0uCjwvcD4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBtYWludGFpbnMgYSBzbWFsbCBidWZmZXIgZm9yIHN0b3JpbmcgdGhlIGxvZ2dlZCBzYW1wbGVzIGZvcgplYWNoIENQVSBvbiB0aGUgc3lzdGVtLiBPbmx5IHRoaXMgYnVmZmVyIGlzIGFsdGVyZWQgd2hlbiB3ZSBhY3R1YWxseSBsb2cKYSBzYW1wbGUgKHJlbWVtYmVyLCB3ZSBtYXkgc3RpbGwgYmUgaW4gYW4gTk1JIGNvbnRleHQsIHNvIG5vIGxvY2tpbmcgaXMKcG9zc2libGUpLiBUaGUgYnVmZmVyIGlzIG1hbmFnZWQgYnkgYSB0d28taGFuZGVkIHN5c3RlbTsgdGhlICJoZWFkIgppdGVyYXRvciBkaWN0YXRlcyB3aGVyZSB0aGUgbmV4dCBzYW1wbGUgZGF0YSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZQpidWZmZXIuIE9mIGNvdXJzZSwgb3ZlcmZsb3cgb2YgdGhlIGJ1ZmZlciBpcyBwb3NzaWJsZSwgaW4gd2hpY2ggY2FzZQp0aGUgc2FtcGxlIGlzIGRpc2NhcmRlZC4KPC9wPgogICAgICAgICAgPHA+Ckl0IGlzIGNyaXRpY2FsIHRvIHJlbWVtYmVyIHRoYXQgYXQgdGhpcyBwb2ludCwgdGhlIFBDIHZhbHVlIGlzIGFuCmFic29sdXRlIHZhbHVlLCBhbmQgaXMgdGhlcmVmb3JlIG9ubHkgbWVhbmluZ2Z1bCBpbiB0aGUgY29udGV4dCBvZiB3aGljaAp0YXNrIGl0IHdhcyBsb2dnZWQgYWdhaW5zdC4gVGh1cywgdGhlc2UgcGVyLUNQVSBidWZmZXJzIGFsc28gbWFpbnRhaW4KZGV0YWlscyBvZiB3aGljaCB0YXNrIGVhY2ggbG9nZ2VkIHNhbXBsZSBpcyBmb3IsIGFzIGRlc2NyaWJlZCBpbiB0aGUKbmV4dCBzZWN0aW9uLiBJbiBhZGRpdGlvbiwgd2Ugc3RvcmUgd2hldGhlciB0aGUgc2FtcGxlIHdhcyBpbiBrZXJuZWwKc3BhY2Ugb3IgdXNlciBzcGFjZSAob24gc29tZSBhcmNoaXRlY3R1cmVzIGFuZCBjb25maWd1cmF0aW9ucywgdGhlIGFkZHJlc3MKc3BhY2UgaXMgbm90IHN1Yi1kaXZpZGVkIG5lYXRseSBhdCBhIHNwZWNpZmljIFBDIHZhbHVlLCBzbyB3ZSBtdXN0IHN0b3JlCnRoaXMgaW5mb3JtYXRpb24pLgo8L3A+CiAgICAgICAgICA8cD4KQXMgd2VsbCBhcyB0aGVzZSBzbWFsbCBwZXItQ1BVIGJ1ZmZlcnMsIHdlIGhhdmUgYSBjb25zaWRlcmFibHkgbGFyZ2VyCnNpbmdsZSBidWZmZXIuIFRoaXMgaG9sZHMgdGhlIGRhdGEgdGhhdCBpcyBldmVudHVhbGx5IGNvcGllZCBvdXQgaW50bwp0aGUgT1Byb2ZpbGUgZGFlbW9uLiBPbiBjZXJ0YWluIHN5c3RlbSBldmVudHMsIHRoZSBwZXItQ1BVIGJ1ZmZlcnMgYXJlCnByb2Nlc3NlZCBhbmQgZW50ZXJlZCAoaW4gbXV0YXRlZCBmb3JtKSBpbnRvIHRoZSBtYWluIGJ1ZmZlciwga25vd24gaW4KdGhlIHNvdXJjZSBhcyB0aGUgImV2ZW50IGJ1ZmZlciIuIFRoZSAidGFpbCIgaXRlcmF0b3IgaW5kaWNhdGVzIHRoZQpwb2ludCBmcm9tIHdoaWNoIHRoZSBDUFUgbWF5IGJlIHJlYWQsIHVwIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgImhlYWQiCml0ZXJhdG9yLiBUaGlzIHByb3ZpZGVzIGFuIGVudGlyZWx5IGxvY2stZnJlZSBtZXRob2QgZm9yIGV4dHJhY3RpbmcgZGF0YQpmcm9tIHRoZSBDUFUgYnVmZmVycy4gVGhpcyBwcm9jZXNzIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgbGF0ZXIgaW4gdGhpcyBjaGFwdGVyLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWd1cmUiPgogICAgICAgICAgICA8YSBpZD0iaWQ1Nzc1MzgiPjwvYT4KICAgICAgICAgICAgPHAgY2xhc3M9InRpdGxlIj4KICAgICAgICAgICAgICA8Yj5GaWd1cmWgMy4xLqBUaGUgT1Byb2ZpbGUgYnVmZmVyczwvYj4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWd1cmUtY29udGVudHMiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYnVmZmVycy5wbmciIGFsdD0iVGhlIE9Qcm9maWxlIGJ1ZmZlcnMiIC8+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnIgY2xhc3M9ImZpZ3VyZS1icmVhayIgLz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuoExvZ2dpbmcgYSBzYW1wbGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ibG9nZ2luZy1zYW1wbGUiPjwvYT4zLqBMb2dnaW5nIGEgc2FtcGxlPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpBcyBtZW50aW9uZWQsIHRoZSBzYW1wbGUgaXMgbG9nZ2VkIGludG8gdGhlIGJ1ZmZlciBzcGVjaWZpYyB0byB0aGUKY3VycmVudCBDUFUuIFRoZSBDUFUgYnVmZmVyIGlzIGEgc2ltcGxlIGFycmF5IG9mIHBhaXJzIG9mIHVuc2lnbmVkIGxvbmcKdmFsdWVzOyBmb3IgYSBzYW1wbGUsIHRoZXkgaG9sZCB0aGUgUEMgdmFsdWUgYW5kIHRoZSBjb3VudGVyIGZvciB0aGUKc2FtcGxlLiAoVGhlIGNvdW50ZXIgdmFsdWUgaXMgbGF0ZXIgdXNlZCB0byB0cmFuc2xhdGUgYmFjayBpbnRvIHRoZSByZWxldmFudApldmVudCB0eXBlIHRoZSBjb3VudGVyIHdhcyBwcm9ncmFtbWVkIHRvKS4KPC9wPgogICAgICAgICAgPHA+CkluIGFkZGl0aW9uIHRvIGxvZ2dpbmcgdGhlIHNhbXBsZSBpdHNlbGYsIHdlIGFsc28gbG9nIHRhc2sgc3dpdGNoZXMuClRoaXMgaXMgc2ltcGx5IGRvbmUgYnkgc3RvcmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgbGFzdCB0YXNrIHRvIGxvZyBhCnNhbXBsZSBvbiB0aGF0IENQVSBpbiBhIGRhdGEgc3RydWN0dXJlLCBhbmQgd3JpdGluZyBhIHRhc2sgc3dpdGNoIGVudHJ5CmludG8gdGhlIGJ1ZmZlciBpZiB0aGUgbmV3IHZhbHVlIG9mIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Y3VycmVudCgpPC9jb2RlPiBoYXMKY2hhbmdlZC4gTm90ZSB0aGF0IGxhdGVyIHdlIHdpbGwgZGlyZWN0bHkgZGUtcmVmZXJlbmNlIHRoaXMgcG9pbnRlcjsKdGhpcyBpbXBvc2VzIGNlcnRhaW4gcmVzdHJpY3Rpb25zIG9uIHdoZW4gYW5kIGhvdyB0aGUgQ1BVIGJ1ZmZlcnMgbmVlZAp0byBiZSBwcm9jZXNzZWQuCjwvcD4KICAgICAgICAgIDxwPgpGaW5hbGx5LCBhcyBtZW50aW9uZWQsIHdlIGxvZyB3aGV0aGVyIHdlIGhhdmUgY2hhbmdlZCBiZXR3ZWVuIGtlcm5lbCBhbmQKdXNlcnNwYWNlIHVzaW5nIGEgc2ltaWxhciBtZXRob2QuIEJvdGggb2YgdGhlc2UgdmFyaWFibGVzCig8Y29kZSBjbGFzcz0idmFybmFtZSI+bGFzdF90YXNrPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmxhc3RfaXNfa2VybmVsPC9jb2RlPikgYXJlCnJlc2V0IHdoZW4gdGhlIENQVSBidWZmZXIgaXMgcmVhZC4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNC6gTG9nZ2luZyBzdGFjayB0cmFjZXMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ibG9nZ2luZy1zdGFjayI+PC9hPjQuoExvZ2dpbmcgc3RhY2sgdHJhY2VzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBjYW4gYWxzbyBwcm92aWRlIHN0YXRpc3RpY2FsIHNhbXBsZXMgb2YgY2FsbCBjaGFpbnMgKG9uIHg4NikuIFRvCmRvIHRoaXMsIGF0IHNhbXBsZSB0aW1lLCB0aGUgZnJhbWUgcG9pbnRlciBjaGFpbiBpcyB0cmF2ZXJzZWQsIHJlY29yZGluZwp0aGUgcmV0dXJuIGFkZHJlc3MgZm9yIGVhY2ggc3RhY2sgZnJhbWUuIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIGNvZGUKd2FzIGNvbXBpbGVkIHdpdGggZnJhbWUgcG9pbnRlcnMsIGJ1dCB3ZSdyZSBjYXJlZnVsIHRvIGFib3J0IHRoZQp0cmF2ZXJzYWwgaWYgdGhlIGZyYW1lIHBvaW50ZXIgYXBwZWFycyBiYWQuIFdlIHN0b3JlIHRoZSBzZXQgb2YgcmV0dXJuCmFkZHJlc3NlcyBzdHJhaWdodCBpbnRvIHRoZSBDUFUgYnVmZmVyLiBOb3RlIHRoYXQsIHNpbmNlIHRoaXMgdHJhdmVyc2FsCmlzIGtleWVkIG9mZiB0aGUgc3RhbmRhcmQgc2FtcGxlIGludGVycnVwdCwgdGhlIG51bWJlciBvZiB0aW1lcyBhCmZ1bmN0aW9uIGFwcGVhcnMgaW4gYSBzdGFjayB0cmFjZSBpcyBub3QgYW4gaW5kaWNhdG9yIG9mIGhvdyBtYW55IHRpbWVzCnRoZSBjYWxsIHNpdGUgd2FzIGV4ZWN1dGVkOiByYXRoZXIsIGl0J3MgcmVsYXRlZCB0byB0aGUgbnVtYmVyIG9mCnNhbXBsZXMgd2UgdG9vayB3aGVyZSB0aGF0IGNhbGwgc2l0ZSB3YXMgaW52b2x2ZWQuIFRodXMsIHRoZSByZXN1bHRzIGZvcgpzdGFjayB0cmFjZXMgYXJlIG5vdCBuZWNlc3NhcmlseSBwcm9wb3J0aW9uYWwgdG8gdGhlIGNhbGwgY291bnRzOgp0eXBpY2FsIHByb2dyYW1zIHdpbGwgaGF2ZSBtYW55IDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bWFpbigpPC9jb2RlPiBzYW1wbGVzLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI1LqBTeW5jaHJvbmlzaW5nIHRoZSBDUFUgYnVmZmVycyB0byB0aGUgZXZlbnQgYnVmZmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InN5bmNocm9uaXNpbmctYnVmZmVycyI+PC9hPjUuoFN5bmNocm9uaXNpbmcgdGhlIENQVSBidWZmZXJzIHRvIHRoZSBldmVudCBidWZmZXI8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CkF0IHNvbWUgcG9pbnQsIHdlIGhhdmUgdG8gcHJvY2VzcyB0aGUgZGF0YSBpbiBlYWNoIENQVSBidWZmZXIgYW5kIGVudGVyCml0IGludG8gdGhlIG1haW4gKGV2ZW50KSBidWZmZXIuIFRoZSBmaWxlCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YnVmZmVyX3N5bmMuYzwvY29kZT4gY29udGFpbnMgdGhlIHJlbGV2YW50IGNvZGUuIFdlCnBlcmlvZGljYWxseSAoY3VycmVudGx5IGV2ZXJ5IDxjb2RlIGNsYXNzPSJjb25zdGFudCI+SFo8L2NvZGU+LzQgamlmZmllcykgc3RhcnQKdGhlIHN5bmNocm9uaXNhdGlvbiBwcm9jZXNzLiBJbiBhZGRpdGlvbiwgd2UgcHJvY2VzcyB0aGUgYnVmZmVycyBvbgpjZXJ0YWluIGV2ZW50cywgc3VjaCBhcyBhbiBhcHBsaWNhdGlvbiBjYWxsaW5nCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bXVubWFwKCk8L2NvZGU+LiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+ZXhpdCgpPC9jb2RlPiAtIGJlY2F1c2UgdGhlIENQVSBidWZmZXJzIGNvbnRhaW4gcG9pbnRlcnMKdG8gdGhlIHRhc2sgc3RydWN0dXJlLCBpZiB3ZSBkb24ndCBwcm9jZXNzIGFsbCB0aGUgYnVmZmVycyBiZWZvcmUgdGhlCnRhc2sgaXMgYWN0dWFsbHkgZGVzdHJveWVkIGFuZCB0aGUgdGFzayBzdHJ1Y3R1cmUgZnJlZWQsIHRoZW4gd2UgY291bGQKZW5kIHVwIHRyeWluZyB0byBkZXJlZmVyZW5jZSBhIGJvZ3VzIHBvaW50ZXIgaW4gb25lIG9mIHRoZSBDUFUgYnVmZmVycy4KPC9wPgogICAgICAgICAgPHA+CldlIGFsc28gYWRkIGEgbm90aWZpY2F0aW9uIHdoZW4gYSBrZXJuZWwgbW9kdWxlIGlzIGxvYWRlZDsgdGhpcyBpcyBzbwp0aGF0IHVzZXItc3BhY2UgY2FuIHJlLXJlYWQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcHJvYy9tb2R1bGVzPC9jb2RlPiB0bwpkZXRlcm1pbmUgdGhlIGxvYWQgYWRkcmVzc2VzIG9mIGtlcm5lbCBtb2R1bGUgdGV4dCBzZWN0aW9ucy4gV2l0aG91dAp0aGlzIG5vdGlmaWNhdGlvbiwgc2FtcGxlcyBmb3IgYSBuZXdseS1sb2FkZWQgbW9kdWxlIGNvdWxkIGdldCBsb3N0IG9yCmJlIGF0dHJpYnV0ZWQgdG8gdGhlIHdyb25nIG1vZHVsZS4KPC9wPgogICAgICAgICAgPHA+ClRoZSBzeW5jaHJvbmlzYXRpb24gaXRzZWxmIHdvcmtzIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOiBmaXJzdCwgbXV0dWFsCmV4Y2x1c2lvbiBvbiB0aGUgZXZlbnQgYnVmZmVyIGlzIHRha2VuLiBSZW1lbWJlciwgd2UgZG8gbm90IG5lZWQgdG8gZG8KdGhhdCBmb3IgZWFjaCBDUFUgYnVmZmVyLCBhcyB3ZSBvbmx5IHJlYWQgZnJvbSB0aGUgdGFpbCBpdGVyYXRvciAod2hpbHN0CmludGVycnVwdHMgbWlnaHQgYmUgYXJyaXZpbmcgYXQgdGhlIHNhbWUgYnVmZmVyLCBidXQgdGhleSB3aWxsIHdyaXRlIHRvCnRoZSBwb3NpdGlvbiBvZiB0aGUgaGVhZCBpdGVyYXRvciwgbGVhdmluZyBwcmV2aW91c2x5IHdyaXR0ZW4gZW50cmllcwppbnRhY3QpLiBUaGVuLCB3ZSBwcm9jZXNzIGVhY2ggQ1BVIGJ1ZmZlciBpbiB0dXJuLiBBIENQVSBzd2l0Y2gKbm90aWZpY2F0aW9uIGlzIGFkZGVkIHRvIHRoZSBidWZmZXIgZmlyc3QgKGZvcgo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWNwdTwvY29kZT4gc3VwcG9ydCkuIFRoZW4gdGhlIHByb2Nlc3Npbmcgb2YgdGhlCmFjdHVhbCBkYXRhIHN0YXJ0cy4KPC9wPgogICAgICAgICAgPHA+CkFzIG1lbnRpb25lZCwgdGhlIENQVSBidWZmZXIgY29uc2lzdHMgb2YgdGFzayBzd2l0Y2ggZW50cmllcyBhbmQgdGhlCmFjdHVhbCBzYW1wbGVzLiBXaGVuIHRoZSByb3V0aW5lIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3luY19idWZmZXIoKTwvY29kZT4gc2VlcwphIHRhc2sgc3dpdGNoLCB0aGUgcHJvY2VzcyBJRCBhbmQgcHJvY2VzcyBncm91cCBJRCBhcmUgcmVjb3JkZWQgaW50byB0aGUKZXZlbnQgYnVmZmVyLCBhbG9uZyB3aXRoIGEgZGNvb2tpZSAoc2VlIGJlbG93KSBpZGVudGlmeWluZyB0aGUKYXBwbGljYXRpb24gYmluYXJ5IChlLmcuIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9iYXNoPC9jb2RlPikuIFRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+bW1hcF9zZW08L2NvZGU+IGZvciB0aGUgdGFzayBpcyB0aGVuIHRha2VuLCB0byBhbGxvdyBzYWZlCml0ZXJhdGlvbiBhY3Jvc3MgdGhlIHRhc2tzJyBsaXN0IG9mIG1hcHBlZCBhcmVhcy4gRWFjaCBzYW1wbGUgaXMgdGhlbgpwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCjwvcD4KICAgICAgICAgIDxwPgpBZnRlciBhIGJ1ZmZlciBoYXMgYmVlbiByZWFkLCB0aGUgdGFpbCBpdGVyYXRvciBpcyB1cGRhdGVkIHRvIHJlZmxlY3QKaG93IG11Y2ggb2YgdGhlIGJ1ZmZlciB3YXMgcHJvY2Vzc2VkLiBOb3RlIHRoYXQgd2hlbiB3ZSBkZXRlcm1pbmVkIGhvdwptdWNoIGRhdGEgdGhlcmUgd2FzIHRvIHJlYWQgaW4gdGhlIENQVSBidWZmZXIsIHdlIGFsc28gY2FsbGVkCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Y3B1X2J1ZmZlcl9yZXNldCgpPC9jb2RlPiB0byByZXNldAo8Y29kZSBjbGFzcz0idmFybmFtZSI+bGFzdF90YXNrPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmxhc3RfaXNfa2VybmVsPC9jb2RlPiwgYXMKd2UndmUgYWxyZWFkeSBtZW50aW9uZWQuIER1cmluZyB0aGUgcHJvY2Vzc2luZywgbW9yZSBzYW1wbGVzIG1heSBoYXZlCmJlZW4gYXJyaXZpbmcgaW4gdGhlIENQVSBidWZmZXI7IHRoaXMgaXMgT0sgYmVjYXVzZSB3ZSBhcmUgY2FyZWZ1bCB0bwpvbmx5IHVwZGF0ZSB0aGUgdGFpbCBpdGVyYXRvciB0byBob3cgbXVjaCB3ZSBhY3R1YWxseSByZWFkIC0gb24gdGhlIG5leHQKYnVmZmVyIHN5bmNocm9uaXNhdGlvbiwgd2Ugd2lsbCBzdGFydCBhZ2FpbiBmcm9tIHRoYXQgcG9pbnQuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjYuoElkZW50aWZ5aW5nIGJpbmFyeSBpbWFnZXMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZGVudHJ5LWNvb2tpZXMiPjwvYT42LqBJZGVudGlmeWluZyBiaW5hcnkgaW1hZ2VzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpJbiBvcmRlciB0byBwcm9kdWNlIHVzZWZ1bCBwcm9maWxlcywgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGFzc29jaWF0ZSBhCnBhcnRpY3VsYXIgUEMgdmFsdWUgc2FtcGxlIHdpdGggYW4gYWN0dWFsIEVMRiBiaW5hcnkgb24gdGhlIGRpc2suIFRoaXMKbGVhdmVzIHVzIHdpdGggdGhlIHByb2JsZW0gb2YgaG93IHRvIGV4cG9ydCB0aGlzIGluZm9ybWF0aW9uIHRvCnVzZXItc3BhY2UuIFdlIGNyZWF0ZSB1bmlxdWUgSURzIHRoYXQgaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGRpcmVjdG9yeQplbnRyeSAoZGVudHJ5KSwgYW5kIHdyaXRlIHRob3NlIElEcyBpbnRvIHRoZSBldmVudCBidWZmZXIuIExhdGVyIG9uLAp0aGUgdXNlci1zcGFjZSBkYWVtb24gY2FuIGNhbGwgdGhlIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bG9va3VwX2Rjb29raWU8L2NvZGU+CnN5c3RlbSBjYWxsLCB3aGljaCBsb29rcyB1cCB0aGUgSUQgYW5kIGZpbGxzIGluIHRoZSBmdWxsIHBhdGggb2YKdGhlIGJpbmFyeSBpbWFnZSBpbiB0aGUgYnVmZmVyIHVzZXItc3BhY2UgcGFzc2VzIGluLiBUaGVzZSBJRHMgYXJlCm1haW50YWluZWQgYnkgdGhlIGNvZGUgaW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5mcy9kY29va2llcy5jPC9jb2RlPjsgdGhlCmNhY2hlIGxhc3RzIGZvciBhcyBsb25nIGFzIHRoZSBkYWVtb24gaGFzIHRoZSBldmVudCBidWZmZXIgb3Blbi4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNy6gRmluZGluZyBhIHNhbXBsZSdzIGJpbmFyeSBpbWFnZSBhbmQgb2Zmc2V0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImZpbmRpbmctZGVudHJ5Ij48L2E+Ny6gRmluZGluZyBhIHNhbXBsZSdzIGJpbmFyeSBpbWFnZSBhbmQgb2Zmc2V0PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpXZSBoYXZlbid0IHlldCBkZXNjcmliZWQgaG93IHdlIHByb2Nlc3MgdGhlIGFic29sdXRlIFBDIHZhbHVlIGludG8Kc29tZXRoaW5nIHVzYWJsZSBieSB0aGUgdXNlci1zcGFjZSBkYWVtb24uIFdoZW4gd2UgZmluZCBhIHNhbXBsZSBlbnRlcmVkCmludG8gdGhlIENQVSBidWZmZXIsIHdlIHRyYXZlcnNlIHRoZSBsaXN0IG9mIG1hcHBpbmdzIGZvciB0aGUgdGFzawoocmVtZW1iZXIsIHdlIHdpbGwgaGF2ZSBzZWVuIGEgdGFzayBzd2l0Y2ggZWFybGllciwgc28gd2Uga25vdyB3aGljaAp0YXNrJ3MgbGlzdHMgdG8gbG9vayBhdCkuIFdoZW4gYSBtYXBwaW5nIGlzIGZvdW5kIHRoYXQgY29udGFpbnMgdGhlIFBDCnZhbHVlLCB3ZSBsb29rIHVwIHRoZSBtYXBwZWQgZmlsZSdzIGRlbnRyeSBpbiB0aGUgZGNvb2tpZSBjYWNoZS4gVGhpcwpnaXZlcyB0aGUgZGNvb2tpZSBJRCB0aGF0IHdpbGwgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIG1hcHBlZCBmaWxlLiBUaGVuCndlIGFsdGVyIHRoZSBhYnNvbHV0ZSB2YWx1ZSBzdWNoIHRoYXQgaXQgaXMgYW4gb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mCnRoZSBmaWxlIGJlaW5nIG1hcHBlZCAodGhlIG1hcHBpbmcgbmVlZCBub3Qgc3RhcnQgYXQgdGhlIHN0YXJ0IG9mIHRoZQphY3R1YWwgZmlsZSwgc28gd2UgaGF2ZSB0byBjb25zaWRlciB0aGUgb2Zmc2V0IHZhbHVlIG9mIHRoZSBtYXBwaW5nKS4gV2UKc3RvcmUgdGhpcyBkY29va2llIElEIGludG8gdGhlIGV2ZW50IGJ1ZmZlcjsgdGhpcyBpZGVudGlmaWVzIHdoaWNoCmJpbmFyeSB0aGUgc2FtcGxlcyBmb2xsb3dpbmcgaXQgYXJlIGFnYWluc3QuCkluIHRoaXMgbWFubmVyLCB3ZSBoYXZlIGNvbnZlcnRlZCBhIFBDIHZhbHVlLCB3aGljaCBoYXMgdHJhbnNpdG9yeQptZWFuaW5nIG9ubHksIGludG8gYSBzdGF0aWMgb2Zmc2V0IHZhbHVlIGZvciBsYXRlciBwcm9jZXNzaW5nIGJ5IHRoZQpkYWVtb24uCjwvcD4KICAgICAgICAgIDxwPgpXZSBhbHNvIGF0dGVtcHQgdG8gYXZvaWQgdGhlIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGxvb2t1cCBvZiB0aGUgZGVudHJ5CmNvb2tpZSB2YWx1ZSBieSBzdG9yaW5nIHRoZSBjb29raWUgdmFsdWUgZGlyZWN0bHkgaW50byB0aGUgZGVudHJ5Cml0c2VsZjsgdGhlbiB3ZSBjYW4gc2ltcGx5IGRlcml2ZSB0aGUgY29va2llIHZhbHVlIGltbWVkaWF0ZWx5IHdoZW4gd2UKZmluZCB0aGUgY29ycmVjdCBtYXBwaW5nLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGFwdGVyIiB0aXRsZT0iQ2hhcHRlcqA0LqBHZW5lcmF0aW5nIHNhbXBsZSBmaWxlcyI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InNhbXBsZS1maWxlcyI+PC9hPkNoYXB0ZXKgNC6gR2VuZXJhdGluZyBzYW1wbGUgZmlsZXM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2Nlc3NpbmctYnVmZmVyIj4xLiBQcm9jZXNzaW5nIHRoZSBidWZmZXI8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNoYW5kbGluZy1rZXJuZWwtc2FtcGxlcyI+MS4xLiBIYW5kbGluZyBrZXJuZWwgc2FtcGxlczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZS1nZW5lcmF0aW9uIj4yLiBMb2NhdGluZyBhbmQgY3JlYXRpbmcgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtd3JpdGluZyI+My4gV3JpdGluZyBkYXRhIHRvIGEgc2FtcGxlIGZpbGU8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgPC9kbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjEuoFByb2Nlc3NpbmcgdGhlIGJ1ZmZlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJwcm9jZXNzaW5nLWJ1ZmZlciI+PC9hPjEuoFByb2Nlc3NpbmcgdGhlIGJ1ZmZlcjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KTm93IHdlIGNhbiBtb3ZlIG9udG8gdXNlci1zcGFjZSBpbiBvdXIgZGVzY3JpcHRpb24gb2YgaG93IHJhdyBpbnRlcnJ1cHQKc2FtcGxlcyBhcmUgcHJvY2Vzc2VkIGludG8gdXNlZnVsIGluZm9ybWF0aW9uLiBBcyB3ZSBkZXNjcmliZWQgaW4KcHJldmlvdXMgc2VjdGlvbnMsIHRoZSBrZXJuZWwgT1Byb2ZpbGUgZHJpdmVyIGNyZWF0ZXMgYSBsYXJnZSBidWZmZXIgb2YKc2FtcGxlIGRhdGEgY29uc2lzdGluZyBvZiBvZmZzZXQgdmFsdWVzLCBpbnRlcnNwZXJzZWQgd2l0aApub3RpZmljYXRpb24gb2YgY2hhbmdlcyBpbiBjb250ZXh0LiBUaGVzZSBjb250ZXh0IGNoYW5nZXMgaW5kaWNhdGUgaG93CmZvbGxvd2luZyBzYW1wbGVzIHNob3VsZCBiZSBhdHRyaWJ1dGVkLCBhbmQgaW5jbHVkZSB0YXNrIHN3aXRjaGVzLCBDUFUKY2hhbmdlcywgYW5kIHdoaWNoIGRjb29raWUgdGhlIHNhbXBsZSB2YWx1ZSBpcyBhZ2FpbnN0LiBCeSBwcm9jZXNzaW5nCnRoaXMgYnVmZmVyIGVudHJ5LWJ5LWVudHJ5LCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXJlIHRoZSBzYW1wbGVzIHNob3VsZApiZSBhY2NyZWRpdGVkIHRvLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgd2hlbiB1c2luZyB0aGUgCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGU8L2NvZGU+Lgo8L3A+CiAgICAgICAgICA8cD4KVGhlIGZpbGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3RyYW5zLmM8L2NvZGU+IGNvbnRhaW5zIHRoZSBiYXNpYyByb3V0aW5lCmZvciB0aGUgYnVmZmVyIHByb2Nlc3NpbmcuIFRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+c3RydWN0IHRyYW5zaWVudDwvY29kZT4Kc3RydWN0dXJlIGlzIHVzZWQgdG8gaG9sZCBjaGFuZ2VzIGluIGNvbnRleHQuIEl0cyBtZW1iZXJzIGFyZSBtb2RpZmllZAphcyB3ZSBwcm9jZXNzIGVhY2ggZW50cnk7IGl0IGlzIHBhc3NlZCBpbnRvIHRoZSByb3V0aW5lcyBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfc2ZpbGUuYzwvY29kZT4gZm9yIGFjdHVhbGx5IGxvZ2dpbmcgdGhlIHNhbXBsZQp0byBhIHBhcnRpY3VsYXIgc2FtcGxlIGZpbGUgKHdoaWNoIHdpbGwgYmUgaGVsZCBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiRTRVNTSU9OX0RJUi9zYW1wbGVzL2N1cnJlbnQ8L2NvZGU+KS4KPC9wPgogICAgICAgICAgPHA+ClRoZSBidWZmZXIgZm9ybWF0IGlzIGRlc2lnbmVkIGZvciBjb25jaXNlbmVzcywgYXMgaGlnaCBzYW1wbGluZyByYXRlcwpjYW4gZWFzaWx5IGdlbmVyYXRlIGEgbG90IG9mIGRhdGEuIFRodXMsIGNvbnRleHQgY2hhbmdlcyBhcmUgcHJlZml4ZWQKYnkgYW4gZXNjYXBlIGNvZGUsIGlkZW50aWZpZWQgYnkgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5pc19lc2NhcGVfY29kZSgpPC9jb2RlPi4KSWYgYW4gZXNjYXBlIGNvZGUgaXMgZm91bmQsIHRoZSBuZXh0IGVudHJ5IGluIHRoZSBidWZmZXIgaWRlbnRpZmllcwp3aGF0IHR5cGUgb2YgY29udGV4dCBjaGFuZ2UgaXMgYmVpbmcgcmVhZC4gVGhlc2UgYXJlIGhhbmRlZCBvZmYgdG8KdmFyaW91cyBoYW5kbGVycyAoc2VlIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+aGFuZGxlcnM8L2NvZGU+IGFycmF5KSwgd2hpY2gKbW9kaWZ5IHRoZSB0cmFuc2llbnQgc3RydWN0dXJlIGFzIGFwcHJvcHJpYXRlLiBJZiBpdCdzIG5vdCBhbiBlc2NhcGUKY29kZSwgdGhlbiBpdCBtdXN0IGJlIGEgUEMgb2Zmc2V0IHZhbHVlLCBhbmQgdGhlIHZlcnkgbmV4dCBlbnRyeSB3aWxsCmJlIHRoZSBudW1lcmljIGhhcmR3YXJlIGNvdW50ZXIuIFRoZXNlIHZhbHVlcyBhcmUgcmVhZCBhbmQgcmVjb3JkZWQKaW4gdGhlIHRyYW5zaWVudCBzdHJ1Y3R1cmU7IHdlIHRoZW4gZG8gYSBsb29rdXAgdG8gZmluZCB0aGUgY29ycmVjdApzYW1wbGUgZmlsZSwgYW5kIGxvZyB0aGUgc2FtcGxlLCBhcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIxLjEuoEhhbmRsaW5nIGtlcm5lbCBzYW1wbGVzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImhhbmRsaW5nLWtlcm5lbC1zYW1wbGVzIj48L2E+MS4xLqBIYW5kbGluZyBrZXJuZWwgc2FtcGxlczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpTYW1wbGVzIGZyb20ga2VybmVsIGNvZGUgcmVxdWlyZSBhIGxpdHRsZSBzcGVjaWFsIGhhbmRsaW5nLiBCZWNhdXNlCnRoZSBiaW5hcnkgdGV4dCB3aGljaCB0aGUgc2FtcGxlIGlzIGFnYWluc3QgZG9lcyBub3QgY29ycmVzcG9uZCB0bwphbnkgZmlsZSB0aGF0IHRoZSBrZXJuZWwgZGlyZWN0bHkga25vd3MgYWJvdXQsIHRoZSBPUHJvZmlsZSBkcml2ZXIKc3RvcmVzIHRoZSBhYnNvbHV0ZSBQQyB2YWx1ZSBpbiB0aGUgYnVmZmVyLCBpbnN0ZWFkIG9mIHRoZSBmaWxlIG9mZnNldC4KT2YgY291cnNlLCB3ZSBuZWVkIGFuIG9mZnNldCBhZ2FpbnN0IHNvbWUgcGFydGljdWxhciBiaW5hcnkuIFRvIGhhbmRsZQp0aGlzLCB3ZSBrZWVwIGEgbGlzdCBvZiBsb2FkZWQgbW9kdWxlcyBieSBwYXJzaW5nCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Byb2MvbW9kdWxlczwvY29kZT4gYXMgbmVlZGVkLiBXaGVuIGEgbW9kdWxlIGlzIGxvYWRlZCwKYSBub3RpZmljYXRpb24gaXMgcGxhY2VkIGluIHRoZSBPUHJvZmlsZSBidWZmZXIsIGFuZCB0aGlzIHRyaWdnZXJzIGEKcmUtcmVhZC4gV2Ugc3RvcmUgdGhlIG1vZHVsZSBuYW1lLCBhbmQgdGhlIGxvYWRpbmcgYWRkcmVzcyBhbmQgc2l6ZS4KVGhpcyBpcyBhbHNvIGRvbmUgZm9yIHRoZSBtYWluIGtlcm5lbCBpbWFnZSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgpUaGUgYWJzb2x1dGUgUEMgdmFsdWUgaXMgbWF0Y2hlZCBhZ2FpbnN0IGVhY2ggYWRkcmVzcyByYW5nZSwgYW5kCm1vZGlmaWVkIGludG8gYW4gb2Zmc2V0IHdoZW4gdGhlIG1hdGNoaW5nIG1vZHVsZSBpcyBmb3VuZC4gU2VlIAo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfa2VybmVsLmM8L2NvZGU+IGZvciB0aGUgZGV0YWlscy4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLqBMb2NhdGluZyBhbmQgY3JlYXRpbmcgc2FtcGxlIGZpbGVzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InNhbXBsZS1maWxlLWdlbmVyYXRpb24iPjwvYT4yLqBMb2NhdGluZyBhbmQgY3JlYXRpbmcgc2FtcGxlIGZpbGVzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpXZSBoYXZlIGEgc2FtcGxlIHZhbHVlIGFuZCBpdHMgc2F0ZWxsaXRlIGRhdGEgc3RvcmVkIGluIGEKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN0cnVjdCB0cmFuc2llbnQ8L2NvZGU+LCBhbmQgd2UgbXVzdCBsb2NhdGUgYW4KYWN0dWFsIHNhbXBsZSBmaWxlIHRvIHN0b3JlIHRoZSBzYW1wbGUgaW4sIHVzaW5nIHRoZSBjb250ZXh0CmluZm9ybWF0aW9uIGluIHRoZSB0cmFuc2llbnQgc3RydWN0dXJlIGFzIGEga2V5LiBUaGUgdHJhbnNpZW50IGRhdGEgdG8Kc2FtcGxlIGZpbGUgbG9va3VwIGlzIGhhbmRsZWQgaW4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3NmaWxlLmM8L2NvZGU+LiBBIGhhc2ggaXMgdGFrZW4gb2YgdGhlCnRyYW5zaWVudCB2YWx1ZXMgdGhhdCBhcmUgcmVsZXZhbnQgKGRlcGVuZGluZyB1cG9uIHRoZSBzZXR0aW5nIG9mCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGU8L2NvZGU+LCBzb21lIHZhbHVlcyBtaWdodCBiZSBpcnJlbGV2YW50KSwgYW5kIHRoZQpoYXNoIHZhbHVlIGlzIHVzZWQgdG8gbG9va3VwIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBvcGVuIHNhbXBsZSBmaWxlcy4KT2YgY291cnNlLCB0aGUgc2FtcGxlIGZpbGUgbWlnaHQgbm90IGJlIGZvdW5kLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQKdG8gY3JlYXRlIGFuZCBvcGVuIGl0Lgo8L3A+CiAgICAgICAgICA8cD4KT1Byb2ZpbGUgdXNlcyBhIHJhdGhlciBjb21wbGV4IHNjaGVtZSBmb3IgbmFtaW5nIHNhbXBsZSBmaWxlcywgaW4gb3JkZXIKdG8gbWFrZSBzZWxlY3RpbmcgcmVsZXZhbnQgc2FtcGxlIGZpbGVzIGVhc2llciBmb3IgdGhlIHBvc3QtcHJvZmlsaW5nCnV0aWxpdGllcy4gVGhlIGV4YWN0IGRldGFpbHMgb2YgdGhlIHNjaGVtZSBhcmUgZ2l2ZW4gaW4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5vcHJvZmlsZS10ZXN0cy9wcF9pbnRlcmZhY2U8L2NvZGU+LCBidXQgZm9yIG5vdyBpdCB3aWxsCnN1ZmZpY2UgdG8gcmVtZW1iZXIgdGhhdCB0aGUgZmlsZW5hbWUgd2lsbCBpbmNsdWRlIG9ubHkgcmVsZXZhbnQKaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHNldHRpbmdzLCB0YWtlbiBmcm9tIHRoZSB0cmFuc2llbnQgZGF0YS4gQQpmdWxseS1zcGVjaWZpZWQgZmlsZW5hbWUgbG9va3Mgc29tZXRoaW5nIGxpa2UgOgo8L3A+CiAgICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPgovdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQve3Jvb3R9L3Vzci9iaW4veG1tcy97ZGVwfS97cm9vdH0vbGliL3Rscy9saWJjLTIuMy4yLnNvL0NQVV9DTEtfVU5IQUxURUQuMTAwMDAwLjAuMjgwODIuMjgwODkuMAo8L2NvZGU+CiAgICAgICAgICA8cD4KSXQgc2hvdWxkIGJlIGNsZWFyIHRoYXQgdGhpcyBpZGVudGlmaWVzIHN1Y2ggaW5mb3JtYXRpb24gYXMgdGhlCmFwcGxpY2F0aW9uIGJpbmFyeSwgdGhlIGRlcGVuZGVudCAobGlicmFyeSkgYmluYXJ5LCB0aGUgaGFyZHdhcmUgZXZlbnQsCmFuZCB0aGUgcHJvY2VzcyBhbmQgdGhyZWFkIElELiBUeXBpY2FsbHksIG5vdCBhbGwgdGhpcyBpbmZvcm1hdGlvbiBpcwpuZWVkZWQsIGluIHdoaWNoIGNhc2VzIHNvbWUgdmFsdWVzIG1heSBiZSByZXBsYWNlZCB3aXRoIHRoZSB0b2tlbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmFsbDwvY29kZT4uCjwvcD4KICAgICAgICAgIDxwPgpUaGUgY29kZSB0aGF0IGdlbmVyYXRlcyB0aGlzIGZpbGVuYW1lIGFuZCBvcGVucyB0aGUgZmlsZSBpcyBmb3VuZCBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfbWFuZ2xpbmcuYzwvY29kZT4uIFlvdSBtYXkgaGF2ZSByZWFsaXNlZCB0aGF0CmF0IHRoaXMgcG9pbnQsIHdlIGRvIG5vdCBoYXZlIHRoZSBiaW5hcnkgaW1hZ2UgZmlsZSBuYW1lcywgb25seSB0aGUKZGNvb2tpZSB2YWx1ZXMuIEluIG9yZGVyIHRvIGRldGVybWluZSBhIGZpbGUgbmFtZSwgYSBkY29va2llIHZhbHVlIGlzCmxvb2tlZCB1cCBpbiB0aGUgZGNvb2tpZSBjYWNoZS4gVGhpcyBpcyB0byBiZSBmb3VuZCBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfY29va2llLmM8L2NvZGU+LiBTaW5jZSBkY29va2llcyBhcmUgYm90aApwZXJzaXN0ZW50IGFuZCB1bmlxdWUgZHVyaW5nIGEgc2FtcGxpbmcgc2Vzc2lvbiwgd2UgY2FuIGNhY2hlIHRoZQp2YWx1ZXMuIElmIHRoZSB2YWx1ZSBpcyBub3QgZm91bmQgaW4gdGhlIGNhY2hlLCB0aGVuIHdlIGFzayB0aGUga2VybmVsCnRvIGRvIHRoZSBsb29rdXAgZnJvbSB2YWx1ZSB0byBmaWxlIG5hbWUgZm9yIHVzIGJ5IGNhbGxpbmcKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5sb29rdXBfZGNvb2tpZSgpPC9jb2RlPi4gVGhpcyBsb29rcyB1cCB0aGUgdmFsdWUgaW4gYQprZXJuZWwtc2lkZSBjYWNoZSAoc2VlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZnMvZGNvb2tpZXMuYzwvY29kZT4pIGFuZCByZXR1cm5zCnRoZSBmdWxseS1xdWFsaWZpZWQgZmlsZSBuYW1lIHRvIHVzZXJzcGFjZS4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy6gV3JpdGluZyBkYXRhIHRvIGEgc2FtcGxlIGZpbGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ic2FtcGxlLWZpbGUtd3JpdGluZyI+PC9hPjMuoFdyaXRpbmcgZGF0YSB0byBhIHNhbXBsZSBmaWxlPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpFYWNoIHNwZWNpZmljIHNhbXBsZSBmaWxlIGlzIGEgaGFzaGVkIGNvbGxlY3Rpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIFBDIG9mZnNldCBmcm9tIHRoZSB0cmFuc2llbnQgZGF0YSwgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mCnNhbXBsZXMgcmVjb3JkZWQgYWdhaW5zdCB0aGF0IG9mZnNldC4gVGhlIGZpbGVzIGFyZQo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm1tYXAoKTwvY29kZT5lZCBpbnRvIHRoZSBkYWVtb24ncyBtZW1vcnkgc3BhY2UuIFRoZSBjb2RlCnRvIGFjdHVhbGx5IGxvZyB0aGUgd3JpdGUgYWdhaW5zdCB0aGUgc2FtcGxlIGZpbGUgY2FuIGJlIGZvdW5kIGluCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+bGliZGIvPC9jb2RlPi4KPC9wPgogICAgICAgICAgPHA+CkZvciByZWNvcmRpbmcgc3RhY2sgdHJhY2VzLCB3ZSBoYXZlIGEgbW9yZSBjb21wbGljYXRlZCBzYW1wbGUgZmlsZW5hbWUKbWFuZ2xpbmcgc2NoZW1lIHRoYXQgYWxsb3dzIHVzIHRvIGlkZW50aWZ5IGNyb3NzLWJpbmFyeSBjYWxscy4gV2UgdXNlCnRoZSBzYW1lIHNhbXBsZSBmaWxlIGZvcm1hdCwgd2hlcmUgdGhlIGtleSBpcyBhIDY0LWJpdCB2YWx1ZSBjb21wb3NlZApmcm9tIHRoZSBmcm9tLHRvIHBhaXIgb2Ygb2Zmc2V0cy4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IkNoYXB0ZXKgNS6gR2VuZXJhdGluZyB1c2VmdWwgb3V0cHV0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0ib3V0cHV0Ij48L2E+Q2hhcHRlcqA1LqBHZW5lcmF0aW5nIHVzZWZ1bCBvdXRwdXQ8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2ZpbGUtc3BlY2lmaWNhdGlvbiI+MS4gSGFuZGxpbmcgdGhlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLWNvbGxhdGluZyI+Mi4gQ29sbGF0aW5nIHRoZSBjYW5kaWRhdGUgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtY2xhc3NpZnlpbmciPjIuMS4gQ2xhc3NpZnlpbmcgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZS1pbnZlcnRpbmciPjIuMi4gQ3JlYXRpbmcgaW52ZXJ0ZWQgcHJvZmlsZSBsaXN0czwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZW5lcmF0aW5nLXByb2ZpbGUtZGF0YSI+My4gR2VuZXJhdGluZyBwcm9maWxlIGRhdGE8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNiZmQiPjMuMS4gUHJvY2Vzc2luZyB0aGUgYmluYXJ5IGltYWdlPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9jZXNzaW5nLXNhbXBsZS1maWxlcyI+My4yLiBQcm9jZXNzaW5nIHRoZSBzYW1wbGUgZmlsZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2VuZXJhdGluZy1vdXRwdXQiPjQuIEdlbmVyYXRpbmcgb3V0cHV0PC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHA+CkFsbCBvZiB0aGUgdG9vbHMgdXNlZCB0byBnZW5lcmF0ZSBodW1hbi1yZWFkYWJsZSBvdXRwdXQgaGF2ZSB0byB0YWtlCnJvdWdobHkgdGhlIHNhbWUgc3RlcHMgdG8gY29sbGVjdCB0aGUgZGF0YSBmb3IgcHJvY2Vzc2luZy4gRmlyc3QsIHRoZQpwcm9maWxlIHNwZWNpZmljYXRpb24gZ2l2ZW4gYnkgdGhlIHVzZXIgaGFzIHRvIGJlIHBhcnNlZC4gTmV4dCwgYSBsaXN0Cm9mIHNhbXBsZSBmaWxlcyBtYXRjaGluZyB0aGUgc3BlY2lmaWNhdGlvbiBoYXMgdG8gb2J0YWluZWQuIFVzaW5nIHRoaXMKbGlzdCwgd2UgbmVlZCB0byBsb2NhdGUgdGhlIGJpbmFyeSBmaWxlIGZvciBlYWNoIHNhbXBsZSBmaWxlLCBhbmQgdGhlbgp1c2UgdGhlbSB0byBleHRyYWN0IG1lYW5pbmdmdWwgZGF0YSwgYmVmb3JlIGEgZmluYWwgY29sbGF0aW9uIGFuZApwcmVzZW50YXRpb24gdG8gdGhlIHVzZXIuCjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjEuoEhhbmRsaW5nIHRoZSBwcm9maWxlIHNwZWNpZmljYXRpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icHJvZmlsZS1zcGVjaWZpY2F0aW9uIj48L2E+MS6gSGFuZGxpbmcgdGhlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbiBwcmVzZW50ZWQgYnkgdGhlIHVzZXIgaXMgcGFyc2VkIGluCnRoZSBmdW5jdGlvbiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnByb2ZpbGVfc3BlYzo6Y3JlYXRlKCk8L2NvZGU+LiBUaGlzCmNyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWNhdGlvbi4gVGhlbiB3ZQp1c2UgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wcm9maWxlX3NwZWM6OmdlbmVyYXRlX2ZpbGVfbGlzdCgpPC9jb2RlPgp0byBzZWFyY2ggZm9yIGFsbCBzYW1wbGUgZmlsZXMgYW5kIG1hdGNoIHRoZW0gYWdhaW5zdCB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfc3BlYzwvY29kZT4uCjwvcD4KICAgICAgICAgIDxwPgpUbyBlbmFibGUgdGhpcyBtYXRjaGluZyBwcm9jZXNzIHRvIHdvcmssIHRoZSBhdHRyaWJ1dGVzIG9mCmVhY2ggc2FtcGxlIGZpbGUgaXMgZW5jb2RlZCBpbiBpdHMgZmlsZW5hbWUuIFRoaXMgaXMgYSBsb3ctdGVjaAphcHByb2FjaCB0byBtYXRjaGluZyBzcGVjaWZpY2F0aW9ucyBhZ2FpbnN0IGNhbmRpZGF0ZSBzYW1wbGUKZmlsZXMsIGJ1dCBpdCB3b3JrcyByZWFzb25hYmx5IHdlbGwuIEEgdHlwaWNhbCBzYW1wbGUgZmlsZQptaWdodCBsb29rIGxpa2UgdGhlc2U6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgovdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQve3Jvb3R9L2Jpbi9scy97ZGVwfS97cm9vdH0vYmluL2xzL3tjZ30ve3Jvb3R9L2Jpbi9scy9DUFVfQ0xLX1VOSEFMVEVELjEwMDAwMC4wLmFsbC5hbGwuYWxsCi92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvY3VycmVudC97cm9vdH0vYmluL2xzL3tkZXB9L3tyb290fS9iaW4vbHMvQ1BVX0NMS19VTkhBTFRFRC4xMDAwMDAuMC5hbGwuYWxsLmFsbAovdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQve3Jvb3R9L2Jpbi9scy97ZGVwfS97cm9vdH0vYmluL2xzL0NQVV9DTEtfVU5IQUxURUQuMTAwMDAwLjAuNzQyMy43NDI0LjAKL3Zhci9saWIvb3Byb2ZpbGUvc2FtcGxlcy9jdXJyZW50L3trZXJufS9yMTI4L3tkZXB9L3trZXJufS9yMTI4L0NQVV9DTEtfVU5IQUxURUQuMTAwMDAwLjAuYWxsLmFsbC5hbGwKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KVGhpcyBsb29rcyB1bm5lY2Vzc2FyaWx5IGNvbXBsZXgsIGJ1dCBpdCdzIGFjdHVhbGx5IGZhaXJseSBzaW1wbGUuIEZpcnN0CndlIGhhdmUgdGhlIHNlc3Npb24gb2YgdGhlIHNhbXBsZSwgYnkgZGVmYXVsdCBsb2NhdGVkIGhlcmUKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQ8L2NvZGU+LiBUaGlzIGxvY2F0aW9uCmNhbiBiZSBjaGFuZ2VkIGJ5IHNwZWNpZnlpbmcgdGhlIC0tc2Vzc2lvbi1kaXIgb3B0aW9uIGF0IGNvbW1hbmQtbGluZS4KVGhpcyBzZXNzaW9uIGNvdWxkIGVxdWFsbHkgd2VsbCBiZSBpbnNpZGUgYW4gYXJjaGl2ZSBmcm9tIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj4uCk5leHQgd2UgaGF2ZSBvbmUgb2YgdGhlIHRva2VucyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPntyb290fTwvY29kZT4gb3IKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj57a2Vybn08L2NvZGU+LiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPntyb290fTwvY29kZT4gaW5kaWNhdGVzCnRoYXQgdGhlIGJpbmFyeSBpcyBmb3VuZCBvbiBhIGZpbGUgc3lzdGVtLCBhbmQgd2Ugd2lsbCBlbmNvZGUgaXRzIHBhdGgKaW4gdGhlIG5leHQgc2VjdGlvbiAoZS5nLiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9iaW4vbHM8L2NvZGU+KS4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj57a2Vybn08L2NvZGU+IGluZGljYXRlcyBhIGtlcm5lbCBtb2R1bGUgLSBvbiAyLjYga2VybmVscwp0aGUgcGF0aCBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIGZyb20gdGhlIGtlcm5lbCwgc28gd2UgaGF2ZSB0bwpzcGVjaWFsLWNhc2Uga2VybmVsIG1vZHVsZXMgbGlrZSB0aGlzOyB3ZSBlbmNvZGUgbWVyZWx5IHRoZSBuYW1lIG9mIHRoZQptb2R1bGUgYXMgbG9hZGVkLgo8L3A+CiAgICAgICAgICA8cD4KTmV4dCB0aGVyZSBpcyBhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+e2RlcH08L2NvZGU+IHRva2VuLCBpbmRpY2F0aW5nIGFub3RoZXIKdG9rZW4vcGF0aCB3aGljaCBpZGVudGlmaWVzIHRoZSBkZXBlbmRlbnQgYmluYXJ5IGltYWdlLiBUaGlzIGlzIHVzZWQgZXZlbiBmb3IKdGhlICJwcmltYXJ5IiBiaW5hcnkgKGkuZS4gdGhlIG9uZSB0aGF0IHdhcwo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmV4ZWN2ZSgpPC9jb2RlPmQpLCBhcyBpdCBzaW1wbGlmaWVzIHByb2Nlc3NpbmcuIEZpbmFsbHksCmlmIHRoaXMgc2FtcGxlIGZpbGUgaXMgYSBub3JtYWwgZmxhdCBwcm9maWxlLCB0aGUgYWN0dWFsIGZpbGUgaXMgbmV4dCBpbgp0aGUgcGF0aC4gSWYgaXQncyBhIGNhbGwtZ3JhcGggc2FtcGxlIGZpbGUsIHdlIG5lZWQgb25lIGZ1cnRoZXIKc3BlY2lmaWNhdGlvbiwgdG8gYWxsb3cgdXMgdG8gaWRlbnRpZnkgY3Jvc3MtYmluYXJ5IGFyY3MgaW4gdGhlIGNhbGwKZ3JhcGguCjwvcD4KICAgICAgICAgIDxwPgpUaGUgYWN0dWFsIHNhbXBsZSBmaWxlIG5hbWUgaXMgZG90LXNlcGFyYXRlZCwgd2hlcmUgdGhlIGZpZWxkcyBhcmUsIGluCm9yZGVyOiBldmVudCBuYW1lLCBldmVudCBjb3VudCwgdW5pdCBtYXNrLCB0YXNrIGdyb3VwIElELCB0YXNrIElELCBhbmQKQ1BVIG51bWJlci4KPC9wPgogICAgICAgICAgPHA+ClRoaXMgc2FtcGxlIGZpbGUgY2FuIGJlIHJlbGlhYmx5IHBhcnNlZCAod2l0aAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnBhcnNlX2ZpbGVuYW1lKCk8L2NvZGU+KSBpbnRvIGEKPGNvZGUgY2xhc3M9InZhcm5hbWUiPmZpbGVuYW1lX3NwZWM8L2NvZGU+LiBGaW5hbGx5LCB3ZSBjYW4gY2hlY2sgd2hldGhlciB0bwppbmNsdWRlIHRoZSBzYW1wbGUgZmlsZSBpbiB0aGUgZmluYWwgcmVzdWx0cyBieSBjb21wYXJpbmcgdGhpcwo8Y29kZSBjbGFzcz0idmFybmFtZSI+ZmlsZW5hbWVfc3BlYzwvY29kZT4gYWdhaW5zdCB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfc3BlYzwvY29kZT4gdGhlIHVzZXIgc3BlY2lmaWVkIChmb3IgdGhlIGludGVyZXN0ZWQsCnNlZSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnZhbGlkX2NhbmRpZGF0ZSgpPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wcm9maWxlX3NwZWM6Om1hdGNoPC9jb2RlPikuIFRoZW4gY29tZXMgdGhlIHJlYWxseQpjb21wbGljYXRlZCBiaXQuLi4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMi6gQ29sbGF0aW5nIHRoZSBjYW5kaWRhdGUgc2FtcGxlIGZpbGVzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InNhbXBsZS1maWxlLWNvbGxhdGluZyI+PC9hPjIuoENvbGxhdGluZyB0aGUgY2FuZGlkYXRlIHNhbXBsZSBmaWxlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGEgZHVwbGljYXRlLWZyZWUgbGlzdCBvZiBzYW1wbGUgZmlsZXMgd2UgbmVlZAp0byBwcm9jZXNzLiBCdXQgZmlyc3Qgd2UgbmVlZCB0byBkbyBzb21lIGZ1cnRoZXIgYXJyYW5nZW1lbnQ6IHdlCm5lZWQgdG8gY2xhc3NpZnkgZWFjaCBzYW1wbGUgZmlsZSwgYW5kIHdlIG1heSBhbHNvIG5lZWQgdG8gImludmVydCIKdGhlIHByb2ZpbGVzLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjIuMS6gQ2xhc3NpZnlpbmcgc2FtcGxlIGZpbGVzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InNhbXBsZS1maWxlLWNsYXNzaWZ5aW5nIj48L2E+Mi4xLqBDbGFzc2lmeWluZyBzYW1wbGUgZmlsZXM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KSXQncyBwb3NzaWJsZSBmb3IgdXRpbGl0aWVzIGxpa2UgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IHRvIHNob3cgCmRhdGEgaW4gY29sdW1uYXIgZm9ybWF0OiBmb3IgZXhhbXBsZSwgd2UgbWlnaHQgd2FudCB0byBzaG93IHRoZSByZXN1bHRzCm9mIHR3byB0aHJlYWRzIHdpdGhpbiBhIHByb2Nlc3Mgc2lkZS1ieS1zaWRlLiBUbyBkbyB0aGlzLCB3ZSBuZWVkCnRvIGNsYXNzaWZ5IGVhY2ggc2FtcGxlIGZpbGUgaW50byBjbGFzc2VzIC0gdGhlIGNsYXNzZXMgY29ycmVzcG9uZAp3aXRoIGVhY2ggPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IGNvbHVtbi4gVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcwp0aGlzIGlzIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YXJyYW5nZV9wcm9maWxlcygpPC9jb2RlPi4gRWFjaCBzYW1wbGUgZmlsZQppcyBhZGRlZCB0byBhIHBhcnRpY3VsYXIgY2xhc3MuIElmIHRoZSBzYW1wbGUgZmlsZSBpcyB0aGUgZmlyc3QgaW4KaXRzIGNsYXNzLCBhIHRlbXBsYXRlIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSBzYW1wbGUgZmlsZS4gRWFjaCB0ZW1wbGF0ZQpkZXNjcmliZXMgYSBwYXJ0aWN1bGFyIGNsYXNzICh0aHVzLCBpbiBvdXIgZXhhbXBsZSBhYm92ZSwgZWFjaCB0ZW1wbGF0ZQp3aWxsIGhhdmUgYSBkaWZmZXJlbnQgdGhyZWFkIElELCBhbmQgdGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIGVhY2gKY2xhc3MpLgo8L3A+CiAgICAgICAgICAgIDxwPgpFYWNoIGNsYXNzIGhhcyBhIGxpc3Qgb2YgInByb2ZpbGUgc2V0cyIgbWF0Y2hpbmcgdGhhdCBjbGFzcydzIHRlbXBsYXRlLgpBIHByb2ZpbGUgc2V0IGlzIGVpdGhlciBhIHByb2ZpbGUgb2YgdGhlIHByaW1hcnkgYmluYXJ5IGltYWdlLCBvciBhbnkgb2YKaXRzIGRlcGVuZGVudCBpbWFnZXMuIEFmdGVyIGFsbCBzYW1wbGUgZmlsZXMgaGF2ZSBiZWVuIGxpc3RlZCBpbiBvbmUgb2YKdGhlIHByb2ZpbGUgc2V0cyBiZWxvbmdpbmcgdG8gdGhlIGNsYXNzZXMsIHdlIGhhdmUgdG8gbmFtZSBlYWNoIGNsYXNzIGFuZApwZXJmb3JtIGVycm9yLWNoZWNraW5nLiBUaGlzIGlzIGRvbmUgYnkKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5pZGVudGlmeV9jbGFzc2VzKCk8L2NvZGU+OyBlYWNoIGNsYXNzIGlzIGNoZWNrZWQgdG8gZW5zdXJlCnRoYXQgaXRzICJheGlzIiBpcyB0aGUgc2FtZSBhcyBhbGwgdGhlIG90aGVycy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZQo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gY2FuJ3QgcHJvZHVjZSByZXN1bHRzIGluIDNEIGZvcm1hdDogd2UgY2FuCm9ubHkgZGlmZmVyIGluIG9uZSBhc3BlY3QsIHN1Y2ggYXMgdGhyZWFkIElEIG9yIGV2ZW50IG5hbWUuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIyLjIuoENyZWF0aW5nIGludmVydGVkIHByb2ZpbGUgbGlzdHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ic2FtcGxlLWZpbGUtaW52ZXJ0aW5nIj48L2E+Mi4yLqBDcmVhdGluZyBpbnZlcnRlZCBwcm9maWxlIGxpc3RzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+ClJlbWVtYmVyIHRoYXQgaWYgd2UncmUgdXNpbmcgY2VydGFpbiBwcm9maWxlIHNlcGFyYXRpb24gb3B0aW9ucywgc3VjaCBhcwoiLS1zZXBhcmF0ZT1saWIiLCBhIHNpbmdsZSBiaW5hcnkgY291bGQgYmUgYSBkZXBlbmRlbnQgaW1hZ2UgdG8gbWFueQpkaWZmZXJlbnQgYmluYXJpZXMuIEZvciBleGFtcGxlLCB0aGUgQyBsaWJyYXJ5IGltYWdlIHdvdWxkIGJlIGEKZGVwZW5kZW50IGltYWdlIGZvciBtb3N0IHByb2dyYW1zIHRoYXQgaGF2ZSBiZWVuIHByb2ZpbGVkLiBBcyBpdApoYXBwZW5zLCB0aGlzIGNhbiBjYXVzZSBzZXZlcmUgcGVyZm9ybWFuY2UgcHJvYmxlbXM6IHdpdGhvdXQgc29tZQpyZS1hcnJhbmdlbWVudCwgdGhlc2UgZGVwZW5kZW50IGJpbmFyeSBpbWFnZXMgd291bGQgYmUgb3BlbmVkIGVhY2gKdGltZSB3ZSBuZWVkIHRvIHByb2Nlc3Mgc2FtcGxlIGZpbGVzIGZvciBlYWNoIHByb2dyYW0uCjwvcD4KICAgICAgICAgICAgPHA+ClRoZSBzb2x1dGlvbiBpcyB0byAiaW52ZXJ0IiB0aGUgcHJvZmlsZXMgdmlhCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+aW52ZXJ0X3Byb2ZpbGVzKCk8L2NvZGU+LiBXZSBjcmVhdGUgYSBuZXcgZGF0YSBzdHJ1Y3R1cmUKd2hlcmUgdGhlIGRlcGVuZGVudCBiaW5hcnkgaXMgZmlyc3QsIGFuZCB0aGUgcHJpbWFyeSBiaW5hcnkgaW1hZ2VzIHVzaW5nCnRoYXQgZGVwZW5kZW50IGJpbmFyeSBhcmUgbGlzdGVkIGFzIHN1Yi1pbWFnZXMuIFRoaXMgaGVscHMgb3VyCnBlcmZvcm1hbmNlIHByb2JsZW0sIGFzIG5vdyB3ZSBvbmx5IG5lZWQgdG8gb3BlbiBlYWNoIGRlcGVuZGVudCBpbWFnZQpvbmNlLCB3aGVuIHdlIHByb2Nlc3MgdGhlIGxpc3Qgb2YgaW52ZXJ0ZWQgcHJvZmlsZXMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy6gR2VuZXJhdGluZyBwcm9maWxlIGRhdGEiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZ2VuZXJhdGluZy1wcm9maWxlLWRhdGEiPjwvYT4zLqBHZW5lcmF0aW5nIHByb2ZpbGUgZGF0YTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhpbmdzIGRvbid0IGdldCBhbnkgc2ltcGxlciBhdCB0aGlzIHBvaW50LCB1bmZvcnR1bmF0ZWx5LiBBdCB0aGlzIHBvaW50CndlJ3ZlIGNvbGxlY3RlZCBhbmQgY2xhc3NpZmllZCB0aGUgc2FtcGxlIGZpbGVzIGludG8gdGhlIHNldCBvZiBpbnZlcnRlZApwcm9maWxlcywgYXMgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLiBOb3cgd2UgbmVlZCB0byBwcm9jZXNzCmVhY2ggaW52ZXJ0ZWQgcHJvZmlsZSBhbmQgbWFrZSBzb21ldGhpbmcgb2YgdGhlIGRhdGEuIFRoZSBlbnRyeSBwb2ludApmb3IgdGhpcyBpcyA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnBvcHVsYXRlX2Zvcl9pbWFnZSgpPC9jb2RlPi4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjEuoFByb2Nlc3NpbmcgdGhlIGJpbmFyeSBpbWFnZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJiZmQiPjwvYT4zLjEuoFByb2Nlc3NpbmcgdGhlIGJpbmFyeSBpbWFnZTwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgZmlyc3QgdGhpbmcgd2UgZG8gd2l0aCBhbiBpbnZlcnRlZCBwcm9maWxlIGlzIGF0dGVtcHQgdG8gb3BlbiB0aGUKYmluYXJ5IGltYWdlIChyZW1lbWJlciBlYWNoIGludmVydGVkIHByb2ZpbGUgc2V0IGlzIG9ubHkgZm9yIG9uZSBiaW5hcnkKaW1hZ2UsIGJ1dCBtYXkgaGF2ZSBtYW55IHNhbXBsZSBmaWxlcyB0byBwcm9jZXNzKS4gVGhlCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5vcF9iZmQ8L2NvZGU+IGNsYXNzIHByb3ZpZGVzIGFuIGFic3RyYWN0ZWQgaW50ZXJmYWNlIHRvCnRoaXM7IGludGVybmFsbHkgaXQgdXNlcyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmxpYmJmZDwvY29kZT4uIFRoZSBtYWluIHB1cnBvc2UKb2YgdGhpcyBjbGFzcyBpcyB0byBwcm9jZXNzIHRoZSBzeW1ib2xzIGZvciB0aGUgYmluYXJ5IGltYWdlOyB0aGlzIGlzCmFsc28gd2hlcmUgc3ltYm9sIGZpbHRlcmluZyBoYXBwZW5zLiBUaGlzIGlzIGFjdHVhbGx5IHF1aXRlIHRyaWNreSwgYnV0CnNob3VsZCBiZSBjbGVhciBmcm9tIHRoZSBzb3VyY2UuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjIuoFByb2Nlc3NpbmcgdGhlIHNhbXBsZSBmaWxlcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwcm9jZXNzaW5nLXNhbXBsZS1maWxlcyI+PC9hPjMuMi6gUHJvY2Vzc2luZyB0aGUgc2FtcGxlIGZpbGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+ClRoZSBjbGFzcyA8Y29kZSBjbGFzcz0idmFybmFtZSI+cHJvZmlsZV9jb250YWluZXI8L2NvZGU+IGlzIGEgaG9sZC1hbGwgdGhhdApjb250YWlucyBhbGwgdGhlIHByb2Nlc3NlZCByZXN1bHRzLiBJdCBpcyBhIGNvbnRhaW5lciBvZgo8Y29kZSBjbGFzcz0idmFybmFtZSI+cHJvZmlsZV90PC9jb2RlPiBvYmplY3RzLiBUaGUKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5hZGRfc2FtcGxlX2ZpbGVzKCk8L2NvZGU+IG1ldGhvZCB1c2VzCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+bGliZGI8L2NvZGU+IHRvIG9wZW4gdGhlIGdpdmVuIHNhbXBsZSBmaWxlIGFuZCBhZGQgdGhlCmtleS92YWx1ZSB0eXBlcyB0byB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfdDwvY29kZT4uIE9uY2UgdGhpcyBoYXMgYmVlbgpkb25lLCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnByb2ZpbGVfY29udGFpbmVyOjphZGQoKTwvY29kZT4gaXMgcGFzc2VkIHRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+cHJvZmlsZV90PC9jb2RlPiBwbHVzIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+b3BfYmZkPC9jb2RlPiBmb3IKcHJvY2Vzc2luZy4KPC9wPgogICAgICAgICAgICA8cD4KPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wcm9maWxlX2NvbnRhaW5lcjo6YWRkKCk8L2NvZGU+IHdhbGtzIHRocm91Z2ggdGhlIHN5bWJvbHMKY29sbGVjdGVkIGluIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+b3BfYmZkPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5vcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2UoKTwvY29kZT4gZ2l2ZXMgdXMgdGhlIHN0YXJ0IGFuZAplbmQgb2YgdGhlIHN5bWJvbCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGJpbmFyeSBpbWFnZSwKdGhlbiB3ZSBpbnRlcnJvZ2F0ZSB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfdDwvY29kZT4gZm9yIHRoZSByZWxldmFudCBzYW1wbGVzCmZvciB0aGF0IG9mZnNldCByYW5nZS4gV2UgY3JlYXRlIGEgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN5bWJvbF9lbnRyeTwvY29kZT4Kb2JqZWN0IGZvciB0aGlzIHN5bWJvbCBhbmQgZmlsbCBpdCBpbi4gSWYgbmVlZGVkLCBoZXJlIHdlIGFsc28gY29sbGVjdApkZWJ1ZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+b3BfYmZkPC9jb2RlPiwgYW5kIHBvc3NpYmx5CnJlY29yZCB0aGUgZGV0YWlsZWQgc2FtcGxlIGluZm9ybWF0aW9uIChhcyB1c2VkIGJ5IDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wcmVwb3J0Ci1kPC9zdHJvbmc+PC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pLgpGaW5hbGx5IHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+c3ltYm9sX2VudHJ5PC9jb2RlPiBpcyBhZGRlZCB0bwphIHByaXZhdGUgY29udGFpbmVyIG9mIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5wcm9maWxlX2NvbnRhaW5lcjwvY29kZT4gLSB0aGlzCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zeW1ib2xfY29udGFpbmVyPC9jb2RlPiBob2xkcyBhbGwgc3VjaCBwcm9jZXNzZWQgc3ltYm9scy4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI0LqBHZW5lcmF0aW5nIG91dHB1dCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJnZW5lcmF0aW5nLW91dHB1dCI+PC9hPjQuoEdlbmVyYXRpbmcgb3V0cHV0PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpBZnRlciB0aGUgcHJvY2Vzc2luZyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHdlJ3ZlIG5vdyBnb3QKZnVsbCBkZXRhaWxzIG9mIHdoYXQgd2UgbmVlZCB0byBvdXRwdXQgc3RvcmVkIGluIHRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+cHJvZmlsZV9jb250YWluZXI8L2NvZGU+IG9uIGEgc3ltYm9sLWJ5LXN5bWJvbCBiYXNpcy4gVG8KcHJvZHVjZSBvdXRwdXQsIHdlIG5lZWQgdG8gcmVwbGF5IHRoYXQgZGF0YSBhbmQgZm9ybWF0IGl0IHN1aXRhYmx5Lgo8L3A+CiAgICAgICAgICA8cD4KPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IGZpcnN0IGFza3MgdGhlCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5wcm9maWxlX2NvbnRhaW5lcjwvY29kZT4gZm9yIGEKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN5bWJvbF9jb2xsZWN0aW9uPC9jb2RlPiAodGhpcyBpcyBhbHNvIHdoZXJlIHRocmVzaG9sZGluZwpoYXBwZW5zKS4KVGhpcyBpcyBzb3J0ZWQsIHRoZW4gYQo8Y29kZSBjbGFzcz0idmFybmFtZSI+b3ByZXBvcnRfZm9ybWF0dGVyPC9jb2RlPiBpcyBpbml0aWFsaXNlZC4KVGhpcyBvYmplY3QgaW5pdGlhbGlzZXMgYSBzZXQgb2YgZmllbGQgZm9ybWF0dGVycyBhcyByZXF1ZXN0ZWQuIFRoZW4KPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5vcHJlcG9ydF9mb3JtYXR0ZXI6Om91dHB1dCgpPC9jb2RlPiBpcyBjYWxsZWQuIFRoaXMKaXRlcmF0ZXMgdGhyb3VnaCB0aGUgKHNvcnRlZCkgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN5bWJvbF9jb2xsZWN0aW9uPC9jb2RlPjsKZm9yIGVhY2ggZW50cnksIHRoZSBzZWxlY3RlZCBmaWVsZHMgKGFzIHNldCBieSB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPmZvcm1hdF9mbGFnczwvY29kZT4gb3B0aW9ucykgYXJlIG91dHB1dCBieSBjYWxsaW5nIHRoZQpmaWVsZCBmb3JtYXR0ZXJzLCB3aXRoIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+c3ltYm9sX2VudHJ5PC9jb2RlPiBwYXNzZWQgaW4uCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSJDaGFwdGVyoDYuoEV4dGVuZGVkIEZlYXR1cmUgSW50ZXJmYWNlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iZXh0Ij48L2E+Q2hhcHRlcqA2LqBFeHRlbmRlZCBGZWF0dXJlIEludGVyZmFjZTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0LWludHJvIj4xLiBJbnRyb2R1Y3Rpb248L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtbmFtZS1hbmQtaGFuZGxlcnMiPjIuIEZlYXR1cmUgTmFtZSBhbmQgSGFuZGxlcnM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtZW5hYmxlIj4zLiBFbmFibGluZyBGZWF0dXJlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC10eXBlcy1vZi1oYW5kbGVycyI+NC4gVHlwZSBvZiBIYW5kbGVyczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dF9pbml0Ij40LjEuIGV4dF9pbml0IEhhbmRsZXI8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dF9wcmludF9zdGF0cyI+NC4yLiBleHRfcHJpbnRfc3RhdHMgSGFuZGxlcjwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0X3NmaWxlX2hhbmRsZXJzIj40LjMuIGV4dF9zZmlsZSBIYW5kbGVyPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1pbXBsZW1lbnRhdGlvbiI+NS4gRXh0ZW5kZWQgRmVhdHVyZSBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb248L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtaWJzIj41LjEuIEluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMS6gSW50cm9kdWN0aW9uIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImV4dC1pbnRybyI+PC9hPjEuoEludHJvZHVjdGlvbjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhlIEV4dGVuZGVkIEZlYXR1cmUgSW50ZXJmYWNlIGlzIGEgc3RhbmRhcmQgY2FsbGJhY2sgaW50ZXJmYWNlIApkZXNpZ25lZCB0byBhbGxvdyBleHRlbnNpb24gdG8gdGhlIE9Qcm9maWxlIGRhZW1vbidzIHNhbXBsZSBwcm9jZXNzaW5nLiAKRWFjaCBmZWF0dXJlIGRlZmluZXMgYSBzZXQgb2YgY2FsbGJhY2sgaGFuZGxlcnMgd2hpY2ggY2FuIGJlIGVuYWJsZWQgb3IgCmRpc2FibGVkIHRocm91Z2ggdGhlIE9Qcm9maWxlIGRhZW1vbidzIGNvbW1hbmQtbGluZSBvcHRpb24uClRoaXMgaW50ZXJmYWNlIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBzdXBwb3J0IGZvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKZmVhdHVyZXMgb3IgZmVhdHVyZXMgbm90IGNvbW1vbmx5IHVzZWQgYnkgZ2VuZXJhbCBPUHJvZmlsZSB1c2Vycy4gCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuoEZlYXR1cmUgTmFtZSBhbmQgSGFuZGxlcnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZXh0LW5hbWUtYW5kLWhhbmRsZXJzIj48L2E+Mi6gRmVhdHVyZSBOYW1lIGFuZCBIYW5kbGVyczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KRWFjaCBleHRlbmRlZCBmZWF0dXJlIGhhcyBhbiBlbnRyeSBpbiB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmV4dF9mZWF0dXJlX3RhYmxlPC9jb2RlPgppbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9wZF9leHRlbmRlZC5jcHA8L2NvZGU+LiBFYWNoIGVudHJ5IGNvbnRhaW5zIGEgZmVhdHVyZSBuYW1lLAphbmQgYSBjb3JyZXNwb25kaW5nIHNldCBvZiBoYW5kbGVycy4gRmVhdHVyZSBuYW1lIGlzIGEgdW5pcXVlIHN0cmluZywgd2hpY2ggaXMKdXNlZCB0byBpZGVudGlmeSBhIGZlYXR1cmUgaW4gdGhlIHRhYmxlLiBFYWNoIGZlYXR1cmUgcHJvdmlkZXMgYSBzZXQKb2YgaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYnkgdGhlIE9Qcm9maWxlIGRhZW1vbiBmcm9tIHByZS1kZXRlcm1pbmVkCmxvY2F0aW9ucyB0byBwZXJmb3JtIGNlcnRhaW4gdGFza3MuIEF0IHJ1bnRpbWUsIHRoZSBPUHJvZmlsZSBkYWVtb24gY2FsbHMgYSBmZWF0dXJlCmhhbmRsZXIgd3JhcHBlciBmcm9tIG9uZSBvZiB0aGUgcHJlZGV0ZXJtaW5lZCBsb2NhdGlvbnMgdG8gY2hlY2sgd2hldGhlcgphbiBleHRlbmRlZCBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuZCB3aGV0aGVyIGEgcGFydGljdWxhciBoYW5kbGVyIGV4aXN0cy4KT25seSB0aGUgaGFuZGxlcnMgb2YgdGhlIGVuYWJsZWQgZmVhdHVyZSB3aWxsIGJlIGV4ZWN1dGVkLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIzLqBFbmFibGluZyBGZWF0dXJlcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJleHQtZW5hYmxlIj48L2E+My6gRW5hYmxpbmcgRmVhdHVyZXM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CkVhY2ggZmVhdHVyZSBpcyBlbmFibGVkIHVzaW5nIHRoZSBPUHJvZmlsZSBkYWVtb24gKG9wcm9maWxlZCkgY29tbWFuZC1saW5lCm9wdGlvbiAiLS1leHQtZmVhdHVyZT0mbHQ7ZXh0ZW5kZWQtZmVhdHVyZS1uYW1lJmd0OzpbYXJnc10iLiBUaGUKImV4dGVuZGVkLWZlYXR1cmUtbmFtZSIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGZlYXR1cmUgdG8gYmUgZW5hYmxlZC4KVGhlIG9wdGlvbmFsICJhcmdzIiBpcyBwYXNzZWQgaW50byB0aGUgZmVhdHVyZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBoYW5kbGVyCig8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmV4dF9pbml0PC9jb2RlPikuIEN1cnJlbnRseSwgb25seSBvbmUgZXh0ZW5kZWQgZmVhdHVyZSBjYW4gYmUKZW5hYmxlZCBhdCBhIHRpbWUuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjQuoFR5cGUgb2YgSGFuZGxlcnMiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZXh0LXR5cGVzLW9mLWhhbmRsZXJzIj48L2E+NC6gVHlwZSBvZiBIYW5kbGVyczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KRWFjaCBmZWF0dXJlIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgaXRzIG93biBzZXQgb2YgaGFuZGxlcnMuClR5cGVzIG9mIGhhbmRsZXIgYXJlOgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuMS6gZXh0X2luaXQgSGFuZGxlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJleHRfaW5pdCI+PC9hPjQuMS6gZXh0X2luaXQgSGFuZGxlcjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgoiZXh0X2luaXQiIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gb2YgYW4gZXh0ZW5kZWQgZmVhdHVyZS4gSXQgdGFrZXMKImFyZ3MiIHBhcmFtZXRlciB3aGljaCBpcyBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgIm9wcm9maWxlZCAtLWV4dC1mZWF0dXJlPSZsdDsKZXh0ZW5kZWQtZmVhdHVyZS1uYW1lJmd0OzpbYXJnc10iLiBUaGlzIGhhbmRsZXIgaXMgZXhlY3V0ZWQgaW4gdGhlIGZ1bmN0aW9uCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3BkX29wdGlvbnMoKTwvY29kZT4gaW4gdGhlIGZpbGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3Byb2ZpbGVkLmMKPC9jb2RlPi4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiB0aXRsZT0iTm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgIDxwPgpUaGUgZXh0X2luaXQgaGFuZGxlciBpcyByZXF1aXJlZCBmb3IgYWxsIGZlYXR1cmVzLgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuMi6gZXh0X3ByaW50X3N0YXRzIEhhbmRsZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZXh0X3ByaW50X3N0YXRzIj48L2E+NC4yLqBleHRfcHJpbnRfc3RhdHMgSGFuZGxlcjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgoiZXh0X3ByaW50X3N0YXRzIiBoYW5kbGVzIHRoZSBleHRlbmRlZCBmZWF0dXJlIHN0YXRpc3RpY3MgcmVwb3J0LiBJdCBhZGRzCmEgbmV3IHNlY3Rpb24gaW4gdGhlIE9Qcm9maWxlIGRhZW1vbiBzdGF0aXN0aWNzIHJlcG9ydCwgd2hpY2ggaXMgbm9ybWFsbHkKb3V0cHV0ZWQgdG8gdGhlIGZpbGUKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL29wcm9maWxlZC5sb2c8L2NvZGU+LgpUaGlzIGhhbmRsZXIgaXMgZXhlY3V0ZWQgaW4gdGhlIGZ1bmN0aW9uIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3BkX3ByaW50X3N0YXRzKCk8L2NvZGU+CmluIHRoZSBmaWxlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGFlbW9uL29wZF9zdGF0cy5jPC9jb2RlPi4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjQuMy6gZXh0X3NmaWxlIEhhbmRsZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZXh0X3NmaWxlX2hhbmRsZXJzIj48L2E+NC4zLqBleHRfc2ZpbGUgSGFuZGxlcjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgoiZXh0X3NmaWxlIiBjb250YWlucyBhIHNldCBvZiBoYW5kbGVycyByZWxhdGVkIHRvIG9wZXJhdGlvbnMgb24gdGhlIGV4dGVuZGVkCnNhbXBsZSBmaWxlcyAoc2FtcGxlIGZpbGVzIGZvciBldmVudHMgcmVsYXRlZCB0byBleHRlbmRlZCBmZWF0dXJlKS4KVGhlc2Ugb3BlcmF0aW9ucyBpbmNsdWRlIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Y3JlYXRlX3NmaWxlKCk8L2NvZGU+LAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnNmaWxlX2R1cCgpPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5jbG9zZV9zZmlsZSgpPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zeW5jX3NmaWxlKCk8L2NvZGU+LCBhbmQgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nZXRfZmlsZSgpPC9jb2RlPgphcyBkZWZpbmVkIGluIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGFlbW9uL29wZF9zZmlsZS5jPC9jb2RlPi4KQW4gYWRkaXRpb25hbCBmaWVsZCwgPGNvZGUgY2xhc3M9InZhcm5hbWUiPm9kYl90ICogZXh0X2ZpbGU8L2NvZGU+LCBpcyBhZGRlZCB0byB0aGUgCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zdHJ1Y3Qgc2ZpbGU8L2NvZGU+IGZvciBzdG9yaW5nIGV4dGVuZGVkIHNhbXBsZSBmaWxlcwppbmZvcm1hdGlvbi4gCgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjUuoEV4dGVuZGVkIEZlYXR1cmUgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImV4dC1pbXBsZW1lbnRhdGlvbiI+PC9hPjUuoEV4dGVuZGVkIEZlYXR1cmUgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iNS4xLqBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJleHQtaWJzIj48L2E+NS4xLqBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKTwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpBbiBleGFtcGxlIG9mIGV4dGVuZGVkIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gY2FuIGJlIHNlZW4gYnkKZXhhbWluaW5nIHRoZSBBTUQgSW5zdHJ1Y3Rpb24tQmFzZWQgU2FtcGxpbmcgc3VwcG9ydC4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgdGl0bGU9IjUuMS4xLqBJQlMgSW5pdGlhbGl6YXRpb24iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJpYnMtaW5pdCI+PC9hPjUuMS4xLqBJQlMgSW5pdGlhbGl6YXRpb248L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKSBpcyBhIG5ldyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCB0ZWNobmlxdWUKYXZhaWxhYmxlIG9uIEFNRCBGYW1pbHkgMTBoIHByb2Nlc3NvcnMuIEVuYWJsaW5nIElCUyBwcm9maWxpbmcgaXMgZG9uZSBzaW1wbHkKYnkgc3BlY2lmeWluZyBJQlMgcGVyZm9ybWFuY2UgZXZlbnRzIHRocm91Z2ggdGhlICItLWV2ZW50PSIgb3B0aW9ucy4KPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgpvcGNvbnRyb2wgLS1ldmVudD1JQlNfRkVUQ0hfWFhYOiZsdDtjb3VudCZndDs6Jmx0O3VtJmd0OzombHQ7a2VybmVsJmd0OzombHQ7dXNlciZndDsKb3Bjb250cm9sIC0tZXZlbnQ9SUJTX09QX1hYWDombHQ7Y291bnQmZ3Q7OiZsdDt1bSZndDs6Jmx0O2tlcm5lbCZndDs6Jmx0O3VzZXImZ3Q7CgpOb3RlOiAqIENvdW50IGFuZCB1bml0bWFzayBmb3IgYWxsIElCUyBmZXRjaCBldmVudHMgbXVzdCBiZSB0aGUgc2FtZSwKCWFzIGRvIHRob3NlIGZvciBJQlMgb3AuCjwvcHJlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDxwPgpJQlMgcGVyZm9ybWFuY2UgZXZlbnRzIGFyZSBsaXN0ZWQgaW4gPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5vcGNvbnRyb2wgLS1saXN0LWV2ZW50czwvY29kZT4uCldoZW4gdXNlcnMgc3BlY2lmeSB0aGVzZSBldmVudHMsIG9wY29udHJvbCB2ZXJpZmllcyB0aGVtIHVzaW5nIG9waGVscCwgd2hpY2gKY2hlY2tzIGZvciB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmV4dDppYnNfZmV0Y2g8L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5leHQ6aWJzX29wPC9jb2RlPgp0YWcgaW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5ldmVudHMveDg2LTY0L2ZhbWlseTEwL2V2ZW50czwvY29kZT4gZmlsZS4KVGhlbiwgaXQgY29uZmlndXJlcyB0aGUgZHJpdmVyIGludGVyZmFjZSAoL2Rldi9vcHJvZmlsZS9pYnNfZmV0Y2gvLi4uIGFuZAovZGV2L29wcm9maWxlL2lic19vcC8uLi4pIGFuZCBzdGFydHMgdGhlIE9Qcm9maWxlIGRhZW1vbiBhcyBmb2xsb3dzLgo8L3A+CiAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+Cm9wcm9maWxlZCBcCiAgICAtLWV4dC1mZWF0dXJlPWliczpcCglmZXRjaDombHQ7SUJTX0ZFVENIX0VWRU5UMSZndDssJmx0O0lCU19GRVRDSF9FVkVOVDImZ3Q7LC4uLiw6Jmx0O0lCUyBmZXRjaCBjb3VudCZndDs6Jmx0O0lCUyBGZXRjaCB1bSZndDt8XAoJb3A6Jmx0O0lCU19PUF9FVkVOVDEmZ3Q7LCZsdDtJQlNfT1BfRVZFTlQyJmd0OywuLi4sOiZsdDtJQlMgb3AgY291bnQmZ3Q7OiZsdDtJQlMgb3AgdW0mZ3Q7CjwvcHJlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDxwPgpIZXJlLCB0aGUgT1Byb2ZpbGUgZGFlbW9uIHBhcnNlcyB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPi0tZXh0LWZlYXR1cmU8L2NvZGU+Cm9wdGlvbiBhbmQgY2hlY2tzIHRoZSBmZWF0dXJlIG5hbWUgKCJpYnMiKSBiZWZvcmUgY2FsbGluZyB0aGUgCnRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIHN0cmluZwpjb250YWluaW5nIElCUyBldmVudHMsIGNvdW50cywgYW5kIHVuaXRtYXNrcy4KVGhlbiwgaXQgc3RvcmVzIGVhY2ggZXZlbnQgaW4gdGhlIElCUyB2aXJ0dWFsLWNvdW50ZXIgdGFibGUKKDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zdHJ1Y3Qgb3BkX2V2ZW50IGlic192Y1tPUF9NQVhfSUJTX0NPVU5URVJTXTwvY29kZT4pIGFuZApzdG9yZXMgdGhlIGV2ZW50IGluZGV4IGluIHRoZSBJQlMgVmlydHVhbCBDb3VudGVyIEluZGV4IChWQ0kpIG1hcAooPGNvZGUgY2xhc3M9InZhcm5hbWUiPmlic192Y2lfbWFwW09QX01BWF9JQlNfQ09VTlRFUlNdPC9jb2RlPikgd2l0aCBJQlMgZXZlbnQgdmFsdWUKYXMgdGhlIG1hcCBrZXkuCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QzIiB0aXRsZT0iNS4xLjIuoElCUyBEYXRhIFByb2Nlc3NpbmciPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJpYnMtZGF0YS1wcm9jZXNzaW5nIj48L2E+NS4xLjIuoElCUyBEYXRhIFByb2Nlc3Npbmc8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpEdXJpbmcgYSBwcm9maWxlIHNlc3Npb24sIHRoZSBPUHJvZmlsZSBkYWVtb24gaWRlbnRpZmllcyBJQlMgc2FtcGxlcyBpbiB0aGUgCmV2ZW50IGJ1ZmZlciB1c2luZyB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPiJJQlNfRkVUQ0hfQ09ERSI8L2NvZGU+IG9yIAo8Y29kZSBjbGFzcz0idmFybmFtZSI+IklCU19PUF9DT0RFIjwvY29kZT4uIFRoZXNlIGNvZGVzIHRyaWdnZXIgdGhlIGhhbmRsZXJzIAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmNvZGVfaWJzX2ZldGNoX3NhbXBsZSgpPC9jb2RlPiBvciAKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5jb2RlX2lic19vcF9zYW1wbGUoKTwvY29kZT4gbGlzdGVkIGluIHRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+aGFuZGxlcl90IGhhbmRsZXJzW108L2NvZGU+IHZlY3RvciBpbiAKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3RyYW5zLmMgPC9jb2RlPi4gVGhlc2UgaGFuZGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvcgpwcm9jZXNzaW5nIElCUyBzYW1wbGVzIGFuZCB0cmFuc2xhdGUgdGhlbSBpbnRvIElCUyBwZXJmb3JtYW5jZSBldmVudHMuCjwvcD4KICAgICAgICAgICAgICA8cD4KVW5saWtlIHRyYWRpdGlvbmFsIHBlcmZvcm1hbmNlIGV2ZW50cywgZWFjaCBJQlMgc2FtcGxlIGNhbiBiZSBkZXJpdmVkIGludG8gCm11bHRpcGxlIElCUyBwZXJmb3JtYW5jZSBldmVudHMuIEZvciBlYWNoIGV2ZW50IHRoYXQgdGhlIHVzZXIgc3BlY2lmaWVzLAphIGNvbWJpbmF0aW9uIG9mIGJpdHMgZnJvbSBNb2RlbC1TcGVjaWZpYyBSZWdpc3RlcnMgKE1TUikgYXJlIGNoZWNrZWQKYWdhaW5zdCB0aGUgYml0bWFzayBkZWZpbmluZyB0aGUgZXZlbnQuIElmIHRoZSBjb25kaXRpb24gaXMgbWV0LCB0aGUgZXZlbnQKd2lsbCB0aGVuIGJlIHJlY29yZGVkLiBUaGUgZGVyaXZhdGlvbiBsb2dpYyBpcyBpbiB0aGUgZmlsZXMKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX2lic19tYWNyby5oPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX2lic190cmFucy5baCxjXTwvY29kZT4uIAo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgdGl0bGU9IjUuMS4zLqBJQlMgU2FtcGxlIEZpbGUiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJpYnMtc2FtcGxlLWZpbGUiPjwvYT41LjEuMy6gSUJTIFNhbXBsZSBGaWxlPC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KVHJhZGl0aW9uYWxseSwgc2FtcGxlIGZpbGUgaW5mb3JtYXRpb24gPGNvZGUgY2xhc3M9InZhcm5hbWUiPihvZGJfdCk8L2NvZGU+IGlzIHN0b3JlZAppbiB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN0cnVjdCBzZmlsZTo6b2RiX3QgZmlsZVtPUF9NQVhfQ09VTlRFUl08L2NvZGU+LgpDdXJyZW50bHksIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5PUF9NQVhfQ09VTlRFUjwvY29kZT4gaXMgOCBvbiBub24tYWxwaGEsIGFuZCAyMCBvbgphbHBoYS1iYXNlZCBzeXN0ZW0uIEV2ZW50IGluZGV4ICh0aGUgY291bnRlciBudW1iZXIgb24gd2hpY2ggdGhlIGV2ZW50CmlzIGNvbmZpZ3VyZWQpIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIHRoZSBhcnJheS4KVW5saWtlIHRoZSB0cmFkaXRpb25hbCBwZXJmb3JtYW5jZSBldmVudCwgSUJTIGRvZXMgbm90IHVzZSB0aGUgYWN0dWFsCmNvdW50ZXIgcmVnaXN0ZXJzIChpLmUuIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Rldi9vcHJvZmlsZS8wLDEsMiwzPC9jb2RlPikuCkFsc28sIHRoZSBudW1iZXIgb2YgcGVyZm9ybWFuY2UgZXZlbnRzIGdlbmVyYXRlZCBieSBJQlMgY291bGQgYmUgbGFyZ2VyIHRoYW4KPGNvZGUgY2xhc3M9InZhcm5hbWUiPk9QX01BWF9DT1VOVEVSPC9jb2RlPiAoY3VycmVudGx5IHVwdG8gMTMgSUJTLWZldGNoIGFuZCA0NiBJQlMtb3AgCmV2ZW50cykuIFRoZXJlZm9yZSBJQlMgcmVxdWlyZXMgYSBzcGVjaWFsIGRhdGEgc3RydWN0dXJlIGFuZCBzZmlsZQpoYW5kbGVycyAoPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN0cnVjdCBvcGRfZXh0X3NmaWxlX2hhbmRsZXJzPC9jb2RlPikgZm9yIG1hbmFnaW5nCklCUyBzYW1wbGUgZmlsZXMuIElCUy1zYW1wbGUtZmlsZSBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gYSBtZW1vcnkgCmFsbG9jYXRlZCBieSBoYW5kbGVyIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+aWJzX3NmaWxlX2NyZWF0ZSgpPC9jb2RlPiwgd2hpY2ggY2FuCmJlIGFjY2Vzc2VkIHRocm91Z2ggPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN0cnVjdCBzZmlsZTo6b2RiX3QgKiBleHRfZmlsZXM8L2NvZGU+Lgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJnbG9zc2FyeSIgdGl0bGU9Ikdsb3NzYXJ5IG9mIE9Qcm9maWxlIHNvdXJjZSBjb25jZXB0cyBhbmQgdHlwZXMiPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPjxhIGlkPSJnbG9zc2FyeSI+PC9hPkdsb3NzYXJ5IG9mIE9Qcm9maWxlIHNvdXJjZSBjb25jZXB0cyBhbmQgdHlwZXM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkbD4KICAgICAgICAgIDxkdD5hcHBsaWNhdGlvbiBpbWFnZTwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxwPgpUaGUgcHJpbWFyeSBiaW5hcnkgaW1hZ2UgdXNlZCBieSBhbiBhcHBsaWNhdGlvbi4gVGhpcyBpcyBkZXJpdmVkCmZyb20gdGhlIGtlcm5lbCBhbmQgY29ycmVzcG9uZHMgdG8gdGhlIGJpbmFyeSBzdGFydGVkIHVwb24gcnVubmluZwphbiBhcHBsaWNhdGlvbjogZm9yIGV4YW1wbGUsIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9iYXNoPC9jb2RlPi4KPC9wPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD5iaW5hcnkgaW1hZ2U8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8cD4KQW4gRUxGIGZpbGUgY29udGFpbmluZyBleGVjdXRhYmxlIGNvZGU6IHRoaXMgaW5jbHVkZXMga2VybmVsIG1vZHVsZXMsCnRoZSBrZXJuZWwgaXRzZWxmIChhLmsuYS4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj52bWxpbnV4PC9jb2RlPiksIHNoYXJlZCBsaWJyYXJpZXMsCmFuZCBhcHBsaWNhdGlvbiBiaW5hcmllcy4KPC9wPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD5kY29va2llPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPHA+ClNob3J0IGZvciAiZGVudHJ5IGNvb2tpZSIuIEEgdW5pcXVlIElEIHRoYXQgY2FuIGJlIGxvb2tlZCB1cCB0byBwcm92aWRlCnRoZSBmdWxsIHBhdGggbmFtZSBvZiBhIGJpbmFyeSBpbWFnZS4KPC9wPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD5kZXBlbmRlbnQgaW1hZ2U8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8cD4KQSBiaW5hcnkgaW1hZ2UgdGhhdCBpcyBkZXBlbmRlbnQgdXBvbiBhbiBhcHBsaWNhdGlvbiwgdXNlZCB3aXRoCnBlci1hcHBsaWNhdGlvbiBzZXBhcmF0aW9uLiBNb3N0IGNvbW1vbmx5LCBzaGFyZWQgbGlicmFyaWVzLiBGb3IgZXhhbXBsZSwKaWYgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vYmluL2Jhc2g8L2NvZGU+IGlzIHJ1bm5pbmcgYW5kIHdlIHRha2UKc29tZSBzYW1wbGVzIGluc2lkZSB0aGUgQyBsaWJyYXJ5IGl0c2VsZiBkdWUgdG8gPHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+YmFzaDwvc3Ryb25nPjwvc3Bhbj4KY2FsbGluZyBsaWJyYXJ5IGNvZGUsIHRoZW4gdGhlIGltYWdlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2xpYi9saWJjLnNvPC9jb2RlPgp3b3VsZCBiZSBkZXBlbmRlbnQgdXBvbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9iaW4vYmFzaDwvY29kZT4uCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+bWVyZ2luZzwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxwPgpUaGlzIHJlZmVycyB0byB0aGUgYWJpbGl0eSB0byBtZXJnZSBzZXZlcmFsIGRpc3RpbmN0IHNhbXBsZSBmaWxlcwppbnRvIG9uZSBzZXQgb2YgZGF0YSBhdCBydW50aW1lLCBpbiB0aGUgcG9zdC1wcm9maWxpbmcgdG9vbHMuIEZvciBleGFtcGxlLApwZXItdGhyZWFkIHNhbXBsZSBmaWxlcyBjYW4gYmUgbWVyZ2VkIGludG8gb25lIHNldCBvZiBkYXRhLCBiZWNhdXNlCnRoZXkgYXJlIGNvbXBhdGlibGUgKGkuZS4gdGhlIGFnZ3JlZ2F0aW9uIG9mIHRoZSBkYXRhIGlzIG1lYW5pbmdmdWwpLApidXQgaXQncyBub3QgcG9zc2libGUgdG8gbWVyZ2Ugc2FtcGxlIGZpbGVzIGZvciB0d28gZGlmZmVyZW50IGV2ZW50cywKYmVjYXVzZSB0aGVyZSB3b3VsZCBiZSBubyB1c2VmdWwgbWVhbmluZyB0byB0aGUgcmVzdWx0cy4KPC9wPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD5wcm9maWxlIGNsYXNzPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPHA+CkEgY29sbGVjdGlvbiBvZiBwcm9maWxlIGRhdGEgdGhhdCBoYXMgYmVlbiBjb2xsZWN0ZWQgdW5kZXIgdGhlIHNhbWUKY2xhc3MgdGVtcGxhdGUuIEZvciBleGFtcGxlLCBpZiB3ZSdyZSB1c2luZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4KdG8gc2hvdyByZXN1bHRzIGFmdGVyIHByb2ZpbGluZyB3aXRoIHR3byBwZXJmb3JtYW5jZSBjb3VudGVycyBlbmFibGVkCnByb2ZpbGluZyA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkRBVEFfTUVNX1JFRlM8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkNQVV9DTEtfVU5IQUxURUQ8L2NvZGU+LAp0aGVyZSB3b3VsZCBiZSB0d28gcHJvZmlsZSBjbGFzc2VzLCBvbmUgZm9yIGVhY2ggZXZlbnQuIE9yIGlmIHdlJ3JlIG9uCmFuIFNNUCBzeXN0ZW0gYW5kIGRvaW5nIHBlci1jcHUgcHJvZmlsaW5nLCBhbmQgd2UgcmVxdWVzdAo8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gdG8gc2hvdyByZXN1bHRzIGZvciBlYWNoIENQVSBzaWRlLWJ5LXNpZGUsCnRoZXJlIHdvdWxkIGJlIGEgcHJvZmlsZSBjbGFzcyBmb3IgZWFjaCBDUFUuCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+cHJvZmlsZSBzcGVjaWZpY2F0aW9uPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPHA+ClRoZSBwYXJhbWV0ZXJzIHRoZSB1c2VyIHBhc3NlcyB0byB0aGUgcG9zdC1wcm9maWxpbmcgdG9vbHMgdGhhdCBsaW1pdAp3aGF0IHNhbXBsZSBmaWxlcyBhcmUgdXNlZC4gVGhpcyBzcGVjaWZpY2F0aW9uIGlzIG1hdGNoZWQgYWdhaW5zdAp0aGUgYXZhaWxhYmxlIHNhbXBsZSBmaWxlcyB0byBnZW5lcmF0ZSBhIHNlbGVjdGlvbiBvZiBwcm9maWxlIGRhdGEuCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+cHJvZmlsZSB0ZW1wbGF0ZTwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxwPgpUaGUgcGFyYW1ldGVycyB0aGF0IGRlZmluZSB3aGF0IGdvZXMgaW4gYSBwYXJ0aWN1bGFyIHByb2ZpbGUgY2xhc3MuClRoaXMgaW5jbHVkZXMgYSBzeW1ib2xpYyBuYW1lIChlLmcuICJjcHU6MSIpIGFuZCB0aGUgY29kZS11c2FibGUKZXF1aXZhbGVudC4KPC9wPgogICAgICAgICAgPC9kZD4KICAgICAgICA8L2RsPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=