PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU08L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9FTlVNPC9iPiBtYWNybyBnZW5lcmF0ZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfRU5VTTwvYj4oPGk+Y291bnQ8L2k+LCA8aT5tYWNybzwvaT4sIDxpPmRhdGE8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+Y291bnQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbnVtYmVyIG9mIHJlcGV0aXRpb3VzIGNhbGxzIHRvIDxpPm1hY3JvPC9pPi4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5tYWNybzwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBvcGVyYXRpb24gb2YgdGhlIGZvcm0gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5uPC9pPiwgPGk+ZGF0YTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9FTlVNPC9iPiB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZSByZXBldGl0aW9uIGRlcHRoLAoJCQkJdGhlIGN1cnJlbnQgcmVwZXRpdGlvbiBudW1iZXIsIGFuZCB0aGUgYXV4aWxpYXJ5IDxpPmRhdGE8L2k+IGFyZ3VtZW50LiZuYnNwOwoJCQk8L2RkPgoJCQk8ZHQ+ZGF0YTwvZHQ+CgkJCTxkZD4KCQkJCUF1eGlsaWFyeSBkYXRhIHBhc3NlZCB0byA8aT5tYWNybzwvaT4uCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGV4cGFuZHMgdG8gdGhlIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZToKCQkJPGRpdj4KCQkJCTxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+MDwvaT4sIDxpPmRhdGE8L2k+KSwgPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT4xPC9pPiwgPGk+ZGF0YTwvaT4pLCAuLi4gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5jb3VudDwvaT4gLSA8aT4xPC9pPiwgPGk+ZGF0YTwvaT4pCgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxkaXY+CgkJCVRoZSA8aT56PC9pPiB2YWx1ZSB0aGF0IGlzIHBhc3NlZCB0byA8aT5tYWNybzwvaT4gcmVwcmVzZW50cyB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkaW1lbnNpb24uJm5ic3A7CgkJCU90aGVyIG1hY3JvcyB0aGF0IGhhdmUgPGI+X1o8L2I+IHN1ZmZpeCB2YXJpYW50cyBpbnRlcm5hbGx5IHVzZSA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+LS1mb3IgZXhhbXBsZSwgPGI+Qk9PU1RfUFBfRU5VTV9QQVJBTVM8L2I+IGFuZCA8Yj5CT09TVF9QUF9FTlVNX1BBUkFNU19aPC9iPi4mbmJzcDsKCQkJVXNpbmcgdGhlc2UgPGI+X1o8L2I+IHZlcnNpb25zIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCBwYXNzaW5nIHRoZSA8aT56PC9pPiB2YWx1ZSAodGhhdCBpcyBwYXNzZWQgdG8gPGk+bWFjcm88L2k+KSB0byB0aGVzZSBtYWNyb3MgYWxsb3dzIHRoZW0gdG8gcmVlbnRlciA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+IHdpdGggbWF4aW11bSBlZmZpY2llbmN5LgoJCTwvZGl2PgoJCTxkaXY+CgkJCVRvIGRpcmVjdGx5IHVzZSB0aGlzIDxpPno8L2k+IHZhbHVlLCByYXRoZXIgdGhhbiBzaW1wbHkgcGFzc2luZyBpdCB0byBhbm90aGVyIG1hY3JvLCBzZWUgPGI+Qk9PU1RfUFBfRU5VTV88aT56PC9pPjwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJUHJldmlvdXNseSwgdGhpcyBtYWNybyBjb3VsZCBub3QgYmUgdXNlZCByZWN1cnNpdmVseSBpbnNpZGUgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPi4mbmJzcDsKCQkJVGhpcyBsaW1pdGF0aW9uIG5vIGxvbmdlciBleGlzdHMsIGFzIHRoZSBsaWJyYXJ5IGNhbiBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkZXB0aC4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0iZW51bV96Lmh0bWwiPkJPT1NUX1BQX0VOVU1fPGk+ejwvaT48L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9ImxpbWl0X3JlcGVhdC5odG1sIj5CT09TVF9QUF9MSU1JVF9SRVBFQVQ8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL2VudW0uaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9lbnVtLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPC9hPiZndDsKCiNkZWZpbmUgVEVYVCh6LCBuLCB0ZXh0KSB0ZXh0Cgo8YSBocmVmPSJlbnVtLmh0bWwiPkJPT1NUX1BQX0VOVU08L2E+KDQsIFRFWFQsIGNsYXNzKSAvLyBleHBhbmRzIHRvIGNsYXNzLCBjbGFzcywgY2xhc3MsIGNsYXNzCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K