From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stas Sergeev Subject: sound patch Date: Wed, 23 Sep 2009 17:40:37 +0400 Message-ID: <4ABA2555.6010100@aknet.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050102060301020100070203" Return-path: Sender: linux-msdos-owner@vger.kernel.org List-ID: To: dosemu Cc: Stas Sergeev This is a multi-part message in MIME format. --------------050102060301020100070203 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello. I extracted the sound code from my 3 years old local dosemu branch and re-diffed it against the current svn. This took lot of a hand-work, so the mistakes are possible. A quick test shows that the adlib now works on x86-64. But many progs (non-adlib ones) are still mute because the cpuemu doesn't exit after every port I/O the way vm86() did. The result is that run_irqs() doesn't come in time. If someone is willing to work on this, here's the patch. --------------050102060301020100070203 Content-Type: text/plain; name="sound.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="sound.diff" LS0tIHNyYy9iYXNlL2Rldi9zYjE2L2FkbGliLmMJMjAwOS0wOS0yMyAxMzo0NTo0NS4wMDAw MDAwMDAgKzA0MDAKKysrIHNyYy9iYXNlL2Rldi9zYjE2L2FkbGliLmMJMjAwOC0wMy0wNiAx MToyNjozOC4wMDAwMDAwMDAgKzAzMDAKQEAgLTM5LDYgKzM5LDcgQEAKICNkZWZpbmUgQURM SUJfQkFTRSAweDM4OAogI2RlZmluZSBPUEwzX0lOVEVSTkFMX0ZSRVEgICAgMTQ0MDAwMDAJ Ly8gVGhlIE9QTDMgb3BlcmF0ZXMgYXQgMTQuNE1IegogI2RlZmluZSBPUEwzX01BWF9CVUYg NTEyCisjZGVmaW5lIEFETElCX0NIQU5ORUxTIDIKIAogI2RlZmluZSBBRExJQl9USFJFU0hP TEQgMjAwMDAwMAogI2RlZmluZSBBRExJQl9SVU5OSU5HKCkgKGFkbGliX3RpbWVfY3VyID4g MCkKQEAgLTY0LDExICs2NSwxNSBAQAogCiBCaXQ4dSBhZGxpYl9pb19yZWFkX2Jhc2UoaW9w b3J0X3QgcG9ydCkKIHsKKyAgICBCaXQ4dSByZXQ7CiAjaWZkZWYgSEFTX1lNRjI2MgotICAg IHJldHVybiBZTUYyNjJSZWFkKG9wbDMsIHBvcnQpOworICAgIGFkbGliX3RpbWVyKCk7Cisg ICAgcmV0ID0gWU1GMjYyUmVhZChvcGwzLCBwb3J0KTsKICNlbHNlCi0gICAgcmV0dXJuIDB4 ZmY7CisgICAgcmV0ID0gMHhmZjsKICNlbmRpZgorICAgIFNfcHJpbnRmKCJBZGxpYjogUmVh ZCAlaGh4IGZyb20gcG9ydCAleFxuIiwgcmV0LCBwb3J0KTsKKyAgICByZXR1cm4gcmV0Owog fQogCiBzdGF0aWMgQml0OHUgYWRsaWJfaW9fcmVhZChpb3BvcnRfdCBwb3J0KQpAQCAtNzks OCArODQsMTAgQEAKIHZvaWQgYWRsaWJfaW9fd3JpdGVfYmFzZShpb3BvcnRfdCBwb3J0LCBC aXQ4dSB2YWx1ZSkKIHsKICAgICBhZGxpYl90aW1lX2xhc3QgPSBHRVR1c1RJTUUoMCk7Cisg ICAgU19wcmludGYoIkFkbGliOiBXcml0ZSAlaGh4IHRvIHBvcnQgJXhcbiIsIHZhbHVlLCBw b3J0KTsKICNpZmRlZiBIQVNfWU1GMjYyCiAgICAgWU1GMjYyV3JpdGUob3BsMywgcG9ydCwg dmFsdWUpOworICAgIGFkbGliX3RpbWVyKCk7CiAjZW5kaWYKIH0KIApAQCAtOTMsOCArMTAw LDEwIEBACiBzdGF0aWMgdm9pZCBvcGwzX3NldF90aW1lcih2b2lkICpwYXJhbSwgaW50IG51 bSwgZG91YmxlIGludGVydmFsX1NlYykKIHsKICAgICBsb25nIGxvbmcgKnRpbWVycyA9IHBh cmFtOwotICAgIHRpbWVyc1tudW1dID0KLQlpbnRlcnZhbF9TZWMgPiAwID8gR0VUdXNUSU1F KDApICsgaW50ZXJ2YWxfU2VjICogMTAwMDAwMCA6IDA7CisgICAgaWYgKGludGVydmFsX1Nl YyA+IDApCisJdGltZXJzW251bV0gKz0gR0VUdXNUSU1FKDApICsgaW50ZXJ2YWxfU2VjICog MTAwMDAwMDsKKyAgICBlbHNlCisJdGltZXJzW251bV0gPSAwOwogICAgIFNfcHJpbnRmKCJB ZGxpYjogdGltZXIgJWkgc2V0IHRvICVpdXNcbiIsIG51bSwKIAkgICAgIChpbnQpIChpbnRl cnZhbF9TZWMgKiAxMDAwMDAwKSk7CiB9CkBAIC0xMDUsNiArMTE0LDEyIEBACiAJQURMSUJf UlVOKCk7CiAgICAgcnVuX25ld19zYigpOwogfQorCitzdGF0aWMgdm9pZCBvcGwzX2lycSh2 b2lkICpwYXJhbSwgaW50IGlycSkKK3sKKyAgICBTX3ByaW50ZigiU0I6IE9QTDMgSVJRICgl aSlcbiIsIGlycSk7CisgICAgLyogdGhpcyBJUlEgaXMgbm90IHdpcmVkLCBub3RoaW5nIHRv IGRvICovCit9CiAjZW5kaWYKIAogdm9pZCBvcGwzX2luaXQodm9pZCkKQEAgLTEyMCw3ICsx MzUsNyBAQAogICAgIGlvX2RldmljZS53cml0ZV9wb3J0dyA9IE5VTEw7CiAgICAgaW9fZGV2 aWNlLnJlYWRfcG9ydGQgPSBOVUxMOwogICAgIGlvX2RldmljZS53cml0ZV9wb3J0ZCA9IE5V TEw7Ci0gICAgaW9fZGV2aWNlLmhhbmRsZXJfbmFtZSA9ICJBZGxpYiAoKyBBZHZhbmNlZCkg RW11bGF0aW9uIjsKKyAgICBpb19kZXZpY2UuaGFuZGxlcl9uYW1lID0gIk9QTDMiOwogICAg IGlvX2RldmljZS5zdGFydF9hZGRyID0gQURMSUJfQkFTRTsKICAgICBpb19kZXZpY2UuZW5k X2FkZHIgPSBBRExJQl9CQVNFICsgMzsKICAgICBpb19kZXZpY2UuaXJxID0gRU1VX05PX0lS UTsKQEAgLTEzMCwxNCArMTQ1LDE1IEBACiAgICAgfQogI2lmZGVmIEhBU19ZTUYyNjIKICAg ICBvcGwzID0gWU1GMjYySW5pdChPUEwzX0lOVEVSTkFMX0ZSRVEsIG9wbDNfcmF0ZSk7Ci0g ICAgWU1GMjYyU2V0VGltZXJIYW5kbGVyKG9wbDMsIG9wbDNfc2V0X3RpbWVyLCAmb3BsM190 aW1lcnMpOworICAgIFlNRjI2MlNldFRpbWVySGFuZGxlcihvcGwzLCBvcGwzX3NldF90aW1l ciwgb3BsM190aW1lcnMpOwogICAgIFlNRjI2MlNldFVwZGF0ZUhhbmRsZXIob3BsMywgb3Bs M191cGRhdGUsIE5VTEwpOworICAgIFlNRjI2MlNldElSUUhhbmRsZXIob3BsMywgb3BsM19p cnEsIE5VTEwpOwogI2VuZGlmCiB9CiAKIHZvaWQgYWRsaWJfaW5pdCh2b2lkKQogewotICAg IGFkbGliX3N0cm0gPSBwY21fYWxsb2NhdGVfc3RyZWFtKDIsICJBZGxpYiIpOworICAgIGFk bGliX3N0cm0gPSBwY21fYWxsb2NhdGVfc3RyZWFtKEFETElCX0NIQU5ORUxTLCAiQWRsaWIi KTsKIH0KIAogdm9pZCBhZGxpYl9yZXNldCh2b2lkKQpAQCAtMTU3LDEzICsxNzMsMjQgQEAK IH0KIAogI2lmZGVmIEhBU19ZTUYyNjIKLXN0YXRpYyB2b2lkIGFkbGliX3Byb2Nlc3Nfc2Ft cGxlcyhpbnQgc2FtcHMpCitzdGF0aWMgdm9pZCBhZGxpYl9wcm9jZXNzX3NhbXBsZXMoaW50 IG1vbm9fc2FtcHMpCiB7Ci0gICAgY29uc3QgaW50IGNoYW5fbWFwW10gPSB7IDAsIDEsIDAs IDEgfTsKLSAgICBpbnQgaSwgaiwgazsKKyAgICBjb25zdCBpbnQgY2hhbl9tYXBbXSA9Cisj aWYgQURMSUJfQ0hBTk5FTFMgPT0gMgorCXsgMCwgMSwgMCwgMSB9OworI2VsaWYgQURMSUJf Q0hBTk5FTFMgPT0gMQorCXsgMCwgMCwgMCwgMCB9OworI2VsaWYgQURMSUJfQ0hBTk5FTFMg PT0gNAorCXsgMCwgMSwgMiwgMyB9OworI2Vsc2UKKyNlcnJvciBBRExJQl9DSEFOTkVMUyBp cyB3cm9uZworCXsgLTEsIC0xLCAtMSwgLTEgfTsKKyNlbmRpZgorICAgIGludCBpLCBqLCBr LCBzYW1wczsKICAgICBPUEwzU0FNUExFICpjaGFuc1s0XSwgYnVmWzRdW09QTDNfTUFYX0JV Rl0sIGJ1ZjM7Ci0gICAgaW50IGJ1ZjJbT1BMM19NQVhfQlVGXVsyXTsKKyAgICBpbnQgYnVm MltPUEwzX01BWF9CVUZdW0FETElCX0NIQU5ORUxTXTsKIAorICAgIHNhbXBzID0gbW9ub19z YW1wcyAvIEFETElCX0NIQU5ORUxTOwogICAgIGlmIChzYW1wcyA+IE9QTDNfTUFYX0JVRikg ewogCWVycm9yKCJBZGxpYjogdG9vIG1hbnkgc2FtcGxlcyByZXF1ZXN0ZWQgKCVpKVxuIiwg c2FtcHMpOwogCXNhbXBzID0gT1BMM19NQVhfQlVGOwpAQCAtMTc0LDE3ICsyMDEsMTMgQEAK ICAgICBZTUYyNjJVcGRhdGVPbmUob3BsMywgY2hhbnMsIHNhbXBzKTsKIAogICAgIGZvciAo aSA9IDA7IGkgPCBzYW1wczsgaSsrKSB7Ci0JZm9yIChqID0gMDsgaiA8IDI7IGorKykgewor CWZvciAoaiA9IDA7IGogPCBBRExJQl9DSEFOTkVMUzsgaisrKSB7CiAJICAgIGJ1ZjJbaV1b al0gPSAwOwogCSAgICBmb3IgKGsgPSAwOyBrIDwgQVJSQVlfU0laRShjaGFuX21hcCk7IGsr KykgewogCQlpZiAoY2hhbl9tYXBba10gPT0gaikKIAkJICAgIGJ1ZjJbaV1bal0gKz0gYnVm W2tdW2ldOwogCSAgICB9Ci0JICAgIGlmIChidWYyW2ldW2pdID4gU0hSVF9NQVgpCi0JCWJ1 ZjJbaV1bal0gPSBTSFJUX01BWDsKLQkgICAgaWYgKGJ1ZjJbaV1bal0gPCBTSFJUX01JTikK LQkJYnVmMltpXVtqXSA9IFNIUlRfTUlOOwotCSAgICBidWYzID0gYnVmMltpXVtqXTsKKwkg ICAgYnVmMyA9IHBjbV9zYW1wX2N1dG9mZihidWYyW2ldW2pdLCBvcGwzX2Zvcm1hdCk7CiAJ ICAgIHBjbV93cml0ZV9zYW1wbGVzKCZidWYzLCBwY21fZm9ybWF0X3NpemUob3BsM19mb3Jt YXQpLAogCQkJICAgICAgb3BsM19yYXRlLCBvcGwzX2Zvcm1hdCwgYWRsaWJfc3RybSk7CiAJ fQpAQCAtMjA0LDEzICsyMjcsMTMgQEAKIAlwY21fZmx1c2goYWRsaWJfc3RybSk7CiAgICAg fQogICAgIGlmIChBRExJQl9SVU5OSU5HKCkpIHsKLQlwZXJpb2QgPSBwY21fc2FtcF9wZXJp b2Qob3BsM19yYXRlLCAyKTsKKwlwZXJpb2QgPSBwY21fc2FtcF9wZXJpb2Qob3BsM19yYXRl LCBBRExJQl9DSEFOTkVMUyk7CiAJbnNhbXBzID0gKG5vdyAtIGFkbGliX3RpbWVfY3VyKSAv IHBlcmlvZDsKIAlpZiAobnNhbXBzID4gT1BMM19NQVhfQlVGKQogCSAgICBuc2FtcHMgPSBP UEwzX01BWF9CVUY7Ci0JbnNhbXBzIC09IG5zYW1wcyAlIDI7CisJbnNhbXBzIC09IG5zYW1w cyAlIEFETElCX0NIQU5ORUxTOwogCWlmIChuc2FtcHMpIHsKLQkgICAgYWRsaWJfcHJvY2Vz c19zYW1wbGVzKG5zYW1wcyAvIDIpOworCSAgICBhZGxpYl9wcm9jZXNzX3NhbXBsZXMobnNh bXBzKTsKIAkgICAgYWRsaWJfdGltZV9jdXIgKz0gbnNhbXBzICogcGVyaW9kOwogCSAgICBT X3ByaW50ZigiU0I6IHByb2Nlc3NlZCAlaSBBZGxpYiBzYW1wbGVzXG4iLCBuc2FtcHMpOwog CX0KQEAgLTIxOSw3ICsyNDIsNyBAQAogICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsK IAlpZiAob3BsM190aW1lcnNbaV0gPiAwICYmIG5vdyA+IG9wbDNfdGltZXJzW2ldKSB7CiAJ ICAgIFNfcHJpbnRmKCJBZGxpYjogdGltZXIgJWkgZXhwaXJlZFxuIiwgaSk7Ci0JICAgIG9w bDNfdGltZXJzW2ldID0gMDsKKwkgICAgb3BsM190aW1lcnNbaV0gPSBub3cgLSBvcGwzX3Rp bWVyc1tpXTsKIAkgICAgWU1GMjYyVGltZXJPdmVyKG9wbDMsIGkpOwogCX0KICAgICB9Ci0t LSBzcmMvYmFzZS9kZXYvc2IxNi9kc3Bpby5jLm9yaWcJMjAwOS0wOS0yMyAxMzowMDo1Ni4w MDAwMDAwMDAgKzA0MDAKKysrIHNyYy9iYXNlL2Rldi9zYjE2L2RzcGlvLmMJMjAwOS0wOS0y MyAxMzo1OToxOS4wMDAwMDAwMDAgKzA0MDAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl ICJzb3VuZC9zbmRwY20uaCIKICNpbmNsdWRlICJzb3VuZC9taWRpLmgiCiAjaW5jbHVkZSAi YWRsaWIuaCIKLSNpbmNsdWRlICJkbWEuaCIKKyNpbmNsdWRlICJkbWFuZXcuaCIKICNpbmNs dWRlICJzYjE2LmgiCiAjaW5jbHVkZSAiZHNwaW8uaCIKICNpbmNsdWRlIDxzdHJpbmcuaD4K QEAgLTY1LDIyICs2NSw2IEBACiAKICNkZWZpbmUgRFNQSU8gKChzdHJ1Y3QgZHNwaW9fc3Rh dGUgKilkc3BpbykKIAotc3RhdGljIGludCBkbWE4X2dldF9mb3JtYXQoaW50IGlzX3NpZ25l ZCkKLXsKLSAgICByZXR1cm4gaXNfc2lnbmVkID8gUENNX0ZPUk1BVF9TOCA6IFBDTV9GT1JN QVRfVTg7Ci19Ci0KLXN0YXRpYyBpbnQgZG1hMTZfZ2V0X2Zvcm1hdChpbnQgaXNfc2lnbmVk KQotewotICAgIHJldHVybiBpc19zaWduZWQgPyBQQ01fRk9STUFUX1MxNl9MRSA6IFBDTV9G T1JNQVRfVTE2X0xFOwotfQotCi1zdGF0aWMgaW50IGRtYV9nZXRfZm9ybWF0KGludCBpc18x NiwgaW50IGlzX3NpZ25lZCkKLXsKLSAgICByZXR1cm4gaXNfMTYgPyBkbWExNl9nZXRfZm9y bWF0KGlzX3NpZ25lZCkgOgotCWRtYThfZ2V0X2Zvcm1hdChpc19zaWduZWQpOwotfQotCiBz dGF0aWMgdm9pZCBkbWFfZ2V0X3NpbGVuY2UoaW50IGlzX3NpZ25lZCwgaW50IGlzMTZiaXQs IHZvaWQgKnB0cikKIHsKICAgICBpZiAoaXMxNmJpdCkgewpAQCAtMTYzLDkgKzE0NywxMCBA QAogICAgIGlmIChzdGF0ZS0+b3V0cHV0X3J1bm5pbmcpCiAJcmV0dXJuOwogICAgIFNfcHJp bnRmKCJTQjogc3RhcnRpbmcgb3V0cHV0XG4iKTsKLSAgICAvKiBXZSB3b3VsZCBuZWVkIHJl YWwgdGltZSBoZXJlLCBidXQgdGhlIEhBQ0sgaXMgdG8gdXNlIHN0cmVhbSB0aW1lIGluc3Rl YWQuCisgICAgLyogV2Ugd291bGQgbmVlZCByZWFsIHRpbWUgaGVyZSwgYnV0IHRoZSBIQUNL IGlzIHRvIHVzZSBzdHJlYW0KKyAgICAgKiB0aW1lc3RhbXAgaW5zdGVhZC4KICAgICAgKiBU aGF0IGNvbXBlbnNhdGVzIHRoZSBoYWNrIG9mIGRzcGlvX3Byb2Nlc3NfZG1hKCkgKi8KLSAg ICBzdGF0ZS0+b3V0cHV0X3RpbWVfY3VyID0gcGNtX2dldF9zdHJlYW1fdGltZShzdGF0ZS0+ ZG1hX3N0cm0pOworICAgIHN0YXRlLT5vdXRwdXRfdGltZV9jdXIgPSBwY21fY2FsY190c3Rh bXAoc3RhdGUtPmRtYS5yYXRlLCBzdGF0ZS0+ZG1hX3N0cm0pOwogICAgIHN0YXRlLT5vdXRw dXRfcnVubmluZyA9IDE7CiB9CiAKQEAgLTI5Niw2ICsyODEsNyBAQAogICAgIGlmIChzdGF0 ZS0+ZG1hLnJ1bm5pbmcpIHsKIAlzdGF0ZS0+ZG1hLnN0ZXJlbyA9IHNiX2RtYV9zYW1wX3N0 ZXJlbygpOwogCXN0YXRlLT5kbWEucmF0ZSA9IHNiX2dldF9kbWFfc2FtcGxpbmdfcmF0ZSgp OworCXN0YXRlLT5kbWEuc2FtcF9zaWduZWQgPSBzYl9kbWFfc2FtcF9zaWduZWQoKTsKICAg ICB9CiAKICAgICB3aGlsZSAoc3RhdGUtPm91dHB1dF9ydW5uaW5nICYmIChzdGF0ZS0+b3V0 cHV0X3RpbWVfY3VyIDw9IHRpbWVfZHN0IHx8CkBAIC0zMDgsMTMgKzI5NCwxMyBAQAogCSAg ICBpZiAoc3RhdGUtPnNwZWFrZXIpIHsKIAkJcGNtX3dyaXRlX3NhbXBsZXMoJmJ1ZiwgMSA8 PCBzdGF0ZS0+ZG1hLmlzMTZiaXQsCiAJCQkJICBzdGF0ZS0+ZG1hLnJhdGUsCi0JCQkJICBk bWFfZ2V0X2Zvcm1hdChzdGF0ZS0+ZG1hLmlzMTZiaXQsCisJCQkJICBwY21fZ2V0X2Zvcm1h dChzdGF0ZS0+ZG1hLmlzMTZiaXQsCiAJCQkJCQkgc3RhdGUtPmRtYS5zYW1wX3NpZ25lZCks CiAJCQkJICBzdGF0ZS0+ZG1hX3N0cm0pOwogCQlpZiAoIXN0YXRlLT5kbWEuc3RlcmVvKQog CQkgICAgcGNtX3dyaXRlX3NhbXBsZXMoJmJ1ZiwgMSA8PCBzdGF0ZS0+ZG1hLmlzMTZiaXQs CiAJCQkJICAgICAgc3RhdGUtPmRtYS5yYXRlLAotCQkJCSAgICAgIGRtYV9nZXRfZm9ybWF0 KHN0YXRlLT5kbWEuaXMxNmJpdCwKKwkJCQkgICAgICBwY21fZ2V0X2Zvcm1hdChzdGF0ZS0+ ZG1hLmlzMTZiaXQsCiAJCQkJCQkgICAgIHN0YXRlLT5kbWEuCiAJCQkJCQkgICAgIHNhbXBf c2lnbmVkKSwKIAkJCQkgICAgICBzdGF0ZS0+ZG1hX3N0cm0pOwotLS0gc3JjL2Jhc2UvZGV2 L3NiMTYvc2IxNi5jCTIwMDktMDktMjMgMTM6MDE6MzAuMDAwMDAwMDAwICswNDAwCisrKyBz cmMvYmFzZS9kZXYvc2IxNi9zYjE2LmMJMjAwOS0wOS0yMyAxNDoxMzoyMC4wMDAwMDAwMDAg KzA0MDAKQEAgLTYzNiw2ICs2MzYsNyBAQAogICAgIGhkbWFfaWR4ID0gY29uZmlnLnNiX2hk bWEgPyAxIDw8IGNvbmZpZy5zYl9oZG1hIDogMDsKICAgICBzYi5taXhlcl9yZWdzWzB4ODBd ID0gaXJxX2lkeDsKICAgICBzYi5taXhlcl9yZWdzWzB4ODFdID0gZG1hX2lkeCB8IGhkbWFf aWR4OworICAgIHNiLm1peGVyX3JlZ3NbMHg4Ml0gPSBTQjE2X0lEODI7CiB9CiAKIHN0YXRp YyB2b2lkIHNiX3Jlc2V0KHZvaWQpCkBAIC05MjAsOCArOTIxLDggQEAKICAgICBjYXNlIDB4 RTE6CiAJLyogRFNQIFZlcnNpb24gLSBTQiAqLwogCVNfcHJpbnRmKCJTQjogUXVlcnkgVmVy c2lvblxuIik7Ci0JZHNwX3dyaXRlX291dHB1dChTQl8xNiA+PiA4KTsKLQlkc3Bfd3JpdGVf b3V0cHV0KFNCXzE2ICYgMHhGRik7CisJZHNwX3dyaXRlX291dHB1dChTQjE2X0lEID4+IDgp OworCWRzcF93cml0ZV9vdXRwdXQoU0IxNl9JRCAmIDB4RkYpOwogCWJyZWFrOwogCiAgICAg Y2FzZSAweEUyOiB7Ci0tLSBzcmMvYmFzZS9kZXYvc2IxNi9zYjE2LmgJMjAwOS0wOS0yMyAx MzowMDo1Ni4wMDAwMDAwMDAgKzA0MDAKKysrIHNyYy9iYXNlL2Rldi9zYjE2L3NiMTYuaAky MDA2LTEyLTExIDE4OjA3OjA1LjAwMDAwMDAwMCArMDMwMApAQCAtMjYsMTEgKzI2LDE1IEBA CiAjaW5jbHVkZSAidXRpbGl0aWVzLmgiCQkvLyBmb3Igcm5nX3MKIAogI2RlZmluZSBTQl9O T05FICAweDAwMAotI2RlZmluZSBTQl9PTEQJIDB4MTA1Ci0jZGVmaW5lIFNCXzIwCSAweDIw MQotI2RlZmluZSBTQl9QUk8JIDB4MzAwCi0jZGVmaW5lIFNCXzE2CSAweDQwNQotI2RlZmlu ZSBTQl9BV0UzMiAweDQwQworI2RlZmluZSBTQl9JRAkgMHgxMDUKKyNkZWZpbmUgU0IyMF9J RAkgMHgyMDEKKyNkZWZpbmUgU0JQUk9fSUQgMHgzMDAKKyNkZWZpbmUgU0IxNl9JRAkgMHg0 MDUKKyNkZWZpbmUgU0JBV0UzMl9JRCAweDQwQworCisvKiBib2NocyBhbmQgdGhlIG9sZCBk b3NlbXUgY29kZSBkaXNhZ3JlZSBvbiB0aGF0IHZhbHVlLgorICogT2YgY291cnNlIEkgdHJ1 c3QgYm9jaHMuIDopICovCisjZGVmaW5lIFNCMTZfSUQ4MiAoMiA8PCA1KQogCiAvKgogICog VmFyaW91cyBTdGF0dXMgdmFsdWVzCkluZGV4OiBkbWFuZXcuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzcmMvYmFzZS9kZXYvZG1hL2RtYW5ldy5jCShyZXZpc2lvbiAxOTY0KQorKysgc3JjL2Jh c2UvZGV2L2RtYS9kbWFuZXcuYwkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOCBAQAog I2luY2x1ZGUgInV0aWxpdGllcy5oIgogI2luY2x1ZGUgInBvcnQuaCIKICNpbmNsdWRlICJ0 aW1lcnMuaCIKLSNpbmNsdWRlICJkbWEuaCIKKyNpbmNsdWRlICJkbWFuZXcuaCIKKyNpbmNs dWRlICJkbWFyZWdzLmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKIHR5cGVkZWYgdW5pb24g ewpAQCAtODIsNyArODMsNyBAQAogI2RlZmluZSBIQVZFX1NSUShjb250ciwgY2hhbikgKGRt YVtjb250cl0ucmVxdWVzdCAmICgxIDw8IChjaGFuKSkpCiAjZGVmaW5lIFNXX0FDVElWRShj b250ciwgY2hhbikgXAogICAoSEFWRV9TUlEoY29udHIsIGNoYW4pICYmIFwKLSAgKGRtYVtj b250cl0uY2hhbnNbY2hhbl0ubW9kZSAmIDB4MzApID09IDB4MjApCisgIChETUFfVFJBTlNG RVJfTU9ERShkbWFbY29udHJdLmNoYW5zW2NoYW5dLm1vZGUpID09IEJMT0NLKSkKIAogCiBz dGF0aWMgdm9pZCBkbWFfc29mdF9yZXNldChpbnQgZG1hX2lkeCkKQEAgLTEwNSwxOCArMTA2 LDE4IEBACiAKIHN0YXRpYyB2b2lkIGRtYV91cGRhdGVfRFJRKGludCBkbWFfaWR4LCBpbnQg Y2hhbl9pZHgpCiB7Ci0gICAgc3dpdGNoIChkbWFbZG1hX2lkeF0uY2hhbnNbY2hhbl9pZHhd Lm1vZGUgJiAweDMwKSB7Ci0gICAgY2FzZSAweDAwOgkJCS8vIGRlbWFuZAorICAgIHN3aXRj aCAoRE1BX1RSQU5TRkVSX01PREUoZG1hW2RtYV9pZHhdLmNoYW5zW2NoYW5faWR4XS5tb2Rl KSkgeworICAgIGNhc2UgREVNQU5EOgogCWRtYV9wb2xsX0RSUShkbWFfaWR4LCBjaGFuX2lk eCk7CiAJYnJlYWs7Ci0gICAgY2FzZSAweDEwOgkJCS8vIHNpbmdsZQorICAgIGNhc2UgU0lO R0xFOgogCWRtYVtkbWFfaWR4XS5zdGF0dXMgJj0gfigxIDw8IChjaGFuX2lkeCArIDQpKTsK IAlicmVhazsKLSAgICBjYXNlIDB4MjA6CQkJLy8gYmxvY2sKKyAgICBjYXNlIEJMT0NLOgog CWlmIChSRUFDSEVEX1RDKGRtYV9pZHgsIGNoYW5faWR4KSkKIAkgICAgZG1hX3BvbGxfRFJR KGRtYV9pZHgsIGNoYW5faWR4KTsKIAlicmVhazsKLSAgICBjYXNlIDB4MzA6CQkJLy8gY2Fz Y2FkZQorICAgIGNhc2UgQ0FTQ0FERToKIAlkbWFfcG9sbF9EUlEoZG1hX2lkeCwgY2hhbl9p ZHgpOwogCWJyZWFrOwogICAgIH0KQEAgLTEyNiwzOCArMTI3LDM3IEBACiB7CiAgICAgc3Ry dWN0IGRtYV9jaGFubmVsICpjaGFuID0gJmRtYVtkbWFfaWR4XS5jaGFuc1tjaGFuX2lkeF07 CiAgICAgQml0MzJ1IGFkZHIgPSAoY2hhbi0+cGFnZSA8PCAxNikgfCAoY2hhbi0+Y3VyX2Fk ZHIudmFsdWUgPDwgZG1hX2lkeCk7Ci0gICAgQml0OHUgbW9kZSA9IGNoYW4tPm1vZGU7CiAK ICAgICAvKiBmaXJzdCwgZG8gdGhlIHRyYW5zZmVyICovCi0gICAgc3dpdGNoIChtb2RlICYg MykgewotICAgIGNhc2UgMDoJCQkvKiB2ZXJpZnkgKi8KKyAgICBzd2l0Y2ggKERNQV9UUkFO U0ZFUl9PUChjaGFuLT5tb2RlKSkgeworICAgIGNhc2UgVkVSSUZZOgogCXFfcHJpbnRmKCJE TUE6IHZlcmlmeSBtb2RlIGRvZXMgbm90aGluZ1xuIik7CiAJYnJlYWs7Ci0gICAgY2FzZSAx OgkJCS8qIHdyaXRlICovCisgICAgY2FzZSBXUklURToKIAlNRU1DUFlfMkRPUyhhZGRyLCBk bWFfZGF0YV9idXMsIDEgPDwgZG1hX2lkeCk7CiAJYnJlYWs7Ci0gICAgY2FzZSAyOgkJCS8q IHJlYWQgKi8KKyAgICBjYXNlIFJFQUQ6CiAJTUVNQ1BZXzJVTklYKGRtYV9kYXRhX2J1cywg YWRkciwgMSA8PCBkbWFfaWR4KTsKIAlicmVhazsKLSAgICBjYXNlIDM6CQkJLyogaW52YWxp ZCAqLworICAgIGNhc2UgSU5WQUxJRDoKIAlxX3ByaW50ZigiRE1BOiBpbnZhbGlkIG1vZGUg ZG9lcyBub3RoaW5nXG4iKTsKIAlicmVhazsKICAgICB9CiAKICAgICAvKiBub3cgYWR2YW5j ZSB0aGUgYWRkcmVzcyAqLwotICAgIGlmICghKGRtYVtkbWFfaWR4XS5jb21tYW5kICYgMikp Ci0JY2hhbi0+Y3VyX2FkZHIudmFsdWUgKz0gKG1vZGUgJiA4KSA/IC0xIDogMTsKKyAgICBp ZiAoKGRtYVtkbWFfaWR4XS5jb21tYW5kICYgMykgIT0gMykKKwljaGFuLT5jdXJfYWRkci52 YWx1ZSArPSAoRE1BX0FERFJfREVDKGNoYW4tPm1vZGUpID8gLTEgOiAxKTsKIAogICAgIC8q IGFuZCB0aGUgY291bnRlciAqLwogICAgIGNoYW4tPmN1cl9jb3VudC52YWx1ZS0tOwogICAg IGlmIChjaGFuLT5jdXJfY291bnQudmFsdWUgPT0gMHhmZmZmKSB7CS8qIG92ZXJmbG93ICov Ci0JaWYgKG1vZGUgJiA0KSB7CQkvKiBhdXRvLWluaXQgKi8KKwlpZiAoRE1BX0FVVE9JTklU KGNoYW4tPm1vZGUpKSB7CiAJICAgIHFfcHJpbnRmKCJETUE6IGNvbnRyb2xsZXIgJWksIGNo YW5uZWwgJWkgcmVpbml0aWFsaXplZFxuIiwKIAkJICAgICBkbWFfaWR4LCBjaGFuX2lkeCk7 CiAJICAgIGNoYW4tPmN1cl9hZGRyLnZhbHVlID0gY2hhbi0+YmFzZV9hZGRyLnZhbHVlOwog CSAgICBjaGFuLT5jdXJfY291bnQudmFsdWUgPSBjaGFuLT5iYXNlX2NvdW50LnZhbHVlOwot CX0gZWxzZSB7CQkvKiBlb3AgKi8KLQkgICAgcV9wcmludGYoIkRNQTogY29udHJvbGxlciAl aSwgY2hhbm5lbCAlaSBFT1BcbiIsIGRtYV9pZHgsCisJfSBlbHNlIHsJCS8qIFRDICovCisJ ICAgIHFfcHJpbnRmKCJETUE6IGNvbnRyb2xsZXIgJWksIGNoYW5uZWwgJWkgVENcbiIsIGRt YV9pZHgsCiAJCSAgICAgY2hhbl9pZHgpOwogCSAgICBkbWFbZG1hX2lkeF0uc3RhdHVzIHw9 IDEgPDwgY2hhbl9pZHg7CiAJICAgIGRtYVtkbWFfaWR4XS5yZXF1ZXN0ICY9IH4oMSA8PCBj aGFuX2lkeCk7CkBAIC0xNzYsNyArMTc2LDcgQEAKIAlpZiAoIU1BU0tFRChkbWFfaWR4LCBj aGFuX2lkeCkgJiYKIAkgICAgIVJFQUNIRURfVEMoZG1hX2lkeCwgY2hhbl9pZHgpICYmCiAJ ICAgICEoZG1hW2RtYV9pZHhdLmNvbW1hbmQgJiA0KSAmJgotCSAgICAoKGRtYVtkbWFfaWR4 XS5jaGFuc1tjaGFuX2lkeF0ubW9kZSAmIDB4MzApICE9IDB4MzApKSB7CisJICAgIChETUFf VFJBTlNGRVJfTU9ERShkbWFbZG1hX2lkeF0uY2hhbnNbY2hhbl9pZHhdLm1vZGUpICE9IENB U0NBREUpKSB7CiAJICAgIGRtYV9wcm9jZXNzX2NoYW5uZWwoZG1hX2lkeCwgY2hhbl9pZHgp OwogCSAgICB0aWNrcysrOwogCX0gZWxzZSB7CkBAIC0yMzIsNjYgKzIzMiw0OCBAQAogfQog CiAKKy8qIGxldHMgcmlkZSBvbiB0aGUgY3BwIGFzcyAqLwogI2RlZmluZSBkKHgpICh4LTEp CisjZGVmaW5lIEhBTkRMRV9YKG4pIFwKKyAgICBIQU5ETEVfIyNuKDEsIDEpOyBcCisgICAg SEFORExFXyMjbigxLCAyKTsgXAorICAgIEhBTkRMRV8jI24oMSwgMyk7IFwKKyAgICBIQU5E TEVfIyNuKDEsIDQpOyBcCisgICAgSEFORExFXyMjbigyLCAxKTsgXAorICAgIEhBTkRMRV8j I24oMiwgMik7IFwKKyAgICBIQU5ETEVfIyNuKDIsIDMpOyBcCisgICAgSEFORExFXyMjbigy LCA0KQogc3RhdGljIEJpdDh1IGRtYV9pb19yZWFkKGlvcG9ydF90IHBvcnQpCiB7CiAgICAg Qml0OHUgciA9IDB4ZmY7CiAgICAgc3dpdGNoIChwb3J0KSB7CiAKLS8qIGxldHMgcmlkZSBv biB0aGUgY3BwIGFzcyAqLwogI2RlZmluZSBIQU5ETEVfQ1VSX0FERFJfUkVBRChkX24sIGNf bikgXAotICBjYXNlIERNQSMjZF9uIyNfQUREUl8jI2NfbjogXAotICAgIHIgPSBkbWFbZChk X24pXS5jaGFuc1tkKGNfbildLmN1cl9hZGRyLmJ5dGVbZG1hW2QoZF9uKV0uZmZdOyBcCi0g ICAgcV9wcmludGYoIkRNQSVpOiBjdXJfYWRkciByZWFkOiAlI3ggZnJvbSBDaGFubmVsICVk IGJ5dGUgJWRcbiIsIFwKLQlkX24sIHIsIGQoY19uKSwgZG1hW2QoZF9uKV0uZmYpOyBcCi0g ICAgZG1hW2QoZF9uKV0uZmYgXj0gMTsgXAotICAgIGJyZWFrCi0JSEFORExFX0NVUl9BRERS X1JFQUQoMSwgMSk7Ci0JSEFORExFX0NVUl9BRERSX1JFQUQoMSwgMik7Ci0JSEFORExFX0NV Ul9BRERSX1JFQUQoMSwgMyk7Ci0JSEFORExFX0NVUl9BRERSX1JFQUQoMSwgNCk7CisgICAg Y2FzZSBETUEjI2RfbiMjX0FERFJfIyNjX246IFwKKwlyID0gZG1hW2QoZF9uKV0uY2hhbnNb ZChjX24pXS5jdXJfYWRkci5ieXRlW2RtYVtkKGRfbildLmZmXTsgXAorCXFfcHJpbnRmKCJE TUElaTogY3VyX2FkZHIgcmVhZDogJSN4IGZyb20gQ2hhbm5lbCAlZCBieXRlICVkXG4iLCBc CisJCWRfbiwgciwgZChjX24pLCBkbWFbZChkX24pXS5mZik7IFwKKwlkbWFbZChkX24pXS5m ZiBePSAxOyBcCisJYnJlYWsKKwlIQU5ETEVfWChDVVJfQUREUl9SRUFEKTsKIAotCUhBTkRM RV9DVVJfQUREUl9SRUFEKDIsIDEpOwotCUhBTkRMRV9DVVJfQUREUl9SRUFEKDIsIDIpOwot CUhBTkRMRV9DVVJfQUREUl9SRUFEKDIsIDMpOwotCUhBTkRMRV9DVVJfQUREUl9SRUFEKDIs IDQpOwotI3VuZGVmIEhBTkRMRV9DVVJfQUREUl9SRUFECi0KICNkZWZpbmUgSEFORExFX0NV Ul9DTlRfUkVBRChkX24sIGNfbikgXAotICBjYXNlIERNQSMjZF9uIyNfQ05UXyMjY19uOiBc Ci0gICAgciA9IGRtYVtkKGRfbildLmNoYW5zW2QoY19uKV0uY3VyX2NvdW50LmJ5dGVbZG1h W2QoZF9uKV0uZmZdOyBcCi0gICAgcV9wcmludGYoIkRNQSVpOiBjdXJfY250IHJlYWQ6ICUj eCBmcm9tIENoYW5uZWwgJWQgYnl0ZSAlZFxuIiwgXAotCWRfbiwgciwgZChjX24pLCBkbWFb ZChkX24pXS5mZik7IFwKLSAgICBkbWFbZChkX24pXS5mZiBePSAxOyBcCi0gICAgYnJlYWsK LQlIQU5ETEVfQ1VSX0NOVF9SRUFEKDEsIDEpOwotCUhBTkRMRV9DVVJfQ05UX1JFQUQoMSwg Mik7Ci0JSEFORExFX0NVUl9DTlRfUkVBRCgxLCAzKTsKLQlIQU5ETEVfQ1VSX0NOVF9SRUFE KDEsIDQpOworICAgIGNhc2UgRE1BIyNkX24jI19DTlRfIyNjX246IFwKKwlyID0gZG1hW2Qo ZF9uKV0uY2hhbnNbZChjX24pXS5jdXJfY291bnQuYnl0ZVtkbWFbZChkX24pXS5mZl07IFwK KwlxX3ByaW50ZigiRE1BJWk6IGN1cl9jbnQgcmVhZDogJSN4IGZyb20gQ2hhbm5lbCAlZCBi eXRlICVkXG4iLCBcCisJCWRfbiwgciwgZChjX24pLCBkbWFbZChkX24pXS5mZik7IFwKKwlk bWFbZChkX24pXS5mZiBePSAxOyBcCisJYnJlYWsKKwlIQU5ETEVfWChDVVJfQ05UX1JFQUQp OwogCi0JSEFORExFX0NVUl9DTlRfUkVBRCgyLCAxKTsKLQlIQU5ETEVfQ1VSX0NOVF9SRUFE KDIsIDIpOwotCUhBTkRMRV9DVVJfQ05UX1JFQUQoMiwgMyk7Ci0JSEFORExFX0NVUl9DTlRf UkVBRCgyLCA0KTsKLSN1bmRlZiBIQU5ETEVfQ1VSX0NOVF9SRUFECi0KICNkZWZpbmUgSEFO RExFX1BBR0VfUkVBRChkX24sIGNfbikgXAotICBjYXNlIERNQSMjZF9uIyNfUEFHRV8jI2Nf bjogXAotICAgIHIgPSBkbWFbZChkX24pXS5jaGFuc1tkKGNfbildLnBhZ2U7IFwKLSAgICBx X3ByaW50ZigiRE1BJWk6IHBhZ2UgcmVhZDogJSN4IGZyb20gQ2hhbm5lbCAlZFxuIiwgXAot CWRfbiwgciwgZChjX24pKTsgXAotICAgIGJyZWFrCi0JSEFORExFX1BBR0VfUkVBRCgxLCAx KTsKLQlIQU5ETEVfUEFHRV9SRUFEKDEsIDIpOwotCUhBTkRMRV9QQUdFX1JFQUQoMSwgMyk7 Ci0JSEFORExFX1BBR0VfUkVBRCgxLCA0KTsKKyAgICBjYXNlIERNQSMjZF9uIyNfUEFHRV8j I2NfbjogXAorCXIgPSBkbWFbZChkX24pXS5jaGFuc1tkKGNfbildLnBhZ2U7IFwKKwlxX3By aW50ZigiRE1BJWk6IHBhZ2UgcmVhZDogJSN4IGZyb20gQ2hhbm5lbCAlZFxuIiwgXAorCQlk X24sIHIsIGQoY19uKSk7IFwKKwlicmVhaworCUhBTkRMRV9YKFBBR0VfUkVBRCk7CiAKLQlI QU5ETEVfUEFHRV9SRUFEKDIsIDEpOwotCUhBTkRMRV9QQUdFX1JFQUQoMiwgMik7Ci0JSEFO RExFX1BBR0VfUkVBRCgyLCAzKTsKLQlIQU5ETEVfUEFHRV9SRUFEKDIsIDQpOwotI3VuZGVm IEhBTkRMRV9QQUdFX1JFQUQKLQogICAgIGNhc2UgRE1BMV9TVEFUX1JFRzoKIAlyID0gZG1h W0RNQTFdLnN0YXR1czsKIAlxX3ByaW50ZigiRE1BMTogUmVhZCAldSBmcm9tIFN0YXR1cyBy ZWdcbiIsIHIpOwpAQCAtMzI4LDYwICszMTAsMzMgQEAKICAgICBzd2l0Y2ggKHBvcnQpIHsK IAogI2RlZmluZSBIQU5ETEVfQUREUl9XUklURShkX24sIGNfbikgXAotICBjYXNlIERNQSMj ZF9uIyNfQUREUl8jI2NfbjogXAotICAgIGRtYVtkKGRfbildLmNoYW5zW2QoY19uKV0uYmFz ZV9hZGRyLmJ5dGVbZG1hW2QoZF9uKV0uZmZdID0gdmFsdWU7IFwKLSAgICBkbWFbZChkX24p XS5jaGFuc1tkKGNfbildLmN1cl9hZGRyLmJ5dGVbZG1hW2QoZF9uKV0uZmZdID0gdmFsdWU7 IFwKLSAgICBxX3ByaW50ZigiRE1BJWk6IGFkZHIgd3JpdGU6ICUjeCB0byBDaGFubmVsICVk IGJ5dGUgJWRcbiIsIFwKLQlkX24sIHZhbHVlLCBkKGNfbiksIGRtYVtkKGRfbildLmZmKTsg XAotICAgIGRtYVtkKGRfbildLmZmIF49IDE7IFwKLSAgICBicmVhawotCUhBTkRMRV9BRERS X1dSSVRFKDEsIDEpOwotCUhBTkRMRV9BRERSX1dSSVRFKDEsIDIpOwotCUhBTkRMRV9BRERS X1dSSVRFKDEsIDMpOwotCUhBTkRMRV9BRERSX1dSSVRFKDEsIDQpOworICAgIGNhc2UgRE1B IyNkX24jI19BRERSXyMjY19uOiBcCisJZG1hW2QoZF9uKV0uY2hhbnNbZChjX24pXS5iYXNl X2FkZHIuYnl0ZVtkbWFbZChkX24pXS5mZl0gPSB2YWx1ZTsgXAorCWRtYVtkKGRfbildLmNo YW5zW2QoY19uKV0uY3VyX2FkZHIuYnl0ZVtkbWFbZChkX24pXS5mZl0gPSB2YWx1ZTsgXAor ICAgICAgICBxX3ByaW50ZigiRE1BJWk6IGFkZHIgd3JpdGU6ICUjeCB0byBDaGFubmVsICVk IGJ5dGUgJWRcbiIsIFwKKwkJZF9uLCB2YWx1ZSwgZChjX24pLCBkbWFbZChkX24pXS5mZik7 IFwKKwlkbWFbZChkX24pXS5mZiBePSAxOyBcCisJYnJlYWsKKwlIQU5ETEVfWChBRERSX1dS SVRFKTsKIAotCUhBTkRMRV9BRERSX1dSSVRFKDIsIDEpOwotCUhBTkRMRV9BRERSX1dSSVRF KDIsIDIpOwotCUhBTkRMRV9BRERSX1dSSVRFKDIsIDMpOwotCUhBTkRMRV9BRERSX1dSSVRF KDIsIDQpOwotI3VuZGVmIEhBTkRMRV9BRERSX1dSSVRFCi0KICNkZWZpbmUgSEFORExFX0NO VF9XUklURShkX24sIGNfbikgXAotICBjYXNlIERNQSMjZF9uIyNfQ05UXyMjY19uOiBcCi0g ICAgZG1hW2QoZF9uKV0uY2hhbnNbZChjX24pXS5iYXNlX2NvdW50LmJ5dGVbZG1hW2QoZF9u KV0uZmZdID0gdmFsdWU7IFwKLSAgICBkbWFbZChkX24pXS5jaGFuc1tkKGNfbildLmN1cl9j b3VudC5ieXRlW2RtYVtkKGRfbildLmZmXSA9IHZhbHVlOyBcCi0gICAgcV9wcmludGYoIkRN QSVpOiBjb3VudCB3cml0ZTogJSN4IHRvIENoYW5uZWwgJWQgYnl0ZSAlZFxuIiwgXAotCWRf biwgdmFsdWUsIGQoY19uKSwgZG1hW2QoZF9uKV0uZmYpOyBcCi0gICAgZG1hW2QoZF9uKV0u ZmYgXj0gMTsgXAotICAgIGJyZWFrCi0JSEFORExFX0NOVF9XUklURSgxLCAxKTsKLQlIQU5E TEVfQ05UX1dSSVRFKDEsIDIpOwotCUhBTkRMRV9DTlRfV1JJVEUoMSwgMyk7Ci0JSEFORExF X0NOVF9XUklURSgxLCA0KTsKKyAgICBjYXNlIERNQSMjZF9uIyNfQ05UXyMjY19uOiBcCisJ ZG1hW2QoZF9uKV0uY2hhbnNbZChjX24pXS5iYXNlX2NvdW50LmJ5dGVbZG1hW2QoZF9uKV0u ZmZdID0gdmFsdWU7IFwKKwlkbWFbZChkX24pXS5jaGFuc1tkKGNfbildLmN1cl9jb3VudC5i eXRlW2RtYVtkKGRfbildLmZmXSA9IHZhbHVlOyBcCisJcV9wcmludGYoIkRNQSVpOiBjb3Vu dCB3cml0ZTogJSN4IHRvIENoYW5uZWwgJWQgYnl0ZSAlZFxuIiwgXAorCQlkX24sIHZhbHVl LCBkKGNfbiksIGRtYVtkKGRfbildLmZmKTsgXAorCWRtYVtkKGRfbildLmZmIF49IDE7IFwK KwlicmVhaworCUhBTkRMRV9YKENOVF9XUklURSk7CiAKLQlIQU5ETEVfQ05UX1dSSVRFKDIs IDEpOwotCUhBTkRMRV9DTlRfV1JJVEUoMiwgMik7Ci0JSEFORExFX0NOVF9XUklURSgyLCAz KTsKLQlIQU5ETEVfQ05UX1dSSVRFKDIsIDQpOwotI3VuZGVmIEhBTkRMRV9DTlRfV1JJVEUK LQogI2RlZmluZSBIQU5ETEVfUEFHRV9XUklURShkX24sIGNfbikgXAotICBjYXNlIERNQSMj ZF9uIyNfUEFHRV8jI2NfbjogXAotICAgIGRtYVtkKGRfbildLmNoYW5zW2QoY19uKV0ucGFn ZSA9IHZhbHVlOyBcCi0gICAgcV9wcmludGYoIkRNQSVpOiBwYWdlIHdyaXRlOiAlI3ggdG8g Q2hhbm5lbCAlZFxuIiwgXAotCWRfbiwgdmFsdWUsIGQoY19uKSk7IFwKLSAgICBicmVhawot CUhBTkRMRV9QQUdFX1dSSVRFKDEsIDEpOwotCUhBTkRMRV9QQUdFX1dSSVRFKDEsIDIpOwot CUhBTkRMRV9QQUdFX1dSSVRFKDEsIDMpOwotCUhBTkRMRV9QQUdFX1dSSVRFKDEsIDQpOwor ICAgIGNhc2UgRE1BIyNkX24jI19QQUdFXyMjY19uOiBcCisJZG1hW2QoZF9uKV0uY2hhbnNb ZChjX24pXS5wYWdlID0gdmFsdWU7IFwKKwlxX3ByaW50ZigiRE1BJWk6IHBhZ2Ugd3JpdGU6 ICUjeCB0byBDaGFubmVsICVkXG4iLCBcCisJCWRfbiwgdmFsdWUsIGQoY19uKSk7IFwKKwli cmVhaworCUhBTkRMRV9YKFBBR0VfV1JJVEUpOwogCi0JSEFORExFX1BBR0VfV1JJVEUoMiwg MSk7Ci0JSEFORExFX1BBR0VfV1JJVEUoMiwgMik7Ci0JSEFORExFX1BBR0VfV1JJVEUoMiwg Myk7Ci0JSEFORExFX1BBR0VfV1JJVEUoMiwgNCk7Ci0jdW5kZWYgSEFORExFX1BBR0VfV1JJ VEUKLQogICAgIGNhc2UgRE1BMV9NQVNLX1JFRzoKIAlpZiAodmFsdWUgJiA0KSB7CiAJICAg IHFfcHJpbnRmKCJETUExOiBtYXNrIGNoYW5uZWwgJWlcbiIsIHZhbHVlICYgMyk7CkBAIC00 ODksOSArNDQ0LDYgQEAKICAgICBkbWFfcHJvY2VzcygpOwkJLy8gTm90IG5lZWRlZCBpbiBm YWN0CiB9CiAKLSN1bmRlZiBkCi0KLQogdm9pZCBkbWFfbmV3X3Jlc2V0KHZvaWQpCiB7CiAg ICAgZG1hX3NvZnRfcmVzZXQoRE1BMSk7Ci0tLSAvZGV2L251bGwJMjAwOS0wOS0yMyAxNjo1 MDoxNi45OTQwMDc0MzEgKzA0MDAKKysrIHNyYy9iYXNlL2Rldi9kbWEvZG1hcmVncy5oCTIw MDctMDYtMjkgMTA6MzA6MTcuMDAwMDAwMDAwICswNDAwCkBAIC0wLDAgKzEsNzQgQEAKKy8q IAorICogKEMpIENvcHlyaWdodCAxOTkyLCAuLi4sIDIwMDUgdGhlICJET1NFTVUtRGV2ZWxv cG1lbnQtVGVhbSIuCisgKgorICogZm9yIGRldGFpbHMgc2VlIGZpbGUgQ09QWUlORyBpbiB0 aGUgRE9TRU1VIGRpc3RyaWJ1dGlvbgorICovCisKKyNpZm5kZWYgX19ETUFSRUdTX0hfXwor I2RlZmluZSBfX0RNQVJFR1NfSF9fCisKKy8qIDgyMzcgRE1BIGNvbnRyb2xsZXJzICovCisj ZGVmaW5lIElPX0RNQTFfQkFTRQkweDAwCS8qIDggYml0IHNsYXZlIERNQSwgY2hhbm5lbHMg MC4uMyAqLworI2RlZmluZSBJT19ETUEyX0JBU0UJMHhDMAkvKiAxNiBiaXQgbWFzdGVyIERN QSwgY2ggNCg9c2xhdmUgaW5wdXQpLi43ICovCisKKy8qIERNQSBjb250cm9sbGVyIHJlZ2lz dGVycyAqLworI2RlZmluZSBETUExX0NNRF9SRUcJCTB4MDgJLyogY29tbWFuZCByZWdpc3Rl ciAodykgKi8KKyNkZWZpbmUgRE1BMV9TVEFUX1JFRwkJMHgwOAkvKiBzdGF0dXMgcmVnaXN0 ZXIgKHIpICovCisjZGVmaW5lIERNQTFfUkVRX1JFRyAgICAgICAgICAgIDB4MDkgICAgLyog cmVxdWVzdCByZWdpc3RlciAodykgKi8KKyNkZWZpbmUgRE1BMV9NQVNLX1JFRwkJMHgwQQkv KiBzaW5nbGUtY2hhbm5lbCBtYXNrICh3KSAqLworI2RlZmluZSBETUExX01PREVfUkVHCQkw eDBCCS8qIG1vZGUgcmVnaXN0ZXIgKHcpICovCisjZGVmaW5lIERNQTFfQ0xFQVJfRkZfUkVH CTB4MEMJLyogY2xlYXIgcG9pbnRlciBmbGlwLWZsb3AgKHcpICovCisjZGVmaW5lIERNQTFf VEVNUF9SRUcgICAgICAgICAgIDB4MEQgICAgLyogVGVtcG9yYXJ5IFJlZ2lzdGVyIChyKSAq LworI2RlZmluZSBETUExX1JFU0VUX1JFRwkJMHgwRAkvKiBNYXN0ZXIgQ2xlYXIgKHcpICov CisjZGVmaW5lIERNQTFfQ0xSX01BU0tfUkVHICAgICAgIDB4MEUgICAgLyogQ2xlYXIgTWFz ayAqLworI2RlZmluZSBETUExX01BU0tfQUxMX1JFRyAgICAgICAweDBGICAgIC8qIGFsbC1j aGFubmVscyBtYXNrICh3KSAqLworCisjZGVmaW5lIERNQTJfQ01EX1JFRwkJMHhEMAkvKiBj b21tYW5kIHJlZ2lzdGVyICh3KSAqLworI2RlZmluZSBETUEyX1NUQVRfUkVHCQkweEQwCS8q IHN0YXR1cyByZWdpc3RlciAocikgKi8KKyNkZWZpbmUgRE1BMl9SRVFfUkVHICAgICAgICAg ICAgMHhEMiAgICAvKiByZXF1ZXN0IHJlZ2lzdGVyICh3KSAqLworI2RlZmluZSBETUEyX01B U0tfUkVHCQkweEQ0CS8qIHNpbmdsZS1jaGFubmVsIG1hc2sgKHcpICovCisjZGVmaW5lIERN QTJfTU9ERV9SRUcJCTB4RDYJLyogbW9kZSByZWdpc3RlciAodykgKi8KKyNkZWZpbmUgRE1B Ml9DTEVBUl9GRl9SRUcJMHhEOAkvKiBjbGVhciBwb2ludGVyIGZsaXAtZmxvcCAodykgKi8K KyNkZWZpbmUgRE1BMl9URU1QX1JFRyAgICAgICAgICAgMHhEQSAgICAvKiBUZW1wb3Jhcnkg UmVnaXN0ZXIgKHIpICovCisjZGVmaW5lIERNQTJfUkVTRVRfUkVHCQkweERBCS8qIE1hc3Rl ciBDbGVhciAodykgKi8KKyNkZWZpbmUgRE1BMl9DTFJfTUFTS19SRUcgICAgICAgMHhEQyAg ICAvKiBDbGVhciBNYXNrICovCisjZGVmaW5lIERNQTJfTUFTS19BTExfUkVHICAgICAgIDB4 REUgICAgLyogYWxsLWNoYW5uZWxzIG1hc2sgKHcpICovCisKKyNkZWZpbmUgRE1BMV9BRERS XzEgICAgICAgICAgICAgIDB4MDAgICAgLyogRE1BIGFkZHJlc3MgcmVnaXN0ZXJzICovCisj ZGVmaW5lIERNQTFfQUREUl8yICAgICAgICAgICAgICAweDAyCisjZGVmaW5lIERNQTFfQURE Ul8zICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIERNQTFfQUREUl80ICAgICAgICAgICAg ICAweDA2CisjZGVmaW5lIERNQTJfQUREUl8xICAgICAgICAgICAgICAweEMwCisjZGVmaW5l IERNQTJfQUREUl8yICAgICAgICAgICAgICAweEM0CisjZGVmaW5lIERNQTJfQUREUl8zICAg ICAgICAgICAgICAweEM4CisjZGVmaW5lIERNQTJfQUREUl80ICAgICAgICAgICAgICAweEND CisKKyNkZWZpbmUgRE1BMV9DTlRfMSAgICAgICAgICAgICAgIDB4MDEgICAgLyogRE1BIGNv dW50IHJlZ2lzdGVycyAqLworI2RlZmluZSBETUExX0NOVF8yICAgICAgICAgICAgICAgMHgw MworI2RlZmluZSBETUExX0NOVF8zICAgICAgICAgICAgICAgMHgwNQorI2RlZmluZSBETUEx X0NOVF80ICAgICAgICAgICAgICAgMHgwNworI2RlZmluZSBETUEyX0NOVF8xICAgICAgICAg ICAgICAgMHhDMgorI2RlZmluZSBETUEyX0NOVF8yICAgICAgICAgICAgICAgMHhDNgorI2Rl ZmluZSBETUEyX0NOVF8zICAgICAgICAgICAgICAgMHhDQQorI2RlZmluZSBETUEyX0NOVF80 ICAgICAgICAgICAgICAgMHhDRQorCisjZGVmaW5lIERNQTFfUEFHRV8xICAgICAgICAgICAg ICAweDg3ICAgIC8qIERNQSBwYWdlIHJlZ2lzdGVycyAqLworI2RlZmluZSBETUExX1BBR0Vf MiAgICAgICAgICAgICAgMHg4MworI2RlZmluZSBETUExX1BBR0VfMyAgICAgICAgICAgICAg MHg4MQorI2RlZmluZSBETUExX1BBR0VfNCAgICAgICAgICAgICAgMHg4MgorI2RlZmluZSBE TUEyX1BBR0VfMSAgICAgICAgICAgICAgMHg4RgorI2RlZmluZSBETUEyX1BBR0VfMiAgICAg ICAgICAgICAgMHg4QgorI2RlZmluZSBETUEyX1BBR0VfMyAgICAgICAgICAgICAgMHg4OQor I2RlZmluZSBETUEyX1BBR0VfNCAgICAgICAgICAgICAgMHg4QQorCisjZGVmaW5lIERNQV9U UkFOU0ZFUl9NT0RFKG0pICgobSA+PiA0KSAmIDMpCitlbnVtIFRSTU9ERSB7IERFTUFORCwg U0lOR0xFLCBCTE9DSywgQ0FTQ0FERSB9OworCisjZGVmaW5lIERNQV9UUkFOU0ZFUl9PUCht KSAobSAmIDMpCitlbnVtIFRST1AgeyBWRVJJRlksIFdSSVRFLCBSRUFELCBJTlZBTElEIH07 CisKKyNkZWZpbmUgRE1BX0FERFJfREVDKG0pICgobSA+PiAzKSAmIDEpCisKKyNkZWZpbmUg RE1BX0FVVE9JTklUKG0pICgobSA+PiAyKSAmIDEpCisKKyNlbmRpZgotLS0gc3JjL2Jhc2Uv c291bmQvbnVsbHNuZC5jCTIwMDgtMDMtMDYgMTI6Mzk6NDguMDAwMDAwMDAwICswMzAwCisr KyBzcmMvYmFzZS9zb3VuZC9udWxsc25kLmMJMjAwOC0wMy0wNiAxMjozNTo1MC4wMDAwMDAw MDAgKzAzMDAKQEAgLTM3LDcgKzM3LDYgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpudWxsc25k X25hbWUgPSAiU291bmQgT3V0cHV0OiBOVUxMIGRldmljZSI7CiBjb25zdCBpbnQgZnJhZ19z aXplID0gNDA5NjsKIHN0YXRpYyBzdHJ1Y3QgcGxheWVyX3BhcmFtcyBwYXJhbXM7Ci1zdGF0 aWMgc3RydWN0IHBsYXllcl9jYWxsYmFja3MgY2FsbHM7CiBzdGF0aWMgaW50IHJ1bm5pbmcs IGxvY2tlZDsKIHN0YXRpYyBkb3VibGUgbGFzdF90aW1lID0gMDsKIApAQCAtODMsNyArODIs NyBAQAogICAgIHRpbWUgPSBHRVR1c1RJTUUoMCk7CiAgICAgd2hpbGUgKHRpbWUgLSBsYXN0 X3RpbWUgPiBmcmFnX3RpbWUpIHsKIAlsYXN0X3RpbWUgKz0gZnJhZ190aW1lOwotCWNhbGxz LmdldF9kYXRhKE5VTEwsIGZyYWdfc2l6ZSwgJnBhcmFtcyk7CisJcGNtX2RhdGFfZ2V0KE5V TEwsIGZyYWdfc2l6ZSwgJnBhcmFtcyk7CiAgICAgfQogfQogCkBAIC05OSw1ICs5OCw1IEBA CiAgICAgcGxheWVyLnVubG9jayA9IG51bGxzbmRfdW5sb2NrOwogICAgIHBsYXllci50aW1l ciA9IG51bGxzbmRfdGltZXI7CiAgICAgcnVubmluZyA9IGxvY2tlZCA9IDA7Ci0gICAgcmV0 dXJuIHBjbV9yZWdpc3Rlcl9jbG9ja2VkX3BsYXllcihwbGF5ZXIsICZjYWxscyk7CisgICAg cmV0dXJuIHBjbV9yZWdpc3Rlcl9jbG9ja2VkX3BsYXllcihwbGF5ZXIpOwogfQotLS0gc3Jj L2Jhc2Uvc291bmQvc25kcGNtLmMJMjAwOS0wOS0yMyAxMjo1OTo0NS4wMDAwMDAwMDAgKzA0 MDAKKysrIHNyYy9iYXNlL3NvdW5kL3NuZHBjbS5jCTIwMDgtMDMtMDYgMTI6NDc6MTguMDAw MDAwMDAwICswMzAwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj aW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPGFzc2Vy dC5oPgogCiAKICNkZWZpbmUgU05EX0JVRkZFUl9TSVpFIDIwMDAwMAkvKiBlbm91Z2ggdG8g aG9sZCAyLjJzIG9mIDQ0MTAwL3N0ZXJlbyAqLwpAQCAtMjA2LDYgKzE5OSw0OCBAQAogICAg IH0KIH0KIAorc3RhdGljIGludCBwY21fZ2V0X2Zvcm1hdDgoaW50IGlzX3NpZ25lZCkKK3sK KyAgICByZXR1cm4gaXNfc2lnbmVkID8gUENNX0ZPUk1BVF9TOCA6IFBDTV9GT1JNQVRfVTg7 Cit9CisKK3N0YXRpYyBpbnQgcGNtX2dldF9mb3JtYXQxNihpbnQgaXNfc2lnbmVkKQorewor ICAgIHJldHVybiBpc19zaWduZWQgPyBQQ01fRk9STUFUX1MxNl9MRSA6IFBDTV9GT1JNQVRf VTE2X0xFOworfQorCitpbnQgcGNtX2dldF9mb3JtYXQoaW50IGlzXzE2LCBpbnQgaXNfc2ln bmVkKQoreworICAgIHJldHVybiBpc18xNiA/IHBjbV9nZXRfZm9ybWF0MTYoaXNfc2lnbmVk KSA6CisJcGNtX2dldF9mb3JtYXQ4KGlzX3NpZ25lZCk7Cit9CisKK3N0YXRpYyBpbnQgY3V0 b2ZmKGludCB2YWwsIGludCBtaW4sIGludCBtYXgpCit7CisgICAgaWYgKHZhbCA8IG1pbikK KwlyZXR1cm4gbWluOworICAgIGlmICh2YWwgPiBtYXgpCisJcmV0dXJuIG1heDsKKyAgICBy ZXR1cm4gdmFsOworfQorCitpbnQgcGNtX3NhbXBfY3V0b2ZmKGludCB2YWwsIGludCBmb3Jt YXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIFBDTV9GT1JNQVRfVTg6 CisJcmV0dXJuIGN1dG9mZih2YWwsIDAsIFVDSEFSX01BWCk7CisgICAgY2FzZSBQQ01fRk9S TUFUX1M4OgorCXJldHVybiBjdXRvZmYodmFsLCBTQ0hBUl9NSU4sIFNDSEFSX01BWCk7Cisg ICAgY2FzZSBQQ01fRk9STUFUX1UxNl9MRToKKwlyZXR1cm4gY3V0b2ZmKHZhbCwgMCwgVVNI UlRfTUFYKTsKKyAgICBjYXNlIFBDTV9GT1JNQVRfUzE2X0xFOgorCXJldHVybiBjdXRvZmYo dmFsLCBTSFJUX01JTiwgU0hSVF9NQVgpOworICAgIGRlZmF1bHQ6CisJZXJyb3IoIlBDTTog Zm9ybWF0ICVpIGlzIG5vdCBzdXBwb3J0ZWRcbiIsIGZvcm1hdCk7CisJcmV0dXJuIDA7Cisg ICAgfQorfQorCiAjZGVmaW5lIFVDMlNTKHYpICgoKih1bnNpZ25lZCBjaGFyICopKHYpIC0g MTI4KSAqIDI1NikKICNkZWZpbmUgU0MyU1ModikgKCooc2lnbmVkIGNoYXIgKikodikgKiAy NTYpCiAjZGVmaW5lIFVTMlNTKHYpICgqKHVuc2lnbmVkIHNob3J0ICopKHYpIC0gMzI3Njgp CkBAIC00MDIsNyArNDM3LDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAotZG91YmxlIHBjbV9n ZXRfc3RyZWFtX3RpbWUoaW50IHN0cm1faWR4KQorc3RhdGljIGRvdWJsZSBwY21fZ2V0X3N0 cmVhbV90aW1lKGludCBzdHJtX2lkeCkKIHsKICAgICBzdHJ1Y3Qgc2FtcGxlIHNhbXA7CiAg ICAgbG9uZyBsb25nIG5vdyA9IEdFVHVzVElNRSgwKTsKQEAgLTQxMiw3ICs0NDcsNyBAQAog ICAgIHJldHVybiBzYW1wLnRzdGFtcDsKIH0KIAotc3RhdGljIGRvdWJsZSBwY21fY2FsY190 c3RhbXAoZG91YmxlIHJhdGUsIGludCBzdHJtX2lkeCkKK2RvdWJsZSBwY21fY2FsY190c3Rh bXAoZG91YmxlIHJhdGUsIGludCBzdHJtX2lkeCkKIHsKICAgICBkb3VibGUgdGltZSwgcGVy aW9kLCB0c3RhbXA7CiAgICAgaWYgKHJhdGUgPT0gMCkKQEAgLTQ5MiwxNSArNTI3LDE0IEBA CiAJICAgIGlmIChzLnRzdGFtcCA+IHRpbWUpIHsKIC8vICAgICAgICBTX3ByaW50ZigiUENN OiBzdHJlYW0gJWkgdGltZT0lbGxpLCByZXFfdGltZT0lbGxpXG4iLCBpLCBzLnRzdGFtcCwg dGltZSk7CiAJCWlmIChzYW1wKQotCQkgICAgZm9yIChqID0gMDsgaiA8IHBjbS5zdHJlYW1b aV0uY2hhbm5lbHM7IGorKykKLQkJCXNhbXBbaV1bal0gPSBzMltqXTsKKwkJICAgIG1lbWNw eShzYW1wW2ldLCBzMiwgc2l6ZW9mKHN0cnVjdCBzYW1wbGUpICoKKwkJCSAgICBwY20uc3Ry ZWFtW2ldLmNoYW5uZWxzKTsKIAkJaWYgKHRpbWUgPj0gcGNtLnN0cmVhbVtpXS5zdGFydF90 aW1lKQogCQkgICAgcmV0Kys7CiAJCWJyZWFrOwogCSAgICB9CiAJICAgIGlmIChzaGlmdCAm JiBpZHhzW2ldID49IHBjbS5zdHJlYW1baV0uY2hhbm5lbHMpIHsKLQkJZm9yIChqID0gMDsg aiA8IHBjbS5zdHJlYW1baV0uY2hhbm5lbHM7IGorKykKLQkJICAgIHJuZ19nZXQoJnBjbS5z dHJlYW1baV0uYnVmZmVyLCBOVUxMKTsKKwkJcm5nX3JlbW92ZSgmcGNtLnN0cmVhbVtpXS5i dWZmZXIsIHBjbS5zdHJlYW1baV0uY2hhbm5lbHMsIE5VTEwpOwogCQlpZHhzW2ldIC09IHBj bS5zdHJlYW1baV0uY2hhbm5lbHM7CiAJICAgIH0KIAkgICAgZm9yIChqID0gMDsgaiA8IHBj bS5zdHJlYW1baV0uY2hhbm5lbHM7IGorKykKQEAgLTUzMSwxNyArNTY1LDE0IEBACiAJCWNv bnRpbnVlOwogCSAgICB2YWx1ZVtqXSArPSBzYW1wbGVfdG9fUzE2KGluW2ldW2pdLmRhdGEs IGluW2ldW2pdLmZvcm1hdCk7CiAJfQotCWlmICh2YWx1ZVtqXSA+IFNIUlRfTUFYKQotCSAg ICB2YWx1ZVtqXSA9IFNIUlRfTUFYOwotCWlmICh2YWx1ZVtqXSA8IFNIUlRfTUlOKQotCSAg ICB2YWx1ZVtqXSA9IFNIUlRfTUlOOwotCVMxNl90b19zYW1wbGUodmFsdWVbal0sIG91dCAr IGogKiBwY21fZm9ybWF0X3NpemUoZm9ybWF0KSwgZm9ybWF0KTsKKwlTMTZfdG9fc2FtcGxl KHBjbV9zYW1wX2N1dG9mZih2YWx1ZVtqXSwgUENNX0ZPUk1BVF9TMTZfTEUpLAorCQlvdXQg KyBqICogcGNtX2Zvcm1hdF9zaXplKGZvcm1hdCksIGZvcm1hdCk7CiAgICAgfQogfQogCiAv KiB0aGlzIGlzIGNhbGxlZCBieSB0aGUgY2xvY2tlZCBwbGF5ZXIuIEl0IHByZXBhcmVzIHRo ZSBkYXRhIGZvcgogICogaGltLCBhbmQsIGp1c3QgaW4gY2FzZSwgZmVlZHMgaXQgdG8gYWxs IHRoZSB1bmNsb2NrZWQgcGxheWVycyB0b28uICovCi1zdGF0aWMgc2l6ZV90IHBjbV9kYXRh X2dldCh2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwKK3NpemVfdCBwY21fZGF0YV9nZXQodm9p ZCAqZGF0YSwgc2l6ZV90IHNpemUsCiAJCQkgICBzdHJ1Y3QgcGxheWVyX3BhcmFtcyAqcGFy YW1zKQogewogICAgIGludCBpLCBzYW1wX3N6LCBoYXZlX2RhdGEsIGlkeHNbTUFYX1NUUkVB TVNdLCByZXQgPSAwOwpAQCAtNTY3LDcgKzU5OCw3IEBACiAJc3RhcnRfdGltZSA9IG5vdyAt IEJVRkZFUl9ERUxBWSAqIDI7CiAJc3RvcF90aW1lID0gc3RhcnRfdGltZSArIGZyYWdfcGVy aW9kOwogICAgIH0KLSAgICBTX3ByaW50ZigiUENNOiBnb2luZyB0byBwcm9jZXNzICV6dSBi eXRlcyBmb3IgJWkgcGxheWVycyAoc3Q9JWYgc3RwPSVmIGQ9JWYpXG4iLAorICAgIFNfcHJp bnRmKCJQQ006IGdvaW5nIHRvIHByb2Nlc3MgJXppIGJ5dGVzIGZvciAlaSBwbGF5ZXJzIChz dD0lZiBzdHA9JWYgZD0lZilcbiIsCiAJIHNpemUsIHBsYXllcnMubnVtX2Nsb2NrZWQgKyBw bGF5ZXJzLm51bV91bmNsb2NrZWQsIHN0YXJ0X3RpbWUsCiAJIHN0b3BfdGltZSwgbm93IC0g c3RhcnRfdGltZSk7CiAKQEAgLTYzNCw4ICs2NjUsNyBAQAogICAgIHJldHVybiByZXQ7CiB9 CiAKLWludCBwY21fcmVnaXN0ZXJfY2xvY2tlZF9wbGF5ZXIoc3RydWN0IGNsb2NrZWRfcGxh eWVyIHBsYXllciwKLQkJCQlzdHJ1Y3QgcGxheWVyX2NhbGxiYWNrcyAqY2FsbGJhY2tzKQor aW50IHBjbV9yZWdpc3Rlcl9jbG9ja2VkX3BsYXllcihzdHJ1Y3QgY2xvY2tlZF9wbGF5ZXIg cGxheWVyKQogewogICAgIFNfcHJpbnRmKCJQQ006IHJlZ2lzdGVyaW5nIGNsb2NrZWQgcGxh eWVyOiAlc1xuIiwgcGxheWVyLm5hbWUpOwogICAgIGlmIChwbGF5ZXJzLm51bV9jbG9ja2Vk KSB7CkBAIC02NDMsNyArNjczLDYgQEAKIAlyZXR1cm4gMDsKICAgICB9CiAgICAgcGxheWVy cy5jbG9ja2VkLnBsYXllciA9IHBsYXllcjsKLSAgICBjYWxsYmFja3MtPmdldF9kYXRhID0g cGNtX2RhdGFfZ2V0OwogICAgIHBsYXllcnMubnVtX2Nsb2NrZWQrKzsKICAgICByZXR1cm4g MTsKIH0KQEAgLTY2NSw4ICs2OTQsNiBAQAogewogICAgIGludCBpOwogICAgIGZvciAoaSA9 IDA7IGkgPCBwbGF5ZXJzLm51bV91bmNsb2NrZWQ7IGkrKykKLQlpZiAocGxheWVycy51bmNs b2NrZWRbaV0ucGxheWVyLnRpbWVyKQotCSAgICBwbGF5ZXJzLnVuY2xvY2tlZFtpXS5wbGF5 ZXIudGltZXIoKTsKICAgICBpZiAocGxheWVycy5jbG9ja2VkLnBsYXllci50aW1lcikKIAlw bGF5ZXJzLmNsb2NrZWQucGxheWVyLnRpbWVyKCk7CiB9CkBAIC02ODksOCArNzE2LDcgQEAK IAkgICAgcGNtX2ZsdXNoKGkpOwogICAgIGlmIChwY20ucGxheWluZykKIAlwY21fc3RvcF9v dXRwdXQoKTsKLSAgICBpZiAocGxheWVycy5jbG9ja2VkLnBsYXllci5jbG9zZSkKLQlwbGF5 ZXJzLmNsb2NrZWQucGxheWVyLmNsb3NlKCk7CisgICAgcGxheWVycy5jbG9ja2VkLnBsYXll ci5jbG9zZSgpOwogICAgIGZvciAoaSA9IDA7IGkgPCBwbGF5ZXJzLm51bV91bmNsb2NrZWQ7 IGkrKykKIAlwbGF5ZXJzLnVuY2xvY2tlZFtpXS5wbGF5ZXIuY2xvc2UoKTsKICAgICBmb3Ig KGkgPSAwOyBpIDwgcGNtLm51bV9zdHJlYW1zOyBpKyspCi0tLSBzcmMvcGx1Z2luL21pZGlt aXNjL21pZF9vX3RtZHR5LmMJMjAwOS0wNC0wMyAxMTo0NTo0MC4wMDAwMDAwMDAgKzA0MDAK KysrIHNyYy9wbHVnaW4vbWlkaW1pc2MvbWlkX29fdG1kdHkuYwkyMDA4LTAzLTA2IDEwOjU0 OjM0LjAwMDAwMDAwMCArMDMwMApAQCAtNTIsNyArNTEsNyBAQAogI2RlZmluZSBUTURUWV9C SU4gInRpbWlkaXR5IgogI2RlZmluZSBUTURUWV9BUkdTICItRUZyZXZlcmI9MCAtRUZjaG9y dXM9MCAtRUZyZXNhbXA9MSAtRUZ2bHBmPTAgLUVGbnM9MCIKIAotc3RhdGljIGNvbnN0IGNo YXIgKm1pZG90bWR0eV9uYW1lID0gIk1JREkgT3V0cHV0OiBtaWRpZCBwbHVnaW4iOworc3Rh dGljIGNvbnN0IGNoYXIgKm1pZG90bWR0eV9uYW1lID0gIk1JREkgT3V0cHV0OiBUaU1pZGl0 eSsrIHBsdWdpbiI7CiAKIHN0YXRpYyBpbnQgY3RybF9zb2NrX2luLCBjdHJsX3NvY2tfb3V0 LCBkYXRhX3NvY2ssIHBjbV9zdHJlYW07CiBzdGF0aWMgcGlkX3QgdG1kdHlfcGlkID0gLTE7 CkBAIC03MSw3ICs3MCw4IEBACiAgICAgd2hpbGUgKChzZWxyZXQgPSBzZWxlY3QoZGF0YV9z b2NrICsgMSwgJnJmZHMsIE5VTEwsIE5VTEwsICZ0dikpID4gMCkgewogCW4gPSBSUFRfU1lT Q0FMTChyZWFkKGRhdGFfc29jaywgYnVmLCBzaXplb2YoYnVmKSkpOwogCWlmIChuID4gMCkg ewotCSAgICBwY21fd3JpdGVfc2FtcGxlcyhidWYsIG4sIDQ0MTAwLCBQQ01fRk9STUFUX1Mx Nl9MRSwKKwkgICAgcGNtX3dyaXRlX3NhbXBsZXMoYnVmLCBuLCBUTURUWV9GUkVRLCBwY21f Z2V0X2Zvcm1hdCgKKwkJCSAgICAgIFRNRFRZXzhCSVQgPyAwIDogMSwgVE1EVFlfVU5TID8g MCA6IDEpLAogCQkJICAgICAgcGNtX3N0cmVhbSk7CiAJfSBlbHNlIHsKIAkgICAgYnJlYWs7 CkBAIC0yMzMsMTAgKzIyNSwxMCBAQAogICAgIGlmIChyZXQpIHsKIAljb25zdCBjaGFyICp2 ZXJfc3RyID0gIlNlcnZlciBWZXJzaW9uICI7CiAJY2hhciAqcHRyID0gc3Ryc3RyKGJ1Ziwg dmVyX3N0cik7Ci0JaW50IHZtaW4sIHZtaWQsIHZtYWosIHZlcjsKIAlpZiAoIXB0cikgewog CSAgICByZXQgPSBGQUxTRTsKIAl9IGVsc2UgeworCSAgICBpbnQgdm1pbiwgdm1pZCwgdm1h aiwgdmVyOwogCSAgICBwdHIgKz0gc3RybGVuKHZlcl9zdHIpOwogCSAgICBzc2NhbmYocHRy LCAiJWQuJWQuJWQiLCAmdm1haiwgJnZtaWQsICZ2bWluKTsKIAkgICAgdmVyID0gdm1haiAq IDEwMDAwICsgdm1pZCAqIDEwMCArIHZtaW47CkBAIC0zMTEsNyArMzAzLDcgQEAKIAogICAg IGlmIChUTURUWV9DQVBUKSB7CiAJYWRkX3RvX2lvX3NlbGVjdChkYXRhX3NvY2ssIDEsIG1p ZG90bWR0eV9pbyk7Ci0JcGNtX3N0cmVhbSA9IHBjbV9hbGxvY2F0ZV9zdHJlYW0oMiwgIk1J REkiKTsKKwlwY21fc3RyZWFtID0gcGNtX2FsbG9jYXRlX3N0cmVhbShUTURUWV9NT05PID8g MSA6IDIsICJNSURJIik7CiAgICAgfQogCiAgICAgcmV0dXJuIFRSVUU7Ci0tLSBzcmMvcGx1 Z2luL3NkbC9zbmRfb19TREwuYwkyMDA4LTAzLTA2IDEyOjM5OjQ4LjAwMDAwMDAwMCArMDMw MAorKysgc3JjL3BsdWdpbi9zZGwvc25kX29fU0RMLmMJMjAwOS0wOS0yMyAxNDozNzo0NC4w MDAwMDAwMDAgKzA0MDAKQEAgLTMzLDEyICszMywxMSBAQAogI2luY2x1ZGUgPFNETC5oPgog CiBzdGF0aWMgY29uc3QgY2hhciAqc2Rsc25kX25hbWUgPSAiU291bmQgT3V0cHV0OiBTREwg ZGV2aWNlIjsKLXN0YXRpYyBzdHJ1Y3QgcGxheWVyX2NhbGxiYWNrcyBjYWxsczsKIHN0YXRp YyBzdHJ1Y3QgcGxheWVyX3BhcmFtcyBwYXJhbXM7CiAKIHN0YXRpYyB2b2lkIHNkbHNuZF9j YWxsYmFjayh2b2lkICp1c2VyZGF0YSwgVWludDggKiBzdHJlYW0sIGludCBsZW4pCiB7Ci0g ICAgY2FsbHMuZ2V0X2RhdGEoc3RyZWFtLCBsZW4sICZwYXJhbXMpOworICAgIHBjbV9kYXRh X2dldChzdHJlYW0sIGxlbiwgJnBhcmFtcyk7CiB9CiAKIHN0YXRpYyB2b2lkIHNkbHNuZF9z dGFydCh2b2lkKQpAQCAtODcsOSArODYsOCBAQAogICAgIHBsYXllci5jbG9zZSA9IHNkbHNu ZF9jbG9zZTsKICAgICBwbGF5ZXIubG9jayA9IFNETF9Mb2NrQXVkaW87CiAgICAgcGxheWVy LnVubG9jayA9IFNETF9VbmxvY2tBdWRpbzsKLSAgICBwbGF5ZXIudGltZXIgPSBOVUxMOwog I2lmIDEKLSAgICByZXR1cm4gcGNtX3JlZ2lzdGVyX2Nsb2NrZWRfcGxheWVyKHBsYXllciwg JmNhbGxzKTsKKyAgICByZXR1cm4gcGNtX3JlZ2lzdGVyX2Nsb2NrZWRfcGxheWVyKHBsYXll cik7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCi0tLSBzcmMvcGx1Z2luL3NuZGZp bGUvc25kX29fd2F2LmMJMjAwNy0wNC0yOCAyMjoyMTozMy4wMDAwMDAwMDAgKzA0MDAKKysr IHNyYy9wbHVnaW4vc25kZmlsZS9zbmRfb193YXYuYwkyMDA2LTEyLTExIDE4OjA3OjA1LjAw MDAwMDAwMCArMDMwMApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj aW5jbHVkZSA8c25kZmlsZS5oPgogCi1zdGF0aWMgY29uc3QgY2hhciAqd2F2c25kX25hbWUg PSAiU291bmQgT3V0cHV0OiBXQVYgd3JpdGVyIjsKK3N0YXRpYyBjb25zdCBjaGFyICp3YXZz bmRfbmFtZSA9ICJTb3VuZCBPdXRwdXQ6IFdBViBmaWxlIHdyaXRlciI7CiBzdGF0aWMgU05E RklMRSAqd2F2OwogCiBzdGF0aWMgaW50IHdhdnNuZF9vcGVuKHN0cnVjdCBwbGF5ZXJfcGFy YW1zICpwYXIpCkBAIC02Nyw3ICs2Nyw2IEBACiAgICAgcGxheWVyLm9wZW4gPSB3YXZzbmRf b3BlbjsKICAgICBwbGF5ZXIuY2xvc2UgPSB3YXZzbmRfY2xvc2U7CiAgICAgcGxheWVyLndy aXRlID0gd2F2c25kX3dyaXRlOwotICAgIHBsYXllci50aW1lciA9IE5VTEw7CiAjaWYgMAog ICAgIHJldHVybiBwY21fcmVnaXN0ZXJfdW5jbG9ja2VkX3BsYXllcihwbGF5ZXIpOwogI2Vs c2UKLS0tIHNyYy9pbmNsdWRlL3NvdW5kL3NuZHBjbS5oCTIwMDctMDQtMjggMjI6MjE6MjMu MDAwMDAwMDAwICswNDAwCisrKyBzcmMvaW5jbHVkZS9zb3VuZC9zbmRwY20uaAkyMDA4LTAz LTA2IDEwOjQyOjMzLjAwMDAwMDAwMCArMDMwMApAQCAtMzAsMTMgKzMwLDE1IEBACiBleHRl cm4gdm9pZCBwY21fc2V0X2ZsYWcoaW50IHN0cm1faWR4LCBpbnQgZmxhZyk7CiBleHRlcm4g dm9pZCBwY21fc2V0X21vZGUoaW50IHN0cm1faWR4LCBpbnQgbW9kZSk7CiBleHRlcm4gaW50 IHBjbV9mbHVzaChpbnQgc3RybV9pZHgpOworZXh0ZXJuIGludCBwY21fc2FtcF9jdXRvZmYo aW50IHZhbCwgaW50IGZvcm1hdCk7CitleHRlcm4gaW50IHBjbV9nZXRfZm9ybWF0KGludCBp c18xNiwgaW50IGlzX3NpZ25lZCk7CiBleHRlcm4gZG91YmxlIHBjbV9zYW1wX3BlcmlvZChk b3VibGUgcmF0ZSwgaW50IGNoYW5uZWxzKTsKIGV4dGVybiBkb3VibGUgcGNtX2ZyYWdfcGVy aW9kKGludCBzaXplLCBzdHJ1Y3QgcGxheWVyX3BhcmFtcyAqcGFyYW1zKTsKIGV4dGVybiB2 b2lkIHBjbV93cml0ZV9zYW1wbGVzKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsCi0JZG91Ymxl IHJhdGUsIGludCBmb3JtYXQsIGludCBzdHJtX2lkeCk7CisJCQkgICAgICBkb3VibGUgcmF0 ZSwgaW50IGZvcm1hdCwgaW50IHN0cm1faWR4KTsKIGV4dGVybiBpbnQgcGNtX2Zvcm1hdF9z aXplKGludCBmb3JtYXQpOwogZXh0ZXJuIHZvaWQgcGNtX3RpbWVyKHZvaWQpOwotZXh0ZXJu IGRvdWJsZSBwY21fZ2V0X3N0cmVhbV90aW1lKGludCBzdHJtX2lkeCk7CitleHRlcm4gZG91 YmxlIHBjbV9jYWxjX3RzdGFtcChkb3VibGUgcmF0ZSwgaW50IHN0cm1faWR4KTsKIAogI2Rl ZmluZSBQQ01fRkxBR19SQVcgMQogCi0tLSBzcmMvaW5jbHVkZS9zb3VuZC9zb3VuZC5oCTIw MDgtMDMtMDYgMTI6Mzk6NDguMDAwMDAwMDAwICswMzAwCisrKyBzcmMvaW5jbHVkZS9zb3Vu ZC9zb3VuZC5oCTIwMDktMDktMjMgMTQ6NDM6NTQuMDAwMDAwMDAwICswNDAwCkBAIC0yMCw4 ICsyMCw4IEBACiAgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKICAqICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCi0j aWZuZGVmIF9TT1VORF9ICi0jZGVmaW5lIF9TT1VORF9ICisjaWZuZGVmIF9fU09VTkRfSF9f CisjZGVmaW5lIF9fU09VTkRfSF9fCiAKIC8qIFRoaXMgaXMgdGhlIGNvcnJlY3Qgd2F5IHRv IHJ1biBhbiBTQiB0aW1lciB0aWNrICovCiBleHRlcm4gdm9pZCBydW5fbmV3X3NiKHZvaWQp OwpAQCAtMzYsOSArMzYsNyBAQAogICBpbnQgY2hhbm5lbHM7CiB9OwogCi1zdHJ1Y3QgcGxh eWVyX2NhbGxiYWNrcyB7Ci0gIHNpemVfdCAoKmdldF9kYXRhKSh2b2lkICpidWYsIHNpemVf dCBzaXplLCBzdHJ1Y3QgcGxheWVyX3BhcmFtcyAqcGFyYW1zKTsKLX07CitzaXplX3QgcGNt X2RhdGFfZ2V0KHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzdHJ1Y3QgcGxheWVyX3BhcmFt cyAqcGFyYW1zKTsKIAogc3RydWN0IGNsb2NrZWRfcGxheWVyIHsKICAgY29uc3QgY2hhciAq bmFtZTsKQEAgLTU1LDEyICs1MywxMCBAQAogICBjb25zdCBjaGFyICpuYW1lOwogICBpbnQg KCpvcGVuKShzdHJ1Y3QgcGxheWVyX3BhcmFtcyAqcGFyYW1zKTsKICAgdm9pZCAoKmNsb3Nl KSh2b2lkKTsKLSAgdm9pZCAoKnRpbWVyKSh2b2lkKTsKICAgc2l6ZV90ICgqd3JpdGUpKHZv aWQgKmJ1Ziwgc2l6ZV90IHNpemUpOwogfTsKIAotZXh0ZXJuIGludCBwY21fcmVnaXN0ZXJf Y2xvY2tlZF9wbGF5ZXIoc3RydWN0IGNsb2NrZWRfcGxheWVyIHBsYXllciwKLSAgICBzdHJ1 Y3QgcGxheWVyX2NhbGxiYWNrcyAqY2FsbGJhY2tzKTsKK2V4dGVybiBpbnQgcGNtX3JlZ2lz dGVyX2Nsb2NrZWRfcGxheWVyKHN0cnVjdCBjbG9ja2VkX3BsYXllciBwbGF5ZXIpOwogZXh0 ZXJuIGludCBwY21fcmVnaXN0ZXJfdW5jbG9ja2VkX3BsYXllcihzdHJ1Y3QgdW5jbG9ja2Vk X3BsYXllciBwbGF5ZXIpOwogCiAvKiogUENNIHNhbXBsZSBmb3JtYXQgKi8KQEAgLTg0LDQg KzgwLDQgQEAKIAlQQ01fRk9STUFUX0lNQV9BRFBDTSwKIH07CiAKLSNlbmRpZgkJLyogRU1V X1NPVU5EX0ggKi8KKyNlbmRpZgpJbmRleDogZG1hLmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Jj L2luY2x1ZGUvZG1hLmgJKHJldmlzaW9uIDE5NjQpCisrKyBzcmMvaW5jbHVkZS9kbWEuaAko d29ya2luZyBjb3B5KQpAQCAtOSwxMiArOSw3IEBACiAKIHZvaWQgZG1hX2luaXQodm9pZCk7 CiB2b2lkIGRtYV9yZXNldCh2b2lkKTsKLXZvaWQgZG1hX25ld19pbml0KHZvaWQpOwotdm9p ZCBkbWFfbmV3X3Jlc2V0KHZvaWQpOwogCi1lbnVtIHsgRE1BX05PX0RBQ0ssIERNQV9EQUNL IH07Ci1pbnQgZG1hX3B1bHNlX0RSUShpbnQgY2gsIEJpdDh1ICpidWYpOwotCiAvKiA4MjM3 IERNQSBjb250cm9sbGVycyAqLwogI2RlZmluZSBJT19ETUExX0JBU0UJMHgwMAkvKiA4IGJp dCBzbGF2ZSBETUEsIGNoYW5uZWxzIDAuLjMgKi8KICNkZWZpbmUgSU9fRE1BMl9CQVNFCTB4 QzAJLyogMTYgYml0IG1hc3RlciBETUEsIGNoIDQoPXNsYXZlIGlucHV0KS4uNyAqLwotLS0g L2Rldi9udWxsCTIwMDktMDktMjMgMTY6NTA6MTYuOTk0MDA3NDMxICswNDAwCisrKyBzcmMv aW5jbHVkZS9kbWFuZXcuaAkyMDA5LTA5LTIzIDE0OjU0OjE2LjAwMDAwMDAwMCArMDQwMApA QCAtMCwwICsxLDMzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNiBTdGFzIFNlcmdl ZXYgPHN0c3BAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICoKKyAqIFRoZSBiZWxvdyBjb3B5 cmlnaHQgc3RyaW5ncyBoYXZlIHRvIGJlIGRpc3RyaWJ1dGVkIHVuY2hhbmdlZCB0b2dldGhl cgorICogd2l0aCB0aGlzIGZpbGUuIFRoaXMgcHJlZml4IGNhbiBub3QgYmUgbW9kaWZpZWQg b3Igc2VwYXJhdGVkLgorICovCisKKy8qCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0RNQV9IX18KKyNkZWZpbmUgX19ETUFfSF9fCisK K3ZvaWQgZG1hX25ld19pbml0KHZvaWQpOwordm9pZCBkbWFfbmV3X3Jlc2V0KHZvaWQpOwor CitlbnVtIHsgRE1BX05PX0RBQ0ssIERNQV9EQUNLIH07CitpbnQgZG1hX3B1bHNlX0RSUShp bnQgY2gsIEJpdDh1ICpidWYpOworCisjZW5kaWYKSW5kZXg6IGRtYS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHNyYy9iYXNlL2Rldi9kbWEvZG1hLmMJKHJldmlzaW9uIDE5NjQpCisrKyBzcmMv YmFzZS9kZXYvZG1hL2RtYS5jCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAj aW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSAi ZG1hLmgiCisjaW5jbHVkZSAiZG1hbmV3LmgiCiAjaW5jbHVkZSAicGljLmgiCiAjaW5jbHVk ZSAicG9ydC5oIgogCg== --------------050102060301020100070203--