PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPlBhcnSgSUlJLqBCb29zdCBUZXN0IExpYnJhcnk6IFRoZSBtaW5pbWFsIHRlc3RpbmcgZmFjaWxpdHk8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3N0eWxlL3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc0LjAiPgo8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJCb29zdCBUZXN0IExpYnJhcnkiPgo8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iQm9vc3QgVGVzdCBMaWJyYXJ5Ij4KPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJwcmctZXhlYy1tb25pdG9yL2NvbXBpbGF0aW9uLmh0bWwiIHRpdGxlPSJUaGUgUHJvZ3JhbSBFeGVjdXRpb24gTW9uaXRvciBjb21waWxhdGlvbiI+CjxsaW5rIHJlbD0ibmV4dCIgaHJlZj0idXRmLmh0bWwiIHRpdGxlPSJQYXJ0oElWLqBCb29zdCBUZXN0IExpYnJhcnk6IFRoZSBVbml0IFRlc3QgRnJhbWV3b3JrIj4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdDEuMiIgc3JjPSIuLi9qcy9ib29zdC10ZXN0LmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgd2lkdGg9IjEwJSI+PGEgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBhbHQ9IkhvbWUiIHdpZHRoPSIyMjkiIGhlaWdodD0iNjEiIGJvcmRlcj0iMCIgc3JjPSIuLi8uLi8uLi8uLi9saWJzL3Rlc3QvZG9jYm9vay9pbWcvYm9vc3QudGVzdC5sb2dvLnBuZyI+PC9hPjwvdGQ+Cjx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPiAmZ3Q7IDxiPk1pbmltYWwgdGVzdGluZyBmYWNpbGl0eTwvYj4KPC90ZD4KPHRkPjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBocmVmPSJwcmctZXhlYy1tb25pdG9yL2NvbXBpbGF0aW9uLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGhyZWY9InV0Zi5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9InBhcnQiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgxIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9Im1pbmltYWwiPjwvYT5QYXJ0oElJSS6gQm9vc3QgVGVzdCBMaWJyYXJ5OiBUaGUgbWluaW1hbCB0ZXN0aW5nIGZhY2lsaXR5PC9oMT48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ibWluaW1hbC5pbnRybyI+PC9hPkludHJvZHVjdGlvbjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgPGVtIGNsYXNzPSJmaXJzdHRlcm0iPkJvb3N0LlRlc3QgbWluaW1hbCB0ZXN0aW5nIGZhY2lsaXR5PC9lbT4gcHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseSBpbXBsZW1lbnRlZCBieSB0aGUgCiAgIG9yaWdpbmFsIHZlcnNpb24gb2YgQm9vc3QuVGVzdC4gQXMgdGhlIG5hbWUgc3VnZ2VzdCwgaXQgcHJvdmlkZXMgb25seSBtaW5pbWFsIGJhc2ljIGZhY2lsaXRpZXMgZm9yIHRlc3QgY3JlYXRpb24uIEl0IAogICBoYXZlIG5vIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyAoZWl0aGVyIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzKSBhbmQgaXQgc3VwcGxpZXMgCiAgIGEgbGltaXRlZCBzZXQgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Im1pbmltYWwuaHRtbCNtaW5pbWFsLnRvb2xzIiB0aXRsZT0iUHJvdmlkZWQgdGVzdGluZyB0b29scyI+dGVzdGluZyB0b29sczwvYT4gd2hpY2ggYmVoYXZlcyBzaW1pbGFybHkgdG8gb25lcyBkZWZpbmVkIGFtb3VudCAKICAgdGhlIFVuaXQgVGVzdCBGcmFtZXdvcmsgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InV0Zi90ZXN0aW5nLXRvb2xzLmh0bWwiIHRpdGxlPSJUaGUgVVRGIHRlc3RpbmcgdG9vbHMgb3IgdGVzdGVyJ3MgdG9vbGJveCBmb3IgYWxsIG9jY2FzaW9ucyI+VGVzdGluZyB0b29sczwvYT4uIFRoZSBtaW5pbWFsIHRlc3RpbmcgZmFjaWxpdHkgc3VwcGxpZXMgaXRzIG93biBmdW5jdGlvbiAKICAgbWFpbigpIChzbyBjYW4gbm90IGJlIHVzZWQgZm9yIG11bHRpIHVuaXQgdGVzdGluZykgYW5kIHdpbGwgZXhlY3V0ZSB0aGUgdGVzdCBwcm9ncmFtIGluIGEgbW9uaXRvcmVkIGVudmlyb25tZW50LgogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBBcyBpdCBmb2xsb3dzIGZyb20gdGhlIG5hbWUgdGhpcyBjb21wb25lbnQgcHJvdmlkZXMgb25seSBtaW5pbWFsIHNldCBvZiB0aGUgdGVzdGluZyBjYXBhYmlsaXRpZXMgYW5kIGFzIGEgZ2VuZXJhbCAKICAgcnVsZSB0aGUgVW5pdCBUZXN0IEZyYW1ld29yayBzaG91bGQgYmUgcHJlZmVycmVkLiBJbiBhIG1ham9yaXR5IG9mIHRoZSBjYXNlcyBpdCBwcm92aWRlcyB5b3Ugd2l0aCBtdWNoIHdpZGVyIHNldCBvZiAKICAgdGVzdGluZyB0b29scyAoYW5kIG90aGVyIGdvb2RzKSwgd2hpbGUgc3RpbGwgYmVpbmcgYXMgZWFzeSB0byBzZXQgdXAuCiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ibWluaW1hbC51c2FnZSI+PC9hPlVzYWdlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBUaGUgb25seSBjaGFuZ2UgKG90aGVyIHRoZW4gaW5jbHVkaW5nIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL2Jvb3N0L3Rlc3QvbWluaW1hbC5ocHAiIHRhcmdldD0iX3RvcCI+CiAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Ym9vc3QvdGVzdC9taW5pbWFsLmhwcDwvY29kZT48L2E+KSB5b3UgbmVlZCB0byBtYWtlLCB0byBpbnRlZ3JhdGUgeW91ciB0ZXN0IG1vZHVsZSB3aXRoIG1pbmltYWwgdGVzdGluZyBmYWNpbGl0eSBpcyAKICAgdGhlIHNpZ25hdHVyZSBvZiB5b3VyIGZ1bmN0aW9uIG1haW4oKS4gSXQgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgogIDwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCB0ZXN0X21haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQp7CiAgLi4uCn08L3ByZT4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBPbmNlIHlvdSBhcHBseSB0aGUgY2hhbmdlIHRlc3QgYXV0b21hdGljYWxseSBzdGFydHMgcnVubmluZyBpbiBtb25pdG9yZWQgZW52aXJvbm1lbnQuIEFsc28geW91IGNhbiBzdGFydCB1c2luZyAKICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Im1pbmltYWwuaHRtbCNtaW5pbWFsLnRvb2xzIiB0aXRsZT0iUHJvdmlkZWQgdGVzdGluZyB0b29scyI+dGVzdGluZyB0b29sczwvYT4gcHJvdmlkZWQgYnkgdGhlIG1pbmltYWwgdGVzdGluZyBmYWNpbGl0eSBhbmQgZ2V0IHVuaWZvcm0gZXJyb3JzIHJlcG9ydGluZy4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJtaW5pbWFsLmV4YW1wbGUiPjwvYT5FeGFtcGxlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgRm9sbG93aW5nIGV4YW1wbGUgaWxsdXN0cmF0ZXMgZGlmZmVyZW50IGFwcHJvYWNoZXMgeW91IGNhbiBlbXBsb3kgdG8gZGV0ZWN0IGFuZCByZXBvcnQgZXJyb3JzIHVzaW5nIGRpZmZlcmVudCAKICAgIHRlc3RpbmcgdG9vbHMKICA8L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPgo8YSBuYW1lPSJtaW5pbWFsLmV4YW1wbGUuZXhhbXBsZTI3Ij48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5FeGFtcGxloDQuoE1pbmltYWwgdGVzdGluZyBmYWNpbGl0eSBhcHBsaWNhdGlvbjwvYj48L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUtY29udGVudHMiPgo8ZGl2IGNsYXNzPSJwcm9ncmFtbGlzdGluZ2NvIj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNpbmNsdWRlICZsdDtib29zdC90ZXN0L21pbmltYWwuaHBwJmd0OwoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCmludCBhZGQoIGludCBpLCBpbnQgaiApIHsgcmV0dXJuIGkrajsgfQoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCmludCB0ZXN0X21haW4oIGludCwgY2hhciAqW10gKSAgICAgICAgICAgICAvLyBub3RlIHRoZSBuYW1lIQp7CiAgICAvLyBzaXggd2F5cyB0byBkZXRlY3QgYW5kIHJlcG9ydCB0aGUgc2FtZSBlcnJvcjoKICAgIEJPT1NUX0NIRUNLKCBhZGQoIDIsMiApID09IDQgKTsgICAgICAgIC8vICMxIGNvbnRpbnVlcyBvbiBlcnJvcgogICAgQk9PU1RfUkVRVUlSRSggYWRkKCAyLDIgKSA9PSA0ICk7ICAgICAgLy8gIzIgdGhyb3dzIG9uIGVycm9yCiAgICBpZiggYWRkKCAyLDIgKSAhPSA0ICkKICAgICAgICBCT09TVF9FUlJPUiggIk91Y2guLi4iICk7ICAgICAgICAgIC8vICMzIGNvbnRpbnVlcyBvbiBlcnJvcgogICAgaWYoIGFkZCggMiwyICkgIT0gNCApCiAgICAgICAgQk9PU1RfRkFJTCggIk91Y2guLi4iICk7ICAgICAgICAgICAvLyAjNCB0aHJvd3Mgb24gZXJyb3IKICAgIGlmKCBhZGQoIDIsMiApICE9IDQgKSB0aHJvdyAiT29wcy4uLiI7IC8vICM1IHRocm93cyBvbiBlcnJvcgoKICAgIHJldHVybiBhZGQoIDIsIDIgKSA9PSA0ID8gMCA6IDE7ICAgICAgIC8vICM2IHJldHVybnMgZXJyb3IgY29kZQp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwo8L3ByZT4KPHRhYmxlIGNsYXNzPSJzaW1wbGVsaXN0IiBib3JkZXI9IjAiIHN1bW1hcnk9IlNpbXBsZSBsaXN0Ij48dHI+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iLi4vc3JjL2V4YW1wbGVzL2V4YW1wbGUyNy5jcHAiIHRhcmdldD0iX3RvcCI+U291cmNlIGNvZGU8L2E+PC9jb2RlPjwvdGQ+Cjx0ZD4gfCA8L3RkPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9IiMiIHRhcmdldD0iX3RvcCIgaWQ9ImlkNjQzNTM0IiBvbmNsaWNrPSJ0b2dnbGVfZWxlbWVudCggJ2V4YW1wbGUyNy1hbm5vdCcsICdpZDY0MzUzNCcsICdTaG93IGFubm90YXRpb25zJywgJ0hpZGUgYW5ub3RhdGlvbnMnICk7IHJldHVybiBmYWxzZTsiPlNob3cgYW5ub3RhdGlvbnM8L2E+PC9jb2RlPjwvdGQ+Cjx0ZD4gfCA8L3RkPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9IiMiIHRhcmdldD0iX3RvcCIgaWQ9ImlkNjQzNTUwIiBvbmNsaWNrPSJ0b2dnbGVfZWxlbWVudCggJ2V4YW1wbGUyNy1vdXRwdXQnLCAnaWQ2NDM1NTAnLCAnU2hvdyBvdXRwdXQnLCAnSGlkZSBvdXRwdXQnICk7IHJldHVybiBmYWxzZTsiPlNob3cgb3V0cHV0PC9hPjwvY29kZT48L3RkPgo8L3RyPjwvdGFibGU+CjxkaXYgY2xhc3M9ImV4YW1wbGUtYW5ub3QiIGlkPSJleGFtcGxlMjctYW5ub3QiPjx0YWJsZSBib3JkZXI9IjAiIHN1bW1hcnk9IkNhbGxvdXQgbGlzdCI+Cjx0cj4KPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD48YSBuYW1lPSJzbmlwcGV0MTguYW5uLTEiPjwvYT4oMSk8L3A+PC90ZD4KPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgICBUaGlzIGFwcHJvYWNoIHVzZXMgdGhlIEJPT1NUX0NIRUNLIHRvb2wsIHdoaWNoIGRpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2Ugb24gc3RkOjpjb3V0IHRoYXQgaW5jbHVkZXMgdGhlIAogICAgICBleHByZXNzaW9uIHRoYXQgZmFpbGVkLCB0aGUgc291cmNlIGZpbGUgbmFtZSwgYW5kIHRoZSBzb3VyY2UgZmlsZSBsaW5lIG51bWJlci4gSXQgYWxzbyBpbmNyZW1lbnRzIHRoZSBlcnJvciBjb3VudC4gCiAgICAgIEF0IHByb2dyYW0gdGVybWluYXRpb24sIHRoZSBlcnJvciBjb3VudCB3aWxsIGJlIGRpc3BsYXllZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBtaW5pbWFsIHRlc3RpbmcgZmFjaWxpdHkuCiAgICAgPC9wPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD48YSBuYW1lPSJzbmlwcGV0MTguYW5uLTIiPjwvYT4oMik8L3A+PC90ZD4KPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgICBUaGlzIGFwcHJvYWNoIHVzaW5nIHRoZSBCT09TVF9SRVFVSVJFIHRvb2wsIGlzIHNpbWlsYXIgdG8gIzEsIGV4Y2VwdCB0aGF0IGFmdGVyIGRpc3BsYXlpbmcgdGhlIGVycm9yLCBhbiAKICAgICAgZXhjZXB0aW9uIGlzIHRocm93biwgdG8gYmUgY2F1Z2h0IGJ5IHRoZSBtaW5pbWFsIHRlc3RpbmcgZmFjaWxpdHkuIFRoaXMgYXBwcm9hY2ggaXMgc3VpdGFibGUgd2hlbiB3cml0aW5nIGFuIGV4cGxpY2l0IHRlc3QgcHJvZ3JhbSwKICAgICAgYW5kIHRoZSBlcnJvciB3b3VsZCBiZSBzbyBzZXZlcmUgYXMgdG8gbWFrZSBmdXJ0aGVyIHRlc3RpbmcgaW1wcmFjdGljYWwuIEJPT1NUX1JFUVVJUkUgZGlmZmVycyBmcm9tIHRoZSBDKysgCiAgICAgIFN0YW5kYXJkIExpYnJhcnkncyBhc3NlcnQoKSBtYWNybyBpbiB0aGF0IGl0IGlzIGFsd2F5cyBnZW5lcmF0ZWQsIGFuZCBjaGFubmVscyBlcnJvciBkZXRlY3Rpb24gaW50byB0aGUgdW5pZm9ybQogICAgICByZXBvcnRpbmcgcHJvY2VkdXJlLgogICAgIDwvcD48L3RkPgo8L3RyPgo8dHI+Cjx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHA+PGEgbmFtZT0ic25pcHBldDE4LmFubi0zIj48L2E+KDMpPC9wPjwvdGQ+Cjx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgICAgVGhpcyBhcHByb2FjaCBpcyBzaW1pbGFyIHRvICMxLCBleGNlcHQgdGhhdCB0aGUgZXJyb3IgZGV0ZWN0aW9uIGlzIGNvZGVkIHNlcGFyYXRlbHkuIFRoaXMgaXMgbW9zdCB1c2VmdWwgd2hlbiAKICAgICAgdGhlIHNwZWNpZmljIGNvbmRpdGlvbiBiZWluZyB0ZXN0ZWQgaXMgbm90IGluZGljYXRpdmUgb2YgdGhlIHJlYXNvbiBmb3IgZmFpbHVyZS4KICAgICA8L3A+PC90ZD4KPC90cj4KPHRyPgo8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPjxhIG5hbWU9InNuaXBwZXQxOC5hbm4tNCI+PC9hPig0KTwvcD48L3RkPgo8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgIFRoaXMgYXBwcm9hY2ggaXMgc2ltaWxhciB0byAjMiwgZXhjZXB0IHRoYXQgdGhlIGVycm9yIGRldGVjdGlvbiBpcyBjb2RlZCBzZXBhcmF0ZWx5LiBUaGlzIGlzIG1vc3QgdXNlZnVsIHdoZW4gCiAgICAgIHRoZSBzcGVjaWZpYyBjb25kaXRpb24gYmVpbmcgdGVzdGVkIGlzIG5vdCBpbmRpY2F0aXZlIG9mIHRoZSByZWFzb24gZm9yIGZhaWx1cmUuCiAgICAgPC9wPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD48YSBuYW1lPSJzbmlwcGV0MTguYW5uLTUiPjwvYT4oNSk8L3A+PC90ZD4KPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgICBUaGlzIGFwcHJvYWNoIHRocm93cyBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgY2F1Z2h0IGFuZCByZXBvcnRlZCBieSB0aGUgbWluaW1hbCB0ZXN0aW5nIGZhY2lsaXR5LiBUaGlzIGFwcHJvYWNoIGlzIHN1aXRhYmxlCiAgICAgIGZvciBib3RoIHByb2R1Y3Rpb24gYW5kIHRlc3QgY29kZSwgaW4gbGlicmFyaWVzIG9yIG5vdC4gVGhlIGVycm9yIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gIHRoZSBleGNlcHRpb24gaXMKICAgICAgY2F1Z2h0ICB3aWxsIGJlIG1vc3QgbWVhbmluZ2Z1bCBpZiB0aGUgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZDo6ZXhjZXB0aW9uIDwvY29kZT4sIG9yIGlzIGEKICAgICAgY2hhciogb3IgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGQ6OnN0cmluZzwvY29kZT4uCiAgICAgPC9wPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD48YSBuYW1lPSJzbmlwcGV0MTguYW5uLTYiPjwvYT4oNik8L3A+PC90ZD4KPHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgICBUaGlzIGFwcHJvYWNoIHVzZXMgdGhlIEJPT1NUX0NIRUNLX01FU1NBR0UgdG9vbCwgaXMgc2ltaWxhciB0byBhcHByb2FjaCAjMSwgZXhjZXB0IHRoYXQgc2ltaWxhciB0byB0aGUgYXBwcm9hY2ggIzMKICAgICAgZGlzcGxheXMgYW4gYWx0ZXJuYXRpdmUgZXJyb3IgbWVzc2FnZSBzcGVjaWZpZWQgYXMgYSBzZWNvbmQgYXJndW1lbnQuCiAgICAgPC9wPjwvdGQ+CjwvdHI+CjwvdGFibGU+PC9kaXY+CjwvZGl2Pgo8cHJlIGNsYXNzPSJleGFtcGxlLW91dHB1dCIgaWQ9ImV4YW1wbGUyNy1vdXRwdXQiPgoqKioqIG5vIGVycm9ycyBkZXRlY3RlZAo8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9ImV4YW1wbGUtYnJlYWsiPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ibWluaW1hbC50b29scyI+PC9hPlByb3ZpZGVkIHRlc3RpbmcgdG9vbHM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgIFRoZSBtaW5pbWFsIHRlc3RpbmcgZmFjaWxpdHkgc3VwcGxpZXMgZm9sbG93aW5nIGZvdXIgdG9vbHM6CiAgPC9wPgo8cHJlIGNsYXNzPSJpbmxpbmUtc3lub3BzaXMiPgpCT09TVF9DSEVDSyg8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5wcmVkaWNhdGU8L2VtPjwvc3Bhbj4pCkJPT1NUX1JFUVVJUkUoPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+cHJlZGljYXRlPC9lbT48L3NwYW4+KQpCT09TVF9FUlJPUig8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5tZXNzYWdlPC9lbT48L3NwYW4+KQpCT09TVF9GQUlMKDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPm1lc3NhZ2U8L2VtPjwvc3Bhbj4pPC9wcmU+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgVGhlaXIgYmVoYXZpb3IgaXMgbW9kZWxlZCBhZnRlciB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InV0Zi90ZXN0aW5nLXRvb2xzL3JlZmVyZW5jZS5odG1sIiB0aXRsZT0iVGhlIFVURiB0ZXN0aW5nIHRvb2xzIHJlZmVyZW5jZSI+c2ltaWxhcmx5IG5hbWVkIHRvb2xzPC9hPiAKICAgaW1wbGVtZW50ZWQgYnkgdGhlIFVuaXQgVGVzdCBGcmFtZXdvcmsuCiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ibWluaW1hbC5pbXBsIj48L2E+SW1wbGVtZW50YXRpb248L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgIFRoZSBtaW5pbWFsIHRlc3RpbmcgZmFjaWxpdHkgaXMgaW1wbGVtZW50ZWQgaW5saW5lIGluIG9uZSBoZWFkZXIgPGEgaHJlZj0iLi4vLi4vLi4vLi4vYm9vc3QvdGVzdC9taW5pbWFsLmhwcCIgdGFyZ2V0PSJfdG9wIj4KICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5ib29zdC90ZXN0L21pbmltYWwuaHBwPC9jb2RlPjwvYT4uIFRoZXJlIGFyZSBubyBzcGVjaWFsIGNvbXBpbGF0aW9uIGluc3RydWN0aW9ucyBmb3IgdGhpcyBjb21wb25lbnQuCiAgPC9wPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgIFRoZXJlIGlzIGEgc2luZ2xlIHVuaXQgdGVzdCBwcm9ncmFtIHRoYXQgdmFsaWRhdGVzIG1pbmltYWwgdGVzdGluZyBmYWNpbGl0eSBmdW5jdGlvbmFsaXR5OiBtaW5pbWFsX3Rlc3QgCiAgPC9wPgo8L2Rpdj4KPC9kaXY+Cjx0YWJsZSB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIGFsaWduPSJsZWZ0Ij48cD48c21hbGw+TGFzdCByZXZpc2VkOiAgLCAgYXQgIDwvc21hbGw+PC9wPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJwcmctZXhlYy1tb25pdG9yL2NvbXBpbGF0aW9uLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy91cC5wbmciIGFsdD0iVXAiPjwvYT48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvaG9tZS5wbmciIGFsdD0iSG9tZSI+PC9hPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0idXRmLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==