LyoqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBAZmlsZSAgICBzdG0zMmY0eHguaAogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KICAqIEBicmllZiAgIENNU0lTIFNUTTMyRjR4eCBEZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgSGVhZGVyIEZpbGUuCiAgKgogICogICAgICAgICAgVGhlIGZpbGUgaXMgdGhlIHVuaXF1ZSBpbmNsdWRlIGZpbGUgdGhhdCB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbW1lcgogICogICAgICAgICAgaXMgdXNpbmcgaW4gdGhlIEMgc291cmNlIGNvZGUsIHVzdWFsbHkgaW4gbWFpbi5jLiBUaGlzIGZpbGUgY29udGFpbnM6CiAgKiAgICAgICAgICAgLSBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGhhdCBhbGxvd3MgdG8gc2VsZWN0OgogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyRjR4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCiAgKiAgICAgICAgICAgICAgLSBUbyB1c2Ugb3Igbm90IHRoZSBwZXJpcGhlcmFsknMgZHJpdmVycyBpbiBhcHBsaWNhdGlvbiBjb2RlKGkuZS4KICAqICAgICAgICAgICAgICAgIGNvZGUgd2lsbCBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWyScyByZWdpc3RlcnMKICAqICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRyaXZlcnMgQVBJKSwgdGhpcyBvcHRpb24gaXMgY29udHJvbGxlZCBieQogICogICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX0hBTF9EUklWRVIiCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQGF0dGVudGlvbgogICoKICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgKiAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIFNUTWljcm9lbGVjdHJvbmljcyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKICAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgKiAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCiAgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAogICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKICAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCiAgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAogICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICovCgovKiogQGFkZHRvZ3JvdXAgQ01TSVMKICAqIEB7CiAgKi8KCi8qKiBAYWRkdG9ncm91cCBzdG0zMmY0eHgKICAqIEB7CiAgKi8KCiNpZm5kZWYgX19TVE0zMkY0eHhfSAojZGVmaW5lIF9fU1RNMzJGNHh4X0gKCiNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwoKLyoqIEBhZGR0b2dyb3VwIExpYnJhcnlfY29uZmlndXJhdGlvbl9zZWN0aW9uCiAgKiBAewogICovCgovKioKICAqIEBicmllZiBTVE0zMiBGYW1pbHkKICAqLwojaWYgIWRlZmluZWQgIChTVE0zMkY0KQojZGVmaW5lIFNUTTMyRjQKI2VuZGlmIC8qIFNUTTMyRjQgKi8KCi8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyBhY2NvcmRpbmcgdG8gdGhlIHRhcmdldCBTVE0zMiBkZXZpY2UgdXNlZCBpbiB5b3VyCiAgIGFwcGxpY2F0aW9uCiAgKi8KI2lmICFkZWZpbmVkIChTVE0zMkY0MDV4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxNXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDA3eHgpICYmICFkZWZpbmVkIChTVE0zMkY0MTd4eCkgJiYgXAogICAgIWRlZmluZWQgKFNUTTMyRjQyN3h4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDM3eHgpICYmICFkZWZpbmVkIChTVE0zMkY0Mjl4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQzOXh4KSAmJiBcCiAgICAhZGVmaW5lZCAoU1RNMzJGNDAxeEMpICYmICFkZWZpbmVkIChTVE0zMkY0MDF4RSkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMFR4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDEwQ3gpICYmIFwKICAgICFkZWZpbmVkIChTVE0zMkY0MTBSeCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMXhFKSAmJiAhZGVmaW5lZCAoU1RNMzJGNDQ2eHgpICYmICFkZWZpbmVkIChTVE0zMkY0Njl4eCkgJiYgXAogICAgIWRlZmluZWQgKFNUTTMyRjQ3OXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDEyQ3gpICYmICFkZWZpbmVkIChTVE0zMkY0MTJSeCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMlZ4KSAmJiBcCiAgICAhZGVmaW5lZCAoU1RNMzJGNDEyWngpICYmICFkZWZpbmVkIChTVE0zMkY0MTN4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQyM3h4KQogIC8qICNkZWZpbmUgU1RNMzJGNDA1eHggKi8gICAvKiE8IFNUTTMyRjQwNVJHLCBTVE0zMkY0MDVWRyBhbmQgU1RNMzJGNDA1WkcgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDE1eHggKi8gICAvKiE8IFNUTTMyRjQxNVJHLCBTVE0zMkY0MTVWRyBhbmQgU1RNMzJGNDE1WkcgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDA3eHggKi8gICAvKiE8IFNUTTMyRjQwN1ZHLCBTVE0zMkY0MDdWRSwgU1RNMzJGNDA3WkcsIFNUTTMyRjQwN1pFLCBTVE0zMkY0MDdJRyAgYW5kIFNUTTMyRjQwN0lFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxN3h4ICovICAgLyohPCBTVE0zMkY0MTdWRywgU1RNMzJGNDE3VkUsIFNUTTMyRjQxN1pHLCBTVE0zMkY0MTdaRSwgU1RNMzJGNDE3SUcgYW5kIFNUTTMyRjQxN0lFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQyN3h4ICovICAgLyohPCBTVE0zMkY0MjdWRywgU1RNMzJGNDI3VkksIFNUTTMyRjQyN1pHLCBTVE0zMkY0MjdaSSwgU1RNMzJGNDI3SUcgYW5kIFNUTTMyRjQyN0lJIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQzN3h4ICovICAgLyohPCBTVE0zMkY0MzdWRywgU1RNMzJGNDM3VkksIFNUTTMyRjQzN1pHLCBTVE0zMkY0MzdaSSwgU1RNMzJGNDM3SUcgYW5kIFNUTTMyRjQzN0lJIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQyOXh4ICovICAgLyohPCBTVE0zMkY0MjlWRywgU1RNMzJGNDI5VkksIFNUTTMyRjQyOVpHLCBTVE0zMkY0MjlaSSwgU1RNMzJGNDI5QkcsIFNUTTMyRjQyOUJJLCBTVE0zMkY0MjlORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY0MzlOSSwgU1RNMzJGNDI5SUcgIGFuZCBTVE0zMkY0MjlJSSBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0Mzl4eCAqLyAgIC8qITwgU1RNMzJGNDM5VkcsIFNUTTMyRjQzOVZJLCBTVE0zMkY0MzlaRywgU1RNMzJGNDM5WkksIFNUTTMyRjQzOUJHLCBTVE0zMkY0MzlCSSwgU1RNMzJGNDM5TkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNDM5TkksIFNUTTMyRjQzOUlHIGFuZCBTVE0zMkY0MzlJSSBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MDF4QyAqLyAgIC8qITwgU1RNMzJGNDAxQ0IsIFNUTTMyRjQwMUNDLCBTVE0zMkY0MDFSQiwgU1RNMzJGNDAxUkMsIFNUTTMyRjQwMVZCIGFuZCBTVE0zMkY0MDFWQyBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MDF4RSAqLyAgIC8qITwgU1RNMzJGNDAxQ0QsIFNUTTMyRjQwMVJELCBTVE0zMkY0MDFWRCwgU1RNMzJGNDAxQ0UsIFNUTTMyRjQwMVJFIGFuZCBTVE0zMkY0MDFWRSBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MTBUeCAqLyAgIC8qITwgU1RNMzJGNDEwVDggYW5kIFNUTTMyRjQxMFRCIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxMEN4ICovICAgLyohPCBTVE0zMkY0MTBDOCBhbmQgU1RNMzJGNDEwQ0IgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDEwUnggKi8gICAvKiE8IFNUTTMyRjQxMFI4IGFuZCBTVE0zMkY0MTBSQiBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MTF4RSAqLyAgIC8qITwgU1RNMzJGNDExQ0MsIFNUTTMyRjQxMVJDLCBTVE0zMkY0MTFWQywgU1RNMzJGNDExQ0UsIFNUTTMyRjQxMVJFIGFuZCBTVE0zMkY0MTFWRSBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0NDZ4eCAqLyAgIC8qITwgU1RNMzJGNDQ2TUMsIFNUTTMyRjQ0Nk1FLCBTVE0zMkY0NDZSQywgU1RNMzJGNDQ2UkUsIFNUTTMyRjQ0NlZDLCBTVE0zMkY0NDZWRSwgU1RNMzJGNDQ2WkMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFNUTTMyRjQ0NlpFIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQ2OXh4ICovICAgLyohPCBTVE0zMkY0NjlBSSwgU1RNMzJGNDY5SUksIFNUTTMyRjQ2OUJJLCBTVE0zMkY0NjlOSSwgU1RNMzJGNDY5QUcsIFNUTTMyRjQ2OUlHLCBTVE0zMkY0NjlCRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE0zMkY0NjlORywgU1RNMzJGNDY5QUUsIFNUTTMyRjQ2OUlFLCBTVE0zMkY0NjlCRSBhbmQgU1RNMzJGNDY5TkUgRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDc5eHggKi8gICAvKiE8IFNUTTMyRjQ3OUFJLCBTVE0zMkY0NzlJSSwgU1RNMzJGNDc5QkksIFNUTTMyRjQ3OU5JLCBTVE0zMkY0NzlBRywgU1RNMzJGNDc5SUcsIFNUTTMyRjQ3OUJHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFNUTTMyRjQ3OU5HIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxMkN4ICovICAgLyohPCBTVE0zMkY0MTJDRVUgYW5kIFNUTTMyRjQxMkNHVSBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MTJaeCAqLyAgIC8qITwgU1RNMzJGNDEyWkVULCBTVE0zMkY0MTJaR1QsIFNUTTMyRjQxMlpFSiBhbmQgU1RNMzJGNDEyWkdKIERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyRjQxMlZ4ICovICAgLyohPCBTVE0zMkY0MTJWRVQsIFNUTTMyRjQxMlZHVCwgU1RNMzJGNDEyVkVIIGFuZCBTVE0zMkY0MTJWR0ggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJGNDEyUnggKi8gICAvKiE8IFNUTTMyRjQxMlJFVCwgU1RNMzJGNDEyUkdULCBTVE0zMkY0MTJSRVkgYW5kIFNUTTMyRjQxMlJHWSBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MTN4eCAqLyAgIC8qITwgU1RNMzJGNDEzQ0gsIFNUTTMyRjQxM01ILCBTVE0zMkY0MTNSSCwgU1RNMzJGNDEzVkgsIFNUTTMyRjQxM1pILCBTVE0zMkY0MTNDRywgU1RNMzJGNDEzTUcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNDEzUkcsIFNUTTMyRjQxM1ZHIGFuZCBTVE0zMkY0MTNaRyBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkY0MjN4eCAqLyAgIC8qITwgU1RNMzJGNDIzQ0gsIFNUTTMyRjQyM1JILCBTVE0zMkY0MjNWSCBhbmQgU1RNMzJGNDIzWkggRGV2aWNlcyAqLwojZW5kaWYKCi8qICBUaXA6IFRvIGF2b2lkIG1vZGlmeWluZyB0aGlzIGZpbGUgZWFjaCB0aW1lIHlvdSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZXNlCiAgICAgICAgZGV2aWNlcywgeW91IGNhbiBkZWZpbmUgdGhlIGRldmljZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuCiAgKi8KI2lmICFkZWZpbmVkICAoVVNFX0hBTF9EUklWRVIpCi8qKgogKiBAYnJpZWYgQ29tbWVudCB0aGUgbGluZSBiZWxvdyBpZiB5b3Ugd2lsbCBub3QgdXNlIHRoZSBwZXJpcGhlcmFscyBkcml2ZXJzLgogICBJbiB0aGlzIGNhc2UsIHRoZXNlIGRyaXZlcnMgd2lsbCBub3QgYmUgaW5jbHVkZWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwKICAgYmUgYmFzZWQgb24gZGlyZWN0IGFjY2VzcyB0byBwZXJpcGhlcmFscyByZWdpc3RlcnMKICAgKi8KICAvKiNkZWZpbmUgVVNFX0hBTF9EUklWRVIgKi8KI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovCgovKioKICAqIEBicmllZiBDTVNJUyB2ZXJzaW9uIG51bWJlciBWMi42LjIKICAqLwojZGVmaW5lIF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fTUFJTiAgICgweDAyVSkgLyohPCBbMzE6MjRdIG1haW4gdmVyc2lvbiAqLwojZGVmaW5lIF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fU1VCMSAgICgweDA2VSkgLyohPCBbMjM6MTZdIHN1YjEgdmVyc2lvbiAqLwojZGVmaW5lIF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fU1VCMiAgICgweDAyVSkgLyohPCBbMTU6OF0gIHN1YjIgdmVyc2lvbiAqLwojZGVmaW5lIF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fUkMgICAgICgweDAwVSkgLyohPCBbNzowXSAgcmVsZWFzZSBjYW5kaWRhdGUgKi8KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OICAgICAgICAoKF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fTUFJTiA8PCAyNClcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX1NVQjEgPDwgMTYpXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkY0eHhfQ01TSVNfVkVSU0lPTl9TVUIyIDw8IDggKVwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT04pKQoKLyoqCiAgKiBAfQogICovCgovKiogQGFkZHRvZ3JvdXAgRGV2aWNlX0luY2x1ZGVkCiAgKiBAewogICovCgojaWYgZGVmaW5lZChTVE0zMkY0MDV4eCkKICAjaW5jbHVkZSAic3RtMzJmNDA1eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTV4eCkKICAjaW5jbHVkZSAic3RtMzJmNDE1eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MDd4eCkKICAjaW5jbHVkZSAic3RtMzJmNDA3eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTd4eCkKICAjaW5jbHVkZSAic3RtMzJmNDE3eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0Mjd4eCkKICAjaW5jbHVkZSAic3RtMzJmNDI3eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0Mzd4eCkKICAjaW5jbHVkZSAic3RtMzJmNDM3eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0Mjl4eCkKICAjaW5jbHVkZSAic3RtMzJmNDI5eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0Mzl4eCkKICAjaW5jbHVkZSAic3RtMzJmNDM5eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MDF4QykKICAjaW5jbHVkZSAic3RtMzJmNDAxeGMuaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MDF4RSkKICAjaW5jbHVkZSAic3RtMzJmNDAxeGUuaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTBUeCkKICAjaW5jbHVkZSAic3RtMzJmNDEwdHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTBDeCkKICAjaW5jbHVkZSAic3RtMzJmNDEwY3guaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTBSeCkKICAjaW5jbHVkZSAic3RtMzJmNDEwcnguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTF4RSkKICAjaW5jbHVkZSAic3RtMzJmNDExeGUuaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0NDZ4eCkKICAjaW5jbHVkZSAic3RtMzJmNDQ2eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0Njl4eCkKICAjaW5jbHVkZSAic3RtMzJmNDY5eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0Nzl4eCkKICAjaW5jbHVkZSAic3RtMzJmNDc5eHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTJDeCkKICAjaW5jbHVkZSAic3RtMzJmNDEyY3guaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTJaeCkKICAjaW5jbHVkZSAic3RtMzJmNDEyenguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTJSeCkKICAjaW5jbHVkZSAic3RtMzJmNDEycnguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTJWeCkKICAjaW5jbHVkZSAic3RtMzJmNDEydnguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MTN4eCkKICAjaW5jbHVkZSAic3RtMzJmNDEzeHguaCIKI2VsaWYgZGVmaW5lZChTVE0zMkY0MjN4eCkKICAjaW5jbHVkZSAic3RtMzJmNDIzeHguaCIKI2Vsc2UKICNlcnJvciAiUGxlYXNlIHNlbGVjdCBmaXJzdCB0aGUgdGFyZ2V0IFNUTTMyRjR4eCBkZXZpY2UgdXNlZCBpbiB5b3VyIGFwcGxpY2F0aW9uIChpbiBzdG0zMmY0eHguaCBmaWxlKSIKI2VuZGlmCgovKioKICAqIEB9CiAgKi8KCi8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF90eXBlcwogICogQHsKICAqLwp0eXBlZGVmIGVudW0KewogIFJFU0VUID0gMFUsCiAgU0VUID0gIVJFU0VUCn0gRmxhZ1N0YXR1cywgSVRTdGF0dXM7Cgp0eXBlZGVmIGVudW0KewogIERJU0FCTEUgPSAwVSwKICBFTkFCTEUgPSAhRElTQUJMRQp9IEZ1bmN0aW9uYWxTdGF0ZTsKI2RlZmluZSBJU19GVU5DVElPTkFMX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gRElTQUJMRSkgfHwgKChTVEFURSkgPT0gRU5BQkxFKSkKCnR5cGVkZWYgZW51bQp7CiAgRVJST1IgPSAwVSwKICBTVUNDRVNTID0gIUVSUk9SCn0gRXJyb3JTdGF0dXM7CgovKioKICAqIEB9CiAgKi8KCgovKiogQGFkZHRvZ3JvdXAgRXhwb3J0ZWRfbWFjcm8KICAqIEB7CiAgKi8KI2RlZmluZSBTRVRfQklUKFJFRywgQklUKSAgICAgKChSRUcpIHw9IChCSVQpKQoKI2RlZmluZSBDTEVBUl9CSVQoUkVHLCBCSVQpICAgKChSRUcpICY9IH4oQklUKSkKCiNkZWZpbmUgUkVBRF9CSVQoUkVHLCBCSVQpICAgICgoUkVHKSAmIChCSVQpKQoKI2RlZmluZSBDTEVBUl9SRUcoUkVHKSAgICAgICAgKChSRUcpID0gKDB4MCkpCgojZGVmaW5lIFdSSVRFX1JFRyhSRUcsIFZBTCkgICAoKFJFRykgPSAoVkFMKSkKCiNkZWZpbmUgUkVBRF9SRUcoUkVHKSAgICAgICAgICgoUkVHKSkKCiNkZWZpbmUgTU9ESUZZX1JFRyhSRUcsIENMRUFSTUFTSywgU0VUTUFTSykgIFdSSVRFX1JFRygoUkVHKSwgKCgoUkVBRF9SRUcoUkVHKSkgJiAofihDTEVBUk1BU0spKSkgfCAoU0VUTUFTSykpKQoKI2RlZmluZSBQT1NJVElPTl9WQUwoVkFMKSAgICAgKF9fQ0xaKF9fUkJJVChWQUwpKSkKCgovKioKICAqIEB9CiAgKi8KCiNpZiBkZWZpbmVkIChVU0VfSEFMX0RSSVZFUikKICNpbmNsdWRlICJzdG0zMmY0eHhfaGFsLmgiCiNlbmRpZiAvKiBVU0VfSEFMX0RSSVZFUiAqLwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0KI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCgojZW5kaWYgLyogX19TVE0zMkY0eHhfSCAqLwovKioKICAqIEB9CiAgKi8KCi8qKgogICogQH0KICAqLwoKCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8K