PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYj4gbWFjcm8gZXhwYW5kcyB0byB0aGUgY3VycmVudCA8aT5maWxlLWl0ZXJhdGlvbjwvaT4gZGVwdGguCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYj4oKQoJCTwvZGl2PgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCUlmIGEgPGk+ZmlsZS1pdGVyYXRpb248L2k+IGlzIG5vdCBpbiBwcm9ncmVzcywgdGhpcyBtYWNybyBleHBhbmRzIHRvIDxpPjA8L2k+LiZuYnNwOwoJCQlPdGhlcndpc2UsIGl0IGV4cGFuZHMgdG8gdGhlIGN1cnJlbnQgZGVwdGggb2YgPGk+ZmlsZS1pdGVyYXRpb248L2k+LgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJmcmFtZV9pdGVyYXRpb24uaHRtbCI+Qk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJyZWxhdGl2ZV9pdGVyYXRpb24uaHRtbCI+Qk9PU1RfUFBfUkVMQVRJVkVfSVRFUkFUSU9OPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvaXRlcmF0aW9uL2l0ZXJhdGUuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgovLyBmaWxlLmgKI2lmICE8YSBocmVmPSJpc19pdGVyYXRpbmcuaHRtbCI+Qk9PU1RfUFBfSVNfSVRFUkFUSU5HPC9hPgoKICAgI2lmbmRlZiBGSUxFX0hfCiAgICNkZWZpbmUgRklMRV9IXwoKICAgI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvaXRlcmF0aW9uL2l0ZXJhdGUuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcDwvYT4mZ3Q7CgogICAjZGVmaW5lIDxhIGhyZWY9Iml0ZXJhdGlvbl9wYXJhbXNfeC5odG1sIj5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzE8L2E+ICgzLCAoMSwgMywgImZpbGUuaCIpKQogICAjaW5jbHVkZSA8YSBocmVmPSJpdGVyYXRlLmh0bWwiPkJPT1NUX1BQX0lURVJBVEU8L2E+KCkKCiAgICNlbmRpZgoKI2VsaWYgPGEgaHJlZj0iaXRlcmF0aW9uX2RlcHRoLmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYT4oKSA9PSAxCgogICArIGRlcHRoIDxhIGhyZWY9Iml0ZXJhdGlvbl9kZXB0aC5odG1sIj5CT09TVF9QUF9JVEVSQVRJT05fREVQVEg8L2E+KCkKICAgLy8gLi4uCgogICAjZGVmaW5lIDxhIGhyZWY9Iml0ZXJhdGlvbl9wYXJhbXNfeC5odG1sIj5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzI8L2E+IFwKICAgICAgKDMsICgxLCA8YSBocmVmPSJpdGVyYXRpb24uaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OPC9hPigpLCAiZmlsZS5oIikpIFwKICAgICAgLyoqLwoKICAgI2luY2x1ZGUgPGEgaHJlZj0iaXRlcmF0ZS5odG1sIj5CT09TVF9QUF9JVEVSQVRFPC9hPigpCgojZWxpZiA8YSBocmVmPSJpdGVyYXRpb25fZGVwdGguaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIPC9hPigpID09IDIKCiAgIC0gZGVwdGggPGEgaHJlZj0iaXRlcmF0aW9uX2RlcHRoLmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYT4oKQogICAvLyAuLi4KCiNlbmRpZgo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==