PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJORF9EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMk5EX0Q8L2I+IG1hY3JvIGZvbGRzIChvciBhY2N1bXVsYXRlcykgdGhlIGVsZW1lbnRzIG9mIGEgPGk+bGlzdDwvaT4gbGVmdC10by1yaWdodC4mbmJzcDsKCQlJdCByZWVudGVycyA8Yj5CT09TVF9QUF9XSElMRTwvYj4gd2l0aCBtYXhpbXVtIGVmZmljaWVuY3kuCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJORF9EPC9iPig8aT5kPC9pPiwgPGk+b3A8L2k+LCA8aT5zdGF0ZTwvaT4sIDxpPmxpc3Q8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+ZDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBuZXh0IGF2YWlsYWJsZSA8Yj5CT09TVF9QUF9XSElMRTwvYj4gaXRlcmF0aW9uLgoJCQk8L2RkPgoJCQk8ZHQ+b3A8L2R0PgoJCQk8ZGQ+CgkJCQlBIHRlcm5hcnkgb3BlcmF0aW9uIG9mIHRoZSBmb3JtIDxpPm9wPC9pPig8aT5kPC9pPiwgPGk+c3RhdGU8L2k+LCA8aT5lbGVtPC9pPikuJm5ic3A7CgkJCQlUaGlzIG1hY3JvIGlzIGNhbGxlZCBmb3IgZWFjaCBlbGVtZW50IGluIDxpPmxpc3Q8L2k+LS1lYWNoIHRpbWUgcmV0dXJuaW5nIGEgbmV3IDxpPnN0YXRlPC9pPi4mbmJzcDsKCQkJCVRoaXMgb3BlcmF0aW9uIGlzIGV4cGFuZGVkIGJ5IDxiPkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUPC9iPiB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZSA8Yj5CT09TVF9QUF9XSElMRTwvYj4gaXRlcmF0aW9uLAoJCQkJdGhlIGN1cnJlbnQgPGk+c3RhdGU8L2k+LCBhbmQgdGhlIGN1cnJlbnQgZWxlbWVudC4KCQkJPC9kZD4KCQkJPGR0PnN0YXRlPC9kdD4KCQkJPGRkPgoJCQkJVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvbGQuCgkJCTwvZGQ+CgkJCTxkdD5saXN0PC9kdD4KCQkJPGRkPgoJCQkJVGhlIDxpPmxpc3Q8L2k+IHRvIGJlIGZvbGRlZC4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCUZvciB0aGUgPGk+bGlzdDwvaT4sICg8aT4wPC9pPiwgKDxpPjE8L2k+LCAoPGk+MjwvaT4sIDxiPkJPT1NUX1BQX05JTDwvYj4pKSksIHRoaXMgbWFjcm8gZXhwYW5kcyB0bzoKCQkJPGRpdj4KCQkJCTxpPm9wPC9pPig8aT5kPC9pPiwgPGk+b3A8L2k+KDxpPmQ8L2k+LCA8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPnN0YXRlPC9pPiwgPGk+MDwvaT4pLCA8aT4xPC9pPiksIDxpPjI8L2k+KQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGhhcyBiZWVuIHN1cGVyY2VkZWQgYnkgPGI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfPGk+ZDwvaT48L2I+IGFuZCBpcyBkZXByZWNhdGVkLiZuYnNwOwoJCQlJdCBvbmx5IGFsbG93cyBhIHNpbmdsZSByZWVudHJ5IGludG8gPGI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlQ8L2I+LgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaXN0X2ZvbGRfbGVmdC5odG1sIj5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0ibGlzdF9mb2xkX2xlZnRfZC5odG1sIj5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF88aT5kPC9pPjwvYT48L2xpPgoJCTwvdWw+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvZm9sZF9sZWZ0Lmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvY2F0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC9mb2xkX2xlZnQuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcDwvYT4mZ3Q7CgojZGVmaW5lIEwxIChhLCAoYiwgKGMsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpCiNkZWZpbmUgTDIgKEwxLCAoTDEsIChMMSwgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSkKCiNkZWZpbmUgT1AoZCwgc3RhdGUsIHgpICg8YSBocmVmPSJsaXN0X2ZvbGRfbGVmdF8ybmRfZC5odG1sIj5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yTkRfRDwvYT4oZCwgT1BfMiwgXywgeCksIHN0YXRlKQojZGVmaW5lIE9QXzIoZCwgc3RhdGUsIHgpIDxhIGhyZWY9ImNhdC5odG1sIj5CT09TVF9QUF9DQVQ8L2E+KHN0YXRlLCB4KQoKPGEgaHJlZj0ibGlzdF9mb2xkX2xlZnQuaHRtbCI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlQ8L2E+KE9QLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPiwgTDIpCi8qCiAgIGV4cGFuZHMgdG86CiAgIChfYWJjICwgKF9hYmMgLCAoX2FiYyAsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpCiovCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K