PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0RFRFVDRV9EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfREVEVUNFX0Q8L2I+IG1hY3JvIG1hbnVhbGx5IGRlZHVjZXMgdGhlIHN0YXRlIG9mIHRoZSA8Yj5CT09TVF9QUF9XSElMRTwvYj4gY29uc3RydWN0LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9ERURVQ0VfRDwvYj4oKQoJCTwvZGl2PgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gaXMgaW50ZW5kZWQgdG8gYXZvaWQgdGhlIHVzZSBvZiA8aT5hdXRvbWF0aWMtcmVjdXJzaW9uPC9pPiBhdCBkZWVwIGV4cGFuc2lvbiBkZXB0aHMuJm5ic3A7CgkJCTxpPkF1dG9tYXRpYy1yZWN1cnNpb248L2k+IGF0IHN1Y2ggZGVwdGhzIGNhbiBiZSBpbmVmZmljaWVudCBvbiBzb21lIHByZXByb2Nlc3NvcnMuJm5ic3A7CgkJCUl0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IHdpdGggdGhlIGludm9jYXRpb24gb2YgbWFjcm9zIHdpdGggYSA8Yj5fRDwvYj4gc3VmZml4IHN1Y2ggYXM6CgkJCTxkaXY+CgkJCQk8Yj5CT09TVF9QUF9BRERfRDwvYj4oPGI+Qk9PU1RfUFBfREVEVUNFX0Q8L2I+KCksIDxpPng8L2k+LCA8aT55PC9pPikKCQkJPC9kaXY+CgkJCUlmIGl0IGlzIHVzZWQgaW4gdGhpcyBjb250ZXh0LCB0aGUgPGI+X0Q8L2I+IG1hY3JvIHdpbGwgZmFpbC4mbmJzcDsKCQkJVGhlIDxiPl9EPC9iPiBtYWNyb3MgZGlyZWN0bHkgY29uY2F0ZW5hdGUgdG8gdGhlIDxpPmQ8L2k+IHBhcmFtZXRlciB0aGF0IGlzIHBhc3NlZCB0byB0aGVtLAoJCQl3aGljaCB3b3VsZCBwcmV2ZW50IDxiPkJPT1NUX1BQX0RFRFVDRV9EPC9iPigpIGZyb20gZXhwYW5kaW5nLiZuYnNwOwoJCQlGdXJ0aGVybW9yZSwgaXQgaXMgcG9pbnRsZXNzIHRvIHVzZSB0aGlzIG1hY3JvIGluIGEgc2l0dWF0aW9uIHN1Y2ggYXMgdGhpcwoJCQliZWNhdXNlIGl0IHdvdWxkIGFscmVhZHkgYmUgdG9vIGxhdGUgdG8gZ2FpbiBhbnkgZWZmaWNpZW5jeS4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0id2hpbGUuaHRtbCI+Qk9PU1RfUFBfV0hJTEU8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9jb250cm9sL2RlZHVjZV9kLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZWR1Y2VfZC5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL2FkZC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvYXJpdGhtZXRpYy9pbmMuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2FyaXRobWV0aWMvc3ViLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9jb250cm9sL2RlZHVjZV9kLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL3JlcGVhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvdHVwbGUvZWxlbS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA8L2E+Jmd0OwoKI2RlZmluZSBSQU5HRShmaXJzdCwgbGFzdCkgXAogICA8YSBocmVmPSJyZXBlYXQuaHRtbCI+Qk9PU1RfUFBfUkVQRUFUPC9hPiggXAogICAgICA8YSBocmVmPSJpbmMuaHRtbCI+Qk9PU1RfUFBfSU5DPC9hPiggXAogICAgICAgICA8YSBocmVmPSJzdWIuaHRtbCI+Qk9PU1RfUFBfU1VCPC9hPihsYXN0LCBmaXJzdCkgXAogICAgICApLCBcCiAgICAgIFJBTkdFX00sIFwKICAgICAgKGZpcnN0LCA8YSBocmVmPSJkZWR1Y2VfZC5odG1sIj5CT09TVF9QUF9ERURVQ0VfRDwvYT4oKSkgXAogICApIFwKICAgLyoqLwoKI2RlZmluZSBSQU5HRV9NKHosIG4sIGRhdGEpIFwKICAgUkFOR0VfTV8yKCBcCiAgICAgIG4sIFwKICAgICAgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigyLCAwLCBkYXRhKSwgXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDIsIDEsIGRhdGEpIFwKICAgKSBcCiAgIC8qKi8KCiNkZWZpbmUgUkFOR0VfTV8yKG4sIGZpcnN0LCBkKSBcCiAgIDxhIGhyZWY9ImNvbW1hX2lmLmh0bWwiPkJPT1NUX1BQX0NPTU1BX0lGPC9hPihuKSA8YSBocmVmPSJhZGRfZC5odG1sIj5CT09TVF9QUF9BRERfRDwvYT4oZCwgbiwgZmlyc3QpIFwKICAgLyoqLwoKUkFOR0UoNSwgMTApIC8vIGV4cGFuZHMgdG8gNSwgNiwgNywgOCwgOSwgMTAKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=