PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1JFUEVBVF8yTkQ8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9SRVBFQVRfMk5EPC9iPiBtYWNybyByZXByZXNlbnRzIHRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4uCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX1JFUEVBVF8yTkQ8L2I+KDxpPmNvdW50PC9pPiwgPGk+bWFjcm88L2k+LCA8aT5kYXRhPC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0PmNvdW50PC9kdD4KCQkJPGRkPgoJCQkJVGhlIG51bWJlciBvZiByZXBldGl0aW91cyBjYWxscyB0byA8aT5tYWNybzwvaT4uJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9SRVBFQVQ8L2I+LgoJCQk8L2RkPgoJCQk8ZHQ+bWFjcm88L2R0PgoJCQk8ZGQ+CgkJCQlBIHRlcm5hcnkgb3BlcmF0aW9uIG9mIHRoZSBmb3JtIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+bjwvaT4sIDxpPmRhdGE8L2k+KS4mbmJzcDsKCQkJCVRoaXMgbWFjcm8gaXMgZXhwYW5kZWQgYnkgPGI+Qk9PU1RfUFBfUkVQRUFUXzJORDwvYj4gd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkZXB0aCwKCQkJCXRoZSBjdXJyZW50IHJlcGV0aXRpb24gbnVtYmVyLCBhbmQgdGhlIGF1eGlsaWFyeSA8aT5kYXRhPC9pPiBhcmd1bWVudC4mbmJzcDsKCQkJPC9kZD4KCQkJPGR0PmRhdGE8L2R0PgoJCQk8ZGQ+CgkJCQlBdXhpbGlhcnkgZGF0YSBwYXNzZWQgdG8gPGk+bWFjcm88L2k+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBleHBhbmRzIHRvIHRoZSBzZXF1ZW5jZToKCQkJPGRpdj4KCQkJCTxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+MDwvaT4sIDxpPmRhdGE8L2k+KSA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikgLi4uIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+Y291bnQ8L2k+IC0gPGk+MTwvaT4sIDxpPmRhdGE8L2k+KQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUaGUgPGk+ejwvaT4gdmFsdWUgdGhhdCBpcyBwYXNzZWQgdG8gPGk+bWFjcm88L2k+IHJlcHJlc2VudHMgdGhlIG5leHQgYXZhaWxhYmxlIHJlcGV0aXRpb24gZGltZW5zaW9uLiZuYnNwOwoJCQlPdGhlciBtYWNyb3MgdGhhdCBoYXZlIDxiPl9aPC9iPiBzdWZmaXggdmFyaWFudHMgaW50ZXJuYWxseSB1c2UgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPi0tZm9yIGV4YW1wbGUsIDxiPkJPT1NUX1BQX0VOVU1fUEFSQU1TPC9iPiBhbmQgPGI+Qk9PU1RfUFBfRU5VTV9QQVJBTVNfWjwvYj4uJm5ic3A7CgkJCVVzaW5nIHRoZXNlIDxiPl9aPC9iPiB2ZXJzaW9ucyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgcGFzc2luZyB0aGUgPGk+ejwvaT4gdmFsdWUgKHRoYXQgaXMgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPikgdG8gdGhlc2UgbWFjcm9zIGFsbG93cyB0aGVtIHRvIHJlZW50ZXIgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPiB3aXRoIG1heGltdW0gZWZmaWNpZW5jeS4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUbyBkaXJlY3RseSB1c2UgdGhpcyA8aT56PC9pPiB2YWx1ZSwgcmF0aGVyIHRoYW4gc2ltcGx5IHBhc3NpbmcgaXQgdG8gYW5vdGhlciBtYWNybywgc2VlIDxiPkJPT1NUX1BQX1JFUEVBVF88aT56PC9pPjwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpcyBkZXByZWNhdGVkLiZuYnNwOwoJCQlJdCBvbmx5IGV4aXN0cyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4mbmJzcDsKCQkJVXNlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gaW5zdGVhZC4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0ibGltaXRfcmVwZWF0Lmh0bWwiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0icmVwZWF0Lmh0bWwiPkJPT1NUX1BQX1JFUEVBVDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0icmVwZWF0X3ouaHRtbCI+Qk9PU1RfUFBfUkVQRUFUXzxpPno8L2k+PC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9yZXBlYXQuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL3JlcGVhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPC9hPiZndDsKCiNkZWZpbmUgREVDTCh6LCBuLCB0ZXh0KSB0ZXh0ICMjIG4gPSBuOwoKPGEgaHJlZj0icmVwZWF0XzJuZC5odG1sIj5CT09TVF9QUF9SRVBFQVRfMk5EPC9hPig1LCBERUNMLCBpbnQgeCkKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=