LyoKICogQ29weXJpZ2h0IKkgMTk5Ny0yMDA3IEFsYWNyaXRlY2gsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAogKgogKiAkSWQ6IHN4Z2h3LmgsdiAxLjIgMjAwOC8wNy8yNCAxNzoyNDoyMyBjaHJpcyBFeHAgJAogKgogKiBzeGdody5oOgogKgogKiBUaGlzIGZpbGUgY29udGFpbnMgc3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgZm9yIHRoZQogKiBBbGFjcml0ZWNoIFNhaGFyYSBoYXJkd2FyZQogKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb25maWd1cmF0aW9uIHNwYWNlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiAgUENJIFZlbmRvciBJRCAqLwojZGVmaW5lIFNYR19WRU5ET1JfSUQJCQkweDEzOUEJLyogQWxhY3JpdGVjaCdzIFZlbmRvciBJRCAqLwoKLy8gIFBDSSBEZXZpY2UgSUQKI2RlZmluZSBTWEdfREVWSUNFX0lECQkJMHgwMDA5CS8qIFNhaGFyYSBEZXZpY2UgSUQgKi8KCi8vCi8vIFN1YnN5c3RlbSBJRHMuCi8vCi8vIFRoZSBzdWJzeXN0ZW0gSUQgdmFsdWUgaXMgYnJva2VuIGludG8gYml0IGZpZWxkcyBhcyBmb2xsb3dzOgovLwkJQml0cyBbMTU6MTJdIC0gRnVuY3Rpb24KLy8JCUJpdHMgWzExOjhdICAtIE9FTSBhbmQvb3Igb3BlcmF0aW5nIHN5c3RlbS4KLy8JCUJpdHMgWzc6MF0gICAtIEJhc2UgU0lELgovLwovLyBTU0lEIGZpZWxkIChiaXQpIG1hc2tzCiNkZWZpbmUgU1NJRF9CQVNFX01BU0sJCQkJCTB4MDBGRgkvLyBCYXNlIHN1YnN5c3RlbSBJRCBtYXNrCiNkZWZpbmUgU1NJRF9PRU1fTUFTSwkJCQkJMHgwRjAwCS8vIFN1YnN5c3RlbSBPRU0gbWFzawojZGVmaW5lIFNTSURfRlVOQ19NQVNLCQkJCQkweEYwMDAJLy8gU3Vic3lzdGVtIGZ1bmN0aW9uIG1hc2sKCi8vIEJhc2UgU1NJRCdzCiNkZWZpbmUgU1NJRF9TQUhBUkFfUFJPVE8JCQkJMHgwMDE4CS8vIDEwMDAyMiBTYWhhcmEgcHJvdG90eXBlIChYZW5QYWspIGJvYXJkCiNkZWZpbmUgU1NJRF9TQUhBUkFfRklCRVIJCQkJMHgwMDE5CS8vIDEwMDAyMyBTYWhhcmEgMS1wb3J0IGZpYmVyIGJvYXJkCiNkZWZpbmUgU1NJRF9TQUhBUkFfQ09QUEVSCQkJCTB4MDAxQQkvLyAxMDAwMjQgU2FoYXJhIDEtcG9ydCBjb3BwZXIgYm9hcmQKCi8vIFVzZWZ1bCBTU0lEIG1hY3JvcwojZGVmaW5lCVNTSURfQkFTRShzc2lkKQkJCSgoc3NpZCkgJiBTU0lEX0JBU0VfTUFTSykJCS8vIGlzb2xhdGUgYmFzZSBTU0lEIGJpdHMKI2RlZmluZQlTU0lEX09FTShzc2lkKQkJCSgoc3NpZCkgJiBTU0lEX09FTV9NQVNLKQkJLy8gaXNvbGF0ZSBTU0lEIE9FTSBiaXRzCiNkZWZpbmUJU1NJRF9GVU5DKHNzaWQpCQkJKChzc2lkKSAmIFNTSURfRlVOQ19NQVNLKQkJLy8gaXNvbGF0ZSBTU0lEIGZ1bmN0aW9uIGJpdHMKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEhXIFJlZ2lzdGVyIFNwYWNlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIFNYR19IV1JFR19NRU1TSVpFCTB4NDAwMAkJLy8gMTZrCgojcHJhZ21hIHBhY2socHVzaCwgMSkKdHlwZWRlZiBzdHJ1Y3QgX1NYR19IV19SRUdTIHsKCXUzMgkJUmVzZXQ7CQkJCS8vIFdyaXRlIDB4ZGVhZCB0byBpbnZva2Ugc29mdCByZXNldAoJdTMyCQlQYWQxOwkJCQkvLyBObyByZWdpc3RlciBkZWZpbmVkIGF0IG9mZnNldCA0Cgl1MzIJCUludGVycnVwdE1hc2swOwkJLy8gRGVhc3NlcnQgbGVnYWN5IGludGVycnVwdCBvbiBmdW5jdGlvbiAwCgl1MzIJCUludGVycnVwdE1hc2sxOwkJLy8gRGVhc3NlcnQgbGVnYWN5IGludGVycnVwdCBvbiBmdW5jdGlvbiAxCgl1MzIJCVVjb2RlRGF0YUxvdzsJCS8vIFN0b3JlIG1pY3JvY29kZSBpbnN0cnVjdGlvbiBiaXRzIDMxLTAKCXUzMgkJVWNvZGVEYXRhTWlkZGxlOwkvLyBTdG9yZSBtaWNyb2NvZGUgaW5zdHJ1Y3Rpb24gYml0cyA2My0zMgoJdTMyCQlVY29kZURhdGFIaWdoOwkJLy8gU3RvcmUgbWljcm9jb2RlIGluc3RydWN0aW9uIGJpdHMgOTUtNjQKCXUzMgkJVWNvZGVBZGRyOwkJCS8vIFN0b3JlIG1pY3JvY29kZSBhZGRyZXNzIC0gU2VlIGZsYWdzIGJlbG93Cgl1MzIJCVBhZFRvMHg4MFsyNF07CQkvLyBQYWQgdG8gWGN2IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCgl1MzIJCU1hY0NvbmZpZzA7CQkJLy8gMHg4MCAtIEFYR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDAKCXUzMgkJTWFjQ29uZmlnMTsJCQkvLyAweDg0IC0gQVhHTUFDIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMQoJdTMyCQlNYWNDb25maWcyOwkJCS8vIDB4ODggLSBBWEdNQUMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAyCgl1MzIJCU1hY0NvbmZpZzM7CQkJLy8gMHg4QyAtIEFYR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDMKCXUzMgkJTWFjQWRkcmVzc0xvdzsJCS8vIDB4OTAgLSBBWEdNQUMgTUFDIFN0YXRpb24gQWRkcmVzcyAtIG9jdGV0cyAxLTQKCXUzMgkJTWFjQWRkcmVzc0hpZ2g7CQkvLyAweDk0IC0gQVhHTUFDIE1BQyBTdGF0aW9uIEFkZHJlc3MgLSBvY3RldHMgNS02Cgl1MzIJCU1hY1Jlc2VydmVkMVsyXTsJLy8gMHg5OCAtIEFYR01BQyBSZXNlcnZlZAoJdTMyCQlNYWNNYXhGcmFtZUxlbjsJCS8vIDB4QTAgLSBBWEdNQUMgTWF4aW11bSBGcmFtZSBMZW5ndGgKCXUzMgkJTWFjUmVzZXJ2ZWQyWzJdOwkvLyAweEE0IC0gQVhHTUFDIFJlc2VydmVkCgl1MzIJCU1hY1JldmlzaW9uOwkJLy8gMHhBQyAtIEFYR01BQyBSZXZpc2lvbiBMZXZlbCBSZWdpc3RlcgoJdTMyCQlNYWNSZXNlcnZlZDNbNF07CS8vIDB4QjAgLSBBWEdNQUMgUmVzZXJ2ZWQKCXUzMgkJTWFjQW1paW1DbWQ7CQkvLyAweEMwIC0gQVhHTUFDIEFNSUlNIENvbW1hbmQgUmVnaXN0ZXIKCXUzMgkJTWFjQW1paW1GaWVsZDsJCS8vIDB4QzQgLSBBWEdNQUMgQU1JSU0gRmllbGQgUmVnaXN0ZXIKCXUzMgkJTWFjQW1paW1Db25maWc7CQkvLyAweEM4IC0gQVhHTUFDIEFNSUlNIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIKCXUzMgkJTWFjQW1paW1MaW5rOwkJLy8gMHhDQyAtIEFYR01BQyBBTUlJTSBMaW5rIEZhaWwgVmVjdG9yIFJlZ2lzdGVyCgl1MzIJCU1hY0FtaWltSW5kaWNhdG9yOwkvLyAweEQwIC0gQVhHTUFDIEFNSUlNIEluZGljYXRvciBSZWdpc3RvcgoJdTMyCQlQYWRUbzB4MTAwWzExXTsJCS8vIDB4RDQgLSAweDEwMCAtIFBhZAoJdTMyCQlYbXRDb25maWc7CQkJLy8gMHgxMDAgLSBUcmFuc21pdCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCgl1MzIJCVJjdkNvbmZpZzsJCQkvLyAweDEwNCAtIFJlY2VpdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxCgl1MzIJCUxpbmtBZGRyZXNzMExvdzsJLy8gMHgxMDggLSBMaW5rIGFkZHJlc3MgMAoJdTMyCQlMaW5rQWRkcmVzczBIaWdoOwkvLyAweDEwQyAtIExpbmsgYWRkcmVzcyAwCgl1MzIJCUxpbmtBZGRyZXNzMUxvdzsJLy8gMHgxMTAgLSBMaW5rIGFkZHJlc3MgMQoJdTMyCQlMaW5rQWRkcmVzczFIaWdoOwkvLyAweDExNCAtIExpbmsgYWRkcmVzcyAxCgl1MzIJCUxpbmtBZGRyZXNzMkxvdzsJLy8gMHgxMTggLSBMaW5rIGFkZHJlc3MgMgoJdTMyCQlMaW5rQWRkcmVzczJIaWdoOwkvLyAweDExQyAtIExpbmsgYWRkcmVzcyAyCgl1MzIJCUxpbmtBZGRyZXNzM0xvdzsJLy8gMHgxMjAgLSBMaW5rIGFkZHJlc3MgMwoJdTMyCQlMaW5rQWRkcmVzczNIaWdoOwkvLyAweDEyNCAtIExpbmsgYWRkcmVzcyAzCgl1MzIJCVRvZXBsaXR6S2V5WzEwXTsJLy8gMHgxMjggLSAweDE1MCAtIFRvZXBsaXR6IGtleQoJdTMyCQlTb2NrZXRLZXlbMTBdOwkJLy8gMHgxNTAgLSAweDE3OCAtIFNvY2tldCBLZXkKCXUzMgkJTGlua1N0YXR1czsJCQkvLyAweDE3OCAtIExpbmsgc3RhdHVzCgl1MzIJCUNsZWFyU3RhdHM7CQkJLy8gMHgxN0MgLSBDbGVhciBTdGF0cwoJdTMyCQlYbXRFcnJvcnNMb3c7CQkvLyAweDE4MCAtIFRyYW5zbWl0IHN0YXRzIC0gZXJyb3JzCgl1MzIJCVhtdEVycm9yc0hpZ2g7CQkvLyAweDE4NCAtIFRyYW5zbWl0IHN0YXRzIC0gZXJyb3JzCgl1MzIJCVhtdEZyYW1lc0xvdzsJCS8vIDB4MTg4IC0gVHJhbnNtaXQgc3RhdHMgLSBmcmFtZSBjb3VudAoJdTMyCQlYbXRGcmFtZXNIaWdoOwkJLy8gMHgxOEMgLSBUcmFuc21pdCBzdGF0cyAtIGZyYW1lIGNvdW50Cgl1MzIJCVhtdEJ5dGVzTG93OwkJLy8gMHgxOTAgLSBUcmFuc21pdCBzdGF0cyAtIGJ5dGUgY291bnQKCXUzMgkJWG10Qnl0ZXNIaWdoOwkJLy8gMHgxOTQgLSBUcmFuc21pdCBzdGF0cyAtIGJ5dGUgY291bnQKCXUzMgkJWG10VGNwU2VnbWVudHNMb3c7CS8vIDB4MTk4IC0gVHJhbnNtaXQgc3RhdHMgLSBUQ1Agc2VnbWVudHMKCXUzMgkJWG10VGNwU2VnbWVudHNIaWdoOwkvLyAweDE5QyAtIFRyYW5zbWl0IHN0YXRzIC0gVENQIHNlZ21lbnRzCgl1MzIJCVhtdFRjcEJ5dGVzTG93OwkJLy8gMHgxQTAgLSBUcmFuc21pdCBzdGF0cyAtIFRDUCBieXRlcwoJdTMyCQlYbXRUY3BCeXRlc0hpZ2g7CS8vIDB4MUE0IC0gVHJhbnNtaXQgc3RhdHMgLSBUQ1AgYnl0ZXMKCXUzMgkJUmN2RXJyb3JzTG93OwkJLy8gMHgxQTggLSBSZWNlaXZlIHN0YXRzIC0gZXJyb3JzCgl1MzIJCVJjdkVycm9yc0hpZ2g7CQkvLyAweDFBQyAtIFJlY2VpdmUgc3RhdHMgLSBlcnJvcnMKCXUzMgkJUmN2RnJhbWVzTG93OwkJLy8gMHgxQjAgLSBSZWNlaXZlIHN0YXRzIC0gZnJhbWUgY291bnQKCXUzMgkJUmN2RnJhbWVzSGlnaDsJCS8vIDB4MUI0IC0gUmVjZWl2ZSBzdGF0cyAtIGZyYW1lIGNvdW50Cgl1MzIJCVJjdkJ5dGVzTG93OwkJLy8gMHgxQjggLSBSZWNlaXZlIHN0YXRzIC0gYnl0ZSBjb3VudAoJdTMyCQlSY3ZCeXRlc0hpZ2g7CQkvLyAweDFCQyAtIFJlY2VpdmUgc3RhdHMgLSBieXRlIGNvdW50Cgl1MzIJCVJjdlRjcFNlZ21lbnRzTG93OwkvLyAweDFDMCAtIFJlY2VpdmUgc3RhdHMgLSBUQ1Agc2VnbWVudHMKCXUzMgkJUmN2VGNwU2VnbWVudHNIaWdoOwkvLyAweDFDNCAtIFJlY2VpdmUgc3RhdHMgLSBUQ1Agc2VnbWVudHMKCXUzMgkJUmN2VGNwQnl0ZXNMb3c7CQkvLyAweDFDOCAtIFJlY2VpdmUgc3RhdHMgLSBUQ1AgYnl0ZXMKCXUzMgkJUmN2VGNwQnl0ZXNIaWdoOwkvLyAweDFDQyAtIFJlY2VpdmUgc3RhdHMgLSBUQ1AgYnl0ZXMKCXUzMgkJUGFkVG8weDIwMFsxMl07CQkvLyAweDFEMCAtIDB4MjAwIC0gUGFkCgl1MzIJCVNvZnR3YXJlWzE5MjBdOwkJLy8gMHgyMDAgLSAweDIwMDAgLSBTb2Z0d2FyZSBkZWZpbmVkIChub3QgdXNlZCkKCXUzMgkJTXNpeFRhYmxlWzEwMjRdOwkvLyAweDIwMDAgLSAweDMwMDAgLSBNU0lYIFRhYmxlCgl1MzIJCU1zaXhCaXRBcnJheVsxMDI0XTsJLy8gMHgzMDAwIC0gMHg0MDAwIC0gTVNJWCBQZW5kaW5nIEJpdCBBcnJheQp9IFNYR19IV19SRUdTLCAqUFNYR19IV19SRUdTOwojcHJhZ21hIHBhY2socG9wKQoKLy8gTWljcm9jb2RlIEFkZHJlc3MgRmxhZ3MKI2RlZmluZQlNSUNST0NPREVfQUREUkVTU19HTwkJMHg4MDAwMDAwMAkvLyBTdGFydCBtaWNyb2NvZGUKI2RlZmluZQlNSUNST0NPREVfQUREUkVTU19XUklURQkJMHg0MDAwMDAwMAkvLyBTdG9yZSBtaWNyb2NvZGUKI2RlZmluZQlNSUNST0NPREVfQUREUkVTU19SRUFECQkweDIwMDAwMDAwCS8vIFJlYWQgbWljcm9jb2RlCiNkZWZpbmUJTUlDUk9DT0RFX0FERFJFU1NfUEFSSVRZCTB4MTAwMDAwMDAJLy8gUGFyaXR5IGVycm9yIGRldGVjdGVkCiNkZWZpbmUJTUlDUk9DT0RFX0FERFJFU1NfTUFTSwkJMHgwMDAwMUZGRgkvLyBBZGRyZXNzIGJpdHMKCi8vIExpbmsgQWRkcmVzcyBSZWdpc3RlcnMKI2RlZmluZSBMSU5LX0FERFJFU1NfRU5BQkxFCQkJMHg4MDAwMDAwMAkvLyBBcHBsaWVkIHRvIGxpbmsgYWRkcmVzcyBoaWdoCgovLyBNaWNyb3NvZnQgcmVnaXN0ZXIgc3BhY2Ugc2l6ZQojZGVmaW5lIFNYR19VQ09ERVJFR19NRU1TSVpFCTB4NDAwMDAJCS8vIDI1NmsKCi8vIFNhaGFyYSBtaWNyb2NvZGUgcmVnaXN0ZXIgYWRkcmVzcyBmb3JtYXQuICBUaGUgY29tbWFuZCBjb2RlLAovLyBleHRlbmRlZCBjb21tYW5kIGNvZGUsIGFuZCBhc3NvY2lhdGVkIHByb2Nlc3NvciBhcmUgZW5jb2RlZCBpbgovLyB0aGUgYWRkcmVzcyBiaXRzIGFzIGZvbGxvd3MKI2RlZmluZSBTWEdfQUREUkVTU19DT0RFX1NISUZUCQkyCQkJLy8gQmFzZSBjb21tYW5kIGNvZGUKI2RlZmluZSBTWEdfQUREUkVTU19DT0RFX01BU0sJCTB4MDAwMDAwM0MKI2RlZmluZSBTWEdfQUREUkVTU19FWENPREVfU0hJRlQJNgkJCS8vIEV4dGVuZGVkIChvciBzdWIpIGNvbW1hbmQgY29kZQojZGVmaW5lIFNYR19BRERSRVNTX0VYQ09ERV9NQVNLCQkweDAwMDAxRkMwCiNkZWZpbmUJU1hHX0FERFJFU1NfQ1BVSURfU0hJRlQJCTEzCQkJLy8gQ1BVCiNkZWZpbmUgU1hHX0FERFJFU1NfQ1BVSURfTUFTSwkJMHgwMDAzRTAwMAojZGVmaW5lIFNYR19SRUdJU1RFUl9TSVpFX1BFUl9DUFUJMHgwMDAwMjAwMAkvLyBVc2VkIHRvIHNhbml0eSBjaGVjayBVQ09ERV9SRUdTIHN0cnVjdHVyZQoKLy8gU2FoYXJhIHJlY2VpdmUgc2VxdWVuY2VyIHN0YXR1cyB2YWx1ZXMKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BVFROCQkJMHg4MDAwMDAwMAkvLyBBdHRlbnRpb24KI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfTUFTSwkJMHgzRjAwMDAwMAkvLyBUcmFuc3BvcnQgbWFzawojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9FUlJPUgkJMHgyMDAwMDAwMAkvLyBUcmFuc3BvcnQgZXJyb3IKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfQ1NVTQkJMHgyMzAwMDAwMAkvLyBUcmFuc3BvcnQgY2tzdW0gZXJyb3IKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfVUZMT1cJCTB4MjIwMDAwMDAJLy8gVHJhbnNwb3J0IHVuZGVyZmxvdwojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9IRFJMRU4JCTB4MjAwMDAwMDAJLy8gVHJhbnNwb3J0IGhlYWRlciBsZW5ndGgKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfRkxBR1MJCTB4MTAwMDAwMDAJLy8gVHJhbnNwb3J0IGZsYWdzIGRldGVjdGVkCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfVFJBTlNQT1JUX09QVFMJCTB4MDgwMDAwMDAJLy8gVHJhbnNwb3J0IG9wdGlvbnMgZGV0ZWN0ZWQKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfU0VTU19NQVNLCTB4MDcwMDAwMDAJLy8gVHJhbnNwb3J0IEREUAojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9ERFAJCTB4MDYwMDAwMDAJLy8gVHJhbnNwb3J0IEREUAojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9pU0NTSQkJMHgwNTAwMDAwMAkvLyBUcmFuc3BvcnQgaVNDU0kKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfTkZTCQkweDA0MDAwMDAwCS8vIFRyYW5zcG9ydCBORlMKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfRlRQCQkweDAzMDAwMDAwCS8vIFRyYW5zcG9ydCBGVFAKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19UUkFOU1BPUlRfSFRUUAkJMHgwMjAwMDAwMAkvLyBUcmFuc3BvcnQgSFRUUAojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1RSQU5TUE9SVF9TTUIJCTB4MDEwMDAwMDAJLy8gVHJhbnNwb3J0IFNNQgojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfTUFTSwkJMHgwMEZGMDAwMAkvLyBOZXR3b3JrIG1hc2sKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX0VSUk9SCQkweDAwODAwMDAwCS8vIE5ldHdvcmsgZXJyb3IKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX0NTVU0JCTB4MDA4MzAwMDAJLy8gTmV0d29yayBja3N1bSBlcnJvcgojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfVUZMT1cJCTB4MDA4MjAwMDAJLy8gTmV0d29yayB1bmRlcmZsb3cgZXJyb3IKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX0hEUkxFTgkJMHgwMDgwMDAwMAkvLyBOZXR3b3JrIGhlYWRlciBsZW5ndGgKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX09GTE9XCQkweDAwNDAwMDAwCS8vIE5ldHdvcmsgb3ZlcmZsb3cgZGV0ZWN0ZWQKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19ORVRXT1JLX01DQVNUCQkweDAwMjAwMDAwCS8vIE5ldHdvcmsgbXVsdGljYXN0IGRldGVjdGVkCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19PUFRJT05TCQkweDAwMTAwMDAwCS8vIE5ldHdvcmsgb3B0aW9ucyBkZXRlY3RlZAojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX05FVFdPUktfT0ZGU0VUCQkweDAwMDgwMDAwCS8vIE5ldHdvcmsgb2Zmc2V0IGRldGVjdGVkCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19GUkFHTUVOVAkJMHgwMDA0MDAwMAkvLyBOZXR3b3JrIGZyYWdtZW50IGRldGVjdGVkCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19UUkFOU19NQVNLCTB4MDAwMzAwMDAJLy8gTmV0d29yayB0cmFuc3BvcnQgdHlwZSBtYXNrCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19VRFAJCTB4MDAwMjAwMDAJLy8gVURQCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTkVUV09SS19UQ1AJCTB4MDAwMTAwMDAJLy8gVENQCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfSVBPTkxZCQkJMHgwMDAwODAwMAkvLyBJUC1vbmx5IG5vdCBUQ1AKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19QS1RfUFJJCQkJMHgwMDAwNjAwMAkvLyBSZWNlaXZlIHByaW9yaXR5CiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfUEtUX1BSSV9TSEZUCQkJMTMJLy8gUmVjZWl2ZSBwcmlvcml0eSBzaGlmdAojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX1BBUklUWQkJCTB4MDAwMDEwMDAJLy8gTUFDIFJlY2VpdmUgUkFNIHBhcml0eSBlcnJvcgojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0FERFJFU1NfTUFTSwkJMHgwMDAwMEYwMAkvLyBMaW5rIGFkZHJlc3MgZGV0ZWN0aW9uIG1hc2sKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0QJCTB4MDAwMDBCMDAJLy8gTGluayBhZGRyZXNzIEQKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0MJCTB4MDAwMDBBMDAJLy8gTGluayBhZGRyZXNzIEMKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0IJCTB4MDAwMDA5MDAJLy8gTGluayBhZGRyZXNzIEIKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0EJCTB4MDAwMDA4MDAJLy8gTGluayBhZGRyZXNzIEEKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0JDQVNUCQkweDAwMDAwMzAwCS8vIExpbmsgYWRkcmVzcyBicm9hZGNhc3QKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX01DQVNUCQkweDAwMDAwMjAwCS8vIExpbmsgYWRkcmVzcyBtdWx0aWNhc3QKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19BRERSRVNTX0NNQ0FTVAkJMHgwMDAwMDEwMAkvLyBMaW5rIGNvbnRyb2wgbXVsdGljYXN0CiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19NQVNLCQkweDAwMDAwMEZGCS8vIExpbmsgc3RhdHVzIG1hc2sKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0VSUk9SCQkweDAwMDAwMDgwCS8vIExpbmsgZXJyb3IKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX01BU0sJCTB4MDAwMDAwRkYJLy8gTGluayBzdGF0dXMgbWFzawojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfUEFSSVRZCQkweDAwMDAwMDg3CS8vIFJjdk1hY1EgcGFyaXR5IGVycm9yCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19FQVJMWQkJMHgwMDAwMDA4NgkvLyBEYXRhIGVhcmx5CiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19CVUZPRkxPVwkJMHgwMDAwMDA4NQkvLyBCdWZmZXIgb3ZlcmZsb3cKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0NPREUJCTB4MDAwMDAwODQJLy8gTGluayBjb2RlIGVycm9yCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19EUklCQkxFCQkweDAwMDAwMDgzCS8vIERyaWJibGUgbmliYmxlCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19DUkMJCQkweDAwMDAwMDgyCS8vIENSQyBlcnJvcgojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfT0ZMT1cJCTB4MDAwMDAwODEJLy8gTGluayBvdmVyZmxvdwojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfVUZMT1cJCTB4MDAwMDAwODAJLy8gTGluayB1bmRlcmZsb3cKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LXzgwMjMJCTB4MDAwMDAwMjAJLy8gODAyLjMKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX1NOQVAJCTB4MDAwMDAwMTAJLy8gU25hcAojZGVmaW5lIFNYR19SQ1ZfU1RBVFVTX0xJTktfVkxBTgkJMHgwMDAwMDAwOAkvLyBWTEFOCiNkZWZpbmUgU1hHX1JDVl9TVEFUVVNfTElOS19UWVBFX01BU0sJCTB4MDAwMDAwMDcJLy8gTmV0d29yayB0eXBlIG1hc2sKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0NPTlRST0wJCTB4MDAwMDAwMDMJLy8gQ29udHJvbCBwYWNrZXQKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0lQVjYJCTB4MDAwMDAwMDIJLy8gSVB2NiBwYWNrZXQKI2RlZmluZSBTWEdfUkNWX1NUQVRVU19MSU5LX0lQVjQJCTB4MDAwMDAwMDEJLy8gSVB2NCBwYWNrZXQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogU2FoYXJhIHJlY2VpdmUgYW5kIHRyYW5zbWl0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUJUkNWX0NPTkZJR19SRVNFVAkJMHg4MDAwMDAwMAkvLyBSY3ZDb25maWcgcmVnaXN0ZXIgcmVzZXQKI2RlZmluZQlSQ1ZfQ09ORklHX0VOQUJMRQkJMHg0MDAwMDAwMAkvLyBFbmFibGUgdGhlIHJlY2VpdmUgbG9naWMKI2RlZmluZQlSQ1ZfQ09ORklHX0VOUEFSU0UJCTB4MjAwMDAwMDAJLy8gRW5hYmxlIHRoZSByZWNlaXZlIHBhcnNlcgojZGVmaW5lCVJDVl9DT05GSUdfU09DS0VUCQkweDEwMDAwMDAwCS8vIEVuYWJsZSB0aGUgc29ja2V0IGRldGVjdG9yCiNkZWZpbmUJUkNWX0NPTkZJR19SQ1ZCQUQJCTB4MDgwMDAwMDAJLy8gUmVjZWl2ZSBhbGwgYmFkIGZyYW1lcwojZGVmaW5lCVJDVl9DT05GSUdfQ09OVFJPTAkJMHgwNDAwMDAwMAkvLyBSZWNlaXZlIGFsbCBjb250cm9sIGZyYW1lcwojZGVmaW5lCVJDVl9DT05GSUdfUkNWUEFVU0UJCTB4MDIwMDAwMDAJLy8gRW5hYmxlIHBhdXNlIHRyYW5zbWl0IHdoZW4gYXR0bgojZGVmaW5lCVJDVl9DT05GSUdfVFpJUFY2CQkweDAxMDAwMDAwCS8vIEluY2x1ZGUgVENQIHBvcnQgdy8gSVB2NiB0b2VwbGl0egojZGVmaW5lCVJDVl9DT05GSUdfVFpJUFY0CQkweDAwODAwMDAwCS8vIEluY2x1ZGUgVENQIHBvcnQgdy8gSVB2NCB0b2VwbGl0egojZGVmaW5lCVJDVl9DT05GSUdfRkxVU0gJCTB4MDA0MDAwMDAJLy8gRmx1c2ggYnVmZmVycwojZGVmaW5lCVJDVl9DT05GSUdfUFJJT1JJVFlfTUFTSwkweDAwMzAwMDAwCS8vIFByaW9yaXR5IGxldmVsCiNkZWZpbmUJUkNWX0NPTkZJR19IQVNIX01BU0sJCTB4MDAwMzAwMDAJLy8gSGFzaCBkZXB0aAojZGVmaW5lCVJDVl9DT05GSUdfSEFTSF84CQkweDAwMDAwMDAwCS8vIEhhc2ggZGVwdGggOAojZGVmaW5lCVJDVl9DT05GSUdfSEFTSF8xNgkJMHgwMDAxMDAwMAkvLyBIYXNoIGRlcHRoIDE2CiNkZWZpbmUJUkNWX0NPTkZJR19IQVNIXzQJCTB4MDAwMjAwMDAJLy8gSGFzaCBkZXB0aCA0CiNkZWZpbmUJUkNWX0NPTkZJR19IQVNIXzIJCTB4MDAwMzAwMDAJLy8gSGFzaCBkZXB0aCAyCiNkZWZpbmUJUkNWX0NPTkZJR19CVUZMRU5fTUFTSwkJMHgwMDAwRkZGMAkvLyBCdWZmZXIgbGVuZ3RoIGJpdHMgMTU6NC4gaWUgbXVsdGlwbGUgb2YgMTYuCiNkZWZpbmUgUkNWX0NPTkZJR19TS1RfRElTCQkweDAwMDAwMDA4CS8vIERpc2FibGUgc29ja2V0IGRldGVjdGlvbiBvbiBhdHRuCi8vIE1hY3JvIHRvIGRldGVybWluZSBSQ1ZfQ09ORklHX0JVRkxFTiBiYXNlZCBvbiBtYXhpbXVtIGZyYW1lIHNpemUuCi8vIFdlIGFkZCAxOCBieXRlcyBmb3IgU2FoYXJhIHJlY2VpdmUgc3RhdHVzIGFuZCBwYWRkaW5nLCBwbHVzIDQgYnl0ZXMgZm9yIENSQywKLy8gYW5kIHJvdW5kIHVwIHRvIG5lYXJlc3QgMTYgYnl0ZSBib3VuZGFyeQojZGVmaW5lIFJDVl9DT05GSUdfQlVGU0laRShfTWF4RnJhbWUpICgoKChfTWF4RnJhbWUpICsgMjIpICsgMTUpICYgUkNWX0NPTkZJR19CVUZMRU5fTUFTSykKCiNkZWZpbmUJWE1UX0NPTkZJR19SRVNFVAkJMHg4MDAwMDAwMAkvLyBYbXRDb25maWcgcmVnaXN0ZXIgcmVzZXQKI2RlZmluZQlYTVRfQ09ORklHX0VOQUJMRQkJMHg0MDAwMDAwMAkvLyBFbmFibGUgdHJhbnNtaXQgbG9naWMKI2RlZmluZQlYTVRfQ09ORklHX01BQ19QQVJJVFkJCTB4MjAwMDAwMDAJLy8gSW5oaWJpdCBNQUMgUkFNIHBhcml0eSBlcnJvcgojZGVmaW5lCVhNVF9DT05GSUdfQlVGX1BBUklUWQkJMHgxMDAwMDAwMAkvLyBJbmhpYml0IEQyRiBidWZmZXIgcGFyaXR5IGVycm9yCiNkZWZpbmUJWE1UX0NPTkZJR19NRU1fUEFSSVRZCQkweDA4MDAwMDAwCS8vIEluaGliaXQgMVQgU1JBTSBwYXJpdHkgZXJyb3IKI2RlZmluZQlYTVRfQ09ORklHX0lOVkVSVF9QQVJJVFkJMHgwNDAwMDAwMAkvLyBJbnZlcnQgTUFDIFJBTSBwYXJpdHkKI2RlZmluZQlYTVRfQ09ORklHX0lOSVRJQUxfSVBJRAkJMHgwMDAwRkZGRgkvLyBJbml0aWFsIElQSUQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQS1YR01BQyBSZWdpc3RlcnMgLSBPY2N1cHkgMHg4MCAtIDB4RDQgb2YgdGhlIFNYR19IV19SRUdTCiAqCiAqIEZ1bGwgcmVnaXN0ZXIgZGVzY3JpcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBheGdtYWMucGRmCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8vIEEtWEdNQUMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAwCiNkZWZpbmUgQVhHTUFDX0NGRzBfU1VCX1JFU0VUCQkweDgwMDAwMDAwCQkvLyBTdWIgbW9kdWxlIHJlc2V0CiNkZWZpbmUgQVhHTUFDX0NGRzBfUkNOVFJMX1JFU0VUCTB4MDA0MDAwMDAJCS8vIFJlY2VpdmUgY29udHJvbCByZXNldAojZGVmaW5lIEFYR01BQ19DRkcwX1JGVU5DX1JFU0VUCQkweDAwMjAwMDAwCQkvLyBSZWNlaXZlIGZ1bmN0aW9uIHJlc2V0CiNkZWZpbmUgQVhHTUFDX0NGRzBfVENOVFJMX1JFU0VUCTB4MDAwNDAwMDAJCS8vIFRyYW5zbWl0IGNvbnRyb2wgcmVzZXQKI2RlZmluZSBBWEdNQUNfQ0ZHMF9URlVOQ19SRVNFVAkJMHgwMDAyMDAwMAkJLy8gVHJhbnNtaXQgZnVuY3Rpb24gcmVzZXQKI2RlZmluZSBBWEdNQUNfQ0ZHMF9NSUlfUkVTRVQJCTB4MDAwMTAwMDAJCS8vIE1JSSBNYW5hZ2VtZW50IHJlc2V0CgovLyBBLVhHTUFDIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMQojZGVmaW5lIEFYR01BQ19DRkcxX1hNVF9QQVVTRQkJMHg4MDAwMDAwMAkJLy8gQWxsb3cgdGhlIHNlbmRpbmcgb2YgUGF1c2UgZnJhbWVzCiNkZWZpbmUgQVhHTUFDX0NGRzFfWE1UX0VOCQkweDQwMDAwMDAwCQkvLyBFbmFibGUgdHJhbnNtaXQKI2RlZmluZSBBWEdNQUNfQ0ZHMV9SQ1ZfUEFVU0UJCTB4MjAwMDAwMDAJCS8vIEFsbG93IHRoZSBkZXRlY3Rpb24gb2YgUGF1c2UgZnJhbWVzCiNkZWZpbmUgQVhHTUFDX0NGRzFfUkNWX0VOCQkweDEwMDAwMDAwCQkvLyBFbmFibGUgcmVjZWl2ZQojZGVmaW5lIEFYR01BQ19DRkcxX1hNVF9TVEFURQkJMHgwNDAwMDAwMAkJLy8gQ3VycmVudCB0cmFuc21pdCBzdGF0ZSAtIFJFQUQgT05MWQojZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9TVEFURQkJMHgwMTAwMDAwMAkJLy8gQ3VycmVudCByZWNlaXZlIHN0YXRlIC0gUkVBRCBPTkxZCiNkZWZpbmUgQVhHTUFDX0NGRzFfWE9GRl9TSE9SVAkJMHgwMDAwMTAwMAkJLy8gT25seSBwYXVzZSBmb3IgNjQgc2xvdCBvbiBYT0ZGCiNkZWZpbmUgQVhHTUFDX0NGRzFfWE1HX0ZDUzEJCTB4MDAwMDA0MDAJCS8vIERlbGF5IHRyYW5zbWl0IEZDUyAxIDQtYnl0ZSB3b3JkCiNkZWZpbmUgQVhHTUFDX0NGRzFfWE1HX0ZDUzIJCTB4MDAwMDA4MDAJCS8vIERlbGF5IHRyYW5zbWl0IEZDUyAyIDQtYnl0ZSB3b3JkcwojZGVmaW5lIEFYR01BQ19DRkcxX1hNR19GQ1MzCQkweDAwMDAwQzAwCQkvLyBEZWxheSB0cmFuc21pdCBGQ1MgMyA0LWJ5dGUgd29yZHMKI2RlZmluZSBBWEdNQUNfQ0ZHMV9SQ1ZfRkNTMQkJMHgwMDAwMDEwMAkJLy8gRGVsYXkgcmVjZWl2ZSBGQ1MgMSA0LWJ5dGUgd29yZAojZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9GQ1MyCQkweDAwMDAwMjAwCQkvLyBEZWxheSByZWNlaXZlIEZDUyAyIDQtYnl0ZSB3b3JkcwojZGVmaW5lIEFYR01BQ19DRkcxX1JDVl9GQ1MzCQkweDAwMDAwMzAwCQkvLyBEZWxheSByZWNlaXZlIEZDUyAzIDQtYnl0ZSB3b3JkcwojZGVmaW5lIEFYR01BQ19DRkcxX1BLVF9PVkVSUklERQkweDAwMDAwMDgwCQkvLyBQZXItcGFja2V0IG92ZXJyaWRlIGVuYWJsZQojZGVmaW5lIEFYR01BQ19DRkcxX1NXQVAJCTB4MDAwMDAwNDAJCS8vIEJ5dGUgc3dhcCBlbmFibGUKI2RlZmluZSBBWEdNQUNfQ0ZHMV9TSE9SVF9BU1NFUlQJMHgwMDAwMDAyMAkJLy8gQVNTRVJUIHNyZHJwZnJtIG9uIHNob3J0IGZyYW1lICg8NjQpCiNkZWZpbmUgQVhHTUFDX0NGRzFfUkNWX1NUUklDVAkJMHgwMDAwMDAxMAkJLy8gUkNWIG9ubHkgODAyLjNBRSB3aGVuIENMRUFSCiNkZWZpbmUgQVhHTUFDX0NGRzFfQ0hFQ0tfTEVOCQkweDAwMDAwMDA4CQkvLyBWZXJpZnkgZnJhbWUgbGVuZ3RoCiNkZWZpbmUgQVhHTUFDX0NGRzFfR0VOX0ZDUwkJMHgwMDAwMDAwNAkJLy8gR2VuZXJhdGUgRkNTCiNkZWZpbmUgQVhHTUFDX0NGRzFfUEFEX01BU0sJCTB4MDAwMDAwMDMJCS8vIE1hc2sgZm9yIHBhZCBiaXRzCiNkZWZpbmUgQVhHTUFDX0NGRzFfUEFEXzY0CQkweDAwMDAwMDAxCQkvLyBQYWQgZnJhbWVzIHRvIDY0IGJ5dGVzCiNkZWZpbmUgQVhHTUFDX0NGRzFfUEFEX1ZMQU4JCTB4MDAwMDAwMDIJCS8vIERldGVjdCBWTEFOIGFuZCBwYWQgdG8gNjggYnl0ZXMKI2RlZmluZSBBWEdNQUNfQ0ZHMV9QQURfNjgJCTB4MDAwMDAwMDMJCS8vIFBhZCB0byA2OCBieXRlcwoKLy8gQS1YR01BQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIKI2RlZmluZSBBWEdNQUNfQ0ZHMl9HRU5fUEFVU0UJCTB4ODAwMDAwMDAJCS8vIEdlbmVyYXRlIHNpbmdsZSBwYXVzZSBmcmFtZSAodGVzdCkKI2RlZmluZSBBWEdNQUNfQ0ZHMl9MRl9NQU5VQUwJCTB4MDgwMDAwMDAJCS8vIE1hbnVhbCBsaW5rIGZhdWx0IHNlcXVlbmNlCiNkZWZpbmUgQVhHTUFDX0NGRzJfTEZfQVVUTwkJMHgwNDAwMDAwMAkJLy8gQXV0byBsaW5rIGZhdWx0IHNlcXVlbmNlCiNkZWZpbmUgQVhHTUFDX0NGRzJfTEZfUkVNT1RFCQkweDAyMDAwMDAwCQkvLyBSZW1vdGUgbGluayBmYXVsdCAoUkVBRCBPTkxZKQojZGVmaW5lIEFYR01BQ19DRkcyX0xGX0xPQ0FMCQkweDAxMDAwMDAwCQkvLyBMb2NhbCBsaW5rIGZhdWx0IChSRUFEIE9OTFkpCiNkZWZpbmUgQVhHTUFDX0NGRzJfSVBHX01BU0sJCTB4MDAxRjAwMDAJCS8vIEludGVyIHBhY2tldCBnYXAKI2RlZmluZSBBWEdNQUNfQ0ZHMl9JUEdfU0hJRlQJCQkxNgojZGVmaW5lIEFYR01BQ19DRkcyX1BBVVNFX1hNVAkJMHgwMDAwODAwMAkJLy8gUGF1c2UgdHJhbnNtaXQgbW9kdWxlCiNkZWZpbmUgQVhHTUFDX0NGRzJfSVBHX0VYVEVOCQkweDAwMDAwMDIwCQkvLyBFbmFibGUgSVBHIGV4dGVuc2lvbiBhbGdvcml0aG0KI2RlZmluZSBBWEdNQUNfQ0ZHMl9JUEdFWF9NQVNLCQkweDAwMDAwMDFGCQkvLyBJUEcgZXh0ZW5zaW9uCgovLyBBLVhHTUFDIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMwojZGVmaW5lIEFYR01BQ19DRkczX1JDVl9EUk9QCQkweEZGRkYwMDAwCQkvLyBSZWNlaXZlIGZyYW1lIGRyb3AgZmlsdGVyCiNkZWZpbmUgQVhHTUFDX0NGRzNfUkNWX0RPTlRfQ0FSRQkweDAwMDBGRkZGCQkvLyBSZWNlaXZlIGZyYW1lIGRvbid0IGNhcmUgZmlsdGVyCgovLyBBLVhHTUFDIFN0YXRpb24gQWRkcmVzcyBSZWdpc3RlciAtIE9jdGV0cyAxLTQKI2RlZmluZSBBWEdNQUNfU0FSTE9XX09DVEVUX09ORQkJMHhGRjAwMDAwMAkJLy8gRmlyc3Qgb2N0ZXQKI2RlZmluZSBBWEdNQUNfU0FSTE9XX09DVEVUX1RXTwkJMHgwMEZGMDAwMAkJLy8gU2Vjb25kIG9jdGV0CiNkZWZpbmUgQVhHTUFDX1NBUkxPV19PQ1RFVF9USFJFRQkweDAwMDBGRjAwCQkvLyBUaGlyZCBvY3RldAojZGVmaW5lIEFYR01BQ19TQVJMT1dfT0NURVRfRk9VUgkweDAwMDAwMEZGCQkvLyBGb3VydGggb2N0ZXQKCi8vIEEtWEdNQUMgU3RhdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIC0gT2N0ZXRzIDUtNgojZGVmaW5lIEFYR01BQ19TQVJISUdIX09DVEVUX0ZJVkUJMHhGRjAwMDAwMAkJLy8gRmlmdGggb2N0ZXQKI2RlZmluZSBBWEdNQUNfU0FSSElHSF9PQ1RFVF9TSVgJMHgwMEZGMDAwMAkJLy8gU2l4dGggb2N0ZXQKCi8vIEEtWEdNQUMgTWF4aW11bSBmcmFtZSBsZW5ndGggcmVnaXN0ZXIKI2RlZmluZSBBWEdNQUNfTUFYRlJBTUVfWE1UCQkweDNGRkYwMDAwCQkvLyBNYXhpbXVtIHRyYW5zbWl0IGZyYW1lIGxlbmd0aAojZGVmaW5lIEFYR01BQ19NQVhGUkFNRV9YTVRfU0hJRlQJMTYKI2RlZmluZSBBWEdNQUNfTUFYRlJBTUVfUkNWCQkweDAwMDBGRkZGCQkvLyBNYXhpbXVtIHJlY2VpdmUgZnJhbWUgbGVuZ3RoCi8vIFRoaXMgcmVnaXN0ZXIgZG9lc24ndCBuZWVkIHRvIGJlIHdyaXR0ZW4gZm9yIHN0YW5kYXJkIE1UVS4KLy8gRm9yIGp1bWJvLCBJJ2xsIGp1c3Qgc3RhdGljYWxseSBkZWZpbmUgdGhlIHZhbHVlIGhlcmUuICBUaGlzCi8vIHZhbHVlIHNldHMgdGhlIHJlY2VpdmUgYnl0ZSBjb3VudCB0byA5MDM2ICgweDIzNEMpIGFuZCB0aGUKLy8gdHJhbnNtaXQgV09SRCBjb3VudCB0byAyMjU5ICgweDhEMykuICBUaGVzZSB2YWx1ZXMgaW5jbHVkZSAyMgovLyBieXRlcyBvZiBwYWRkaW5nIGJleW9uZCB0aGUganVtYm8gTVRVIG9mIDkwMTQKI2RlZmluZSBBWEdNQUNfTUFYRlJBTUVfSlVNQk8JCTB4MDhEMzIzNEMKCi8vIEEtWEdNQUMgUmV2aXNpb24gbGV2ZWwKI2RlZmluZSBBWEdNQUNfUkVWSVNJT05fTUFTSwkJMHgwMDAwRkZGRgkJLy8gUmV2aXNpb24gbGV2ZWwKCi8vIEEtWEdNQUMgQU1JSU0gQ29tbWFuZCBSZWdpc3RlcgojZGVmaW5lIEFYR01BQ19BTUlJTV9DTURfU1RBUlQJCTB4MDAwMDAwMDgJCS8vIENvbW1hbmQgc3RhcnQKI2RlZmluZSBBWEdNQUNfQU1JSU1fQ01EX01BU0sJCTB4MDAwMDAwMDcJCS8vIENvbW1hbmQKI2RlZmluZSBBWEdNQUNfQU1JSU1fQ01EX0xFR0FDWV9XUklURQkJMQkJLy8gMTAvMTAwLzEwMDAgTWJwcyBQaHkgV3JpdGUKI2RlZmluZSBBWEdNQUNfQU1JSU1fQ01EX0xFR0FDWV9SRUFECQkyCQkvLyAxMC8xMDAvMTAwMCBNYnBzIFBoeSBSZWFkCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0NNRF9NT05JVE9SX1NJTkdMRQkJMwkJLy8gTW9uaXRvciBzaW5nbGUgUEhZCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0NNRF9NT05JVE9SX01VTFRJUExFCTQJCS8vIE1vbml0b3IgbXVsdGlwbGUgY29udGlndW91cyBQSFlzCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0NNRF8xMEdfT1BFUkFUSU9OCQk1CQkvLyBQcmVzZW50IEFNSUlNIEZpZWxkIFJlZwojZGVmaW5lIEFYR01BQ19BTUlJTV9DTURfQ0xFQVJfTElOS19GQUlMCTYJCS8vIENsZWFyIExpbmsgRmFpbCBCaXQgaW4gTUlJTQoKLy8gQS1YR01BQyBBTUlJTSBGaWVsZCBSZWdpc3RlcgojZGVmaW5lIEFYR01BQ19BTUlJTV9GSUVMRF9TVAkJMHhDMDAwMDAwMAkJLy8gMi1iaXQgU1QgZmllbGQKI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfU1RfU0hJRlQJCTMwCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX09QCQkweDMwMDAwMDAwCQkvLyAyLWJpdCBPUCBmaWVsZAojZGVmaW5lIEFYR01BQ19BTUlJTV9GSUVMRF9PUF9TSElGVAkJMjgKI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfUE9SVF9BRERSCTB4MEY4MDAwMDAJCS8vIFBvcnQgYWRkcmVzcyBmaWVsZCAoaHN0cGh5YWR4IGluIHNwZWMpCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX1BPUlRfU0hJRlQJCTIzCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX0RFVl9BRERSCTB4MDA3QzAwMDAJCS8vIERldmljZSBhZGRyZXNzIGZpZWxkIChoc3RyZWdhZHggaW4gc3BlYykKI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfREVWX1NISUZUCQkxOAojZGVmaW5lIEFYR01BQ19BTUlJTV9GSUVMRF9UQQkJMHgwMDAzMDAwMAkJLy8gMi1iaXQgVEEgZmllbGQKI2RlZmluZSBBWEdNQUNfQU1JSU1fRklFTERfVEFfU0hJRlQJCTE2CiNkZWZpbmUgQVhHTUFDX0FNSUlNX0ZJRUxEX0RBVEEJCTB4MDAwMEZGRkYJCS8vIERhdGEgZmllbGQKCi8vIFZhbHVlcyBmb3IgdGhlIEFYR01BQ19BTUlJTV9GSUVMRF9PUCBmaWVsZCBpbiB0aGUgQS1YR01BQyBBTUlJTSBGaWVsZCBSZWdpc3RlcgojZGVmaW5lCU1JSU1fT1BfQUREUgkJCQkwCQkvLyBNSUlNIEFkZHJlc3Mgc2V0IG9wZXJhdGlvbgojZGVmaW5lCU1JSU1fT1BfV1JJVEUJCQkJMQkJLy8gTUlJTSBXcml0ZSByZWdpc3RlciBvcGVyYXRpb24KI2RlZmluZQlNSUlNX09QX1JFQUQJCQkJMgkJLy8gTUlJTSBSZWFkIHJlZ2lzdGVyIG9wZXJhdGlvbgojZGVmaW5lCU1JSU1fT1BfQUREUl9TSElGVAkoTUlJTV9PUF9BRERSIDw8IEFYR01BQ19BTUlJTV9GSUVMRF9PUF9TSElGVCkKCi8vIFZhbHVlcyBmb3IgdGhlIEFYR01BQ19BTUlJTV9GSUVMRF9QT1JUX0FERFIgZmllbGQgaW4gdGhlIEEtWEdNQUMgQU1JSU0gRmllbGQgUmVnaXN0ZXIKI2RlZmluZQlNSUlNX1BPUlRfTlVNCQkJCTEJCS8vIEFsbCBTYWhhcmEgTUlJTSBtb2R1bGVzIHVzZSBwb3J0IDEKCi8vIFZhbHVlcyBmb3IgdGhlIEFYR01BQ19BTUlJTV9GSUVMRF9ERVZfQUREUiBmaWVsZCBpbiB0aGUgQS1YR01BQyBBTUlJTSBGaWVsZCBSZWdpc3RlcgojZGVmaW5lCU1JSU1fREVWX1BIWV9QTUEJCQkxCQkvLyBQSFkgUE1BL1BNRCBtb2R1bGUgTUlJTSBkZXZpY2UgbnVtYmVyCiNkZWZpbmUJTUlJTV9ERVZfUEhZX1BDUwkJCTMJCS8vIFBIWSBQQ1MgbW9kdWxlIE1JSU0gZGV2aWNlIG51bWJlcgojZGVmaW5lCU1JSU1fREVWX1BIWV9YUwkJCQk0CQkvLyBQSFkgWFMgbW9kdWxlIE1JSU0gZGV2aWNlIG51bWJlcgojZGVmaW5lCU1JSU1fREVWX1hHWFMJCQkJNQkJLy8gWEdYUyBNSUlNIGRldmljZSBudW1iZXIKCi8vIFZhbHVlcyBmb3IgdGhlIEFYR01BQ19BTUlJTV9GSUVMRF9UQSBmaWVsZCBpbiB0aGUgQS1YR01BQyBBTUlJTSBGaWVsZCBSZWdpc3RlcgojZGVmaW5lCU1JSU1fVEFfMTBHQgkJCQkyCQkvLyBzZXQgdG8gMiBmb3IgMTAgR0Igb3BlcmF0aW9uCgovLyBBLVhHTUFDIEFNSUlNIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIKI2RlZmluZSBBWEdNQUNfQU1JSU1fQ0ZHX05PUFJFQU0JMHgwMDAwMDA4MAkJLy8gQnlwYXNzIHByZWFtYmxlIG9mIG1uZ210IGZyYW1lCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0NGR19IQUxGX0NMT0NLCTB4MDAwMDAwN0YJCS8vIGhhbGYtY2xvY2sgZHVyYXRpb24gb2YgTURDIG91dHB1dAoKLy8gQS1YR01BQyBBTUlJTSBJbmRpY2F0b3IgUmVnaXN0ZXIKI2RlZmluZSBBWEdNQUNfQU1JSU1fSU5EQ19MSU5LCQkweDAwMDAwMDEwCQkvLyBMaW5rIHN0YXR1cyBmcm9tIGxlZ2FjeSBQSFkgb3IgTU1ECiNkZWZpbmUgQVhHTUFDX0FNSUlNX0lORENfTVBIWQkJMHgwMDAwMDAwOAkJLy8gTXVsdGlwbGUgcGh5IG9wZXJhdGlvbiBpbiBwcm9ncmVzcwojZGVmaW5lIEFYR01BQ19BTUlJTV9JTkRDX1NQSFkJCTB4MDAwMDAwMDQJCS8vIFNpbmdsZSBwaHkgb3BlcmF0aW9uIGluIHByb2dyZXNzCiNkZWZpbmUgQVhHTUFDX0FNSUlNX0lORENfTU9OCQkweDAwMDAwMDAyCQkvLyBTaW5nbGUgb3IgbXVsdGlwbGUgbW9uaXRvciBjbWQKI2RlZmluZSBBWEdNQUNfQU1JSU1fSU5EQ19CVVNZCQkweDAwMDAwMDAxCQkvLyBTZXQgdW50aWwgY21kIG9wZXJhdGlvbiBjb21wbGV0ZQoKLy8gTGluayBTdGF0dXMgYW5kIENvbnRyb2wgUmVnaXN0ZXIKI2RlZmluZQlMU19QSFlfQ0xSX1JFU0VUCQkweDgwMDAwMDAwCQkvLyBDbGVhciByZXNldCBzaWduYWwgdG8gUEhZCiNkZWZpbmUJTFNfU0VSREVTX1BPV0VSX0RPV04JCTB4NDAwMDAwMDAJCS8vIFBvd2VyIGRvd24gdGhlIFNhaGFyYSBTZXJkZXMKI2RlZmluZQlMU19YR1hTX0VOQUJMRQkJCTB4MjAwMDAwMDAJCS8vIEVuYWJsZSB0aGUgWEFVSSBYR1hTIGxvZ2ljCiNkZWZpbmUJTFNfWEdYU19DVEwJCQkweDEwMDAwMDAwCQkvLyBIb2xkIFhBVUkgWEdYUyBsb2dpYyByZXNldCB1bnRpbCBTZXJkZXMgaXMgdXAKI2RlZmluZQlMU19TRVJERVNfRE9XTgkJCTB4MDgwMDAwMDAJCS8vIFdoZW4gMCwgWEFVSSBTZXJkZXMgaXMgdXAgYW5kIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlCiNkZWZpbmUJTFNfVFJBQ0VfRE9XTgkJCTB4MDQwMDAwMDAJCS8vIFdoZW4gMCwgVHJhY2UgU2VyZGVzIGlzIHVwIGFuZCBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZQojZGVmaW5lCUxTX1BIWV9DTEtfMjVNSFoJCTB4MDIwMDAwMDAJCS8vIFNldCBQSFkgY2xvY2sgdG8gMjUgTUh6IChlbHNlIDE1Ni4xMjUgTUh6KQojZGVmaW5lCUxTX1BIWV9DTEtfRU4JCQkweDAxMDAwMDAwCQkvLyBFbmFibGUgY2xvY2sgdG8gUEhZCiNkZWZpbmUJTFNfWEFVSV9MSU5LX1VQCQkJMHgwMDAwMDAxMAkJLy8gWEFVSSBsaW5rIGlzIHVwCiNkZWZpbmUJTFNfWEFVSV9MSU5LX0NITkcJCTB4MDAwMDAwMDgJCS8vIFhBVUkgbGluayBzdGF0dXMgaGFzIGNoYW5nZWQKI2RlZmluZQlMU19MSU5LX0FMQVJNCQkJMHgwMDAwMDAwNAkJLy8gTGluayBhbGFybSBwaW4KI2RlZmluZQlMU19BVFROX0NUUkxfTUFTSwkJMHgwMDAwMDAwMwkJLy8gTWFzayBsaW5rIGF0dGVudGlvbiBjb250cm9sIGJpdHMKI2RlZmluZQlMU19BVFROX0FMQVJNCQkJMHgwMDAwMDAwMAkJLy8gMDAgPT4gQXR0biBvbiBsaW5rIGFsYXJtCiNkZWZpbmUJTFNfQVRUTl9BTEFSTV9PUl9TVEFUX0NITkcJMHgwMDAwMDAwMQkJLy8gMDEgPT4gQXR0biBvbiBsaW5rIGFsYXJtIG9yIHN0YXR1cyBjaGFuZ2UKI2RlZmluZQlMU19BVFROX1NUQVRfQ0hORwkJMHgwMDAwMDAwMgkJLy8gMTAgPT4gQXR0biBvbiBsaW5rIHN0YXR1cyBjaGFuZ2UKI2RlZmluZQlMU19BVFROX05PTkUJCQkweDAwMDAwMDAzCQkvLyAxMSA9PiBubyBBdHRuCgovLyBMaW5rIEFkZHJlc3MgSGlnaCBSZWdpc3RlcnMKI2RlZmluZQlMSU5LX0FERFJfRU5BQkxFCQkweDgwMDAwMDAwCQkvLyBFbmFibGUgdGhpcyBsaW5rIGFkZHJlc3MKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFhHWFMgWEFVSSBYR01JSSBFeHRlbmRlciByZWdpc3RlcnMKICoKICogRnVsbCByZWdpc3RlciBkZXNjcmlwdGlvbnMgY2FuIGJlIGZvdW5kIGluIG14Z3hzLnBkZgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovLyBYR1hTIFJlZ2lzdGVyIE1hcAojZGVmaW5lIFhHWFNfQUREUkVTU19DT05UUk9MMQkJMHgwMDAwCQkJLy8gWFMgQ29udHJvbCAxCiNkZWZpbmUgWEdYU19BRERSRVNTX1NUQVRVUzEJCTB4MDAwMQkJCS8vIFhTIFN0YXR1cyAxCiNkZWZpbmUgWEdYU19BRERSRVNTX0RFVklEX0xPVwkJMHgwMDAyCQkJLy8gWFMgRGV2aWNlIElEIChsb3cpCiNkZWZpbmUgWEdYU19BRERSRVNTX0RFVklEX0hJR0gJCTB4MDAwMwkJCS8vIFhTIERldmljZSBJRCAoaGlnaCkKI2RlZmluZSBYR1hTX0FERFJFU1NfU1BFRUQJCTB4MDAwNAkJCS8vIFhTIFNwZWVkIGFiaWxpdHkKI2RlZmluZSBYR1hTX0FERFJFU1NfREVWX0xPVwkJMHgwMDA1CQkJLy8gWFMgRGV2aWNlcyBpbiBwYWNrYWdlCiNkZWZpbmUgWEdYU19BRERSRVNTX0RFVl9ISUdICQkweDAwMDYJCQkvLyBYUyBEZXZpY2VzIGluIHBhY2thZ2UKI2RlZmluZSBYR1hTX0FERFJFU1NfU1RBVFVTMgkJMHgwMDA4CQkJLy8gWFMgU3RhdHVzIDIKI2RlZmluZSBYR1hTX0FERFJFU1NfUEtHSURfbE9XCQkweDAwMEUJCQkvLyBYUyBQYWNrYWdlIElkZW50aWZpZXIKI2RlZmluZSBYR1hTX0FERFJFU1NfUEtHSURfSElHSAkJMHgwMDBGCQkJLy8gWFMgUGFja2FnZSBJZGVudGlmaWVyCiNkZWZpbmUgWEdYU19BRERSRVNTX0xBTkVfU1RBVFVTCTB4MDAxOAkJCS8vIDEwRyBYR1hTIExhbmUgU3RhdHVzCiNkZWZpbmUgWEdYU19BRERSRVNTX1RFU1RfQ1RSTAkJMHgwMDE5CQkJLy8gMTBHIFhHWFMgVGVzdCBDb250cm9sCiNkZWZpbmUgWEdYU19BRERSRVNTX1JFU0VUX0xPMQkJMHg4MDAwCQkJLy8gVmVuZG9yLVNwZWNpZmljIFJlc2V0IExvIDEKI2RlZmluZSBYR1hTX0FERFJFU1NfUkVTRVRfTE8yCQkweDgwMDEJCQkvLyBWZW5kb3ItU3BlY2lmaWMgUmVzZXQgTG8gMgojZGVmaW5lIFhHWFNfQUREUkVTU19SRVNFVF9ISTEJCTB4ODAwMgkJCS8vIFZlbmRvci1TcGVjaWZpYyBSZXNldCBIaSAxCiNkZWZpbmUgWEdYU19BRERSRVNTX1JFU0VUX0hJMgkJMHg4MDAzCQkJLy8gVmVuZG9yLVNwZWNpZmljIFJlc2V0IEhpIDIKCi8vIFhTIENvbnRyb2wgMSByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZSBYR1hTX0NPTlRST0wxX1JFU0VUCQkweDgwMDAJCQkvLyBSZXNldCAtIHNlbGYgY2xlYXJpbmcKI2RlZmluZSBYR1hTX0NPTlRST0wxX0xPT1BCQUNLCQkweDQwMDAJCQkvLyBFbmFibGUgbG9vcGJhY2sKI2RlZmluZSBYR1hTX0NPTlRST0wxX1NQRUVEMQkJMHgyMDAwCQkJLy8gMCA9IHVuc3BlY2lmaWVkLCAxID0gMTBHYisKI2RlZmluZSBYR1hTX0NPTlRST0wxX0xPV1BPV0VSCQkweDA0MDAJCQkvLyAxID0gTG93IHBvd2VyIG1vZGUKI2RlZmluZSBYR1hTX0NPTlRST0wxX1NQRUVEMgkJMHgwMDQwCQkJLy8gU2FtZSBhcyBTUEVFRDEgKD8pCiNkZWZpbmUgWEdYU19DT05UUk9MMV9TUEVFRAkJMHgwMDNDCQkJLy8gRXZlcnl0aGluZyByZXNlcnZlZCBleGNlcHQgemVybyAoPykKCi8vIFhTIFN0YXR1cyAxIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucwojZGVmaW5lIFhHWFNfU1RBVFVTMV9GQVVMVAkJMHgwMDgwCQkJLy8gRmF1bHQgZGV0ZWN0ZWQKI2RlZmluZSBYR1hTX1NUQVRVUzFfTElOSwkJMHgwMDA0CQkJLy8gMSA9IExpbmsgdXAKI2RlZmluZSBYR1hTX1NUQVRVUzFfTE9XUE9XRVIJCTB4MDAwMgkJCS8vIDEgPSBMb3cgcG93ZXIgc3VwcG9ydGVkCgovLyBYUyBTcGVlZCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZSBYR1hTX1NQRUVEXzEwRwkJCTB4MDAwMQkJCS8vIDEgPSAxMEcgY2FwYWJsZQoKLy8gWFMgRGV2aWNlcyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZSBYR1hTX0RFVklDRVNfRFRFCQkweDAwMjAJCQkvLyBEVEUgWFMgUHJlc2VudAojZGVmaW5lIFhHWFNfREVWSUNFU19QSFkJCTB4MDAxMAkJCS8vIFBIWSBYUyBQcmVzZW50CiNkZWZpbmUgWEdYU19ERVZJQ0VTX1BDUwkJMHgwMDA4CQkJLy8gUENTIFByZXNlbnQKI2RlZmluZSBYR1hTX0RFVklDRVNfV0lTCQkweDAwMDQJCQkvLyBXSVMgUHJlc2VudAojZGVmaW5lIFhHWFNfREVWSUNFU19QTUQJCTB4MDAwMgkJCS8vIFBNRC9QTUEgUHJlc2VudAojZGVmaW5lIFhHWFNfREVWSUNFU19DTEFVU0UyMgkJMHgwMDAxCQkJLy8gQ2xhdXNlIDIyIHJlZ2lzdGVycyBwcmVzZW50CgovLyBYUyBEZXZpY2VzIEhpZ2ggcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zCiNkZWZpbmUgWEdYU19ERVZJQ0VTX1ZFTkRPUjIJCTB4ODAwMAkJCS8vIFZlbmRvciBzcGVjaWZpYyBkZXZpY2UgMgojZGVmaW5lIFhHWFNfREVWSUNFU19WRU5ET1IxCQkweDQwMDAJCQkvLyBWZW5kb3Igc3BlY2lmaWMgZGV2aWNlIDEKCi8vIFhTIFN0YXR1cyAyIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucwojZGVmaW5lIFhHWFNfU1RBVFVTMl9ERVZfTUFTSwkJMHhDMDAwCQkJLy8gRGV2aWNlIHByZXNlbnQgbWFzawojZGVmaW5lIFhHWFNfU1RBVFVTMl9ERVZfUkVTUE9ORAkweDgwMDAJCQkvLyBEZXZpY2UgcmVzcG9uZGluZwojZGVmaW5lIFhHWFNfU1RBVFVTMl9YTVRfRkFVTFQJCTB4MDgwMAkJCS8vIFRyYW5zbWl0IGZhdWx0CiNkZWZpbmUgWEdYU19TVEFUVVMyX1JDVl9GQVVMVAkJMHgwNDAwCQkJLy8gUmVjZWl2ZSBmYXVsdAoKLy8gWFMgUGFja2FnZSBJRCBIaWdoIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucwojZGVmaW5lIFhHWFNfUEtHSURfSElHSF9PUkcJCTB4RkMwMAkJCS8vIE9yZ2FuaXphdGlvbmFsbHkgVW5pcXVlCiNkZWZpbmUgWEdYU19QS0dJRF9ISUdIX01GRwkJMHgwM0YwCQkJLy8gTWFudWZhY3R1cmVyIE1vZGVsCiNkZWZpbmUgWEdYU19QS0dJRF9ISUdIX1JFVgkJMHgwMDBGCQkJLy8gUmV2aXNpb24gTnVtYmVyCgovLyBYUyBMYW5lIFN0YXR1cyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZSBYR1hTX0xBTkVfUEhZCQkJMHgxMDAwCQkJLy8gUEhZL0RURSBsYW5lIGFsaWdubWVudCBzdGF0dXMKI2RlZmluZSBYR1hTX0xBTkVfUEFUVEVSTgkJMHgwODAwCQkJLy8gUGF0dGVybiB0ZXN0aW5nIGFiaWxpdHkKI2RlZmluZSBYR1hTX0xBTkVfTE9PUEJBQ0sJCTB4MDQwMAkJCS8vIFBIWSBsb29wYmFjayBhYmlsaXR5CiNkZWZpbmUgWEdYU19MQU5FX1NZTkMzCQkJMHgwMDA4CQkJLy8gTGFuZSAzIHN5bmMKI2RlZmluZSBYR1hTX0xBTkVfU1lOQzIJCQkweDAwMDQJCQkvLyBMYW5lIDIgc3luYwojZGVmaW5lIFhHWFNfTEFORV9TWU5DMQkJCTB4MDAwMgkJCS8vIExhbmUgMSBzeW5jCiNkZWZpbmUgWEdYU19MQU5FX1NZTkMwCQkJMHgwMDAxCQkJLy8gTGFuZSAwIHN5bmMKCi8vIFhTIFRlc3QgQ29udHJvbCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZSBYR1hTX1RFU1RfUEFUVEVSTl9FTkFCTEUJMHgwMDA0CQkJLy8gVGVzdCBwYXR0ZXJuIGVuYWJsZWQKI2RlZmluZSBYR1hTX1RFU1RfUEFUVEVSTl9NQVNLCQkweDAwMDMJCQkvLyBUZXN0IHBhdHRlcm5zCiNkZWZpbmUgWEdYU19URVNUX1BBVFRFUk5fUlNWRAkJMHgwMDAzCQkJLy8gVGVzdCBwYXR0ZXJuIC0gcmVzZXJ2ZWQKI2RlZmluZSBYR1hTX1RFU1RfUEFUVEVSTl9NSVgJCTB4MDAwMgkJCS8vIFRlc3QgcGF0dGVybiAtIG1peGVkCiNkZWZpbmUgWEdYU19URVNUX1BBVFRFUk5fTE9XCQkweDAwMDEJCQkvLyBUZXN0IHBhdHRlcm4gLSBsb3cKI2RlZmluZSBYR1hTX1RFU1RfUEFUVEVSTl9ISUdICQkweDAwMDEJCQkvLyBUZXN0IHBhdHRlcm4gLSBoaWdoCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEV4dGVybmFsIE1ESU8gQnVzIFJlZ2lzdGVycwogKgogKiBGdWxsIHJlZ2lzdGVyIGRlc2NyaXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gUEhZL1hFTlBBSy9JRUVFIHNwZWNzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8vIExBU0kgKExpbmsgQWxhcm0gU3RhdHVzIEludGVycnVwdCkgUmVnaXN0ZXJzIChsb2NhdGVkIGluIE1JSU1fREVWX1BIWV9QTUEgZGV2aWNlKQojZGVmaW5lIExBU0lfUlhfQUxBUk1fQ09OVFJPTAkJMHg5MDAwCQkJLy8gTEFTSSBSWF9BTEFSTSBDb250cm9sCiNkZWZpbmUgTEFTSV9UWF9BTEFSTV9DT05UUk9MCQkweDkwMDEJCQkvLyBMQVNJIFRYX0FMQVJNIENvbnRyb2wKI2RlZmluZSBMQVNJX0NPTlRST0wJCQkweDkwMDIJCQkvLyBMQVNJIENvbnRyb2wKI2RlZmluZSBMQVNJX1JYX0FMQVJNX1NUQVRVUwkJMHg5MDAzCQkJLy8gTEFTSSBSWF9BTEFSTSBTdGF0dXMKI2RlZmluZSBMQVNJX1RYX0FMQVJNX1NUQVRVUwkJMHg5MDA0CQkJLy8gTEFTSSBUWF9BTEFSTSBTdGF0dXMKI2RlZmluZSBMQVNJX1NUQVRVUwkJCTB4OTAwNQkJCS8vIExBU0kgU3RhdHVzCgovLyBMQVNJX0NPTlRST0wgYml0IGRlZmluaXRpb25zCiNkZWZpbmUJTEFTSV9DVExfUlhfQUxBUk1fRU5BQkxFCTB4MDAwNAkJCS8vIEVuYWJsZSBSWF9BTEFSTSBpbnRlcnJ1cHRzCiNkZWZpbmUJTEFTSV9DVExfVFhfQUxBUk1fRU5BQkxFCTB4MDAwMgkJCS8vIEVuYWJsZSBUWF9BTEFSTSBpbnRlcnJ1cHRzCiNkZWZpbmUJTEFTSV9DVExfTFNfQUxBUk1fRU5BQkxFCTB4MDAwMQkJCS8vIEVuYWJsZSBMaW5rIFN0YXR1cyBpbnRlcnJ1cHRzCgovLyBMQVNJX1NUQVRVUyBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZQlMQVNJX1NUQVRVU19SWF9BTEFSTQkJMHgwMDA0CQkJLy8gUlhfQUxBUk0gc3RhdHVzCiNkZWZpbmUJTEFTSV9TVEFUVVNfVFhfQUxBUk0JCTB4MDAwMgkJCS8vIFRYX0FMQVJNIHN0YXR1cwojZGVmaW5lCUxBU0lfU1RBVFVTX0xTX0FMQVJNCQkweDAwMDEJCQkvLyBMaW5rIFN0YXR1cwoKLy8gUEhZIHJlZ2lzdGVycyAtIFBNQS9QTUQgKGRldmljZSAxKQojZGVmaW5lCVBIWV9QTUFfQ09OVFJPTDEJCTB4MDAwMAkJCS8vIFBNQS9QTUQgQ29udHJvbCAxCiNkZWZpbmUJUEhZX1BNQV9TVEFUVVMxCQkJMHgwMDAxCQkJLy8gUE1BL1BNRCBTdGF0dXMgMQojZGVmaW5lCVBIWV9QTUFfUkNWX0RFVAkJCTB4MDAwQQkJCS8vIFBNQS9QTUQgUmVjZWl2ZSBTaWduYWwgRGV0ZWN0CgkJLy8gb3RoZXIgUE1BL1BNRCByZWdpc3RlcnMgZXhpc3QgYW5kIGNhbiBiZSBkZWZpbmVkIGFzIG5lZWRlZAoKLy8gUEhZIHJlZ2lzdGVycyAtIFBDUyAoZGV2aWNlIDMpCiNkZWZpbmUJUEhZX1BDU19DT05UUk9MMQkJMHgwMDAwCQkJLy8gUENTIENvbnRyb2wgMQojZGVmaW5lCVBIWV9QQ1NfU1RBVFVTMQkJCTB4MDAwMQkJCS8vIFBDUyBTdGF0dXMgMQojZGVmaW5lCVBIWV9QQ1NfMTBHX1NUQVRVUzEJCTB4MDAyMAkJCS8vIFBDUyAxMEdCQVNFLVIgU3RhdHVzIDEKCQkvLyBvdGhlciBQQ1MgcmVnaXN0ZXJzIGV4aXN0IGFuZCBjYW4gYmUgZGVmaW5lZCBhcyBuZWVkZWQKCi8vIFBIWSByZWdpc3RlcnMgLSBYUyAoZGV2aWNlIDQpCiNkZWZpbmUJUEhZX1hTX0NPTlRST0wxCQkJMHgwMDAwCQkJLy8gWFMgQ29udHJvbCAxCiNkZWZpbmUJUEhZX1hTX1NUQVRVUzEJCQkweDAwMDEJCQkvLyBYUyBTdGF0dXMgMQojZGVmaW5lCVBIWV9YU19MQU5FX1NUQVRVUwkJMHgwMDE4CQkJLy8gWFMgTGFuZSBTdGF0dXMKCQkvLyBvdGhlciBYUyByZWdpc3RlcnMgZXhpc3QgYW5kIGNhbiBiZSBkZWZpbmVkIGFzIG5lZWRlZAoKLy8gUEhZX1BNQV9DT05UUk9MMSByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZQlQTUFfQ09OVFJPTDFfUkVTRVQJCTB4ODAwMAkJCS8vIFBNQS9QTUQgcmVzZXQKCi8vIFBIWV9QTUFfUkNWX0RFVCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZQlQTUFfUkNWX0RFVEVDVAkJCTB4MDAwMQkJCS8vIFBNQS9QTUQgcmVjZWl2ZSBzaWduYWwgZGV0ZWN0CgovLyBQSFlfUENTXzEwR19TVEFUVVMxIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucwojZGVmaW5lCVBDU18xMEJfQkxPQ0tfTE9DSwkJMHgwMDAxCQkJLy8gUENTIDEwR0JBU0UtUiBsb2NrZWQgdG8gcmVjZWl2ZSBibG9ja3MKCi8vIFBIWV9YU19MQU5FX1NUQVRVUyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMKI2RlZmluZQlYU19MQU5FX0FMSUdOCQkJMHgxMDAwCQkJLy8gWFMgdHJhbnNtaXQgbGFuZXMgYWxpZ25lZAoKLy8gUEhZIE1pY3JvY29kZSBkb3dubG9hZCBkYXRhIHN0cnVjdHVyZQp0eXBlZGVmIHN0cnVjdCBfUEhZX1VDT0RFIHsKCXVzaG9ydAlBZGRyOwoJdXNob3J0CURhdGE7Cn0gUEhZX1VDT0RFLCAqUFBIWV9VQ09ERTsKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVHJhbnNtaXQgU2VxdWVuY2VyIENvbW1hbmQgRGVzY3JpcHRvciBkZWZpbml0aW9ucwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovLyBUaGlzIGRlc2NyaXB0b3IgbXVzdCBiZSBwbGFjZWQgaW4gR1JBTS4gIFRoZSBhZGRyZXNzIG9mIHRoaXMgZGVzY3JpcHRvcgovLyAoYWxvbmcgd2l0aCBhIGNvdXBsZSBvZiBjb250cm9sIGJpdHMpIGlzIHB1c2hlZCBvbnRvIHRoZSBQeGhDbWRRIG9yIFB4bENtZFEKLy8gKFByb3h5IGhpZ2ggb3IgbG93IGNvbW1hbmQgcXVldWUpLiAgVGhpcyBkYXRhIGlzIHJlYWQgYnkgdGhlIFByb3h5IFNlcXVlbmNlciwKLy8gd2hpY2ggcHVzaGVzIGl0IG9udG8gdGhlIFhtdENtZFEsIHdoaWNoIGlzIChldmVudHVhbGx5KSByZWFkIGJ5IHRoZSBUcmFuc21pdAovLyBTZXF1ZW5jZXIsIGNhdXNpbmcgYSBwYWNrZXQgdG8gYmUgdHJhbnNtaXR0ZWQuICBOb3QgYWxsIGZpZWxkcyBhcmUgdmFsaWQgZm9yCi8vIGFsbCBjb21tYW5kcyAtIHNlZSB0aGUgU2FoYXJhIHNwZWMgZm9yIGRldGFpbHMuICBOb3RlIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgaXMKLy8gb25seSB2YWxpZCB3aGVuIGNvbXBpbGVkIG9uIGEgbGl0dGxlIGVuZGlhbiBtYWNoaW5lLgojcHJhZ21hIHBhY2socHVzaCwgMSkKdHlwZWRlZiBzdHJ1Y3QgX1hNVF9ERVNDIHsKCXVzaG9ydAlYbXRMZW47CQkJLy8gd29yZCAwLCBiaXRzIFsxNTowXSAtICB0cmFuc21pdCBsZW5ndGgKCXVuc2lnbmVkIGNoYXIJWG10Q3RsOwkJCS8vIHdvcmQgMCwgYml0cyBbMjM6MTZdIC0gdHJhbnNtaXQgY29udHJvbCBieXRlCgl1bnNpZ25lZCBjaGFyCUNtZDsJCQkvLyB3b3JkIDAsIGJpdHMgWzMxOjI0XSAtIHRyYW5zbWl0IGNvbW1hbmQgcGx1cyBtaXNjLgoJdTMyCVhtdEJ1ZklkOwkJLy8gd29yZCAxLCBiaXRzIFszMTowXSAtICB0cmFuc21pdCBidWZmZXIgSUQKCXVuc2lnbmVkIGNoYXIJVGNwU3RydDsJCS8vIHdvcmQgMiwgYml0cyBbNzowXSAtICAgYnl0ZSBhZGRyZXNzIG9mIFRDUCBoZWFkZXIKCXVuc2lnbmVkIGNoYXIJSXBTdHJ0OwkJCS8vIHdvcmQgMiwgYml0cyBbMTU6OF0gLSAgYnl0ZSBhZGRyZXNzIG9mIElQIGhlYWRlcgoJdXNob3J0CUlwQ2tTdW07CQkvLyB3b3JkIDIsIGJpdHMgWzMxOjE2XSAtIHBhcnRpYWwgSVAgY2hlY2tzdW0KCXVzaG9ydAlUY3BDa1N1bTsJCS8vIHdvcmQgMywgYml0cyBbMTU6MF0gLSAgcGFydGlhbCBUQ1AgY2hlY2tzdW0KCXVzaG9ydAlSc3ZkMTsJCQkvLyB3b3JkIDMsIGJpdHMgWzMxOjE2XSAtIFBBRAoJdTMyCVJzdmQyOwkJCS8vIHdvcmQgNCwgYml0cyBbMzE6MF0gLSAgUEFECgl1MzIJUnN2ZDM7CQkJLy8gd29yZCA1LCBiaXRzIFszMTowXSAtICBQQUQKCXUzMglSc3ZkNDsJCSAgICAvLyB3b3JkIDYsIGJpdHMgWzMxOjBdIC0gIFBBRAoJdTMyCVJzdmQ1OwkJICAgIC8vIHdvcmQgNywgYml0cyBbMzE6MF0gLSAgUEFECn0gWE1UX0RFU0MsICpQWE1UX0RFU0M7CiNwcmFnbWEgcGFjayhwb3ApCgovLyBYTVRfREVTQyBDbWQgYnl0ZSBkZWZpbml0aW9ucwoJCS8vIGNvbW1hbmQgY29kZXMKI2RlZmluZSBYTVRfREVTQ19DTURfUkFXX1NFTkQJCTAJCS8vIHJhdyBzZW5kIGRlc2NyaXB0b3IKI2RlZmluZSBYTVRfREVTQ19DTURfQ1NVTV9JTlNFUlQJMQkJLy8gY2hlY2tzdW0gaW5zZXJ0IGRlc2NyaXB0b3IKI2RlZmluZSBYTVRfREVTQ19DTURfRk9STUFUCQkyCQkvLyBmb3JtYXQgZGVzY3JpcHRvcgojZGVmaW5lIFhNVF9ERVNDX0NNRF9QUklNRQkJMwkJLy8gcHJpbWUgZGVzY3JpcHRvcgojZGVmaW5lIFhNVF9ERVNDX0NNRF9DT0RFX1NIRlQJCTYJCS8vIGNvbWFuZCBjb2RlIHNoaWZ0IChzaGlmdCB0byBiaXRzIFszMTozMF0gaW4gd29yZCAwKQoJCS8vIHNoaWZ0ZWQgY29tbWFuZCBjb2RlcwojZGVmaW5lIFhNVF9SQVdfU0VORAkJKFhNVF9ERVNDX0NNRF9SQVdfU0VORCAgICA8PCBYTVRfREVTQ19DTURfQ09ERV9TSEZUKQojZGVmaW5lIFhNVF9DU1VNX0lOU0VSVAkJKFhNVF9ERVNDX0NNRF9DU1VNX0lOU0VSVCA8PCBYTVRfREVTQ19DTURfQ09ERV9TSEZUKQojZGVmaW5lIFhNVF9GT1JNQVQJCQkoWE1UX0RFU0NfQ01EX0ZPUk1BVCAgICAgIDw8IFhNVF9ERVNDX0NNRF9DT0RFX1NIRlQpCiNkZWZpbmUgWE1UX1BSSU1FCQkJKFhNVF9ERVNDX0NNRF9QUklNRSAgICAgICA8PCBYTVRfREVTQ19DTURfQ09ERV9TSEZUKQoKLy8gWE1UX0RFU0MgQ29udHJvbCBCeXRlIChYbXRDdGwpIGRlZmluaXRpb25zCi8vIE5PVEU6ICBUaGVzZSBiaXRzIGRvIG5vdCB3b3JrIG9uIFNhaGFyYSAoUmV2IEEpIQojZGVmaW5lCVhNVF9DVExfUEFVU0VfRlJBTUUJCTB4ODAJLy8gY3VycmVudCBmcmFtZSBpcyBhIHBhdXNlIGNvbnRyb2wgZnJhbWUgKGZvciBzdGF0aXN0aWNzKQojZGVmaW5lCVhNVF9DVExfQ09OVFJPTF9GUkFNRQkJMHg0MAkvLyBjdXJyZW50IGZyYW1lIGlzIGEgY29udHJvbCBmcmFtZSAoZm9yIHN0YXRpc3RpY3MpCiNkZWZpbmUJWE1UX0NUTF9QRVJfUEtUX1FVQUwJCTB4MjAJLy8gcGVyIHBhY2tldCBxdWFsaWZpZXIKI2RlZmluZQlYTVRfQ1RMX1BBRF9NT0RFX05PTkUJCTB4MDAJLy8gZG8gbm90IHBhZCBmcmFtZQojZGVmaW5lCVhNVF9DVExfUEFEX01PREVfNjQJCTB4MDgJLy8gcGFkIGZyYW1lIHRvIDY0IGJ5dGVzCiNkZWZpbmUJWE1UX0NUTF9QQURfTU9ERV9WTEFOXzY4CTB4MTAJLy8gcGFkIGZyYW1lIHRvIDY0IGJ5dGVzLCBhbmQgVkxBTiBmcmFtZXMgdG8gNjggYnl0ZXMKI2RlZmluZQlYTVRfQ1RMX1BBRF9NT0RFXzY4CQkweDE4CS8vIHBhZCBmcmFtZSB0byA2OCBieXRlcwojZGVmaW5lCVhNVF9DVExfR0VOX0ZDUwkJCTB4MDQJLy8gZ2VuZXJhdGUgRkNTIChDUkMpIGZvciB0aGlzIGZyYW1lCiNkZWZpbmUJWE1UX0NUTF9ERUxBWV9GQ1NfMAkJMHgwMAkvLyBkbyBub3QgZGVsYXkgRkNTIGNhbGN1dGlvbgojZGVmaW5lCVhNVF9DVExfREVMQVlfRkNTXzEJCTB4MDEJLy8gZGVsYXkgRkNTIGNhbGN1bGF0aW9uIGJ5IDEgKDQtYnl0ZSkgd29yZAojZGVmaW5lCVhNVF9DVExfREVMQVlfRkNTXzIJCTB4MDIJLy8gZGVsYXkgRkNTIGNhbGN1bGF0aW9uIGJ5IDIgKDQtYnl0ZSkgd29yZHMKI2RlZmluZQlYTVRfQ1RMX0RFTEFZX0ZDU18zCQkweDAzCS8vIGRlbGF5IEZDUyBjYWxjdWxhdGlvbiBieSAzICg0LWJ5dGUpIHdvcmRzCgovLyBYTVRfREVTQyBYbXRCdWZJZCBkZWZpbml0aW9uCiNkZWZpbmUgWE1UX0JVRl9JRF9TSEZUCQk4CS8vIFRoZSBYbXQgYnVmZmVyIElEIGlzIGZvcm1lZCBieSBkaXZpZGluZwoJCQkJCS8vIHRoZSBidWZmZXIgKERSQU0pIGFkZHJlc3MgYnkgMjU2IChvciA8PCA4KQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFJlY2VpdmVyIFNlcXVlbmNlciBEZWZpbml0aW9ucwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovLyBSZWNlaXZlIEV2ZW50IFF1ZXVlIChxdWV1ZXMgMyAtIDYpIGJpdCBkZWZpbml0aW9ucwojZGVmaW5lCVJDVl9FVlRRX1JCRklEX01BU0sJCTB4MDAwMEZGRkYJLy8gYml0IG1hc2sgZm9yIHRoZSBSZWNlaXZlIEJ1ZmZlciBJRAoKLy8gUmVjZWl2ZSBCdWZmZXIgSUQgZGVmaW5pdGlvbgojZGVmaW5lIFJDVl9CVUZfSURfU0hGVAkJNQkvLyBUaGUgUmN2IGJ1ZmZlciBJRCBpcyBmb3JtZWQgYnkgZGl2aWRpbmcKCQkJCQkvLyB0aGUgYnVmZmVyIChEUkFNKSBhZGRyZXNzIGJ5IDMyIChvciA8PCA1KQoKLy8gRm9ybWF0IG9mIHRoZSAxOCBieXRlIFJlY2VpdmUgQnVmZmVyIHJldHVybmVkIGJ5IHRoZQovLyBSZWNlaXZlIFNlcXVlbmNlciBmb3IgcmVjZWl2ZWQgcGFja2V0cwojcHJhZ21hIHBhY2socHVzaCwgMSkKdHlwZWRlZiBzdHJ1Y3QgX1JDVl9CVUZfSERSIHsKCXUzMglTdGF0dXM7CQkJCS8vIFN0YXR1cyB3b3JkIGZyb20gUmN2IFNlcSBQYXJzZXIKCXVzaG9ydAlMZW5ndGg7CQkJCS8vIFJjdiBwYWNrZXQgYnl0ZSBjb3VudAoJdW5pb24gewoJCXVzaG9ydAkJVGNwQ3N1bTsJLy8gVENQIGNoZWNrc3VtCgkJc3RydWN0IHsKCQkJdW5zaWduZWQgY2hhcglUY3BDc3VtTDsJLy8gbG93ZXIgOCBiaXRzIG9mIHRoZSBUQ1AgY2hlY2tzdW0KCQkJdW5zaWduZWQgY2hhcglMaW5rSGFzaDsJLy8gTGluayBoYXNoIChtdWx0aWNhc3QgZnJhbWVzIG9ubHkpCgkJfTsKCX07Cgl1c2hvcnQJU2t0SGFzaDsJCQkvLyBTb2NrZXQgaGFzaAoJdW5zaWduZWQgY2hhcglUY3BIZHJPZmZzZXQ7CQkvLyBUQ1AgaGVhZGVyIG9mZnNldCBpbnRvIHBhY2tldAoJdW5zaWduZWQgY2hhcglJcEhkck9mZnNldDsJCS8vIElQIGhlYWRlciBvZmZzZXQgaW50byBwYWNrZXQKCXUzMglUcHpIYXNoOwkJCS8vIFRvZXBsaXR6IGhhc2gKCXVzaG9ydAlSZXNlcnZlZDsJCQkvLyBSZXNlcnZlZAp9IFJDVl9CVUZfSERSLCAqUFJDVl9CVUZfSERSOwojcHJhZ21hIHBhY2socG9wKQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBRdWV1ZSBkZWZpbml0aW9ucwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBJbmdyZXNzIChyZWFkIG9ubHkpIHF1ZXVlIG51bWJlcnMgKi8KI2RlZmluZSBQWFlfQlVGX1EJCTAJCS8qIFByb3h5IEJ1ZmZlciBRdWV1ZSAqLwojZGVmaW5lIEhTVF9FVlRfUQkJMQkJLyogSG9zdCBFdmVudCBRdWV1ZSAqLwojZGVmaW5lIFhNVF9CVUZfUQkJMgkJLyogVHJhbnNtaXQgQnVmZmVyIFF1ZXVlICovCiNkZWZpbmUgU0tUX0VWTF9RCQkzCQkvKiBSY3ZTcXIgU29ja2V0IEV2ZW50IExvdyBQcmlvcml0eSBRdWV1ZSAqLwojZGVmaW5lIFJDVl9FVkxfUQkJNAkJLyogUmN2U3FyIFJjdiBFdmVudCBMb3cgUHJpb3JpdHkgUXVldWUgKi8KI2RlZmluZSBTS1RfRVZIX1EJCTUJCS8qIFJjdlNxciBTb2NrZXQgRXZlbnQgSGlnaCBQcmlvcml0eSBRdWV1ZSAqLwojZGVmaW5lIFJDVl9FVkhfUQkJNgkJLyogUmN2U3FyIFJjdiBFdmVudCBIaWdoIFByaW9yaXR5IFF1ZXVlICovCiNkZWZpbmUgRE1BX1JTUF9RCQk3CQkvKiBEbWEgUmVzcG9uc2UgUXVldWUgLSBvbmUgcGVyIENQVSBjb250ZXh0ICovCi8qIExvY2FsIChyZWFkL3dyaXRlKSBxdWV1ZSBudW1iZXJzICovCiNkZWZpbmUgTE9DQUxfQV9RCQk4CQkvKiBTcGFyZSBsb2NhbCBRdWV1ZSAqLwojZGVmaW5lIExPQ0FMX0JfUQkJOQkJLyogU3BhcmUgbG9jYWwgUXVldWUgKi8KI2RlZmluZSBMT0NBTF9DX1EJCTEwCQkvKiBTcGFyZSBsb2NhbCBRdWV1ZSAqLwojZGVmaW5lIEZTTV9FVlRfUQkJMTEJCS8qIEZpbml0ZS1TdGF0ZS1NYWNoaW5lIEV2ZW50IFF1ZXVlICovCiNkZWZpbmUgU0JGX1BBTF9RCQkxMgkJLyogU3lzdGVtIEJ1ZmZlciBQaHlzaWNhbCBBZGRyZXNzIChsb3cpIFF1ZXVlICovCiNkZWZpbmUgU0JGX1BBSF9RCQkxMwkJLyogU3lzdGVtIEJ1ZmZlciBQaHlzaWNhbCBBZGRyZXNzIChoaWdoKSBRdWV1ZSAqLwojZGVmaW5lIFNCRl9WQUxfUQkJMTQJCS8qIFN5c3RlbSBCdWZmZXIgVmlydHVhbCBBZGRyZXNzIChsb3cpIFF1ZXVlICovCiNkZWZpbmUgU0JGX1ZBSF9RCQkxNQkJLyogU3lzdGVtIEJ1ZmZlciBWaXJ0dWFsIEFkZHJlc3MgKGhpZ2gpIFF1ZXVlICovCi8qIEVncmVzcyAod3JpdGUgb25seSkgcXVldWUgbnVtYmVycyAqLwojZGVmaW5lIEgyR19DTURfUQkJMTYJCS8qIEhvc3QgdG8gR2xiUmFtIERNQSBDb21tYW5kIFF1ZXVlICovCiNkZWZpbmUgSDJEX0NNRF9RCQkxNwkJLyogSG9zdCB0byBEUkFNIERNQSBDb21tYW5kIFF1ZXVlICovCiNkZWZpbmUgRzJIX0NNRF9RCQkxOAkJLyogR2xiUmFtIHRvIEhvc3QgRE1BIENvbW1hbmQgUXVldWUgKi8KI2RlZmluZSBHMkRfQ01EX1EJCTE5CQkvKiBHbGJSYW0gdG8gRFJBTSBETUEgQ29tbWFuZCBRdWV1ZSAqLwojZGVmaW5lIEQySF9DTURfUQkJMjAJCS8qIERSQU0gdG8gSG9zdCBETUEgQ29tbWFuZCBRdWV1ZSAqLwojZGVmaW5lIEQyR19DTURfUQkJMjEJCS8qIERSQU0gdG8gR2xiUmFtIERNQSBDb21tYW5kIFF1ZXVlICovCiNkZWZpbmUgRDJEX0NNRF9RCQkyMgkJLyogRFJBTSB0byBEUkFNIERNQSBDb21tYW5kIFF1ZXVlICovCiNkZWZpbmUgUFhMX0NNRF9RCQkyMwkJLyogTG93IFByaW9yaXR5IFByb3h5IENvbW1hbmQgUXVldWUgKi8KI2RlZmluZSBQWEhfQ01EX1EJCTI0CQkvKiBIaWdoIFByaW9yaXR5IFByb3h5IENvbW1hbmQgUXVldWUgKi8KI2RlZmluZSBSU1FfQ01EX1EJCTI1CQkvKiBSZWNlaXZlIFNlcXVlbmNlciBDb21tYW5kIFF1ZXVlICovCiNkZWZpbmUgUkNWX0JVRl9RCQkyNgkJLyogUmVjZWl2ZSBCdWZmZXIgUXVldWUgKi8KCi8qIEJpdCBkZWZpbml0aW9ucyBmb3IgdGhlIFByb3h5IENvbW1hbmQgcXVldWVzIChQWExfQ01EX1EgYW5kIFBYSF9DTURfUSkgKi8KI2RlZmluZSBQWFlfQ09QWV9FTgkJMHgwMDIwMDAwMAkJLyogZW5hYmxlIGNvcHkgb2YgeG10IGRlc2NyaXB0b3IgdG8geG10IGNvbW1hbmQgcXVldWUgKi8KI2RlZmluZSBQWFlfU0laRV8xNgkJMHgwMDAwMDAwMAkJLyogY29weSAxNiBieXRlcyAqLwojZGVmaW5lIFBYWV9TSVpFXzMyCQkweDAwMTAwMDAwCQkvKiBjb3B5IDMyIGJ5dGVzICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogU1hHIEVFUFJPTS9GbGFzaCBDb25maWd1cmF0aW9uIERlZmluaXRpb25zCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI3ByYWdtYSBwYWNrKHB1c2gsIDEpCgovKiAqLwp0eXBlZGVmIHN0cnVjdCBfSFdfQ0ZHX0RBVEEgewoJdXNob3J0CQlBZGRyOwoJdW5pb24gewoJCXVzaG9ydAlEYXRhOwoJCXVzaG9ydAlDaGVja3N1bTsKCX07Cn0gSFdfQ0ZHX0RBVEEsICpQSFdfQ0ZHX0RBVEE7CgovKiAqLwojZGVmaW5lCU5VTV9IV19DRkdfRU5UUklFUwkoKDEyOC9zaXplb2YoSFdfQ0ZHX0RBVEEpKSAtIDQpCgovKiBNQUMgYWRkcmVzcyAqLwp0eXBlZGVmIHN0cnVjdCBfU1hHX0NPTkZJR19NQUMgewoJdW5zaWduZWQgY2hhcgkJTWFjQWRkcls2XTsJCQkvKiBNQUMgQWRkcmVzcyAqLwp9IFNYR19DT05GSUdfTUFDLCAqUFNYR19DT05GSUdfTUFDOwoKLyogKi8KdHlwZWRlZiBzdHJ1Y3QgX0FUS19GUlUgewoJdW5zaWduZWQgY2hhcgkJUGFydE51bVs2XTsKCXVuc2lnbmVkIGNoYXIJCVJldmlzaW9uWzJdOwoJdW5zaWduZWQgY2hhcgkJU2VyaWFsWzE0XTsKfSBBVEtfRlJVLCAqUEFUS19GUlU7CgovKiBPRU0gRlJVIEZvcm1hdCB0eXBlcyAqLwojZGVmaW5lCUFUS19GUlVfRk9STUFUCQkweDAwMDAKI2RlZmluZSBDUFFfRlJVX0ZPUk1BVAkJMHgwMDAxCiNkZWZpbmUgREVMTF9GUlVfRk9STUFUCQkweDAwMDIKI2RlZmluZSBIUF9GUlVfRk9STUFUCQkweDAwMDMKI2RlZmluZSBJQk1fRlJVX0ZPUk1BVAkJMHgwMDA0CiNkZWZpbmUgRU1DX0ZSVV9GT1JNQVQJCTB4MDAwNQojZGVmaW5lIE5PX0ZSVV9GT1JNQVQJCTB4RkZGRgoKLyogRUVQUk9NL0ZsYXNoIEZvcm1hdCAqLwp0eXBlZGVmIHN0cnVjdCBfU1hHX0NPTkZJRyB7CgkvKiAqLwoJLyogU2VjdGlvbiAxICgxMjggYnl0ZXMpICovCgkvKiAqLwoJdXNob3J0CQkJTWFnaWNXb3JkOwkJCS8qIEVFUFJPTS9GTEFTSCBNYWdpYyBjb2RlICdBNUE1JyAqLwoJdXNob3J0CQkJU3BpQ2xrczsJCQkvKiBTUEkgYnVzIGNsb2NrIGRpdmlkZXJzICovCglIV19DRkdfREFUQQkJSHdDZmdbTlVNX0hXX0NGR19FTlRSSUVTXTsKCS8qICovCgkvKiAqLwoJLyogKi8KCXVzaG9ydAkJCVZlcnNpb247CQkJLyogRUVQUk9NIGZvcm1hdCB2ZXJzaW9uICovCglTWEdfQ09ORklHX01BQwlNYWNBZGRyWzRdOwkJCS8qIHNwYWNlIGZvciA0IE1BQyBhZGRyZXNzZXMgKi8KCUFUS19GUlUJCQlBdGtGcnU7CQkJCS8qIEZSVSBpbmZvcm1hdGlvbiAqLwoJdXNob3J0CQkJT2VtRnJ1Rm9ybWF0OwkJLyogT0VNIEZSVSBmb3JtYXQgdHlwZSAqLwoJdW5zaWduZWQgY2hhcgkJCU9lbUZydVs3Nl07CQkJLyogT0VNIEZSVSBpbmZvcm1hdGlvbiAob3B0aW9uYWwpICovCgl1c2hvcnQJCQlDaGVja3N1bTsJCQkvKiBDaGVja3N1bSBvZiBzZWN0aW9uIDIgKi8KCS8qIENTIGluZm8gWFhYVE9ETyAqLwp9IFNYR19DT05GSUcsICpQU1hHX0NPTkZJRzsKI3ByYWdtYSBwYWNrKHBvcCkKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBNaXNjZWxsYW5lb3VzIEhhcmR3YXJlIGRlZmluaXRpb25zCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8vIFNhaGFyYSAoQVNJQyBsZXZlbCkgZGVmaW5lcwojZGVmaW5lIFNBSEFSQV9HUkFNX1NJWkUJCTB4MDIwMDAwCQkvLyBHUkFNIHNpemUgLSAxMjggS0IKI2RlZmluZSBTQUhBUkFfRFJBTV9TSVpFCQkweDIwMDAwMAkJLy8gRFJBTSBzaXplIC0gMiBNQgojZGVmaW5lIFNBSEFSQV9RUkFNX1NJWkUJCTB4MDA0MDAwCQkvLyBRUkFNIHNpemUgLSAxNksgZW50cmllcyAoNjQgS0IpCiNkZWZpbmUgU0FIQVJBX1dDU19TSVpFCQkJMHgwMDIwMDAJCS8vIFdDUyAtIDhLIGluc3RydWN0aW9ucyAoeCAxMDggYml0cykKCi8vIEFyYWJpYSAoYm9hcmQgbGV2ZWwpIGRlZmluZXMKI2RlZmluZQlGTEFTSF9TSVpFCQkJMHgwODAwMDAJCS8vIDUxMiBLQiAoNCBNYikKI2RlZmluZQlFRVBST01fU0laRV9YRk1SCQk1MTIJCQkvLyB0cnVlIEVFUFJPTSBzaXplIChieXRlcyksIGluY2x1ZGluZyB4Zm1yIGFyZWEKI2RlZmluZQlFRVBST01fU0laRV9OT19YRk1SCQkyNTYJCQkvLyBFRVBST00gc2l6ZSBleGNsdWRpbmcgeGZtciBhcmVhCg==