PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1JFUEVBVF8zUkQ8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9SRVBFQVRfM1JEPC9iPiBtYWNybyByZXByZXNlbnRzIHRoZSB0aGlyZCBkaW1lbnNpb24gb2YgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPi4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfUkVQRUFUXzNSRDwvYj4oPGk+Y291bnQ8L2k+LCA8aT5tYWNybzwvaT4sIDxpPmRhdGE8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+Y291bnQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbnVtYmVyIG9mIHJlcGV0aXRpb3VzIGNhbGxzIHRvIDxpPm1hY3JvPC9pPi4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5tYWNybzwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBvcGVyYXRpb24gb2YgdGhlIGZvcm0gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5uPC9pPiwgPGk+ZGF0YTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9SRVBFQVRfM1JEPC9iPiB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZSByZXBldGl0aW9uIGRlcHRoLAoJCQkJdGhlIGN1cnJlbnQgcmVwZXRpdGlvbiBudW1iZXIsIGFuZCB0aGUgYXV4aWxpYXJ5IDxpPmRhdGE8L2k+IGFyZ3VtZW50LiZuYnNwOwoJCQk8L2RkPgoJCQk8ZHQ+ZGF0YTwvZHQ+CgkJCTxkZD4KCQkJCUF1eGlsaWFyeSBkYXRhIHBhc3NlZCB0byA8aT5tYWNybzwvaT4uCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGV4cGFuZHMgdG8gdGhlIHNlcXVlbmNlOgoJCQk8ZGl2PgoJCQkJPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT4wPC9pPiwgPGk+ZGF0YTwvaT4pIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+MTwvaT4sIDxpPmRhdGE8L2k+KSAuLi4gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5jb3VudDwvaT4gLSA8aT4xPC9pPiwgPGk+ZGF0YTwvaT4pCgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxkaXY+CgkJCVRoZSA8aT56PC9pPiB2YWx1ZSB0aGF0IGlzIHBhc3NlZCB0byA8aT5tYWNybzwvaT4gcmVwcmVzZW50cyB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkaW1lbnNpb24uJm5ic3A7CgkJCU90aGVyIG1hY3JvcyB0aGF0IGhhdmUgPGI+X1o8L2I+IHN1ZmZpeCB2YXJpYW50cyBpbnRlcm5hbGx5IHVzZSA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+LS1mb3IgZXhhbXBsZSwgPGI+Qk9PU1RfUFBfRU5VTV9QQVJBTVM8L2I+IGFuZCA8Yj5CT09TVF9QUF9FTlVNX1BBUkFNU19aPC9iPi4mbmJzcDsKCQkJVXNpbmcgdGhlc2UgPGI+X1o8L2I+IHZlcnNpb25zIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCBwYXNzaW5nIHRoZSA8aT56PC9pPiB2YWx1ZSAodGhhdCBpcyBwYXNzZWQgdG8gPGk+bWFjcm88L2k+KSB0byB0aGVzZSBtYWNyb3MgYWxsb3dzIHRoZW0gdG8gcmVlbnRlciA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+IHdpdGggbWF4aW11bSBlZmZpY2llbmN5LgoJCTwvZGl2PgoJCTxkaXY+CgkJCVRvIGRpcmVjdGx5IHVzZSB0aGlzIDxpPno8L2k+IHZhbHVlLCByYXRoZXIgdGhhbiBzaW1wbHkgcGFzc2luZyBpdCB0byBhbm90aGVyIG1hY3JvLCBzZWUgPGI+Qk9PU1RfUFBfUkVQRUFUXzxpPno8L2k+PC9iPi4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGlzIGRlcHJlY2F0ZWQuJm5ic3A7CgkJCUl0IG9ubHkgZXhpc3RzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiZuYnNwOwoJCQlVc2UgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPiBpbnN0ZWFkLgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJyZXBlYXQuaHRtbCI+Qk9PU1RfUFBfUkVQRUFUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJyZXBlYXRfei5odG1sIj5CT09TVF9QUF9SRVBFQVRfPGk+ejwvaT48L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL3JlcGVhdC5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vcmVwZWF0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA8L2E+Jmd0OwoKI2RlZmluZSBERUNMKHosIG4sIHRleHQpIHRleHQgIyMgbiA9IG47Cgo8YSBocmVmPSJyZXBlYXRfM3JkLmh0bWwiPkJPT1NUX1BQX1JFUEVBVF8zUkQ8L2E+KDUsIERFQ0wsIGludCB4KQo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==