PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUzwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUzwvYj4gbWFjcm8gcmV0cmlldmVzIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCA8aT5maWxlLWl0ZXJhdGlvbjwvaT4gZGVwdGguCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUzwvYj4oKQoJCTwvZGl2PgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gaXMgb25seSB2YWxpZCB3aGVuIGEgPGk+ZmlsZS1pdGVyYXRpb248L2k+IGlzIGluIHByb2dyZXNzLgoJCTwvZGl2PgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9pdGVyYXRpb24vaXRlcmF0ZS5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+Ci8vIGZpbGUuaAojaWYgITxhIGhyZWY9ImlzX2l0ZXJhdGluZy5odG1sIj5CT09TVF9QUF9JU19JVEVSQVRJTkc8L2E+CgogICAjaWZuZGVmIEZJTEVfSF8KICAgI2RlZmluZSBGSUxFX0hfCgogICAjaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9pdGVyYXRpb24vaXRlcmF0ZS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPC9hPiZndDsKCiAgIC8vIDFzdCBpdGVyYXRpb246CiAgICNkZWZpbmUgPGEgaHJlZj0iaXRlcmF0aW9uX3BhcmFtc194Lmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMTwvYT4gKDQsICgxLCAxMCwgImZpbGUuaCIsIDB4MDAwMSkpCiAgICNpbmNsdWRlIDxhIGhyZWY9Iml0ZXJhdGUuaHRtbCI+Qk9PU1RfUFBfSVRFUkFURTwvYT4oKQoKICAgLy8gMm5kIGl0ZXJhdGlvbjoKICAgI2RlZmluZSA8YSBocmVmPSJpdGVyYXRpb25fcGFyYW1zX3guaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xPC9hPiAoNCwgKDEsIDEwLCAiZmlsZS5oIiwgMHgwMDAyKSkKICAgI2luY2x1ZGUgPGEgaHJlZj0iaXRlcmF0ZS5odG1sIj5CT09TVF9QUF9JVEVSQVRFPC9hPigpCgogICAjZW5kaWYKCiNlbGlmIDxhIGhyZWY9Iml0ZXJhdGlvbl9kZXB0aC5odG1sIj5CT09TVF9QUF9JVEVSQVRJT05fREVQVEg8L2E+KCkgPT0gMSBcCiAgICZhbXA7JmFtcDsgPGEgaHJlZj0iaXRlcmF0aW9uX2ZsYWdzLmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUzwvYT4oKSA9PSAweDAwMDEgXAogICAvKiovCgogICB7IDFzdCB9CgojZWxpZiA8YSBocmVmPSJpdGVyYXRpb25fZGVwdGguaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIPC9hPigpID09IDEgXAogICAmYW1wOyZhbXA7IDxhIGhyZWY9Iml0ZXJhdGlvbl9mbGFncy5odG1sIj5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1M8L2E+KCkgPT0gMHgwMDAyIFwKICAgLyoqLwoKICAgeyAybmQgfQoKI2VuZGlmCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K