ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYTQ2MzdmZC4uYjY2N2M4ZSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTE0LDI2MSArMTQsMjYwIEBACiAjIFBvd2VyUEMgU3lzdGVtczoJCQkJCQkJIwogIwkJCQkJCQkJCSMKICMgTWFpbnRhaW5lciBOYW1lLCBFbWFpbCBBZGRyZXNzCQkJCQkjCi0jCUJvYXJkCQkJQ1BVCQkJCQkjCisjCUJvYXJkCQlDUFUJCQkJCQkjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIEdyZWcgQWxsZW4gPGdhbGxlbkBhcmx1dC51dGV4YXMuZWR1PgogCi0JVVRYODI0NQkJCU1QQzgyNDUKKwlVVFg4MjQ1CQlNUEM4MjQ1CiAKIFBhbnRlbGlzIEFudG9uaW91IDxwYW50b0BpbnRyYWNvbS5ncj4KIAotCU5FVFZJQQkJCU1QQzh4eAorCU5FVFZJQQkJTVBDOHh4CiAKIFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KIAotCWNwY2k1MjAwCQlNUEM1MjAwCi0JbWVjcDUyMDAJCU1QQzUyMDAKLQlwZjUyMDAJCQlNUEM1MjAwCisJY3BjaTUyMDAJTVBDNTIwMAorCW1lY3A1MjAwCU1QQzUyMDAKKwlwZjUyMDAJCU1QQzUyMDAKIAotCUNQQ0k3NTAJCQlQUEM3NTBGWC9HWAorCUNQQ0k3NTAJCVBQQzc1MEZYL0dYCiAKIFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CiAKLQlBZGRlcgkJCU1QQzg3eC9NUEM4NTJUCi0JZXA4MjQ4CQkJTVBDODI0OAotCUlTUEFOCQkJTVBDODI2MAotCU1QQzgyNjBBRFMJCU1QQzgyNngvTVBDODI3eC9NUEM4MjgwCi0JUmF0dGxlcgkJCU1QQzgyNDgKLQlaUEMxOTAwCQkJTVBDODI2NQorCUFkZGVyCQlNUEM4N3gvTVBDODUyVAorCWVwODI0OAkJTVBDODI0OAorCUlTUEFOCQlNUEM4MjYwCisJTVBDODI2MEFEUwlNUEM4MjZ4L01QQzgyN3gvTVBDODI4MAorCVJhdHRsZXIJCU1QQzgyNDgKKwlaUEMxOTAwCQlNUEM4MjY1CiAKIE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgogCi0JTVBDODMyM0VSREIJCU1QQzgzMjMKKwlNUEM4MzIzRVJEQglNUEM4MzIzCiAKIEplcnJ5IFZhbiBCYXJlbiA8Z2VyYWxkLnZhbmJhcmVuQHNtaXRocy1hZXJvc3BhY2UuY29tPgogCi0Jc2Fjc25nCQkJTVBDODI2MAorCXNhY3NuZwkJTVBDODI2MAogCiBPbGl2ZXIgQnJvd24gPG9icm93bkBhZHZlbnRuZXR3b3Jrcy5jb20+CiAKLQlndzgyNjAJCQlNUEM4MjYwCisJZ3c4MjYwCQlNUEM4MjYwCiAKIENvbm4gQ2xhcmsgPGNsYXJrQGVzdGVlbS5jb20+CiAKLQlFU1RFRU0xOTJFCQlNUEM4eHgKKwlFU1RFRU0xOTJFCU1QQzh4eAogCiBKb2UgRCdBYmJyYWNjaW8gPGxqZDAxNUBmcmVlc2NhbGUuY29tPgogCi0JTVBDODM3eEVSREIJCU1QQzgzN3gKKwlNUEM4Mzd4RVJEQglNUEM4Mzd4CiAKIEvhcmkgRGF27fBzc29uIDxrZEBmbGFnYS5pcz4KIAotCUZMQUdBRE0JCQlNUEM4MjMKKwlGTEFHQURNCQlNUEM4MjMKIAogVG9yc3RlbiBEZW1rZSA8dG9yc3Rlbi5kZW1rZUBmY2kuY29tPgogCi0JZVhhbGlvbgkJCU1QQzgyNHgKKwllWGFsaW9uCQlNUEM4MjR4CiAKIFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAKLQlJY2VDdWJlXzUxMDAJCU1HVDUxMDAKLQlJY2VDdWJlXzUyMDAJCU1QQzUyMDAKKwlJY2VDdWJlXzUxMDAJTUdUNTEwMAorCUljZUN1YmVfNTIwMAlNUEM1MjAwCiAKLQlBTVg4NjAJCQlNUEM4NjAKLQlFVFgwOTQJCQlNUEM4NTAKLQlGUFM4NTBMCQkJTVBDODUwCi0JRlBTODYwTAkJCU1QQzg2MAotCUlDVTg2MgkJCU1QQzg2MgotCUlQODYwCQkJTVBDODYwCi0JSVZNTDI0CQkJTVBDODYwCi0JSVZNTDI0XzEyOAkJTVBDODYwCi0JSVZNTDI0XzI1NgkJTVBDODYwCi0JSVZNUzgJCQlNUEM4NjAKLQlJVk1TOF8xMjgJCU1QQzg2MAotCUlWTVM4XzI1NgkJTVBDODYwCi0JTEFOVEVDCQkJTVBDODUwCi0JTFdNT04JCQlNUEM4MjMKLQlOQzY1MAkJCU1QQzg1MgotCVIzNjBNUEkJCQlNUEM4MjMKLQlSTVUJCQlNUEM4NTAKLQlSUnZpc2lvbgkJTVBDODIzCi0JU004NTAJCQlNUEM4NTAKLQlTUEQ4MjNUUwkJTVBDODIzCi0JVFFNODIzTAkJCU1QQzgyMwotCVRRTTgyM0xfTENECQlNUEM4MjMKLQlUUU04NTBMCQkJTVBDODUwCi0JVFFNODU1TAkJCU1QQzg1NQotCVRRTTg2MEwJCQlNUEM4NjAKLQlUUU04NjBMX0ZFQwkJTVBDODYwCi0JYzJtb24JCQlNUEM4NTUKLQloZXJtZXMJCQlNUEM4NjAKLQlsd21vbgkJCU1QQzgyMwotCXBjdV9lCQkJTVBDODU1CisJQU1YODYwCQlNUEM4NjAKKwlFVFgwOTQJCU1QQzg1MAorCUZQUzg1MEwJCU1QQzg1MAorCUZQUzg2MEwJCU1QQzg2MAorCUlDVTg2MgkJTVBDODYyCisJSVA4NjAJCU1QQzg2MAorCUlWTUwyNAkJTVBDODYwCisJSVZNTDI0XzEyOAlNUEM4NjAKKwlJVk1MMjRfMjU2CU1QQzg2MAorCUlWTVM4CQlNUEM4NjAKKwlJVk1TOF8xMjgJTVBDODYwCisJSVZNUzhfMjU2CU1QQzg2MAorCUxBTlRFQwkJTVBDODUwCisJTFdNT04JCU1QQzgyMworCU5DNjUwCQlNUEM4NTIKKwlSMzYwTVBJCQlNUEM4MjMKKwlSTVUJCU1QQzg1MAorCVJSdmlzaW9uCU1QQzgyMworCVNNODUwCQlNUEM4NTAKKwlTUEQ4MjNUUwlNUEM4MjMKKwlUUU04MjNMCQlNUEM4MjMKKwlUUU04MjNMX0xDRAlNUEM4MjMKKwlUUU04NTBMCQlNUEM4NTAKKwlUUU04NTVMCQlNUEM4NTUKKwlUUU04NjBMCQlNUEM4NjAKKwlUUU04NjBMX0ZFQwlNUEM4NjAKKwljMm1vbgkJTVBDODU1CisJaGVybWVzCQlNUEM4NjAKKwlsd21vbgkJTVBDODIzCisJcGN1X2UJCU1QQzg1NQogCi0JQ1U4MjQJCQlNUEM4MjQwCi0JU2FuZHBvaW50ODI0MAkJTVBDODI0MAotCVNMODI0NQkJCU1QQzgyNDUKKwlDVTgyNAkJTVBDODI0MAorCVNhbmRwb2ludDgyNDAJTVBDODI0MAorCVNMODI0NQkJTVBDODI0NQogCi0JQVRDCQkJTVBDODI1MAotCVBNODI1CQkJTVBDODI1MAorCUFUQwkJTVBDODI1MAorCVBNODI1CQlNUEM4MjUwCiAKLQlUUU04MjU1CQkJTVBDODI1NQorCVRRTTgyNTUJCU1QQzgyNTUKIAotCUNQVTg2CQkJTVBDODI2MAotCVBNODI2CQkJTVBDODI2MAotCVRRTTgyNjAJCQlNUEM4MjYwCisJQ1BVODYJCU1QQzgyNjAKKwlQTTgyNgkJTVBDODI2MAorCVRRTTgyNjAJCU1QQzgyNjAKIAotCVAzRzQJCQlNUEM3NDEwCisJUDNHNAkJTVBDNzQxMAogCi0JUENJUFBDMgkJCU1QQzc1MAotCVBDSVBQQzYJCQlNUEM3NTAKKwlQQ0lQUEMyCQlNUEM3NTAKKwlQQ0lQUEM2CQlNUEM3NTAKIAotCUVYQklUR0VOCQlQUEM0MDVHUAorCUVYQklUR0VOCVBQQzQwNUdQCiAKIEpvbiBEaWVrZW1hIDxqb24uZGlla2VtYUBzbWl0aHMtYWVyb3NwYWNlLmNvbT4KIAotCXNiYzgyNjAJCQlNUEM4MjYwCisJc2JjODI2MAkJTVBDODI2MAogCiBEYXZlIEVsbGlzIDxER0VAc2l4bmV0aW8uY29tPgogCi0JU1hOSTg1NVQJCU1QQzh4eAorCVNYTkk4NTVUCU1QQzh4eAogCiBUaG9tYXMgRnJpZWRlbiA8VGhvbWFzRkBoeXBlcmlvbi1lbnRlcnRhaW5tZW50LmNvbT4KIAotCUFtaWdhT25lRzNTRQkJTVBDN3h4CisJQW1pZ2FPbmVHM1NFCU1QQzd4eAogCiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KIAotCUFEQ0lPUAkJCUlPUDQ4MCAoUFBDNDAxKQotCUFQQzQwNQkJCVBQQzQwNUdQCi0JQVI0MDUJCQlQUEM0MDVHUAotCUFTSDQwNQkJCVBQQzQwNUVQCi0JQ0FOQlQJCQlQUEM0MDVDUgotCUNQQ0kyRFAJCQlQUEM0MDVHUAotCUNQQ0k0MDUJCQlQUEM0MDVHUAotCUNQQ0k0MDUyCQlQUEM0MDVHUAotCUNQQ0k0MDVBQgkJUFBDNDA1R1AKLQlDUENJNDA1RFQJCVBQQzQwNUdQCi0JQ1BDSUlTRVI0CQlQUEM0MDVHUAotCURBU0FfU0lNCQlJT1A0ODAgKFBQQzQwMSkKLQlEUDQwNQkJCVBQQzQwNUVQCi0JRFU0MDUJCQlQUEM0MDVHUAotCURVNDQwCQkJUFBDNDQwRVB4Ci0JRzIwMDAJCQlQUEM0MDVFUAotCUhINDA1CQkJUFBDNDA1RVAKLQlIVUI0MDUJCQlQUEM0MDVFUAotCU9DUlRDCQkJUFBDNDA1R1AKLQlPUlNHCQkJUFBDNDA1R1AKLQlQQ0k0MDUJCQlQUEM0MDVHUAotCVBMVTQwNQkJCVBQQzQwNUVQCi0JUE1DNDA1CQkJUFBDNDA1R1AKLQlQTUM0NDAJCQlQUEM0NDBFUHgKLQlWT0g0MDUJCQlQUEM0MDVFUAotCVZPTTQwNQkJCVBQQzQwNUVQCi0JV1VINDA1CQkJUFBDNDA1RVAKLQlDTVM3MDAJCQlQUEM0MDVFUAorCUFEQ0lPUAkJSU9QNDgwIChQUEM0MDEpCisJQVBDNDA1CQlQUEM0MDVHUAorCUFSNDA1CQlQUEM0MDVHUAorCUFTSDQwNQkJUFBDNDA1RVAKKwlDQU5CVAkJUFBDNDA1Q1IKKwlDUENJMkRQCQlQUEM0MDVHUAorCUNQQ0k0MDUJCVBQQzQwNUdQCisJQ1BDSTQwNTIJUFBDNDA1R1AKKwlDUENJNDA1QUIJUFBDNDA1R1AKKwlDUENJNDA1RFQJUFBDNDA1R1AKKwlDUENJSVNFUjQJUFBDNDA1R1AKKwlEQVNBX1NJTQlJT1A0ODAgKFBQQzQwMSkKKwlEUDQwNQkJUFBDNDA1RVAKKwlEVTQwNQkJUFBDNDA1R1AKKwlEVTQ0MAkJUFBDNDQwRVB4CisJRzIwMDAJCVBQQzQwNUVQCisJSEg0MDUJCVBQQzQwNUVQCisJSFVCNDA1CQlQUEM0MDVFUAorCU9DUlRDCQlQUEM0MDVHUAorCU9SU0cJCVBQQzQwNUdQCisJUENJNDA1CQlQUEM0MDVHUAorCVBMVTQwNQkJUFBDNDA1RVAKKwlQTUM0MDUJCVBQQzQwNUdQCisJUE1DNDQwCQlQUEM0NDBFUHgKKwlWT0g0MDUJCVBQQzQwNUVQCisJVk9NNDA1CQlQUEM0MDVFUAorCVdVSDQwNQkJUFBDNDA1RVAKKwlDTVM3MDAJCVBQQzQwNUVQCiAKIE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CiAKLQlIQ1U0CQkJUFBDNDA1R1ByCi0JTUNVMjUJCQlQUEM0MDVHUHIKLQlIQ1U1CQkJUFBDNDQwRVB4CisJSENVNAkJUFBDNDA1R1ByCisJTUNVMjUJCVBQQzQwNUdQcgorCUhDVTUJCVBQQzQ0MEVQeAogCiBGcmFuayBHb3R0c2NobGluZyA8ZmdvdHRzY2hsaW5nQGVsdGVjLmRlPgogCi0JTUhQQwkJCU1QQzh4eAorCU1IUEMJCU1QQzh4eAogCi0JQkFCN3h4CQkJTVBDNzQwL01QQzc1MAorCUJBQjd4eAkJTVBDNzQwL01QQzc1MAogCiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BkZW54LmRlPgogCi0JQ0NNCQkJTVBDODU1CisJQ0NNCQlNUEM4NTUKIAotCVBONjIJCQlNUEM4MjQwCi0KLQlJUEhBU0U0NTM5CQlNUEM4MjYwCi0JU0NNCQkJTVBDODI2MAorCVBONjIJCU1QQzgyNDAKKwlJUEhBU0U0NTM5CU1QQzgyNjAKKwlTQ00JCU1QQzgyNjAKIAogSG93YXJkIEdyYXkgPG12c2Vuc29yQG1hdHJpeC12aXNpb24uZGU+CiAKLQlNVlMxCQkJTVBDODIzCisJTVZTMQkJTVBDODIzCiAKIEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAKLQlzYmM4NTQ4CQkJTVBDODU0OAotCXNiYzg2NDFkCQlNUEM4NjQxRAorCXNiYzg1NDgJCU1QQzg1NDgKKwlzYmM4NjQxZAlNUEM4NjQxRAogCiBLbGF1cyBIZXlkZWNrIDxoZXlkZWNrQGtpZWJhY2stcGV0ZXIuZGU+CiAKLQlLVVA0SwkJCU1QQzg1NQotCUtVUDRYCQkJTVBDODU5CisJS1VQNEsJCU1QQzg1NQorCUtVUDRYCQlNUEM4NTkKIAogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CiAKLQlxdWFkMTAwaGQJCVBQQzQwNUVQCisJcXVhZDEwMGhkCVBQQzQwNUVQCiAKIE11cnJheSBKZW5zZW4gPE11cnJheS5KZW5zZW5AY3Npcm8uYXU+CiAKLQljb2dlbnRfbXBjOHh4CQlNUEM4eHgKKwljb2dlbnRfbXBjOHh4CU1QQzh4eAogCi0JY29nZW50X21wYzgyNjAJCU1QQzgyNjAKLQloeW1vZAkJCU1QQzgyNjAKKwljb2dlbnRfbXBjODI2MAlNUEM4MjYwCisJaHltb2QJCU1QQzgyNjAKIAogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAKLQlrb3JhdAkJCVBQQzQ0MEVQeAorCWtvcmF0CQlQUEM0NDBFUHgKIAogQnJhZCBLZW1wIDxCcmFkLktlbXBAc2VyYW5vYS5jb20+CiAKLQlwcG1jODI2MAkJTVBDODI2MAorCXBwbWM4MjYwCU1QQzgyNjAKIAogU2FuZ21vb24gS2ltIDxkb2dvaWxAZXRpbnN5cy5jb20+CiAKLQlkZWJyaXMJCQlNUEM4MjQ1Ci0JS1ZNRTA4MAkJCU1QQzgyNDUKKwlkZWJyaXMJCU1QQzgyNDUKKwlLVk1FMDgwCQlNUEM4MjQ1CiAKIFRob21hcyBMYW5nZSA8dGhvbWFzQGNvcmVsYXR1cy5zZT4KIAotCUdUSAkJCU1QQzg2MAorCUdUSAkJTVBDODYwCiAKIFJvYmVydCBMYXphcnNraSA8cm9iZXJ0bGF6YXJza2lAZ21haWwuY29tPgogCi0JQVRVTTg1NDgJCU1QQzg1NDgKKwlBVFVNODU0OAlNUEM4NTQ4CiAKIFRoZSBMRU9YIHRlYW0gPHRlYW1AbGVveC5vcmc+CiAKLQlFTFBUODYwCQkJTVBDODYwVAorCUVMUFQ4NjAJCU1QQzg2MFQKIAogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KIAotCU1QQzgzMTVFUkRCCQlNUEM4MzE1Ci0JTVBDODMyWEVNRFMJCU1QQzgzMngKLQlNUEM4MzYwRU1EUwkJTVBDODM2MAotCU1QQzgzN1hFTURTCQlNUEM4Mzd4CisJTVBDODMxNUVSREIJTVBDODMxNQorCU1QQzgzMlhFTURTCU1QQzgzMngKKwlNUEM4MzYwRU1EUwlNUEM4MzYwCisJTVBDODM3WEVNRFMJTVBDODM3eAogCiBOeWUgTGl1IDxueWV0QHp1bWFuZXR3b3Jrcy5jb20+CiAKLQlaVU1BCQkJTVBDN3h4Xzc0eHgKKwlaVU1BCQlNUEM3eHhfNzR4eAogCiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogCi0JTVBDODU0MEFEUwkJTVBDODU0MAotCU1QQzg1NjBBRFMJCU1QQzg1NjAKLQlNUEM4NTQxQ0RTCQlNUEM4NTQxCi0JTVBDODU1NUNEUwkJTVBDODU1NQorCU1QQzg1NDBBRFMJTVBDODU0MAorCU1QQzg1NjBBRFMJTVBDODU2MAorCU1QQzg1NDFDRFMJTVBDODU0MQorCU1QQzg1NTVDRFMJTVBDODU1NQogCi0JTVBDODY0MUhQQ04JCU1QQzg2NDFECisJTVBDODY0MUhQQ04JTVBDODY0MUQKIAogRGFuIE1hbGVrIDxkYW5AZW1iZWRkZWRhbGxleS5jb20+CiAKLQlzdHhncDMJCQlNUEM4NXh4Ci0Jc3R4c3NhCQkJTVBDODV4eAotCXN0eHh0YwkJCU1QQzh4eAorCXN0eGdwMwkJTVBDODV4eAorCXN0eHNzYQkJTVBDODV4eAorCXN0eHh0YwkJTVBDOHh4CiAKIEVyYW4gTWFuIDxlcmFuQG5iYXNlLmNvLmlsPgogCi0JRVZCNjQyNjBfNzUwQ1gJCU1QQzc1MENYCisJRVZCNjQyNjBfNzUwQ1gJTVBDNzUwQ1gKIAogQW5kcmVhICJsbGFuZHJlIiBNYXJzb24gPGFuZHJlYS5tYXJzb25AZGF2ZS10ZWNoLml0PgogCkBAIC0yNzYsNzUgKzI3NSw3NSBAQAogCiBSZWluaGFyZCBNZXllciA8ci5tZXllckBlbWstZWxla3Ryb25pay5kZT4KIAotCVRPUDg2MAkJCU1QQzg2MFQKLQlUT1A1MjAwCQkJTVBDNTIwMAorCVRPUDg2MAkJTVBDODYwVAorCVRPUDUyMDAJCU1QQzUyMDAKIAogVG9sdW5heSBPcmt1biA8dG9ya3VuQG5leHRpby5jb20+CiAKLQljc2IyNzIJCQlQUEM0MDVHUAotCWNzYjQ3MgkJCVBQQzQwNUdQCisJY3NiMjcyCQlQUEM0MDVHUAorCWNzYjQ3MgkJUFBDNDA1R1AKIAogSm9obiBPdGtlbiA8am90a2VuQHNvZnRhZHZhbmNlcy5jb20+CiAKLQlsdWFuCQkJUFBDNDQwU1AKLQl0YWlodQkJCVBQQzQwNUVQCisJbHVhbgkJUFBDNDQwU1AKKwl0YWlodQkJUFBDNDA1RVAKIAogS2VpdGggT3V0d2F0ZXIgPEtlaXRoX091dHdhdGVyQG12aXMuY29tPgogCi0JR0VOODYwVAkJCU1QQzg2MFQKLQlHRU44NjBUX1NDCQlNUEM4NjBUCisJR0VOODYwVAkJTVBDODYwVAorCUdFTjg2MFRfU0MJTVBDODYwVAogCiBGcmFuayBQYW5ubyA8ZnBhbm5vQGRlbHBoaW50ZWNoLmNvbT4KIAotCWVwODI2MAkJCU1QQzgyNjAKKwllcDgyNjAJCU1QQzgyNjAKIAogRGVuaXMgUGV0ZXIgPGQucGV0ZXJAbXBsLmNoPgogCi0JTUlQNDA1CQkJUFBDNHh4Ci0JUElQNDA1CQkJUFBDNHh4CisJTUlQNDA1CQlQUEM0eHgKKwlQSVA0MDUJCVBQQzR4eAogCiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogCi0JTVBDODM0OUVNRFMJCU1QQzgzNDkKKwlNUEM4MzQ5RU1EUwlNUEM4MzQ5CiAKIERhbmllbCBQb2lyb3QgPGRhbi5wb2lyb3RAd2luZHJpdmVyLmNvbT4KIAotCXNiYzgyNDAJCQlNUEM4MjQwCi0Jc2JjNDA1CQkJUFBDNDA1R1AKKwlzYmM4MjQwCQlNUEM4MjQwCisJc2JjNDA1CQlQUEM0MDVHUAogCiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAKLQlQM003NDQ4CQkJTVBDNzQ0OAorCVAzTTc0NDgJCU1QQzc0NDgKIAotCXVjMTAwCQkJTVBDODU3CisJdWMxMDAJCU1QQzg1NwogCi0JVFFNODV4eAkJCU1QQzg1NDAvODU0MS84NTU1Lzg1NjAKKwlUUU04NXh4CQlNUEM4NTQwLzg1NDEvODU1NS84NTYwCiAKLQlhY2FkaWEJCQlQUEM0MDVFWgotCWFscHIJCQlQUEM0NDBHWAotCWJhbWJvbwkJCVBQQzQ0MEVQCi0JYnVuYmluZ2EJCVBQQzQwNUVQCi0JY2FueW9ubGFuZHMJCVBQQzQ2MEVYCi0JZWJvbnkJCQlQUEM0NDBHUAotCWdsYWNpZXIJCQlQUEM0NjBHVAotCWhhbGVha2FsYQkJUFBDNDA1RVhyCi0Ja2F0bWFpCQkJUFBDNDQwU1BlCi0Ja2lsYXVlYQkJCVBQQzQwNUVYCi0JbHdtb241CQkJUFBDNDQwRVB4Ci0JbWFrYWx1CQkJUFBDNDA1RVgKLQlvY290ZWEJCQlQUEM0NDBHWAotCXAzcDQ0MAkJCVBQQzQ0MEdQCi0JcGNzNDQwZXAJCVBQQzQ0MEVQCi0JcmFpbmllcgkJCVBQQzQ0MEdSeAotCXNlcXVvaWEJCQlQUEM0NDBFUHgKLQlzeWNhbW9yZQkJUFBDNDA1R1ByCi0JdGFpc2hhbgkJCVBQQzQ0MEdYCi0Jd2FsbnV0CQkJUFBDNDA1R1AKLQl5ZWxsb3dzdG9uZQkJUFBDNDQwR1IKLQl5b3NlbWl0ZQkJUFBDNDQwRVAKLQl6ZXVzCQkJUFBDNDA1RVAKKwlhY2FkaWEJCVBQQzQwNUVaCisJYWxwcgkJUFBDNDQwR1gKKwliYW1ib28JCVBQQzQ0MEVQCisJYnVuYmluZ2EJUFBDNDA1RVAKKwljYW55b25sYW5kcwlQUEM0NjBFWAorCWVib255CQlQUEM0NDBHUAorCWdsYWNpZXIJCVBQQzQ2MEdUCisJaGFsZWFrYWxhCVBQQzQwNUVYcgorCWthdG1haQkJUFBDNDQwU1BlCisJa2lsYXVlYQkJUFBDNDA1RVgKKwlsd21vbjUJCVBQQzQ0MEVQeAorCW1ha2FsdQkJUFBDNDA1RVgKKwlvY290ZWEJCVBQQzQ0MEdYCisJcDNwNDQwCQlQUEM0NDBHUAorCXBjczQ0MGVwCVBQQzQ0MEVQCisJcmFpbmllcgkJUFBDNDQwR1J4CisJc2VxdW9pYQkJUFBDNDQwRVB4CisJc3ljYW1vcmUJUFBDNDA1R1ByCisJdGFpc2hhbgkJUFBDNDQwR1gKKwl3YWxudXQJCVBQQzQwNUdQCisJeWVsbG93c3RvbmUJUFBDNDQwR1IKKwl5b3NlbWl0ZQlQUEM0NDBFUAorCXpldXMJCVBQQzQwNUVQCiAKLQlQM003NTAJCQlQUEM3NTBGWC9HWC9HTAorCVAzTTc1MAkJUFBDNzUwRlgvR1gvR0wKIAogWXVzZGkgU2FudG9zbyA8eXVzZGlfc2FudG9zb0BhZGFwdGVjLmNvbT4KIApAQCAtMzUyLDczICszNTEsNzMgQEAKIAogVHJhdmlzIFNhd3llciAodHJhdmlzLnNhd3llckBzYW5kYnVyc3QuY29tPgogCi0JS0FSRUYJCQlQUEM0NDBHWAotCU1FVFJPQk9YCQlQUEM0NDBHWAotCVhQRURJVEUxSwkJUFBDNDQwR1gKKwlLQVJFRgkJUFBDNDQwR1gKKwlNRVRST0JPWAlQUEM0NDBHWAorCVhQRURJVEUxSwlQUEM0NDBHWAogCiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KIAotCWlkczgyNDcJCQlNUEM4MjQ3Ci0JanVwaXRlcgkJCU1QQzUyMDAKLQltZ2NvZ2UJCQlNUEM4MjQ3Ci0JbWdzdXZkCQkJTVBDODUyCi0JbXVuaWNzZQkJCU1QQzUyMDAKLQlzYzMJCQlQUEM0MDVHUAotCXVjMTAxCQkJTVBDNTIwMAorCWlkczgyNDcJCU1QQzgyNDcKKwlqdXBpdGVyCQlNUEM1MjAwCisJbWdjb2dlCQlNUEM4MjQ3CisJbWdzdXZkCQlNUEM4NTIKKwltdW5pY3NlCQlNUEM1MjAwCisJc2MzCQlQUEM0MDVHUAorCXVjMTAxCQlNUEM1MjAwCiAKIAogUGV0ZXIgRGUgU2NocmlqdmVyIDxwMkBtaW5kLmJlPgogCi0JTUwyCQkJUFBDNHh4CisJTUwyCQlQUEM0eHgKIAogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogCi0JbXZibG03CQkJTVBDODM0MworCW12YmxtNwkJTVBDODM0MwogCiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogCi0JTVBDODM0OUUtbUlUWAkJTVBDODM0OQotCU1QQzgzNDlFLW1JVFgtR1AJTVBDODM0OQorCU1QQzgzNDlFLW1JVFgJTVBDODM0OQorCU1QQzgzNDlFLW1JVFgtR1AgTVBDODM0OQogCiBFcmlrIFRoZWlzZW4gPGV0aGVpc2VuQG1pbmRzcHJpbmcuY29tPgogCi0JVzdPTE1DCQkJUFBDNHh4Ci0JVzdPTE1HCQkJUFBDNHh4CisJVzdPTE1DCQlQUEM0eHgKKwlXN09MTUcJCVBQQzR4eAogCiBKaW0gVGhvbXBzb24gPGppbUBtdXNlbmtpLmNvbT4KIAotCU1VU0VOS0kJCQlNUEM4MjQ1LzgyNDEKLQlTYW5kcG9pbnQ4MjQ1CQlNUEM4MjQ1CisJTVVTRU5LSQkJTVBDODI0NS84MjQxCisJU2FuZHBvaW50ODI0NQlNUEM4MjQ1CiAKIFJ1bmUgVG9yZ2Vyc2VuIDxydW5ldEBpbm5vdnN5cy5jb20+CiAKLQlNUEM4MjY2QURTCQlNUEM4MjY2CisJTVBDODI2NkFEUwlNUEM4MjY2CiAKIAogRGF2aWQgVXBkZWdyYWZmIDxkYXZlQGNyYXkuY29tPgogCi0JQ1JBWUwxCQkJUFBDNHh4CisJQ1JBWUwxCQlQUEM0eHgKIAogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAKLQlNUEM4MzYwRVJESwkJTVBDODM2MAorCU1QQzgzNjBFUkRLCU1QQzgzNjAKIAogSm9zZWYgV2FnbmVyIDxXYWduZXJATWljcm9zeXMuZGU+CiAKLQlDUEM0NQkJCU1QQzgyNDUKLQlQTTUyMAkJCU1QQzUyMDAKKwlDUEM0NQkJTVBDODI0NQorCVBNNTIwCQlNUEM1MjAwCiAKIFN0ZXBoZW4gV2lsbGlhbXMgPHN0ZXZlQGljYXJ1cy5jb20+CiAKLQlKU0UJCQlQUEM0MDVHUHIKKwlKU0UJCVBQQzQwNUdQcgogCiBKb2huIFpoYW4gPHpoYW56QHNpbm92ZWUuY29tPgogCi0Jc3ZtX3NjOHh4CQlNUEM4eHgKKwlzdm1fc2M4eHgJTVBDOHh4CiAKIEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgogCi0JbGlua3N0YXRpb24JCU1QQzgyNDEKKwlsaW5rc3RhdGlvbglNUEM4MjQxCiAKIEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgogCkBAIC00MjcsMzMyICs0MjYsMzMyIEBACiAKIFVua25vd24gLyBvcnBoYW5lZCBib2FyZHM6CiAKLQlBRFM4NjAJCQlNUEM4eHgKLQlGQURTODIzCQkJTVBDOHh4Ci0JRkFEUzg1MFNBUgkJTVBDOHh4Ci0JRkFEUzg2MFQJCU1QQzh4eAotCUdFTklFVFYJCQlNUEM4eHgKLQlJQUQyMTAJCQlNUEM4eHgKLQlNQlgJCQlNUEM4eHgKLQlNQlg4NjBUCQkJTVBDOHh4Ci0JTlg4MjMJCQlNUEM4eHgKLQlSUFhDbGFzc2ljCQlNUEM4eHgKLQlSUFhsaXRlCQkJTVBDOHh4CisJQURTODYwCQlNUEM4eHgKKwlGQURTODIzCQlNUEM4eHgKKwlGQURTODUwU0FSCU1QQzh4eAorCUZBRFM4NjBUCU1QQzh4eAorCUdFTklFVFYJCU1QQzh4eAorCUlBRDIxMAkJTVBDOHh4CisJTUJYCQlNUEM4eHgKKwlNQlg4NjBUCQlNUEM4eHgKKwlOWDgyMwkJTVBDOHh4CisJUlBYQ2xhc3NpYwlNUEM4eHgKKwlSUFhsaXRlCQlNUEM4eHgKIAotCUVSSUMJCQlQUEM0eHgKKwlFUklDCQlQUEM0eHgKIAotCU1PVVNTRQkJCU1QQzgyNHgKKwlNT1VTU0UJCU1QQzgyNHgKIAotCVJQWHN1cGVyCQlNUEM4MjYwCi0JcnNkcHJvdG8JCU1QQzgyNjAKKwlSUFhzdXBlcglNUEM4MjYwCisJcnNkcHJvdG8JTVBDODI2MAogCi0JRVZCNjQyNjAJCU1QQzd4eF83NHh4CisJRVZCNjQyNjAJTVBDN3h4Xzc0eHgKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEFSTSBTeXN0ZW1zOgkJCQkJCQkJIwogIwkJCQkJCQkJCSMKICMgTWFpbnRhaW5lciBOYW1lLCBFbWFpbCBBZGRyZXNzCQkJCQkjCi0jCUJvYXJkCQkJQ1BVCQkJCQkjCisjCUJvYXJkCQlDUFUJCQkJCQkjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIFJvd2VsIEF0aWVuemEgPHJvd2VsQGRpd2FsYWJzLmNvbT4KIAotCWFybWFkaWxsbwkJQVJNNzIwVAorCWFybWFkaWxsbwlBUk03MjBUCiAKIFJpc2hpIEJoYXR0YWNoYXJ5YSA8cmlzaGlAdGkuY29tPgogCi0Jb21hcDU5MTJvc2sJCUFSTTkyNkVKUworCW9tYXA1OTEyb3NrCUFSTTkyNkVKUwogCiBDbGlmZiBCcmFrZSA8Y2xpZmYuYnJha2VAZ21haWwuY29tPgogCi0JcHhhMjU1X2lkcAkJeHNjYWxlCisJcHhhMjU1X2lkcAl4c2NhbGUKIAogUmljayBCcm9uc29uIDxyaWNrQGVmbi5vcmc+CiAKLQlBVDkxUk05MjAwREsJCWF0OTFybTkyMDAKKwlBVDkxUk05MjAwREsJYXQ5MXJtOTIwMAogCiBHZW9yZ2UgRy4gRGF2aXMgPGdkYXZpc0BtdmlzdGEuY29tPgogCi0JYXNzYWJldAkJCVNBMTEwMAotCWdjcGx1cwkJCVNBMTEwMAorCWFzc2FiZXQJCVNBMTEwMAorCWdjcGx1cwkJU0ExMTAwCiAKIFRob21hcyBFbHN0ZSA8aW5mb0BlbHN0ZS5vcmc+CiAKLQltb2RuZXQ1MAkJQVJNNzIwVCAoTkVUKzUwKQorCW1vZG5ldDUwCUFSTTcyMFQgKE5FVCs1MCkKIAogUGV0ZXIgRmlndWxpIDxwZXBvc2hAZXRjLnNrPgogCi0Jd2VwZXAyNTAJCXhzY2FsZQorCXdlcGVwMjUwCXhzY2FsZQogCiBNYXJpdXMgR3L2Z2VyIDxtYWdAc3lzZ28uZGU+CiAKLQlpbXBhNwkJCUFSTTcyMFQgKEVQNzIxMSkKLQllcDczMTIJCQlBUk03MjBUIChFUDczMTIpCisJaW1wYTcJCUFSTTcyMFQgKEVQNzIxMSkKKwllcDczMTIJCUFSTTcyMFQgKEVQNzMxMikKIAogS3NoaXRpaiBHdXB0YSA8a3NoaXRpakB0aS5jb20+CiAKLQlvbWFwMTUxMGlubgkJQVJNOTI1VAotCW9tYXAxNjEwaW5uCQlBUk05MjZFSlMKLQotS3lsZSBIYXJyaXMgPGtoYXJyaXNAbmV4dXMtdGVjaC5uZXQ+Ci0KLQlsdWJib2NrCQkJeHNjYWxlCi0JY3JhZGxlCQkJeHNjYWxlCi0JaXhkcDQyNQkJCXhzY2FsZQorCW9tYXAxNTEwaW5uCUFSTTkyNVQKKwlvbWFwMTYxMGlubglBUk05MjZFSlMKIAogR2FyeSBKZW5uZWpvaG4gPGdqQGRlbnguZGU+CiAKLQlzbWRrMjQwMAkJQVJNOTIwVAotCXRyYWIJCQlBUk05MjBUCisJc21kazI0MDAJQVJNOTIwVAorCXRyYWIJCUFSTTkyMFQKIAogS29uc3RhbnRpbiBLbGV0c2Noa2UgPGtsZXRzY2hrZUBzeW5lcnRyb25peHguZGU+Ci0Jc2NiOTMyOAkJCUFSTTkyMFQKKwlzY2I5MzI4CQlBUk05MjBUCiAKIE5pc2hhbnQgS2FtYXQgPG5za2FtYXRAdGkuY29tPgogCi0Jb21hcDE2MTBoMgkJQVJNOTI2RUpTCisJb21hcDE2MTBoMglBUk05MjZFSlMKIAogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+CiAKLQlEVi1FVk0JCQlBUk05MjZFSlMKLQlTT05BVEEJCQlBUk05MjZFSlMKLQlTQ0hNT09HSUUJCUFSTTkyNkVKUworCURWLUVWTQkJQVJNOTI2RUpTCisJU09OQVRBCQlBUk05MjZFSlMKKwlTQ0hNT09HSUUJQVJNOTI2RUpTCiAKIFByYWthc2ggS3VtYXIgPHByYWthc2hAZW1iZWR4LmNvbT4KIAotCWNlcmYyNTAJCQl4c2NhbGUKKwljZXJmMjUwCQl4c2NhbGUKIAogRGF2aWQgTfxsbGVyIDxkLm11ZWxsZXJAZWxzb2Z0LmNoPgogCi0Jc21kazI0MTAJCUFSTTkyMFQKLQlWQ01BOQkJCUFSTTkyMFQKKwlzbWRrMjQxMAlBUk05MjBUCisJVkNNQTkJCUFSTTkyMFQKIAogUm9sZiBPZmZlcm1hbm5zIDxyb2ZAc3lzZ28uZGU+CiAKLQlzaGFubm9uCQkJU0ExMTAwCisJc2hhbm5vbgkJU0ExMTAwCiAKIFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci0JaW50ZWdyYXRvcmNwCQlBbGwgY3VycmVudCBBUk0gc3VwcGxpZWQgJgotCQkJCXN1cHBvcnRlZCBjb3JlIG1vZHVsZXMKLQkJCQktc2VlIGh0dHA6Ly93d3cuYXJtLmNvbQotCQkJCS9wcm9kdWN0cy9EZXZUb29scwotCQkJCS9IYXJkd2FyZV9QbGF0Zm9ybXMuaHRtbAotCXZlcnNhdGlsZQkJQVJNOTI2RUotUwotCXZlcnNhdGlsZQkJQVJNOTI2RUotUworCWludGVncmF0b3JjcAlBbGwgY3VycmVudCBBUk0gc3VwcGxpZWQgJiBzdXBwb3J0ZWQgY29yZSBtb2R1bGVzCisJCQktc2VlIGh0dHA6Ly93d3cuYXJtLmNvbS9wcm9kdWN0cy9EZXZUb29scy9IYXJkd2FyZV9QbGF0Zm9ybXMuaHRtbAorCXZlcnNhdGlsZQlBUk05MjZFSi1TCisJdmVyc2F0aWxlCUFSTTkyNkVKLVMKIAogRGF2ZSBQZXZlcmxleSA8ZHBldmVybGV5QG1wYy1kYXRhLmNvLnVrPgogCi0Jb21hcDczMHAyCQlBUk05MjZFSlMKKwlvbWFwNzMwcDIJQVJNOTI2RUpTCiAKIFN0ZWxpYW4gUG9wIDxzdGVsaWFuLnBvcEBsZWFkdGVjaGRlc2lnbi5jb20+CiAKLQlhdDkxY2FwOWFkawkJQVJNOTI2RUpTIChBVDkxQ0FQOSBTb0MpCi0JYXQ5MXNhbTkyNjBlawkJQVJNOTI2RUpTIChBVDkxU0FNOTI2MCBTb0MpCi0JYXQ5MXNhbTkyNjFlawkJQVJNOTI2RUpTIChBVDkxU0FNOTI2MSBTb0MpCi0JYXQ5MXNhbTkyNjNlawkJQVJNOTI2RUpTIChBVDkxU0FNOTI2MyBTb0MpCi0JYXQ5MXNhbTlybGVrCQlBUk05MjZFSlMgKEFUOTFTQU05UkwgU29DKQorCWF0OTFjYXA5YWRrCUFSTTkyNkVKUyAoQVQ5MUNBUDkgU29DKQorCWF0OTFzYW05MjYwZWsJQVJNOTI2RUpTIChBVDkxU0FNOTI2MCBTb0MpCisJYXQ5MXNhbTkyNjFlawlBUk05MjZFSlMgKEFUOTFTQU05MjYxIFNvQykKKwlhdDkxc2FtOTI2M2VrCUFSTTkyNkVKUyAoQVQ5MVNBTTkyNjMgU29DKQorCWF0OTFzYW05cmxlawlBUk05MjZFSlMgKEFUOTFTQU05UkwgU29DKQogCiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAKLQlpeGRwZzQyNQkJeHNjYWxlCi0JcGRuYjMJCQl4c2NhbGUKLQlzY3B1CQkJeHNjYWxlCisJaXhkcGc0MjUJeHNjYWxlCisJcGRuYjMJCXhzY2FsZQorCXNjcHUJCXhzY2FsZQogCiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+CiAKLQljc2IyMjYJCQl4c2NhbGUKLQlpbm5va29tCQkJeHNjYWxlCisJY3NiMjI2CQl4c2NhbGUKKwlpbm5va29tCQl4c2NhbGUKIAogQW5kcmVhIFNjaWFuIDxhbmRyZWEuc2NpYW5AZGF2ZS10ZWNoLml0PgogCi0JQjIJCQlBUk03VERNSSAoUzNDNDRCMFgpCisJQjIJCUFSTTdURE1JIChTM0M0NEIwWCkKIAogR3JlZyBVbmdlcmVyIDxncmVnLnVuZ2VyZXJAb3BlbmdlYXIuY29tPgogCi0JY200MDA4CQkJa3M4Njk1cAotCWNtNDExNgkJCWtzODY5NXAKLQljbTQxNDgJCQlrczg2OTVwCisJY200MDA4CQlrczg2OTVwCisJY200MTE2CQlrczg2OTVwCisJY200MTQ4CQlrczg2OTVwCiAKIFJpY2hhcmQgV29vZHJ1ZmYgPHItd29vZHJ1ZmYyQHRpLmNvbT4KIAotCW9tYXAyNDIwaDQJCUFSTTExMzZFSlMKKwlvbWFwMjQyMGg0CUFSTTExMzZFSlMKIAogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KIAotCWFwb2xsb24JCQlBUk0xMTM2RUpTCisJYXBvbGxvbgkJQVJNMTEzNkVKUwogCiBBbGV4IFr8cGtlIDxhenVAc3lzZ28uZGU+CiAKLQlsYXJ0CQkJU0ExMTAwCi0JZG5wMTExMAkJCVNBMTExMAorCWxhcnQJCVNBMTEwMAorCWRucDExMTAJCVNBMTExMAogCiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgogCi0JYWN0dXgxCQkJeHNjYWxlCi0JYWN0dXgyCQkJeHNjYWxlCi0JYWN0dXgzCQkJeHNjYWxlCi0JYWN0dXg0CQkJeHNjYWxlCisJYWN0dXgxCQl4c2NhbGUKKwlhY3R1eDIJCXhzY2FsZQorCWFjdHV4MwkJeHNjYWxlCisJYWN0dXg0CQl4c2NhbGUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmtub3duIC8gb3JwaGFuZWQgYm9hcmRzOgorIAlCb2FyZAkJQ1BVCUxhc3Qga25vd24gbWFpbnRhaW5lciAvIENvbW1lbnQKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKwljcmFkbGUJCXhzY2FsZQlLeWxlIEhhcnJpcyA8a2hhcnJpc0BuZXh1cy10ZWNoLm5ldD4gLyBkZWFkIGFkZHJlc3MKKwlpeGRwNDI1CQl4c2NhbGUJS3lsZSBIYXJyaXMgPGtoYXJyaXNAbmV4dXMtdGVjaC5uZXQ+IC8gZGVhZCBhZGRyZXNzCisJbHViYm9jawkJeHNjYWxlCUt5bGUgSGFycmlzIDxraGFycmlzQG5leHVzLXRlY2gubmV0PiAvIGRlYWQgYWRkcmVzcwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHg4NiBTeXN0ZW1zOgkJCQkJCQkJIwogIwkJCQkJCQkJCSMKICMgTWFpbnRhaW5lciBOYW1lLCBFbWFpbCBBZGRyZXNzCQkJCQkjCi0jCUJvYXJkCQkJQ1BVCQkJCQkjCisjCUJvYXJkCQlDUFUJCQkJCQkjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIERhbmllbCBFbmdzdHL2bSA8ZGFuaWVsQG9taWNyb24uc2U+CiAKLQlzYzUyMF9jZHAJCXg4NgorCXNjNTIwX2NkcAl4ODYKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBNSVBTIFN5c3RlbXM6CQkJCQkJCQkjCiAjCQkJCQkJCQkJIwogIyBNYWludGFpbmVyIE5hbWUsIEVtYWlsIEFkZHJlc3MJCQkJCSMKLSMJQm9hcmQJCQlDUFUJCQkJCSMKKyMJQm9hcmQJCUNQVQkJCQkJCSMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KIAotCWluY2FpcAkJCU1JUFMzMiA0S2MKLQlwdXJwbGUJCQlNSVBTNjQgNUtjCisJaW5jYWlwCQlNSVBTMzIgNEtjCisJcHVycGxlCQlNSVBTNjQgNUtjCiAKIFRob21hcyBMYW5nZSA8dGhvbWFzQGNvcmVsYXR1cy5zZT4KLQlkYmF1MXgwMAkJTUlQUzMyIEF1MTAwMAotCWd0aDIJCQlNSVBTMzIgQXUxMDAwCisJZGJhdTF4MDAJTUlQUzMyIEF1MTAwMAorCWd0aDIJCU1JUFMzMiBBdTEwMDAKIAogVmxhZCBMdW5ndSA8dmxhZC5sdW5ndUB3aW5kcml2ZXIuY29tPgotCXFlbXVfbWlwcwkJTUlQUzMyCisJcWVtdV9taXBzCU1JUFMzMgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE5pb3MtMzIgU3lzdGVtczoJCQkJCQkJIwogIwkJCQkJCQkJCSMKICMgTWFpbnRhaW5lciBOYW1lLCBFbWFpbCBBZGRyZXNzCQkJCQkjCi0jCUJvYXJkCQkJQ1BVCQkJCQkjCisjCUJvYXJkCQlDUFUJCQkJCQkjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIFN0ZXBoYW4gTGlueiA8bGluekBsaS1wcm8ubmV0PgogCi0JREsxUzEwCQkJTmlvcy0zMgotCUFETlBFU0MxCQlOaW9zLTMyCisJREsxUzEwCQlOaW9zLTMyCisJQUROUEVTQzEJTmlvcy0zMgogCiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KIAotCURLMUMyMAkJCU5pb3MtMzIKKwlESzFDMjAJCU5pb3MtMzIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBOaW9zLUlJIFN5c3RlbXM6CQkJCQkJCSMKICMJCQkJCQkJCQkjCiAjIE1haW50YWluZXIgTmFtZSwgRW1haWwgQWRkcmVzcwkJCQkJIwotIwlCb2FyZAkJCUNQVQkJCQkJIworIwlCb2FyZAkJQ1BVCQkJCQkJIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KIAotCVBDSTU0NDEJCQlOaW9zLUlJCi0JUEsxQzIwCQkJTmlvcy1JSQotCUVQMUMyMAkJCU5pb3MtSUkKLQlFUDFTMTAJCQlOaW9zLUlJCi0JRVAxUzQwCQkJTmlvcy1JSQorCVBDSTU0NDEJCU5pb3MtSUkKKwlQSzFDMjAJCU5pb3MtSUkKKwlFUDFDMjAJCU5pb3MtSUkKKwlFUDFTMTAJCU5pb3MtSUkKKwlFUDFTNDAJCU5pb3MtSUkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBNaWNyb0JsYXplIFN5c3RlbXM6CQkJCQkJCSMKICMJCQkJCQkJCQkjCiAjIE1haW50YWluZXIgTmFtZSwgRW1haWwgQWRkcmVzcwkJCQkJIwotIwlCb2FyZAkJCUNQVQkJCQkJIworIwlCb2FyZAkJQ1BVCQkJCQkJIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBZYXN1c2hpIFNob2ppIDx5YXNoaUBhdG1hcmstdGVjaG5vLmNvbT4KIAotCVNVWkFLVQkJCU1pY3JvQmxhemUKKwlTVVpBS1UJCU1pY3JvQmxhemUKIAogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogCi0JTUw0MDEJCQlNaWNyb0JsYXplCi0JWFVQVjJQCQkJTWljcm9CbGF6ZQorCU1MNDAxCQlNaWNyb0JsYXplCisJWFVQVjJQCQlNaWNyb0JsYXplCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ29sZGZpcmUgU3lzdGVtczoJCQkJCQkJIwogIwkJCQkJCQkJCSMKICMgTWFpbnRhaW5lciBOYW1lLCBFbWFpbCBBZGRyZXNzCQkJCQkjCi0jCUJvYXJkCQkJQ1BVCQkJCQkjCisjCUJvYXJkCQlDUFUJCQkJCQkjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogCi0JVEFTUkVHCQkJTUNGNTI0OQorCVRBU1JFRwkJTUNGNTI0OQogCiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogCi0JTTUyMjc3RVZCCQltY2Y1MjI3eAotCU01MjM1RVZCCQltY2Y1MngyCi0JTTUzMjlFVkIJCW1jZjUzMngKLQlNNTM3M0VWQgkJbWNmNTMyeAotCU01NDQ1NUVWQgkJbWNmNTQ0NXgKLQlNNTQ3NUVWQgkJbWNmNTQ3eF84eAotCU01NDg1RVZCCQltY2Y1NDd4Xzh4CisJTTUyMjc3RVZCCW1jZjUyMjd4CisJTTUyMzVFVkIJbWNmNTJ4MgorCU01MzI5RVZCCW1jZjUzMngKKwlNNTM3M0VWQgltY2Y1MzJ4CisJTTU0NDU1RVZCCW1jZjU0NDV4CisJTTU0NzVFVkIJbWNmNTQ3eF84eAorCU01NDg1RVZCCW1jZjU0N3hfOHgKIAogSGF5ZGVuIEZyYXNlciA8SGF5ZGVuLkZyYXNlckBmcmVlc2NhbGUuY29tPgogCi0JTTUyNTNFVkJFCQltY2Y1MngyCisJTTUyNTNFVkJFCW1jZjUyeDIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBVlIzMiBTeXN0ZW1zOgkJCQkJCQkjCiAjCQkJCQkJCQkJIwogIyBNYWludGFpbmVyIE5hbWUsIEVtYWlsIEFkZHJlc3MJCQkJCSMKLSMJQm9hcmQJCQlDUFUJCQkJCSMKKyMJQm9hcmQJCUNQVQkJCQkJCSMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CiAKLQlBVFNUSzEwMDAJCUFUMzJBUDd4eHgKLQlBVFNUSzEwMDIJCUFUMzJBUDcwMDAKLQlBVFNUSzEwMDMJCUFUMzJBUDcwMDEKLQlBVFNUSzEwMDQJCUFUMzJBUDcwMDIKLQlBVFNUSzEwMDYJCUFUMzJBUDcwMDAKLQlBVE5HVzEwMAkJQVQzMkFQNzAwMAorCUFUU1RLMTAwMAlBVDMyQVA3eHh4CisJQVRTVEsxMDAyCUFUMzJBUDcwMDAKKwlBVFNUSzEwMDMJQVQzMkFQNzAwMQorCUFUU1RLMTAwNAlBVDMyQVA3MDAyCisJQVRTVEsxMDA2CUFUMzJBUDcwMDAKKwlBVE5HVzEwMAlBVDMyQVA3MDAwCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU3VwZXJIIFN5c3RlbXM6CQkJCQkJCSMKICMJCQkJCQkJCQkjCiAjIE1haW50YWluZXIgTmFtZSwgRW1haWwgQWRkcmVzcwkJCQkJIwotIwlCb2FyZAkJCUNQVQkJCQkJIworIwlCb2FyZAkJQ1BVCQkJCQkJIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAKLQlNUzc3NTBTRQkJU0g3NzUwCi0JTVM3NzIyU0UJCVNINzcyMgotCVI3NzgwTVAJCQlTSDc3ODAKLQlSMkRQbHVzCQkJU0g3NzUxUgotCVNINzc2M1JEUAkJU0g3NzYzCisJTVM3NzUwU0UJU0g3NzUwCisJTVM3NzIyU0UJU0g3NzIyCisJUjc3ODBNUAkJU0g3NzgwCisJUjJEUGx1cwkJU0g3NzUxUgorCVNINzc2M1JEUAlTSDc3NjMKIAogTWFyayBKb25hcyA8bWFyay5qb25hc0BkZS5ib3NjaC5jb20+CiAKLQltcHIyCQkJU0g3NzIwCisJbXByMgkJU0g3NzIwCiAKIFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KIAotCU1TNzcyMFNFCQlTSDc3MjAKKwlNUzc3MjBTRQlTSDc3MjAKIAogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogCi0JTUlHTy1SCQkJU0g3NzIyCisJTUlHTy1SCQlTSDc3MjIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBCbGFja2ZpbiBTeXN0ZW1zOgkJCQkJCQkjCiAjCQkJCQkJCQkJIwogIyBNYWludGFpbmVyIE5hbWUsIEVtYWlsIEFkZHJlc3MJCQkJCSMKLSMJQm9hcmQJCQlDUFUJCQkJCSMKKyMJQm9hcmQJCUNQVQkJCQkJCSMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogQmxhY2tmaW4gVGVhbSA8dS1ib290LWRldmVsQGJsYWNrZmluLnVjbGludXgub3JnPgogCi0JQkY1MzMtRVpLSVQJCUJGNTMzCi0JQkY1MzMtU1RBTVAJCUJGNTMzCi0JQkY1MzctU1RBTVAJCUJGNTM3Ci0JQkY1NjEtRVpLSVQJCUJGNTYxCisJQkY1MzMtRVpLSVQJQkY1MzMKKwlCRjUzMy1TVEFNUAlCRjUzMworCUJGNTM3LVNUQU1QCUJGNTM3CisJQkY1NjEtRVpLSVQJQkY1NjEKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBFbmQgb2YgTUFJTlRBSU5FUlMgbGlzdAkJCQkJCSMKZGlmZiAtLWdpdCBhL01BS0VBTEwgYi9NQUtFQUxMCmluZGV4IDgwYjYwNjAuLmEyNTZlOWEgMTAwNzU1Ci0tLSBhL01BS0VBTEwKKysrIGIvTUFLRUFMTApAQCAtNDYyLDEzICs0NjIsNiBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBMSVNUX0FSTTk9IgkJCVwKLQlhdDkxY2FwOWFkawkJXAotCWF0OTFybTkyMDBkawkJXAotCWF0OTFzYW05MjYwZWsJCVwKLQlhdDkxc2FtOTI2MWVrCQlcCi0JYXQ5MXNhbTkyNjNlawkJXAotCWF0OTFzYW05cmxlawkJXAotCWNtY19wdTIJCQlcCiAJYXA5MjB0CQkJXAogCWFwOTIyX1hBMTAJCVwKIAlhcDkyNmVqcwkJXApAQCAtNDc5LDExICs0NzIsNyBAQAogCWNwOTI2ZWpzCQlcCiAJY3A5NDZlcwkJCVwKIAljcDk2NgkJCVwKLQljc2I2MzcJCQlcCi0Ja2I5MjAyCQkJXAogCWxwZDdhNDAwCQlcCi0JbTUwMXNrCQkJXAotCW1wMnVzYgkJCVwKIAlteDFhZHMJCQlcCiAJbXgxZnMyCQkJXAogCW5ldHN0YXIJCQlcCkBAIC01ODgsNiArNTc3LDcgQEAKIAkke0xJU1RfQVJNOX0JXAogCSR7TElTVF9BUk0xMH0JXAogCSR7TElTVF9BUk0xMX0JXAorCSR7TElTVF9hdDkxfQlcCiAJJHtMSVNUX3B4YX0JXAogCSR7TElTVF9peHB9CVwKICIKQEAgLTcwMiw3ICs2OTIsNyBAQAogCU01MjI3N0VWQgkJXAogCU01MjM1RVZCCQlcCiAJTTUyNDlFVkIJCVwKLQlNNTI1M0VWQgkJXAorCU01MjUzRVZCRQkJXAogCU01MjcxRVZCCQlcCiAJTTUyNzJDMwkJCVwKIAlNNTI3NUVWQgkJXApkaWZmIC0tZ2l0IGEvYm9hcmQvQnVTL0VCK01DRi1FVjEyMy9taWkuYyBiL2JvYXJkL0J1Uy9FQitNQ0YtRVYxMjMvbWlpLmMKaW5kZXggM2VhMjBhNi4uOGFlMmVjNiAxMDA2NDQKLS0tIGEvYm9hcmQvQnVTL0VCK01DRi1FVjEyMy9taWkuYworKysgYi9ib2FyZC9CdVMvRUIrTUNGLUVWMTIzL21paS5jCkBAIC0yMDEsNyArMjAxLDcgQEAKIH0KICNlbmRpZgkJCQkvKiBDRkdfRElTQ09WRVJfUEhZICovCiAKLWludCBtaWlfaW5pdCh2b2lkKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrLGFsaWFzKCJfX21paV9pbml0IikpKTsKK3ZvaWQgbWlpX2luaXQodm9pZCkgX19hdHRyaWJ1dGVfXygod2VhayxhbGlhcygiX19taWlfaW5pdCIpKSk7CiAKIHZvaWQgX19taWlfaW5pdCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzNTEyMS9hZHM1MTIxLmMgYi9ib2FyZC9hZHM1MTIxL2FkczUxMjEuYwppbmRleCBkNWNlZTY0Li44NDUyMDU0IDEwMDY0NAotLS0gYS9ib2FyZC9hZHM1MTIxL2FkczUxMjEuYworKysgYi9ib2FyZC9hZHM1MTIxL2FkczUxMjEuYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8bXBjNTEyeC5oPgorI2luY2x1ZGUgImlvcGluLmgiCiAjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgogI2luY2x1ZGUgPGNvbW1hbmQuaD4KICNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzNTEyMS9hZHM1MTIxX2RpdS5jIGIvYm9hcmQvYWRzNTEyMS9hZHM1MTIxX2RpdS5jCmluZGV4IDg3Y2YwY2IuLjI2NjI4ZDMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FkczUxMjEvYWRzNTEyMV9kaXUuYworKysgYi9ib2FyZC9hZHM1MTIxL2FkczUxMjFfZGl1LmMKQEAgLTU3LDcgKzU3LDcgQEAKIAkvKiBNb2RpZnkgUFhDTEsgaW4gR1VUUyBDTEtEVkRSICovCiAJZGVidWcoIkRJVTogQ3VycmVudCB2YWx1ZSBvZiBDTEtEVkRSID0gMHglMDh4XG4iLCAqY2xrZHZkcik7CiAJdGVtcCA9ICpjbGtkdmRyICYgMHhGRkZGRkYwMDsKLQkqY2xrZHZkciA9IHRlbXAgfCAocGl4dmFsICYgMHgxRik7CisJKmNsa2R2ZHIgPSB0ZW1wIHwgKHBpeHZhbCAmIDB4RkYpOwogCWRlYnVnKCJESVU6IE1vZGlmaWVkIHZhbHVlIG9mIENMS0RWRFIgPSAweCUwOHhcbiIsICpjbGtkdmRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzNTEyMS9pb3Bpbi5jIGIvYm9hcmQvYWRzNTEyMS9pb3Bpbi5jCmluZGV4IDZhMzVjODEuLmE2NzkyYTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FkczUxMjEvaW9waW4uYworKysgYi9ib2FyZC9hZHM1MTIxL2lvcGluLmMKQEAgLTI1LDcxICsyNSw5MCBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSAiaW9waW4uaCIKIAotLyoKLSAqIElPIFBBRCBUWVBFUwotICoJZm9yIGFsbCB0eXBlcyAgIGZtdXggaXMgdXNlZCB0byBzZWxlY3QgdGhlIGZ1bnRpb24KLSAqCQkJZHMgc2V0cyB0aGUgc2xldyByYXRlCi0gKglTVEQgcGlucyAgbm90aGluZyBleHRyYSAoY2FuIHNldCBkcyAmIGZtdXggb25seSkKLSAqCVNURF9QVQkgIHB1ZT0xIHRvIGVuYWJsZSBwdWxsICYgcHVkIHNldHMgd2hldGhlciB1cCBvciBkb3duIHJlc2lzdG9ycwotICoJU1REX1NUCSAgc3Qgc2V0cyB0aGUgU2NobWl0dCB0cmlnZ2VyCi0gKglTVERfUFVfU1QgcHVlICYgcHVkIHNldHMgcHVsbC11cC9kb3duIHJlc2lzdG9ycyBhcyBpbiBTVERfUFUKLSAqCQkgIHN0IHNldHMgdGhlIFNjaG1pdHQgdHJpZ2dlcgotICoJUENJCSAgaG9sZCBzZXRzIG91dHB1dCBkZWxheQotICoJUENJX1NUCSAgaG9sZCBzZXRzIG91dHB1dCBkZWxheSBhbmQgc3Qgc2V0cyB0aGUgU2NobWl0dCB0cmlnZ2VyCi0gKi8KKy8qIElPIHBpbiBmaWVsZHMgKi8KKyNkZWZpbmUgSU9fUElOX0ZNVVgodikJKCh2KSA8PCA3KQkvKiBwaW4gZnVuY3Rpb24gKi8KKyNkZWZpbmUgSU9fUElOX0hPTEQodikJKCh2KSA8PCA1KQkvKiBob2xkIHRpbWUsIHBjaSBvbmx5ICovCisjZGVmaW5lIElPX1BJTl9QVUQodikJKCh2KSA8PCA0KQkvKiBpZiBQVUUsIDA9cHVsbC1kb3duLCAxPXB1bGwtdXAgKi8KKyNkZWZpbmUgSU9fUElOX1BVRSh2KQkoKHYpIDw8IDMpCS8qIHB1bGwgdXAvZG93biBlbmFibGUgKi8KKyNkZWZpbmUgSU9fUElOX1NUKHYpCSgodikgPDwgMikJLyogc2NobWl0dCB0cmlnZ2VyICovCisjZGVmaW5lIElPX1BJTl9EUyh2KQkoKHYpKQkJLyogc2xldyByYXRlICovCiAKIHN0YXRpYyBzdHJ1Y3QgaW9waW5fdCB7Ci0JdV9zaG9ydCBwX29mZnNldDsgLyogb2Zmc2V0IGZyb20gSU9DVExfTUVNX09GRlNFVCAJCSovCi0JdV9zaG9ydCBwX25vOwkgIC8qIG51bWJlciBvZiBwaW5zIHRvIHNldCB0aGlzIHdheQkJKi8KLQl1X3Nob3J0IGJpdF9vcjo3OyAvKiBEbyBiaXR3aXNlIE9SIGluc3RlYWQgb2Ygc2V0dGluZwkJKi8KLQl1X3Nob3J0IGZtdXg6MjsJICAvKiBwYWQgZnVuY3Rpb24gc2VsZWN0IDAtMwkJCSovCi0JdV9zaG9ydCBob2xkOjI7ICAgLyogUENJIHBhZCB0eXBlcyBvbmx5OyAJCQkqLwotCXVfc2hvcnQgcHVkOjE7IAkgIC8qIHB1bGwgcmVzaXN0b3I7IFBVIHR5cGVzIG9ubHk7CQkqLwotCQkJICAvKiBpZiBwdWU9MSB0aGVuIDA9cHVsbC1kb3duLCAxPXB1bGwtdXAJKi8KLQl1X3Nob3J0CXB1ZToxOwkgIC8qIFB1bGwgcmVzaXN0b3IgZW5hYmxlOyBfUFUgdHlwZXMgb25seQkqLwotCXVfc2hvcnQgc3Q6MTsJICAvKiBTY2htaXR0IHRyaWdnZXIgZW5hYmxlOyBfU1QgdHlwZXMgb25seQkqLwotCXVfc2hvcnQJZHM6MjsJICAvKiBTbGV3IHJhdGUgY2xhc3MsIDA9Y2xhc3MxLCAuLi4sIDM9Y2xhc3M0CSovCisJaW50IHBfb2Zmc2V0OwkJLyogb2Zmc2V0IGZyb20gSU9DVExfTUVNX09GRlNFVCAqLworCWludCBucl9waW5zOwkJLyogbnVtYmVyIG9mIHBpbnMgdG8gc2V0IHRoaXMgd2F5ICovCisJaW50IGJpdF9vcjsJCS8qIG9yIGluIHRoZSB2YWx1ZSBpbnN0ZWFkIG9mIG92ZXJ3cml0ZSAqLworCXVfbG9uZyB2YWw7CQkvKiB2YWx1ZSB0byB3cml0ZSBvciBvciAqLwogfSBpb3JlZ3NfaW5pdFtdID0gewotLyogRlVOQzE9RkVDX1JYX0RWIFNldHMgTmV4dCAzIHRvIEZFQyBwYWRzIAkqLwotCXtJT0NUTF9TUERJRl9UWENMSywgCTMsICAwLCAxLCAwLCAwLCAwLCAwLCAzfSwKLS8qIFNldCBoaWdoZXN0IFNsZXcgb24gOSBQQVRBIHBpbnMJCSovCi0Je0lPQ1RMX1BBVEFfQ0UxLCAJOSwgIDEsIDAsIDAsIDAsIDAsIDAsIDN9LAotLyogRlVOQzE9RkVDX0NPTCBTZXRzIE5leHQgMTUgdG8gRkVDIHBhZHMgCSovCi0Je0lPQ1RMX1BTQzBfMCwgCQkxNSwgMCwgMSwgMCwgMCwgMCwgMCwgM30sCi0vKiBGVU5DMT1TUERJRl9UWENMSwkJCQkqLwotCXtJT0NUTF9MUENfQ1MxLCAJMSwgIDAsIDEsIDAsIDAsIDAsIDEsIDN9LAotLyogRlVOQzI9U1BESUZfVFggYW5kIHNldHMgTmV4dCBwaW4gdG8gU1BESUZfUlgJKi8KLQl7SU9DVExfSTJDMV9TQ0wsIAkyLCAgMCwgMiwgMCwgMCwgMCwgMSwgM30sCi0vKiBGVU5DMj1ESVUgQ0xLCQkJCSovCi0Je0lPQ1RMX1BTQzZfMCwgCQkxLCAgMCwgMiwgMCwgMCwgMCwgMSwgM30sCi0vKiBGVU5DMj1ESVVfSFNZTkMgCQkJCSovCi0Je0lPQ1RMX1BTQzZfMSwgCQkxLCAgMCwgMiwgMCwgMCwgMCwgMCwgM30sCi0vKiBGVU5DMj1ESVVWU1lOQyBTZXRzIE5leHQgMjYgdG8gRElVIFBhZHMJKi8KLQl7SU9DVExfUFNDNl80LCAJCTI2LCAwLCAyLCAwLCAwLCAwLCAwLCAzfQorCS8qIEZVTkMxPUZFQ19SWF9EViBTZXRzIE5leHQgMyB0byBGRUMgcGFkcyAqLworCXsKKwkJSU9DVExfU1BESUZfVFhDTEssIDMsIDAsCisJCUlPX1BJTl9GTVVYKDEpIHwgSU9fUElOX0hPTEQoMCkgfCBJT19QSU5fUFVEKDApIHwKKwkJSU9fUElOX1BVRSgwKSB8IElPX1BJTl9TVCgwKSB8IElPX1BJTl9EUygzKQorCX0sCisJLyogU2V0IGhpZ2hlc3QgU2xldyBvbiA5IFBBVEEgcGlucyAqLworCXsKKwkJSU9DVExfUEFUQV9DRTEsIDksIDEsCisJCUlPX1BJTl9GTVVYKDApIHwgSU9fUElOX0hPTEQoMCkgfCBJT19QSU5fUFVEKDApIHwKKwkJSU9fUElOX1BVRSgwKSB8IElPX1BJTl9TVCgwKSB8IElPX1BJTl9EUygzKQorCX0sCisJLyogRlVOQzE9RkVDX0NPTCBTZXRzIE5leHQgMTUgdG8gRkVDIHBhZHMgKi8KKwl7CisJCUlPQ1RMX1BTQzBfMCwgMTUsIDAsCisJCUlPX1BJTl9GTVVYKDEpIHwgSU9fUElOX0hPTEQoMCkgfCBJT19QSU5fUFVEKDApIHwKKwkJSU9fUElOX1BVRSgwKSB8IElPX1BJTl9TVCgwKSB8IElPX1BJTl9EUygzKQorCX0sCisJLyogRlVOQzE9U1BESUZfVFhDTEsgKi8KKwl7CisJCUlPQ1RMX0xQQ19DUzEsIDEsIDAsCisJCUlPX1BJTl9GTVVYKDEpIHwgSU9fUElOX0hPTEQoMCkgfCBJT19QSU5fUFVEKDApIHwKKwkJSU9fUElOX1BVRSgwKSB8IElPX1BJTl9TVCgxKSB8IElPX1BJTl9EUygzKQorCX0sCisJLyogRlVOQzI9U1BESUZfVFggYW5kIHNldHMgTmV4dCBwaW4gdG8gU1BESUZfUlggKi8KKwl7CisJCUlPQ1RMX0kyQzFfU0NMLCAyLCAwLAorCQlJT19QSU5fRk1VWCgyKSB8IElPX1BJTl9IT0xEKDApIHwgSU9fUElOX1BVRCgwKSB8CisJCUlPX1BJTl9QVUUoMCkgfCBJT19QSU5fU1QoMSkgfCBJT19QSU5fRFMoMykKKwl9LAorCS8qIEZVTkMyPURJVSBDTEsgKi8KKwl7CisJCUlPQ1RMX1BTQzZfMCwgMSwgMCwKKwkJSU9fUElOX0ZNVVgoMikgfCBJT19QSU5fSE9MRCgwKSB8IElPX1BJTl9QVUQoMCkgfAorCQlJT19QSU5fUFVFKDApIHwgSU9fUElOX1NUKDEpIHwgSU9fUElOX0RTKDMpCisJfSwKKwkvKiBGVU5DMj1ESVVfSFNZTkMgKi8KKwl7CisJCUlPQ1RMX1BTQzZfMSwgMSwgMCwKKwkJSU9fUElOX0ZNVVgoMikgfCBJT19QSU5fSE9MRCgwKSB8IElPX1BJTl9QVUQoMCkgfAorCQlJT19QSU5fUFVFKDApIHwgSU9fUElOX1NUKDApIHwgSU9fUElOX0RTKDMpCisJfSwKKwkvKiBGVU5DMj1ESVVWU1lOQyBTZXRzIE5leHQgMjYgdG8gRElVIFBhZHMgKi8KKwl7CisJCUlPQ1RMX1BTQzZfNCwgMjYsIDAsCisJCUlPX1BJTl9GTVVYKDIpIHwgSU9fUElOX0hPTEQoMCkgfCBJT19QSU5fUFVEKDApIHwKKwkJSU9fUElOX1BVRSgwKSB8IElPX1BJTl9TVCgwKSB8IElPX1BJTl9EUygzKQorCX0KIH07CiAKIHZvaWQgaW9waW5faW5pdGlhbGl6ZSh2b2lkKQogewogCXNob3J0IGksIGosIG4sIHA7CiAJdV9sb25nICpyZWc7CisJaW1tYXBfdCAqaW0gPSAoaW1tYXBfdCAqKUNGR19JTU1SOworCisJcmVnID0gKHVfbG9uZyAqKSYoaW0tPmlvX2N0cmwucmVnc1swXSk7CiAKIAlpZiAoc2l6ZW9mKGlvcmVnc19pbml0KSA9PSAwKQogCQlyZXR1cm47CiAKLQlpbW1hcF90ICppbSA9IChpbW1hcF90ICopQ0ZHX0lNTVI7Ci0JcmVnID0gKHVfbG9uZyAqKSYoaW0tPmlvX2N0cmwucmVnc1swXSk7CiAJbiA9IHNpemVvZihpb3JlZ3NfaW5pdCkgLyBzaXplb2YoaW9yZWdzX2luaXRbMF0pOwogCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQlmb3IgKHAgPSAwLCBqID0gaW9yZWdzX2luaXRbaV0ucF9vZmZzZXQgLyBzaXplb2YodV9sb25nKTsKLQkJCXAgPCBpb3JlZ3NfaW5pdFtpXS5wX25vOyBwKyssIGorKykgewotCQkvKiBsb3dlc3QgOSBiaXRzIHNldHMgdGhlIHJlZ2lzdGVyICovCisJCQlwIDwgaW9yZWdzX2luaXRbaV0ubnJfcGluczsgcCsrLCBqKyspIHsKIAkJCWlmIChpb3JlZ3NfaW5pdFtpXS5iaXRfb3IpCi0JCQkJcmVnW2pdIHw9ICooKHVfbG9uZyAqKSAmaW9yZWdzX2luaXRbaV0ucF9ubykKLQkJCQkJCSYgMHgwMDAwMDFmZjsKKwkJCQlyZWdbal0gfD0gaW9yZWdzX2luaXRbaV0udmFsOwogCQkJZWxzZQotCQkJCXJlZ1tqXSA9ICooKHVfbG9uZyAqKSAmaW9yZWdzX2luaXRbaV0ucF9ubykKLQkJCQkJCSYgMHgwMDAwMDFmZjsKKwkJCQlyZWdbal0gPSBpb3JlZ3NfaW5pdFtpXS52YWw7CiAJCX0KIAl9CiAJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy90YWlzaGFuL3Nob3dpbmZvLmMgYi9ib2FyZC9hbWNjL3RhaXNoYW4vc2hvd2luZm8uYwppbmRleCAwNDBiODAwLi41YjhiODhlIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL3RhaXNoYW4vc2hvd2luZm8uYworKysgYi9ib2FyZC9hbWNjL3RhaXNoYW4vc2hvd2luZm8uYwpAQCAtMzQsNTkgKzM0LDU5IEBACiAJLyogcmVhZCBjbG9jayByZWdzaXRlciAqLwogCXByaW50ZigiPT09PT0gRGlzcGxheSByZXNldCBhbmQgaW5pdGlhbGl6ZSByZWdpc3RlciBTdGFydCA9PT09PT09PT1cbiIpOwogCW1mY3ByKGNsa19wbGxjLHJlZyk7Ci0JcHJpbnRmKCJjcHJfcGxsYyAgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJjcHJfcGxsYyAgID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZjcHIoY2xrX3BsbGQscmVnKTsKLQlwcmludGYoImNwcl9wbGxkICAgPSAlIzAxMHhcbiIscmVnKTsKKwlwcmludGYoImNwcl9wbGxkICAgPSAlIzAxMGx4XG4iLHJlZyk7CiAKIAltZmNwcihjbGtfcHJpbWFkLHJlZyk7Ci0JcHJpbnRmKCJjcHJfcHJpbWFkID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJjcHJfcHJpbWFkID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZjcHIoY2xrX3ByaW1iZCxyZWcpOwotCXByaW50ZigiY3ByX3ByaW1iZCA9ICUjMDEweFxuIixyZWcpOworCXByaW50ZigiY3ByX3ByaW1iZCA9ICUjMDEwbHhcbiIscmVnKTsKIAogCW1mY3ByKGNsa19vcGJkLHJlZyk7Ci0JcHJpbnRmKCJjcHJfb3BiZCAgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJjcHJfb3BiZCAgID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZjcHIoY2xrX3BlcmQscmVnKTsKLQlwcmludGYoImNwcl9wZXJkICAgPSAlIzAxMHhcbiIscmVnKTsKKwlwcmludGYoImNwcl9wZXJkICAgPSAlIzAxMGx4XG4iLHJlZyk7CiAKIAltZmNwcihjbGtfbWFsZCxyZWcpOwotCXByaW50ZigiY3ByX21hbGQgICA9ICUjMDEweFxuIixyZWcpOworCXByaW50ZigiY3ByX21hbGQgICA9ICUjMDEwbHhcbiIscmVnKTsKIAogCS8qIHJlYWQgc2RyIHJlZ2lzdGVyICovCiAJbWZzZHIoc2RyX2ViYyxyZWcpOwotCXByaW50Zigic2RyX2ViYyAgICA9ICUjMDEweFxuIixyZWcpOworCXByaW50Zigic2RyX2ViYyAgICA9ICUjMDEwbHhcbiIscmVnKTsKIAogCW1mc2RyKHNkcl9jcDQ0MCxyZWcpOwotCXByaW50Zigic2RyX2NwNDQwICA9ICUjMDEweFxuIixyZWcpOworCXByaW50Zigic2RyX2NwNDQwICA9ICUjMDEwbHhcbiIscmVnKTsKIAogCW1mc2RyKHNkcl94Y3IscmVnKTsKLQlwcmludGYoInNkcl94Y3IgICAgPSAlIzAxMHhcbiIscmVnKTsKKwlwcmludGYoInNkcl94Y3IgICAgPSAlIzAxMGx4XG4iLHJlZyk7CiAKIAltZnNkcihzZHJfeHBsbGMscmVnKTsKLQlwcmludGYoInNkcl94cGxsYyAgPSAlIzAxMHhcbiIscmVnKTsKKwlwcmludGYoInNkcl94cGxsYyAgPSAlIzAxMGx4XG4iLHJlZyk7CiAKIAltZnNkcihzZHJfeHBsbGQscmVnKTsKLQlwcmludGYoInNkcl94cGxsZCAgPSAlIzAxMHhcbiIscmVnKTsKKwlwcmludGYoInNkcl94cGxsZCAgPSAlIzAxMGx4XG4iLHJlZyk7CiAKIAltZnNkcihzZHJfcGZjMCxyZWcpOwotCXByaW50Zigic2RyX3BmYzAgICA9ICUjMDEweFxuIixyZWcpOworCXByaW50Zigic2RyX3BmYzAgICA9ICUjMDEwbHhcbiIscmVnKTsKIAogCW1mc2RyKHNkcl9wZmMxLHJlZyk7Ci0JcHJpbnRmKCJzZHJfcGZjMSAgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJzZHJfcGZjMSAgID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZzZHIoc2RyX2N1c3QwLHJlZyk7Ci0JcHJpbnRmKCJzZHJfY3VzdDAgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJzZHJfY3VzdDAgID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZzZHIoc2RyX2N1c3QxLHJlZyk7Ci0JcHJpbnRmKCJzZHJfY3VzdDEgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJzZHJfY3VzdDEgID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZzZHIoc2RyX3VhcnQwLHJlZyk7Ci0JcHJpbnRmKCJzZHJfdWFydDAgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJzZHJfdWFydDAgID0gJSMwMTBseFxuIixyZWcpOwogCiAJbWZzZHIoc2RyX3VhcnQxLHJlZyk7Ci0JcHJpbnRmKCJzZHJfdWFydDEgID0gJSMwMTB4XG4iLHJlZyk7CisJcHJpbnRmKCJzZHJfdWFydDEgID0gJSMwMTBseFxuIixyZWcpOwogCiAJcHJpbnRmKCI9PT09PSBEaXNwbGF5IHJlc2V0IGFuZCBpbml0aWFsaXplIHJlZ2lzdGVyIEVuZCAgID09PT09PT09PVxuIik7CiB9CkBAIC05NywxMyArOTcsMTMgQEAKIAogCXByaW50ZigiUENJLVggY2hpcCBjb250cm9sIHJlZ2lzdGVyc1xuIik7CiAJbWZzZHIoc2RyX3hjciwgcmVnKTsKLQlwcmludGYoInNkcl94Y3IgICAgPSAlIzAxMHhcbiIsIHJlZyk7CisJcHJpbnRmKCJzZHJfeGNyICAgID0gJSMwMTBseFxuIiwgcmVnKTsKIAogCW1mc2RyKHNkcl94cGxsYywgcmVnKTsKLQlwcmludGYoInNkcl94cGxsYyAgPSAlIzAxMHhcbiIsIHJlZyk7CisJcHJpbnRmKCJzZHJfeHBsbGMgID0gJSMwMTBseFxuIiwgcmVnKTsKIAogCW1mc2RyKHNkcl94cGxsZCwgcmVnKTsKLQlwcmludGYoInNkcl94cGxsZCAgPSAlIzAxMHhcbiIsIHJlZyk7CisJcHJpbnRmKCJzZHJfeHBsbGQgID0gJSMwMTBseFxuIiwgcmVnKTsKIAogCXByaW50ZigiUENJLVggQnJpZGdlIENvbmZpZ3VyZSByZWdpc3RlcnNcbiIpOwogCXByaW50ZigiUENJWDBfVkVORElEICAgICAgICAgICAgPSAlIzA2eFxuIiwgaW4xNnIoUENJWDBfVkVORElEKSk7CkBAIC0xMTYsNDkgKzExNiw0OSBAQAogCXByaW50ZigiUENJWDBfSERUWVBFICAgICAgICAgICAgPSAlIzA0eFxuIiwgaW44KFBDSVgwX0hEVFlQRSkpOwogCXByaW50ZigiUENJWDBfQklTVCAgICAgICAgICAgICAgPSAlIzA0eFxuIiwgaW44KFBDSVgwX0JJU1QpKTsKIAotCXByaW50ZigiUENJWDBfQkFSMCAgICAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX0JBUjApKTsKLQlwcmludGYoIlBDSVgwX0JBUjEgICAgICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9CQVIxKSk7Ci0JcHJpbnRmKCJQQ0lYMF9CQVIyICAgICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfQkFSMikpOwotCXByaW50ZigiUENJWDBfQkFSMyAgICAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX0JBUjMpKTsKLQlwcmludGYoIlBDSVgwX0JBUjQgICAgICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9CQVI0KSk7Ci0JcHJpbnRmKCJQQ0lYMF9CQVI1ICAgICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfQkFSNSkpOworCXByaW50ZigiUENJWDBfQkFSMCAgICAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9CQVIwKSk7CisJcHJpbnRmKCJQQ0lYMF9CQVIxICAgICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX0JBUjEpKTsKKwlwcmludGYoIlBDSVgwX0JBUjIgICAgICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfQkFSMikpOworCXByaW50ZigiUENJWDBfQkFSMyAgICAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9CQVIzKSk7CisJcHJpbnRmKCJQQ0lYMF9CQVI0ICAgICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX0JBUjQpKTsKKwlwcmludGYoIlBDSVgwX0JBUjUgICAgICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfQkFSNSkpOwogCi0JcHJpbnRmKCJQQ0lYMF9DSVNQVFIgICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfQ0lTUFRSKSk7CisJcHJpbnRmKCJQQ0lYMF9DSVNQVFIgICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX0NJU1BUUikpOwogCXByaW50ZigiUENJWDBfU0JTU1lTVklEICAgICAgICAgPSAlIzAxMHhcbiIsIGluMTZyKFBDSVgwX1NCU1lTVklEKSk7CiAJcHJpbnRmKCJQQ0lYMF9TQlNTWVNJRCAgICAgICAgICA9ICUjMDEweFxuIiwgaW4xNnIoUENJWDBfU0JTWVNJRCkpOwotCXByaW50ZigiUENJWDBfRVJPTUJBICAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX0VST01CQSkpOworCXByaW50ZigiUENJWDBfRVJPTUJBICAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9FUk9NQkEpKTsKIAlwcmludGYoIlBDSVgwX0NBUCAgICAgICAgICAgICAgID0gJSMwNHhcbiIsIGluOChQQ0lYMF9DQVApKTsKIAlwcmludGYoIlBDSVgwX0lOVExOICAgICAgICAgICAgID0gJSMwNHhcbiIsIGluOChQQ0lYMF9JTlRMTikpOwogCXByaW50ZigiUENJWDBfSU5UUE4gICAgICAgICAgICAgPSAlIzA0eFxuIiwgaW44KFBDSVgwX0lOVFBOKSk7CiAJcHJpbnRmKCJQQ0lYMF9NSU5HTlQgICAgICAgICAgICA9ICUjMDR4XG4iLCBpbjgoUENJWDBfTUlOR05UKSk7CiAJcHJpbnRmKCJQQ0lYMF9NQVhMVE5DWSAgICAgICAgICA9ICUjMDR4XG4iLCBpbjgoUENJWDBfTUFYTFROQ1kpKTsKIAotCXByaW50ZigiUENJWDBfQlJER09QVDEgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX0JSREdPUFQxKSk7Ci0JcHJpbnRmKCJQQ0lYMF9CUkRHT1BUMiAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfQlJER09QVDIpKTsKKwlwcmludGYoIlBDSVgwX0JSREdPUFQxICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfQlJER09QVDEpKTsKKwlwcmludGYoIlBDSVgwX0JSREdPUFQyICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfQlJER09QVDIpKTsKIAotCXByaW50ZigiUENJWDBfUE9NMExBTCAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX1BPTTBMQUwpKTsKLQlwcmludGYoIlBDSVgwX1BPTTBMQUggICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QT00wTEFIKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QT00wU0EgICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUE9NMFNBKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QT00wUENJTEFMICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUE9NMFBDSUFMKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QT00wUENJTEFIICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUE9NMFBDSUFIKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QT00xTEFMICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUE9NMUxBTCkpOwotCXByaW50ZigiUENJWDBfUE9NMUxBSCAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX1BPTTFMQUgpKTsKLQlwcmludGYoIlBDSVgwX1BPTTFTQSAgICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QT00xU0EpKTsKLQlwcmludGYoIlBDSVgwX1BPTTFQQ0lMQUwgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QT00xUENJQUwpKTsKLQlwcmludGYoIlBDSVgwX1BPTTFQQ0lMQUggICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QT00xUENJQUgpKTsKLQlwcmludGYoIlBDSVgwX1BPTTJTQSAgICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QT00yU0EpKTsKKwlwcmludGYoIlBDSVgwX1BPTTBMQUwgICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUE9NMExBTCkpOworCXByaW50ZigiUENJWDBfUE9NMExBSCAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QT00wTEFIKSk7CisJcHJpbnRmKCJQQ0lYMF9QT00wU0EgICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1BPTTBTQSkpOworCXByaW50ZigiUENJWDBfUE9NMFBDSUxBTCAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QT00wUENJQUwpKTsKKwlwcmludGYoIlBDSVgwX1BPTTBQQ0lMQUggICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUE9NMFBDSUFIKSk7CisJcHJpbnRmKCJQQ0lYMF9QT00xTEFMICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1BPTTFMQUwpKTsKKwlwcmludGYoIlBDSVgwX1BPTTFMQUggICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUE9NMUxBSCkpOworCXByaW50ZigiUENJWDBfUE9NMVNBICAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QT00xU0EpKTsKKwlwcmludGYoIlBDSVgwX1BPTTFQQ0lMQUwgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUE9NMVBDSUFMKSk7CisJcHJpbnRmKCJQQ0lYMF9QT00xUENJTEFIICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1BPTTFQQ0lBSCkpOworCXByaW50ZigiUENJWDBfUE9NMlNBICAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QT00yU0EpKTsKIAotCXByaW50ZigiUENJWDBfUElNMFNBICAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX1BJTTBTQSkpOwotCXByaW50ZigiUENJWDBfUElNMExBTCAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX1BJTTBMQUwpKTsKLQlwcmludGYoIlBDSVgwX1BJTTBMQUggICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QSU0wTEFIKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QSU0xU0EgICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUElNMVNBKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QSU0xTEFMICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUElNMUxBTCkpOwotCXByaW50ZigiUENJWDBfUElNMUxBSCAgICAgICAgICAgPSAlIzAxMHhcbiIsIGluMzJyKFBDSVgwX1BJTTFMQUgpKTsKLQlwcmludGYoIlBDSVgwX1BJTTJTQSAgICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QSU0xU0EpKTsKLQlwcmludGYoIlBDSVgwX1BJTTJMQUwgICAgICAgICAgID0gJSMwMTB4XG4iLCBpbjMycihQQ0lYMF9QSU0xTEFMKSk7Ci0JcHJpbnRmKCJQQ0lYMF9QSU0yTEFIICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfUElNMUxBSCkpOworCXByaW50ZigiUENJWDBfUElNMFNBICAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QSU0wU0EpKTsKKwlwcmludGYoIlBDSVgwX1BJTTBMQUwgICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUElNMExBTCkpOworCXByaW50ZigiUENJWDBfUElNMExBSCAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QSU0wTEFIKSk7CisJcHJpbnRmKCJQQ0lYMF9QSU0xU0EgICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1BJTTFTQSkpOworCXByaW50ZigiUENJWDBfUElNMUxBTCAgICAgICAgICAgPSAlIzAxMGx4XG4iLCBpbjMycihQQ0lYMF9QSU0xTEFMKSk7CisJcHJpbnRmKCJQQ0lYMF9QSU0xTEFIICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1BJTTFMQUgpKTsKKwlwcmludGYoIlBDSVgwX1BJTTJTQSAgICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUElNMVNBKSk7CisJcHJpbnRmKCJQQ0lYMF9QSU0yTEFMICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1BJTTFMQUwpKTsKKwlwcmludGYoIlBDSVgwX1BJTTJMQUggICAgICAgICAgID0gJSMwMTBseFxuIiwgaW4zMnIoUENJWDBfUElNMUxBSCkpOwogCi0JcHJpbnRmKCJQQ0lYMF9YU1RTICAgICAgICAgICAgICA9ICUjMDEweFxuIiwgaW4zMnIoUENJWDBfU1RTKSk7CisJcHJpbnRmKCJQQ0lYMF9YU1RTICAgICAgICAgICAgICA9ICUjMDEwbHhcbiIsIGluMzJyKFBDSVgwX1NUUykpOwogfQogCiBpbnQgZG9fc2hvd194YnJpZGdlX2luZm8oY21kX3RibF90ICogY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQpkaWZmIC0tZ2l0IGEvYm9hcmQvYXJtYWRpbGxvL2ZsYXNoLmMgYi9ib2FyZC9hcm1hZGlsbG8vZmxhc2guYwppbmRleCAwMzdhNjQzLi44NTE4ODU2IDEwMDY0NAotLS0gYS9ib2FyZC9hcm1hZGlsbG8vZmxhc2guYworKysgYi9ib2FyZC9hcm1hZGlsbG8vZmxhc2guYwpAQCAtMjc5LDcgKzI3OSw3IEBACiAJaW50IGksIHJjOwogCiAJd3AgPSAoYWRkciAmIH4xKTsJLyogZ2V0IGxvd2VyIHdvcmQgYWxpZ25lZCBhZGRyZXNzICovCi0JcHJpbnRmICgiV3JpdGluZyAlZCBzaG9ydCBkYXRhIHRvIDB4JXAgZnJvbSAweCVwLlxuICIsIGNudCwgd3AsIHNyYyk7CisJcHJpbnRmICgiV3JpdGluZyAlbHUgc2hvcnQgZGF0YSB0byAweCVseCBmcm9tIDB4JXAuXG4gIiwgY250LCB3cCwgc3JjKTsKIAogCS8qCiAJICogaGFuZGxlIHVuYWxpZ25lZCBzdGFydCBieXRlcwpkaWZmIC0tZ2l0IGEvYm9hcmQvYXRtZWwvYXQ5MXNhbTkyNjBlay9hdDkxc2FtOTI2MGVrLmMgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOTI2MGVrL2F0OTFzYW05MjYwZWsuYwppbmRleCA4MzZhMGM0Li4wNmQ4NTEyIDEwMDY0NAotLS0gYS9ib2FyZC9hdG1lbC9hdDkxc2FtOTI2MGVrL2F0OTFzYW05MjYwZWsuYworKysgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOTI2MGVrL2F0OTFzYW05MjYwZWsuYwpAQCAtMTg4LDggKzE4OCwxNyBAQAogCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBMjUsIDApOwkvKiBFUlgyICovCiAJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEEyNiwgMCk7CS8qIEVSWDMgKi8KIAlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QQTI3LCAwKTsJLyogRVJYQ0sgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19BVDkxU0FNOTI2MEVLKQorCS8qCisJICogdXNlIFBBMTAsIFBBMTEgZm9yIEVUWDIsIEVUWDMuCisJICogUEEyMyBhbmQgUEEyNCBhcmUgZm9yIFRXSSBFRVBST00KKwkgKi8KKwlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QQTEwLCAwKTsJLyogRVRYMiAqLworCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBMTEsIDApOwkvKiBFVFgzICovCisjZWxzZQogCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBMjMsIDApOwkvKiBFVFgyICovCiAJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEEyNCwgMCk7CS8qIEVUWDMgKi8KKyNlbmRpZgogCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBMjIsIDApOwkvKiBFVFhFUiAqLwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2JvYXJkL2NvYnJhNTI3Mi9taWkuYyBiL2JvYXJkL2NvYnJhNTI3Mi9taWkuYwppbmRleCBkMGE0YTM5Li5iMzBiYTgwIDEwMDY0NAotLS0gYS9ib2FyZC9jb2JyYTUyNzIvbWlpLmMKKysrIGIvYm9hcmQvY29icmE1MjcyL21paS5jCkBAIC0yMDAsNyArMjAwLDcgQEAKIH0KICNlbmRpZgkJCQkvKiBDRkdfRElTQ09WRVJfUEhZICovCiAKLWludCBtaWlfaW5pdCh2b2lkKSBfX2F0dHJpYnV0ZV9fKCh3ZWFrLGFsaWFzKCJfX21paV9pbml0IikpKTsKK3ZvaWQgbWlpX2luaXQodm9pZCkgX19hdHRyaWJ1dGVfXygod2VhayxhbGlhcygiX19taWlfaW5pdCIpKSk7CiAKIHZvaWQgX19taWlfaW5pdCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYm9hcmQvZGVsdGEvbmFuZC5jIGIvYm9hcmQvZGVsdGEvbmFuZC5jCmluZGV4IGE2MzVhNjUuLjUwMjQwNTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2RlbHRhL25hbmQuYworKysgYi9ib2FyZC9kZWx0YS9uYW5kLmMKQEAgLTI1NCw3ICsyNTQsNyBAQAogCQkJYnJlYWs7CiAJCX0KIAkJaWYoZ2V0X2RlbHRhKHN0YXJ0KSA+IHRpbWVvdXQpIHsKLQkJCURGQ19ERUJVRzEoImRmY193YWl0X2V2ZW50OiBUSU1FT1VUIHdhaXRpbmcgZm9yIGV2ZW50OiAweCV4LlxuIiwgZXZlbnQpOworCQkJREZDX0RFQlVHMSgiZGZjX3dhaXRfZXZlbnQ6IFRJTUVPVVQgd2FpdGluZyBmb3IgZXZlbnQ6IDB4JWx4LlxuIiwgZXZlbnQpOwogCQkJcmV0dXJuIDB4ZmYwMDAwMDA7CiAJCX0KIApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201MjM1ZXZiL201MjM1ZXZiLmMgYi9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvbTUyMzVldmIuYwppbmRleCBjMmM4ZmU4Li5iZDhhNGU1IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvbTUyMzVldmIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvbTUyMzVldmIuYwpAQCAtNzUsOSArNzUsMTEgQEAKIAkJc2RyYW0tPmRhY3IwID0KIAkJICAgIFNEUkFNQ19EQVJDbl9CQShDRkdfU0RSQU1fQkFTRSkgfCBTRFJBTUNfREFSQ25fQ0FTTF9DMSB8CiAJCSAgICBTRFJBTUNfREFSQ25fQ0JNX0NNRDIwIHwgU0RSQU1DX0RBUkNuX1BTXzMyOworCQlhc20oIm5vcCIpOwogCiAJCS8qIEluaXRpYWxpemUgRE1SMCAqLwogCQlzZHJhbS0+ZG1yMCA9ICgoZHJhbXNpemUgLSAxKSAmIDB4RkZGQzAwMDApIHwgU0RSQU1DX0RNUm5fVjsKKwkJYXNtKCJub3AiKTsKIAogCQkvKiBTZXQgSVAgKGJpdCAzKSBpbiBEQUNSICovCiAJCXNkcmFtLT5kYWNyMCB8PSBTRFJBTUNfREFSQ25fSVA7CkBAIC0xMDAsNiArMTAyLDcgQEAKIAogCQkvKiBGaW5pc2ggdGhlIGNvbmZpZ3VyYXRpb24gYnkgaXNzdWluZyB0aGUgTVJTLiAqLwogCQlzZHJhbS0+ZGFjcjAgfD0gU0RSQU1DX0RBUkNuX0lNUlM7CisJCWFzbSgibm9wIik7CiAKIAkJLyogV3JpdGUgdG8gdGhlIFNEUkFNIE1vZGUgUmVnaXN0ZXIgKi8KIAkJKih1MzIgKikgKENGR19TRFJBTV9CQVNFICsgMHg0MDApID0gMHhBNUE1OTY5NjsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tNTI3NWV2Yi9NYWtlZmlsZSBiL2JvYXJkL2ZyZWVzY2FsZS9tNTI3NWV2Yi9NYWtlZmlsZQppbmRleCBlZjBiMTllLi5mMzM3YTc1IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTUyNzVldmIvTWFrZWZpbGUKKysrIGIvYm9hcmQvZnJlZXNjYWxlL201Mjc1ZXZiL01ha2VmaWxlCkBAIC0zMSw3ICszMSw3IEBACiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKIFNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkuZGVwZW5kICQoT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi90c2kxMDhfaW5pdC5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzc0NDhocGMyL3RzaTEwOF9pbml0LmMKaW5kZXggZWZhOTUyYy4uYWQ4MDY5NCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzc0NDhocGMyL3RzaTEwOF9pbml0LmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzc0NDhocGMyL3RzaTEwOF9pbml0LmMKQEAgLTE2NSw4ICsxNjUsOCBAQAogCQlwcmludGYgKCJJbnZhbGlkIEREUjIgY2xvY2sgc2V0dGluZ1xuIik7CiAJCXJldHVybiAtMTsKIAl9Ci0JcHJpbnRmICgiQlVTOiAlZCBNSHpcbiIsIGdldF9ib2FyZF9idXNfY2xrKCkgLyAxMDAwMDAwKTsKLQlwcmludGYgKCJNRU06ICVkIE1IelxuIiwgZ2QtPm1lbV9jbGsgLyAxMDAwMDAwKTsKKwlwcmludGYgKCJCVVM6ICVsdSBNSHpcbiIsIGdldF9ib2FyZF9idXNfY2xrKCkgLyAxMDAwMDAwKTsKKwlwcmludGYgKCJNRU06ICVsdSBNSHpcbiIsIGdkLT5tZW1fY2xrIC8gMTAwMDAwMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTYyMiw4ICs2MjIsOCBAQAogI2lmZGVmIENGR19MMgogCWwyY2FjaGVfZW5hYmxlICgpOwogI2VuZGlmCi0JcHJpbnRmICgiQlVTOiAgICVkIE1IelxuIiwgZ2QtPmJ1c19jbGsgLyAxMDAwMDAwKTsKLQlwcmludGYgKCJNRU06ICAgJWQgTUh6XG4iLCBnZC0+bWVtX2NsayAvIDEwMDAwMDApOworCXByaW50ZiAoIkJVUzogICAlbHUgTUh6XG4iLCBnZC0+YnVzX2NsayAvIDEwMDAwMDApOworCXByaW50ZiAoIk1FTTogICAlbHUgTUh6XG4iLCBnZC0+bWVtX2NsayAvIDEwMDAwMDApOwogCiAJLyoKIAkgKiBBbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBwcmludCB0aGUgY2FjaGUgZGV0YWlscyBpcyBhdmFpYmxhYmxlCmRpZmYgLS1naXQgYS9ib2FyZC9pbnRlZ3JhdG9yY3AvZmxhc2guYyBiL2JvYXJkL2ludGVncmF0b3JjcC9mbGFzaC5jCmluZGV4IGI2NTNjMDUuLjU5OTYxY2QgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ludGVncmF0b3JjcC9mbGFzaC5jCisrKyBiL2JvYXJkL2ludGVncmF0b3JjcC9mbGFzaC5jCkBAIC0zOTMsNyArMzkzLDcgQEAKIAkJCQkJCSphZGRyID0gKEZQVykgMHgwMEQwMDBEMDsKIAkJCQkJfSBlbHNlIHsKICNpZmRlZiBERUJVRwotCQkJCQkJcHJpbnRmICgiVGltZW91dCwweCUwOHhcbiIsIHN0YXR1cyk7CisJCQkJCQlwcmludGYgKCJUaW1lb3V0LDB4JTA4bHhcbiIsIHN0YXR1cyk7CiAjZWxzZQogCQkJCQkJcHJpbnRmKCJUaW1lb3V0XG4iKTsKICNlbmRpZgpAQCAtNTE1LDcgKzUxNSw3IEBACiAKIAkvKiBDaGVjayBpZiBGbGFzaCBpcyAoc3VmZmljaWVudGx5KSBlcmFzZWQgKi8KIAlpZiAoKCphZGRyICYgZGF0YSkgIT0gZGF0YSkgewotCQlwcmludGYgKCJub3QgZXJhc2VkIGF0ICUwOGx4ICgleClcbiIsICh1bG9uZykgYWRkciwgKmFkZHIpOworCQlwcmludGYgKCJub3QgZXJhc2VkIGF0ICUwOGx4ICglbHgpXG4iLCAodWxvbmcpIGFkZHIsICphZGRyKTsKIAkJcmV0dXJuICgyKTsKIAl9CiAKQEAgLTU0Miw3ICs1NDIsNyBAQAogI2lmZGVmIERFQlVHCiAJCQkqYWRkciA9IChGUFcpIDB4MDA3MDAwNzA7CiAJCQlzdGF0dXMgPSAqYWRkcjsKLQkJCXByaW50ZigiIyMgc3RhdHVzPTB4JTA4eCwgYWRkcj0weCUwOHhcbiIsIHN0YXR1cywgYWRkcik7CisJCQlwcmludGYoIiMjIHN0YXR1cz0weCUwOGx4LCBhZGRyPTB4JXBcbiIsIHN0YXR1cywgYWRkcik7CiAjZW5kaWYKIAkJCSphZGRyID0gKEZQVykgMHgwMDUwMDA1MDsgLyogY2xlYXIgc3RhdHVzIHJlZ2lzdGVyIGNtZCAqLwogCQkJKmFkZHIgPSAoRlBXKSAweDAwRkYwMEZGOyAvKiByZXN0b3JlIHJlYWQgbW9kZSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXAydXNiL2ZsYXNoLmMgYi9ib2FyZC9tcDJ1c2IvZmxhc2guYwppbmRleCA4OWNlZDE2Li5jMTlkNDQ1IDEwMDY0NAotLS0gYS9ib2FyZC9tcDJ1c2IvZmxhc2guYworKysgYi9ib2FyZC9tcDJ1c2IvZmxhc2guYwpAQCAtNDI2LDcgKzQyNiw3IEBACiAKIAkvKiBDaGVjayBpZiBGbGFzaCBpcyAoc3VmZmljaWVudGx5KSBlcmFzZWQgKi8KIAlpZiAoKCphZGRyICYgZGF0YSkgIT0gZGF0YSkgewotCQlwcmludGYgKCJub3QgZXJhc2VkIGF0ICUwOGx4ICglbHgpXG4iLCAodWxvbmcpIGFkZHIsICphZGRyKTsKKwkJcHJpbnRmICgibm90IGVyYXNlZCBhdCAlMDhseCAoJWx4KVxuIiwgKHVsb25nKSBhZGRyLCAodWxvbmcpICphZGRyKTsKIAkJcmV0dXJuICgyKTsKIAl9CiAJLyoKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YWwvaGN1NS9zZHJhbS5jIGIvYm9hcmQvbmV0c3RhbC9oY3U1L3NkcmFtLmMKaW5kZXggODBlODRhZS4uNjZhOTU4YyAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0c3RhbC9oY3U1L3NkcmFtLmMKKysrIGIvYm9hcmQvbmV0c3RhbC9oY3U1L3NkcmFtLmMKQEAgLTcxLDcgKzcxLDcgQEAKIAl9CiAKIAlnZXRfc3lzX2luZm8oJmJvYXJkX2NmZyk7Ci0JcHJpbnRmKCIsICVkIE1IeiIsIChib2FyZF9jZmcuZnJlcVBMQiAqIDIpIC8gMTAwMDAwMCk7CisJcHJpbnRmKCIsICVsdSBNSHoiLCAoYm9hcmRfY2ZnLmZyZXFQTEIgKiAyKSAvIDEwMDAwMDApOwogCiAJbWZzZHJhbShERFIwXzAzLCB2YWwpOwogCXZhbCA9IEREUjBfMDNfQ0FTTEFUX0RFQ09ERSh2YWwpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L21ldHJvYm94LmMgYi9ib2FyZC9zYW5kYnVyc3QvbWV0cm9ib3gvbWV0cm9ib3guYwppbmRleCA2M2M5MWRjLi5jMzg4NTBkIDEwMDY0NAotLS0gYS9ib2FyZC9zYW5kYnVyc3QvbWV0cm9ib3gvbWV0cm9ib3guYworKysgYi9ib2FyZC9zYW5kYnVyc3QvbWV0cm9ib3gvbWV0cm9ib3guYwpAQCAtMjgyLDcgKzI4Miw3IEBACiAJfQogCiAJcHJpbnRmICgiT3B0b0ZQR0EgSUQ6XHQweCUwMlhcdFJldjogIDB4JTAyWFxuIiwgb3B0b19pZCwgb3B0b19yZXYpOwotCXByaW50ZiAoIkJvYXJkIFJldjpcdDB4JTAyWFx0SUQ6ICAlc1xuIiwgYnJkX3JldiwgKGNoYXIgKilib2FyZF9pZF9hc1ticmRfaWRdKTsKKwlwcmludGYgKCJCb2FyZCBSZXY6XHQweCUwMlhcdElEOiAgJXNcbiIsIGJyZF9yZXYsIGJvYXJkX2lkX2FzW2JyZF9pZF0ubmFtZSk7CiAKIAkvKiBGaXggdGhlIGFjayBpbiB0aGUgYm1lIDMyICovCiAJdWRlbGF5KDUwMDApOwpkaWZmIC0tZ2l0IGEvYm9hcmQvdmVyc2F0aWxlL2ZsYXNoLmMgYi9ib2FyZC92ZXJzYXRpbGUvZmxhc2guYwppbmRleCBjYTc3YzhhLi5iYmU1ZGY3IDEwMDY0NAotLS0gYS9ib2FyZC92ZXJzYXRpbGUvZmxhc2guYworKysgYi9ib2FyZC92ZXJzYXRpbGUvZmxhc2guYwpAQCAtNDc2LDcgKzQ3Niw3IEBACiAKIAkvKiBDaGVjayBpZiBGbGFzaCBpcyAoc3VmZmljaWVudGx5KSBlcmFzZWQgKi8KIAlpZiAoKCphZGRyICYgZGF0YSkgIT0gZGF0YSkgewotCQlwcmludGYgKCJub3QgZXJhc2VkIGF0ICUwOGx4ICgleClcbiIsICh1bG9uZykgYWRkciwgKmFkZHIpOworCQlwcmludGYgKCJub3QgZXJhc2VkIGF0ICUwOGx4ICglbHgpXG4iLCAodWxvbmcpIGFkZHIsICh1bG9uZykgKmFkZHIpOwogCQlyZXR1cm4gKDIpOwogCX0KIApkaWZmIC0tZ2l0IGEvYm9hcmQvenlsb25pdGUvbmFuZC5jIGIvYm9hcmQvenlsb25pdGUvbmFuZC5jCmluZGV4IGFhMzkzMmEuLmNhMTY1NzggMTAwNjQ0Ci0tLSBhL2JvYXJkL3p5bG9uaXRlL25hbmQuYworKysgYi9ib2FyZC96eWxvbml0ZS9uYW5kLmMKQEAgLTI1NCw3ICsyNTQsNyBAQAogCQkJYnJlYWs7CiAJCX0KIAkJaWYoZ2V0X2RlbHRhKHN0YXJ0KSA+IHRpbWVvdXQpIHsKLQkJCURGQ19ERUJVRzEoImRmY193YWl0X2V2ZW50OiBUSU1FT1VUIHdhaXRpbmcgZm9yIGV2ZW50OiAweCV4LlxuIiwgZXZlbnQpOworCQkJREZDX0RFQlVHMSgiZGZjX3dhaXRfZXZlbnQ6IFRJTUVPVVQgd2FpdGluZyBmb3IgZXZlbnQ6IDB4JWx4LlxuIiwgZXZlbnQpOwogCQkJcmV0dXJuIDB4ZmYwMDAwMDA7CiAJCX0KIApkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9udmVkaXQuYyBiL2NvbW1vbi9jbWRfbnZlZGl0LmMKaW5kZXggODVhMGY5NC4uNzA4OTcwNiAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9udmVkaXQuYworKysgYi9jb21tb24vY21kX252ZWRpdC5jCkBAIC05OSw3ICs5OSw4IEBACiAJCQl9CiAJCX0KIAotCQlwcmludGYoIlxuRW52aXJvbm1lbnQgc2l6ZTogJWQvJWQgYnl0ZXNcbiIsIGksIEVOVl9TSVpFKTsKKwkJcHJpbnRmKCJcbkVudmlyb25tZW50IHNpemU6ICVkLyVsZCBieXRlc1xuIiwKKwkJCWksICh1bG9uZylFTlZfU0laRSk7CiAKIAkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9vbmVuYW5kLmMgYi9jb21tb24vY21kX29uZW5hbmQuYwppbmRleCBhZmYxMWQxLi5jZTk5YTM4IDEwMDY0NAotLS0gYS9jb21tb24vY21kX29uZW5hbmQuYworKysgYi9jb21tb24vY21kX29uZW5hbmQuYwpAQCAtNzAsMTQgKzcwLDE0IEBACiAJCQlpZiAoIWVuZCB8fCBlbmQgPCAwKQogCQkJCWVuZCA9IHN0YXJ0OwogCi0JCQlwcmludGYoIkVyYXNlIGJsb2NrIGZyb20gJWQgdG8gJWRcbiIsIHN0YXJ0LCBlbmQpOworCQkJcHJpbnRmKCJFcmFzZSBibG9jayBmcm9tICVsdSB0byAlbHVcbiIsIHN0YXJ0LCBlbmQpOwogCiAJCQlmb3IgKGJsb2NrID0gc3RhcnQ7IGJsb2NrIDw9IGVuZDsgYmxvY2srKykgewogCQkJCWluc3RyLmFkZHIgPSBibG9jayA8PCBvbmVuYW5kX2NoaXAuZXJhc2Vfc2hpZnQ7CiAJCQkJaW5zdHIubGVuID0gMSA8PCBvbmVuYW5kX2NoaXAuZXJhc2Vfc2hpZnQ7CiAJCQkJcmV0ID0gb25lbmFuZF9lcmFzZSgmb25lbmFuZF9tdGQsICZpbnN0cik7CiAJCQkJaWYgKHJldCkgewotCQkJCQlwcmludGYoImVyYXNlIGZhaWxlZCAlZFxuIiwgYmxvY2spOworCQkJCQlwcmludGYoImVyYXNlIGZhaWxlZCAlbHVcbiIsIGJsb2NrKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQpkaWZmIC0tZ2l0IGEvY29tbW9uL2Vudl9vbmVuYW5kLmMgYi9jb21tb24vZW52X29uZW5hbmQuYwppbmRleCBhYzhhOGMxLi5hZDViMWQ3IDEwMDY0NAotLS0gYS9jb21tb24vZW52X29uZW5hbmQuYworKysgYi9jb21tb24vZW52X29uZW5hbmQuYwpAQCAtMTAzLDcgKzEwMyw3IEBACiAJaW5zdHIuYWRkciA9IGVudl9hZGRyOwogCWluc3RyLmFkZHIgLT0gKHVuc2lnbmVkIGxvbmcpb25lbmFuZF9jaGlwLmJhc2U7CiAJaWYgKG9uZW5hbmRfZXJhc2UoJm9uZW5hbmRfbXRkLCAmaW5zdHIpKSB7Ci0JCXByaW50ZigiT25lTkFORDogZXJhc2UgZmFpbGVkIGF0IDB4JTA4eFxuIiwgZW52X2FkZHIpOworCQlwcmludGYoIk9uZU5BTkQ6IGVyYXNlIGZhaWxlZCBhdCAweCUwOGx4XG4iLCBlbnZfYWRkcik7CiAJCXJldHVybiAxOwogCX0KIApkaWZmIC0tZ2l0IGEvY29tbW9uL2ltYWdlLmMgYi9jb21tb24vaW1hZ2UuYwppbmRleCBkZGQ5ZThiLi41MzVjMzAyIDEwMDY0NAotLS0gYS9jb21tb24vaW1hZ2UuYworKysgYi9jb21tb24vaW1hZ2UuYwpAQCAtODI3LDEzICs4MjcsMTMgQEAKIAkJCWNmZ19ub2Zmc2V0ID0gZml0X2NvbmZfZ2V0X25vZGUgKGZpdF9oZHIsIGZpdF91bmFtZV9jb25maWcpOwogCQkJaWYgKGNmZ19ub2Zmc2V0IDwgMCkgewogCQkJCWRlYnVnICgiKiAgcmFtZGlzazogbm8gc3VjaCBjb25maWdcbiIpOwotCQkJCXJldHVybiAwOworCQkJCXJldHVybiAxOwogCQkJfQogCiAJCQlyZF9ub2Zmc2V0ID0gZml0X2NvbmZfZ2V0X3JhbWRpc2tfbm9kZSAoZml0X2hkciwgY2ZnX25vZmZzZXQpOwogCQkJaWYgKHJkX25vZmZzZXQgPCAwKSB7CiAJCQkJZGVidWcgKCIqICByYW1kaXNrOiBubyByYW1kaXNrIGluIGNvbmZpZ1xuIik7Ci0JCQkJcmV0dXJuIDA7CisJCQkJcmV0dXJuIDE7CiAJCQl9CiAJCX0KICNlbmRpZgpAQCAtODcyLDcgKzg3Miw3IEBACiAJCQlpZiAoIWZpdF9jaGVja19mb3JtYXQgKGZpdF9oZHIpKSB7CiAJCQkJcHV0cyAoIkJhZCBGSVQgcmFtZGlzayBpbWFnZSBmb3JtYXQhXG4iKTsKIAkJCQlzaG93X2Jvb3RfcHJvZ3Jlc3MgKC0xMjApOwotCQkJCXJldHVybiAwOworCQkJCXJldHVybiAxOwogCQkJfQogCQkJc2hvd19ib290X3Byb2dyZXNzICgxMjEpOwogCkBAIC04ODcsNyArODg3LDcgQEAKIAkJCQlpZiAoY2ZnX25vZmZzZXQgPCAwKSB7CiAJCQkJCXB1dHMgKCJDb3VsZCBub3QgZmluZCBjb25maWd1cmF0aW9uIG5vZGVcbiIpOwogCQkJCQlzaG93X2Jvb3RfcHJvZ3Jlc3MgKC0xMjIpOwotCQkJCQlyZXR1cm4gMDsKKwkJCQkJcmV0dXJuIDE7CiAJCQkJfQogCQkJCWZpdF91bmFtZV9jb25maWcgPSBmZHRfZ2V0X25hbWUgKGZpdF9oZHIsIGNmZ19ub2Zmc2V0LCBOVUxMKTsKIAkJCQlwcmludGYgKCIgICBVc2luZyAnJXMnIGNvbmZpZ3VyYXRpb25cbiIsIGZpdF91bmFtZV9jb25maWcpOwpAQCAtOTAyLDIwICs5MDIsMjAgQEAKIAkJCWlmIChyZF9ub2Zmc2V0IDwgMCkgewogCQkJCXB1dHMgKCJDb3VsZCBub3QgZmluZCBzdWJpbWFnZSBub2RlXG4iKTsKIAkJCQlzaG93X2Jvb3RfcHJvZ3Jlc3MgKC0xMjQpOwotCQkJCXJldHVybiAwOworCQkJCXJldHVybiAxOwogCQkJfQogCiAJCQlwcmludGYgKCIgICBUcnlpbmcgJyVzJyByYW1kaXNrIHN1YmltYWdlXG4iLCBmaXRfdW5hbWVfcmFtZGlzayk7CiAKIAkJCXNob3dfYm9vdF9wcm9ncmVzcyAoMTI1KTsKIAkJCWlmICghZml0X2NoZWNrX3JhbWRpc2sgKGZpdF9oZHIsIHJkX25vZmZzZXQsIGFyY2gsIGltYWdlcy0+dmVyaWZ5KSkKLQkJCQlyZXR1cm4gMDsKKwkJCQlyZXR1cm4gMTsKIAogCQkJLyogZ2V0IHJhbWRpc2sgaW1hZ2UgZGF0YSBhZGRyZXNzIGFuZCBsZW5ndGggKi8KIAkJCWlmIChmaXRfaW1hZ2VfZ2V0X2RhdGEgKGZpdF9oZHIsIHJkX25vZmZzZXQsICZkYXRhLCAmc2l6ZSkpIHsKIAkJCQlwdXRzICgiQ291bGQgbm90IGZpbmQgcmFtZGlzayBzdWJpbWFnZSBkYXRhIVxuIik7CiAJCQkJc2hvd19ib290X3Byb2dyZXNzICgtMTI3KTsKLQkJCQlyZXR1cm4gMDsKKwkJCQlyZXR1cm4gMTsKIAkJCX0KIAkJCXNob3dfYm9vdF9wcm9ncmVzcyAoMTI4KTsKIApAQCAtOTI1LDcgKzkyNSw3IEBACiAJCQlpZiAoZml0X2ltYWdlX2dldF9sb2FkIChmaXRfaGRyLCByZF9ub2Zmc2V0LCAmcmRfbG9hZCkpIHsKIAkJCQlwdXRzICgiQ2FuJ3QgZ2V0IHJhbWRpc2sgc3ViaW1hZ2UgbG9hZCBhZGRyZXNzIVxuIik7CiAJCQkJc2hvd19ib290X3Byb2dyZXNzICgtMTI5KTsKLQkJCQlyZXR1cm4gMDsKKwkJCQlyZXR1cm4gMTsKIAkJCX0KIAkJCXNob3dfYm9vdF9wcm9ncmVzcyAoMTI5KTsKIApkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNmVqcy9jcHUuYyBiL2NwdS9hcm05MjZlanMvY3B1LmMKaW5kZXggNzIyNzMyZS4uNTZjNjI4OSAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9jcHUuYworKysgYi9jcHUvYXJtOTI2ZWpzL2NwdS5jCkBAIC0xMzQsMjUgKzEzNCw1MiBAQAogCXJldHVybiAoMCk7CiB9CiAKLXZvaWQgaWNhY2hlX2VuYWJsZSAodm9pZCkKKy8qIGNhY2hlX2JpdCBtdXN0IGJlIGVpdGhlciBDMV9JQyBvciBDMV9EQyAqLworc3RhdGljIHZvaWQgY2FjaGVfZW5hYmxlKHVpbnQzMl90IGNhY2hlX2JpdCkKIHsKLQl1bG9uZyByZWc7CisJdWludDMyX3QgcmVnOwogCi0JcmVnID0gcmVhZF9wMTVfYzEgKCk7CQkvKiBnZXQgY29udHJvbCByZWcuICovCi0JY3BfZGVsYXkgKCk7Ci0Jd3JpdGVfcDE1X2MxIChyZWcgfCBDMV9JQyk7CisJcmVnID0gcmVhZF9wMTVfYzEoKTsJLyogZ2V0IGNvbnRyb2wgcmVnLiAqLworCWNwX2RlbGF5KCk7CisJd3JpdGVfcDE1X2MxKHJlZyB8IGNhY2hlX2JpdCk7CiB9CiAKLXZvaWQgaWNhY2hlX2Rpc2FibGUgKHZvaWQpCisvKiBjYWNoZV9iaXQgbXVzdCBiZSBlaXRoZXIgQzFfSUMgb3IgQzFfREMgKi8KK3N0YXRpYyB2b2lkIGNhY2hlX2Rpc2FibGUodWludDMyX3QgY2FjaGVfYml0KQogewotCXVsb25nIHJlZzsKKwl1aW50MzJfdCByZWc7CiAKLQlyZWcgPSByZWFkX3AxNV9jMSAoKTsKLQljcF9kZWxheSAoKTsKLQl3cml0ZV9wMTVfYzEgKHJlZyAmIH5DMV9JQyk7CisJcmVnID0gcmVhZF9wMTVfYzEoKTsKKwljcF9kZWxheSgpOworCXdyaXRlX3AxNV9jMShyZWcgJiB+Y2FjaGVfYml0KTsKIH0KIAotaW50IGljYWNoZV9zdGF0dXMgKHZvaWQpCit2b2lkIGljYWNoZV9lbmFibGUodm9pZCkKIHsKLQlyZXR1cm4gKHJlYWRfcDE1X2MxICgpICYgQzFfSUMpICE9IDA7CisJY2FjaGVfZW5hYmxlKEMxX0lDKTsKK30KKwordm9pZCBpY2FjaGVfZGlzYWJsZSh2b2lkKQoreworCWNhY2hlX2Rpc2FibGUoQzFfSUMpOworfQorCitpbnQgaWNhY2hlX3N0YXR1cyh2b2lkKQoreworCXJldHVybiAocmVhZF9wMTVfYzEoKSAmIEMxX0lDKSAhPSAwOworfQorCit2b2lkIGRjYWNoZV9lbmFibGUodm9pZCkKK3sKKwljYWNoZV9lbmFibGUoQzFfREMpOworfQorCit2b2lkIGRjYWNoZV9kaXNhYmxlKHZvaWQpCit7CisJY2FjaGVfZGlzYWJsZShDMV9EQyk7Cit9CisKK2ludCBkY2FjaGVfc3RhdHVzKHZvaWQpCit7CisJcmV0dXJuIChyZWFkX3AxNV9jMSgpICYgQzFfREMpICE9IDA7CiB9CmRpZmYgLS1naXQgYS9jcHUvbWNmNTIyN3gvY3B1X2luaXQuYyBiL2NwdS9tY2Y1MjI3eC9jcHVfaW5pdC5jCmluZGV4IDcxYjA1M2QuLmNmMjk1NTkgMTAwNjQ0Ci0tLSBhL2NwdS9tY2Y1MjI3eC9jcHVfaW5pdC5jCisrKyBiL2NwdS9tY2Y1MjI3eC9jcHVfaW5pdC5jCkBAIC0xMDYsNyArMTA2LDcgQEAKICAqLwogaW50IGNwdV9pbml0X3Iodm9pZCkKIHsKLSNpZmRlZiBDT05GSUdfTUNGVE1SCisjaWZkZWYgQ09ORklHX01DRlJUQwogCXZvbGF0aWxlIHJ0Y190ICpydGMgPSAodm9sYXRpbGUgcnRjX3QgKikoQ0ZHX01DRlJUQ19CQVNFKTsKIAl2b2xhdGlsZSBydGNleF90ICpydGNleCA9ICh2b2xhdGlsZSBydGNleF90ICopJnJ0Yy0+ZXh0ZW5kZWQ7CiAJdTMyIG9zY2lsbGF0b3IgPSBDRkdfUlRDX09TQ0lMTEFUT1I7CmRpZmYgLS1naXQgYS9jcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jIGIvY3B1L21jZjUyeDIvY3B1X2luaXQuYwppbmRleCAyMDdhMzdlLi4zNDRiY2VlIDEwMDY0NAotLS0gYS9jcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jCisrKyBiL2NwdS9tY2Y1MngyL2NwdV9pbml0LmMKQEAgLTQxOSw4ICs0MTksNyBAQAogCSAgIGVsc2UgaXMgZG9pbmcgaXQhICovCiAKICNpZiBkZWZpbmVkKENGR19DUzBfQkFTRSkgJiBkZWZpbmVkKENGR19DUzBfU0laRSkgJiBcCi0gICAgZGVmaW5lZChDRkdfQ1MwX1dJRFRIKSAmIGRlZmluZWQoQ0ZHX0NTMF9STykgJiBcCi0JZGVmaW5lZChDRkdfQ1MwX1dTKQorICAgIGRlZmluZWQoQ0ZHX0NTMF9XSURUSCkgJiBkZWZpbmVkKENGR19DUzBfV1MpCiAKIAlNQ0ZDU01fQ1NBUjAgPSAoQ0ZHX0NTMF9CQVNFID4+IDE2KSAmIDB4RkZGRjsKIApAQCAtNDQ3LDggKzQ0Niw3IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQ0ZHX0NTMV9CQVNFKSAmIGRlZmluZWQoQ0ZHX0NTMV9TSVpFKSAmIFwKLSAgICBkZWZpbmVkKENGR19DUzFfV0lEVEgpICYgZGVmaW5lZChDRkdfQ1MxX1JPKSAmIFwKLQlkZWZpbmVkKENGR19DUzFfV1MpCisgICAgZGVmaW5lZChDRkdfQ1MxX1dJRFRIKSAmIGRlZmluZWQoQ0ZHX0NTMV9XUykKIAogCU1DRkNTTV9DU0FSMSA9IChDRkdfQ1MxX0JBU0UgPj4gMTYpICYgMHhGRkZGOwogCkBAIC00NzYsOCArNDc0LDcgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDRkdfQ1MyX0JBU0UpICYgZGVmaW5lZChDRkdfQ1MyX1NJWkUpICYgXAotICAgIGRlZmluZWQoQ0ZHX0NTMl9XSURUSCkgJiBkZWZpbmVkKENGR19DUzJfUk8pICYgXAotCWRlZmluZWQoQ0ZHX0NTMl9XUykKKyAgICBkZWZpbmVkKENGR19DUzJfV0lEVEgpICYgZGVmaW5lZChDRkdfQ1MyX1dTKQogCiAJTUNGQ1NNX0NTQVIyID0gKENGR19DUzJfQkFTRSA+PiAxNikgJiAweEZGRkY7CiAKQEAgLTUwNSw4ICs1MDIsNyBAQAogI2VuZGlmCiAKICNpZiBkZWZpbmVkKENGR19DUzNfQkFTRSkgJiBkZWZpbmVkKENGR19DUzNfU0laRSkgJiBcCi0gICAgZGVmaW5lZChDRkdfQ1MzX1dJRFRIKSAmIGRlZmluZWQoQ0ZHX0NTM19STykgJiBcCi0JZGVmaW5lZChDRkdfQ1MzX1dTKQorICAgIGRlZmluZWQoQ0ZHX0NTM19XSURUSCkgJiBkZWZpbmVkKENGR19DUzNfV1MpCiAKIAlNQ0ZDU01fQ1NBUjMgPSAoQ0ZHX0NTM19CQVNFID4+IDE2KSAmIDB4RkZGRjsKIApkaWZmIC0tZ2l0IGEvY3B1L21jZjUyeDIvc3BlZWQuYyBiL2NwdS9tY2Y1MngyL3NwZWVkLmMKaW5kZXggNWZhZmNkOC4uZjZlZGQ1YiAxMDA2NDQKLS0tIGEvY3B1L21jZjUyeDIvc3BlZWQuYworKysgYi9jcHUvbWNmNTJ4Mi9zcGVlZC5jCkBAIC02OSw3ICs2OSw3IEBACiAKIAkvKiBTZXR1cCBQTEwgKi8KIAlwbGwtPnN5bmNyID0gMHgwMTA4MDAwMDsKLQl3aGlsZSAoIShwbGwtPnN5bnNyICYgRk1QTExfU1lOU1JfTE9DSykKKwl3aGlsZSAoIShwbGwtPnN5bnNyICYgRk1QTExfU1lOU1JfTE9DSykpCiAJCTsKIAlwbGwtPnN5bmNyID0gMHgwMTAwMDAwMDsKIAl3aGlsZSAoIShwbGwtPnN5bnNyICYgRk1QTExfU1lOU1JfTE9DSykpCmRpZmYgLS1naXQgYS9jcHUvbWNmNTQ0NXgvY29uZmlnLm1rIGIvY3B1L21jZjU0NDV4L2NvbmZpZy5tawppbmRleCA4ODQzM2YyLi42N2VmYTA3IDEwMDY0NAotLS0gYS9jcHUvbWNmNTQ0NXgvY29uZmlnLm1rCisrKyBiL2NwdS9tY2Y1NDQ1eC9jb25maWcubWsKQEAgLTI5LDMgKzI5LDkgQEAKIGVsc2UKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1tNTQwNyAtZlBJQwogZW5kaWYKKworaWZuZXEgKCwkKGZpbmRzdHJpbmcgLWxpbnV4LSwkKHNoZWxsICQoQ0MpIC0tdmVyc2lvbikpKQoraWZuZXEgKCwkKGZpbmRzdHJpbmcgR09ULCQoc2hlbGwgJChMRCkgLS1oZWxwKSkpCitQTEFURk9STV9MREZMQUdTICs9IC0tZ290PXNpbmdsZQorZW5kaWYKK2VuZGlmCmRpZmYgLS1naXQgYS9jcHUvbWNmNTQ0NXgvY3B1X2luaXQuYyBiL2NwdS9tY2Y1NDQ1eC9jcHVfaW5pdC5jCmluZGV4IDU4NTIxNmQuLmUwNzc0OGIgMTAwNjQ0Ci0tLSBhL2NwdS9tY2Y1NDQ1eC9jcHVfaW5pdC5jCisrKyBiL2NwdS9tY2Y1NDQ1eC9jcHVfaW5pdC5jCkBAIC0xMTAsNyArMTEwLDcgQEAKICAqLwogaW50IGNwdV9pbml0X3Iodm9pZCkKIHsKLSNpZmRlZiBDT05GSUdfTUNGVE1SCisjaWZkZWYgQ09ORklHX01DRlJUQwogCXZvbGF0aWxlIHJ0Y190ICpydGMgPSAodm9sYXRpbGUgcnRjX3QgKikoQ0ZHX01DRlJUQ19CQVNFKTsKIAl2b2xhdGlsZSBydGNleF90ICpydGNleCA9ICh2b2xhdGlsZSBydGNleF90ICopJnJ0Yy0+ZXh0ZW5kZWQ7CiAKZGlmZiAtLWdpdCBhL2NwdS9tY2Y1NDQ1eC9zdGFydC5TIGIvY3B1L21jZjU0NDV4L3N0YXJ0LlMKaW5kZXggMzI0MWIyNy4uODllYzdiYyAxMDA2NDQKLS0tIGEvY3B1L21jZjU0NDV4L3N0YXJ0LlMKKysrIGIvY3B1L21jZjU0NDV4L3N0YXJ0LlMKQEAgLTI1Myw3ICsyNTMsNyBAQAogLyogZXhjZXB0aW9uIGNvZGUgKi8KIAkuZ2xvYmwgX2ZhdWx0CiBfZmF1bHQ6Ci0Jam1wIF9mYXVsdAorCWJyYSBfZmF1bHQKIAkuZ2xvYmwJX2V4Y19oYW5kbGVyCiAKIF9leGNfaGFuZGxlcjoKZGlmZiAtLWdpdCBhL2NwdS9tY2Y1NDd4Xzh4L2NvbmZpZy5tayBiL2NwdS9tY2Y1NDd4Xzh4L2NvbmZpZy5tawppbmRleCBlNWY0Mzg1Li41NjdiMjgxIDEwMDY0NAotLS0gYS9jcHUvbWNmNTQ3eF84eC9jb25maWcubWsKKysrIGIvY3B1L21jZjU0N3hfOHgvY29uZmlnLm1rCkBAIC0yOSwzICsyOSw5IEBACiBlbHNlCiBQTEFURk9STV9DUFBGTEFHUyArPSAtbTU0MDcgLWZQSUMKIGVuZGlmCisKK2lmbmVxICgsJChmaW5kc3RyaW5nIC1saW51eC0sJChzaGVsbCAkKENDKSAtLXZlcnNpb24pKSkKK2lmbmVxICgsJChmaW5kc3RyaW5nIEdPVCwkKHNoZWxsICQoTEQpIC0taGVscCkpKQorUExBVEZPUk1fTERGTEFHUyArPSAtLWdvdD1zaW5nbGUKK2VuZGlmCitlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L21jZjU0N3hfOHgvc3RhcnQuUyBiL2NwdS9tY2Y1NDd4Xzh4L3N0YXJ0LlMKaW5kZXggOGI4NzA4ZC4uODczNTVmOSAxMDA2NDQKLS0tIGEvY3B1L21jZjU0N3hfOHgvc3RhcnQuUworKysgYi9jcHUvbWNmNTQ3eF84eC9zdGFydC5TCkBAIC0yNTksNyArMjU5LDcgQEAKIC8qIGV4Y2VwdGlvbiBjb2RlICovCiAJLmdsb2JsIF9mYXVsdAogX2ZhdWx0OgotCWptcCBfZmF1bHQKKwlicmEgX2ZhdWx0CiAJLmdsb2JsCV9leGNfaGFuZGxlcgogCiBfZXhjX2hhbmRsZXI6CmRpZmYgLS1naXQgYS9jcHUvcHBjNHh4LzR4eF9wY2llLmMgYi9jcHUvcHBjNHh4LzR4eF9wY2llLmMKaW5kZXggZDUwYTUzOC4uOTgwM2ZjYyAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC80eHhfcGNpZS5jCisrKyBiL2NwdS9wcGM0eHgvNHh4X3BjaWUuYwpAQCAtMjUsMTEgKzI1LDExIEBACiAjZGVmaW5lIERFQlVHCiAjZW5kaWYKIAotI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KLSNpbmNsdWRlIDxhc20tcHBjL2lvLmg+Ci0jaW5jbHVkZSA8cHBjNHh4Lmg+CiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8cGNpLmg+CisjaW5jbHVkZSA8cHBjNHh4Lmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS1wcGMvaW8uaD4KIAogI2lmIChkZWZpbmVkKENPTkZJR180NDBTUEUpIHx8IGRlZmluZWQoQ09ORklHXzQwNUVYKSB8fAlcCiAgICAgZGVmaW5lZChDT05GSUdfNDYwRVgpIHx8IGRlZmluZWQoQ09ORklHXzQ2MEdUKSkgJiYgXApkaWZmIC0tZ2l0IGEvY3B1L3B4YS9tbWMuYyBiL2NwdS9weGEvbW1jLmMKaW5kZXggNDQ5NWE4MC4uMmM4NmEwMSAxMDA2NDQKLS0tIGEvY3B1L3B4YS9tbWMuYworKysgYi9jcHUvcHhhL21tYy5jCkBAIC01MzUsOCArNTM1LDEwIEBACiAJbW1jX2Rldi5yZW1vdmFibGUgPSAwOwogCW1tY19kZXYuYmxvY2tfcmVhZCA9IG1tY19icmVhZDsKIAotCXByaW50ZigiRGV0ZWN0ZWQ6ICV1IGJsb2NrcyBvZiAldSBieXRlcyAoJXVNQikgIiwgbW1jX2Rldi5sYmEsCi0JICAgICAgIG1tY19kZXYuYmxrc3osIG1tY19kZXYubGJhICogbW1jX2Rldi5ibGtzeiAvICgxMDI0ICogMTAyNCkpOworCXByaW50ZigiRGV0ZWN0ZWQ6ICVsdSBibG9ja3Mgb2YgJWx1IGJ5dGVzICglbHVNQikgIiwKKwkJbW1jX2Rldi5sYmEsCisJCW1tY19kZXYuYmxrc3osCisJCW1tY19kZXYubGJhICogbW1jX2Rldi5ibGtzeiAvICgxMDI0ICogMTAyNCkpOwogfQogCiBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vTWFrZWZpbGUgYi9kcml2ZXJzL2h3bW9uL01ha2VmaWxlCmluZGV4IDA2NTQzM2EuLmYwOWYxNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9od21vbi9NYWtlZmlsZQpAQCAtMzAsMTMgKzMwLDEzIEBACiAKIExJQgk9ICQob2JqKWxpYmh3bW9uLmEKIAotQ09CSlMteSArPSBhZG0xMDIxLm8KLUNPQkpTLXkgKz0gZHMxNjIxLm8KLUNPQkpTLXkgKz0gZHMxNzIyLm8KLUNPQkpTLXkgKz0gZHMxNzc1Lm8KK0NPQkpTLSQoQ09ORklHX0RUVF9BRE0xMDIxKSArPSBhZG0xMDIxLm8KK0NPQkpTLSQoQ09ORklHX0RUVF9EUzE2MjEpICs9IGRzMTYyMS5vCitDT0JKUy0kKENPTkZJR19EVFRfRFMxNzIyKSArPSBkczE3MjIubworQ09CSlMtJChDT05GSUdfRFRUX0RTMTc3NSkgKz0gZHMxNzc1Lm8KIENPQkpTLSQoQ09ORklHX0RUVF9MTTczKSArPSBsbTczLm8KLUNPQkpTLXkgKz0gbG03NS5vCi1DT0JKUy15ICs9IGxtODEubworQ09CSlMtJChDT05GSUdfRFRUX0xNNzUpICs9IGxtNzUubworQ09CSlMtJChDT05GSUdfRFRUX0xNODEpICs9IGxtODEubwogCiBDT0JKUwk6PSAkKENPQkpTLXkpCiBTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjEuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCmluZGV4IDlmNjVjZmIuLmI3OTFlYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCkBAIC0zMywxMSArMzMsNDAgQEAKIAogI2luY2x1ZGUgPGNvbW1vbi5oPgogCi0jaWZkZWYgQ09ORklHX0RUVF9BRE0xMDIxCi0KICNpbmNsdWRlIDxpMmMuaD4KICNpbmNsdWRlIDxkdHQuaD4KIAorI2RlZmluZSBEVFRfUkVBRF9MT0NfVkFMVUUJMHgwMAorI2RlZmluZSBEVFRfUkVBRF9SRU1fVkFMVUUJMHgwMQorI2RlZmluZSBEVFRfUkVBRF9TVEFUVVMJCTB4MDIKKyNkZWZpbmUgRFRUX1JFQURfQ09ORklHCQkweDAzCisjZGVmaW5lIERUVF9SRUFEX0NPTlZSQVRFCTB4MDQKKyNkZWZpbmUgRFRUX1JFQURfTE9DX0hJR0hMSU0JMHgwNQorI2RlZmluZSBEVFRfUkVBRF9MT0NfTE9XTElNCTB4MDYKKyNkZWZpbmUgRFRUX1JFQURfUkVNX0hJR0hMSU0JMHgwNworI2RlZmluZSBEVFRfUkVBRF9SRU1fTE9XTElNCTB4MDgKKyNkZWZpbmUgRFRUX1JFQURfREVWSUQJCTB4ZmUKKworI2RlZmluZSBEVFRfV1JJVEVfQ09ORklHCTB4MDkKKyNkZWZpbmUgRFRUX1dSSVRFX0NPTlZSQVRFCTB4MGEKKyNkZWZpbmUgRFRUX1dSSVRFX0xPQ19ISUdITElNCTB4MGIKKyNkZWZpbmUgRFRUX1dSSVRFX0xPQ19MT1dMSU0JMHgwYworI2RlZmluZSBEVFRfV1JJVEVfUkVNX0hJR0hMSU0JMHgwZAorI2RlZmluZSBEVFRfV1JJVEVfUkVNX0xPV0xJTQkweDBlCisjZGVmaW5lIERUVF9XUklURV9PTkVTSE9UCTB4MGYKKworI2RlZmluZSBEVFRfU1RBVFVTX0JVU1kJCTB4ODAJLyogMT1BREMgQ29udmVydGluZyAqLworI2RlZmluZSBEVFRfU1RBVFVTX0xISUdICTB4NDAJLyogMT1Mb2NhbCBIaWdoIFRlbXAgTGltaXQgVHJpcHBlZCAqLworI2RlZmluZSBEVFRfU1RBVFVTX0xMT1cJCTB4MjAJLyogMT1Mb2NhbCBMb3cgVGVtcCBMaW1pdCBUcmlwcGVkICovCisjZGVmaW5lIERUVF9TVEFUVVNfUkhJR0gJMHgxMAkvKiAxPVJlbW90ZSBIaWdoIFRlbXAgTGltaXQgVHJpcHBlZCAqLworI2RlZmluZSBEVFRfU1RBVFVTX1JMT1cJCTB4MDgJLyogMT1SZW1vdGUgTG93IFRlbXAgTGltaXQgVHJpcHBlZCAqLworI2RlZmluZSBEVFRfU1RBVFVTX09QRU4JCTB4MDQJLyogMT1SZW1vdGUgU2Vuc29yIE9wZW4tQ2lyY3VpdCAqLworCisjZGVmaW5lIERUVF9DT05GSUdfQUxFUlRfTUFTS0VECTB4ODAJLyogMD1BTEVSVCBFbmFibGVkLCAxPUFMRVJUIE1hc2tlZCAqLworI2RlZmluZSBEVFRfQ09ORklHX1NUQU5EQlkJMHg0MAkvKiAwPVJ1biwgMT1TdGFuZGJ5ICovCisKKyNkZWZpbmUgRFRUX0FETTEwMjFfREVWSUQJMHg0MQorCiB0eXBlZGVmCiAJc3RydWN0IHsKIAkJdWludCBpMmNfYWRkcjo3OwkvKiA3Yml0IGkyYyBjaGlwIGFkZHJlc3MgKi8KQEAgLTE3MCw1ICsxOTksMyBAQAogCiAJcmV0dXJuIChpbnQpIHZhbDsKIH0gLyogZHR0X2dldF90ZW1wKCkgKi8KLQotI2VuZGlmIC8qIENPTkZJR19EVFRfQURNMTAyMSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9kczE2MjEuYyBiL2RyaXZlcnMvaHdtb24vZHMxNjIxLmMKaW5kZXggNDk0ODE4MS4uNzQ5YWEyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9kczE2MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2RzMTYyMS5jCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KIAotI2lmZGVmIENPTkZJR19EVFRfRFMxNjIxCiAjaWYgIWRlZmluZWQoQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0VOQUJMRSkgfHwgXAogCShDRkdfRUVQUk9NX1BBR0VfV1JJVEVfQklUUyA8IDEpCiAjIGVycm9yICJDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIG11c3QgYmUgZGVmaW5lZCBhbmQgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSB0byB1c2UgQ09ORklHX0RUVF9EUzE2MjEiCkBAIC0zOSw2ICszOCwxNCBAQAogICogRGV2aWNlIGNvZGUKICAqLwogI2RlZmluZSBEVFRfSTJDX0RFVl9DT0RFIDB4NDgJCQkvKiBEYWxsYXMgU2VtaSdzIERTMTYyMSAqLworI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweEFBCisjZGVmaW5lIERUVF9SRUFEX0NPVU5URVIJMHhBOAorI2RlZmluZSBEVFRfUkVBRF9TTE9QRQkJMHhBOQorI2RlZmluZSBEVFRfV1JJVEVfU1RBUlRfQ09OVgkweEVFCisjZGVmaW5lIERUVF9XUklURV9TVE9QX0NPTlYJMHgyMgorI2RlZmluZSBEVFRfVEVNUF9ISUdICQkweEExCisjZGVmaW5lIERUVF9URU1QX0xPVwkJMHhBMgorI2RlZmluZSBEVFRfQ09ORklHCQkweEFDCiAKIGludCBkdHRfcmVhZChpbnQgc2Vuc29yLCBpbnQgcmVnKQogewpAQCAtMTg1LDYgKzE5MiwzIEBACiAKICAgICByZXR1cm4gKGR0dF9yZWFkKHNlbnNvciwgRFRUX1JFQURfVEVNUCkgLyAyNTYpOwogfSAvKiBkdHRfZ2V0X3RlbXAoKSAqLwotCi0KLSNlbmRpZiAvKiBDT05GSUdfRFRUX0RTMTYyMSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9kczE3MjIuYyBiL2RyaXZlcnMvaHdtb24vZHMxNzIyLmMKaW5kZXggYzE5ZWUwMS4uN2UyZjFlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9kczE3MjIuYworKysgYi9kcml2ZXJzL2h3bW9uL2RzMTcyMi5jCkBAIC0xLDggKzEsNSBAQAogCiAjaW5jbHVkZSA8Y29tbW9uLmg+Ci0KLSNpZmRlZiBDT05GSUdfRFMxNzIyCi0KICNpbmNsdWRlIDxzc2kuaD4KIAogc3RhdGljIHZvaWQgZHMxNzIyX3NlbGVjdChpbnQgZGV2KQpAQCAtMTM4LDUgKzEzNSwzIEBACiAJcHJpbnRmKCIlZC4lZCBkZWcgQ1xuXG4iLCAoY2hhcikodGVtcCA+PiA4KSwgdGVtcCAmIDB4ZmYpOwogCXJldHVybiAwOwogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZHMxNzc1LmMgYi9kcml2ZXJzL2h3bW9uL2RzMTc3NS5jCmluZGV4IDBmYmIwYjQuLjZhNGQ4ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZHMxNzc1LmMKKysrIGIvZHJpdmVycy9od21vbi9kczE3NzUuYwpAQCAtMjEsMTEgKzIxLDE0IEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KIAotI2lmZGVmIENPTkZJR19EVFRfRFMxNzc1CiAjaW5jbHVkZSA8aTJjLmg+CiAjaW5jbHVkZSA8ZHR0Lmg+CiAKICNkZWZpbmUgRFRUX0kyQ19ERVZfQ09ERQlDRkdfSTJDX0RUVF9BRERSIC8qIERhbGxhcyBTZW1pJ3MgRFMxNzc1IGRldmljZSBjb2RlICovCisjZGVmaW5lIERUVF9SRUFEX1RFTVAJCTB4MAorI2RlZmluZSBEVFRfQ09ORklHCQkweDEKKyNkZWZpbmUgRFRUX1RFTVBfSFlTVAkJMHgyCisjZGVmaW5lIERUVF9URU1QX09TCQkweDMKIAogaW50IGR0dF9yZWFkKGludCBzZW5zb3IsIGludCByZWcpCiB7CkBAIC0xNTEsNiArMTU0LDMgQEAKIHsKIAlyZXR1cm4gKGR0dF9yZWFkKHNlbnNvciwgRFRUX1JFQURfVEVNUCkgLyAyNTYpOwogfQotCi0KLSNlbmRpZiAvKiBDT05GSUdfRFRUX0RTMTc3NSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwppbmRleCA5OGU4YmQyLi5kZDI0NjgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwpAQCAtMzgsNiArMzgsMTIgQEAKICAqIERldmljZSBjb2RlCiAgKi8KICNkZWZpbmUgRFRUX0kyQ19ERVZfQ09ERSAweDQ4CS8qIE5hdGlvbmFsIFNlbWkncyBMTTczIGRldmljZSAqLworI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweDAKKyNkZWZpbmUgRFRUX0NPTkZJRwkJMHgxCisjZGVmaW5lIERUVF9URU1QX0hJR0gJCTB4MgorI2RlZmluZSBEVFRfVEVNUF9MT1cJCTB4MworI2RlZmluZSBEVFRfQ09OVFJPTAkJMHg0CisjZGVmaW5lIERUVF9JRAkJCTB4NwogCiBpbnQgZHR0X3JlYWQoaW50IGNvbnN0IHNlbnNvciwgaW50IGNvbnN0IHJlZykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03NS5jIGIvZHJpdmVycy9od21vbi9sbTc1LmMKaW5kZXggYzM0ODUxNy4uODA1MWNiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc1LmMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgPGNvbW1vbi5oPgogCi0jaWZkZWYgQ09ORklHX0RUVF9MTTc1CiAjaWYgIWRlZmluZWQoQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0VOQUJMRSkgfHwgXAogCShDRkdfRUVQUk9NX1BBR0VfV1JJVEVfQklUUyA8IDEpCiAjIGVycm9yICJDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIG11c3QgYmUgZGVmaW5lZCBhbmQgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgbXVzdCBiZSBncmVhdGVyIHRoYW4gIDEgdG8gdXNlIENPTkZJR19EVFRfTE03NSIKQEAgLTM2LDExICszNSwxNCBAQAogI2luY2x1ZGUgPGkyYy5oPgogI2luY2x1ZGUgPGR0dC5oPgogCi0KIC8qCiAgKiBEZXZpY2UgY29kZQogICovCiAjZGVmaW5lIERUVF9JMkNfREVWX0NPREUgMHg0OAkJCS8qIE9OIFNlbWkncyBMTTc1IGRldmljZSAqLworI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweDAKKyNkZWZpbmUgRFRUX0NPTkZJRwkJMHgxCisjZGVmaW5lIERUVF9URU1QX0hZU1QJCTB4MgorI2RlZmluZSBEVFRfVEVNUF9TRVQJCTB4MwogCiBpbnQgZHR0X3JlYWQoaW50IHNlbnNvciwgaW50IHJlZykKIHsKQEAgLTIwMCw1ICsyMDIsMyBAQAogICAgIH0KICAgICByZXR1cm4gKGludCkoKGludDE2X3QpIHJldCAvIDI1Nik7CiB9IC8qIGR0dF9nZXRfdGVtcCgpICovCi0KLSNlbmRpZiAvKiBDT05GSUdfRFRUX0xNNzUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04MS5jIGIvZHJpdmVycy9od21vbi9sbTgxLmMKaW5kZXggMDNiYzUzZC4uOTM0OWViNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTgxLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgxLmMKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgPGNvbW1vbi5oPgogCi0jaWZkZWYgQ09ORklHX0RUVF9MTTgxCiAjaWYgIWRlZmluZWQoQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0VOQUJMRSkgfHwgXAogCShDRkdfRUVQUk9NX1BBR0VfV1JJVEVfQklUUyA8IDEpCiAjIGVycm9yICJDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIG11c3QgYmUgZGVmaW5lZCBhbmQgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgbXVzdCBiZSBncmVhdGVyIHRoYW4gIDEgdG8gdXNlIENPTkZJR19EVFRfTE04MSIKQEAgLTQ1LDYgKzQ0LDExIEBACiAgKiBEZXZpY2UgY29kZQogICovCiAjZGVmaW5lIERUVF9JMkNfREVWX0NPREUgMHgyYwkJCS8qIE9OIFNlbWkncyBMTTgxIGRldmljZSAqLworI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweDI3CisjZGVmaW5lIERUVF9DT05GSUdfVEVNUAkJMHg0YgorI2RlZmluZSBEVFRfVEVNUF9NQVgJCTB4MzkKKyNkZWZpbmUgRFRUX1RFTVBfSFlTVAkJMHgzYQorI2RlZmluZSBEVFRfQ09ORklHCQkweDQwCiAKIGludCBkdHRfcmVhZChpbnQgc2Vuc29yLCBpbnQgcmVnKQogewpAQCAtMTQ0LDUgKzE0OCwzIEBACiAKIAlyZXR1cm4gKFRFTVBfRlJPTV9SRUcoKHZhbCA8PCAxKSArICgodG1wY25mICYgMHg4MCkgPj4gNykpKSAvIDEwOwogfSAvKiBkdHRfZ2V0X3RlbXAoKSAqLwotCi0jZW5kaWYgLyogQ09ORklHX0RUVF9MTTgxICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9kYXRhZmxhc2guYyBiL2RyaXZlcnMvbXRkL2RhdGFmbGFzaC5jCmluZGV4IDgyNDdhYTAuLjBhZDQ4Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RhdGFmbGFzaC5jCisrKyBiL2RyaXZlcnMvbXRkL2RhdGFmbGFzaC5jCkBAIC01NCw2ICs1NCwxNyBAQAogCQkJCSZkYXRhZmxhc2hfaW5mb1tpXS5EZXNjKTsKIAogCQlzd2l0Y2ggKGRmY29kZSkgeworCQljYXNlIEFUNDVEQjAyMToKKwkJCWRhdGFmbGFzaF9pbmZvW2ldLkRldmljZS5wYWdlc19udW1iZXIgPSAxMDI0OworCQkJZGF0YWZsYXNoX2luZm9baV0uRGV2aWNlLnBhZ2VzX3NpemUgPSAyNjM7CisJCQlkYXRhZmxhc2hfaW5mb1tpXS5EZXZpY2UucGFnZV9vZmZzZXQgPSA5OworCQkJZGF0YWZsYXNoX2luZm9baV0uRGV2aWNlLmJ5dGVfbWFzayA9IDB4MzAwOworCQkJZGF0YWZsYXNoX2luZm9baV0uRGV2aWNlLmNzID0gY3NbaV0uY3M7CisJCQlkYXRhZmxhc2hfaW5mb1tpXS5EZXNjLkRhdGFGbGFzaF9zdGF0ZSA9IElETEU7CisJCQlkYXRhZmxhc2hfaW5mb1tpXS5sb2dpY2FsX2FkZHJlc3MgPSBjc1tpXS5hZGRyOworCQkJZGF0YWZsYXNoX2luZm9baV0uaWQgPSBkZmNvZGU7CisJCQlmb3VuZFtpXSArPSBkZmNvZGU7OworCQkJYnJlYWs7CiAJCWNhc2UgQVQ0NURCMTYxOgogCQkJZGF0YWZsYXNoX2luZm9baV0uRGV2aWNlLnBhZ2VzX251bWJlciA9IDQwOTY7CiAJCQlkYXRhZmxhc2hfaW5mb1tpXS5EZXZpY2UucGFnZXNfc2l6ZSA9IDUyODsKQEAgLTE2Miw3ICsxNzMsNyBAQAogCQkJaWYoKGVudiAmIEZMQUdfU0VURU5WKSA9PSBGTEFHX1NFVEVOVikgewogCQkJCXN0YXJ0ID0KIAkJCQlkYXRhZmxhc2hfaW5mb1tpXS5EZXZpY2UuYXJlYV9saXN0W2pdLnN0YXJ0OwotCQkJCXNwcmludGYoKGNoYXIqKSBzLCIlWCIsc3RhcnQpOworCQkJCXNwcmludGYoKGNoYXIqKSBzLCIlbFgiLHN0YXJ0KTsKIAkJCQlzZXRlbnYoKGNoYXIqKSBhcmVhX2xpc3RbcGFydF0ubGFiZWwsKGNoYXIqKSBzKTsKIAkJCX0KIAkJCXBhcnQrKzsKQEAgLTE3OCw2ICsxODksOSBAQAogCQlpZiAoZGF0YWZsYXNoX2luZm9baV0uaWQgIT0gMCkgewogCQkJcHJpbnRmKCJEYXRhRmxhc2g6Iik7CiAJCQlzd2l0Y2ggKGRhdGFmbGFzaF9pbmZvW2ldLmlkKSB7CisJCQljYXNlIEFUNDVEQjAyMToKKwkJCQlwcmludGYoIkFUNDVEQjAyMVxuIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUNDVEQjE2MToKIAkJCQlwcmludGYoIkFUNDVEQjE2MVxuIik7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbWM5MTF4LmMgYi9kcml2ZXJzL25ldC9zbWM5MTF4LmMKaW5kZXggMTQ4NGIwYi4uMGZmZjgyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc21jOTExeC5jCisrKyBiL2RyaXZlcnMvbmV0L3NtYzkxMXguYwpAQCAtNTk3LDcgKzU5Nyw3IEBACiAKIAl2YWwgPSByZWdfcmVhZChCWVRFX1RFU1QpOwogCWlmICh2YWwgIT0gMHg4NzY1NDMyMSkgewotCQlwcmludGYoRFJJVkVSTkFNRSAiOiBJbnZhbGlkIGNoaXAgZW5kaWFuIDB4JTA4eFxuIiwgdmFsKTsKKwkJcHJpbnRmKERSSVZFUk5BTUUgIjogSW52YWxpZCBjaGlwIGVuZGlhbiAweCUwOGx4XG4iLCB2YWwpOwogCQlnb3RvIGVycl9vdXQ7CiAJfQogCkBAIC02MDYsNyArNjA2LDcgQEAKIAkJaWYgKGNoaXBfaWRzW2ldLmlkID09IHZhbCkgYnJlYWs7CiAJfQogCWlmICghY2hpcF9pZHNbaV0uaWQpIHsKLQkJcHJpbnRmKERSSVZFUk5BTUUgIjogVW5rbm93biBjaGlwIElEICUwNHhcbiIsIHZhbCk7CisJCXByaW50ZihEUklWRVJOQU1FICI6IFVua25vd24gY2hpcCBJRCAlMDRseFxuIiwgdmFsKTsKIAkJZ290byBlcnJfb3V0OwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHNpMTA4X2V0aC5jIGIvZHJpdmVycy9uZXQvdHNpMTA4X2V0aC5jCmluZGV4IDU3YzBkYzMuLjI1MzQwOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RzaTEwOF9ldGguYworKysgYi9kcml2ZXJzL25ldC90c2kxMDhfZXRoLmMKQEAgLTg5OSw3ICs4OTksNyBAQAogCXN0YXR1cyA9IGxlMzJfdG9fY3B1KHR4X2Rlc2NyLT5jb25maWdfc3RhdHVzKTsKIAlpZiAoKHN0YXR1cyAmIERNQV9ERVNDUl9UWF9PSykgPT0gMCkgewogI2lmZGVmIFRYX1BSSU5UX0VSUk9SUwotCQlwcmludGYgKCJUWCBwYWNrZXQgZXJyb3I6IDB4JTA4eFxuICAgICVzJXMlcyVzXG4iLCBzdGF0dXMsCisJCXByaW50ZiAoIlRYIHBhY2tldCBlcnJvcjogMHglMDhseFxuICAgICVzJXMlcyVzXG4iLCBzdGF0dXMsCiAJCSAgICAgICBzdGF0dXMgJiBETUFfREVTQ1JfVFhfT0sgPyAidHggZXJyb3IsICIgOiAiIiwKIAkJICAgICAgIHN0YXR1cyAmIERNQV9ERVNDUl9UWF9SRVRSWV9MSU1JVCA/CiAJCSAgICAgICAicmV0cnkgbGltaXQgcmVhY2hlZCwgIiA6ICIiLApAQCAtOTU5LDcgKzk1OSw3IEBACiAJCXN0YXR1cyA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2NyLT5jb25maWdfc3RhdHVzKTsKIAkJaWYgKHN0YXR1cyAmIERNQV9ERVNDUl9SWF9CQURfRlJBTUUpIHsKICNpZmRlZiBSWF9QUklOVF9FUlJPUlMKLQkJCXByaW50ZiAoIlJYIHBhY2tldCBlcnJvcjogMHglMDh4XG4gICAgJXMlcyVzJXMlcyVzXG4iLAorCQkJcHJpbnRmICgiUlggcGFja2V0IGVycm9yOiAweCUwOGx4XG4gICAgJXMlcyVzJXMlcyVzXG4iLAogCQkJICAgICAgIHN0YXR1cywKIAkJCSAgICAgICBzdGF0dXMgJiBETUFfREVTQ1JfUlhfRlJBTUVfSVNfVFlQRSA/ICJ0b28gYmlnLCAiCiAJCQkgICAgICAgOiAiIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL21jZnVhcnQuYyBiL2RyaXZlcnMvc2VyaWFsL21jZnVhcnQuYwppbmRleCA4OGYzZWIxLi41ZWI0ZjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9tY2Z1YXJ0LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvbWNmdWFydC5jCkBAIC02Myw4ICs2Myw4IEBACiAJdWFydC0+dW1yID0gVUFSVF9VTVJfU0JfU1RPUF9CSVRTXzE7CiAKIAkvKiBTZXR0aW5nIHVwIEJhdWRSYXRlICovCi0JY291bnRlciA9ICh1MzIpIChnZC0+YnVzX2NsayAvIChnZC0+YmF1ZHJhdGUpKTsKLQljb3VudGVyID4+PSA1OworCWNvdW50ZXIgPSAodTMyKSAoKGdkLT5idXNfY2xrIC8gMzIpICsgKGdkLT5iYXVkcmF0ZSAvIDIpKTsKKwljb3VudGVyID0gY291bnRlciAvIGdkLT5iYXVkcmF0ZTsKIAogCS8qIHdyaXRlIHRvIENUVVI6IGRpdmlkZSBjb3VudGVyIHVwcGVyIGJ5dGUgKi8KIAl1YXJ0LT51YmcxID0gKHU4KSAoKGNvdW50ZXIgJiAweGZmMDApID4+IDgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvc2VyaWFsLmMgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWwuYwppbmRleCAxODJjYTJkLi40Y2NhZWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9zZXJpYWwuYworKysgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWwuYwpAQCAtMTI0LDYgKzEyNCw4IEBACiAKIHN0YXRpYyBpbnQgY2FsY19kaXZpc29yIChOUzE2NTUwX3QgcG9ydCkKIHsKKwl1aW50MzJfdCBjbGtfZGl2aXNvcjsKKwogI2lmZGVmIENPTkZJR19PTUFQMTUxMAogCS8qIElmIGNhbid0IGNsZWFubHkgY2xvY2sgMTE1MjAwIHNldCBkaXYgdG8gMSAqLwogCWlmICgoQ0ZHX05TMTY1NTBfQ0xLID09IDEyMDAwMDAwKSAmJiAoZ2QtPmJhdWRyYXRlID09IDExNTIwMCkpIHsKQEAgLTE0NywxMCArMTQ5LDE1IEBACiAKIAkvKiBDb21wdXRlIGRpdmlzb3IgdmFsdWUuIE5vcm1hbGx5LCB3ZSBzaG91bGQgc2ltcGx5IHJldHVybjoKIAkgKiAgIENGR19OUzE2NTUwX0NMSykgLyBNT0RFX1hfRElWIC8gZ2QtPmJhdWRyYXRlCi0JICogYnV0IHdlIG5lZWQgdG8gcm91bmQgdGhhdCB2YWx1ZSBieSBhZGRpbmcgMC41IG9yIDgvMTYuCisJICogYnV0IHdlIG5lZWQgdG8gcm91bmQgdGhhdCB2YWx1ZSBieSBhZGRpbmcgMC41ICgyLzQpLgogCSAqIFJvdW5kaW5nIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGF0IGhpZ2ggYmF1ZCByYXRlcy4KIAkgKi8KLQlyZXR1cm4gKCgoMTYgKiBDRkdfTlMxNjU1MF9DTEspIC8gTU9ERV9YX0RJViAvIGdkLT5iYXVkcmF0ZSkgKyA4KSAvIDE2OworCWNsa19kaXZpc29yID0gKCgoNCAqIENGR19OUzE2NTUwX0NMSykgLworCQkJKE1PREVfWF9ESVYgKiBnZC0+YmF1ZHJhdGUpKSArIDIpIC8gNDsKKworCWRlYnVnKCJOUzE2NTUwIGNsb2NrIGRpdmlzb3IgPSAlZFxuIiwgY2xrX2Rpdmlzb3IpOworCisJcmV0dXJuIGNsa19kaXZpc29yOwogfQogCiAjaWYgIWRlZmluZWQoQ09ORklHX1NFUklBTF9NVUxUSSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF94dWFydGxpdGUuYyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF94dWFydGxpdGUuYwppbmRleCBkNjc4YWI2Li41YzQxYTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfeHVhcnRsaXRlLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX3h1YXJ0bGl0ZS5jCkBAIC0xLDYgKzEsOCBAQAogLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwNCBBdG1hcmsgVGVjaG5vLCBJbmMuCisgKiAoQykgQ29weXJpZ2h0IDIwMDggTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgorICogQ2xlYW4gZHJpdmVyIGFuZCBhZGQgeGlsaW54IGNvbnN0YW50IGZyb20gaGVhZGVyIGZpbGUKICAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDQgQXRtYXJrIFRlY2hubywgSW5jLgogICogWWFzdXNoaSBTSE9KSSA8eWFzaGlAYXRtYXJrLXRlY2huby5jb20+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTEzLDcgKzE1LDcgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKQEAgLTIzLDE5ICsyNSwyMSBAQAogICovCiAKICNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KIAogI2lmZGVmCUNPTkZJR19YSUxJTlhfVUFSVExJVEUKIAotI2luY2x1ZGUgPGFzbS9zZXJpYWxfeHVhcnRsaXRlLmg+CisjZGVmaW5lIFJYX0ZJRk9fT0ZGU0VUCQkwIC8qIHJlY2VpdmUgRklGTywgcmVhZCBvbmx5ICovCisjZGVmaW5lIFRYX0ZJRk9fT0ZGU0VUCQk0IC8qIHRyYW5zbWl0IEZJRk8sIHdyaXRlIG9ubHkgKi8KKyNkZWZpbmUgU1RBVFVTX1JFR19PRkZTRVQJOCAvKiBzdGF0dXMgcmVnaXN0ZXIsIHJlYWQgb25seSAqLwogCi0vKiBGSVhNRTogd2Ugc2hvdWxkIGNvbnZlcnQgdGhlc2UgdG8gaW4zMiBhbmQgb3V0MzIgKi8KLSNkZWZpbmUgSU9fV09SRChvZmZzZXQpCSAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShvZmZzZXQpKQotI2RlZmluZSBJT19TRVJJQUwob2Zmc2V0KSAgICBJT19XT1JEKENPTkZJR19TRVJJQUxfQkFTRSArIChvZmZzZXQpKQorI2RlZmluZSBTUl9UWF9GSUZPX0ZVTEwJCTB4MDggLyogdHJhbnNtaXQgRklGTyBmdWxsICovCisjZGVmaW5lIFNSX1JYX0ZJRk9fVkFMSURfREFUQQkweDAxIC8qIGRhdGEgaW4gcmVjZWl2ZSBGSUZPICovCisjZGVmaW5lIFNSX1JYX0ZJRk9fRlVMTAkJMHgwMiAvKiByZWNlaXZlIEZJRk8gZnVsbCAqLwogCi0jZGVmaW5lIElPX1NFUklBTF9SWF9GSUZPICAgSU9fU0VSSUFMKFhVTF9SWF9GSUZPX09GRlNFVCkKLSNkZWZpbmUgSU9fU0VSSUFMX1RYX0ZJRk8gICBJT19TRVJJQUwoWFVMX1RYX0ZJRk9fT0ZGU0VUKQotI2RlZmluZSBJT19TRVJJQUxfU1RBVFVTICAgIElPX1NFUklBTChYVUxfU1RBVFVTX1JFR19PRkZTRVQpCi0jZGVmaW5lIElPX1NFUklBTF9DT05UUk9MICAgSU9fU0VSSUFMKFhVTF9DT05UUk9MX1JFR19PRkZTRVQpCisjZGVmaW5lIFVBUlRMSVRFX1NUQVRVUwkJKENPTkZJR19TRVJJQUxfQkFTRSArIFNUQVRVU19SRUdfT0ZGU0VUKQorI2RlZmluZSBVQVJUTElURV9UWF9GSUZPCShDT05GSUdfU0VSSUFMX0JBU0UgKyBUWF9GSUZPX09GRlNFVCkKKyNkZWZpbmUgVUFSVExJVEVfUlhfRklGTwkoQ09ORklHX1NFUklBTF9CQVNFICsgUlhfRklGT19PRkZTRVQpCiAKIGludCBzZXJpYWxfaW5pdCh2b2lkKQogewpAQCAtNTAsOSArNTQsMTAgQEAKIAogdm9pZCBzZXJpYWxfcHV0Yyhjb25zdCBjaGFyIGMpCiB7Ci0JaWYgKGMgPT0gJ1xuJykgc2VyaWFsX3B1dGMoJ1xyJyk7Ci0Jd2hpbGUgKElPX1NFUklBTF9TVEFUVVMgJiBYVUxfU1JfVFhfRklGT19GVUxMKTsKLQlJT19TRVJJQUxfVFhfRklGTyA9ICh1bnNpZ25lZCBjaGFyKSAoYyAmIDB4ZmYpOworCWlmIChjID09ICdcbicpCisJCXNlcmlhbF9wdXRjKCdccicpOworCXdoaWxlIChpbl9iZTMyKFVBUlRMSVRFX1NUQVRVUykgJiBTUl9UWF9GSUZPX0ZVTEwpOworCW91dF9iZTMyKFVBUlRMSVRFX1RYX0ZJRk8sICh1bnNpZ25lZCBjaGFyKSAoYyAmIDB4ZmYpKTsKIH0KIAogdm9pZCBzZXJpYWxfcHV0cyhjb25zdCBjaGFyICogcykKQEAgLTY0LDEzICs2OSwxMyBAQAogCiBpbnQgc2VyaWFsX2dldGModm9pZCkKIHsKLQl3aGlsZSAoIShJT19TRVJJQUxfU1RBVFVTICYgWFVMX1NSX1JYX0ZJRk9fVkFMSURfREFUQSkpOwotCXJldHVybiBJT19TRVJJQUxfUlhfRklGTyAmIDB4ZmY7CisJd2hpbGUgKCEoaW5fYmUzMihVQVJUTElURV9TVEFUVVMpICYgU1JfUlhfRklGT19WQUxJRF9EQVRBKSk7CisJcmV0dXJuIGluX2JlMzIoVUFSVExJVEVfUlhfRklGTykgJiAweGZmOwogfQogCiBpbnQgc2VyaWFsX3RzdGModm9pZCkKIHsKLQlyZXR1cm4gKElPX1NFUklBTF9TVEFUVVMgJiBYVUxfU1JfUlhfRklGT19WQUxJRF9EQVRBKTsKKwlyZXR1cm4gKGluX2JlMzIoVUFSVExJVEVfU1RBVFVTKSAmIFNSX1JYX0ZJRk9fVkFMSURfREFUQSk7CiB9CiAKICNlbmRpZgkvKiBDT05GSUdfTUlDUk9CTFpFICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2JkY29yZS5jIGIvZHJpdmVycy91c2IvdXNiZGNvcmUuYwppbmRleCBhNjIxY2U3Li44MDhkYTlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi91c2JkY29yZS5jCisrKyBiL2RyaXZlcnMvdXNiL3VzYmRjb3JlLmMKQEAgLTU0NiwyMSArNTQ2LDIzIEBACiAgKgogICogTk9URTogZW5kcG9pbnRfYWRkcmVzcyBNVVNUIGNvbnRhaW4gYSBkaXJlY3Rpb24gZmxhZy4KICAqLwotc3RydWN0IHVyYiAqdXNiZF9hbGxvY191cmIgKHN0cnVjdCB1c2JfZGV2aWNlX2luc3RhbmNlICpkZXZpY2UsIHN0cnVjdCB1c2JfZW5kcG9pbnRfaW5zdGFuY2UgKmVuZHBvaW50KQorc3RydWN0IHVyYiAqdXNiZF9hbGxvY191cmIgKHN0cnVjdCB1c2JfZGV2aWNlX2luc3RhbmNlICpkZXZpY2UsCisJCQkgICAgc3RydWN0IHVzYl9lbmRwb2ludF9pbnN0YW5jZSAqZW5kcG9pbnQpCiB7CiAJc3RydWN0IHVyYiAqdXJiOwogCi0JaWYoICEodXJiID0gKHN0cnVjdCB1cmIqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHVyYikpKSApIHsKLQkgIHVzYmVycigiIEYgQSBUIEEgTDogIG1hbGxvYygldSkgRkFJTEVEISEhISIsIHNpemVvZihzdHJ1Y3QgdXJiKSk7Ci0JICByZXR1cm4gTlVMTDsKKwlpZiAoISh1cmIgPSAoc3RydWN0IHVyYiAqKSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IHVyYikpKSkgeworCQl1c2JlcnIgKCIgRiBBIFQgQSBMOiAgbWFsbG9jKCV1KSBGQUlMRUQhISEhIiwKKwkJCXNpemVvZiAoc3RydWN0IHVyYikpOworCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAkvKiBGaWxsIGluIGtub3duIGZpZWxkcyAqLwotCW1lbXNldCh1cmIsIDAsIHNpemVvZihzdHJ1Y3QgdXJiKSk7CisJbWVtc2V0ICh1cmIsIDAsIHNpemVvZiAoc3RydWN0IHVyYikpOwogCXVyYi0+ZW5kcG9pbnQgPSBlbmRwb2ludDsKIAl1cmItPmRldmljZSA9IGRldmljZTsKLQl1cmItPmJ1ZmZlciA9ICh1OCopdXJiLT5idWZmZXJfZGF0YTsKLQl1cmItPmJ1ZmZlcl9sZW5ndGggPSBzaXplb2YodXJiLT5idWZmZXJfZGF0YSk7CisJdXJiLT5idWZmZXIgPSAodTggKikgdXJiLT5idWZmZXJfZGF0YTsKKwl1cmItPmJ1ZmZlcl9sZW5ndGggPSBzaXplb2YgKHVyYi0+YnVmZmVyX2RhdGEpOwogCiAJdXJiX2xpbmtfaW5pdCAoJnVyYi0+bGluayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vbWI4NjJ4eC5jIGIvZHJpdmVycy92aWRlby9tYjg2Mnh4LmMKaW5kZXggOTY4NGNmMy4uNzMzZDlhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYjg2Mnh4LmMKKysrIGIvZHJpdmVycy92aWRlby9tYjg2Mnh4LmMKQEAgLTE3Myw2ICsxNzMsOCBAQAogCURFX1dSX0ZJRk8gKDB4MDk0MTAwMDApOwogCURFX1dSX0ZJRk8gKDB4MDAwMDAwMDApOwogCURFX1dSX0ZJRk8gKHBHRC0+d2luU2l6ZVk8PDE2IHwgcEdELT53aW5TaXplWCk7CisJLyogc3luYyB3aXRoIFNXIGFjY2VzcyB0byBmcmFtZWJ1ZmZlciAqLworCWRlX3dhaXQgKCk7CiB9CiAKICNpZiBkZWZpbmVkKENPTkZJR19WSURFT19DT1JBTFApCmRpZmYgLS1naXQgYS9mcy9qZmZzMi9qZmZzMl8xcGFzcy5jIGIvZnMvamZmczIvamZmczJfMXBhc3MuYwppbmRleCBkMTQyM2MxLi41YzFkMjY1IDEwMDY0NAotLS0gYS9mcy9qZmZzMi9qZmZzMl8xcGFzcy5jCisrKyBiL2ZzL2pmZnMyL2pmZnMyXzFwYXNzLmMKQEAgLTEyMTMsMTIgKzEyMTMsMTIgQEAKIAkJCX0gZWxzZSBpZiAobm9kZS0+bm9kZXR5cGUgPT0gSkZGUzJfTk9ERVRZUEVfQ0xFQU5NQVJLRVIpIHsKIAkJCQlpZiAobm9kZS0+dG90bGVuICE9IHNpemVvZihzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlKSkKIAkJCQkJcHJpbnRmKCJPT1BTIENsZWFubWFya2VyIGhhcyBiYWQgc2l6ZSAiCi0JCQkJCQkiJWQgIT0gJWRcbiIsIG5vZGUtPnRvdGxlbiwKKwkJCQkJCSIlZCAhPSAldVxuIiwgbm9kZS0+dG90bGVuLAogCQkJCQkJc2l6ZW9mKHN0cnVjdCBqZmZzMl91bmtub3duX25vZGUpKTsKIAkJCX0gZWxzZSBpZiAobm9kZS0+bm9kZXR5cGUgPT0gSkZGUzJfTk9ERVRZUEVfUEFERElORykgewogCQkJCWlmIChub2RlLT50b3RsZW4gPCBzaXplb2Yoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSkpCiAJCQkJCXByaW50ZigiT09QUyBQYWRkaW5nIGhhcyBiYWQgc2l6ZSAiCi0JCQkJCQkiJWQgPCAlZFxuIiwgbm9kZS0+dG90bGVuLAorCQkJCQkJIiVkIDwgJXVcbiIsIG5vZGUtPnRvdGxlbiwKIAkJCQkJCXNpemVvZihzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlKSk7CiAJCQl9IGVsc2UgewogCQkJCXByaW50ZigiVW5rbm93biBub2RlIHR5cGU6ICV4IGxlbiAlZCAiCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tNjhrL3RpbWVyLmggYi9pbmNsdWRlL2FzbS1tNjhrL3RpbWVyLmgKaW5kZXggMDMwNzIwYy4uMWE1ZGUwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbTY4ay90aW1lci5oCisrKyBiL2luY2x1ZGUvYXNtLW02OGsvdGltZXIuaApAQCAtMzMsNyArMzMsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBETUEgVGltZXIgbW9kdWxlIHJlZ2lzdGVycyAqLwogdHlwZWRlZiBzdHJ1Y3QgZHRpbWVyX2N0cmwgewotI2lmIGRlZmluZWQoQ09ORklHX001MjQ5KSB8fCBkZWZpbmVkKENPTkZJR19NNTI1MykKKyNpZiBkZWZpbmVkKENPTkZJR19NNTI0OSkgfHwgZGVmaW5lZChDT05GSUdfTTUyNTMpIHx8IGRlZmluZWQoQ09ORklHX001MjcyKQogCXUxNiB0bXI7CQkvKiAweDAwIE1vZGUgcmVnaXN0ZXIgKi8KIAl1MTYgcmVzMTsJCS8qIDB4MDIgKi8KIAl1MTYgdHJyOwkJLyogMHgwNCBSZWZlcmVuY2UgcmVnaXN0ZXIgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplL3hiYXNpY190eXBlcy5oIGIvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUveGJhc2ljX3R5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MDEyZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUveGJhc2ljX3R5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKgotKiAgICAgQXV0aG9yOiBYaWxpbngsIEluYy4KLSoKLSoKLSogICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0qICAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSogICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKLSogICAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0qCi0qCi0qICAgICBYSUxJTlggSVMgUFJPVklESU5HIFRISVMgREVTSUdOLCBDT0RFLCBPUiBJTkZPUk1BVElPTiAiQVMgSVMiIEFTIEEKLSogICAgIENPVVJURVNZIFRPIFlPVS4gQlkgUFJPVklESU5HIFRISVMgREVTSUdOLCBDT0RFLCBPUiBJTkZPUk1BVElPTiBBUwotKiAgICAgT05FIFBPU1NJQkxFIElNUExFTUVOVEFUSU9OIE9GIFRISVMgRkVBVFVSRSwgQVBQTElDQVRJT04gT1IgU1RBTkRBUkQsCi0qICAgICBYSUxJTlggSVMgTUFLSU5HIE5PIFJFUFJFU0VOVEFUSU9OIFRIQVQgVEhJUyBJTVBMRU1FTlRBVElPTiBJUyBGUkVFCi0qICAgICBGUk9NIEFOWSBDTEFJTVMgT0YgSU5GUklOR0VNRU5ULCBBTkQgWU9VIEFSRSBSRVNQT05TSUJMRSBGT1IgT0JUQUlOSU5HCi0qICAgICBBTlkgVEhJUkQgUEFSVFkgUklHSFRTIFlPVSBNQVkgUkVRVUlSRSBGT1IgWU9VUiBJTVBMRU1FTlRBVElPTi4KLSogICAgIFhJTElOWCBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTwotKiAgICAgVEhFIEFERVFVQUNZIE9GIFRIRSBJTVBMRU1FTlRBVElPTiwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBBTlkKLSogICAgIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIFRIQVQgVEhJUyBJTVBMRU1FTlRBVElPTiBJUyBGUkVFIEZST00KLSogICAgIENMQUlNUyBPRiBJTkZSSU5HRU1FTlQsIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5ECi0qICAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KLSoKLSoKLSogICAgIFhpbGlueCBoYXJkd2FyZSBwcm9kdWN0cyBhcmUgbm90IGludGVuZGVkIGZvciB1c2UgaW4gbGlmZSBzdXBwb3J0Ci0qICAgICBhcHBsaWFuY2VzLCBkZXZpY2VzLCBvciBzeXN0ZW1zLiBVc2UgaW4gc3VjaCBhcHBsaWNhdGlvbnMgaXMKLSogICAgIGV4cHJlc3NseSBwcm9oaWJpdGVkLgotKgotKgotKiAgICAgKGMpIENvcHlyaWdodCAyMDAyLTIwMDMgWGlsaW54IEluYy4KLSogICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qCi0qICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKiAgICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSogICAgIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0qCi0qIEBmaWxlIHhiYXNpY190eXBlcy5oCi0qCi0qIFRoaXMgZmlsZSBjb250YWlucyBiYXNpYyB0eXBlcyBmb3IgWGlsaW54IHNvZnR3YXJlIElQLiAgVGhlc2UgdHlwZXMgZG8gbm90Ci0qIGZvbGxvdyB0aGUgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gd2l0aCByZXNwZWN0IHRvIHVzaW5nIHRoZSBjb21wb25lbnQKLSogbmFtZSBpbiBmcm9udCBvZiBlYWNoIG5hbWUgYmVjYXVzZSB0aGV5IGFyZSBjb25zaWRlcmVkIHRvIGJlIHByaW1pdGl2ZXMuCi0qCi0qIEBub3RlCi0qCi0qIFRoaXMgZmlsZSBjb250YWlucyBpdGVtcyB3aGljaCBhcmUgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KLSoKLSogPHByZT4KLSogTU9ESUZJQ0FUSU9OIEhJU1RPUlk6Ci0qCi0qIFZlcgkgV2hvCURhdGUJQ2hhbmdlcwotKiAtLS0tLSAtLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0qIDEuMDBhIHJtbSAgMTIvMTQvMDEgRmlyc3QgcmVsZWFzZQotKglybW0gIDA1LzA5LzAzIEFkZGVkICJ4YXNzZXJ0IGFsd2F5cyIgbWFjcm9zIHRvIHJpZCBvdXJzZWx2ZXMgb2YgZGlhYgotKgkJICAgICAgY29tcGlsZXIgd2FybmluZ3MKLSogPC9wcmU+Ci0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZm5kZWYgWEJBU0lDX1RZUEVTX0gJCS8qIHByZXZlbnQgY2lyY3VsYXIgaW5jbHVzaW9ucyAqLwotI2RlZmluZSBYQkFTSUNfVFlQRVNfSAkJLyogYnkgdXNpbmcgcHJvdGVjdGlvbiBtYWNyb3MgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEluY2x1ZGUgRmlsZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKiogQ29uc3RhbnQgRGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZm5kZWYgVFJVRQotI2RlZmluZSBUUlVFIDEKLSNlbmRpZgotI2lmbmRlZiBGQUxTRQotI2RlZmluZSBGQUxTRSAwCi0jZW5kaWYKLQotI2lmbmRlZiBOVUxMCi0jZGVmaW5lIE5VTEwgMAotI2VuZGlmCi0vKiogTnVsbCAqLwotCi0jZGVmaW5lIFhDT01QT05FTlRfSVNfUkVBRFkJMHgxMTExMTExMQkvKiBjb21wb25lbnQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgKi8KLSNkZWZpbmUgWENPTVBPTkVOVF9JU19TVEFSVEVECTB4MjIyMjIyMjIJLyogY29tcG9uZW50IGhhcyBiZWVuIHN0YXJ0ZWQgKi8KLQotLyogdGhlIGZvbGxvd2luZyBjb25zdGFudHMgYW5kIGRlY2xhcmF0aW9ucyBhcmUgZm9yIHVuaXQgdGVzdCBwdXJwb3NlcyBhbmQgYXJlCi0gKiBkZXNpZ25lZCB0byBiZSB1c2VkIGluIHRlc3QgYXBwbGljYXRpb25zLgotICovCi0jZGVmaW5lIFhURVNUX1BBU1NFRAkwCi0jZGVmaW5lIFhURVNUX0ZBSUxFRAkxCi0KLSNkZWZpbmUgWEFTU0VSVF9OT05FCSAwCi0jZGVmaW5lIFhBU1NFUlRfT0NDVVJSRUQgMQotCi1leHRlcm4gdW5zaWduZWQgaW50IFhBc3NlcnRTdGF0dXM7Ci1leHRlcm4gdm9pZCBYQXNzZXJ0KGNoYXIgKiwgaW50KTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVHlwZSBEZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiogQG5hbWUgUHJpbWl0aXZlIHR5cGVzCi0gKiBUaGVzZSBwcmltaXRpdmUgdHlwZXMgYXJlIGNyZWF0ZWQgZm9yIHRyYW5zcG9ydGFiaWxpdHkuCi0gKiBUaGV5IGFyZSBkZXBlbmRlbnQgdXBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KLSAqIEB7Ci0gKi8KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotCi10eXBlZGVmIHN0cnVjdCB7Ci0JdTMyIFVwcGVyOwotCXUzMiBMb3dlcjsKLX0gWHVpbnQ2NDsKLQotLyogWGlsaW54J3MgdW5zaWduZWQgaW50ZWdlciB0eXBlcyAqLwotdHlwZWRlZiB1MzIgWHVpbnQzMjsKLXR5cGVkZWYgdTE2IFh1aW50MTY7Ci10eXBlZGVmIHU4IFh1aW50ODsKLQotLyogYW5kIHNpZ25lZCBpbnRlZ2VyIHR5cGVzICovCi10eXBlZGVmIHMzMiBYaW50MzI7Ci10eXBlZGVmIHMxNiBYaW50MTY7Ci10eXBlZGVmIHM4IFhpbnQ4OwotCi0jaWZuZGVmIE5VTEwKLSNkZWZpbmUgTlVMTCAwCi0jZW5kaWYKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhib29sZWFuOwotI2RlZmluZSBYTlVMTAlOVUxMCi0KLSNkZWZpbmUgWFRSVUUJMQotI2RlZmluZSBYRkFMU0UJMAotCi0vKkB9Ki8KLQotLyoqCi0gKiBUaGlzIGRhdGEgdHlwZSBkZWZpbmVzIGFuIGludGVycnVwdCBoYW5kbGVyIGZvciBhIGRldmljZS4KLSAqIFRoZSBhcmd1bWVudCBwb2ludHMgdG8gdGhlIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQKLSAqLwotdHlwZWRlZiB2b2lkICgqWEludGVycnVwdEhhbmRsZXIpICh2b2lkICpJbnN0YW5jZVB0cik7Ci0KLS8qKgotICogVGhpcyBkYXRhIHR5cGUgZGVmaW5lcyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBhbgotICogYXNzZXJ0IG9jY3Vycy4gVGhlIGNhbGxiYWNrIGlzIGludm9rZWQgb25seSB3aGVuIGFzc2VydHMgYXJlIGVuYWJsZWQKLSAqLwotdHlwZWRlZiB2b2lkICgqWEFzc2VydENhbGxiYWNrKSAoY2hhciAqRmlsZW5hbWVQdHIsIGludCBMaW5lTnVtYmVyKTsKLQotLyoqKioqKioqKioqKioqKioqIE1hY3JvcyAoSW5saW5lIEZ1bmN0aW9ucykgRGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSogUmV0dXJuIHRoZSBtb3N0IHNpZ25pZmljYW50IGhhbGYgb2YgdGhlIDY0IGJpdCBkYXRhIHR5cGUuCi0qCi0qIEBwYXJhbSB4IGlzIHRoZSA2NCBiaXQgd29yZC4KLSoKLSogQHJldHVybgotKgotKiBUaGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgNjQgYml0IHdvcmQuCi0qCi0qIEBub3RlCi0qCi0qIE5vbmUuCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFhVSU5UNjRfTVNXKHgpICgoeCkuVXBwZXIpCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotKiBSZXR1cm4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGhhbGYgb2YgdGhlIDY0IGJpdCBkYXRhIHR5cGUuCi0qCi0qIEBwYXJhbSB4IGlzIHRoZSA2NCBiaXQgd29yZC4KLSoKLSogQHJldHVybgotKgotKiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgNjQgYml0IHdvcmQuCi0qCi0qIEBub3RlCi0qCi0qIE5vbmUuCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFhVSU5UNjRfTFNXKHgpICgoeCkuTG93ZXIpCi0KLSNpZm5kZWYgTkRFQlVHCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotKiBUaGlzIGFzc2VydCBtYWNybyBpcyB0byBiZSB1c2VkIGZvciBmdW5jdGlvbnMgdGhhdCBkbyBub3QgcmV0dXJuIGFueXRoaW5nCi0qICh2b2lkKS4gVGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBYV2FpdEluQXNzZXJ0IGJvb2xlYW4gY2FuIGJlIHVzZWQgdG8KLSogYWNjb21vZGF0ZSB0ZXN0cyBzbyB0aGF0IGFzc2VydHMgd2hpY2ggZmFpbCBhbGxvdyBleGVjdXRpb24gdG8gY29udGludWUuCi0qCi0qIEBwYXJhbSBleHByZXNzaW9uIGlzIHRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlLiBJZiBpdCBldmFsdWF0ZXMgdG8gZmFsc2UsCi0qCSB0aGUgYXNzZXJ0IG9jY3Vycy4KLSoKLSogQHJldHVybgotKgotKiBSZXR1cm5zIHZvaWQgdW5sZXNzIHRoZSBYV2FpdEluQXNzZXJ0IHZhcmlhYmxlIGlzIHRydWUsIGluIHdoaWNoIGNhc2UKLSogbm8gcmV0dXJuIGlzIG1hZGUgYW5kIGFuIGluZmluaXRlIGxvb3AgaXMgZW50ZXJlZC4KLSoKLSogQG5vdGUKLSoKLSogTm9uZS4KLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNkZWZpbmUgWEFTU0VSVF9WT0lEKGV4cHJlc3Npb24pCQkJXAotewkJCQkJCQlcCi0JaWYgKGV4cHJlc3Npb24pIHsJCQkJXAotCQlYQXNzZXJ0U3RhdHVzID0gWEFTU0VSVF9OT05FOwkJXAotCX0gZWxzZSB7CQkJCQlcCi0JCVhBc3NlcnQoX19GSUxFX18sIF9fTElORV9fKTsJCVwKLQkJWEFzc2VydFN0YXR1cyA9IFhBU1NFUlRfT0NDVVJSRUQ7CVwKLQkJcmV0dXJuOwkJCQkJXAotCX0JCQkJCQlcCi19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotKiBUaGlzIGFzc2VydCBtYWNybyBpcyB0byBiZSB1c2VkIGZvciBmdW5jdGlvbnMgdGhhdCBkbyByZXR1cm4gYSB2YWx1ZS4gVGhpcyBpbgotKiBjb25qdW5jdGlvbiB3aXRoIHRoZSBYV2FpdEluQXNzZXJ0IGJvb2xlYW4gY2FuIGJlIHVzZWQgdG8gYWNjb21vZGF0ZSB0ZXN0cyBzbwotKiB0aGF0IGFzc2VydHMgd2hpY2ggZmFpbCBhbGxvdyBleGVjdXRpb24gdG8gY29udGludWUuCi0qCi0qIEBwYXJhbSBleHByZXNzaW9uIGlzIHRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlLiBJZiBpdCBldmFsdWF0ZXMgdG8gZmFsc2UsCi0qCSB0aGUgYXNzZXJ0IG9jY3Vycy4KLSoKLSogQHJldHVybgotKgotKiBSZXR1cm5zIDAgdW5sZXNzIHRoZSBYV2FpdEluQXNzZXJ0IHZhcmlhYmxlIGlzIHRydWUsIGluIHdoaWNoIGNhc2UKLSogbm8gcmV0dXJuIGlzIG1hZGUgYW5kIGFuIGluZmluaXRlIGxvb3AgaXMgZW50ZXJlZC4KLSoKLSogQG5vdGUKLSoKLSogTm9uZS4KLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNkZWZpbmUgWEFTU0VSVF9OT05WT0lEKGV4cHJlc3Npb24pCQkJXAotewkJCQkJCQlcCi0JaWYgKGV4cHJlc3Npb24pIHsJCQkJXAotCQlYQXNzZXJ0U3RhdHVzID0gWEFTU0VSVF9OT05FOwkJXAotCX0gZWxzZSB7CQkJCQlcCi0JCVhBc3NlcnQoX19GSUxFX18sIF9fTElORV9fKTsJCVwKLQkJWEFzc2VydFN0YXR1cyA9IFhBU1NFUlRfT0NDVVJSRUQ7CVwKLQkJcmV0dXJuIDA7CQkJCVwKLQl9CQkJCQkJXAotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSogQWx3YXlzIGFzc2VydC4gVGhpcyBhc3NlcnQgbWFjcm8gaXMgdG8gYmUgdXNlZCBmb3IgZnVuY3Rpb25zIHRoYXQgZG8gbm90Ci0qIHJldHVybiBhbnl0aGluZyAodm9pZCkuIFVzZSBmb3IgaW5zdGFuY2VzIHdoZXJlIGFuIGFzc2VydCBzaG91bGQgYWx3YXlzCi0qIG9jY3VyLgotKgotKiBAcmV0dXJuCi0qCi0qIFJldHVybnMgdm9pZCB1bmxlc3MgdGhlIFhXYWl0SW5Bc3NlcnQgdmFyaWFibGUgaXMgdHJ1ZSwgaW4gd2hpY2ggY2FzZQotKiBubyByZXR1cm4gaXMgbWFkZSBhbmQgYW4gaW5maW5pdGUgbG9vcCBpcyBlbnRlcmVkLgotKgotKiBAbm90ZQotKgotKiBOb25lLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotI2RlZmluZSBYQVNTRVJUX1ZPSURfQUxXQVlTKCkJCQkJXAotewkJCQkJCQlcCi0JWEFzc2VydChfX0ZJTEVfXywgX19MSU5FX18pOwkJCVwKLQlYQXNzZXJ0U3RhdHVzID0gWEFTU0VSVF9PQ0NVUlJFRDsJCVwKLQlyZXR1cm47CQkJCQkJXAotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSogQWx3YXlzIGFzc2VydC4gVGhpcyBhc3NlcnQgbWFjcm8gaXMgdG8gYmUgdXNlZCBmb3IgZnVuY3Rpb25zIHRoYXQgZG8gcmV0dXJuCi0qIGEgdmFsdWUuIFVzZSBmb3IgaW5zdGFuY2VzIHdoZXJlIGFuIGFzc2VydCBzaG91bGQgYWx3YXlzIG9jY3VyLgotKgotKiBAcmV0dXJuCi0qCi0qIFJldHVybnMgdm9pZCB1bmxlc3MgdGhlIFhXYWl0SW5Bc3NlcnQgdmFyaWFibGUgaXMgdHJ1ZSwgaW4gd2hpY2ggY2FzZQotKiBubyByZXR1cm4gaXMgbWFkZSBhbmQgYW4gaW5maW5pdGUgbG9vcCBpcyBlbnRlcmVkLgotKgotKiBAbm90ZQotKgotKiBOb25lLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotI2RlZmluZSBYQVNTRVJUX05PTlZPSURfQUxXQVlTKCkJCQlcCi17CQkJCQkJCVwKLQlYQXNzZXJ0KF9fRklMRV9fLCBfX0xJTkVfXyk7CQkJXAotCVhBc3NlcnRTdGF0dXMgPSBYQVNTRVJUX09DQ1VSUkVEOwkJXAotCXJldHVybiAwOwkJCQkJXAotfQotCi0jZWxzZQotCi0jZGVmaW5lIFhBU1NFUlRfVk9JRChleHByZXNzaW9uKQotI2RlZmluZSBYQVNTRVJUX1ZPSURfQUxXQVlTKCkKLSNkZWZpbmUgWEFTU0VSVF9OT05WT0lEKGV4cHJlc3Npb24pCi0jZGVmaW5lIFhBU1NFUlRfTk9OVk9JRF9BTFdBWVMoKQotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKiBGdW5jdGlvbiBQcm90b3R5cGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdm9pZCBYQXNzZXJ0U2V0Q2FsbGJhY2soWEFzc2VydENhbGxiYWNrIFJvdXRpbmUpOwotCi0jZW5kaWYJLyogZW5kIG9mIHByb3RlY3Rpb24gbWFjcm8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplL3hpby5oIGIvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUveGlvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZWQzMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUveGlvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogeGlvLmgKLSAqCi0gKiBEZWZpbmVzIFhJbyBmdW5jdGlvbnMgZm9yIFhpbGlueCBPQ1AgaW4gdGVybXMgb2YgTGludXggcHJpbWl0aXZlcwotICoKLSAqIEF1dGhvcjogTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgotICogICAgICAgICBzb3VyY2VAbXZpc3RhLmNvbQotICoKLSAqIDIwMDIgKGMpIE1vbnRhVmlzdGEsIFNvZnR3YXJlLCBJbmMuICBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zCi0gKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLiAgVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkCi0gKiAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqLwotCi0jaWZuZGVmIFhJT19ICi0jZGVmaW5lIFhJT19ICi0KLSNpbmNsdWRlICJ4YmFzaWNfdHlwZXMuaCIKLSNpbmNsdWRlIDxhc20vaW8uaD4KLQotdHlwZWRlZiB1MzIgWElvX0FkZHJlc3M7Ci0KLWV4dGVybiBpbmxpbmUgdTgKLVhJb19JbjgoWElvX0FkZHJlc3MgSW5BZGRyZXNzKQotewotCXJldHVybiAodTgpIGluXzgoKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgSW5BZGRyZXNzKTsKLX0KLWV4dGVybiBpbmxpbmUgdTE2Ci1YSW9fSW4xNihYSW9fQWRkcmVzcyBJbkFkZHJlc3MpCi17Ci0JcmV0dXJuICh1MTYpIGluX2JlMTYoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopIEluQWRkcmVzcyk7Ci19Ci1leHRlcm4gaW5saW5lIHUzMgotWElvX0luMzIoWElvX0FkZHJlc3MgSW5BZGRyZXNzKQotewotCXJldHVybiAodTMyKSBpbl9iZTMyKCh2b2xhdGlsZSB1bnNpZ25lZCAqKSBJbkFkZHJlc3MpOwotfQotZXh0ZXJuIGlubGluZSB2b2lkCi1YSW9fT3V0OChYSW9fQWRkcmVzcyBPdXRBZGRyZXNzLCB1OCBWYWx1ZSkKLXsKLQlvdXRfOCgodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSBPdXRBZGRyZXNzLCBWYWx1ZSk7Ci19Ci1leHRlcm4gaW5saW5lIHZvaWQKLVhJb19PdXQxNihYSW9fQWRkcmVzcyBPdXRBZGRyZXNzLCB1MTYgVmFsdWUpCi17Ci0Jb3V0X2JlMTYoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopIE91dEFkZHJlc3MsIFZhbHVlKTsKLX0KLWV4dGVybiBpbmxpbmUgdm9pZAotWElvX091dDMyKFhJb19BZGRyZXNzIE91dEFkZHJlc3MsIHUzMiBWYWx1ZSkKLXsKLQlvdXRfYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKikgT3V0QWRkcmVzcywgVmFsdWUpOwotfQotCi0jZGVmaW5lIFhJb19Ub0xpdHRsZUVuZGlhbjE2KHMsZCkgKCoodTE2KikoZCkgPSBjcHVfdG9fbGUxNigodTE2KShzKSkpCi0jZGVmaW5lIFhJb19Ub0xpdHRsZUVuZGlhbjMyKHMsZCkgKCoodTMyKikoZCkgPSBjcHVfdG9fbGUzMigodTMyKShzKSkpCi0jZGVmaW5lIFhJb19Ub0JpZ0VuZGlhbjE2KHMsZCkgKCoodTE2KikoZCkgPSBjcHVfdG9fYmUxNigodTE2KShzKSkpCi0jZGVmaW5lIFhJb19Ub0JpZ0VuZGlhbjMyKHMsZCkgKCoodTMyKikoZCkgPSBjcHVfdG9fYmUzMigodTMyKShzKSkpCi0KLSNkZWZpbmUgWElvX0Zyb21MaXR0bGVFbmRpYW4xNihzLGQpICgqKHUxNiopKGQpID0gbGUxNl90b19jcHUoKHUxNikocykpKQotI2RlZmluZSBYSW9fRnJvbUxpdHRsZUVuZGlhbjMyKHMsZCkgKCoodTMyKikoZCkgPSBsZTMyX3RvX2NwdSgodTMyKShzKSkpCi0jZGVmaW5lIFhJb19Gcm9tQmlnRW5kaWFuMTYocyxkKSAoKih1MTYqKShkKSA9IGJlMTZfdG9fY3B1KCh1MTYpKHMpKSkKLSNkZWZpbmUgWElvX0Zyb21CaWdFbmRpYW4zMihzLGQpICgqKHUzMiopKGQpID0gYmUzMl90b19jcHUoKHUzMikocykpKQotCi0jZW5kaWYJCQkJLyogWElPX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplL3h1YXJ0bGl0ZV9sLmggYi9pbmNsdWRlL2FzbS1taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS94dWFydGxpdGVfbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzgxYTBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvYXNtLW1pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplL3h1YXJ0bGl0ZV9sLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qCVhJTElOWCBJUyBQUk9WSURJTkcgVEhJUyBERVNJR04sIENPREUsIE9SIElORk9STUFUSU9OICJBUyBJUyIKLSoJQVMgQSBDT1VSVEVTWSBUTyBZT1UsIFNPTEVMWSBGT1IgVVNFIElOIERFVkVMT1BJTkcgUFJPR1JBTVMgQU5ECi0qCVNPTFVUSU9OUyBGT1IgWElMSU5YIERFVklDRVMuICBCWSBQUk9WSURJTkcgVEhJUyBERVNJR04sIENPREUsCi0qCU9SIElORk9STUFUSU9OIEFTIE9ORSBQT1NTSUJMRSBJTVBMRU1FTlRBVElPTiBPRiBUSElTIEZFQVRVUkUsCi0qCUFQUExJQ0FUSU9OIE9SIFNUQU5EQVJELCBYSUxJTlggSVMgTUFLSU5HIE5PIFJFUFJFU0VOVEFUSU9OCi0qCVRIQVQgVEhJUyBJTVBMRU1FTlRBVElPTiBJUyBGUkVFIEZST00gQU5ZIENMQUlNUyBPRiBJTkZSSU5HRU1FTlQsCi0qCUFORCBZT1UgQVJFIFJFU1BPTlNJQkxFIEZPUiBPQlRBSU5JTkcgQU5ZIFJJR0hUUyBZT1UgTUFZIFJFUVVJUkUKLSoJRk9SIFlPVVIgSU1QTEVNRU5UQVRJT04uICBYSUxJTlggRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkKLSoJV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFIEFERVFVQUNZIE9GIFRIRQotKglJTVBMRU1FTlRBVElPTiwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBBTlkgV0FSUkFOVElFUyBPUgotKglSRVBSRVNFTlRBVElPTlMgVEhBVCBUSElTIElNUExFTUVOVEFUSU9OIElTIEZSRUUgRlJPTSBDTEFJTVMgT0YKLSoJSU5GUklOR0VNRU5ULCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCi0qCUZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KLSoKLSoJKGMpIENvcHlyaWdodCAyMDAyIFhpbGlueCBJbmMuCi0qCUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0qCi0qIEBmaWxlIHh1YXJ0bGl0ZV9sLmgKLSoKLSogVGhpcyBoZWFkZXIgZmlsZSBjb250YWlucyBpZGVudGlmaWVycyBhbmQgbG93LWxldmVsIGRyaXZlciBmdW5jdGlvbnMgKG9yCi0qIG1hY3JvcykgdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIGRldmljZS4gIEhpZ2gtbGV2ZWwgZHJpdmVyIGZ1bmN0aW9ucwotKiBhcmUgZGVmaW5lZCBpbiB4dWFydGxpdGUuaC4KLSoKLSogPHByZT4KLSogTU9ESUZJQ0FUSU9OIEhJU1RPUlk6Ci0qCi0qIFZlcglXaG8gIERhdGUgICAgIENoYW5nZXMKLSogLS0tLS0gLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKiAxLjAwYiBycG0gIDA0LzI1LzAyIEZpcnN0IHJlbGVhc2UKLSogPC9wcmU+Ci0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmbmRlZiBYVUFSVExJVEVfTF9IIC8qIHByZXZlbnQgY2lyY3VsYXIgaW5jbHVzaW9ucyAqLwotI2RlZmluZSBYVUFSVExJVEVfTF9IIC8qIGJ5IHVzaW5nIHByb3RlY3Rpb24gbWFjcm9zICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBJbmNsdWRlIEZpbGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaW5jbHVkZSAieGJhc2ljX3R5cGVzLmgiCi0jaW5jbHVkZSAieGlvLmgiCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKiBDb25zdGFudCBEZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBVQVJUIExpdGUgcmVnaXN0ZXIgb2Zmc2V0cyAqLwotCi0jZGVmaW5lIFhVTF9SWF9GSUZPX09GRlNFVAkJMCAgIC8qIHJlY2VpdmUgRklGTywgcmVhZCBvbmx5ICovCi0jZGVmaW5lIFhVTF9UWF9GSUZPX09GRlNFVAkJNCAgIC8qIHRyYW5zbWl0IEZJRk8sIHdyaXRlIG9ubHkgKi8KLSNkZWZpbmUgWFVMX1NUQVRVU19SRUdfT0ZGU0VUCQk4ICAgLyogc3RhdHVzIHJlZ2lzdGVyLCByZWFkIG9ubHkgKi8KLSNkZWZpbmUgWFVMX0NPTlRST0xfUkVHX09GRlNFVAkJMTIgIC8qIGNvbnRyb2wgcmVnaXN0ZXIsIHdyaXRlIG9ubHkgKi8KLQotLyogY29udHJvbCByZWdpc3RlciBiaXQgcG9zaXRpb25zICovCi0KLSNkZWZpbmUgWFVMX0NSX0VOQUJMRV9JTlRSCQkweDEwCS8qIGVuYWJsZSBpbnRlcnJ1cHQgKi8KLSNkZWZpbmUgWFVMX0NSX0ZJRk9fUlhfUkVTRVQJCTB4MDIJLyogcmVzZXQgcmVjZWl2ZSBGSUZPICovCi0jZGVmaW5lIFhVTF9DUl9GSUZPX1RYX1JFU0VUCQkweDAxCS8qIHJlc2V0IHRyYW5zbWl0IEZJRk8gKi8KLQotLyogc3RhdHVzIHJlZ2lzdGVyIGJpdCBwb3NpdGlvbnMgKi8KLQotI2RlZmluZSBYVUxfU1JfUEFSSVRZX0VSUk9SCQkweDgwCi0jZGVmaW5lIFhVTF9TUl9GUkFNSU5HX0VSUk9SCQkweDQwCi0jZGVmaW5lIFhVTF9TUl9PVkVSUlVOX0VSUk9SCQkweDIwCi0jZGVmaW5lIFhVTF9TUl9JTlRSX0VOQUJMRUQJCTB4MTAJLyogaW50ZXJydXB0IGVuYWJsZWQgKi8KLSNkZWZpbmUgWFVMX1NSX1RYX0ZJRk9fRlVMTAkJMHgwOAkvKiB0cmFuc21pdCBGSUZPIGZ1bGwgKi8KLSNkZWZpbmUgWFVMX1NSX1RYX0ZJRk9fRU1QVFkJCTB4MDQJLyogdHJhbnNtaXQgRklGTyBlbXB0eSAqLwotI2RlZmluZSBYVUxfU1JfUlhfRklGT19GVUxMCQkweDAyCS8qIHJlY2VpdmUgRklGTyBmdWxsICovCi0jZGVmaW5lIFhVTF9TUl9SWF9GSUZPX1ZBTElEX0RBVEEJMHgwMQkvKiBkYXRhIGluIHJlY2VpdmUgRklGTyAqLwotCi0vKiB0aGUgZm9sbG93aW5nIGNvbnN0YW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgRklGT3MsIHRoZSBzaXplIG9mIHRoZQotICogRklGT3MgaW5jbHVkZXMgdGhlIHRyYW5zbWl0dGVyIGFuZCByZWNlaXZlciBzdWNoIHRoYXQgaXQgaXMgdGhlIHRvdGFsIG51bWJlcgotICogb2YgYnl0ZXMgdGhhdCB0aGUgVUFSVCBjYW4gYnVmZmVyCi0gKi8KLSNkZWZpbmUgWFVMX0ZJRk9fU0laRQkJICAgIDE2Ci0KLS8qIFN0b3AgYml0cyBhcmUgZml4ZWQgYXQgMS4gQmF1ZCwgcGFyaXR5LCBhbmQgZGF0YSBiaXRzIGFyZSBmaXhlZCBvbiBhCi0gKiBwZXIgaW5zdGFuY2UgYmFzaXMKLSAqLwotI2RlZmluZSBYVUxfU1RPUF9CSVRTCQkgICAgMQotCi0vKiBQYXJpdHkgZGVmaW5pdGlvbnMKLSAqLwotI2RlZmluZSBYVUxfUEFSSVRZX05PTkUJCSAgICAwCi0jZGVmaW5lIFhVTF9QQVJJVFlfT0RECQkgICAgMQotI2RlZmluZSBYVUxfUEFSSVRZX0VWRU4JCSAgICAyCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFR5cGUgRGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKiogTWFjcm9zIChJbmxpbmUgRnVuY3Rpb25zKSBEZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qIExvdy1sZXZlbCBkcml2ZXIgbWFjcm9zIGFuZCBmdW5jdGlvbnMuIFRoZSBsaXN0IGJlbG93IHByb3ZpZGVzIHNpZ25hdHVyZXMKLSogdG8gaGVscCB0aGUgdXNlciB1c2UgdGhlIG1hY3Jvcy4KLSoKLSogdm9pZCBYVWFydExpdGVfbVNldENvbnRyb2xSZWcodTMyIEJhc2VBZGRyZXNzLCB1MzIgTWFzaykKLSogdTMyIFhVYXJ0TGl0ZV9tR2V0Q29udHJvbFJlZyh1MzIgQmFzZUFkZHJlc3MpCi0qIHUzMiBYVWFydExpdGVfbUdldFN0YXR1c1JlZyh1MzIgQmFzZUFkZHJlc3MpCi0qCi0qIFhib29sZWFuIFhVYXJ0TGl0ZV9tSXNSZWNlaXZlRW1wdHkodTMyIEJhc2VBZGRyZXNzKQotKiBYYm9vbGVhbiBYVWFydExpdGVfbUlzVHJhbnNtaXRGdWxsKHUzMiBCYXNlQWRkcmVzcykKLSogWGJvb2xlYW4gWFVhcnRMaXRlX21Jc0ludHJFbmFibGVkKHUzMiBCYXNlQWRkcmVzcykKLSoKLSogdm9pZCBYVWFydExpdGVfbUVuYWJsZUludHIodTMyIEJhc2VBZGRyZXNzKQotKiB2b2lkIFhVYXJ0TGl0ZV9tRGlzYWJsZUludHIodTMyIEJhc2VBZGRyZXNzKQotKgotKiB2b2lkIFhVYXJ0TGl0ZV9TZW5kQnl0ZSh1MzIgQmFzZUFkZHJlc3MsIHU4IERhdGEpOwotKiB1OCBYVWFydExpdGVfUmVjdkJ5dGUodTMyIEJhc2VBZGRyZXNzKTsKLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotKgotKiBTZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyLiBVc2UgdGhlIFhVTF9DUl8qIGNvbnN0YW50cyBkZWZpbmVkCi0qIGFib3ZlIHRvIGNyZWF0ZSB0aGUgYml0LW1hc2sgdG8gYmUgd3JpdHRlbiB0byB0aGUgcmVnaXN0ZXIuCi0qCi0qIEBwYXJhbSAgICBCYXNlQWRkcmVzcyBpcyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBkZXZpY2UKLSogQHBhcmFtICAgIE1hc2sgaXMgdGhlIDMyLWJpdCB2YWx1ZSB0byB3cml0ZSB0byB0aGUgY29udHJvbCByZWdpc3RlcgotKgotKiBAcmV0dXJuICAgTm9uZS4KLSoKLSogQG5vdGUJICAgIE5vbmUuCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNkZWZpbmUgWFVhcnRMaXRlX21TZXRDb250cm9sUmVnKEJhc2VBZGRyZXNzLCBNYXNrKSBcCi0JCSAgICBYSW9fT3V0MzIoKEJhc2VBZGRyZXNzKSArIFhVTF9DT05UUk9MX1JFR19PRkZTRVQsIChNYXNrKSkKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotKgotKiBHZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyLiBVc2UgdGhlIFhVTF9DUl8qIGNvbnN0YW50cyBkZWZpbmVkCi0qIGFib3ZlIHRvIGludGVycHJldCB0aGUgYml0LW1hc2sgcmV0dXJuZWQuCi0qCi0qIEBwYXJhbSAgICBCYXNlQWRkcmVzcyBpcyB0aGUJYmFzZSBhZGRyZXNzIG9mIHRoZSBkZXZpY2UKLSoKLSogQHJldHVybiAgIEEgMzItYml0IHZhbHVlIHJlcHJlc2VudGluZyB0aGUgY29udGVudHMgb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXIuCi0qCi0qIEBub3RlCSAgICBOb25lLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFhVYXJ0TGl0ZV9tR2V0Q29udHJvbFJlZyhCYXNlQWRkcmVzcykgXAotCQkgICAgWElvX0luMzIoKEJhc2VBZGRyZXNzKSArIFhVTF9DT05UUk9MX1JFR19PRkZTRVQpCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSoKLSogR2V0IHRoZSBjb250ZW50cyBvZiB0aGUgc3RhdHVzIHJlZ2lzdGVyLiBVc2UgdGhlIFhVTF9TUl8qIGNvbnN0YW50cyBkZWZpbmVkCi0qIGFib3ZlIHRvIGludGVycHJldCB0aGUgYml0LW1hc2sgcmV0dXJuZWQuCi0qCi0qIEBwYXJhbSAgICBCYXNlQWRkcmVzcyBpcyB0aGUJYmFzZSBhZGRyZXNzIG9mIHRoZSBkZXZpY2UKLSoKLSogQHJldHVybiAgIEEgMzItYml0IHZhbHVlIHJlcHJlc2VudGluZyB0aGUgY29udGVudHMgb2YgdGhlIHN0YXR1cyByZWdpc3Rlci4KLSoKLSogQG5vdGUJICAgIE5vbmUuCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNkZWZpbmUgWFVhcnRMaXRlX21HZXRTdGF0dXNSZWcoQmFzZUFkZHJlc3MpIFwKLQkJICAgIFhJb19JbjMyKChCYXNlQWRkcmVzcykgKyBYVUxfU1RBVFVTX1JFR19PRkZTRVQpCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSoKLSogQ2hlY2sgdG8gc2VlIGlmIHRoZSByZWNlaXZlciBoYXMgZGF0YS4KLSoKLSogQHBhcmFtICAgIEJhc2VBZGRyZXNzIGlzIHRoZQliYXNlIGFkZHJlc3Mgb2YgdGhlIGRldmljZQotKgotKiBAcmV0dXJuICAgWFRSVUUgaWYgdGhlIHJlY2VpdmVyIGlzIGVtcHR5LCBYRkFMU0UgaWYgdGhlcmUgaXMgZGF0YSBwcmVzZW50LgotKgotKiBAbm90ZQkgICAgTm9uZS4KLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotI2RlZmluZSBYVWFydExpdGVfbUlzUmVjZWl2ZUVtcHR5KEJhc2VBZGRyZXNzKSBcCi0JICAoIShYVWFydExpdGVfbUdldFN0YXR1c1JlZygoQmFzZUFkZHJlc3MpKSAmIFhVTF9TUl9SWF9GSUZPX1ZBTElEX0RBVEEpKQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0qCi0qIENoZWNrIHRvIHNlZSBpZiB0aGUgdHJhbnNtaXR0ZXIgaXMgZnVsbC4KLSoKLSogQHBhcmFtICAgIEJhc2VBZGRyZXNzIGlzIHRoZQliYXNlIGFkZHJlc3Mgb2YgdGhlIGRldmljZQotKgotKiBAcmV0dXJuICAgWFRSVUUgaWYgdGhlIHRyYW5zbWl0dGVyIGlzIGZ1bGwsIFhGQUxTRSBvdGhlcndpc2UuCi0qCi0qIEBub3RlCSAgICBOb25lLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFhVYXJ0TGl0ZV9tSXNUcmFuc21pdEZ1bGwoQmFzZUFkZHJlc3MpIFwKLQkJKFhVYXJ0TGl0ZV9tR2V0U3RhdHVzUmVnKChCYXNlQWRkcmVzcykpICYgWFVMX1NSX1RYX0ZJRk9fRlVMTCkKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotKgotKiBDaGVjayB0byBzZWUgaWYgdGhlIGludGVycnVwdCBpcyBlbmFibGVkLgotKgotKiBAcGFyYW0gICAgQmFzZUFkZHJlc3MgaXMgdGhlCWJhc2UgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCi0qCi0qIEByZXR1cm4gICBYVFJVRSBpZiB0aGUgaW50ZXJydXB0IGlzIGVuYWJsZWQsIFhGQUxTRSBvdGhlcndpc2UuCi0qCi0qIEBub3RlCSAgICBOb25lLgotKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFhVYXJ0TGl0ZV9tSXNJbnRyRW5hYmxlZChCYXNlQWRkcmVzcykgXAotCQkoWFVhcnRMaXRlX21HZXRTdGF0dXNSZWcoKEJhc2VBZGRyZXNzKSkgJiBYVUxfU1JfSU5UUl9FTkFCTEVEKQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0qCi0qIEVuYWJsZSB0aGUgZGV2aWNlIGludGVycnVwdC4gUHJlc2VydmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyLgotKgotKiBAcGFyYW0gICAgQmFzZUFkZHJlc3MgaXMgdGhlCWJhc2UgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCi0qCi0qIEByZXR1cm4gICBOb25lLgotKgotKiBAbm90ZQkgICAgTm9uZS4KLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotI2RlZmluZSBYVWFydExpdGVfbUVuYWJsZUludHIoQmFzZUFkZHJlc3MpIFwKLQkgICAgICAgWFVhcnRMaXRlX21TZXRDb250cm9sUmVnKChCYXNlQWRkcmVzcyksIFwKLQkJICAgWFVhcnRMaXRlX21HZXRDb250cm9sUmVnKChCYXNlQWRkcmVzcykpIHwgWFVMX0NSX0VOQUJMRV9JTlRSKQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0qCi0qIERpc2FibGUgdGhlIGRldmljZSBpbnRlcnJ1cHQuIFByZXNlcnZlIHRoZSBjb250ZW50cyBvZiB0aGUgY29udHJvbCByZWdpc3Rlci4KLSoKLSogQHBhcmFtICAgIEJhc2VBZGRyZXNzIGlzIHRoZQliYXNlIGFkZHJlc3Mgb2YgdGhlIGRldmljZQotKgotKiBAcmV0dXJuICAgTm9uZS4KLSoKLSogQG5vdGUJICAgIE5vbmUuCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNkZWZpbmUgWFVhcnRMaXRlX21EaXNhYmxlSW50cihCYXNlQWRkcmVzcykgXAotCSAgICAgIFhVYXJ0TGl0ZV9tU2V0Q29udHJvbFJlZygoQmFzZUFkZHJlc3MpLCBcCi0JCSAgWFVhcnRMaXRlX21HZXRDb250cm9sUmVnKChCYXNlQWRkcmVzcykpICYgflhVTF9DUl9FTkFCTEVfSU5UUikKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKiogRnVuY3Rpb24gUHJvdG90eXBlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdm9pZCBYVWFydExpdGVfU2VuZEJ5dGUodTMyIEJhc2VBZGRyZXNzLCB1OCBEYXRhKTsKLXU4IFhVYXJ0TGl0ZV9SZWN2Qnl0ZSh1MzIgQmFzZUFkZHJlc3MpOwotCi0KLSNlbmRpZgkJICAvKiBlbmQgb2YgcHJvdGVjdGlvbiBtYWNybyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9pby5oIGIvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9pby5oCmluZGV4IGFhMzdhNjAuLjg4MDQ3MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pY3JvYmxhemUvaW8uaAorKysgYi9pbmNsdWRlL2FzbS1taWNyb2JsYXplL2lvLmgKQEAgLTE2LDYgKzE2LDggQEAKICNpZm5kZWYgX19NSUNST0JMQVpFX0lPX0hfXwogI2RlZmluZSBfX01JQ1JPQkxBWkVfSU9fSF9fCiAKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKwogI2RlZmluZSBJT19TUEFDRV9MSU1JVCAweEZGRkZGRkZGCiAKICNkZWZpbmUgcmVhZGIoYWRkcikgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9zZXJpYWxfeHVhcnRsaXRlLmggYi9pbmNsdWRlL2FzbS1taWNyb2JsYXplL3NlcmlhbF94dWFydGxpdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNkMWU4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2FzbS1taWNyb2JsYXplL3NlcmlhbF94dWFydGxpdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDQgQXRtYXJrIFRlY2hubywgSW5jLgotICoKLSAqIFlhc3VzaGkgU0hPSkkgPHlhc2hpQGF0bWFyay10ZWNobm8uY29tPgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxhc20vYXJjaC94dWFydGxpdGVfbC5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0VCK01DRi1FVjEyMy5oIGIvaW5jbHVkZS9jb25maWdzL0VCK01DRi1FVjEyMy5oCmluZGV4IDQxNzA5OWUuLjMyNGViNmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9FQitNQ0YtRVYxMjMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRUIrTUNGLUVWMTIzLmgKQEAgLTg0LDYgKzg0LDggQEAKICNkZWZpbmUgQ09ORklHX0NNRF9NSUkKICNkZWZpbmUgQ09ORklHX0NNRF9ORVQKIAorI2RlZmluZSBDT05GSUdfTUNGVE1SCisKICNkZWZpbmUgQ09ORklHX01DRkZFQwogI2lmZGVmIENPTkZJR19NQ0ZGRUMKICMJZGVmaW5lIENPTkZJR19ORVRfTVVMVEkJCTEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTQ3NUVWQi5oIGIvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmgKaW5kZXggYTE5YzM0Mi4uZTg4MDRiNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmgKQEAgLTMwMyw5ICszMDMsOSBAQAogI2RlZmluZSBDRkdfQ1MwX0NUUkwJCTB4MDAxMDE5ODAKIAogI2lmZGVmIENGR19OT1IxU1oKLSNkZWZpbmUgQ0ZHX0NTMV9CQVNFCQkweEY4MDAwMDAwCisjZGVmaW5lIENGR19DUzFfQkFTRQkJMHhFMDAwMDAwMAogI2RlZmluZSBDRkdfQ1MxX01BU0sJCSgoKENGR19OT1IxU1ogPDwgMjApIC0gMSkgJiAweEZGRkYwMDAxKQotI2RlZmluZSBDRkdfQ1MxX0NUUkwJCTB4MDAwMDBEODAKKyNkZWZpbmUgQ0ZHX0NTMV9DVFJMCQkweDAwMTAxRDgwCiAjZW5kaWYKIAogI2VuZGlmCQkJCS8qIF9NNTQ3NUVWQl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTU0ODVFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTQ4NUVWQi5oCmluZGV4IGI3M2UyZTAuLjBmOTU3ZmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTQ4NUVWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTQ4NUVWQi5oCkBAIC0yODksOSArMjg5LDkgQEAKICNkZWZpbmUgQ0ZHX0NTMF9DVFJMCQkweDAwMTAxOTgwCiAKICNpZmRlZiBDRkdfTk9SMVNaCi0jZGVmaW5lIENGR19DUzFfQkFTRQkJMHhGODAwMDAwMAorI2RlZmluZSBDRkdfQ1MxX0JBU0UJCTB4RTAwMDAwMDAKICNkZWZpbmUgQ0ZHX0NTMV9NQVNLCQkoKChDRkdfTk9SMVNaIDw8IDIwKSAtIDEpICYgMHhGRkZGMDAwMSkKLSNkZWZpbmUgQ0ZHX0NTMV9DVFJMCQkweDAwMDAwRDgwCisjZGVmaW5lIENGR19DUzFfQ1RSTAkJMHgwMDEwMUQ4MAogI2VuZGlmCiAKICNlbmRpZgkJCQkvKiBfTTU0ODVFVkJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc2Zmc2RyLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zZmZzZHIuaAppbmRleCAwZTQ5ZTZjLi43Yzg2MGU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zZmZzZHIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zZmZzZHIuaApAQCAtMTM3LDYgKzEzNyw3IEBACiAjZGVmaW5lIENPTkZJR19DTURfU0FWRVMKICNkZWZpbmUgQ09ORklHX0NNRF9OQU5ECiAjZGVmaW5lIENPTkZJR19DTURfRUVQUk9NCisjZGVmaW5lIENPTkZJR19DTURfRUxGCS8qIE5lZWRlZCB0byBsb2FkIEludGVncml0eSBrZXJuZWwuICovCiAjdW5kZWYgQ09ORklHX0NNRF9CREkKICN1bmRlZiBDT05GSUdfQ01EX0ZQR0EKICN1bmRlZiBDT05GSUdfQ01EX1NFVEdFVERDUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3B4YTI1NV9pZHAuaCBiL2luY2x1ZGUvY29uZmlncy9weGEyNTVfaWRwLmgKaW5kZXggNGE5Y2FkYi4uYjdlYTFhOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3B4YTI1NV9pZHAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcHhhMjU1X2lkcC5oCkBAIC0yMDgsNiArMjA4LDEwIEBACiAvKgkJCSJwcm90ZWN0IG9mZiIJKi8KIAogCisjZGVmaW5lIENPTkZJR19DTURMSU5FX1RBRwkJMQkvKiBlbmFibGUgcGFzc2luZyBvZiBBVEFHcyAqLworI2RlZmluZSBDT05GSUdfU0VUVVBfTUVNT1JZX1RBR1MJMQorLyogI2RlZmluZSBDT05GSUdfSU5JVFJEX1RBRwkJMSAqLworCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCiAjZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTExNTIwMAkJLyogc3BlZWQgdG8gcnVuIGtnZGIgc2VyaWFsIHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTIJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NjNTIwX3NwdW5rLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfc3B1bmsuaAppbmRleCAwNTFiMmUwLi4wNzI2NzViIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfc3B1bmsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2M1MjBfc3B1bmsuaApAQCAtMTQ0LDcgKzE0NCw3IEBACiAKICNkZWZpbmUgQ09ORklHX1NQSV9FRVBST00gICAgICAgLyogU1BJIEVFUFJPTXMgc3VjaCBhcyBBVDI1MDEwIG9yIEFUMjU2NDAgKi8KICNkZWZpbmUgQ09ORklHX01XX0VFUFJPTSAgICAgICAgLyogTWljcm9XaXJlIEVFUFJPTVMgc3VjaCBhcyBBVDkzTEM0NiAqLwotI2RlZmluZSBDT05GSUdfRFMxNzIyICAgICAgICAgICAvKiBEYWxsYXMgRFMxNzIyIFNQSSBUZW1wZXJhdHVyZSBwcm9iZSAqLworI2RlZmluZSBDT05GSUdfRFRUX0RTMTcyMiAgICAgICAvKiBEYWxsYXMgRFMxNzIyIFNQSSBUZW1wZXJhdHVyZSBwcm9iZSAqLwogCiAKIC8qIGFsbG93IHRvIG92ZXJ3cml0ZSBzZXJpYWwgYW5kIGV0aGFkZHIgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZGF0YWZsYXNoLmggYi9pbmNsdWRlL2RhdGFmbGFzaC5oCmluZGV4IGYyMGM3MzguLjgwZjA2MzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZGF0YWZsYXNoLmgKKysrIGIvaW5jbHVkZS9kYXRhZmxhc2guaApAQCAtMTM3LDYgKzEzNyw3IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjZGVmaW5lIEFUNDVEQjE2MQkweDJjCisjZGVmaW5lIEFUNDVEQjAyMQkweDE0CiAjZGVmaW5lIEFUNDVEQjMyMQkweDM0CiAjZGVmaW5lIEFUNDVEQjY0MgkweDNjCiAjZGVmaW5lIEFUNDVEQjEyOAkweDEwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2R0dC5oIGIvaW5jbHVkZS9kdHQuaAppbmRleCA0ZThhYWFkLi4zNDA1M2QxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2R0dC5oCisrKyBiL2luY2x1ZGUvZHR0LmgKQEAgLTQwLDkgKzQwLDExIEBACiAjZGVmaW5lIERUVF9DT01NRVJDSUFMX01BWF9URU1QCTcwCQkvKiAwIC0gKzcwIEMgKi8KICNkZWZpbmUgRFRUX0lORFVTVFJJQUxfTUFYX1RFTVAJODUJCS8qIC00MCAtICs4NSBDICovCiAjZGVmaW5lIERUVF9BVVRPTU9USVZFX01BWF9URU1QCTEwNQkJLyogLTQwIC0gKzEwNSBDICovCisKICNpZm5kZWYgQ0ZHX0RUVF9NQVhfVEVNUAogI2RlZmluZSBDRkdfRFRUX01BWF9URU1QIERUVF9DT01NRVJDSUFMX01BWF9URU1QCiAjZW5kaWYKKwogI2lmbmRlZiBDRkdfRFRUX0hZU1RFUkVTSVMKICNkZWZpbmUgQ0ZHX0RUVF9IWVNURVJFU0lTCTUJCS8qIDUgQyAqLwogI2VuZGlmCkBAIC01NCw3OSArNTYsNCBAQAogZXh0ZXJuIGludCBkdHRfZ2V0X3RlbXAoaW50IHNlbnNvcik7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQ09ORklHX0RUVF9MTTc1KQotI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweDAKLSNkZWZpbmUgRFRUX0NPTkZJRwkJMHgxCi0jZGVmaW5lIERUVF9URU1QX0hZU1QJCTB4MgotI2RlZmluZSBEVFRfVEVNUF9TRVQJCTB4MwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKENPTkZJR19EVFRfTE04MSkKLSNkZWZpbmUgRFRUX1JFQURfVEVNUAkJMHgyNwotI2RlZmluZSBEVFRfQ09ORklHX1RFTVAJCTB4NGIKLSNkZWZpbmUgRFRUX1RFTVBfTUFYCQkweDM5Ci0jZGVmaW5lIERUVF9URU1QX0hZU1QJCTB4M2EKLSNkZWZpbmUgRFRUX0NPTkZJRwkJMHg0MAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKENPTkZJR19EVFRfRFMxNjIxKQotI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweEFBCi0jZGVmaW5lIERUVF9SRUFEX0NPVU5URVIJMHhBOAotI2RlZmluZSBEVFRfUkVBRF9TTE9QRQkJMHhBOQotI2RlZmluZSBEVFRfV1JJVEVfU1RBUlRfQ09OVgkweEVFCi0jZGVmaW5lIERUVF9XUklURV9TVE9QX0NPTlYJMHgyMgotI2RlZmluZSBEVFRfVEVNUF9ISUdICQkweEExCi0jZGVmaW5lIERUVF9URU1QX0xPVwkJMHhBMgotI2RlZmluZSBEVFRfQ09ORklHCQkweEFDCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoQ09ORklHX0RUVF9EUzE3NzUpCi0jZGVmaW5lIERUVF9SRUFEX1RFTVAJCTB4MAotI2RlZmluZSBEVFRfQ09ORklHCQkweDEKLSNkZWZpbmUgRFRUX1RFTVBfSFlTVAkJMHgyCi0jZGVmaW5lIERUVF9URU1QX09TCQkweDMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChDT05GSUdfRFRUX0FETTEwMjEpCi0jZGVmaW5lIERUVF9SRUFEX0xPQ19WQUxVRQkweDAwCi0jZGVmaW5lIERUVF9SRUFEX1JFTV9WQUxVRQkweDAxCi0jZGVmaW5lIERUVF9SRUFEX1NUQVRVUwkJMHgwMgotI2RlZmluZSBEVFRfUkVBRF9DT05GSUcJCTB4MDMKLSNkZWZpbmUgRFRUX1JFQURfQ09OVlJBVEUJMHgwNAotI2RlZmluZSBEVFRfUkVBRF9MT0NfSElHSExJTQkweDA1Ci0jZGVmaW5lIERUVF9SRUFEX0xPQ19MT1dMSU0JMHgwNgotI2RlZmluZSBEVFRfUkVBRF9SRU1fSElHSExJTQkweDA3Ci0jZGVmaW5lIERUVF9SRUFEX1JFTV9MT1dMSU0JMHgwOAotI2RlZmluZSBEVFRfUkVBRF9ERVZJRAkJMHhmZQotCi0jZGVmaW5lIERUVF9XUklURV9DT05GSUcJMHgwOQotI2RlZmluZSBEVFRfV1JJVEVfQ09OVlJBVEUJMHgwYQotI2RlZmluZSBEVFRfV1JJVEVfTE9DX0hJR0hMSU0JMHgwYgotI2RlZmluZSBEVFRfV1JJVEVfTE9DX0xPV0xJTQkweDBjCi0jZGVmaW5lIERUVF9XUklURV9SRU1fSElHSExJTQkweDBkCi0jZGVmaW5lIERUVF9XUklURV9SRU1fTE9XTElNCTB4MGUKLSNkZWZpbmUgRFRUX1dSSVRFX09ORVNIT1QJMHgwZgotCi0jZGVmaW5lIERUVF9TVEFUVVNfQlVTWQkJMHg4MAkvKiAxPUFEQyBDb252ZXJ0aW5nICovCi0jZGVmaW5lIERUVF9TVEFUVVNfTEhJR0gJMHg0MAkvKiAxPUxvY2FsIEhpZ2ggVGVtcCBMaW1pdCBUcmlwcGVkICovCi0jZGVmaW5lIERUVF9TVEFUVVNfTExPVwkJMHgyMAkvKiAxPUxvY2FsIExvdyBUZW1wIExpbWl0IFRyaXBwZWQgKi8KLSNkZWZpbmUgRFRUX1NUQVRVU19SSElHSAkweDEwCS8qIDE9UmVtb3RlIEhpZ2ggVGVtcCBMaW1pdCBUcmlwcGVkICovCi0jZGVmaW5lIERUVF9TVEFUVVNfUkxPVwkJMHgwOAkvKiAxPVJlbW90ZSBMb3cgVGVtcCBMaW1pdCBUcmlwcGVkICovCi0jZGVmaW5lIERUVF9TVEFUVVNfT1BFTgkJMHgwNAkvKiAxPVJlbW90ZSBTZW5zb3IgT3Blbi1DaXJjdWl0ICovCi0KLSNkZWZpbmUgRFRUX0NPTkZJR19BTEVSVF9NQVNLRUQJMHg4MAkvKiAwPUFMRVJUIEVuYWJsZWQsIDE9QUxFUlQgTWFza2VkICovCi0jZGVmaW5lIERUVF9DT05GSUdfU1RBTkRCWQkweDQwCS8qIDA9UnVuLCAxPVN0YW5kYnkgKi8KLQotI2RlZmluZSBEVFRfQURNMTAyMV9ERVZJRAkweDQxCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoQ09ORklHX0RUVF9MTTczKQotI2RlZmluZSBEVFRfUkVBRF9URU1QCQkweDAKLSNkZWZpbmUgRFRUX0NPTkZJRwkJMHgxCi0jZGVmaW5lIERUVF9URU1QX0hJR0gJCTB4MgotI2RlZmluZSBEVFRfVEVNUF9MT1cJCTB4MwotI2RlZmluZSBEVFRfQ09OVFJPTAkJMHg0Ci0jZGVmaW5lIERUVF9JRAkJCTB4NwotI2VuZGlmCi0KICNlbmRpZiAvKiBfRFRUX0hfICovCmRpZmYgLS1naXQgYS9saWJfbTY4ay9ib2FyZC5jIGIvbGliX202OGsvYm9hcmQuYwppbmRleCBhZTk0MmU1Li5kMjdjODljIDEwMDY0NAotLS0gYS9saWJfbTY4ay9ib2FyZC5jCisrKyBiL2xpYl9tNjhrL2JvYXJkLmMKQEAgLTE3Niw3ICsxNzYsNyBAQAogCiBzdGF0aWMgaW50IGluaXRfYmF1ZHJhdGUgKHZvaWQpCiB7Ci0JdWNoYXIgdG1wWzY0XTsJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLworCWNoYXIgdG1wWzY0XTsJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwogCWludCBpID0gZ2V0ZW52X3IgKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mICh0bXApKTsKIAogCWdkLT5iYXVkcmF0ZSA9IChpID4gMCkKQEAgLTI2Nyw3ICsyNjcsNyBAQAogI2lmZGVmIENPTkZJR19QUkFNCiAJaW50IGk7CiAJdWxvbmcgcmVnOwotCXVjaGFyIHRtcFs2NF07CQkvKiBsb25nIGVub3VnaCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzICovCisJY2hhciB0bXBbNjRdOwkJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwogI2VuZGlmCiAKIAkvKiBQb2ludGVyIGlzIHdyaXRhYmxlIHNpbmNlIHdlIGFsbG9jYXRlZCBhIHJlZ2lzdGVyIGZvciBpdCAqLwpAQCAtNzUyLDcgKzc1Miw3IEBACiAJICovCiAJewogCQl1bG9uZyBwcmFtOwotCQl1Y2hhciBtZW1zelszMl07CisJCWNoYXIgbWVtc3pbMzJdOwogI2lmZGVmIENPTkZJR19QUkFNCiAJCWNoYXIgKnM7CiAKZGlmZiAtLWdpdCBhL25ldC9uZXQuYyBiL25ldC9uZXQuYwppbmRleCAyYTI2YmMwLi5jOTZmNTY2IDEwMDY0NAotLS0gYS9uZXQvbmV0LmMKKysrIGIvbmV0L25ldC5jCkBAIC0xMzkwLDcgKzEzOTAsNyBAQAogCQlwdXRzICgiR290IElQXG4iKTsKICNlbmRpZgogCQlpZiAobGVuIDwgSVBfSERSX1NJWkUpIHsKLQkJCWRlYnVnICgibGVuIGJhZCAlZCA8ICVkXG4iLCBsZW4sIElQX0hEUl9TSVpFKTsKKwkJCWRlYnVnICgibGVuIGJhZCAlZCA8ICVsZFxuIiwgbGVuLCBJUF9IRFJfU0laRSk7CiAJCQlyZXR1cm47CiAJCX0KIAkJaWYgKGxlbiA8IG50b2hzKGlwLT5pcF9sZW4pKSB7CmRpZmYgLS1naXQgYS90b29scy9nZGIvTWFrZWZpbGUgYi90b29scy9nZGIvTWFrZWZpbGUKaW5kZXggNjMyMTAzZC4uYzQ0Y2M4YSAxMDA2NDQKLS0tIGEvdG9vbHMvZ2RiL01ha2VmaWxlCisrKyBiL3Rvb2xzL2dkYi9NYWtlZmlsZQpAQCAtNDcsNyArNDcsNyBAQAogaWZlcSAoJChIT1NUT1MpLGN5Z3dpbikKIAogYWxsOgotLmRlcGVuZDoKKyQob2JqKS5kZXBlbmQ6CiAKIGVsc2UJIyAhIENZR1dJTgogCg==