PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPkNvbXBpbGUgdGltZSBjb25maWd1cmF0aW9uPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9zdHlsZS9zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43NC4wIj4KPGxpbmsgcmVsPSJob21lIiBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sIiB0aXRsZT0iQm9vc3QgVGVzdCBMaWJyYXJ5Ij4KPGxpbmsgcmVsPSJ1cCIgaHJlZj0idGVzdC1sb2cuaHRtbCIgdGl0bGU9IlRlc3QgbG9nIG91dHB1dCI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0ibG9nLXhtbC1mb3JtYXQuaHRtbCIgdGl0bGU9IlhNTCBiYXNlZCBsb2cgb3V0cHV0IGZvcm1hdCI+CjxsaW5rIHJlbD0ibmV4dCIgaHJlZj0icmVzdWx0cy1yZXBvcnQuaHRtbCIgdGl0bGU9IlRlc3QgcmVwb3J0IG91dHB1dCI+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQxLjIiIHNyYz0iLi4vLi4vLi4vLi4vanMvYm9vc3QtdGVzdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgo8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIHdpZHRoPSIxMCUiPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiPjxpbWcgYWx0PSJIb21lIiB3aWR0aD0iMjI5IiBoZWlnaHQ9IjYxIiBib3JkZXI9IjAiIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZXN0L2RvY2Jvb2svaW1nL2Jvb3N0LnRlc3QubG9nby5wbmciPjwvYT48L3RkPgo8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0Ij4gJmd0OyA8YSBocmVmPSIuLi8uLi8uLi91dGYuaHRtbCI+VGhlIFVuaXQgVGVzdCBGcmFtZXdvcms8L2E+ICZndDsgPGEgaHJlZj0iLi4vLi4vdXNlci1ndWlkZS5odG1sIj5Vc2VyJ3MgZ3VpZGU8L2E+PGEgaHJlZj0iLi4vLi4vdGVzdGluZy10b29scy5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGEgaHJlZj0iLi4vdGVzdC1vdXRwdXQuaHRtbCI+VGVzdCBPdXRwdXQgPC9hPjxhIGhyZWY9Ii4uL3J1bnRpbWUtY29uZmlnLmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48YSBocmVmPSJ0ZXN0LWxvZy5odG1sIj5UZXN0IGxvZzwvYT48YSBocmVmPSJyZXN1bHRzLXJlcG9ydC5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGI+Q29tcGlsZSB0aW1lIGNvbmZpZ3VyYXRpb248L2I+CjwvdGQ+Cjx0ZD48ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgaHJlZj0ibG9nLXhtbC1mb3JtYXQuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgaHJlZj0icmVzdWx0cy1yZXBvcnQuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+CjwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW91dHB1dC5sb2cuY3QtY29uZmlnIj48L2E+Q29tcGlsZSB0aW1lIGNvbmZpZ3VyYXRpb248L2g2PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBXaGlsZSBtYW55IHRlc3QgbG9nIGNvbmZpZ3VyYXRpb24gdGFza3MgY2FuIGJlIHBlcmZvcm1lZCBhdCBydW50aW1lIHVzaW5nIHByZWRlZmluZWQgZnJhbWV3b3JrIHBhcmFtZXRlcnMsIHRoZSAKICAgIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHByb3ZpZGVzIGEgY29tcGlsZSB0aW1lIGludGVyZmFjZSBhcyB3ZWxsLiBUaGUgaW50ZXJmYWNlIGdpdmVzIHlvdSBmdWxsIHBvd2VyIG92ZXIgd2hhdCwgd2hlcmUgYW5kIGhvdyB0byAKICAgIGxvZy4gVGhlIGludGVyZmFjZSBpcyBwcm92aWRlZCBieSBzaW5nbGV0b24gY2xhc3MgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nX3Q8L2NvZGU+IGFuZCBpcwogICAgYWNjZXNzaWJsZSB0aHJvdWdoIGxvY2FsIGZpbGUgc2NvcGUgcmVmZXJlbmNlIHRvIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzOiBib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLgogICA8L3A+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg2IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3Qtb3V0cHV0LmxvZy5jdC1jb25maWcub3V0cHV0LXN0cmVhbSI+PC9hPkxvZyBvdXRwdXQgc3RyZWFtIHJlZGlyZWN0aW9uPC9oNj48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgIElmIHlvdSB3YW50IHRvIHJlZGlyZWN0IHRoZSB0ZXN0IGxvZyBvdXRwdXQgc3RyZWFtIGludG8gc29tZXRoaW5nIGRpZmZlcmVudCBmcm9tIHN0ZDo6Y291dCB1c2UgdGhlIGZvbGxvd2luZyAKICAgICBpbnRlcmZhY2U6CiAgICA8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLnNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSZhbXA7IHN0ciApOzwvcHJlPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgWW91IGNhbiByZXNldCB0aGUgb3V0cHV0IHN0cmVhbSBhdCBhbnkgdGltZSBib3RoIGR1cmluZyB0aGUgdGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIGZyb20gd2l0aGluIHRlc3QgCiAgICAgY2FzZXMuIFRoZXJlIGFyZSBubyBsaW1pdGF0aW9ucyBvbiBudW1iZXIgb2Ygb3V0cHV0IHN0cmVhbSByZXNldHMgZWl0aGVyLgogICAgPC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vdXRwdXQubG9nLmN0LWNvbmZpZy5vdXRwdXQtc3RyZWFtLmV4YW1wbGU1MCI+PC9hPjxwIGNsYXNzPSJ0aXRsZSI+PGI+RXhhbXBsZaAzMC6gVGVzdCBsb2cgb3V0cHV0IHJlZGlyZWN0aW9uPC9iPjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZS1jb250ZW50cyI+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEJPT1NUX1RFU1RfTU9EVUxFIGV4YW1wbGUKI2luY2x1ZGUgJmx0O2Jvb3N0L3Rlc3QvaW5jbHVkZWQvdW5pdF90ZXN0LmhwcCZndDsKI2luY2x1ZGUgJmx0O2ZzdHJlYW0mZ3Q7CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKc3RydWN0IE15Q29uZmlnIHsKICAgIE15Q29uZmlnKCkgOiB0ZXN0X2xvZyggImV4YW1wbGUubG9nIiApICB7IGJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9sb2cuc2V0X3N0cmVhbSggdGVzdF9sb2cgKTsgfQogICAgfk15Q29uZmlnKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYm9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X2xvZy5zZXRfc3RyZWFtKCBzdGQ6OmNvdXQgKTsgfQoKICAgIHN0ZDo6b2ZzdHJlYW0gdGVzdF9sb2c7Cn07CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKQk9PU1RfR0xPQkFMX0ZJWFRVUkUoIE15Q29uZmlnICk7CgpCT09TVF9BVVRPX1RFU1RfQ0FTRSggdGVzdF9jYXNlICkKewogICAgQk9PU1RfQ0hFQ0soIGZhbHNlICk7Cn0KCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCgo8L3ByZT4KPHRhYmxlIGNsYXNzPSJzaW1wbGVsaXN0IiBib3JkZXI9IjAiIHN1bW1hcnk9IlNpbXBsZSBsaXN0Ij48dHI+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iLi4vLi4vLi4vLi4vc3JjL2V4YW1wbGVzL2V4YW1wbGU1MC5jcHAiIHRhcmdldD0iX3RvcCI+U291cmNlIGNvZGU8L2E+PC9jb2RlPjwvdGQ+Cjx0ZD4gfCA8L3RkPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9IiMiIHRhcmdldD0iX3RvcCIgaWQ9ImlkNjU1MzU4IiBvbmNsaWNrPSJ0b2dnbGVfZWxlbWVudCggJ2V4YW1wbGU1MC1vdXRwdXQnLCAnaWQ2NTUzNTgnLCAnU2hvdyBvdXRwdXQnLCAnSGlkZSBvdXRwdXQnICk7IHJldHVybiBmYWxzZTsiPlNob3cgb3V0cHV0PC9hPjwvY29kZT48L3RkPgo8L3RyPjwvdGFibGU+CjxwcmUgY2xhc3M9ImV4YW1wbGUtb3V0cHV0IiBpZD0iZXhhbXBsZTUwLW91dHB1dCI+Jmd0OyBleGFtcGxlCgoqKiogMSBmYWlsdXJlIGRldGVjdGVkIGluIHRlc3Qgc3VpdGUgImV4YW1wbGUiCiZndDsgY2F0IGV4YW1wbGUubG9nClJ1bm5pbmcgMSB0ZXN0IGNhc2UuLi4KdGVzdC5jcHAoMjApOiBlcnJvciBpbiAidGVzdF9jYXNlIjogY2hlY2sgZmFsc2UgZmFpbGVkCjwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxiciBjbGFzcz0iZXhhbXBsZS1icmVhayI+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW91dHB1dC5sb2cuY3QtY29uZmlnLmxvZy1sZXZlbCI+PC9hPkxvZyBsZXZlbCBjb25maWd1cmF0aW9uPC9oNj48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgIElmIHlvdSBuZWVkIHRvIGVuZm9yY2Ugc3BlY2lmaWMgbG9nIGxldmVsIGZyb20gd2l0aGluIHlvdXIgdGVzdCBtb2R1bGUgdXNlIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgogICAgPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ym9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X2xvZy5zZXRfdGhyZXNob2xkX2xldmVsKCBib29zdDo6dW5pdF90ZXN0Ojpsb2dfbGV2ZWwgKTs8L3ByZT4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgIEluIHJlZ3VsYXIgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkbid0IHVzZSB0aGlzIGludGVyZmFjZSwgc2luY2UgeW91IG5vdCBvbmx5IG92ZXJyaWRlIGRlZmF1bHQgbG9nIGxldmVsLCBidXQgYWxzbwogICAgIHRoZSBvbmUgc3VwcGxpZWQgYXQgdGVzdCBleGVjdXRpb24gdGltZS4gUHJlZmVyIHRvIHVzZSBydW50aW1lIHBhcmFtZXRlcnMgZm9yIGxvZyBsZXZlbCBzZWxlY3Rpb24uCiAgICA8L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW91dHB1dC5sb2cuY3QtY29uZmlnLmxvZy1sZXZlbC5leGFtcGxlNTEiPjwvYT48cCBjbGFzcz0idGl0bGUiPjxiPkV4YW1wbGWgMzEuoENvbXBpbGUgdGltZSBsb2cgbGV2ZWwgY29uZmlndXJhdGlvbjwvYj48L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUtY29udGVudHMiPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBCT09TVF9URVNUX01PRFVMRSBleGFtcGxlCiNpbmNsdWRlICZsdDtib29zdC90ZXN0L2luY2x1ZGVkL3VuaXRfdGVzdC5ocHAmZ3Q7CiNpbmNsdWRlICZsdDtib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHAmZ3Q7CnVzaW5nIG5hbWVzcGFjZSBib29zdDo6dW5pdF90ZXN0OwoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCkJPT1NUX0FVVE9fVEVTVF9DQVNFKCB0ZXN0X2Nhc2UwICkKewogICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpsb2dfbGV2ZWwoKSAmbHQ7IGxvZ193YXJuaW5ncyApCiAgICAgICAgdW5pdF90ZXN0X2xvZy5zZXRfdGhyZXNob2xkX2xldmVsKCBsb2dfd2FybmluZ3MgKTsKCiAgICBCT09TVF9XQVJOKCBzaXplb2YoaW50KSAmZ3Q7IDQgKTsKfQoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCjwvcHJlPgo8dGFibGUgY2xhc3M9InNpbXBsZWxpc3QiIGJvcmRlcj0iMCIgc3VtbWFyeT0iU2ltcGxlIGxpc3QiPjx0cj4KPHRkPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj48YSBocmVmPSIuLi8uLi8uLi8uLi9zcmMvZXhhbXBsZXMvZXhhbXBsZTUxLmNwcCIgdGFyZ2V0PSJfdG9wIj5Tb3VyY2UgY29kZTwvYT48L2NvZGU+PC90ZD4KPHRkPiB8IDwvdGQ+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iIyIgdGFyZ2V0PSJfdG9wIiBpZD0iaWQ2NTU0ODEiIG9uY2xpY2s9InRvZ2dsZV9lbGVtZW50KCAnZXhhbXBsZTUxLW91dHB1dCcsICdpZDY1NTQ4MScsICdTaG93IG91dHB1dCcsICdIaWRlIG91dHB1dCcgKTsgcmV0dXJuIGZhbHNlOyI+U2hvdyBvdXRwdXQ8L2E+PC9jb2RlPjwvdGQ+CjwvdHI+PC90YWJsZT4KPHByZSBjbGFzcz0iZXhhbXBsZS1vdXRwdXQiIGlkPSJleGFtcGxlNTEtb3V0cHV0Ij4mZ3Q7IGV4YW1wbGUKUnVubmluZyAxIHRlc3QgY2FzZS4uLgp0ZXN0LmNwcCgxMyk6IHdhcm5pbmcgaW4gInRlc3RfY2FzZTAiOiBjb25kaXRpb24gc2l6ZW9mKGludCkgJmd0OyA0IGlzIG5vdCBzYXRpc2ZpZWQKCioqKiBObyBlcnJvcnMgZGV0ZWN0ZWQKPC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGJyIGNsYXNzPSJleGFtcGxlLWJyZWFrIj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg2IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3Qtb3V0cHV0LmxvZy5jdC1jb25maWcubG9nLWZvcm1hdCI+PC9hPlByZWRlZmluZWQgbG9nIGZvcm1hdCBzZWxlY3Rpb248L2g2PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICAgVGhlIHNlbGVjdCBhdCBjb21waWxlIHRpbWUgdGhlIGxvZyBmb3JtYXQgZnJvbSB0aGUgbGlzdCBvZiB0aGUgZm9ybWF0cyBzdXBwbGllZCBieSB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gCiAgICA8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLnNldF9mb3JtYXQoIGJvb3N0Ojp1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQgKTs8L3ByZT4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgIEluIHJlZ3VsYXIgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkbid0IHVzZSB0aGlzIGludGVyZmFjZS4gUHJlZmVyIHRvIHVzZSBydW50aW1lIHBhcmFtZXRlcnMgZm9yIHByZWRlZmluZWQgbG9nIAogICAgIGZvcm1hdCBzZWxlY3Rpb24uCiAgICA8L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW91dHB1dC5sb2cuY3QtY29uZmlnLmxvZy1mb3JtYXQuZXhhbXBsZTUyIj48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5FeGFtcGxloDMyLqBDb21waWxlIHRpbWUgbG9nIGZvcm1hdCBzZWxlY3Rpb248L2I+PC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlLWNvbnRlbnRzIj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgQk9PU1RfVEVTVF9NT0RVTEUgZXhhbXBsZQojaW5jbHVkZSAmbHQ7Ym9vc3QvdGVzdC9pbmNsdWRlZC91bml0X3Rlc3QuaHBwJmd0Owp1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OnVuaXRfdGVzdDsKCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCgpzdHJ1Y3QgTXlDb25maWcgewogICAgTXlDb25maWcoKSAgeyB1bml0X3Rlc3RfbG9nLnNldF9mb3JtYXQoIFhNTCApOyB9CiAgICB+TXlDb25maWcoKSB7fQp9OwoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCkJPT1NUX0dMT0JBTF9GSVhUVVJFKCBNeUNvbmZpZyApOwoKQk9PU1RfQVVUT19URVNUX0NBU0UoIHRlc3RfY2FzZTAgKQp7CiAgICBCT09TVF9DSEVDSyggZmFsc2UgKTsKfQoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCjwvcHJlPgo8dGFibGUgY2xhc3M9InNpbXBsZWxpc3QiIGJvcmRlcj0iMCIgc3VtbWFyeT0iU2ltcGxlIGxpc3QiPjx0cj4KPHRkPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj48YSBocmVmPSIuLi8uLi8uLi8uLi9zcmMvZXhhbXBsZXMvZXhhbXBsZTUyLmNwcCIgdGFyZ2V0PSJfdG9wIj5Tb3VyY2UgY29kZTwvYT48L2NvZGU+PC90ZD4KPHRkPiB8IDwvdGQ+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iIyIgdGFyZ2V0PSJfdG9wIiBpZD0iaWQ2NTU2MDciIG9uY2xpY2s9InRvZ2dsZV9lbGVtZW50KCAnZXhhbXBsZTUyLW91dHB1dCcsICdpZDY1NTYwNycsICdTaG93IG91dHB1dCcsICdIaWRlIG91dHB1dCcgKTsgcmV0dXJuIGZhbHNlOyI+U2hvdyBvdXRwdXQ8L2E+PC9jb2RlPjwvdGQ+CjwvdHI+PC90YWJsZT4KPHByZSBjbGFzcz0iZXhhbXBsZS1vdXRwdXQiIGlkPSJleGFtcGxlNTItb3V0cHV0Ij4mZ3Q7IGV4YW1wbGUgLS1yZXBvcnRfbGV2ZWw9bm8KJmx0O1Rlc3RMb2cmZ3Q7Jmx0O0Vycm9yIGZpbGU9InRlc3QuY3BwIiBsaW5lPSIxOCImZ3Q7Y2hlY2sgZmFsc2UgZmFpbGVkJmx0Oy9FcnJvciZndDsmbHQ7L1Rlc3RMb2cmZ3Q7CjwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxiciBjbGFzcz0iZXhhbXBsZS1icmVhayI+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg2IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3Qtb3V0cHV0LmxvZy5jdC1jb25maWcubG9nLWZvcm1hdHRlciI+PC9hPkN1c3RvbSBsb2cgZm9ybWF0IHN1cHBvcnQ8L2g2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPHRhYmxlIHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJsb2cteG1sLWZvcm1hdC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9InRlc3QtbG9nLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvdXAucG5nIiBhbHQ9IlVwIj48L2E+PGEgYWNjZXNza2V5PSJoIiBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL2hvbWUucG5nIiBhbHQ9IkhvbWUiPjwvYT48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9InJlc3VsdHMtcmVwb3J0Lmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==