PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfQklOQVJZX1BBUkFNUzwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfQklOQVJZX1BBUkFNUzwvYj4gbWFjcm8gZ2VuZXJhdGVzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYmluYXJ5IHBhcmFtZXRlcnMgd2l0aCBhIGxlYWRpbmcgY29tbWEuCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfQklOQVJZX1BBUkFNUzwvYj4oPGk+Y291bnQ8L2k+LCA8aT5wMTwvaT4sIDxpPnAyPC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0PmNvdW50PC9kdD4KCQkJPGRkPgoJCQkJVGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHRvIGdlbmVyYXRlLiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9iPi4KCQkJPC9kZD4KCQkJPGR0PnAxPC9kdD4KCQkJPGRkPgoJCQkJVGhlIHRleHQgb2YgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhcmFtZXRlci4mbmJzcDsKCQkJCTxiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfQklOQVJZX1BBUkFNUzwvYj4gY29uY2F0ZW5hdGVzIG51bWJlcnMgcmFuZ2luZyBmcm9tIDxpPjA8L2k+IHRvIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+CgkJCQl0byBnZW5lcmF0ZSBwYXJhbWV0ZXJzLgoJCQk8L2RkPgoJCQk8ZHQ+cDI8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgdGV4dCBvZiB0aGUgZmlyc3QgcGFydCBvZiB0aGUgcGFyYW1ldGVyLiZuYnNwOwoJCQkJPGI+Qk9PU1RfUFBfRU5VTV9UUkFJTElOR19CSU5BUllfUEFSQU1TPC9iPiBjb25jYXRlbmF0ZXMgbnVtYmVycyByYW5naW5nIGZyb20gPGk+MDwvaT4gdG8gPGk+Y291bnQ8L2k+IC0gPGk+MTwvaT4KCQkJCXRvIGdlbmVyYXRlIHBhcmFtZXRlcnMuCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGV4cGFuZHMgdG8gdGhlIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZToKCQkJPGRpdj4KCQkJCSwgPGk+cDE8L2k+ICMjIDxpPjA8L2k+IDxpPnAyPC9pPiAjIyA8aT4wPC9pPiwgPGk+cDE8L2k+ICMjIDxpPjE8L2k+IDxpPnAyPC9pPiAjIyA8aT4xPC9pPiwgLi4uIDxpPnAxPC9pPiAjIyA8aT5jb3VudDwvaT4gLSA8aT4xPC9pPiA8aT5wMjwvaT4gIyMgPGk+Y291bnQ8L2k+IC0gPGk+MTwvaT4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJVG8gdXNlIHRoZSA8aT56PC9pPiBwYXJhbWV0ZXIgcGFzc2VkIGZyb20gb3RoZXIgbWFjcm9zIHRoYXQgdXNlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4sIHNlZSA8Yj5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX0JJTkFSWV9QQVJBTVNfWjwvYj4uCgkJPC9kaXY+Cgk8aDQ+U2VlIEFsc288L2g0PgoJCTx1bD4KCQkJPGxpPjxhIGhyZWY9ImV0YnB6Lmh0bWwiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfQklOQVJZX1BBUkFNU19aPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9ldGJwLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX2JpbmFyeV9wYXJhbXMuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vZXRicC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX2JpbmFyeV9wYXJhbXMuaHBwPC9hPiZndDsKCnRlbXBsYXRlJmx0O2NsYXNzIFggPGEgaHJlZj0iZXRicC5odG1sIj5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX0JJTkFSWV9QQVJBTVM8L2E+KDQsIGNsYXNzIEEsID0gWCA8YSBocmVmPSJpbnRlcmNlcHQuaHRtbCI+Qk9PU1RfUFBfSU5URVJDRVBUPC9hPikmZ3Q7CnN0cnVjdCBzYW1wbGUgewogICAvLyAuLi4KfTsKCi8qIGV4cGFuZHMgdG8uLi4KCnRlbXBsYXRlJmx0O2NsYXNzIFgsIGNsYXNzIEEwID0gWCwgY2xhc3MgQTEgPSBYLCBjbGFzcyBBMiA9IFgsIGNsYXNzIEEzID0gWCZndDsKc3RydWN0IHNhbXBsZSB7CiAgIC8vIC4uLgp9CiovCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K