PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0FTU0VSVDwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0FTU0VSVDwvYj4gbWFjcm8gY29uZGl0aW9uYWxseSBjYXVzZXMgYSBwcmVwcm9jZXNzaW5nIGVycm9yLgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9BU1NFUlQ8L2I+KDxpPmNvbmQ8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+Y29uZDwvZHQ+CgkJCTxkZD4KCQkJCUEgY29uZGl0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGFzc2VydGlvbiBvY2N1cnMuJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9NQUc8L2I+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJSWYgPGk+Y29uZDwvaT4gZXhwYW5kcyB0byA8aT4wPC9pPiwgdGhpcyBtYWNybyBjYXVzZXMgYSBwcmVwcm9jZXNzaW5nIGVycm9yLiZuYnNwOwoJCQlPdGhlcndpc2UsIGl0IGV4cGFuZHMgdG8gbm90aGluZy4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0iYXNzZXJ0X21zZy5odG1sIj5CT09TVF9QUF9BU1NFUlRfTVNHPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9tYWcuaHRtbCI+Qk9PU1RfUFBfTElNSVRfTUFHPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvZGVidWcvYXNzZXJ0Lmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvYXNzZXJ0LmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2NhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2RlYnVnL2Fzc2VydC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvYXNzZXJ0LmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2xvZ2ljYWwvYml0bm9yLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG5vci5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9sb2dpY2FsL2NvbXBsLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcDwvYT4mZ3Q7CgovLyBUaGUgaXMgQk9PU1RfUFBfSVNfTlVMTEFSWSBtYWNybyBpcyBub3QgcGFydCBvZgovLyB0aGUgcHVibGljIGludGVyZmFjZSBvZiB0aGUgbGlicmFyeSBiZWNhdXNlIGl0Ci8vIGRvZXNuJ3Qgd29yayBvbiBCb3JsYW5kIHByZXByb2Nlc3NvcnMuICBJdCBpcwovLyBvbmx5IHVzZWQgaGVyZSB0byBpbGx1c3RyYXRlIGFzc2VydGlvbnMuICBJbgovLyBlZmZlY3QsIGl0IGRldGVjdHMgd2hldGhlciBhbiBhcmd1bWVudCBpcyBlbXB0eQovLyBwYXJlbnRoZXNpcyBvciBzb21lIHRleHQuCgojaW5jbHVkZSAmbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc19udWxsYXJ5LmhwcCZndDsKCiNkZWZpbmUgSVNfRURJU09OX0RFU0lHTl9HUk9VUCgpIFwKICAgPGEgaHJlZj0iY29tcGwuaHRtbCI+Qk9PU1RfUFBfQ09NUEw8L2E+KCBcCiAgICAgIEJPT1NUX1BQX0lTX05VTExBUlkoIFwKICAgICAgICAgPGEgaHJlZj0iY2F0Lmh0bWwiPkJPT1NUX1BQX0NBVDwvYT4oSVNfRURHX0NIRUNLLCBfX0VER19WRVJTSU9OKSBcCiAgICAgICkgXAogICApIFwKICAgLyoqLwojZGVmaW5lIElTX0VER19DSEVDS19fRURHX1ZFUlNJT04gKCkKCiNkZWZpbmUgSVNfTUVUUk9XRVJLUygpIFwKICAgPGEgaHJlZj0iY29tcGwuaHRtbCI+Qk9PU1RfUFBfQ09NUEw8L2E+KCBcCiAgICAgIEJPT1NUX1BQX0lTX05VTExBUlkoIFwKICAgICAgICAgPGEgaHJlZj0iY2F0Lmh0bWwiPkJPT1NUX1BQX0NBVDwvYT4oSVNfTVdFUktTX0NIRUNLLCBfX01XRVJLU19fKSBcCiAgICAgICkgXAogICApIFwKICAgLyoqLwojZGVmaW5lIElTX01XRVJLU19DSEVDS19fTVdFUktTX18gKCkKCiNkZWZpbmUgSVNfTUlDUk9TT0ZUKCkgXAogICA8YSBocmVmPSJiaXRub3IuaHRtbCI+Qk9PU1RfUFBfQklUTk9SPC9hPiggXAogICAgICBJU19NSUNST1NPRlRfUk9PVCgpLCBcCiAgICAgIElTX0VESVNPTl9ERVNJR05fR1JPVVAoKSBcCiAgICkgXAogICAvKiovCiNkZWZpbmUgSVNfTUlDUk9TT0ZUX1JPT1QoKSBcCiAgIEJPT1NUX1BQX0lTX05VTExBUlkoIFwKICAgICAgPGEgaHJlZj0iY2F0Lmh0bWwiPkJPT1NUX1BQX0NBVDwvYT4oSVNfTVNWQ19DSEVDSywgX01TQ19WRVIpIFwKICAgKSBcCiAgIC8qKi8KI2RlZmluZSBJU19NU1ZDX0NIRUNLX01TX1ZFUiAoKQoKLy8gdGhpcyBtYWNybyBkb2Vzbid0IHdvcmsgb24gRURHLi4uCi8vICh0aGlzIGlzIGp1c3QgYW4gZXhhbXBsZSkKCiNkZWZpbmUgTUFDUk8obikgXAogICA8YSBocmVmPSJjYXQuaHRtbCI+Qk9PU1RfUFBfQ0FUPC9hPiggXAogICAgICBNQUNST18sIFwKICAgICAgSVNfRURJU09OX0RFU0lHTl9HUk9VUCgpIFwKICAgKShuKSBcCiAgIC8qKi8KCiNkZWZpbmUgTUFDUk9fMShuKSBcCiAgIDxhIGhyZWY9ImFzc2VydC5odG1sIj5CT09TVF9QUF9BU1NFUlQ8L2E+KDApIFwKICAgIkVkaXNvbiBEZXNpZ24gR3JvdXAgaXMgbm90IHN1cHBvcnRlZCIgXAogICAvKiovCgojZGVmaW5lIE1BQ1JPXzAobikgbm9ybWFsIG1vZGU6IG4KCk1BQ1JPKDEwKQo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==