PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWjwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWjwvYj4gbWFjcm8gZ2VuZXJhdGVzIGEgY29tbWEtc2VwYXJhdGVkLCBzaGlmdGVkIGxpc3Qgb2YgcGFyYW1ldGVycy4mbmJzcDsKCQlJdCByZWVudGVycyA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+IHdpdGggbWF4aW11bSBlZmZpY2llbmN5LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1o8L2I+KDxpPno8L2k+LCA8aT5jb3VudDwvaT4sIDxpPnBhcmFtPC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0Pno8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfUkVQRUFUPC9iPiBkaW1lbnNpb24uCgkJCTwvZGQ+CgkJCTxkdD5jb3VudDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0byBnZW5lcmF0ZS4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5wYXJhbTwvZHQ+CgkJCTxkZD4KCQkJCVRoZSB0ZXh0IG9mIHRoZSBwYXJhbWV0ZXIuJm5ic3A7CgkJCQk8Yj5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1o8L2I+IGNvbmNhdGVuYXRlcyBudW1iZXJzIHJhbmdpbmcgZnJvbSA8aT4xPC9pPiB0byA8aT5jb3VudDwvaT4gLSA8aT4xPC9pPgoJCQkJdG8gZ2VuZXJhdGUgcGFyYW1ldGVycy4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gZXhwYW5kcyB0byB0aGUgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlOgoJCQk8ZGl2PgoJCQkJPGk+cGFyYW08L2k+ICMjIDxpPjE8L2k+LCAuLi4gPGk+cGFyYW08L2k+ICMjIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJlbnVtX3NoaWZ0ZWRfcGFyYW1zLmh0bWwiPkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVM8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL3JlcGVhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPC9hPiZndDsKCmludCBhZGQodm9pZCkgewogICByZXR1cm4gMDsKfQoKI2RlZmluZSBBRERfRih6LCBuLCBfKSBcCiAgIGludCBhZGRfZig8YSBocmVmPSJlbnVtX3BhcmFtc196Lmh0bWwiPkJPT1NUX1BQX0VOVU1fUEFSQU1TX1o8L2E+KHosIDxhIGhyZWY9ImluYy5odG1sIj5CT09TVF9QUF9JTkM8L2E+KG4pLCBpbnQgcCkpIHsgXAogICAgICByZXR1cm4gcDAgKyBhZGRfZig8YSBocmVmPSJlbnVtX3NoaWZ0ZWRfcGFyYW1zX3ouaHRtbCI+Qk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aPC9hPih6LCA8YSBocmVmPSJpbmMuaHRtbCI+Qk9PU1RfUFBfSU5DPC9hPihuKSwgcCkpOyBcCiAgIH0gXAogICAvKiovCgo8YSBocmVmPSJyZXBlYXQuaHRtbCI+Qk9PU1RfUFBfUkVQRUFUPC9hPig1LCBBRERfRiwgbmlsKQo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==