PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xPQ0FMX0xJTUlUUzwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0xPQ0FMX0xJTUlUUzwvYj4gbWFjcm8gaXMgYSB1c2VyLWRlZmluZWQgPGk+bmFtZWQgZXh0ZXJuYWwgYXJndW1lbnQ8L2k+IHVzZWQgYnkgPGI+Qk9PU1RfUFBfTE9DQUxfSVRFUkFURTwvYj4uCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCSNkZWZpbmUgPGI+Qk9PU1RfUFBfTE9DQUxfTElNSVRTPC9iPiAoPGk+c3RhcnQ8L2k+LCA8aT5maW5pc2g8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+c3RhcnQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbG93ZXIgYm91bmQgKGluY2x1c2l2ZSkgb2YgYSA8aT5sb2NhbCBpdGVyYXRpb248L2k+LiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfSVRFUkFUSU9OPC9iPi4KCQkJPC9kZD4KCQkJPGR0PmZpbmlzaDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSB1cHBlciBib3VuZCAoaW5jbHVzaXZlKSBvZiBhIDxpPmxvY2FsIGl0ZXJhdGlvbjwvaT4uJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9JVEVSQVRJT048L2I+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJTm90ZSB0aGF0IHRoZXJlIGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIG1hY3JvIGlkZW50aWZpZXIuCgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBtdXN0IGV4cGFuZCB0byBhIDxpPjI8L2k+LWVsZW1lbnQgPGk+dHVwbGU8L2k+LiZuYnNwOwoJCQlUaGUgZWxlbWVudHMgb2YgdGhpcyA8aT50dXBsZTwvaT4gcmVwcmVzZW50IHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRhcmllcyBvZiBhIDxpPmxvY2FsIGl0ZXJhdGlvbjwvaT4uJm5ic3A7CgkJCUJvdGggPGk+c3RhcnQ8L2k+IGFuZCA8aT5maW5pc2g8L2k+IGFyZSA8aT5ldmFsdWF0ZWQgcGFyYW1ldGVyczwvaT4uJm5ic3A7CgkJCVRoaXMgaW1wbGllcyB0aGF0IHRoZXkgY2FuIGluY2x1ZGUgc2ltcGxlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgKHN1Y2ggYXMgPGk+MTwvaT4gKyA8aT4zPC9pPiksIGV0Yy4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpcyBhdXRvbWF0aWNhbGx5IHVuZGVmaW5lZCBmb3IgcmV1c2UgYnkgYSBjYWxsIHRvIDxiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2I+LgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9pdGVyYXRpb24uaHRtbCI+Qk9PU1RfUFBfTElNSVRfSVRFUkFUSU9OPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsb2NhbF9pdGVyYXRlLmh0bWwiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9pdGVyYXRpb24vbG9jYWwuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA8L2E+Jmd0OwoKdGVtcGxhdGUmbHQ7aW50Jmd0OyBzdHJ1Y3Qgc2FtcGxlOwoKI2RlZmluZSA8YSBocmVmPSJsb2NhbF9tYWNyby5odG1sIj5CT09TVF9QUF9MT0NBTF9NQUNSTzwvYT4obikgXAogICB0ZW1wbGF0ZSZsdDsmZ3Q7IHN0cnVjdCBzYW1wbGUmbHQ7biZndDsgeyBcCiAgICAgIGVudW0geyB2YWx1ZSA9IG4gfTsgXAogICB9OyBcCiAgIC8qKi8KCiNkZWZpbmUgPGEgaHJlZj0ibG9jYWxfbGltaXRzLmh0bWwiPkJPT1NUX1BQX0xPQ0FMX0xJTUlUUzwvYT4gKDEsIDUpCgojaW5jbHVkZSA8YSBocmVmPSJsb2NhbF9pdGVyYXRlLmh0bWwiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2E+KCkKLyogZXhwYW5kcyB0by4uLgp0ZW1wbGF0ZSZsdDsmZ3Q7IHN0cnVjdCBzYW1wbGUmbHQ7MSZndDsgeyBlbnVtIHsgdmFsdWUgPSAxIH07IH07CnRlbXBsYXRlJmx0OyZndDsgc3RydWN0IHNhbXBsZSZsdDsyJmd0OyB7IGVudW0geyB2YWx1ZSA9IDIgfTsgfTsKdGVtcGxhdGUmbHQ7Jmd0OyBzdHJ1Y3Qgc2FtcGxlJmx0OzMmZ3Q7IHsgZW51bSB7IHZhbHVlID0gMyB9OyB9Owp0ZW1wbGF0ZSZsdDsmZ3Q7IHN0cnVjdCBzYW1wbGUmbHQ7NCZndDsgeyBlbnVtIHsgdmFsdWUgPSA0IH07IH07CnRlbXBsYXRlJmx0OyZndDsgc3RydWN0IHNhbXBsZSZsdDs1Jmd0OyB7IGVudW0geyB2YWx1ZSA9IDUgfTsgfTsKKi8KPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=