LyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCiAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCiAqIHRoYXQgbWF5IGFwcGx5OgogKi8KLyoKICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKICogQ29weXJpZ2h0IKkgMjAwMyBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICovCi8qCiAqIE5vdGU6CiAqICAgIElmIG5ldyBkZWZhdWx0X3N0b3JlIGVudHJpZXMgYXJlIGFkZGVkIHRvIHRoaXMgaGVhZGVyIGZpbGUsCiAqICAgIHRoZW4gcmVtZW1iZXIgdG8gcnVuICdwZXJsL2RlZmF1bHRfc3RvcmUvZ2VuJyB0byB1cGRhdGUgdGhlCiAqICAgIGNvcnJlc3BvbmRpbmcgcGVybCBpbnRlcmZhY2UuCiAqLwovKgogKiBAZmlsZSBkZWZhdWx0X3N0b3JlLmg6IHN0b3JhZ2Ugc3BhY2UgZm9yIGRlZmF1bHRzCiAqCiAqIEBhZGR0b2dyb3VwIGRlZmF1bHRfc3RvcmUKICoKICogQHsKICovCiNpZm5kZWYgREVGQVVMVF9TVE9SRV9ICiNkZWZpbmUgREVGQVVMVF9TVE9SRV9ICgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICAgICAgICAgICJDIiB7CiNlbmRpZgoKI2RlZmluZSBORVRTTk1QX0RTX01BWF9JRFMgMwojZGVmaW5lIE5FVFNOTVBfRFNfTUFYX1NVQklEUyA0OCAgICAgICAgLyogbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA4ICovCgogICAgLyoKICAgICAqIGJlZ2luIHN0b3JhZ2UgZGVmaW5pdGlvbnMgCiAgICAgKi8KLyoqCiAqIEBkZWYgTkVUU05NUF9EU19MSUJSQVJZX0lECiAqIFRoZXNlIGRlZmluaXRpb25zIGNvcnJlc3BvbmQgd2l0aCB0aGUgInN0b3JpZCIgYXJndW1lbnQgdG8gdGhlIEFQSSAKICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJSQVJZX0lEICAgICAwCiNkZWZpbmUgTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCAxCiNkZWZpbmUgTkVUU05NUF9EU19UT0tFTl9JRCAgICAgICAyCgogICAgLyoKICAgICAqIFRoZXNlIGRlZmluaXRpb25zIGNvcnJlc3BvbmQgd2l0aCB0aGUgIndoaWNoIiBhcmd1bWVudCB0byB0aGUgQVBJLAogICAgICogd2hlbiB0aGUgc3RvcmVpZCBhcmd1bWVudCBpcyBORVRTTk1QX0RTX0xJQlJBUllfSUQgCiAgICAgKi8KICAgIC8qCiAgICAgKiBsaWJyYXJ5IGJvb2xlYW5zIAogICAgICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCX0VSUk9SUyAgICAgICAgICAwCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0FWRV9NSUJfREVTQ1JTICAgICAxCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCX0NPTU1FTlRfVEVSTSAgICAyCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCX1BBUlNFX0xBQkVMICAgICAzCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQgICAgICAgICA0CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfTE9HX1RJTUVTVEFNUCAgICAgICA1CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfRE9OVF9SRUFEX0NPTkZJR1MgICA2ICAgIC8qIGRvbid0IHJlYWQgbm9ybWFsIGNvbmZpZyBmaWxlcyAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0RJU0FCTEVfQ09ORklHX0xPQUQgICAgICBORVRTTk1QX0RTX0xJQl9ET05UX1JFQURfQ09ORklHUwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX01JQl9SRVBMQUNFICAgICAgICAgNyAgICAvKiByZXBsYWNlIG9iamVjdHMgZnJvbSBsYXRlc3QgbW9kdWxlICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfUFJJTlRfTlVNRVJJQ19FTlVNICA4ICAgIC8qIHByaW50IG9ubHkgbnVtZXJpYyBlbnVtIHZhbHVlcyAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSU5UX05VTUVSSUNfT0lEUyAgOSAgICAvKiBwcmludCBvbmx5IG51bWVyaWMgZW51bSB2YWx1ZXMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ET05UX0JSRUFLRE9XTl9PSURTIDEwICAgLyogZG9udCBwcmludCBvaWQgaW5kZXhlcyBzcGVjaWFsbHkgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9BTEFSTV9ET05UX1VTRV9TSUcgIDExICAgLyogZG9uJ3QgdXNlIHRoZSBhbGFybSgpIHNpZ25hbCAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSU5UX0ZVTExfT0lEICAgICAgMTIgICAvKiBwcmludCBmdWxseSBxdWFsaWZpZWQgb2lkcyAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5UICAgICAgICAgMTMgICAvKiBwcmludCB2ZXJ5IGJyaWVmIG91dHB1dCBmb3IgcGFyc2luZyAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1JBTkRPTV9BQ0NFU1MJICAgMTQgICAvKiByYW5kb20gYWNjZXNzIHRvIG9pZCBsYWJlbHMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9SRUdFWF9BQ0NFU1MJICAgMTUgICAvKiByZWdleCBtYXRjaGluZyB0byBvaWQgbGFiZWxzICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfRE9OVF9DSEVDS19SQU5HRSAgICAxNiAgIC8qIGRvbid0IGNoZWNrIHZhbHVlcyBmb3IgcmFuZ2VzIG9uIHNlbmQgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OT19UT0tFTl9XQVJOSU5HUyAgIDE3ICAgLyogbm8gd2FybiBhYm91dCB1bmtub3duIGNvbmZpZyB0b2tlbnMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OVU1FUklDX1RJTUVUSUNLUyAgIDE4ICAgLyogcHJpbnQgdGltZXRpY2tzIGFzIGEgbnVtYmVyICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfRVNDQVBFX1FVT1RFUyAgICAgICAxOSAgIC8qIHNoZWxsIGVzY2FwZSBxdW90ZSBtYXJrcyBpbiBvaWRzICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfUkVWRVJTRV9FTkNPREUgICAgICAyMCAgIC8qIGVuY29kZSBwYWNrZXRzIGZyb20gYmFjayB0byBmcm9udCAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSU5UX0JBUkVfVkFMVUUJICAgMjEgICAvKiBqdXN0IHByaW50IHZhbHVlIChub3QgT0lEID0gdmFsdWUpICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfRVhURU5ERURfSU5ERVgJICAgMjIgICAvKiBwcmludCBleHRlbmRlZCBpbmRleCBmb3JtYXQgW3gxXVt4Ml0gKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9QUklOVF9IRVhfVEVYVCAgICAgIDIzICAgLyogcHJpbnQgQVNDSUkgdGV4dCBhbG9uZyB3aXRoIGhleCBzdHJpbmdzICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfUFJJTlRfVUNEX1NUWUxFX09JRCAyNCAgIC8qIHByaW50IE9JRCdzIHVzaW5nIHRoZSBVQ0Qtc3R5bGUgcHJlZml4IHN1cHByZXNzaW9uICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfUkVBRF9VQ0RfU1RZTEVfT0lEICAyNSAgIC8qIHJlcXVpcmUgdG9wLWxldmVsIE9JRHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBhIGRvdCAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0hBVkVfUkVBRF9QUkVNSUJfQ09ORklHIDI2ICAgICAgIC8qIGhhdmUgdGhlIHByZS1taWIgcGFyc2luZyBjb25maWcgdG9rZW5zIGJlZW4gcHJvY2Vzc2VkICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfSEFWRV9SRUFEX0NPTkZJRyAgICAyNyAgIC8qIGhhdmUgdGhlIGNvbmZpZyB0b2tlbnMgYmVlbiBwcm9jZXNzZWQgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9RVUlDS0VfUFJJTlQgICAgICAgIDI4ICAgCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfRE9OVF9QUklOVF9VTklUUyAgICAyOSAvKiBkb24ndCBwcmludCBVTklUUyBzdWZmaXggKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OT19ESVNQTEFZX0hJTlQgICAgIDMwIC8qIGRvbid0IGFwcGx5IERJU1BMQVktSElOVHMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl8xNkJJVF9JRFMgICAgICAgICAgIDMxICAgLyogcmVzdHJpY3QgcmVxdWVzdElEcywgZXRjIHRvIDE2LWJpdCB2YWx1ZXMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ET05UX1BFUlNJU1RfU1RBVEUgIDMyCS8qIGRvbid0IGxvYWQgY29uZmlnIGFuZCBkb24ndCBsb2FkL3NhdmUgcGVyc2lzdGVudCBmaWxlICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfMkRJR0lUX0hFWF9PVVRQVVQgICAzMwkvKiBwcmludCBhIGxlYWRpbmcgMCBvbiBoZXggdmFsdWVzIDw9ICdmJyAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0lHTk9SRV9OT19DT01NVU5JVFkgMzQJLyogZG9uJ3QgY29tcGxhaW4gaWYgbm8gY29tbXVuaXR5IGlzIHNwZWNpZmllZCBpbiB0aGUgY29tbWFuZCBhcmd1bWVudHMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ESVNBQkxFX1BFUlNJU1RFTlRfTE9BRCAgMzUgLyogZG9uJ3QgbG9hZCBwZXJzaXN0ZW50IGZpbGUgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ESVNBQkxFX1BFUlNJU1RFTlRfU0FWRSAgMzYgLyogZG9uJ3Qgc2F2ZSBwZXJzaXN0ZW50IGZpbGUgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9BUFBFTkRfTE9HRklMRVMgICAgIDM3IC8qIGFwcGVuZCwgZG9uJ3Qgb3ZlcndyaXRlLCBsb2cgZmlsZXMgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OT19ESVNDT1ZFUlkgICAgICAgIDM4IC8qIGRvbid0IHN1cHBvcnQgUkZDNTM0MyBjb250ZXh0RW5naW5lSUQgZGlzY292ZXJ5ICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfVFNNX1VTRV9QUkVGSVggICAgICAzOSAvKiBUU00ncyBzaW1wbGUgc2VjdXJpdHkgbmFtZSBtYXBwaW5nICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQUxMT1dfU0VMRl9TSUdORUQgICA0MCAvKiBDZXJ0cyBmb3IgRFRMUyAqLwoKICAgIC8qCiAgICAgKiBsaWJyYXJ5IGludGVnZXJzIAogICAgICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCX1dBUk5JTkdTICAgICAgICAgMAojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFQ0xFVkVMICAgICAgICAgICAgIDEKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTiAgICAgICAgICAyCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfREVGQVVMVF9QT1JUICAgICAgICAgMwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUICAgIDQKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9QUklOVF9TVUZGSVhfT05MWSAgICBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVAojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NUUklOR19PVVRQVVRfRk9STUFUIDUKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9IRVhfT1VUUFVUX0xFTkdUSCAgICA2CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VSVkVSU0VOREJVRiAgICAgICAgNyAvKiBzZW5kIGJ1ZmZlciAoc2VydmVyKSAqLwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlJFQ1ZCVUYgICAgICAgIDggLyogcmVjZWl2ZSBidWZmZXIgKHNlcnZlcikgKi8KI2RlZmluZSBORVRTTk1QX0RTX0xJQl9DTElFTlRTRU5EQlVGICAgICAgICA5IC8qIHNlbmQgYnVmZmVyIChjbGllbnQpICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ0xJRU5UUkVDVkJVRiAgICAgICAxMCAvKiByZWNlaXZlIGJ1ZmZlciAoY2xpZW50KSAqLwojZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfUEVSTSAgICAgMTEKI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9ESVJfUEVSTSAgICAgIDEyCiNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19VU0VSICAgICAxMgojZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfR1JPVVAgICAgMTMKICAgIAogICAgLyoKICAgICAqIHNwZWNpYWwgbWVhbmluZ3MgZm9yIHRoZSBkZWZhdWx0IFNOTVAgdmVyc2lvbiBzbG90IChORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTikgCiAgICAgKi8KI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU05NUFYxCiNkZWZpbmUgTkVUU05NUF9EU19TTk1QX1ZFUlNJT05fMSAgICAxMjggICAgICAgIC8qIGJvZ3VzICovCiNlbmRpZgojaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiNkZWZpbmUgTkVUU05NUF9EU19TTk1QX1ZFUlNJT05fMmMgICAxICAvKiByZWFsICovCiNlbmRpZgojZGVmaW5lIE5FVFNOTVBfRFNfU05NUF9WRVJTSU9OXzMgICAgMyAgLyogcmVhbCAqLwoKCiAgICAvKgogICAgICogbGlicmFyeSBzdHJpbmdzIAogICAgICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VDTkFNRSAgICAgICAgICAgMAojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NPTlRFWFQgICAgICAgICAgIDEKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9QQVNTUEhSQVNFICAgICAgICAyCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQVVUSFBBU1NQSFJBU0UgICAgMwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSVZQQVNTUEhSQVNFICAgIDQKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9PUFRJT05BTENPTkZJRyAgICA1CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQVBQVFlQRSAgICAgICAgICAgNgojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NPTU1VTklUWSAgICAgICAgIDcKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9QRVJTSVNURU5UX0RJUiAgICA4CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ09ORklHVVJBVElPTl9ESVIgOQojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFQ01PREVMICAgICAgICAgIDEwCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCRElSUyAgICAgICAgICAgMTEKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9PSURTVUZGSVggICAgICAgICAxMgojZGVmaW5lIE5FVFNOTVBfRFNfTElCX09JRFBSRUZJWCAgICAgICAgIDEzCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ0xJRU5UX0FERFIgICAgICAgMTQKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9URU1QX0ZJTEVfUEFUVEVSTiAxNQojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0FVVEhNQVNURVJLRVkgICAgIDE2CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfUFJJVk1BU1RFUktFWSAgICAgMTcKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9BVVRITE9DQUxJWkVES0VZICAxOAojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSVZMT0NBTElaRURLRVkgIDE5CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfQVBQVFlQRVMgICAgICAgICAgMjAKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9LU01fS0VZVEFCICAgICAgICAyMQojZGVmaW5lIE5FVFNOTVBfRFNfTElCX0tTTV9TRVJWSUNFX05BTUUgIDIyCi8qIGZvciB0aGUgY2xpZW50ICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCICAgMjMKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QUklWICAyNAojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX0NFUlRTIDI1Ci8qIGZvciB0aGUgc2VydmVyICovCiNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCICAgMjYKI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QUklWICAyNwojZGVmaW5lIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX0NFUlRTIDI4CiNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCAgMjkKCiAgICAvKgogICAgICogZW5kIHN0b3JhZ2UgZGVmaW5pdGlvbnMgCiAgICAgKi8KCiAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihpbnQgc3RvcmVpZCwgaW50IHdoaWNoLCBpbnQgdmFsdWUpOwogICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oaW50IHN0b3JlaWQsIGludCB3aGljaCk7CiAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihpbnQgc3RvcmVpZCwgaW50IHdoaWNoKTsKICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoaW50IHN0b3JlaWQsIGludCB3aGljaCwgaW50IHZhbHVlKTsKICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoaW50IHN0b3JlaWQsIGludCB3aGljaCk7CiAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKGludCBzdG9yZWlkLCBpbnQgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZSk7CiAgICBjaGFyICAgICAgICAgICAqbmV0c25tcF9kc19nZXRfc3RyaW5nKGludCBzdG9yZWlkLCBpbnQgd2hpY2gpOwogICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X3ZvaWQoaW50IHN0b3JlaWQsIGludCB3aGljaCwgdm9pZCAqdmFsdWUpOwogICAgdm9pZCAgICAgICAgICAgKm5ldHNubXBfZHNfZ2V0X3ZvaWQoaW50IHN0b3JlaWQsIGludCB3aGljaCk7CiAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcodV9jaGFyIHR5cGUsIGNvbnN0IGNoYXIgKmZ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwgaW50IHN0b3JlaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aGljaCk7CiAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9wcmVtaWIodV9jaGFyIHR5cGUsIGNvbnN0IGNoYXIgKmZ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwgaW50IHN0b3JlaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aGljaCk7CiAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNoYXIgKmxpbmUpOwogICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfZHNfc2h1dGRvd24odm9pZCk7CgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5kaWYKI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERUZBVUxUX1NUT1JFX0ggKi8KLyoqIEB9ICovCg==