PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfREVGQVVMVFM8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0RFRkFVTFRTPC9iPiBtYWNybyBnZW5lcmF0ZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwYXJhbWV0ZXJzIHdpdGggZGVmYXVsdCBhcmd1bWVudHMuCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfREVGQVVMVFM8L2I+KDxpPmNvdW50PC9pPiwgPGk+cGFyYW08L2k+LCA8aT5kZWY8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+Y291bnQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gZ2VuZXJhdGUuJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9SRVBFQVQ8L2I+LgoJCQk8L2RkPgoJCQk8ZHQ+cGFyYW08L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgdGV4dCBvZiB0aGUgcGFyYW1ldGVyLiZuYnNwOwoJCQkJPGI+Qk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9ERUZBVUxUUzwvYj4gY29uY2F0ZW5hdGVzIG51bWJlcnMgcmFuZ2luZyBmcm9tIDxpPjA8L2k+IHRvIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+CgkJCQl0byBnZW5lcmF0ZSBwYXJhbWV0ZXJzLgoJCQk8L2RkPgoJCQk8ZHQ+ZGVmPC9kdD4KCQkJPGRkPgoJCQkJVGhlIGRlZmF1bHQgdmFsdWUgdGhhdCB0cmFpbHMgZWFjaCBwYXJhbWV0ZXIuCgkJCQk8Yj5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0RFRkFVTFRTPC9iPiBjb25jYXRlbmF0ZXMgbnVtYmVycyByYW5naW5nIGZyb20gPGk+MDwvaT4gdG8gPGk+Y291bnQ8L2k+IC0gPGk+MTwvaT4KCQkJCXRvIGdlbmVyYXRlIGRlZmF1bHQgYXJndW1lbnRzLgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBleHBhbmRzIHRvIHRoZSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2U6CgkJCTxkaXY+CgkJCQk8aT5wYXJhbTwvaT4gIyMgPGk+MDwvaT4gPSA8aT5kZWY8L2k+ICMjIDxpPjA8L2k+LCA8aT5wYXJhbTwvaT4gIyMgPGk+MTwvaT4gPSA8aT5kZWY8L2k+ICMjIDxpPjE8L2k+LCAuLi4gPGk+cGFyYW08L2k+ICMjIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+ID0gPGk+ZGVmPC9pPiAjIyA8aT5jb3VudDwvaT4gLSA8aT4xPC9pPgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlQcmV2aW91c2x5LCB0aGlzIG1hY3JvIGNvdWxkIG5vdCBiZSB1c2VkIHJlY3Vyc2l2ZWx5IGluc2lkZSA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+LiZuYnNwOwoJCQlUaGlzIGxpbWl0YXRpb24gbm8gbG9uZ2VyIGV4aXN0cywgYXMgdGhlIGxpYnJhcnkgY2FuIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBuZXh0IGF2YWlsYWJsZSByZXBldGl0aW9uIGRlcHRoLgoJCTwvZGl2PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gaXMgZGVwcmVjYXRlZC4mbmJzcDsKCQkJSXQgb25seSBleGlzdHMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuJm5ic3A7CgkJCVVzZSA8Yj5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVM8L2I+IGluc3RlYWQ6CgkJCTxkaXY+CgkJCQk8Yj5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVM8L2I+KDxpPmNvdW50PC9pPiwgPGk+cGFyYW08L2k+LCA9IDxpPmRlZjwvaT4pCgkJCTwvZGl2PgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJlbnVtX2JpbmFyeV9wYXJhbXMuaHRtbCI+Qk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9lcHdkLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2RlZmF1bHRzLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vZXB3ZC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2RlZmF1bHRzLmhwcDwvYT4mZ3Q7Cgo8YSBocmVmPSJlbnVtX3BhcmFtc193aXRoX2RlZmF1bHRzLmh0bWwiPkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfREVGQVVMVFM8L2E+KDMsIGNsYXNzIFQsIFUpCiAgIC8vIGV4cGFuZHMgdG8gVDAgPSBVMCwgVDEgPSBVMSwgVDIgPSBVMgoKPGEgaHJlZj0iZW51bV9iaW5hcnlfcGFyYW1zLmh0bWwiPkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUzwvYT4oMywgY2xhc3MgVCwgPSBVKQogICAvLyBleHBhbmRzIHRvIFQwID0gVTAsIFQxID0gVTEsIFQyID0gVTIKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=