PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfRklMVEVSPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9GSUxURVI8L2I+IG1hY3JvIGZpbHRlcnMgYSA8aT5saXN0PC9pPiBhY2NvcmRpbmcgdG8gYSBzdXBwbGllZCBjcml0ZXJpb24uCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0xJU1RfRklMVEVSPC9iPig8aT5wcmVkPC9pPiwgPGk+ZGF0YTwvaT4sIDxpPmxpc3Q8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+cHJlZDwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBwcmVkaWNhdGUgb2YgdGhlIGZvcm0gPGk+cHJlZDwvaT4oPGk+ZDwvaT4sIDxpPmRhdGE8L2k+LCA8aT5lbGVtPC9pPikuJm5ic3A7CgkJCQlUaGlzIHByZWRpY2F0ZSBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9MSVNUX0ZJTFRFUjwvYj4gZm9yIGVhY2ggZWxlbWVudCBpbiA8aT5saXN0PC9pPiB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZSA8Yj5CT09TVF9QUF9XSElMRTwvYj4gaXRlcmF0aW9uLAoJCQkJdGhlIGF1eGlsaWFyeSA8aT5kYXRhPC9pPiwgYW5kIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gPGk+bGlzdDwvaT4uJm5ic3A7CgkJCQlUaGlzIG1hY3JvIG11c3QgcmV0dXJuIGEgaW50ZWdyYWwgdmFsdWUgaW4gdGhlIHJhbmdlIG9mIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX01BRzwvYj4uJm5ic3A7CgkJCQlJZiB0aGlzIHByZWRpY2F0ZSBleHBhbmRzIHRvIG5vbi16ZXJvIGZvciBhIGNlcnRhaW4gZWxlbWVudCwgdGhhdCBlbGVtZW50IGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgPGk+bGlzdDwvaT4uCgkJCTwvZGQ+CgkJCTxkdD5kYXRhPC9kdD4KCQkJPGRkPgoJCQkJQXV4aWxpYXJ5IGRhdGEgcGFzc2VkIHRvIDxpPnByZWQ8L2k+LgoJCQk8L2RkPgoJCQk8ZHQ+bGlzdDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSA8aT5saXN0PC9pPiB0byBiZSBmaWx0ZXJlZC4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gZXhwYW5kcyA8aT5wcmVkPC9pPiBmb3IgZWFjaCBlbGVtZW50IGluIDxpPmxpc3Q8L2k+LiZuYnNwOwoJCQlJdCBidWlsZHMgYSBuZXcgPGk+bGlzdDwvaT4gb3V0IG9mIGVhY2ggZWxlbWVudCBmb3Igd2hpY2ggPGk+cHJlZDwvaT4gcmV0dXJucyBub24temVyby4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlQcmV2aW91c2x5LCB0aGlzIG1hY3JvIGNvdWxkIG5vdCBiZSB1c2VkIGluc2lkZSA8Yj5CT09TVF9QUF9XSElMRTwvYj4uJm5ic3A7CgkJCVRoZXJlIGlzIG5vIGxvbmdlciBhbnkgc3VjaCByZXN0cmljdGlvbi4mbmJzcDsKCQkJSXQgaXMgbW9yZSBlZmZpY2llbnQsIGhvd2V2ZXIsIHRvIHVzZSA8Yj5CT09TVF9QUF9MSVNUX0ZJTFRFUl9EPC9iPiBpbiBzdWNoIGEgc2l0dWF0aW9uLgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9tYWcuaHRtbCI+Qk9PU1RfUFBfTElNSVRfTUFHPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaXN0X2ZpbHRlcl9kLmh0bWwiPkJPT1NUX1BQX0xJU1RfRklMVEVSX0Q8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2ZpbHRlci5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZmlsdGVyLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2NvbXBhcmlzb24vbGVzc19lcXVhbC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvZmlsdGVyLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZpbHRlci5ocHA8L2E+Jmd0OwoKI2RlZmluZSBMSVNUICgxLCAoMywgKDIsICg1LCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKSkKCiNkZWZpbmUgUFJFRChkLCBkYXRhLCBlbGVtKSA8YSBocmVmPSJsZXNzX2VxdWFsLmh0bWwiPkJPT1NUX1BQX0xFU1NfRVFVQUw8L2E+KGVsZW0sIGRhdGEpCgo8YSBocmVmPSJsaXN0X2ZpbHRlci5odG1sIj5CT09TVF9QUF9MSVNUX0ZJTFRFUjwvYT4oUFJFRCwgMywgTElTVCkKICAgLy8gZXhwYW5kcyB0byAoMSwgKDMsICgyLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKQo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==