PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICA8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiAgICA8dGl0bGU+T1Byb2ZpbGUgSW50ZXJuYWxzPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNjkuMSIgLz4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJib29rIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcm9maWxlLWludGVybmFscyI+PC9hPk9Qcm9maWxlIEludGVybmFsczwvaDE+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1dGhvcmdyb3VwIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdXRob3IiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJhdXRob3IiPjxzcGFuIGNsYXNzPSJmaXJzdG5hbWUiPkpvaG48L3NwYW4+IDxzcGFuIGNsYXNzPSJzdXJuYW1lIj5MZXZvbjwvc3Bhbj48L2gzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWZmaWxpYXRpb24iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRyZXNzIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJlbWFpbCI+Jmx0OzxhIGhyZWY9Im1haWx0bzpsZXZvbkBtb3ZlbWVudGFyaWFuLm9yZyI+bGV2b25AbW92ZW1lbnRhcmlhbi5vcmc8L2E+Jmd0OzwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8cCBjbGFzcz0iY29weXJpZ2h0Ij5Db3B5cmlnaHQgqSAyMDAzIEpvaG4gTGV2b248L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8aHIgLz4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgPHA+CiAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICA8L3A+CiAgICAgICAgPGRsPgogICAgICAgICAgPGR0PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcHRlciI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI2ludHJvZHVjdGlvbiI+MS4gSW50cm9kdWN0aW9uPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI292ZXJ2aWV3Ij4xLiBPdmVydmlldzwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb21wb25lbnRzIj4yLiBDb21wb25lbnRzIG9mIHRoZSBPUHJvZmlsZSBzeXN0ZW08L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FyY2gtc3BlY2lmaWMtY29tcG9uZW50cyI+Mi4xLiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29tcG9uZW50czwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ZpbGVzeXN0ZW0iPjIuMi4gb3Byb2ZpbGVmczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RyaXZlciI+Mi4zLiBHZW5lcmljIGtlcm5lbCBkcml2ZXI8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNkYWVtb24iPjIuNC4gVGhlIE9Qcm9maWxlIGRhZW1vbjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Bvc3QtcHJvZmlsaW5nIj4yLjUuIFBvc3QtcHJvZmlsaW5nIHRvb2xzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMiPjIuIFBlcmZvcm1hbmNlIGNvdW50ZXIgbWFuYWdlbWVudDwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwZXJmb3JtYW5jZS1jb3VudGVycy11aSI+MS4gUHJvdmlkaW5nIGEgdXNlciBpbnRlcmZhY2U8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMtcHJvZ3JhbW1pbmciPjIuIFByb2dyYW1taW5nIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVyczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMtc3RhcnQiPjIuMS4gU3RhcnRpbmcgYW5kIHN0b3BwaW5nIHRoZSBjb3VudGVyczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lkNDY2OTQ5MCI+Mi4yLiBJQTY0IGFuZCBwZXJmbW9uPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjY29sbGVjdGluZy1zYW1wbGVzIj4zLiBDb2xsZWN0aW5nIGFuZCBwcm9jZXNzaW5nIHNhbXBsZXM8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcmVjZWl2aW5nLWludGVycnVwdHMiPjEuIFJlY2VpdmluZyBpbnRlcnJ1cHRzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvcmUtc3RydWN0dXJlIj4yLiBDb3JlIGRhdGEgc3RydWN0dXJlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2dnaW5nLXNhbXBsZSI+My4gTG9nZ2luZyBhIHNhbXBsZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2dnaW5nLXN0YWNrIj40LiBMb2dnaW5nIHN0YWNrIHRyYWNlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzeW5jaHJvbmlzaW5nLWJ1ZmZlcnMiPjUuIFN5bmNocm9uaXNpbmcgdGhlIENQVSBidWZmZXJzIHRvIHRoZSBldmVudCBidWZmZXI8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGVudHJ5LWNvb2tpZXMiPjYuIElkZW50aWZ5aW5nIGJpbmFyeSBpbWFnZXM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZmluZGluZy1kZW50cnkiPjcuIEZpbmRpbmcgYSBzYW1wbGUncyBiaW5hcnkgaW1hZ2UgYW5kIG9mZnNldDwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZXMiPjQuIEdlbmVyYXRpbmcgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2Nlc3NpbmctYnVmZmVyIj4xLiBQcm9jZXNzaW5nIHRoZSBidWZmZXI8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hhbmRsaW5nLWtlcm5lbC1zYW1wbGVzIj4xLjEuIEhhbmRsaW5nIGtlcm5lbCBzYW1wbGVzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtZ2VuZXJhdGlvbiI+Mi4gTG9jYXRpbmcgYW5kIGNyZWF0aW5nIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZS13cml0aW5nIj4zLiBXcml0aW5nIGRhdGEgdG8gYSBzYW1wbGUgZmlsZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNvdXRwdXQiPjUuIEdlbmVyYXRpbmcgdXNlZnVsIG91dHB1dDwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWNpZmljYXRpb24iPjEuIEhhbmRsaW5nIHRoZSBwcm9maWxlIHNwZWNpZmljYXRpb248L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtY29sbGF0aW5nIj4yLiBDb2xsYXRpbmcgdGhlIGNhbmRpZGF0ZSBzYW1wbGUgZmlsZXM8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLWNsYXNzaWZ5aW5nIj4yLjEuIENsYXNzaWZ5aW5nIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLWludmVydGluZyI+Mi4yLiBDcmVhdGluZyBpbnZlcnRlZCBwcm9maWxlIGxpc3RzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2VuZXJhdGluZy1wcm9maWxlLWRhdGEiPjMuIEdlbmVyYXRpbmcgcHJvZmlsZSBkYXRhPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNiZmQiPjMuMS4gUHJvY2Vzc2luZyB0aGUgYmluYXJ5IGltYWdlPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvY2Vzc2luZy1zYW1wbGUtZmlsZXMiPjMuMi4gUHJvY2Vzc2luZyB0aGUgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2VuZXJhdGluZy1vdXRwdXQiPjQuIEdlbmVyYXRpbmcgb3V0cHV0PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcHRlciI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dCI+Ni4gRXh0ZW5kZWQgRmVhdHVyZSBJbnRlcmZhY2U8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0LWludHJvIj4xLiBJbnRyb2R1Y3Rpb248L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0LW5hbWUtYW5kLWhhbmRsZXJzIj4yLiBGZWF0dXJlIE5hbWUgYW5kIEhhbmRsZXJzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1lbmFibGUiPjMuIEVuYWJsaW5nIEZlYXR1cmVzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC10eXBlcy1vZi1oYW5kbGVycyI+NC4gVHlwZSBvZiBIYW5kbGVyczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0X2luaXQiPjQuMS4gZXh0X2luaXQgSGFuZGxlcjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dF9wcmludF9zdGF0cyI+NC4yLiBleHRfcHJpbnRfc3RhdHMgSGFuZGxlcjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dF9zZmlsZV9oYW5kbGVycyI+NC4zLiBleHRfc2ZpbGUgSGFuZGxlcjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1pbXBsZW1lbnRhdGlvbiI+NS4gRXh0ZW5kZWQgRmVhdHVyZSBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb248L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1pYnMiPjUuMS4gSW5zdHJ1Y3Rpb24tQmFzZWQgU2FtcGxpbmcgKElCUyk8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imdsb3NzYXJ5Ij4KICAgICAgICAgICAgICA8YSBocmVmPSIjZ2xvc3NhcnkiPkdsb3NzYXJ5IG9mIE9Qcm9maWxlIHNvdXJjZSBjb25jZXB0cyBhbmQgdHlwZXM8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgPC9kbD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Imxpc3Qtb2YtZmlndXJlcyI+CiAgICAgICAgPHA+CiAgICAgICAgICA8Yj5MaXN0IG9mIEZpZ3VyZXM8L2I+CiAgICAgICAgPC9wPgogICAgICAgIDxkbD4KICAgICAgICAgIDxkdD4zLjEuIDxhIGhyZWY9IiNpZDQ2Njk2NjAiPlRoZSBPUHJvZmlsZSBidWZmZXJzPC9hPjwvZHQ+CiAgICAgICAgPC9kbD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPjxhIGlkPSJpbnRyb2R1Y3Rpb24iPjwvYT5DaGFwdGVyoDEuoEludHJvZHVjdGlvbjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ZlcnZpZXciPjEuIE92ZXJ2aWV3PC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29tcG9uZW50cyI+Mi4gQ29tcG9uZW50cyBvZiB0aGUgT1Byb2ZpbGUgc3lzdGVtPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjYXJjaC1zcGVjaWZpYy1jb21wb25lbnRzIj4yLjEuIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb21wb25lbnRzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNmaWxlc3lzdGVtIj4yLjIuIG9wcm9maWxlZnM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RyaXZlciI+Mi4zLiBHZW5lcmljIGtlcm5lbCBkcml2ZXI8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RhZW1vbiI+Mi40LiBUaGUgT1Byb2ZpbGUgZGFlbW9uPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwb3N0LXByb2ZpbGluZyI+Mi41LiBQb3N0LXByb2ZpbGluZyB0b29sczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgPC9kbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8cD4KVGhpcyBkb2N1bWVudCBpcyBjdXJyZW50IGZvciBPUHJvZmlsZSB2ZXJzaW9uIDAuOS42LgpUaGlzIGRvY3VtZW50IHByb3ZpZGVzIHNvbWUgZGV0YWlscyBvbiB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgT1Byb2ZpbGUgZm9yIHRoZQppbnRlcmVzdGVkIGhhY2tlci4gVGhpcyBkb2N1bWVudCBhc3N1bWVzIHN0cm9uZyBDLCB3b3JraW5nIEMrKywgcGx1cyBzb21lIGtub3dsZWRnZSBvZgprZXJuZWwgaW50ZXJuYWxzIGFuZCBDUFUgaGFyZHdhcmUuCjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz4KICAgICAgICAgIDxwPgpPbmx5IHRoZSAibmV3IiBpbXBsZW1lbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGgga2VybmVsIDIuNiBhbmQgYWJvdmUgaXMgY292ZXJlZCBoZXJlLiAyLjQKdXNlcyBhIHZlcnkgZGlmZmVyZW50IGtlcm5lbCBtb2R1bGUgaW1wbGVtZW50YXRpb24gYW5kIGRhZW1vbiB0byBwcm9kdWNlIHRoZSBzYW1wbGUgZmlsZXMuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvdmVydmlldyI+PC9hPjEuoE92ZXJ2aWV3PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBpcyBhIHN0YXRpc3RpY2FsIGNvbnRpbnVvdXMgcHJvZmlsZXIuIEluIG90aGVyIHdvcmRzLCBwcm9maWxlcyBhcmUgZ2VuZXJhdGVkIGJ5CnJlZ3VsYXJseSBzYW1wbGluZyB0aGUgY3VycmVudCByZWdpc3RlcnMgb24gZWFjaCBDUFUgKGZyb20gYW4gaW50ZXJydXB0IGhhbmRsZXIsIHRoZQpzYXZlZCBQQyB2YWx1ZSBhdCB0aGUgdGltZSBvZiBpbnRlcnJ1cHQgaXMgc3RvcmVkKSwgYW5kIGNvbnZlcnRpbmcgdGhhdCBydW50aW1lIFBDCnZhbHVlIGludG8gc29tZXRoaW5nIG1lYW5pbmdmdWwgdG8gdGhlIHByb2dyYW1tZXIuCjwvcD4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBhY2hpZXZlcyB0aGlzIGJ5IHRha2luZyB0aGUgc3RyZWFtIG9mIHNhbXBsZWQgUEMgdmFsdWVzLCBhbG9uZyB3aXRoIHRoZSBkZXRhaWwKb2Ygd2hpY2ggdGFzayB3YXMgcnVubmluZyBhdCB0aGUgdGltZSBvZiB0aGUgaW50ZXJydXB0LCBhbmQgY29udmVydGluZyBpbnRvIGEgZmlsZSBvZmZzZXQKYWdhaW5zdCBhIHBhcnRpY3VsYXIgYmluYXJ5IGZpbGUuIEJlY2F1c2UgYXBwbGljYXRpb25zIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bW1hcCgpPC9jb2RlPgp0aGUgY29kZSB0aGV5IHJ1biAoYmUgaXQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vYmluL2Jhc2g8L2NvZGU+LCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9saWIvbGliZm9vLnNvPC9jb2RlPgpvciB3aGF0ZXZlciksIGl0J3MgcG9zc2libGUgdG8gZmluZCB0aGUgcmVsZXZhbnQgYmluYXJ5IGZpbGUgYW5kIG9mZnNldCBieSB3YWxraW5nCnRoZSB0YXNrJ3MgbGlzdCBvZiBtYXBwZWQgbWVtb3J5IGFyZWFzLiBFYWNoIFBDIHZhbHVlIGlzIHRodXMgY29udmVydGVkIGludG8gYSB0dXBsZQpvZiBiaW5hcnktaW1hZ2Usb2Zmc2V0LiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0IHRoZSB1c2Vyc3BhY2UgdG9vbHMgY2FuIHVzZSBkaXJlY3RseQp0byByZWNvbnN0cnVjdCB3aGVyZSB0aGUgY29kZSBjYW1lIGZyb20sIGluY2x1ZGluZyB0aGUgcGFydGljdWxhciBhc3NlbWJseSBpbnN0cnVjdGlvbnMsCnN5bWJvbCwgYW5kIHNvdXJjZSBsaW5lICh2aWEgdGhlIGJpbmFyeSdzIGRlYnVnIGluZm9ybWF0aW9uIGlmIHByZXNlbnQpLgo8L3A+CiAgICAgICAgICA8cD4KUmVndWxhcmx5IHNhbXBsaW5nIHRoZSBQQyB2YWx1ZSBsaWtlIHRoaXMgYXBwcm94aW1hdGVzIHdoYXQgYWN0dWFsbHkgd2FzIGV4ZWN1dGVkIGFuZApob3cgb2Z0ZW4gLSBtb3JlIG9mdGVuIHRoYW4gbm90LCB0aGlzIHN0YXRpc3RpY2FsIGFwcHJveGltYXRpb24gaXMgZ29vZCBlbm91Z2ggdG8KcmVmbGVjdCByZWFsaXR5LiBJbiBjb21tb24gb3BlcmF0aW9uLCB0aGUgdGltZSBiZXR3ZWVuIGVhY2ggc2FtcGxlIGludGVycnVwdCBpcyByZWd1bGF0ZWQKYnkgYSBmaXhlZCBudW1iZXIgb2YgY2xvY2sgY3ljbGVzLiBUaGlzIGltcGxpZXMgdGhhdCB0aGUgcmVzdWx0cyB3aWxsIHJlZmxlY3Qgd2hlcmUKdGhlIENQVSBpcyBzcGVuZGluZyB0aGUgbW9zdCB0aW1lOyB0aGlzIGlzIG9idmlvdXNseSBhIHZlcnkgdXNlZnVsIGluZm9ybWF0aW9uIHNvdXJjZQpmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuCjwvcD4KICAgICAgICAgIDxwPgpTb21ldGltZXMgdGhvdWdoLCBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyIG5lZWRzIGRpZmZlcmVudCBraW5kcyBvZiBpbmZvcm1hdGlvbjogZm9yIGV4YW1wbGUsCiJ3aGljaCBvZiB0aGUgc291cmNlIHJvdXRpbmVzIGNhdXNlIHRoZSBtb3N0IGNhY2hlIG1pc3NlcyA/Ii4gVGhlIHJpc2UgaW4gaW1wb3J0YW5jZSBvZgpzdWNoIG1ldHJpY3MgaW4gcmVjZW50IHllYXJzIGhhcyBsZWQgbWFueSBDUFUgbWFudWZhY3R1cmVycyB0byBwcm92aWRlIGhhcmR3YXJlIHBlcmZvcm1hbmNlCmNvdW50ZXJzIGNhcGFibGUgb2YgbWVhc3VyaW5nIHRoZXNlIGV2ZW50cyBvbiB0aGUgaGFyZHdhcmUgbGV2ZWwuIFR5cGljYWxseSwgdGhlc2UgY291bnRlcnMKaW5jcmVtZW50IG9uY2UgcGVyIGVhY2ggZXZlbnQsIGFuZCBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgb24gcmVhY2hpbmcgc29tZSBwcmUtZGVmaW5lZApudW1iZXIgb2YgZXZlbnRzLiBPUHJvZmlsZSBjYW4gdXNlIHRoZXNlIGludGVycnVwdHMgdG8gZ2VuZXJhdGUgc2FtcGxlczogdGhlbiwgdGhlCnByb2ZpbGUgcmVzdWx0cyBhcmUgYSBzdGF0aXN0aWNhbCBhcHByb3hpbWF0aW9uIG9mIHdoaWNoIGNvZGUgY2F1c2VkIGhvdyBtYW55IG9mIHRoZQpnaXZlbiBldmVudC4KPC9wPgogICAgICAgICAgPHA+CkNvbnNpZGVyIGEgc2ltcGxpZmllZCBzeXN0ZW0gdGhhdCBvbmx5IGV4ZWN1dGVzIHR3byBmdW5jdGlvbnMgQSBhbmQgQi4gQQp0YWtlcyBvbmUgY3ljbGUgdG8gZXhlY3V0ZSwgd2hlcmVhcyBCIHRha2VzIDk5IGN5Y2xlcy4gSW1hZ2luZSB3ZSBydW4gYXQKMTAwIGN5Y2xlcyBhIHNlY29uZCwgYW5kIHdlJ3ZlIHNldCB0aGUgcGVyZm9ybWFuY2UgY291bnRlciB0byBjcmVhdGUgYW4KaW50ZXJydXB0IGFmdGVyIGEgc2V0IG51bWJlciBvZiAiZXZlbnRzIiAoaW4gdGhpcyBjYXNlIGFuIGV2ZW50IGlzIG9uZQpjbG9jayBjeWNsZSkuIEl0IHNob3VsZCBiZSBjbGVhciB0aGF0IHRoZSBjaGFuY2VzIG9mIHRoZSBpbnRlcnJ1cHQKb2NjdXJyaW5nIGluIGZ1bmN0aW9uIEEgaXMgMS8xMDAsIGFuZCA5OS8xMDAgZm9yIGZ1bmN0aW9uIEIuIFRodXMsIHdlCnN0YXRpc3RpY2FsbHkgYXBwcm94aW1hdGUgdGhlIGFjdHVhbCByZWxhdGl2ZSBwZXJmb3JtYW5jZSBmZWF0dXJlcyBvZgp0aGUgdHdvIGZ1bmN0aW9ucyBvdmVyIHRpbWUuIFRoaXMgc2FtZSBhbmFseXNpcyB3b3JrcyBmb3Igb3RoZXIgdHlwZXMgb2YKZXZlbnRzLCBwcm92aWRpbmcgdGhhdCB0aGUgaW50ZXJydXB0IGlzIHRpZWQgdG8gdGhlIG51bWJlciBvZiBldmVudHMKb2NjdXJyaW5nICh0aGF0IGlzLCBhZnRlciBOIGV2ZW50cywgYW4gaW50ZXJydXB0IGlzIGdlbmVyYXRlZCkuCjwvcD4KICAgICAgICAgIDxwPgpUaGVyZSBhcmUgdHlwaWNhbGx5IG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgY291bnRlcnMsIHNvIGl0J3MgcG9zc2libGUgdG8gc2V0IHVwIHByb2ZpbGluZwpmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgZXZlbnQgdHlwZXMuIFVzaW5nIHRoZXNlIGNvdW50ZXJzIGdpdmVzIHVzIGEgcG93ZXJmdWwsIGxvdy1vdmVyaGVhZAp3YXkgb2YgZ2FpbmluZyBwZXJmb3JtYW5jZSBtZXRyaWNzLiBJZiBPUHJvZmlsZSwgb3IgdGhlIENQVSwgZG9lcyBub3Qgc3VwcG9ydCBwZXJmb3JtYW5jZQpjb3VudGVycywgdGhlbiBhIHNpbXBsZXIgbWV0aG9kIGlzIHVzZWQ6IHRoZSBrZXJuZWwgdGltZXIgaW50ZXJydXB0IGZlZWRzIHNhbXBsZXMKaW50byBPUHJvZmlsZSBpdHNlbGYuCjwvcD4KICAgICAgICAgIDxwPgpUaGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGNvbmNlcm5zIGl0c2VsZiB3aXRoIGhvdyB3ZSBnZXQgZnJvbSByZWNlaXZpbmcgc2FtcGxlcyBhdAppbnRlcnJ1cHQgdGltZSB0byBwcm9kdWNpbmcgdXNlci1yZWFkYWJsZSBwcm9maWxlIGluZm9ybWF0aW9uLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iY29tcG9uZW50cyI+PC9hPjIuoENvbXBvbmVudHMgb2YgdGhlIE9Qcm9maWxlIHN5c3RlbTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJhcmNoLXNwZWNpZmljLWNvbXBvbmVudHMiPjwvYT4yLjEuoEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb21wb25lbnRzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CklmIE9Qcm9maWxlIHN1cHBvcnRzIHRoZSBoYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycyBmb3VuZCBvbgphIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlLCBjb2RlIGZvciBtYW5hZ2luZyB0aGUgZGV0YWlscyBvZiBzZXR0aW5nCnVwIGFuZCBtYW5hZ2luZyB0aGVzZSBjb3VudGVycyBjYW4gYmUgZm91bmQgaW4gdGhlIGtlcm5lbCBzb3VyY2UKdHJlZSBpbiB0aGUgcmVsZXZhbnQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hcmNoLzxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmFyY2g8L2VtPjwvc3Bhbj4vb3Byb2ZpbGUvPC9jb2RlPgpkaXJlY3RvcnkuIFRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gd29ya3MgdmlhCmZpbGxpbmcgaW4gdGhlIG9wcm9maWxlX29wZXJhdGlvbnMgc3RydWN0dXJlIGF0IGluaXQgdGltZS4gVGhpcwpwcm92aWRlcyBhIHNldCBvZiBvcGVyYXRpb25zIHN1Y2ggYXMgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zZXR1cCgpPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdGFydCgpPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdG9wKCk8L2NvZGU+LCBldGMuCnRoYXQgbWFuYWdlIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBkZXRhaWxzIG9mIGZpZGRsaW5nIHdpdGggdGhlCnBlcmZvcm1hbmNlIGNvdW50ZXIgcmVnaXN0ZXJzLgo8L3A+CiAgICAgICAgICAgIDxwPgpUaGUgb3RoZXIgaW1wb3J0YW50IGZhY2lsaXR5IGF2YWlsYWJsZSB0byB0aGUgYXJjaGl0ZWN0dXJlIGNvZGUgaXMKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5vcHJvZmlsZV9hZGRfc2FtcGxlKCk8L2NvZGU+LiAgVGhpcyBpcyB3aGVyZSBhIHBhcnRpY3VsYXIgc2FtcGxlCnRha2VuIGF0IGludGVycnVwdCB0aW1lIGlzIGZlZCBpbnRvIHRoZSBnZW5lcmljIE9Qcm9maWxlIGRyaXZlciBjb2RlLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImZpbGVzeXN0ZW0iPjwvYT4yLjIuoG9wcm9maWxlZnM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT1Byb2ZpbGUgaW1wbGVtZW50cyBhIHBzZXVkby1maWxlc3lzdGVtIGtub3duIGFzICJvcHJvZmlsZWZzIiwgbW91bnRlZCBmcm9tCnVzZXJzcGFjZSBhdCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9kZXYvb3Byb2ZpbGU8L2NvZGU+LiBUaGlzIGNvbnNpc3RzIG9mIHNtYWxsCmZpbGVzIGZvciByZXBvcnRpbmcgYW5kIHJlY2VpdmluZyBjb25maWd1cmF0aW9uIGZyb20gdXNlcnNwYWNlLCBhcyB3ZWxsCmFzIHRoZSBhY3R1YWwgY2hhcmFjdGVyIGRldmljZSB0aGF0IHRoZSBPUHJvZmlsZSB1c2Vyc3BhY2UgcmVjZWl2ZXMgc2FtcGxlcwpmcm9tLiBBdCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnNldHVwKCk8L2NvZGU+IHRpbWUsIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWF5CmFkZCBmdXJ0aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgcmVsYXRlZCB0byB0aGUgZGV0YWlscyBvZiB0aGUgcGVyZm9ybWFuY2UKY291bnRlcnMuIEZvciBleGFtcGxlLCBvbiB4ODYsIG9uZSBudW1iZXJlZCBkaXJlY3RvcnkgZm9yIGVhY2ggaGFyZHdhcmUKcGVyZm9ybWFuY2UgY291bnRlciBpcyBhZGRlZCwgd2l0aCBmaWxlcyBpbiBlYWNoIGZvciB0aGUgZXZlbnQgdHlwZSwKcmVzZXQgdmFsdWUsIGV0Yy4KPC9wPgogICAgICAgICAgICA8cD4KVGhlIGZpbGVzeXN0ZW0gYWxzbyBjb250YWlucyBhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+c3RhdHM8L2NvZGU+IGRpcmVjdG9yeSB3aXRoCmEgbnVtYmVyIG9mIHVzZWZ1bCBjb3VudGVycyBmb3IgdmFyaW91cyBPUHJvZmlsZSBldmVudHMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZHJpdmVyIj48L2E+Mi4zLqBHZW5lcmljIGtlcm5lbCBkcml2ZXI8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhpcyBsaXZlcyBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRyaXZlcnMvb3Byb2ZpbGUvPC9jb2RlPiwgYW5kIGZvcm1zIHRoZSBjb3JlIG9mCmhvdyBPUHJvZmlsZSB3b3JrcyBpbiB0aGUga2VybmVsLiBJdHMgam9iIGlzIHRvIHRha2Ugc2FtcGxlcyBkZWxpdmVyZWQKZnJvbSB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgKHZpYSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wcm9maWxlX2FkZF9zYW1wbGUoKTwvY29kZT4pLAphbmQgYnVmZmVyIHRoaXMgZGF0YSwgaW4gYSB0cmFuc2Zvcm1lZCBmb3JtIGFzIGRlc2NyaWJlZCBsYXRlciwgdW50aWwgcmVsZWFzaW5nCnRoZSBkYXRhIHRvIHRoZSB1c2Vyc3BhY2UgZGFlbW9uIHZpYSB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vZGV2L29wcm9maWxlL2J1ZmZlcjwvY29kZT4KY2hhcmFjdGVyIGRldmljZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJkYWVtb24iPjwvYT4yLjQuoFRoZSBPUHJvZmlsZSBkYWVtb248L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIE9Qcm9maWxlIHVzZXJzcGFjZSBkYWVtb24ncyBqb2IgaXMgdG8gdGFrZSB0aGUgcmF3IGRhdGEgcHJvdmlkZWQgYnkgdGhlCmtlcm5lbCBhbmQgd3JpdGUgaXQgdG8gdGhlIGRpc2suIEl0IHRha2VzIHRoZSBzaW5nbGUgZGF0YSBzdHJlYW0gZnJvbSB0aGUKa2VybmVsIGFuZCBsb2dzIHNhbXBsZSBkYXRhIGFnYWluc3QgYSBudW1iZXIgb2Ygc2FtcGxlIGZpbGVzIChmb3VuZCBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiRTRVNTSU9OX0RJUi9zYW1wbGVzL2N1cnJlbnQvPC9jb2RlPiwgYnkgZGVmYXVsdCBsb2NhdGVkIGF0IAo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvY3VycmVudC88L2NvZGU+LiBGb3IgdGhlIGJlbmVmaXQKb2YgdGhlICJzZXBhcmF0ZSIgZnVuY3Rpb25hbGl0eSwgdGhlIG5hbWVzL3BhdGhzIG9mIHRoZXNlIHNhbXBsZSBmaWxlcwphcmUgbWFuZ2xlZCB0byByZWZsZWN0IHdoZXJlIHRoZSBzYW1wbGVzIHdlcmUgZnJvbTogdGhpcyBjYW4gaW5jbHVkZQp0aHJlYWQgSURzLCB0aGUgYmluYXJ5IGZpbGUgcGF0aCwgdGhlIGV2ZW50IHR5cGUgdXNlZCwgYW5kIG1vcmUuCjwvcD4KICAgICAgICAgICAgPHA+CkFmdGVyIHRoaXMgZmluYWwgc3RlcCBmcm9tIGludGVycnVwdCB0byBkaXNrIGZpbGUsIHRoZSBkYXRhIGlzIG5vdwpwZXJzaXN0ZW50ICh0aGF0IGlzLCBjaGFuZ2VzIGluIHRoZSBydW5uaW5nIG9mIHRoZSBzeXN0ZW0gZG8gbm90IGludmFsaWRhdGUKc3RvcmVkIGRhdGEpLiBTbyB0aGUgcG9zdC1wcm9maWxpbmcgdG9vbHMgY2FuIHJ1biBvbiB0aGlzIGRhdGEgYXQgYW55CnRpbWUgKGFzc3VtaW5nIHRoZSBvcmlnaW5hbCBiaW5hcnkgZmlsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhbmQgdW5jaGFuZ2VkLApuYXR1cmFsbHkpLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBpZD0icG9zdC1wcm9maWxpbmciPjwvYT4yLjUuoFBvc3QtcHJvZmlsaW5nIHRvb2xzPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KU28gZmFyLCB3ZSd2ZSBjb2xsZWN0ZWQgZGF0YSwgYnV0IHdlJ3ZlIHlldCB0byBwcmVzZW50IGl0IGluIGEgdXNlZnVsIGZvcm0KdG8gdGhlIHVzZXIuIFRoaXMgaXMgdGhlIGpvYiBvZiB0aGUgcG9zdC1wcm9maWxpbmcgdG9vbHMuIEluIGdlbmVyYWwgZm9ybSwKdGhleSBjb2xsYXRlIGEgc3Vic2V0IG9mIHRoZSBhdmFpbGFibGUgc2FtcGxlIGZpbGVzLCBsb2FkIGFuZCBwcm9jZXNzIGVhY2ggb25lCmNvcnJlbGF0ZWQgYWdhaW5zdCB0aGUgcmVsZXZhbnQgYmluYXJ5IGZpbGUsIGFuZCBmaW5hbGx5IHByb2R1Y2UgdXNlci1yZWFkYWJsZQppbmZvcm1hdGlvbi4KPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0icGVyZm9ybWFuY2UtY291bnRlcnMiPjwvYT5DaGFwdGVyoDIuoFBlcmZvcm1hbmNlIGNvdW50ZXIgbWFuYWdlbWVudDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMtdWkiPjEuIFByb3ZpZGluZyBhIHVzZXIgaW50ZXJmYWNlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcGVyZm9ybWFuY2UtY291bnRlcnMtcHJvZ3JhbW1pbmciPjIuIFByb2dyYW1taW5nIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVyczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3BlcmZvcm1hbmNlLWNvdW50ZXJzLXN0YXJ0Ij4yLjEuIFN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0aGUgY291bnRlcnM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lkNDY2OTQ5MCI+Mi4yLiBJQTY0IGFuZCBwZXJmbW9uPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InBlcmZvcm1hbmNlLWNvdW50ZXJzLXVpIj48L2E+MS6gUHJvdmlkaW5nIGEgdXNlciBpbnRlcmZhY2U8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVycyBuZWVkIHByb2dyYW1taW5nIGluIG9yZGVyIHRvIHNldCB0aGUKdHlwZSBvZiBldmVudCB0byBjb3VudCwgZXRjLiBPUHJvZmlsZSB1c2VzIGEgc3RhbmRhcmQgbW9kZWwgYWNyb3NzIGFsbApDUFVzIGZvciBkZWZpbmluZyB0aGVzZSBldmVudHMgYXMgZm9sbG93cyA6CjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KICAgICAgICAgICAgICA8Y29sZ3JvdXA+CiAgICAgICAgICAgICAgICA8Y29sIC8+CiAgICAgICAgICAgICAgICA8Y29sIC8+CiAgICAgICAgICAgICAgPC9jb2xncm91cD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5ldmVudDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPlRoZSBldmVudCB0eXBlIGUuZy4gREFUQV9NRU1fUkVGUzwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dW5pdCBtYXNrPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8dGQ+VGhlIHN1Yi1ldmVudHMgdG8gY291bnQgKG1vcmUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbik8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmNvdW50ZXI8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5UaGUgaGFyZHdhcmUgY291bnRlcihzKSB0aGF0IGNhbiBjb3VudCB0aGlzIGV2ZW50PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5jb3VudDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkPlRoZSByZXNldCB2YWx1ZSAoaG93IG1hbnkgZXZlbnRzIGJlZm9yZSBhbiBpbnRlcnJ1cHQpPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5rZXJuZWw8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5XaGV0aGVyIHRoZSBjb3VudGVyIHNob3VsZCBpbmNyZW1lbnQgd2hlbiBpbiBrZXJuZWwgc3BhY2U8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPnVzZXI8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZD5XaGV0aGVyIHRoZSBjb3VudGVyIHNob3VsZCBpbmNyZW1lbnQgd2hlbiBpbiB1c2VyIHNwYWNlPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoZSB0ZXJtICJ1bml0IG1hc2siIGlzIGJvcnJvd2VkIGZyb20gdGhlIEludGVsIGFyY2hpdGVjdHVyZXMsIGFuZCBjYW4KZnVydGhlciBzcGVjaWZ5IGV4YWN0bHkgd2hlbiBhIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgKGZvciBleGFtcGxlLApjYWNoZS1yZWxhdGVkIGV2ZW50cyBjYW4gYmUgcmVzdHJpY3RlZCB0byBwYXJ0aWN1bGFyIHN0YXRlIHRyYW5zaXRpb25zCm9mIHRoZSBjYWNoZSBsaW5lcykuCjwvcD4KICAgICAgICAgIDxwPgpBbGwgb2YgdGhlIGF2YWlsYWJsZSBoYXJkd2FyZSBldmVudHMgYW5kIHRoZWlyIGRldGFpbHMgYXJlIHNwZWNpZmllZCBpbgp0aGUgdGV4dHVhbCBmaWxlcyBpbiB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5ldmVudHM8L2NvZGU+IGRpcmVjdG9yeS4gVGhlCnN5bnRheCBvZiB0aGVzZSBmaWxlcyBzaG91bGQgYmUgZmFpcmx5IG9idmlvdXMuIFRoZSB1c2VyIHNwZWNpZmllcyB0aGUKbmFtZXMgYW5kIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBvZiB0aGUgY2hvc2VuIGNvdW50ZXJzIHZpYQo8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+LiBUaGVzZSBhcmUgdGhlbiB3cml0dGVuIHRvIHRoZSBrZXJuZWwKbW9kdWxlIChpbiBudW1lcmljYWwgZm9ybSkgdmlhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Rldi9vcHJvZmlsZS9OLzwvY29kZT4Kd2hlcmUgTiBpcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgY291bnRlciAoc29tZSBldmVudHMgY2FuIG9ubHkgYmUgdXNlZApvbiBzcGVjaWZpYyBjb3VudGVyczsgT1Byb2ZpbGUgaGlkZXMgdGhlc2UgZGV0YWlscyBmcm9tIHRoZSB1c2VyIHdoZW4KcG9zc2libGUpLiBPbiBJQTY0LCB0aGUgcGVyZm1vbi1iYXNlZCBpbnRlcmZhY2UgYmVoYXZlcyBzb21ld2hhdApkaWZmZXJlbnRseSwgYXMgZGVzY3JpYmVkIGxhdGVyLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icGVyZm9ybWFuY2UtY291bnRlcnMtcHJvZ3JhbW1pbmciPjwvYT4yLqBQcm9ncmFtbWluZyB0aGUgcGVyZm9ybWFuY2UgY291bnRlciByZWdpc3RlcnM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CldlIGhhdmUgZGVzY3JpYmVkIGhvdyB0aGUgdXNlciBpbnRlcmZhY2UgZmlsbHMgaW4gdGhlIGRlc2lyZWQKY29uZmlndXJhdGlvbiBvZiB0aGUgY291bnRlcnMgYW5kIHRyYW5zbWl0cyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlCmtlcm5lbC4gSXQgaXMgdGhlIGpvYiBvZiB0aGUgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj4tJmd0O3NldHVwKCk8L2NvZGU+IG1ldGhvZAp0byBhY3R1YWxseSBwcm9ncmFtIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVycy4gQ2xlYXJseSwgdGhlCmRldGFpbHMgb2YgaG93IHRoaXMgaXMgZG9uZSBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWM7IGl0IGlzIGFsc28KbW9kZWwtc3BlY2lmaWMgb24gbWFueSBhcmNoaXRlY3R1cmVzLiBGb3IgZXhhbXBsZSwgaTM4NiBwcm92aWRlcyBtZXRob2RzCmZvciBlYWNoIG1vZGVsIHR5cGUgdGhhdCBwcm9ncmFtcyB0aGUgY291bnRlciByZWdpc3RlcnMgY29ycmVjdGx5CihzZWUgdGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3BfbW9kZWxfKjwvY29kZT4gZmlsZXMgaW4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hcmNoL2kzODYvb3Byb2ZpbGU8L2NvZGU+IGZvciB0aGUgZGV0YWlscykuIFRoZSBtZXRob2QKcmVhZHMgdGhlIHZhbHVlcyBzdG9yZWQgaW4gdGhlIHZpcnR1YWwgb3Byb2ZpbGVmcyBmaWxlcyBhbmQgcHJvZ3JhbXMKdGhlIHJlZ2lzdGVycyBhcHByb3ByaWF0ZWx5LCByZWFkeSBmb3Igc3RhcnRpbmcgdGhlIGFjdHVhbCBwcm9maWxpbmcKc2Vzc2lvbi4KPC9wPgogICAgICAgICAgPHA+ClRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZHJpdmVycyBtYWtlIHN1cmUgdG8gc2F2ZSB0aGUgb2xkIHJlZ2lzdGVyCnNldHRpbmdzIGJlZm9yZSBkb2luZyBPUHJvZmlsZSBzZXR1cC4gVGhleSBhcmUgcmVzdG9yZWQgd2hlbiBPUHJvZmlsZQpzaHV0cyBkb3duLiBUaGlzIGlzIHVzZWZ1bCwgZm9yIGV4YW1wbGUsIG9uIGkzODYsIHdoZXJlIHRoZSBOTUkgd2F0Y2hkb2cKdXNlcyB0aGUgc2FtZSBwZXJmb3JtYW5jZSBjb3VudGVyIHJlZ2lzdGVycyBhcyBPUHJvZmlsZTsgdGhleSBjYW5ub3QKcnVuIGNvbmN1cnJlbnRseSwgYnV0IE9Qcm9maWxlIG1ha2VzIHN1cmUgdG8gcmVzdG9yZSB0aGUgc2V0dXAgaXQgZm91bmQKYmVmb3JlIGl0IHdhcyBydW5uaW5nLgo8L3A+CiAgICAgICAgICA8cD4KSW4gYWRkaXRpb24gdG8gcHJvZ3JhbW1pbmcgdGhlIGNvdW50ZXIgcmVnaXN0ZXJzIHRoZW1zZWx2ZXMsIG90aGVyIHNldHVwCmlzIG9mdGVuIG5lY2Vzc2FyeS4gRm9yIGV4YW1wbGUsIG9uIGkzODYsIHRoZSBsb2NhbCBBUElDIG5lZWRzCnByb2dyYW1taW5nIGluIG9yZGVyIHRvIG1ha2UgdGhlIGNvdW50ZXIncyBvdmVyZmxvdyBpbnRlcnJ1cHQgYXBwZWFyIGFzCmFuIE5NSSAobm9uLW1hc2thYmxlIGludGVycnVwdCkuIFRoaXMgYWxsb3dzIHNhbXBsaW5nIChhbmQgdGhlcmVmb3JlCnByb2ZpbGluZykgb2YgcmVnaW9ucyB3aGVyZSAibm9ybWFsIiBpbnRlcnJ1cHRzIGFyZSBtYXNrZWQsIGVuYWJsaW5nCm1vcmUgcmVsaWFibGUgcHJvZmlsZXMuCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InBlcmZvcm1hbmNlLWNvdW50ZXJzLXN0YXJ0Ij48L2E+Mi4xLqBTdGFydGluZyBhbmQgc3RvcHBpbmcgdGhlIGNvdW50ZXJzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CkluaXRpYXRpbmcgYSBwcm9maWxpbmcgc2Vzc2lvbiBpcyBkb25lIHZpYSB3cml0aW5nIGFuIEFTQ0lJICcxJwp0byB0aGUgZmlsZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9kZXYvb3Byb2ZpbGUvZW5hYmxlPC9jb2RlPi4gVGhpcyBzZXRzIHVwIHRoZQpjb3JlLCBhbmQgY2FsbHMgaW50byB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRyaXZlciB0byBhY3R1YWxseQplbmFibGUgZWFjaCBjb25maWd1cmVkIGNvdW50ZXIuIEFnYWluLCB0aGUgZGV0YWlscyBvZiBob3cgdGhpcyBpcwpkb25lIGlzIG1vZGVsLXNwZWNpZmljIChmb3IgZXhhbXBsZSwgdGhlIEF0aGxvbiBtb2RlbHMgY2FuIGRpc2FibGUKb3IgZW5hYmxlIG9uIGEgcGVyLWNvdW50ZXIgYmFzaXMsIHVubGlrZSB0aGUgUFBybyBtb2RlbHMpLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImlkNDY2OTQ5MCI+PC9hPjIuMi6gSUE2NCBhbmQgcGVyZm1vbjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgSUE2NCBhcmNoaXRlY3R1cmUgcHJvdmlkZXMgYSBkaWZmZXJlbnQgaW50ZXJmYWNlIGZyb20gdGhlIG90aGVyCmFyY2hpdGVjdHVyZXMsIHVzaW5nIHRoZSBleGlzdGluZyBwZXJmbW9uIGRyaXZlci4gUmVnaXN0ZXIgcHJvZ3JhbW1pbmcKaXMgaGFuZGxlZCBlbnRpcmVseSBpbiB1c2VyLXNwYWNlIChzZWUKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3BlcmZtb24uYzwvY29kZT4gZm9yIHRoZSBkZXRhaWxzKS4gQSBwcm9jZXNzCmlzIGZvcmtlZCBmb3IgZWFjaCBDUFUsIHdoaWNoIGNyZWF0ZXMgYSBwZXJmbW9uIGNvbnRleHQgYW5kIHNldHMgdGhlCmNvdW50ZXIgcmVnaXN0ZXJzIGFwcHJvcHJpYXRlbHkgdmlhIHRoZQo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnN5c19wZXJmbW9uY3RsPC9jb2RlPiBpbnRlcmZhY2UuIEluIGFkZGl0aW9uLCB0aGUgYWN0dWFsCmluaXRpYXRpb24gYW5kIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9maWxpbmcgc2Vzc2lvbiBpcyBoYW5kbGVkIHZpYSB0aGUKc2FtZSBpbnRlcmZhY2UgdXNpbmcgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5QRk1fU1RBUlQ8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29uc3RhbnQiPlBGTV9TVE9QPC9jb2RlPi4gT24gSUE2NCwgdGhlbiwgdGhlcmUgYXJlIG5vIG9wcm9maWxlZnMKZmlsZXMgZm9yIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVycywgYXMgdGhlIGtlcm5lbCBkcml2ZXIgZG9lcyBub3QKcHJvZ3JhbSB0aGUgcmVnaXN0ZXJzIGl0c2VsZi4KPC9wPgogICAgICAgICAgICA8cD4KSW5zdGVhZCwgdGhlIHBlcmZtb24gZHJpdmVyIGZvciBPUHJvZmlsZSBzaW1wbHkgcmVnaXN0ZXJzIHdpdGggdGhlCk9Qcm9maWxlIGNvcmUgd2l0aCBhbiBPUHJvZmlsZS1zcGVjaWZpYyBVVUlELiBEdXJpbmcgYSBwcm9maWxpbmcKc2Vzc2lvbiwgdGhlIHBlcmZtb24gY29yZSBjYWxscyBpbnRvIHRoZSBPUHJvZmlsZSBwZXJmbW9uIGRyaXZlciBhbmQKc2FtcGxlcyBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBPUHJvZmlsZSBjb3JlIGl0c2VsZiBhcyB1c3VhbCAod2l0aAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wcm9maWxlX2FkZF9zYW1wbGUoKTwvY29kZT4pLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPjxhIGlkPSJjb2xsZWN0aW5nLXNhbXBsZXMiPjwvYT5DaGFwdGVyoDMuoENvbGxlY3RpbmcgYW5kIHByb2Nlc3Npbmcgc2FtcGxlczwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjcmVjZWl2aW5nLWludGVycnVwdHMiPjEuIFJlY2VpdmluZyBpbnRlcnJ1cHRzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29yZS1zdHJ1Y3R1cmUiPjIuIENvcmUgZGF0YSBzdHJ1Y3R1cmVzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjbG9nZ2luZy1zYW1wbGUiPjMuIExvZ2dpbmcgYSBzYW1wbGU8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2dnaW5nLXN0YWNrIj40LiBMb2dnaW5nIHN0YWNrIHRyYWNlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3N5bmNocm9uaXNpbmctYnVmZmVycyI+NS4gU3luY2hyb25pc2luZyB0aGUgQ1BVIGJ1ZmZlcnMgdG8gdGhlIGV2ZW50IGJ1ZmZlcjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbnRyeS1jb29raWVzIj42LiBJZGVudGlmeWluZyBiaW5hcnkgaW1hZ2VzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZmluZGluZy1kZW50cnkiPjcuIEZpbmRpbmcgYSBzYW1wbGUncyBiaW5hcnkgaW1hZ2UgYW5kIG9mZnNldDwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InJlY2VpdmluZy1pbnRlcnJ1cHRzIj48L2E+MS6gUmVjZWl2aW5nIGludGVycnVwdHM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+Ck5hdHVyYWxseSwgaG93IHRoZSBvdmVyZmxvdyBpbnRlcnJ1cHRzIGFyZSByZWNlaXZlZCBpcyBzcGVjaWZpYwp0byB0aGUgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLCB1bmxlc3Mgd2UgYXJlIGluICJ0aW1lciIgbW9kZSwgd2hlcmUgdGhlCmxvZ2dpbmcgcm91dGluZSBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB0aGUgc3RhbmRhcmQga2VybmVsIHRpbWVyCmludGVycnVwdCBoYW5kbGVyLgo8L3A+CiAgICAgICAgICA8cD4KT24gdGhlIGkzODYgYXJjaGl0ZWN0dXJlLCB0aGUgbG9jYWwgQVBJQyBpcyBwcm9ncmFtbWVkIHN1Y2ggdGhhdCB3aGVuIGEKY291bnRlciBvdmVyZmxvd3MgKHRoYXQgaXMsIGl0IHJlY2VpdmVzIGFuIGV2ZW50IHRoYXQgY2F1c2VzIGFuIGludGVnZXIKb3ZlcmZsb3cgb2YgdGhlIHJlZ2lzdGVyIHZhbHVlIHRvIHplcm8pLCBhbiBOTUkgaXMgZ2VuZXJhdGVkLiBUaGlzIGNhbGxzCmludG8gdGhlIGdlbmVyYWwgaGFuZGxlciA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmRvX25taSgpPC9jb2RlPjsgYmVjYXVzZSBPUHJvZmlsZQpoYXMgcmVnaXN0ZXJlZCBpdHNlbGYgYXMgY2FwYWJsZSBvZiBoYW5kbGluZyBOTUkgaW50ZXJydXB0cywgdGhpcyB3aWxsCmNhbGwgaW50byB0aGUgT1Byb2ZpbGUgZHJpdmVyIGNvZGUgaW4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hcmNoL2kzODYvb3Byb2ZpbGU8L2NvZGU+LiBIZXJlLCB0aGUgc2F2ZWQgUEMgdmFsdWUgKHRoZQpDUFUgc2F2ZXMgdGhlIHJlZ2lzdGVyIHNldCBhdCB0aGUgdGltZSBvZiBpbnRlcnJ1cHQgb24gdGhlIHN0YWNrCmF2YWlsYWJsZSBmb3IgaW5zcGVjdGlvbikgaXMgZXh0cmFjdGVkLCBhbmQgdGhlIGNvdW50ZXJzIGFyZSBleGFtaW5lZCB0bwpmaW5kIG91dCB3aGljaCBvbmUgZ2VuZXJhdGVkIHRoZSBpbnRlcnJ1cHQuIEFsc28gZGV0ZXJtaW5lZCBpcyB3aGV0aGVyCnRoZSBzeXN0ZW0gd2FzIGluc2lkZSBrZXJuZWwgb3IgdXNlciBzcGFjZSBhdCB0aGUgdGltZSBvZiB0aGUgaW50ZXJydXB0LgpUaGVzZSB0aHJlZSBwaWVjZXMgb2YgaW5mb3JtYXRpb24gYXJlIHRoZW4gZm9yd2FyZGVkIG9udG8gdGhlIE9Qcm9maWxlCmNvcmUgdmlhIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3Byb2ZpbGVfYWRkX3NhbXBsZSgpPC9jb2RlPi4gRmluYWxseSwgdGhlCmNvdW50ZXIgdmFsdWVzIGFyZSByZXNldCB0byB0aGUgY2hvc2VuIGNvdW50IHZhbHVlLCB0byBlbnN1cmUgYW5vdGhlcgppbnRlcnJ1cHQgaGFwcGVucyBhZnRlciBhbm90aGVyIE4gZXZlbnRzIGhhdmUgb2NjdXJyZWQuIE90aGVyCmFyY2hpdGVjdHVyZXMgYmVoYXZlIGluIGEgc2ltaWxhciBtYW5uZXIuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJjb3JlLXN0cnVjdHVyZSI+PC9hPjIuoENvcmUgZGF0YSBzdHJ1Y3R1cmVzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpCZWZvcmUgY29uc2lkZXJpbmcgd2hhdCBoYXBwZW5zIHdoZW4gd2UgbG9nIGEgc2FtcGxlLCB3ZSBzaGFsbCBkaWdyZXNzCmZvciBhIG1vbWVudCBhbmQgbG9vayBhdCB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgY29sbGVjdGlvbgpzeXN0ZW0uCjwvcD4KICAgICAgICAgIDxwPgpPUHJvZmlsZSBtYWludGFpbnMgYSBzbWFsbCBidWZmZXIgZm9yIHN0b3JpbmcgdGhlIGxvZ2dlZCBzYW1wbGVzIGZvcgplYWNoIENQVSBvbiB0aGUgc3lzdGVtLiBPbmx5IHRoaXMgYnVmZmVyIGlzIGFsdGVyZWQgd2hlbiB3ZSBhY3R1YWxseSBsb2cKYSBzYW1wbGUgKHJlbWVtYmVyLCB3ZSBtYXkgc3RpbGwgYmUgaW4gYW4gTk1JIGNvbnRleHQsIHNvIG5vIGxvY2tpbmcgaXMKcG9zc2libGUpLiBUaGUgYnVmZmVyIGlzIG1hbmFnZWQgYnkgYSB0d28taGFuZGVkIHN5c3RlbTsgdGhlICJoZWFkIgppdGVyYXRvciBkaWN0YXRlcyB3aGVyZSB0aGUgbmV4dCBzYW1wbGUgZGF0YSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZQpidWZmZXIuIE9mIGNvdXJzZSwgb3ZlcmZsb3cgb2YgdGhlIGJ1ZmZlciBpcyBwb3NzaWJsZSwgaW4gd2hpY2ggY2FzZQp0aGUgc2FtcGxlIGlzIGRpc2NhcmRlZC4KPC9wPgogICAgICAgICAgPHA+Ckl0IGlzIGNyaXRpY2FsIHRvIHJlbWVtYmVyIHRoYXQgYXQgdGhpcyBwb2ludCwgdGhlIFBDIHZhbHVlIGlzIGFuCmFic29sdXRlIHZhbHVlLCBhbmQgaXMgdGhlcmVmb3JlIG9ubHkgbWVhbmluZ2Z1bCBpbiB0aGUgY29udGV4dCBvZiB3aGljaAp0YXNrIGl0IHdhcyBsb2dnZWQgYWdhaW5zdC4gVGh1cywgdGhlc2UgcGVyLUNQVSBidWZmZXJzIGFsc28gbWFpbnRhaW4KZGV0YWlscyBvZiB3aGljaCB0YXNrIGVhY2ggbG9nZ2VkIHNhbXBsZSBpcyBmb3IsIGFzIGRlc2NyaWJlZCBpbiB0aGUKbmV4dCBzZWN0aW9uLiBJbiBhZGRpdGlvbiwgd2Ugc3RvcmUgd2hldGhlciB0aGUgc2FtcGxlIHdhcyBpbiBrZXJuZWwKc3BhY2Ugb3IgdXNlciBzcGFjZSAob24gc29tZSBhcmNoaXRlY3R1cmVzIGFuZCBjb25maWd1cmF0aW9ucywgdGhlIGFkZHJlc3MKc3BhY2UgaXMgbm90IHN1Yi1kaXZpZGVkIG5lYXRseSBhdCBhIHNwZWNpZmljIFBDIHZhbHVlLCBzbyB3ZSBtdXN0IHN0b3JlCnRoaXMgaW5mb3JtYXRpb24pLgo8L3A+CiAgICAgICAgICA8cD4KQXMgd2VsbCBhcyB0aGVzZSBzbWFsbCBwZXItQ1BVIGJ1ZmZlcnMsIHdlIGhhdmUgYSBjb25zaWRlcmFibHkgbGFyZ2VyCnNpbmdsZSBidWZmZXIuIFRoaXMgaG9sZHMgdGhlIGRhdGEgdGhhdCBpcyBldmVudHVhbGx5IGNvcGllZCBvdXQgaW50bwp0aGUgT1Byb2ZpbGUgZGFlbW9uLiBPbiBjZXJ0YWluIHN5c3RlbSBldmVudHMsIHRoZSBwZXItQ1BVIGJ1ZmZlcnMgYXJlCnByb2Nlc3NlZCBhbmQgZW50ZXJlZCAoaW4gbXV0YXRlZCBmb3JtKSBpbnRvIHRoZSBtYWluIGJ1ZmZlciwga25vd24gaW4KdGhlIHNvdXJjZSBhcyB0aGUgImV2ZW50IGJ1ZmZlciIuIFRoZSAidGFpbCIgaXRlcmF0b3IgaW5kaWNhdGVzIHRoZQpwb2ludCBmcm9tIHdoaWNoIHRoZSBDUFUgbWF5IGJlIHJlYWQsIHVwIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgImhlYWQiCml0ZXJhdG9yLiBUaGlzIHByb3ZpZGVzIGFuIGVudGlyZWx5IGxvY2stZnJlZSBtZXRob2QgZm9yIGV4dHJhY3RpbmcgZGF0YQpmcm9tIHRoZSBDUFUgYnVmZmVycy4gVGhpcyBwcm9jZXNzIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgbGF0ZXIgaW4gdGhpcyBjaGFwdGVyLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWd1cmUiPgogICAgICAgICAgICA8YSBpZD0iaWQ0NjY5NjYwIj48L2E+CiAgICAgICAgICAgIDxwIGNsYXNzPSJ0aXRsZSI+CiAgICAgICAgICAgICAgPGI+RmlndXJloDMuMS6gVGhlIE9Qcm9maWxlIGJ1ZmZlcnM8L2I+CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iYnVmZmVycy5wbmciIGFsdD0iVGhlIE9Qcm9maWxlIGJ1ZmZlcnMiIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ibG9nZ2luZy1zYW1wbGUiPjwvYT4zLqBMb2dnaW5nIGEgc2FtcGxlPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpBcyBtZW50aW9uZWQsIHRoZSBzYW1wbGUgaXMgbG9nZ2VkIGludG8gdGhlIGJ1ZmZlciBzcGVjaWZpYyB0byB0aGUKY3VycmVudCBDUFUuIFRoZSBDUFUgYnVmZmVyIGlzIGEgc2ltcGxlIGFycmF5IG9mIHBhaXJzIG9mIHVuc2lnbmVkIGxvbmcKdmFsdWVzOyBmb3IgYSBzYW1wbGUsIHRoZXkgaG9sZCB0aGUgUEMgdmFsdWUgYW5kIHRoZSBjb3VudGVyIGZvciB0aGUKc2FtcGxlLiAoVGhlIGNvdW50ZXIgdmFsdWUgaXMgbGF0ZXIgdXNlZCB0byB0cmFuc2xhdGUgYmFjayBpbnRvIHRoZSByZWxldmFudApldmVudCB0eXBlIHRoZSBjb3VudGVyIHdhcyBwcm9ncmFtbWVkIHRvKS4KPC9wPgogICAgICAgICAgPHA+CkluIGFkZGl0aW9uIHRvIGxvZ2dpbmcgdGhlIHNhbXBsZSBpdHNlbGYsIHdlIGFsc28gbG9nIHRhc2sgc3dpdGNoZXMuClRoaXMgaXMgc2ltcGx5IGRvbmUgYnkgc3RvcmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgbGFzdCB0YXNrIHRvIGxvZyBhCnNhbXBsZSBvbiB0aGF0IENQVSBpbiBhIGRhdGEgc3RydWN0dXJlLCBhbmQgd3JpdGluZyBhIHRhc2sgc3dpdGNoIGVudHJ5CmludG8gdGhlIGJ1ZmZlciBpZiB0aGUgbmV3IHZhbHVlIG9mIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Y3VycmVudCgpPC9jb2RlPiBoYXMKY2hhbmdlZC4gTm90ZSB0aGF0IGxhdGVyIHdlIHdpbGwgZGlyZWN0bHkgZGUtcmVmZXJlbmNlIHRoaXMgcG9pbnRlcjsKdGhpcyBpbXBvc2VzIGNlcnRhaW4gcmVzdHJpY3Rpb25zIG9uIHdoZW4gYW5kIGhvdyB0aGUgQ1BVIGJ1ZmZlcnMgbmVlZAp0byBiZSBwcm9jZXNzZWQuCjwvcD4KICAgICAgICAgIDxwPgpGaW5hbGx5LCBhcyBtZW50aW9uZWQsIHdlIGxvZyB3aGV0aGVyIHdlIGhhdmUgY2hhbmdlZCBiZXR3ZWVuIGtlcm5lbCBhbmQKdXNlcnNwYWNlIHVzaW5nIGEgc2ltaWxhciBtZXRob2QuIEJvdGggb2YgdGhlc2UgdmFyaWFibGVzCig8Y29kZSBjbGFzcz0idmFybmFtZSI+bGFzdF90YXNrPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmxhc3RfaXNfa2VybmVsPC9jb2RlPikgYXJlCnJlc2V0IHdoZW4gdGhlIENQVSBidWZmZXIgaXMgcmVhZC4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImxvZ2dpbmctc3RhY2siPjwvYT40LqBMb2dnaW5nIHN0YWNrIHRyYWNlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KT1Byb2ZpbGUgY2FuIGFsc28gcHJvdmlkZSBzdGF0aXN0aWNhbCBzYW1wbGVzIG9mIGNhbGwgY2hhaW5zIChvbiB4ODYpLiBUbwpkbyB0aGlzLCBhdCBzYW1wbGUgdGltZSwgdGhlIGZyYW1lIHBvaW50ZXIgY2hhaW4gaXMgdHJhdmVyc2VkLCByZWNvcmRpbmcKdGhlIHJldHVybiBhZGRyZXNzIGZvciBlYWNoIHN0YWNrIGZyYW1lLiBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHRoZSBjb2RlCndhcyBjb21waWxlZCB3aXRoIGZyYW1lIHBvaW50ZXJzLCBidXQgd2UncmUgY2FyZWZ1bCB0byBhYm9ydCB0aGUKdHJhdmVyc2FsIGlmIHRoZSBmcmFtZSBwb2ludGVyIGFwcGVhcnMgYmFkLiBXZSBzdG9yZSB0aGUgc2V0IG9mIHJldHVybgphZGRyZXNzZXMgc3RyYWlnaHQgaW50byB0aGUgQ1BVIGJ1ZmZlci4gTm90ZSB0aGF0LCBzaW5jZSB0aGlzIHRyYXZlcnNhbAppcyBrZXllZCBvZmYgdGhlIHN0YW5kYXJkIHNhbXBsZSBpbnRlcnJ1cHQsIHRoZSBudW1iZXIgb2YgdGltZXMgYQpmdW5jdGlvbiBhcHBlYXJzIGluIGEgc3RhY2sgdHJhY2UgaXMgbm90IGFuIGluZGljYXRvciBvZiBob3cgbWFueSB0aW1lcwp0aGUgY2FsbCBzaXRlIHdhcyBleGVjdXRlZDogcmF0aGVyLCBpdCdzIHJlbGF0ZWQgdG8gdGhlIG51bWJlciBvZgpzYW1wbGVzIHdlIHRvb2sgd2hlcmUgdGhhdCBjYWxsIHNpdGUgd2FzIGludm9sdmVkLiBUaHVzLCB0aGUgcmVzdWx0cyBmb3IKc3RhY2sgdHJhY2VzIGFyZSBub3QgbmVjZXNzYXJpbHkgcHJvcG9ydGlvbmFsIHRvIHRoZSBjYWxsIGNvdW50czoKdHlwaWNhbCBwcm9ncmFtcyB3aWxsIGhhdmUgbWFueSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm1haW4oKTwvY29kZT4gc2FtcGxlcy4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InN5bmNocm9uaXNpbmctYnVmZmVycyI+PC9hPjUuoFN5bmNocm9uaXNpbmcgdGhlIENQVSBidWZmZXJzIHRvIHRoZSBldmVudCBidWZmZXI8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CkF0IHNvbWUgcG9pbnQsIHdlIGhhdmUgdG8gcHJvY2VzcyB0aGUgZGF0YSBpbiBlYWNoIENQVSBidWZmZXIgYW5kIGVudGVyCml0IGludG8gdGhlIG1haW4gKGV2ZW50KSBidWZmZXIuIFRoZSBmaWxlCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YnVmZmVyX3N5bmMuYzwvY29kZT4gY29udGFpbnMgdGhlIHJlbGV2YW50IGNvZGUuIFdlCnBlcmlvZGljYWxseSAoY3VycmVudGx5IGV2ZXJ5IDxjb2RlIGNsYXNzPSJjb25zdGFudCI+SFo8L2NvZGU+LzQgamlmZmllcykgc3RhcnQKdGhlIHN5bmNocm9uaXNhdGlvbiBwcm9jZXNzLiBJbiBhZGRpdGlvbiwgd2UgcHJvY2VzcyB0aGUgYnVmZmVycyBvbgpjZXJ0YWluIGV2ZW50cywgc3VjaCBhcyBhbiBhcHBsaWNhdGlvbiBjYWxsaW5nCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bXVubWFwKCk8L2NvZGU+LiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+ZXhpdCgpPC9jb2RlPiAtIGJlY2F1c2UgdGhlIENQVSBidWZmZXJzIGNvbnRhaW4gcG9pbnRlcnMKdG8gdGhlIHRhc2sgc3RydWN0dXJlLCBpZiB3ZSBkb24ndCBwcm9jZXNzIGFsbCB0aGUgYnVmZmVycyBiZWZvcmUgdGhlCnRhc2sgaXMgYWN0dWFsbHkgZGVzdHJveWVkIGFuZCB0aGUgdGFzayBzdHJ1Y3R1cmUgZnJlZWQsIHRoZW4gd2UgY291bGQKZW5kIHVwIHRyeWluZyB0byBkZXJlZmVyZW5jZSBhIGJvZ3VzIHBvaW50ZXIgaW4gb25lIG9mIHRoZSBDUFUgYnVmZmVycy4KPC9wPgogICAgICAgICAgPHA+CldlIGFsc28gYWRkIGEgbm90aWZpY2F0aW9uIHdoZW4gYSBrZXJuZWwgbW9kdWxlIGlzIGxvYWRlZDsgdGhpcyBpcyBzbwp0aGF0IHVzZXItc3BhY2UgY2FuIHJlLXJlYWQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcHJvYy9tb2R1bGVzPC9jb2RlPiB0bwpkZXRlcm1pbmUgdGhlIGxvYWQgYWRkcmVzc2VzIG9mIGtlcm5lbCBtb2R1bGUgdGV4dCBzZWN0aW9ucy4gV2l0aG91dAp0aGlzIG5vdGlmaWNhdGlvbiwgc2FtcGxlcyBmb3IgYSBuZXdseS1sb2FkZWQgbW9kdWxlIGNvdWxkIGdldCBsb3N0IG9yCmJlIGF0dHJpYnV0ZWQgdG8gdGhlIHdyb25nIG1vZHVsZS4KPC9wPgogICAgICAgICAgPHA+ClRoZSBzeW5jaHJvbmlzYXRpb24gaXRzZWxmIHdvcmtzIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOiBmaXJzdCwgbXV0dWFsCmV4Y2x1c2lvbiBvbiB0aGUgZXZlbnQgYnVmZmVyIGlzIHRha2VuLiBSZW1lbWJlciwgd2UgZG8gbm90IG5lZWQgdG8gZG8KdGhhdCBmb3IgZWFjaCBDUFUgYnVmZmVyLCBhcyB3ZSBvbmx5IHJlYWQgZnJvbSB0aGUgdGFpbCBpdGVyYXRvciAod2hpbHN0CmludGVycnVwdHMgbWlnaHQgYmUgYXJyaXZpbmcgYXQgdGhlIHNhbWUgYnVmZmVyLCBidXQgdGhleSB3aWxsIHdyaXRlIHRvCnRoZSBwb3NpdGlvbiBvZiB0aGUgaGVhZCBpdGVyYXRvciwgbGVhdmluZyBwcmV2aW91c2x5IHdyaXR0ZW4gZW50cmllcwppbnRhY3QpLiBUaGVuLCB3ZSBwcm9jZXNzIGVhY2ggQ1BVIGJ1ZmZlciBpbiB0dXJuLiBBIENQVSBzd2l0Y2gKbm90aWZpY2F0aW9uIGlzIGFkZGVkIHRvIHRoZSBidWZmZXIgZmlyc3QgKGZvcgo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWNwdTwvY29kZT4gc3VwcG9ydCkuIFRoZW4gdGhlIHByb2Nlc3Npbmcgb2YgdGhlCmFjdHVhbCBkYXRhIHN0YXJ0cy4KPC9wPgogICAgICAgICAgPHA+CkFzIG1lbnRpb25lZCwgdGhlIENQVSBidWZmZXIgY29uc2lzdHMgb2YgdGFzayBzd2l0Y2ggZW50cmllcyBhbmQgdGhlCmFjdHVhbCBzYW1wbGVzLiBXaGVuIHRoZSByb3V0aW5lIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3luY19idWZmZXIoKTwvY29kZT4gc2VlcwphIHRhc2sgc3dpdGNoLCB0aGUgcHJvY2VzcyBJRCBhbmQgcHJvY2VzcyBncm91cCBJRCBhcmUgcmVjb3JkZWQgaW50byB0aGUKZXZlbnQgYnVmZmVyLCBhbG9uZyB3aXRoIGEgZGNvb2tpZSAoc2VlIGJlbG93KSBpZGVudGlmeWluZyB0aGUKYXBwbGljYXRpb24gYmluYXJ5IChlLmcuIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9iYXNoPC9jb2RlPikuIFRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+bW1hcF9zZW08L2NvZGU+IGZvciB0aGUgdGFzayBpcyB0aGVuIHRha2VuLCB0byBhbGxvdyBzYWZlCml0ZXJhdGlvbiBhY3Jvc3MgdGhlIHRhc2tzJyBsaXN0IG9mIG1hcHBlZCBhcmVhcy4gRWFjaCBzYW1wbGUgaXMgdGhlbgpwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCjwvcD4KICAgICAgICAgIDxwPgpBZnRlciBhIGJ1ZmZlciBoYXMgYmVlbiByZWFkLCB0aGUgdGFpbCBpdGVyYXRvciBpcyB1cGRhdGVkIHRvIHJlZmxlY3QKaG93IG11Y2ggb2YgdGhlIGJ1ZmZlciB3YXMgcHJvY2Vzc2VkLiBOb3RlIHRoYXQgd2hlbiB3ZSBkZXRlcm1pbmVkIGhvdwptdWNoIGRhdGEgdGhlcmUgd2FzIHRvIHJlYWQgaW4gdGhlIENQVSBidWZmZXIsIHdlIGFsc28gY2FsbGVkCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Y3B1X2J1ZmZlcl9yZXNldCgpPC9jb2RlPiB0byByZXNldAo8Y29kZSBjbGFzcz0idmFybmFtZSI+bGFzdF90YXNrPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmxhc3RfaXNfa2VybmVsPC9jb2RlPiwgYXMKd2UndmUgYWxyZWFkeSBtZW50aW9uZWQuIER1cmluZyB0aGUgcHJvY2Vzc2luZywgbW9yZSBzYW1wbGVzIG1heSBoYXZlCmJlZW4gYXJyaXZpbmcgaW4gdGhlIENQVSBidWZmZXI7IHRoaXMgaXMgT0sgYmVjYXVzZSB3ZSBhcmUgY2FyZWZ1bCB0bwpvbmx5IHVwZGF0ZSB0aGUgdGFpbCBpdGVyYXRvciB0byBob3cgbXVjaCB3ZSBhY3R1YWxseSByZWFkIC0gb24gdGhlIG5leHQKYnVmZmVyIHN5bmNocm9uaXNhdGlvbiwgd2Ugd2lsbCBzdGFydCBhZ2FpbiBmcm9tIHRoYXQgcG9pbnQuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJkZW50cnktY29va2llcyI+PC9hPjYuoElkZW50aWZ5aW5nIGJpbmFyeSBpbWFnZXM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CkluIG9yZGVyIHRvIHByb2R1Y2UgdXNlZnVsIHByb2ZpbGVzLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gYXNzb2NpYXRlIGEKcGFydGljdWxhciBQQyB2YWx1ZSBzYW1wbGUgd2l0aCBhbiBhY3R1YWwgRUxGIGJpbmFyeSBvbiB0aGUgZGlzay4gVGhpcwpsZWF2ZXMgdXMgd2l0aCB0aGUgcHJvYmxlbSBvZiBob3cgdG8gZXhwb3J0IHRoaXMgaW5mb3JtYXRpb24gdG8KdXNlci1zcGFjZS4gV2UgY3JlYXRlIHVuaXF1ZSBJRHMgdGhhdCBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZGlyZWN0b3J5CmVudHJ5IChkZW50cnkpLCBhbmQgd3JpdGUgdGhvc2UgSURzIGludG8gdGhlIGV2ZW50IGJ1ZmZlci4gTGF0ZXIgb24sCnRoZSB1c2VyLXNwYWNlIGRhZW1vbiBjYW4gY2FsbCB0aGUgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5sb29rdXBfZGNvb2tpZTwvY29kZT4Kc3lzdGVtIGNhbGwsIHdoaWNoIGxvb2tzIHVwIHRoZSBJRCBhbmQgZmlsbHMgaW4gdGhlIGZ1bGwgcGF0aCBvZgp0aGUgYmluYXJ5IGltYWdlIGluIHRoZSBidWZmZXIgdXNlci1zcGFjZSBwYXNzZXMgaW4uIFRoZXNlIElEcyBhcmUKbWFpbnRhaW5lZCBieSB0aGUgY29kZSBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmZzL2Rjb29raWVzLmM8L2NvZGU+OyB0aGUKY2FjaGUgbGFzdHMgZm9yIGFzIGxvbmcgYXMgdGhlIGRhZW1vbiBoYXMgdGhlIGV2ZW50IGJ1ZmZlciBvcGVuLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZmluZGluZy1kZW50cnkiPjwvYT43LqBGaW5kaW5nIGEgc2FtcGxlJ3MgYmluYXJ5IGltYWdlIGFuZCBvZmZzZXQ8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CldlIGhhdmVuJ3QgeWV0IGRlc2NyaWJlZCBob3cgd2UgcHJvY2VzcyB0aGUgYWJzb2x1dGUgUEMgdmFsdWUgaW50bwpzb21ldGhpbmcgdXNhYmxlIGJ5IHRoZSB1c2VyLXNwYWNlIGRhZW1vbi4gV2hlbiB3ZSBmaW5kIGEgc2FtcGxlIGVudGVyZWQKaW50byB0aGUgQ1BVIGJ1ZmZlciwgd2UgdHJhdmVyc2UgdGhlIGxpc3Qgb2YgbWFwcGluZ3MgZm9yIHRoZSB0YXNrCihyZW1lbWJlciwgd2Ugd2lsbCBoYXZlIHNlZW4gYSB0YXNrIHN3aXRjaCBlYXJsaWVyLCBzbyB3ZSBrbm93IHdoaWNoCnRhc2sncyBsaXN0cyB0byBsb29rIGF0KS4gV2hlbiBhIG1hcHBpbmcgaXMgZm91bmQgdGhhdCBjb250YWlucyB0aGUgUEMKdmFsdWUsIHdlIGxvb2sgdXAgdGhlIG1hcHBlZCBmaWxlJ3MgZGVudHJ5IGluIHRoZSBkY29va2llIGNhY2hlLiBUaGlzCmdpdmVzIHRoZSBkY29va2llIElEIHRoYXQgd2lsbCB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWFwcGVkIGZpbGUuIFRoZW4Kd2UgYWx0ZXIgdGhlIGFic29sdXRlIHZhbHVlIHN1Y2ggdGhhdCBpdCBpcyBhbiBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YKdGhlIGZpbGUgYmVpbmcgbWFwcGVkICh0aGUgbWFwcGluZyBuZWVkIG5vdCBzdGFydCBhdCB0aGUgc3RhcnQgb2YgdGhlCmFjdHVhbCBmaWxlLCBzbyB3ZSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBvZmZzZXQgdmFsdWUgb2YgdGhlIG1hcHBpbmcpLiBXZQpzdG9yZSB0aGlzIGRjb29raWUgSUQgaW50byB0aGUgZXZlbnQgYnVmZmVyOyB0aGlzIGlkZW50aWZpZXMgd2hpY2gKYmluYXJ5IHRoZSBzYW1wbGVzIGZvbGxvd2luZyBpdCBhcmUgYWdhaW5zdC4KSW4gdGhpcyBtYW5uZXIsIHdlIGhhdmUgY29udmVydGVkIGEgUEMgdmFsdWUsIHdoaWNoIGhhcyB0cmFuc2l0b3J5Cm1lYW5pbmcgb25seSwgaW50byBhIHN0YXRpYyBvZmZzZXQgdmFsdWUgZm9yIGxhdGVyIHByb2Nlc3NpbmcgYnkgdGhlCmRhZW1vbi4KPC9wPgogICAgICAgICAgPHA+CldlIGFsc28gYXR0ZW1wdCB0byBhdm9pZCB0aGUgcmVsYXRpdmVseSBleHBlbnNpdmUgbG9va3VwIG9mIHRoZSBkZW50cnkKY29va2llIHZhbHVlIGJ5IHN0b3JpbmcgdGhlIGNvb2tpZSB2YWx1ZSBkaXJlY3RseSBpbnRvIHRoZSBkZW50cnkKaXRzZWxmOyB0aGVuIHdlIGNhbiBzaW1wbHkgZGVyaXZlIHRoZSBjb29raWUgdmFsdWUgaW1tZWRpYXRlbHkgd2hlbiB3ZQpmaW5kIHRoZSBjb3JyZWN0IG1hcHBpbmcuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPjxhIGlkPSJzYW1wbGUtZmlsZXMiPjwvYT5DaGFwdGVyoDQuoEdlbmVyYXRpbmcgc2FtcGxlIGZpbGVzPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9jZXNzaW5nLWJ1ZmZlciI+MS4gUHJvY2Vzc2luZyB0aGUgYnVmZmVyPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGFuZGxpbmcta2VybmVsLXNhbXBsZXMiPjEuMS4gSGFuZGxpbmcga2VybmVsIHNhbXBsZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtZ2VuZXJhdGlvbiI+Mi4gTG9jYXRpbmcgYW5kIGNyZWF0aW5nIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLXdyaXRpbmciPjMuIFdyaXRpbmcgZGF0YSB0byBhIHNhbXBsZSBmaWxlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icHJvY2Vzc2luZy1idWZmZXIiPjwvYT4xLqBQcm9jZXNzaW5nIHRoZSBidWZmZXI8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+Ck5vdyB3ZSBjYW4gbW92ZSBvbnRvIHVzZXItc3BhY2UgaW4gb3VyIGRlc2NyaXB0aW9uIG9mIGhvdyByYXcgaW50ZXJydXB0CnNhbXBsZXMgYXJlIHByb2Nlc3NlZCBpbnRvIHVzZWZ1bCBpbmZvcm1hdGlvbi4gQXMgd2UgZGVzY3JpYmVkIGluCnByZXZpb3VzIHNlY3Rpb25zLCB0aGUga2VybmVsIE9Qcm9maWxlIGRyaXZlciBjcmVhdGVzIGEgbGFyZ2UgYnVmZmVyIG9mCnNhbXBsZSBkYXRhIGNvbnNpc3Rpbmcgb2Ygb2Zmc2V0IHZhbHVlcywgaW50ZXJzcGVyc2VkIHdpdGgKbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgaW4gY29udGV4dC4gVGhlc2UgY29udGV4dCBjaGFuZ2VzIGluZGljYXRlIGhvdwpmb2xsb3dpbmcgc2FtcGxlcyBzaG91bGQgYmUgYXR0cmlidXRlZCwgYW5kIGluY2x1ZGUgdGFzayBzd2l0Y2hlcywgQ1BVCmNoYW5nZXMsIGFuZCB3aGljaCBkY29va2llIHRoZSBzYW1wbGUgdmFsdWUgaXMgYWdhaW5zdC4gQnkgcHJvY2Vzc2luZwp0aGlzIGJ1ZmZlciBlbnRyeS1ieS1lbnRyeSwgd2UgY2FuIGRldGVybWluZSB3aGVyZSB0aGUgc2FtcGxlcyBzaG91bGQKYmUgYWNjcmVkaXRlZCB0by4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdoZW4gdXNpbmcgdGhlIAo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPC9jb2RlPi4KPC9wPgogICAgICAgICAgPHA+ClRoZSBmaWxlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGFlbW9uL29wZF90cmFucy5jPC9jb2RlPiBjb250YWlucyB0aGUgYmFzaWMgcm91dGluZQpmb3IgdGhlIGJ1ZmZlciBwcm9jZXNzaW5nLiBUaGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN0cnVjdCB0cmFuc2llbnQ8L2NvZGU+CnN0cnVjdHVyZSBpcyB1c2VkIHRvIGhvbGQgY2hhbmdlcyBpbiBjb250ZXh0LiBJdHMgbWVtYmVycyBhcmUgbW9kaWZpZWQKYXMgd2UgcHJvY2VzcyBlYWNoIGVudHJ5OyBpdCBpcyBwYXNzZWQgaW50byB0aGUgcm91dGluZXMgaW4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3NmaWxlLmM8L2NvZGU+IGZvciBhY3R1YWxseSBsb2dnaW5nIHRoZSBzYW1wbGUKdG8gYSBwYXJ0aWN1bGFyIHNhbXBsZSBmaWxlICh3aGljaCB3aWxsIGJlIGhlbGQgaW4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4kU0VTU0lPTl9ESVIvc2FtcGxlcy9jdXJyZW50PC9jb2RlPikuCjwvcD4KICAgICAgICAgIDxwPgpUaGUgYnVmZmVyIGZvcm1hdCBpcyBkZXNpZ25lZCBmb3IgY29uY2lzZW5lc3MsIGFzIGhpZ2ggc2FtcGxpbmcgcmF0ZXMKY2FuIGVhc2lseSBnZW5lcmF0ZSBhIGxvdCBvZiBkYXRhLiBUaHVzLCBjb250ZXh0IGNoYW5nZXMgYXJlIHByZWZpeGVkCmJ5IGFuIGVzY2FwZSBjb2RlLCBpZGVudGlmaWVkIGJ5IDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+aXNfZXNjYXBlX2NvZGUoKTwvY29kZT4uCklmIGFuIGVzY2FwZSBjb2RlIGlzIGZvdW5kLCB0aGUgbmV4dCBlbnRyeSBpbiB0aGUgYnVmZmVyIGlkZW50aWZpZXMKd2hhdCB0eXBlIG9mIGNvbnRleHQgY2hhbmdlIGlzIGJlaW5nIHJlYWQuIFRoZXNlIGFyZSBoYW5kZWQgb2ZmIHRvCnZhcmlvdXMgaGFuZGxlcnMgKHNlZSB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmhhbmRsZXJzPC9jb2RlPiBhcnJheSksIHdoaWNoCm1vZGlmeSB0aGUgdHJhbnNpZW50IHN0cnVjdHVyZSBhcyBhcHByb3ByaWF0ZS4gSWYgaXQncyBub3QgYW4gZXNjYXBlCmNvZGUsIHRoZW4gaXQgbXVzdCBiZSBhIFBDIG9mZnNldCB2YWx1ZSwgYW5kIHRoZSB2ZXJ5IG5leHQgZW50cnkgd2lsbApiZSB0aGUgbnVtZXJpYyBoYXJkd2FyZSBjb3VudGVyLiBUaGVzZSB2YWx1ZXMgYXJlIHJlYWQgYW5kIHJlY29yZGVkCmluIHRoZSB0cmFuc2llbnQgc3RydWN0dXJlOyB3ZSB0aGVuIGRvIGEgbG9va3VwIHRvIGZpbmQgdGhlIGNvcnJlY3QKc2FtcGxlIGZpbGUsIGFuZCBsb2cgdGhlIHNhbXBsZSwgYXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImhhbmRsaW5nLWtlcm5lbC1zYW1wbGVzIj48L2E+MS4xLqBIYW5kbGluZyBrZXJuZWwgc2FtcGxlczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpTYW1wbGVzIGZyb20ga2VybmVsIGNvZGUgcmVxdWlyZSBhIGxpdHRsZSBzcGVjaWFsIGhhbmRsaW5nLiBCZWNhdXNlCnRoZSBiaW5hcnkgdGV4dCB3aGljaCB0aGUgc2FtcGxlIGlzIGFnYWluc3QgZG9lcyBub3QgY29ycmVzcG9uZCB0bwphbnkgZmlsZSB0aGF0IHRoZSBrZXJuZWwgZGlyZWN0bHkga25vd3MgYWJvdXQsIHRoZSBPUHJvZmlsZSBkcml2ZXIKc3RvcmVzIHRoZSBhYnNvbHV0ZSBQQyB2YWx1ZSBpbiB0aGUgYnVmZmVyLCBpbnN0ZWFkIG9mIHRoZSBmaWxlIG9mZnNldC4KT2YgY291cnNlLCB3ZSBuZWVkIGFuIG9mZnNldCBhZ2FpbnN0IHNvbWUgcGFydGljdWxhciBiaW5hcnkuIFRvIGhhbmRsZQp0aGlzLCB3ZSBrZWVwIGEgbGlzdCBvZiBsb2FkZWQgbW9kdWxlcyBieSBwYXJzaW5nCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Byb2MvbW9kdWxlczwvY29kZT4gYXMgbmVlZGVkLiBXaGVuIGEgbW9kdWxlIGlzIGxvYWRlZCwKYSBub3RpZmljYXRpb24gaXMgcGxhY2VkIGluIHRoZSBPUHJvZmlsZSBidWZmZXIsIGFuZCB0aGlzIHRyaWdnZXJzIGEKcmUtcmVhZC4gV2Ugc3RvcmUgdGhlIG1vZHVsZSBuYW1lLCBhbmQgdGhlIGxvYWRpbmcgYWRkcmVzcyBhbmQgc2l6ZS4KVGhpcyBpcyBhbHNvIGRvbmUgZm9yIHRoZSBtYWluIGtlcm5lbCBpbWFnZSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgpUaGUgYWJzb2x1dGUgUEMgdmFsdWUgaXMgbWF0Y2hlZCBhZ2FpbnN0IGVhY2ggYWRkcmVzcyByYW5nZSwgYW5kCm1vZGlmaWVkIGludG8gYW4gb2Zmc2V0IHdoZW4gdGhlIG1hdGNoaW5nIG1vZHVsZSBpcyBmb3VuZC4gU2VlIAo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfa2VybmVsLmM8L2NvZGU+IGZvciB0aGUgZGV0YWlscy4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ic2FtcGxlLWZpbGUtZ2VuZXJhdGlvbiI+PC9hPjIuoExvY2F0aW5nIGFuZCBjcmVhdGluZyBzYW1wbGUgZmlsZXM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CldlIGhhdmUgYSBzYW1wbGUgdmFsdWUgYW5kIGl0cyBzYXRlbGxpdGUgZGF0YSBzdG9yZWQgaW4gYQo8Y29kZSBjbGFzcz0idmFybmFtZSI+c3RydWN0IHRyYW5zaWVudDwvY29kZT4sIGFuZCB3ZSBtdXN0IGxvY2F0ZSBhbgphY3R1YWwgc2FtcGxlIGZpbGUgdG8gc3RvcmUgdGhlIHNhbXBsZSBpbiwgdXNpbmcgdGhlIGNvbnRleHQKaW5mb3JtYXRpb24gaW4gdGhlIHRyYW5zaWVudCBzdHJ1Y3R1cmUgYXMgYSBrZXkuIFRoZSB0cmFuc2llbnQgZGF0YSB0bwpzYW1wbGUgZmlsZSBsb29rdXAgaXMgaGFuZGxlZCBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfc2ZpbGUuYzwvY29kZT4uIEEgaGFzaCBpcyB0YWtlbiBvZiB0aGUKdHJhbnNpZW50IHZhbHVlcyB0aGF0IGFyZSByZWxldmFudCAoZGVwZW5kaW5nIHVwb24gdGhlIHNldHRpbmcgb2YKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZTwvY29kZT4sIHNvbWUgdmFsdWVzIG1pZ2h0IGJlIGlycmVsZXZhbnQpLCBhbmQgdGhlCmhhc2ggdmFsdWUgaXMgdXNlZCB0byBsb29rdXAgdGhlIGxpc3Qgb2YgY3VycmVudGx5IG9wZW4gc2FtcGxlIGZpbGVzLgpPZiBjb3Vyc2UsIHRoZSBzYW1wbGUgZmlsZSBtaWdodCBub3QgYmUgZm91bmQsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZAp0byBjcmVhdGUgYW5kIG9wZW4gaXQuCjwvcD4KICAgICAgICAgIDxwPgpPUHJvZmlsZSB1c2VzIGEgcmF0aGVyIGNvbXBsZXggc2NoZW1lIGZvciBuYW1pbmcgc2FtcGxlIGZpbGVzLCBpbiBvcmRlcgp0byBtYWtlIHNlbGVjdGluZyByZWxldmFudCBzYW1wbGUgZmlsZXMgZWFzaWVyIGZvciB0aGUgcG9zdC1wcm9maWxpbmcKdXRpbGl0aWVzLiBUaGUgZXhhY3QgZGV0YWlscyBvZiB0aGUgc2NoZW1lIGFyZSBnaXZlbiBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9wcm9maWxlLXRlc3RzL3BwX2ludGVyZmFjZTwvY29kZT4sIGJ1dCBmb3Igbm93IGl0IHdpbGwKc3VmZmljZSB0byByZW1lbWJlciB0aGF0IHRoZSBmaWxlbmFtZSB3aWxsIGluY2x1ZGUgb25seSByZWxldmFudAppbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2V0dGluZ3MsIHRha2VuIGZyb20gdGhlIHRyYW5zaWVudCBkYXRhLiBBCmZ1bGx5LXNwZWNpZmllZCBmaWxlbmFtZSBsb29rcyBzb21ldGhpbmcgbGlrZSA6CjwvcD4KICAgICAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ci92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvY3VycmVudC97cm9vdH0vdXNyL2Jpbi94bW1zL3tkZXB9L3tyb290fS9saWIvdGxzL2xpYmMtMi4zLjIuc28vQ1BVX0NMS19VTkhBTFRFRC4xMDAwMDAuMC4yODA4Mi4yODA4OS4wCjwvY29kZT4KICAgICAgICAgIDxwPgpJdCBzaG91bGQgYmUgY2xlYXIgdGhhdCB0aGlzIGlkZW50aWZpZXMgc3VjaCBpbmZvcm1hdGlvbiBhcyB0aGUKYXBwbGljYXRpb24gYmluYXJ5LCB0aGUgZGVwZW5kZW50IChsaWJyYXJ5KSBiaW5hcnksIHRoZSBoYXJkd2FyZSBldmVudCwKYW5kIHRoZSBwcm9jZXNzIGFuZCB0aHJlYWQgSUQuIFR5cGljYWxseSwgbm90IGFsbCB0aGlzIGluZm9ybWF0aW9uIGlzCm5lZWRlZCwgaW4gd2hpY2ggY2FzZXMgc29tZSB2YWx1ZXMgbWF5IGJlIHJlcGxhY2VkIHdpdGggdGhlIHRva2VuCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YWxsPC9jb2RlPi4KPC9wPgogICAgICAgICAgPHA+ClRoZSBjb2RlIHRoYXQgZ2VuZXJhdGVzIHRoaXMgZmlsZW5hbWUgYW5kIG9wZW5zIHRoZSBmaWxlIGlzIGZvdW5kIGluCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGFlbW9uL29wZF9tYW5nbGluZy5jPC9jb2RlPi4gWW91IG1heSBoYXZlIHJlYWxpc2VkIHRoYXQKYXQgdGhpcyBwb2ludCwgd2UgZG8gbm90IGhhdmUgdGhlIGJpbmFyeSBpbWFnZSBmaWxlIG5hbWVzLCBvbmx5IHRoZQpkY29va2llIHZhbHVlcy4gSW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGEgZmlsZSBuYW1lLCBhIGRjb29raWUgdmFsdWUgaXMKbG9va2VkIHVwIGluIHRoZSBkY29va2llIGNhY2hlLiBUaGlzIGlzIHRvIGJlIGZvdW5kIGluCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGFlbW9uL29wZF9jb29raWUuYzwvY29kZT4uIFNpbmNlIGRjb29raWVzIGFyZSBib3RoCnBlcnNpc3RlbnQgYW5kIHVuaXF1ZSBkdXJpbmcgYSBzYW1wbGluZyBzZXNzaW9uLCB3ZSBjYW4gY2FjaGUgdGhlCnZhbHVlcy4gSWYgdGhlIHZhbHVlIGlzIG5vdCBmb3VuZCBpbiB0aGUgY2FjaGUsIHRoZW4gd2UgYXNrIHRoZSBrZXJuZWwKdG8gZG8gdGhlIGxvb2t1cCBmcm9tIHZhbHVlIHRvIGZpbGUgbmFtZSBmb3IgdXMgYnkgY2FsbGluZwo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmxvb2t1cF9kY29va2llKCk8L2NvZGU+LiBUaGlzIGxvb2tzIHVwIHRoZSB2YWx1ZSBpbiBhCmtlcm5lbC1zaWRlIGNhY2hlIChzZWUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5mcy9kY29va2llcy5jPC9jb2RlPikgYW5kIHJldHVybnMKdGhlIGZ1bGx5LXF1YWxpZmllZCBmaWxlIG5hbWUgdG8gdXNlcnNwYWNlLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ic2FtcGxlLWZpbGUtd3JpdGluZyI+PC9hPjMuoFdyaXRpbmcgZGF0YSB0byBhIHNhbXBsZSBmaWxlPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpFYWNoIHNwZWNpZmljIHNhbXBsZSBmaWxlIGlzIGEgaGFzaGVkIGNvbGxlY3Rpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIFBDIG9mZnNldCBmcm9tIHRoZSB0cmFuc2llbnQgZGF0YSwgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mCnNhbXBsZXMgcmVjb3JkZWQgYWdhaW5zdCB0aGF0IG9mZnNldC4gVGhlIGZpbGVzIGFyZQo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm1tYXAoKTwvY29kZT5lZCBpbnRvIHRoZSBkYWVtb24ncyBtZW1vcnkgc3BhY2UuIFRoZSBjb2RlCnRvIGFjdHVhbGx5IGxvZyB0aGUgd3JpdGUgYWdhaW5zdCB0aGUgc2FtcGxlIGZpbGUgY2FuIGJlIGZvdW5kIGluCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+bGliZGIvPC9jb2RlPi4KPC9wPgogICAgICAgICAgPHA+CkZvciByZWNvcmRpbmcgc3RhY2sgdHJhY2VzLCB3ZSBoYXZlIGEgbW9yZSBjb21wbGljYXRlZCBzYW1wbGUgZmlsZW5hbWUKbWFuZ2xpbmcgc2NoZW1lIHRoYXQgYWxsb3dzIHVzIHRvIGlkZW50aWZ5IGNyb3NzLWJpbmFyeSBjYWxscy4gV2UgdXNlCnRoZSBzYW1lIHNhbXBsZSBmaWxlIGZvcm1hdCwgd2hlcmUgdGhlIGtleSBpcyBhIDY0LWJpdCB2YWx1ZSBjb21wb3NlZApmcm9tIHRoZSBmcm9tLHRvIHBhaXIgb2Ygb2Zmc2V0cy4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im91dHB1dCI+PC9hPkNoYXB0ZXKgNS6gR2VuZXJhdGluZyB1c2VmdWwgb3V0cHV0PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWNpZmljYXRpb24iPjEuIEhhbmRsaW5nIHRoZSBwcm9maWxlIHNwZWNpZmljYXRpb248L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYW1wbGUtZmlsZS1jb2xsYXRpbmciPjIuIENvbGxhdGluZyB0aGUgY2FuZGlkYXRlIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhbXBsZS1maWxlLWNsYXNzaWZ5aW5nIj4yLjEuIENsYXNzaWZ5aW5nIHNhbXBsZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2FtcGxlLWZpbGUtaW52ZXJ0aW5nIj4yLjIuIENyZWF0aW5nIGludmVydGVkIHByb2ZpbGUgbGlzdHM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2VuZXJhdGluZy1wcm9maWxlLWRhdGEiPjMuIEdlbmVyYXRpbmcgcHJvZmlsZSBkYXRhPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjYmZkIj4zLjEuIFByb2Nlc3NpbmcgdGhlIGJpbmFyeSBpbWFnZTwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvY2Vzc2luZy1zYW1wbGUtZmlsZXMiPjMuMi4gUHJvY2Vzc2luZyB0aGUgc2FtcGxlIGZpbGVzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dlbmVyYXRpbmctb3V0cHV0Ij40LiBHZW5lcmF0aW5nIG91dHB1dDwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxwPgpBbGwgb2YgdGhlIHRvb2xzIHVzZWQgdG8gZ2VuZXJhdGUgaHVtYW4tcmVhZGFibGUgb3V0cHV0IGhhdmUgdG8gdGFrZQpyb3VnaGx5IHRoZSBzYW1lIHN0ZXBzIHRvIGNvbGxlY3QgdGhlIGRhdGEgZm9yIHByb2Nlc3NpbmcuIEZpcnN0LCB0aGUKcHJvZmlsZSBzcGVjaWZpY2F0aW9uIGdpdmVuIGJ5IHRoZSB1c2VyIGhhcyB0byBiZSBwYXJzZWQuIE5leHQsIGEgbGlzdApvZiBzYW1wbGUgZmlsZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmljYXRpb24gaGFzIHRvIG9idGFpbmVkLiBVc2luZyB0aGlzCmxpc3QsIHdlIG5lZWQgdG8gbG9jYXRlIHRoZSBiaW5hcnkgZmlsZSBmb3IgZWFjaCBzYW1wbGUgZmlsZSwgYW5kIHRoZW4KdXNlIHRoZW0gdG8gZXh0cmFjdCBtZWFuaW5nZnVsIGRhdGEsIGJlZm9yZSBhIGZpbmFsIGNvbGxhdGlvbiBhbmQKcHJlc2VudGF0aW9uIHRvIHRoZSB1c2VyLgo8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icHJvZmlsZS1zcGVjaWZpY2F0aW9uIj48L2E+MS6gSGFuZGxpbmcgdGhlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbiBwcmVzZW50ZWQgYnkgdGhlIHVzZXIgaXMgcGFyc2VkIGluCnRoZSBmdW5jdGlvbiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnByb2ZpbGVfc3BlYzo6Y3JlYXRlKCk8L2NvZGU+LiBUaGlzCmNyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWNhdGlvbi4gVGhlbiB3ZQp1c2UgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wcm9maWxlX3NwZWM6OmdlbmVyYXRlX2ZpbGVfbGlzdCgpPC9jb2RlPgp0byBzZWFyY2ggZm9yIGFsbCBzYW1wbGUgZmlsZXMgYW5kIG1hdGNoIHRoZW0gYWdhaW5zdCB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfc3BlYzwvY29kZT4uCjwvcD4KICAgICAgICAgIDxwPgpUbyBlbmFibGUgdGhpcyBtYXRjaGluZyBwcm9jZXNzIHRvIHdvcmssIHRoZSBhdHRyaWJ1dGVzIG9mCmVhY2ggc2FtcGxlIGZpbGUgaXMgZW5jb2RlZCBpbiBpdHMgZmlsZW5hbWUuIFRoaXMgaXMgYSBsb3ctdGVjaAphcHByb2FjaCB0byBtYXRjaGluZyBzcGVjaWZpY2F0aW9ucyBhZ2FpbnN0IGNhbmRpZGF0ZSBzYW1wbGUKZmlsZXMsIGJ1dCBpdCB3b3JrcyByZWFzb25hYmx5IHdlbGwuIEEgdHlwaWNhbCBzYW1wbGUgZmlsZQptaWdodCBsb29rIGxpa2UgdGhlc2U6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgovdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQve3Jvb3R9L2Jpbi9scy97ZGVwfS97cm9vdH0vYmluL2xzL3tjZ30ve3Jvb3R9L2Jpbi9scy9DUFVfQ0xLX1VOSEFMVEVELjEwMDAwMC4wLmFsbC5hbGwuYWxsCi92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvY3VycmVudC97cm9vdH0vYmluL2xzL3tkZXB9L3tyb290fS9iaW4vbHMvQ1BVX0NMS19VTkhBTFRFRC4xMDAwMDAuMC5hbGwuYWxsLmFsbAovdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQve3Jvb3R9L2Jpbi9scy97ZGVwfS97cm9vdH0vYmluL2xzL0NQVV9DTEtfVU5IQUxURUQuMTAwMDAwLjAuNzQyMy43NDI0LjAKL3Zhci9saWIvb3Byb2ZpbGUvc2FtcGxlcy9jdXJyZW50L3trZXJufS9yMTI4L3tkZXB9L3trZXJufS9yMTI4L0NQVV9DTEtfVU5IQUxURUQuMTAwMDAwLjAuYWxsLmFsbC5hbGwKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KVGhpcyBsb29rcyB1bm5lY2Vzc2FyaWx5IGNvbXBsZXgsIGJ1dCBpdCdzIGFjdHVhbGx5IGZhaXJseSBzaW1wbGUuIEZpcnN0CndlIGhhdmUgdGhlIHNlc3Npb24gb2YgdGhlIHNhbXBsZSwgYnkgZGVmYXVsdCBsb2NhdGVkIGhlcmUKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzL2N1cnJlbnQ8L2NvZGU+LiBUaGlzIGxvY2F0aW9uCmNhbiBiZSBjaGFuZ2VkIGJ5IHNwZWNpZnlpbmcgdGhlIC0tc2Vzc2lvbi1kaXIgb3B0aW9uIGF0IGNvbW1hbmQtbGluZS4KVGhpcyBzZXNzaW9uIGNvdWxkIGVxdWFsbHkgd2VsbCBiZSBpbnNpZGUgYW4gYXJjaGl2ZSBmcm9tIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj4uCk5leHQgd2UgaGF2ZSBvbmUgb2YgdGhlIHRva2VucyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPntyb290fTwvY29kZT4gb3IKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj57a2Vybn08L2NvZGU+LiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPntyb290fTwvY29kZT4gaW5kaWNhdGVzCnRoYXQgdGhlIGJpbmFyeSBpcyBmb3VuZCBvbiBhIGZpbGUgc3lzdGVtLCBhbmQgd2Ugd2lsbCBlbmNvZGUgaXRzIHBhdGgKaW4gdGhlIG5leHQgc2VjdGlvbiAoZS5nLiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9iaW4vbHM8L2NvZGU+KS4KPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj57a2Vybn08L2NvZGU+IGluZGljYXRlcyBhIGtlcm5lbCBtb2R1bGUgLSBvbiAyLjYga2VybmVscwp0aGUgcGF0aCBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIGZyb20gdGhlIGtlcm5lbCwgc28gd2UgaGF2ZSB0bwpzcGVjaWFsLWNhc2Uga2VybmVsIG1vZHVsZXMgbGlrZSB0aGlzOyB3ZSBlbmNvZGUgbWVyZWx5IHRoZSBuYW1lIG9mIHRoZQptb2R1bGUgYXMgbG9hZGVkLgo8L3A+CiAgICAgICAgICA8cD4KTmV4dCB0aGVyZSBpcyBhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+e2RlcH08L2NvZGU+IHRva2VuLCBpbmRpY2F0aW5nIGFub3RoZXIKdG9rZW4vcGF0aCB3aGljaCBpZGVudGlmaWVzIHRoZSBkZXBlbmRlbnQgYmluYXJ5IGltYWdlLiBUaGlzIGlzIHVzZWQgZXZlbiBmb3IKdGhlICJwcmltYXJ5IiBiaW5hcnkgKGkuZS4gdGhlIG9uZSB0aGF0IHdhcwo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmV4ZWN2ZSgpPC9jb2RlPmQpLCBhcyBpdCBzaW1wbGlmaWVzIHByb2Nlc3NpbmcuIEZpbmFsbHksCmlmIHRoaXMgc2FtcGxlIGZpbGUgaXMgYSBub3JtYWwgZmxhdCBwcm9maWxlLCB0aGUgYWN0dWFsIGZpbGUgaXMgbmV4dCBpbgp0aGUgcGF0aC4gSWYgaXQncyBhIGNhbGwtZ3JhcGggc2FtcGxlIGZpbGUsIHdlIG5lZWQgb25lIGZ1cnRoZXIKc3BlY2lmaWNhdGlvbiwgdG8gYWxsb3cgdXMgdG8gaWRlbnRpZnkgY3Jvc3MtYmluYXJ5IGFyY3MgaW4gdGhlIGNhbGwKZ3JhcGguCjwvcD4KICAgICAgICAgIDxwPgpUaGUgYWN0dWFsIHNhbXBsZSBmaWxlIG5hbWUgaXMgZG90LXNlcGFyYXRlZCwgd2hlcmUgdGhlIGZpZWxkcyBhcmUsIGluCm9yZGVyOiBldmVudCBuYW1lLCBldmVudCBjb3VudCwgdW5pdCBtYXNrLCB0YXNrIGdyb3VwIElELCB0YXNrIElELCBhbmQKQ1BVIG51bWJlci4KPC9wPgogICAgICAgICAgPHA+ClRoaXMgc2FtcGxlIGZpbGUgY2FuIGJlIHJlbGlhYmx5IHBhcnNlZCAod2l0aAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnBhcnNlX2ZpbGVuYW1lKCk8L2NvZGU+KSBpbnRvIGEKPGNvZGUgY2xhc3M9InZhcm5hbWUiPmZpbGVuYW1lX3NwZWM8L2NvZGU+LiBGaW5hbGx5LCB3ZSBjYW4gY2hlY2sgd2hldGhlciB0bwppbmNsdWRlIHRoZSBzYW1wbGUgZmlsZSBpbiB0aGUgZmluYWwgcmVzdWx0cyBieSBjb21wYXJpbmcgdGhpcwo8Y29kZSBjbGFzcz0idmFybmFtZSI+ZmlsZW5hbWVfc3BlYzwvY29kZT4gYWdhaW5zdCB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfc3BlYzwvY29kZT4gdGhlIHVzZXIgc3BlY2lmaWVkIChmb3IgdGhlIGludGVyZXN0ZWQsCnNlZSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnZhbGlkX2NhbmRpZGF0ZSgpPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wcm9maWxlX3NwZWM6Om1hdGNoPC9jb2RlPikuIFRoZW4gY29tZXMgdGhlIHJlYWxseQpjb21wbGljYXRlZCBiaXQuLi4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InNhbXBsZS1maWxlLWNvbGxhdGluZyI+PC9hPjIuoENvbGxhdGluZyB0aGUgY2FuZGlkYXRlIHNhbXBsZSBmaWxlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGEgZHVwbGljYXRlLWZyZWUgbGlzdCBvZiBzYW1wbGUgZmlsZXMgd2UgbmVlZAp0byBwcm9jZXNzLiBCdXQgZmlyc3Qgd2UgbmVlZCB0byBkbyBzb21lIGZ1cnRoZXIgYXJyYW5nZW1lbnQ6IHdlCm5lZWQgdG8gY2xhc3NpZnkgZWFjaCBzYW1wbGUgZmlsZSwgYW5kIHdlIG1heSBhbHNvIG5lZWQgdG8gImludmVydCIKdGhlIHByb2ZpbGVzLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJzYW1wbGUtZmlsZS1jbGFzc2lmeWluZyI+PC9hPjIuMS6gQ2xhc3NpZnlpbmcgc2FtcGxlIGZpbGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ckl0J3MgcG9zc2libGUgZm9yIHV0aWxpdGllcyBsaWtlIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiB0byBzaG93IApkYXRhIGluIGNvbHVtbmFyIGZvcm1hdDogZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IHdhbnQgdG8gc2hvdyB0aGUgcmVzdWx0cwpvZiB0d28gdGhyZWFkcyB3aXRoaW4gYSBwcm9jZXNzIHNpZGUtYnktc2lkZS4gVG8gZG8gdGhpcywgd2UgbmVlZAp0byBjbGFzc2lmeSBlYWNoIHNhbXBsZSBmaWxlIGludG8gY2xhc3NlcyAtIHRoZSBjbGFzc2VzIGNvcnJlc3BvbmQKd2l0aCBlYWNoIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBjb2x1bW4uIFRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMKdGhpcyBpcyA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmFycmFuZ2VfcHJvZmlsZXMoKTwvY29kZT4uIEVhY2ggc2FtcGxlIGZpbGUKaXMgYWRkZWQgdG8gYSBwYXJ0aWN1bGFyIGNsYXNzLiBJZiB0aGUgc2FtcGxlIGZpbGUgaXMgdGhlIGZpcnN0IGluCml0cyBjbGFzcywgYSB0ZW1wbGF0ZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgc2FtcGxlIGZpbGUuIEVhY2ggdGVtcGxhdGUKZGVzY3JpYmVzIGEgcGFydGljdWxhciBjbGFzcyAodGh1cywgaW4gb3VyIGV4YW1wbGUgYWJvdmUsIGVhY2ggdGVtcGxhdGUKd2lsbCBoYXZlIGEgZGlmZmVyZW50IHRocmVhZCBJRCwgYW5kIHRoaXMgdW5pcXVlbHkgaWRlbnRpZmllcyBlYWNoCmNsYXNzKS4KPC9wPgogICAgICAgICAgICA8cD4KRWFjaCBjbGFzcyBoYXMgYSBsaXN0IG9mICJwcm9maWxlIHNldHMiIG1hdGNoaW5nIHRoYXQgY2xhc3MncyB0ZW1wbGF0ZS4KQSBwcm9maWxlIHNldCBpcyBlaXRoZXIgYSBwcm9maWxlIG9mIHRoZSBwcmltYXJ5IGJpbmFyeSBpbWFnZSwgb3IgYW55IG9mCml0cyBkZXBlbmRlbnQgaW1hZ2VzLiBBZnRlciBhbGwgc2FtcGxlIGZpbGVzIGhhdmUgYmVlbiBsaXN0ZWQgaW4gb25lIG9mCnRoZSBwcm9maWxlIHNldHMgYmVsb25naW5nIHRvIHRoZSBjbGFzc2VzLCB3ZSBoYXZlIHRvIG5hbWUgZWFjaCBjbGFzcyBhbmQKcGVyZm9ybSBlcnJvci1jaGVja2luZy4gVGhpcyBpcyBkb25lIGJ5Cjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+aWRlbnRpZnlfY2xhc3NlcygpPC9jb2RlPjsgZWFjaCBjbGFzcyBpcyBjaGVja2VkIHRvIGVuc3VyZQp0aGF0IGl0cyAiYXhpcyIgaXMgdGhlIHNhbWUgYXMgYWxsIHRoZSBvdGhlcnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UKPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IGNhbid0IHByb2R1Y2UgcmVzdWx0cyBpbiAzRCBmb3JtYXQ6IHdlIGNhbgpvbmx5IGRpZmZlciBpbiBvbmUgYXNwZWN0LCBzdWNoIGFzIHRocmVhZCBJRCBvciBldmVudCBuYW1lLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InNhbXBsZS1maWxlLWludmVydGluZyI+PC9hPjIuMi6gQ3JlYXRpbmcgaW52ZXJ0ZWQgcHJvZmlsZSBsaXN0czwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpSZW1lbWJlciB0aGF0IGlmIHdlJ3JlIHVzaW5nIGNlcnRhaW4gcHJvZmlsZSBzZXBhcmF0aW9uIG9wdGlvbnMsIHN1Y2ggYXMKIi0tc2VwYXJhdGU9bGliIiwgYSBzaW5nbGUgYmluYXJ5IGNvdWxkIGJlIGEgZGVwZW5kZW50IGltYWdlIHRvIG1hbnkKZGlmZmVyZW50IGJpbmFyaWVzLiBGb3IgZXhhbXBsZSwgdGhlIEMgbGlicmFyeSBpbWFnZSB3b3VsZCBiZSBhCmRlcGVuZGVudCBpbWFnZSBmb3IgbW9zdCBwcm9ncmFtcyB0aGF0IGhhdmUgYmVlbiBwcm9maWxlZC4gQXMgaXQKaGFwcGVucywgdGhpcyBjYW4gY2F1c2Ugc2V2ZXJlIHBlcmZvcm1hbmNlIHByb2JsZW1zOiB3aXRob3V0IHNvbWUKcmUtYXJyYW5nZW1lbnQsIHRoZXNlIGRlcGVuZGVudCBiaW5hcnkgaW1hZ2VzIHdvdWxkIGJlIG9wZW5lZCBlYWNoCnRpbWUgd2UgbmVlZCB0byBwcm9jZXNzIHNhbXBsZSBmaWxlcyBmb3IgZWFjaCBwcm9ncmFtLgo8L3A+CiAgICAgICAgICAgIDxwPgpUaGUgc29sdXRpb24gaXMgdG8gImludmVydCIgdGhlIHByb2ZpbGVzIHZpYQo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmludmVydF9wcm9maWxlcygpPC9jb2RlPi4gV2UgY3JlYXRlIGEgbmV3IGRhdGEgc3RydWN0dXJlCndoZXJlIHRoZSBkZXBlbmRlbnQgYmluYXJ5IGlzIGZpcnN0LCBhbmQgdGhlIHByaW1hcnkgYmluYXJ5IGltYWdlcyB1c2luZwp0aGF0IGRlcGVuZGVudCBiaW5hcnkgYXJlIGxpc3RlZCBhcyBzdWItaW1hZ2VzLiBUaGlzIGhlbHBzIG91cgpwZXJmb3JtYW5jZSBwcm9ibGVtLCBhcyBub3cgd2Ugb25seSBuZWVkIHRvIG9wZW4gZWFjaCBkZXBlbmRlbnQgaW1hZ2UKb25jZSwgd2hlbiB3ZSBwcm9jZXNzIHRoZSBsaXN0IG9mIGludmVydGVkIHByb2ZpbGVzLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJnZW5lcmF0aW5nLXByb2ZpbGUtZGF0YSI+PC9hPjMuoEdlbmVyYXRpbmcgcHJvZmlsZSBkYXRhPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGluZ3MgZG9uJ3QgZ2V0IGFueSBzaW1wbGVyIGF0IHRoaXMgcG9pbnQsIHVuZm9ydHVuYXRlbHkuIEF0IHRoaXMgcG9pbnQKd2UndmUgY29sbGVjdGVkIGFuZCBjbGFzc2lmaWVkIHRoZSBzYW1wbGUgZmlsZXMgaW50byB0aGUgc2V0IG9mIGludmVydGVkCnByb2ZpbGVzLCBhcyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uIE5vdyB3ZSBuZWVkIHRvIHByb2Nlc3MKZWFjaCBpbnZlcnRlZCBwcm9maWxlIGFuZCBtYWtlIHNvbWV0aGluZyBvZiB0aGUgZGF0YS4gVGhlIGVudHJ5IHBvaW50CmZvciB0aGlzIGlzIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+cG9wdWxhdGVfZm9yX2ltYWdlKCk8L2NvZGU+Lgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJiZmQiPjwvYT4zLjEuoFByb2Nlc3NpbmcgdGhlIGJpbmFyeSBpbWFnZTwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgZmlyc3QgdGhpbmcgd2UgZG8gd2l0aCBhbiBpbnZlcnRlZCBwcm9maWxlIGlzIGF0dGVtcHQgdG8gb3BlbiB0aGUKYmluYXJ5IGltYWdlIChyZW1lbWJlciBlYWNoIGludmVydGVkIHByb2ZpbGUgc2V0IGlzIG9ubHkgZm9yIG9uZSBiaW5hcnkKaW1hZ2UsIGJ1dCBtYXkgaGF2ZSBtYW55IHNhbXBsZSBmaWxlcyB0byBwcm9jZXNzKS4gVGhlCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5vcF9iZmQ8L2NvZGU+IGNsYXNzIHByb3ZpZGVzIGFuIGFic3RyYWN0ZWQgaW50ZXJmYWNlIHRvCnRoaXM7IGludGVybmFsbHkgaXQgdXNlcyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmxpYmJmZDwvY29kZT4uIFRoZSBtYWluIHB1cnBvc2UKb2YgdGhpcyBjbGFzcyBpcyB0byBwcm9jZXNzIHRoZSBzeW1ib2xzIGZvciB0aGUgYmluYXJ5IGltYWdlOyB0aGlzIGlzCmFsc28gd2hlcmUgc3ltYm9sIGZpbHRlcmluZyBoYXBwZW5zLiBUaGlzIGlzIGFjdHVhbGx5IHF1aXRlIHRyaWNreSwgYnV0CnNob3VsZCBiZSBjbGVhciBmcm9tIHRoZSBzb3VyY2UuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0icHJvY2Vzc2luZy1zYW1wbGUtZmlsZXMiPjwvYT4zLjIuoFByb2Nlc3NpbmcgdGhlIHNhbXBsZSBmaWxlczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgY2xhc3MgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfY29udGFpbmVyPC9jb2RlPiBpcyBhIGhvbGQtYWxsIHRoYXQKY29udGFpbnMgYWxsIHRoZSBwcm9jZXNzZWQgcmVzdWx0cy4gSXQgaXMgYSBjb250YWluZXIgb2YKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfdDwvY29kZT4gb2JqZWN0cy4gVGhlCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YWRkX3NhbXBsZV9maWxlcygpPC9jb2RlPiBtZXRob2QgdXNlcwo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmxpYmRiPC9jb2RlPiB0byBvcGVuIHRoZSBnaXZlbiBzYW1wbGUgZmlsZSBhbmQgYWRkIHRoZQprZXkvdmFsdWUgdHlwZXMgdG8gdGhlIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5wcm9maWxlX3Q8L2NvZGU+LiBPbmNlIHRoaXMgaGFzIGJlZW4KZG9uZSwgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wcm9maWxlX2NvbnRhaW5lcjo6YWRkKCk8L2NvZGU+IGlzIHBhc3NlZCB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfdDwvY29kZT4gcGx1cyB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPm9wX2JmZDwvY29kZT4gZm9yCnByb2Nlc3NpbmcuCjwvcD4KICAgICAgICAgICAgPHA+Cjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+cHJvZmlsZV9jb250YWluZXI6OmFkZCgpPC9jb2RlPiB3YWxrcyB0aHJvdWdoIHRoZSBzeW1ib2xzCmNvbGxlY3RlZCBpbiB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPm9wX2JmZDwvY29kZT4uCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3BfYmZkOjpnZXRfc3ltYm9sX3JhbmdlKCk8L2NvZGU+IGdpdmVzIHVzIHRoZSBzdGFydCBhbmQKZW5kIG9mIHRoZSBzeW1ib2wgYXMgYW4gb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBiaW5hcnkgaW1hZ2UsCnRoZW4gd2UgaW50ZXJyb2dhdGUgdGhlIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5wcm9maWxlX3Q8L2NvZGU+IGZvciB0aGUgcmVsZXZhbnQgc2FtcGxlcwpmb3IgdGhhdCBvZmZzZXQgcmFuZ2UuIFdlIGNyZWF0ZSBhIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zeW1ib2xfZW50cnk8L2NvZGU+Cm9iamVjdCBmb3IgdGhpcyBzeW1ib2wgYW5kIGZpbGwgaXQgaW4uIElmIG5lZWRlZCwgaGVyZSB3ZSBhbHNvIGNvbGxlY3QKZGVidWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPm9wX2JmZDwvY29kZT4sIGFuZCBwb3NzaWJseQpyZWNvcmQgdGhlIGRldGFpbGVkIHNhbXBsZSBpbmZvcm1hdGlvbiAoYXMgdXNlZCBieSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydAotZDwvc3Ryb25nPjwvc3Bhbj4gYW5kIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+KS4KRmluYWxseSB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN5bWJvbF9lbnRyeTwvY29kZT4gaXMgYWRkZWQgdG8KYSBwcml2YXRlIGNvbnRhaW5lciBvZiA8Y29kZSBjbGFzcz0idmFybmFtZSI+cHJvZmlsZV9jb250YWluZXI8L2NvZGU+IC0gdGhpcwo8Y29kZSBjbGFzcz0idmFybmFtZSI+c3ltYm9sX2NvbnRhaW5lcjwvY29kZT4gaG9sZHMgYWxsIHN1Y2ggcHJvY2Vzc2VkIHN5bWJvbHMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImdlbmVyYXRpbmctb3V0cHV0Ij48L2E+NC6gR2VuZXJhdGluZyBvdXRwdXQ8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CkFmdGVyIHRoZSBwcm9jZXNzaW5nIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwgd2UndmUgbm93IGdvdApmdWxsIGRldGFpbHMgb2Ygd2hhdCB3ZSBuZWVkIHRvIG91dHB1dCBzdG9yZWQgaW4gdGhlCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5wcm9maWxlX2NvbnRhaW5lcjwvY29kZT4gb24gYSBzeW1ib2wtYnktc3ltYm9sIGJhc2lzLiBUbwpwcm9kdWNlIG91dHB1dCwgd2UgbmVlZCB0byByZXBsYXkgdGhhdCBkYXRhIGFuZCBmb3JtYXQgaXQgc3VpdGFibHkuCjwvcD4KICAgICAgICAgIDxwPgo8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gZmlyc3QgYXNrcyB0aGUKPGNvZGUgY2xhc3M9InZhcm5hbWUiPnByb2ZpbGVfY29udGFpbmVyPC9jb2RlPiBmb3IgYQo8Y29kZSBjbGFzcz0idmFybmFtZSI+c3ltYm9sX2NvbGxlY3Rpb248L2NvZGU+ICh0aGlzIGlzIGFsc28gd2hlcmUgdGhyZXNob2xkaW5nCmhhcHBlbnMpLgpUaGlzIGlzIHNvcnRlZCwgdGhlbiBhCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5vcHJlcG9ydF9mb3JtYXR0ZXI8L2NvZGU+IGlzIGluaXRpYWxpc2VkLgpUaGlzIG9iamVjdCBpbml0aWFsaXNlcyBhIHNldCBvZiBmaWVsZCBmb3JtYXR0ZXJzIGFzIHJlcXVlc3RlZC4gVGhlbgo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wcmVwb3J0X2Zvcm1hdHRlcjo6b3V0cHV0KCk8L2NvZGU+IGlzIGNhbGxlZC4gVGhpcwppdGVyYXRlcyB0aHJvdWdoIHRoZSAoc29ydGVkKSA8Y29kZSBjbGFzcz0idmFybmFtZSI+c3ltYm9sX2NvbGxlY3Rpb248L2NvZGU+Owpmb3IgZWFjaCBlbnRyeSwgdGhlIHNlbGVjdGVkIGZpZWxkcyAoYXMgc2V0IGJ5IHRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+Zm9ybWF0X2ZsYWdzPC9jb2RlPiBvcHRpb25zKSBhcmUgb3V0cHV0IGJ5IGNhbGxpbmcgdGhlCmZpZWxkIGZvcm1hdHRlcnMsIHdpdGggdGhlIDxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zeW1ib2xfZW50cnk8L2NvZGU+IHBhc3NlZCBpbi4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4dCI+PC9hPkNoYXB0ZXKgNi6gRXh0ZW5kZWQgRmVhdHVyZSBJbnRlcmZhY2U8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dC1pbnRybyI+MS4gSW50cm9kdWN0aW9uPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0LW5hbWUtYW5kLWhhbmRsZXJzIj4yLiBGZWF0dXJlIE5hbWUgYW5kIEhhbmRsZXJzPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0LWVuYWJsZSI+My4gRW5hYmxpbmcgRmVhdHVyZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtdHlwZXMtb2YtaGFuZGxlcnMiPjQuIFR5cGUgb2YgSGFuZGxlcnM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHRfaW5pdCI+NC4xLiBleHRfaW5pdCBIYW5kbGVyPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHRfcHJpbnRfc3RhdHMiPjQuMi4gZXh0X3ByaW50X3N0YXRzIEhhbmRsZXI8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V4dF9zZmlsZV9oYW5kbGVycyI+NC4zLiBleHRfc2ZpbGUgSGFuZGxlcjwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNleHQtaW1wbGVtZW50YXRpb24iPjUuIEV4dGVuZGVkIEZlYXR1cmUgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZXh0LWlicyI+NS4xLiBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKTwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgPC9kbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJleHQtaW50cm8iPjwvYT4xLqBJbnRyb2R1Y3Rpb248L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoZSBFeHRlbmRlZCBGZWF0dXJlIEludGVyZmFjZSBpcyBhIHN0YW5kYXJkIGNhbGxiYWNrIGludGVyZmFjZSAKZGVzaWduZWQgdG8gYWxsb3cgZXh0ZW5zaW9uIHRvIHRoZSBPUHJvZmlsZSBkYWVtb24ncyBzYW1wbGUgcHJvY2Vzc2luZy4gCkVhY2ggZmVhdHVyZSBkZWZpbmVzIGEgc2V0IG9mIGNhbGxiYWNrIGhhbmRsZXJzIHdoaWNoIGNhbiBiZSBlbmFibGVkIG9yIApkaXNhYmxlZCB0aHJvdWdoIHRoZSBPUHJvZmlsZSBkYWVtb24ncyBjb21tYW5kLWxpbmUgb3B0aW9uLgpUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljCmZlYXR1cmVzIG9yIGZlYXR1cmVzIG5vdCBjb21tb25seSB1c2VkIGJ5IGdlbmVyYWwgT1Byb2ZpbGUgdXNlcnMuIAo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZXh0LW5hbWUtYW5kLWhhbmRsZXJzIj48L2E+Mi6gRmVhdHVyZSBOYW1lIGFuZCBIYW5kbGVyczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KRWFjaCBleHRlbmRlZCBmZWF0dXJlIGhhcyBhbiBlbnRyeSBpbiB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmV4dF9mZWF0dXJlX3RhYmxlPC9jb2RlPgppbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9wZF9leHRlbmRlZC5jcHA8L2NvZGU+LiBFYWNoIGVudHJ5IGNvbnRhaW5zIGEgZmVhdHVyZSBuYW1lLAphbmQgYSBjb3JyZXNwb25kaW5nIHNldCBvZiBoYW5kbGVycy4gRmVhdHVyZSBuYW1lIGlzIGEgdW5pcXVlIHN0cmluZywgd2hpY2ggaXMKdXNlZCB0byBpZGVudGlmeSBhIGZlYXR1cmUgaW4gdGhlIHRhYmxlLiBFYWNoIGZlYXR1cmUgcHJvdmlkZXMgYSBzZXQKb2YgaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYnkgdGhlIE9Qcm9maWxlIGRhZW1vbiBmcm9tIHByZS1kZXRlcm1pbmVkCmxvY2F0aW9ucyB0byBwZXJmb3JtIGNlcnRhaW4gdGFza3MuIEF0IHJ1bnRpbWUsIHRoZSBPUHJvZmlsZSBkYWVtb24gY2FsbHMgYSBmZWF0dXJlCmhhbmRsZXIgd3JhcHBlciBmcm9tIG9uZSBvZiB0aGUgcHJlZGV0ZXJtaW5lZCBsb2NhdGlvbnMgdG8gY2hlY2sgd2hldGhlcgphbiBleHRlbmRlZCBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuZCB3aGV0aGVyIGEgcGFydGljdWxhciBoYW5kbGVyIGV4aXN0cy4KT25seSB0aGUgaGFuZGxlcnMgb2YgdGhlIGVuYWJsZWQgZmVhdHVyZSB3aWxsIGJlIGV4ZWN1dGVkLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZXh0LWVuYWJsZSI+PC9hPjMuoEVuYWJsaW5nIEZlYXR1cmVzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpFYWNoIGZlYXR1cmUgaXMgZW5hYmxlZCB1c2luZyB0aGUgT1Byb2ZpbGUgZGFlbW9uIChvcHJvZmlsZWQpIGNvbW1hbmQtbGluZQpvcHRpb24gIi0tZXh0LWZlYXR1cmU9Jmx0O2V4dGVuZGVkLWZlYXR1cmUtbmFtZSZndDs6W2FyZ3NdIi4gVGhlCiJleHRlbmRlZC1mZWF0dXJlLW5hbWUiIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBmZWF0dXJlIHRvIGJlIGVuYWJsZWQuClRoZSBvcHRpb25hbCAiYXJncyIgaXMgcGFzc2VkIGludG8gdGhlIGZlYXR1cmUtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gaGFuZGxlcgooPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5leHRfaW5pdDwvY29kZT4pLiBDdXJyZW50bHksIG9ubHkgb25lIGV4dGVuZGVkIGZlYXR1cmUgY2FuIGJlCmVuYWJsZWQgYXQgYSB0aW1lLgo8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iZXh0LXR5cGVzLW9mLWhhbmRsZXJzIj48L2E+NC6gVHlwZSBvZiBIYW5kbGVyczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KRWFjaCBmZWF0dXJlIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgaXRzIG93biBzZXQgb2YgaGFuZGxlcnMuClR5cGVzIG9mIGhhbmRsZXIgYXJlOgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJleHRfaW5pdCI+PC9hPjQuMS6gZXh0X2luaXQgSGFuZGxlcjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgoiZXh0X2luaXQiIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gb2YgYW4gZXh0ZW5kZWQgZmVhdHVyZS4gSXQgdGFrZXMKImFyZ3MiIHBhcmFtZXRlciB3aGljaCBpcyBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgIm9wcm9maWxlZCAtLWV4dC1mZWF0dXJlPSZsdDsKZXh0ZW5kZWQtZmVhdHVyZS1uYW1lJmd0OzpbYXJnc10iLiBUaGlzIGhhbmRsZXIgaXMgZXhlY3V0ZWQgaW4gdGhlIGZ1bmN0aW9uCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3BkX29wdGlvbnMoKTwvY29kZT4gaW4gdGhlIGZpbGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3Byb2ZpbGVkLmMKPC9jb2RlPi4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgICAgPHA+ClRoZSBleHRfaW5pdCBoYW5kbGVyIGlzIHJlcXVpcmVkIGZvciBhbGwgZmVhdHVyZXMuCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4dF9wcmludF9zdGF0cyI+PC9hPjQuMi6gZXh0X3ByaW50X3N0YXRzIEhhbmRsZXI8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KImV4dF9wcmludF9zdGF0cyIgaGFuZGxlcyB0aGUgZXh0ZW5kZWQgZmVhdHVyZSBzdGF0aXN0aWNzIHJlcG9ydC4gSXQgYWRkcwphIG5ldyBzZWN0aW9uIGluIHRoZSBPUHJvZmlsZSBkYWVtb24gc3RhdGlzdGljcyByZXBvcnQsIHdoaWNoIGlzIG5vcm1hbGx5Cm91dHB1dGVkIHRvIHRoZSBmaWxlCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Zhci9saWIvb3Byb2ZpbGUvc2FtcGxlcy9vcHJvZmlsZWQubG9nPC9jb2RlPi4KVGhpcyBoYW5kbGVyIGlzIGV4ZWN1dGVkIGluIHRoZSBmdW5jdGlvbiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wZF9wcmludF9zdGF0cygpPC9jb2RlPgppbiB0aGUgZmlsZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRhZW1vbi9vcGRfc3RhdHMuYzwvY29kZT4uCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZXh0X3NmaWxlX2hhbmRsZXJzIj48L2E+NC4zLqBleHRfc2ZpbGUgSGFuZGxlcjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgoiZXh0X3NmaWxlIiBjb250YWlucyBhIHNldCBvZiBoYW5kbGVycyByZWxhdGVkIHRvIG9wZXJhdGlvbnMgb24gdGhlIGV4dGVuZGVkCnNhbXBsZSBmaWxlcyAoc2FtcGxlIGZpbGVzIGZvciBldmVudHMgcmVsYXRlZCB0byBleHRlbmRlZCBmZWF0dXJlKS4KVGhlc2Ugb3BlcmF0aW9ucyBpbmNsdWRlIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Y3JlYXRlX3NmaWxlKCk8L2NvZGU+LAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnNmaWxlX2R1cCgpPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5jbG9zZV9zZmlsZSgpPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zeW5jX3NmaWxlKCk8L2NvZGU+LCBhbmQgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nZXRfZmlsZSgpPC9jb2RlPgphcyBkZWZpbmVkIGluIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGFlbW9uL29wZF9zZmlsZS5jPC9jb2RlPi4KQW4gYWRkaXRpb25hbCBmaWVsZCwgPGNvZGUgY2xhc3M9InZhcm5hbWUiPm9kYl90ICogZXh0X2ZpbGU8L2NvZGU+LCBpcyBhZGRlZCB0byB0aGUgCjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zdHJ1Y3Qgc2ZpbGU8L2NvZGU+IGZvciBzdG9yaW5nIGV4dGVuZGVkIHNhbXBsZSBmaWxlcwppbmZvcm1hdGlvbi4gCgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJleHQtaW1wbGVtZW50YXRpb24iPjwvYT41LqBFeHRlbmRlZCBGZWF0dXJlIFJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJleHQtaWJzIj48L2E+NS4xLqBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKTwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpBbiBleGFtcGxlIG9mIGV4dGVuZGVkIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gY2FuIGJlIHNlZW4gYnkKZXhhbWluaW5nIHRoZSBBTUQgSW5zdHJ1Y3Rpb24tQmFzZWQgU2FtcGxpbmcgc3VwcG9ydC4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Imlicy1pbml0Ij48L2E+NS4xLjEuoElCUyBJbml0aWFsaXphdGlvbjwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+Ckluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpIGlzIGEgbmV3IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IHRlY2huaXF1ZQphdmFpbGFibGUgb24gQU1EIEZhbWlseSAxMGggcHJvY2Vzc29ycy4gRW5hYmxpbmcgSUJTIHByb2ZpbGluZyBpcyBkb25lIHNpbXBseQpieSBzcGVjaWZ5aW5nIElCUyBwZXJmb3JtYW5jZSBldmVudHMgdGhyb3VnaCB0aGUgIi0tZXZlbnQ9IiBvcHRpb25zLgo8L3A+CiAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+Cm9wY29udHJvbCAtLWV2ZW50PUlCU19GRVRDSF9YWFg6Jmx0O2NvdW50Jmd0OzombHQ7dW0mZ3Q7OiZsdDtrZXJuZWwmZ3Q7OiZsdDt1c2VyJmd0OwpvcGNvbnRyb2wgLS1ldmVudD1JQlNfT1BfWFhYOiZsdDtjb3VudCZndDs6Jmx0O3VtJmd0OzombHQ7a2VybmVsJmd0OzombHQ7dXNlciZndDsKCk5vdGU6ICogQ291bnQgYW5kIHVuaXRtYXNrIGZvciBhbGwgSUJTIGZldGNoIGV2ZW50cyBtdXN0IGJlIHRoZSBzYW1lLAoJYXMgZG8gdGhvc2UgZm9yIElCUyBvcC4KPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHA+CklCUyBwZXJmb3JtYW5jZSBldmVudHMgYXJlIGxpc3RlZCBpbiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm9wY29udHJvbCAtLWxpc3QtZXZlbnRzPC9jb2RlPi4KV2hlbiB1c2VycyBzcGVjaWZ5IHRoZXNlIGV2ZW50cywgb3Bjb250cm9sIHZlcmlmaWVzIHRoZW0gdXNpbmcgb3BoZWxwLCB3aGljaApjaGVja3MgZm9yIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+ZXh0Omlic19mZXRjaDwvY29kZT4gb3IgPGNvZGUgY2xhc3M9InZhcm5hbWUiPmV4dDppYnNfb3A8L2NvZGU+CnRhZyBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmV2ZW50cy94ODYtNjQvZmFtaWx5MTAvZXZlbnRzPC9jb2RlPiBmaWxlLgpUaGVuLCBpdCBjb25maWd1cmVzIHRoZSBkcml2ZXIgaW50ZXJmYWNlICgvZGV2L29wcm9maWxlL2lic19mZXRjaC8uLi4gYW5kCi9kZXYvb3Byb2ZpbGUvaWJzX29wLy4uLikgYW5kIHN0YXJ0cyB0aGUgT1Byb2ZpbGUgZGFlbW9uIGFzIGZvbGxvd3MuCjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4Kb3Byb2ZpbGVkIFwKICAgIC0tZXh0LWZlYXR1cmU9aWJzOlwKCWZldGNoOiZsdDtJQlNfRkVUQ0hfRVZFTlQxJmd0OywmbHQ7SUJTX0ZFVENIX0VWRU5UMiZndDssLi4uLDombHQ7SUJTIGZldGNoIGNvdW50Jmd0OzombHQ7SUJTIEZldGNoIHVtJmd0O3xcCglvcDombHQ7SUJTX09QX0VWRU5UMSZndDssJmx0O0lCU19PUF9FVkVOVDImZ3Q7LC4uLiw6Jmx0O0lCUyBvcCBjb3VudCZndDs6Jmx0O0lCUyBvcCB1bSZndDsKPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHA+CkhlcmUsIHRoZSBPUHJvZmlsZSBkYWVtb24gcGFyc2VzIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+LS1leHQtZmVhdHVyZTwvY29kZT4Kb3B0aW9uIGFuZCBjaGVja3MgdGhlIGZlYXR1cmUgbmFtZSAoImlicyIpIGJlZm9yZSBjYWxsaW5nIHRoZSAKdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgc3RyaW5nCmNvbnRhaW5pbmcgSUJTIGV2ZW50cywgY291bnRzLCBhbmQgdW5pdG1hc2tzLgpUaGVuLCBpdCBzdG9yZXMgZWFjaCBldmVudCBpbiB0aGUgSUJTIHZpcnR1YWwtY291bnRlciB0YWJsZQooPGNvZGUgY2xhc3M9InZhcm5hbWUiPnN0cnVjdCBvcGRfZXZlbnQgaWJzX3ZjW09QX01BWF9JQlNfQ09VTlRFUlNdPC9jb2RlPikgYW5kCnN0b3JlcyB0aGUgZXZlbnQgaW5kZXggaW4gdGhlIElCUyBWaXJ0dWFsIENvdW50ZXIgSW5kZXggKFZDSSkgbWFwCig8Y29kZSBjbGFzcz0idmFybmFtZSI+aWJzX3ZjaV9tYXBbT1BfTUFYX0lCU19DT1VOVEVSU108L2NvZGU+KSB3aXRoIElCUyBldmVudCB2YWx1ZQphcyB0aGUgbWFwIGtleS4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJpYnMtZGF0YS1wcm9jZXNzaW5nIj48L2E+NS4xLjIuoElCUyBEYXRhIFByb2Nlc3Npbmc8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpEdXJpbmcgYSBwcm9maWxlIHNlc3Npb24sIHRoZSBPUHJvZmlsZSBkYWVtb24gaWRlbnRpZmllcyBJQlMgc2FtcGxlcyBpbiB0aGUgCmV2ZW50IGJ1ZmZlciB1c2luZyB0aGUgPGNvZGUgY2xhc3M9InZhcm5hbWUiPiJJQlNfRkVUQ0hfQ09ERSI8L2NvZGU+IG9yIAo8Y29kZSBjbGFzcz0idmFybmFtZSI+IklCU19PUF9DT0RFIjwvY29kZT4uIFRoZXNlIGNvZGVzIHRyaWdnZXIgdGhlIGhhbmRsZXJzIAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmNvZGVfaWJzX2ZldGNoX3NhbXBsZSgpPC9jb2RlPiBvciAKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5jb2RlX2lic19vcF9zYW1wbGUoKTwvY29kZT4gbGlzdGVkIGluIHRoZQo8Y29kZSBjbGFzcz0idmFybmFtZSI+aGFuZGxlcl90IGhhbmRsZXJzW108L2NvZGU+IHZlY3RvciBpbiAKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX3RyYW5zLmMgPC9jb2RlPi4gVGhlc2UgaGFuZGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvcgpwcm9jZXNzaW5nIElCUyBzYW1wbGVzIGFuZCB0cmFuc2xhdGUgdGhlbSBpbnRvIElCUyBwZXJmb3JtYW5jZSBldmVudHMuCjwvcD4KICAgICAgICAgICAgICA8cD4KVW5saWtlIHRyYWRpdGlvbmFsIHBlcmZvcm1hbmNlIGV2ZW50cywgZWFjaCBJQlMgc2FtcGxlIGNhbiBiZSBkZXJpdmVkIGludG8gCm11bHRpcGxlIElCUyBwZXJmb3JtYW5jZSBldmVudHMuIEZvciBlYWNoIGV2ZW50IHRoYXQgdGhlIHVzZXIgc3BlY2lmaWVzLAphIGNvbWJpbmF0aW9uIG9mIGJpdHMgZnJvbSBNb2RlbC1TcGVjaWZpYyBSZWdpc3RlcnMgKE1TUikgYXJlIGNoZWNrZWQKYWdhaW5zdCB0aGUgYml0bWFzayBkZWZpbmluZyB0aGUgZXZlbnQuIElmIHRoZSBjb25kaXRpb24gaXMgbWV0LCB0aGUgZXZlbnQKd2lsbCB0aGVuIGJlIHJlY29yZGVkLiBUaGUgZGVyaXZhdGlvbiBsb2dpYyBpcyBpbiB0aGUgZmlsZXMKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX2lic19tYWNyby5oPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5kYWVtb24vb3BkX2lic190cmFucy5baCxjXTwvY29kZT4uIAo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Imlicy1zYW1wbGUtZmlsZSI+PC9hPjUuMS4zLqBJQlMgU2FtcGxlIEZpbGU8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpUcmFkaXRpb25hbGx5LCBzYW1wbGUgZmlsZSBpbmZvcm1hdGlvbiA8Y29kZSBjbGFzcz0idmFybmFtZSI+KG9kYl90KTwvY29kZT4gaXMgc3RvcmVkCmluIHRoZSA8Y29kZSBjbGFzcz0idmFybmFtZSI+c3RydWN0IHNmaWxlOjpvZGJfdCBmaWxlW09QX01BWF9DT1VOVEVSXTwvY29kZT4uCkN1cnJlbnRseSwgPGNvZGUgY2xhc3M9InZhcm5hbWUiPk9QX01BWF9DT1VOVEVSPC9jb2RlPiBpcyA4IG9uIG5vbi1hbHBoYSwgYW5kIDIwIG9uCmFscGhhLWJhc2VkIHN5c3RlbS4gRXZlbnQgaW5kZXggKHRoZSBjb3VudGVyIG51bWJlciBvbiB3aGljaCB0aGUgZXZlbnQKaXMgY29uZmlndXJlZCkgaXMgdXNlZCB0byBhY2Nlc3MgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gdGhlIGFycmF5LgpVbmxpa2UgdGhlIHRyYWRpdGlvbmFsIHBlcmZvcm1hbmNlIGV2ZW50LCBJQlMgZG9lcyBub3QgdXNlIHRoZSBhY3R1YWwKY291bnRlciByZWdpc3RlcnMgKGkuZS4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vZGV2L29wcm9maWxlLzAsMSwyLDM8L2NvZGU+KS4KQWxzbywgdGhlIG51bWJlciBvZiBwZXJmb3JtYW5jZSBldmVudHMgZ2VuZXJhdGVkIGJ5IElCUyBjb3VsZCBiZSBsYXJnZXIgdGhhbgo8Y29kZSBjbGFzcz0idmFybmFtZSI+T1BfTUFYX0NPVU5URVI8L2NvZGU+IChjdXJyZW50bHkgdXB0byAxMyBJQlMtZmV0Y2ggYW5kIDQ2IElCUy1vcCAKZXZlbnRzKS4gVGhlcmVmb3JlIElCUyByZXF1aXJlcyBhIHNwZWNpYWwgZGF0YSBzdHJ1Y3R1cmUgYW5kIHNmaWxlCmhhbmRsZXJzICg8Y29kZSBjbGFzcz0idmFybmFtZSI+c3RydWN0IG9wZF9leHRfc2ZpbGVfaGFuZGxlcnM8L2NvZGU+KSBmb3IgbWFuYWdpbmcKSUJTIHNhbXBsZSBmaWxlcy4gSUJTLXNhbXBsZS1maWxlIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiBhIG1lbW9yeSAKYWxsb2NhdGVkIGJ5IGhhbmRsZXIgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5pYnNfc2ZpbGVfY3JlYXRlKCk8L2NvZGU+LCB3aGljaCBjYW4KYmUgYWNjZXNzZWQgdGhyb3VnaCA8Y29kZSBjbGFzcz0idmFybmFtZSI+c3RydWN0IHNmaWxlOjpvZGJfdCAqIGV4dF9maWxlczwvY29kZT4uCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Imdsb3NzYXJ5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iZ2xvc3NhcnkiPjwvYT5HbG9zc2FyeSBvZiBPUHJvZmlsZSBzb3VyY2UgY29uY2VwdHMgYW5kIHR5cGVzPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGw+CiAgICAgICAgICA8ZHQ+YXBwbGljYXRpb24gaW1hZ2U8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8cD4KVGhlIHByaW1hcnkgYmluYXJ5IGltYWdlIHVzZWQgYnkgYW4gYXBwbGljYXRpb24uIFRoaXMgaXMgZGVyaXZlZApmcm9tIHRoZSBrZXJuZWwgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSBiaW5hcnkgc3RhcnRlZCB1cG9uIHJ1bm5pbmcKYW4gYXBwbGljYXRpb246IGZvciBleGFtcGxlLCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9iaW4vYmFzaDwvY29kZT4uCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+YmluYXJ5IGltYWdlPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPHA+CkFuIEVMRiBmaWxlIGNvbnRhaW5pbmcgZXhlY3V0YWJsZSBjb2RlOiB0aGlzIGluY2x1ZGVzIGtlcm5lbCBtb2R1bGVzLAp0aGUga2VybmVsIGl0c2VsZiAoYS5rLmEuIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+dm1saW51eDwvY29kZT4pLCBzaGFyZWQgbGlicmFyaWVzLAphbmQgYXBwbGljYXRpb24gYmluYXJpZXMuCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+ZGNvb2tpZTwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxwPgpTaG9ydCBmb3IgImRlbnRyeSBjb29raWUiLiBBIHVuaXF1ZSBJRCB0aGF0IGNhbiBiZSBsb29rZWQgdXAgdG8gcHJvdmlkZQp0aGUgZnVsbCBwYXRoIG5hbWUgb2YgYSBiaW5hcnkgaW1hZ2UuCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+ZGVwZW5kZW50IGltYWdlPC9kdD4KICAgICAgICAgIDxkZD4KICAgICAgICAgICAgPHA+CkEgYmluYXJ5IGltYWdlIHRoYXQgaXMgZGVwZW5kZW50IHVwb24gYW4gYXBwbGljYXRpb24sIHVzZWQgd2l0aApwZXItYXBwbGljYXRpb24gc2VwYXJhdGlvbi4gTW9zdCBjb21tb25seSwgc2hhcmVkIGxpYnJhcmllcy4gRm9yIGV4YW1wbGUsCmlmIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9iYXNoPC9jb2RlPiBpcyBydW5uaW5nIGFuZCB3ZSB0YWtlCnNvbWUgc2FtcGxlcyBpbnNpZGUgdGhlIEMgbGlicmFyeSBpdHNlbGYgZHVlIHRvIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmJhc2g8L3N0cm9uZz48L3NwYW4+CmNhbGxpbmcgbGlicmFyeSBjb2RlLCB0aGVuIHRoZSBpbWFnZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9saWIvbGliYy5zbzwvY29kZT4Kd291bGQgYmUgZGVwZW5kZW50IHVwb24gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vYmluL2Jhc2g8L2NvZGU+Lgo8L3A+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0Pm1lcmdpbmc8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8cD4KVGhpcyByZWZlcnMgdG8gdGhlIGFiaWxpdHkgdG8gbWVyZ2Ugc2V2ZXJhbCBkaXN0aW5jdCBzYW1wbGUgZmlsZXMKaW50byBvbmUgc2V0IG9mIGRhdGEgYXQgcnVudGltZSwgaW4gdGhlIHBvc3QtcHJvZmlsaW5nIHRvb2xzLiBGb3IgZXhhbXBsZSwKcGVyLXRocmVhZCBzYW1wbGUgZmlsZXMgY2FuIGJlIG1lcmdlZCBpbnRvIG9uZSBzZXQgb2YgZGF0YSwgYmVjYXVzZQp0aGV5IGFyZSBjb21wYXRpYmxlIChpLmUuIHRoZSBhZ2dyZWdhdGlvbiBvZiB0aGUgZGF0YSBpcyBtZWFuaW5nZnVsKSwKYnV0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIG1lcmdlIHNhbXBsZSBmaWxlcyBmb3IgdHdvIGRpZmZlcmVudCBldmVudHMsCmJlY2F1c2UgdGhlcmUgd291bGQgYmUgbm8gdXNlZnVsIG1lYW5pbmcgdG8gdGhlIHJlc3VsdHMuCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+cHJvZmlsZSBjbGFzczwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxwPgpBIGNvbGxlY3Rpb24gb2YgcHJvZmlsZSBkYXRhIHRoYXQgaGFzIGJlZW4gY29sbGVjdGVkIHVuZGVyIHRoZSBzYW1lCmNsYXNzIHRlbXBsYXRlLiBGb3IgZXhhbXBsZSwgaWYgd2UncmUgdXNpbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+CnRvIHNob3cgcmVzdWx0cyBhZnRlciBwcm9maWxpbmcgd2l0aCB0d28gcGVyZm9ybWFuY2UgY291bnRlcnMgZW5hYmxlZApwcm9maWxpbmcgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5EQVRBX01FTV9SRUZTPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5DUFVfQ0xLX1VOSEFMVEVEPC9jb2RlPiwKdGhlcmUgd291bGQgYmUgdHdvIHByb2ZpbGUgY2xhc3Nlcywgb25lIGZvciBlYWNoIGV2ZW50LiBPciBpZiB3ZSdyZSBvbgphbiBTTVAgc3lzdGVtIGFuZCBkb2luZyBwZXItY3B1IHByb2ZpbGluZywgYW5kIHdlIHJlcXVlc3QKPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+IHRvIHNob3cgcmVzdWx0cyBmb3IgZWFjaCBDUFUgc2lkZS1ieS1zaWRlLAp0aGVyZSB3b3VsZCBiZSBhIHByb2ZpbGUgY2xhc3MgZm9yIGVhY2ggQ1BVLgo8L3A+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PnByb2ZpbGUgc3BlY2lmaWNhdGlvbjwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxwPgpUaGUgcGFyYW1ldGVycyB0aGUgdXNlciBwYXNzZXMgdG8gdGhlIHBvc3QtcHJvZmlsaW5nIHRvb2xzIHRoYXQgbGltaXQKd2hhdCBzYW1wbGUgZmlsZXMgYXJlIHVzZWQuIFRoaXMgc3BlY2lmaWNhdGlvbiBpcyBtYXRjaGVkIGFnYWluc3QKdGhlIGF2YWlsYWJsZSBzYW1wbGUgZmlsZXMgdG8gZ2VuZXJhdGUgYSBzZWxlY3Rpb24gb2YgcHJvZmlsZSBkYXRhLgo8L3A+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PnByb2ZpbGUgdGVtcGxhdGU8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8cD4KVGhlIHBhcmFtZXRlcnMgdGhhdCBkZWZpbmUgd2hhdCBnb2VzIGluIGEgcGFydGljdWxhciBwcm9maWxlIGNsYXNzLgpUaGlzIGluY2x1ZGVzIGEgc3ltYm9saWMgbmFtZSAoZS5nLiAiY3B1OjEiKSBhbmQgdGhlIGNvZGUtdXNhYmxlCmVxdWl2YWxlbnQuCjwvcD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgPC9kbD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K