From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IhSOg-00026Z-VM for qemu-devel@nongnu.org; Mon, 15 Oct 2007 12:02:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IhSOd-00024R-L2 for qemu-devel@nongnu.org; Mon, 15 Oct 2007 12:02:26 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IhSOd-00024K-BV for qemu-devel@nongnu.org; Mon, 15 Oct 2007 12:02:23 -0400 Received: from ug-out-1314.google.com ([66.249.92.169]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IhSOa-0000sL-1i for qemu-devel@nongnu.org; Mon, 15 Oct 2007 12:02:23 -0400 Received: by ug-out-1314.google.com with SMTP id m2so848718uge for ; Mon, 15 Oct 2007 09:02:17 -0700 (PDT) Message-ID: Date: Mon, 15 Oct 2007 19:02:15 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] RFC: reverse-endian softmmu memory accessors In-Reply-To: <1192450234.9976.413.camel@rapid> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_37834_4126741.1192464135907" References: <1192362549.9976.389.camel@rapid> <1192450234.9976.413.camel@rapid> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_37834_4126741.1192464135907 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/15/07, J. Mayer wrote: > On Sun, 2007-10-14 at 15:59 +0300, Blue Swirl wrote: > > On 10/14/07, J. Mayer wrote: > > > Here's an updated version of the patch against current CVS. > > > This patches provides reverse-endian, little-endian and big-endian > > > memory accessors, available with and without softmmu. It also provides > > > an IO_MEM_REVERSE TLB flag to allow future support of per-page > > > endianness control, which is required by some targets CPU emulations. > > > Having reverse-endian memory accessors also make it possible to optimise > > > reverse-endian memory access when the target CPU has dedicated > > > instructions. For now, it includes optimisations for the PowerPC target. > > > > This breaks Sparc32 softmmu, I get a black screen. Your changes to > > target-sparc and hw/sun4m.c look fine, so the problem could be in IO? > > Did it worked before my commits ? I may have done something wrong during > the merge... > I will do more checks and more tests... If I disable the IOSWAP code, black screen is gone. I think this is logical: the io accessors return host CPU values, therefore no byte swapping need to be performed. The attached version works for me. ------=_Part_37834_4126741.1192464135907 Content-Type: text/x-diff; name="softmmu_reverse_endian.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="softmmu_reverse_endian.diff"; filename="softmmu_reverse_endian.diff" X-Attachment-Id: f_f7t6c4p7 SW5kZXg6IGNwdS1hbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcHUtYWxsLmgub3JpZwkyMDA3LTEwLTE1 IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAwMAorKysgY3B1LWFsbC5oCTIwMDctMTAtMTUgMTU6NDE6 MDkuMDAwMDAwMDAwICswMDAwCkBAIC0xNjEsOSArMTYxLDkgQEAKICAqCiAgKiBlbmRpYW4gaXM6 CiAgKiAoZW1wdHkpOiB0YXJnZXQgY3B1IGVuZGlhbm5lc3Mgb3IgOCBiaXQgYWNjZXNzCi0gKiAg IHIgICAgOiByZXZlcnNlZCB0YXJnZXQgY3B1IGVuZGlhbm5lc3MgKG5vdCBpbXBsZW1lbnRlZCB5 ZXQpCi0gKiAgIGJlICAgOiBiaWcgZW5kaWFuIChub3QgaW1wbGVtZW50ZWQgeWV0KQotICogICBs ZSAgIDogbGl0dGxlIGVuZGlhbiAobm90IGltcGxlbWVudGVkIHlldCkKKyAqICAgciAgICA6IHJl dmVyc2VkIHRhcmdldCBjcHUgZW5kaWFubmVzcworICogICBiZSAgIDogYmlnIGVuZGlhbgorICog ICBsZSAgIDogbGl0dGxlIGVuZGlhbgogICoKICAqIGFjY2Vzc190eXBlIGlzOgogICogICByYXcg ICAgOiBob3N0IG1lbW9yeSBhY2Nlc3MKQEAgLTIxNSw3ICsyMTUsMzIgQEAKICNlbmRpZgogfQog Ci1zdGF0aWMgaW5saW5lIGludCBsZGxfbGVfcCh2b2lkICpwdHIpCisjaWYgKFRBUkdFVF9MT05H X0JJVFMgPT0gNjQpCitzdGF0aWMgaW5saW5lIGludDY0X3QgbGR1bF9sZV9wKHZvaWQgKnB0cikK K3sKKyNpZmRlZiBfX3Bvd2VycGNfXworICAgIGludCB2YWw7CisgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKCJsd2JyeCAlMCwwLCUxIiA6ICI9ciIgKHZhbCkgOiAiciIgKHB0cikpOworICAgIHJl dHVybiAodWludDMyX3QpdmFsOworI2Vsc2UKKyAgICB1aW50OF90ICpwID0gcHRyOworICAgIHJl dHVybiBwWzBdIHwgKHBbMV0gPDwgOCkgfCAocFsyXSA8PCAxNikgfCAocFszXSA8PCAyNCk7Cisj ZW5kaWYKK30KKworc3RhdGljIGlubGluZSBpbnQ2NF90IGxkc2xfbGVfcCh2b2lkICpwdHIpCit7 CisjaWZkZWYgX19wb3dlcnBjX18KKyAgICBpbnQgdmFsOworICAgIF9fYXNtX18gX192b2xhdGls ZV9fICgibHdicnggJTAsMCwlMSIgOiAiPXIiICh2YWwpIDogInIiIChwdHIpKTsKKyAgICByZXR1 cm4gKGludDMyX3QpdmFsOworI2Vsc2UKKyAgICB1aW50OF90ICpwID0gcHRyOworICAgIHJldHVy biAoaW50MzJfdCkocFswXSB8IChwWzFdIDw8IDgpIHwgKHBbMl0gPDwgMTYpIHwgKHBbM10gPDwg MjQpKTsKKyNlbmRpZgorfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50IGxkdWxfbGVfcCh2b2lk ICpwdHIpCiB7CiAjaWZkZWYgX19wb3dlcnBjX18KICAgICBpbnQgdmFsOwpAQCAtMjI2LDEzICsy NTEsMTQgQEAKICAgICByZXR1cm4gcFswXSB8IChwWzFdIDw8IDgpIHwgKHBbMl0gPDwgMTYpIHwg KHBbM10gPDwgMjQpOwogI2VuZGlmCiB9CisjZW5kaWYKIAogc3RhdGljIGlubGluZSB1aW50NjRf dCBsZHFfbGVfcCh2b2lkICpwdHIpCiB7CiAgICAgdWludDhfdCAqcCA9IHB0cjsKICAgICB1aW50 MzJfdCB2MSwgdjI7Ci0gICAgdjEgPSBsZGxfbGVfcChwKTsKLSAgICB2MiA9IGxkbF9sZV9wKHAg KyA0KTsKKyAgICB2MSA9IGxkdWxfbGVfcChwKTsKKyAgICB2MiA9IGxkdWxfbGVfcChwICsgNCk7 CiAgICAgcmV0dXJuIHYxIHwgKCh1aW50NjRfdCl2MiA8PCAzMik7CiB9CiAKQEAgLTI3NSw3ICsz MDEsNyBAQAogICAgICAgICBmbG9hdDMyIGY7CiAgICAgICAgIHVpbnQzMl90IGk7CiAgICAgfSB1 OwotICAgIHUuaSA9IGxkbF9sZV9wKHB0cik7CisgICAgdS5pID0gbGR1bF9sZV9wKHB0cik7CiAg ICAgcmV0dXJuIHUuZjsKIH0KIApAQCAtMjkyLDggKzMxOCw4IEBACiBzdGF0aWMgaW5saW5lIGZs b2F0NjQgbGRmcV9sZV9wKHZvaWQgKnB0cikKIHsKICAgICBDUFVfRG91YmxlVSB1OwotICAgIHUu bC5sb3dlciA9IGxkbF9sZV9wKHB0cik7Ci0gICAgdS5sLnVwcGVyID0gbGRsX2xlX3AocHRyICsg NCk7CisgICAgdS5sLmxvd2VyID0gbGR1bF9sZV9wKHB0cik7CisgICAgdS5sLnVwcGVyID0gbGR1 bF9sZV9wKHB0ciArIDQpOwogICAgIHJldHVybiB1LmQ7CiB9CiAKQEAgLTMxNywxMCArMzQzLDIy IEBACiAgICAgcmV0dXJuICooaW50MTZfdCAqKXB0cjsKIH0KIAotc3RhdGljIGlubGluZSBpbnQg bGRsX2xlX3Aodm9pZCAqcHRyKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorc3RhdGlj IGlubGluZSBpbnQ2NF90IGxkdWxfbGVfcCh2b2lkICpwdHIpCit7CisgICAgcmV0dXJuICoodWlu dDMyX3QgKilwdHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjRfdCBsZHNsX2xlX3Aodm9pZCAq cHRyKQoreworICAgIHJldHVybiAqKGludDMyX3QgKilwdHI7Cit9CisjZWxzZQorc3RhdGljIGlu bGluZSBpbnQgbGR1bF9sZV9wKHZvaWQgKnB0cikKIHsKICAgICByZXR1cm4gKih1aW50MzJfdCAq KXB0cjsKIH0KKyNlbmRpZgogCiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGxkcV9sZV9wKHZvaWQg KnB0cikKIHsKQEAgLTM5Nyw3ICs0MzUsMzggQEAKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5l IGludCBsZGxfYmVfcCh2b2lkICpwdHIpCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCitz dGF0aWMgaW5saW5lIGludDY0X3QgbGR1bF9iZV9wKHZvaWQgKnB0cikKK3sKKyNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgaW50IHZhbDsKKyAgICBhc20g dm9sYXRpbGUgKCJtb3ZsICUxLCAlMFxuIgorICAgICAgICAgICAgICAgICAgImJzd2FwICUwXG4i CisgICAgICAgICAgICAgICAgICA6ICI9ciIgKHZhbCkKKyAgICAgICAgICAgICAgICAgIDogIm0i ICgqKHVpbnQzMl90ICopcHRyKSk7CisgICAgcmV0dXJuICh1aW50MzJfdCl2YWw7CisjZWxzZQor ICAgIHVpbnQ4X3QgKmIgPSAodWludDhfdCAqKSBwdHI7CisgICAgcmV0dXJuIChiWzBdIDw8IDI0 KSB8IChiWzFdIDw8IDE2KSB8IChiWzJdIDw8IDgpIHwgYlszXTsKKyNlbmRpZgorfQorCitzdGF0 aWMgaW5saW5lIGludDY0X3QgbGRzbF9iZV9wKHZvaWQgKnB0cikKK3sKKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgaW50IHZhbDsKKyAgICBhc20gdm9s YXRpbGUgKCJtb3ZsICUxLCAlMFxuIgorICAgICAgICAgICAgICAgICAgImJzd2FwICUwXG4iCisg ICAgICAgICAgICAgICAgICA6ICI9ciIgKHZhbCkKKyAgICAgICAgICAgICAgICAgIDogIm0iICgq KHVpbnQzMl90ICopcHRyKSk7CisgICAgcmV0dXJuIChpbnQzMl90KXZhbDsKKyNlbHNlCisgICAg dWludDhfdCAqYiA9ICh1aW50OF90ICopIHB0cjsKKyAgICByZXR1cm4gKGludDMyX3QpKChiWzBd IDw8IDI0KSB8IChiWzFdIDw8IDE2KSB8IChiWzJdIDw8IDgpIHwgYlszXSk7CisjZW5kaWYKK30K KyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBsZHVsX2JlX3Aodm9pZCAqcHRyKQogewogI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKICAgICBpbnQgdmFsOwpAQCAt NDExLDEyICs0ODAsMTMgQEAKICAgICByZXR1cm4gKGJbMF0gPDwgMjQpIHwgKGJbMV0gPDwgMTYp IHwgKGJbMl0gPDwgOCkgfCBiWzNdOwogI2VuZGlmCiB9CisjZW5kaWYKIAogc3RhdGljIGlubGlu ZSB1aW50NjRfdCBsZHFfYmVfcCh2b2lkICpwdHIpCiB7CiAgICAgdWludDMyX3QgYSxiOwotICAg IGEgPSBsZGxfYmVfcChwdHIpOwotICAgIGIgPSBsZGxfYmVfcChwdHIrNCk7CisgICAgYSA9IGxk dWxfYmVfcChwdHIpOworICAgIGIgPSBsZHVsX2JlX3AocHRyKzQpOwogICAgIHJldHVybiAoKCh1 aW50NjRfdClhPDwzMil8Yik7CiB9CiAKQEAgLTQ2NCw3ICs1MzQsNyBAQAogICAgICAgICBmbG9h dDMyIGY7CiAgICAgICAgIHVpbnQzMl90IGk7CiAgICAgfSB1OwotICAgIHUuaSA9IGxkbF9iZV9w KHB0cik7CisgICAgdS5pID0gbGR1bF9iZV9wKHB0cik7CiAgICAgcmV0dXJuIHUuZjsKIH0KIApA QCAtNDgxLDggKzU1MSw4IEBACiBzdGF0aWMgaW5saW5lIGZsb2F0NjQgbGRmcV9iZV9wKHZvaWQg KnB0cikKIHsKICAgICBDUFVfRG91YmxlVSB1OwotICAgIHUubC51cHBlciA9IGxkbF9iZV9wKHB0 cik7Ci0gICAgdS5sLmxvd2VyID0gbGRsX2JlX3AocHRyICsgNCk7CisgICAgdS5sLnVwcGVyID0g bGR1bF9iZV9wKHB0cik7CisgICAgdS5sLmxvd2VyID0gbGR1bF9iZV9wKHB0ciArIDQpOwogICAg IHJldHVybiB1LmQ7CiB9CiAKQEAgLTUwNiwxMSArNTc2LDIzIEBACiAgICAgcmV0dXJuICooaW50 MTZfdCAqKXB0cjsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgbGRsX2JlX3Aodm9pZCAqcHRyKQor I2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorc3RhdGljIGlubGluZSBpbnQ2NF90IGxkdWxf YmVfcCh2b2lkICpwdHIpCiB7CiAgICAgcmV0dXJuICoodWludDMyX3QgKilwdHI7CiB9CiAKK3N0 YXRpYyBpbmxpbmUgaW50NjRfdCBsZHNsX2JlX3Aodm9pZCAqcHRyKQoreworICAgIHJldHVybiAq KGludDMyX3QgKilwdHI7Cit9CisjZWxzZQorc3RhdGljIGlubGluZSBpbnQgbGR1bF9iZV9wKHZv aWQgKnB0cikKK3sKKyAgICByZXR1cm4gKih1aW50MzJfdCAqKXB0cjsKK30KKyNlbmRpZgorCiBz dGF0aWMgaW5saW5lIHVpbnQ2NF90IGxkcV9iZV9wKHZvaWQgKnB0cikKIHsKICAgICByZXR1cm4g Kih1aW50NjRfdCAqKXB0cjsKQEAgLTU1Nyw5ICs2MzksMTMgQEAKIAogLyogdGFyZ2V0IENQVSBt ZW1vcnkgYWNjZXNzIGZ1bmN0aW9ucyAqLwogI2lmIGRlZmluZWQoVEFSR0VUX1dPUkRTX0JJR0VO RElBTikKKy8qIG5hdGl2ZS1lbmRpYW4gKi8KICNkZWZpbmUgbGR1d19wKHApIGxkdXdfYmVfcChw KQogI2RlZmluZSBsZHN3X3AocCkgbGRzd19iZV9wKHApCi0jZGVmaW5lIGxkbF9wKHApIGxkbF9i ZV9wKHApCisjZGVmaW5lIGxkdWxfcChwKSBsZHVsX2JlX3AocCkKKyNpZiAoVEFSR0VUX0xPTkdf QklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbF9wKHApIGxkc2xfYmVfcChwKQorI2VuZGlmCiAjZGVm aW5lIGxkcV9wKHApIGxkcV9iZV9wKHApCiAjZGVmaW5lIGxkZmxfcChwKSBsZGZsX2JlX3AocCkK ICNkZWZpbmUgbGRmcV9wKHApIGxkZnFfYmVfcChwKQpAQCAtNTY4LDEwICs2NTQsMjkgQEAKICNk ZWZpbmUgc3RxX3AocCwgdikgc3RxX2JlX3AocCwgdikKICNkZWZpbmUgc3RmbF9wKHAsIHYpIHN0 ZmxfYmVfcChwLCB2KQogI2RlZmluZSBzdGZxX3AocCwgdikgc3RmcV9iZV9wKHAsIHYpCisvKiBy ZXZlcnNlLWVuZGlhbiAqLworI2RlZmluZSBsZHV3cl9wKHApIGxkdXdfbGVfcChwKQorI2RlZmlu ZSBsZHN3cl9wKHApIGxkc3dfbGVfcChwKQorI2RlZmluZSBsZHVscl9wKHApIGxkdWxfbGVfcChw KQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNscl9wKHApIGxkc2xf bGVfcChwKQorI2VuZGlmCisjZGVmaW5lIGxkcXJfcChwKSBsZHFfbGVfcChwKQorI2RlZmluZSBs ZGZscl9wKHApIGxkZmxfbGVfcChwKQorI2RlZmluZSBsZGZxcl9wKHApIGxkZnFfbGVfcChwKQor I2RlZmluZSBzdHdyX3AocCwgdikgc3R3X2xlX3AocCwgdikKKyNkZWZpbmUgc3Rscl9wKHAsIHYp IHN0bF9sZV9wKHAsIHYpCisjZGVmaW5lIHN0cXJfcChwLCB2KSBzdHFfbGVfcChwLCB2KQorI2Rl ZmluZSBzdGZscl9wKHAsIHYpIHN0ZmxfbGVfcChwLCB2KQorI2RlZmluZSBzdGZxcl9wKHAsIHYp IHN0ZnFfbGVfcChwLCB2KQogI2Vsc2UKKy8qIG5hdGl2ZS1lbmRpYW4gKi8KICNkZWZpbmUgbGR1 d19wKHApIGxkdXdfbGVfcChwKQogI2RlZmluZSBsZHN3X3AocCkgbGRzd19sZV9wKHApCi0jZGVm aW5lIGxkbF9wKHApIGxkbF9sZV9wKHApCisjZGVmaW5lIGxkdWxfcChwKSBsZHVsX2xlX3AocCkK KyNpZiAoVEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbF9wKHApIGxkc2xfbGVf cChwKQorI2VuZGlmCiAjZGVmaW5lIGxkcV9wKHApIGxkcV9sZV9wKHApCiAjZGVmaW5lIGxkZmxf cChwKSBsZGZsX2xlX3AocCkKICNkZWZpbmUgbGRmcV9wKHApIGxkZnFfbGVfcChwKQpAQCAtNTgw LDYgKzY4NSwyMSBAQAogI2RlZmluZSBzdHFfcChwLCB2KSBzdHFfbGVfcChwLCB2KQogI2RlZmlu ZSBzdGZsX3AocCwgdikgc3RmbF9sZV9wKHAsIHYpCiAjZGVmaW5lIHN0ZnFfcChwLCB2KSBzdGZx X2xlX3AocCwgdikKKy8qIHJldmVyc2UtZW5kaWFuICovCisjZGVmaW5lIGxkdXdyX3AocCkgbGR1 d19iZV9wKHApCisjZGVmaW5lIGxkc3dyX3AocCkgbGRzd19iZV9wKHApCisjZGVmaW5lIGxkdWxy X3AocCkgbGR1bF9iZV9wKHApCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5l IGxkc2xyX3AocCkgbGRzbF9iZV9wKHApCisjZW5kaWYKKyNkZWZpbmUgbGRxcl9wKHApIGxkcV9i ZV9wKHApCisjZGVmaW5lIGxkZmxyX3AocCkgbGRmbF9iZV9wKHApCisjZGVmaW5lIGxkZnFyX3Ao cCkgbGRmcV9iZV9wKHApCisjZGVmaW5lIHN0d3JfcChwLCB2KSBzdHdfYmVfcChwLCB2KQorI2Rl ZmluZSBzdGxyX3AocCwgdikgc3RsX2JlX3AocCwgdikKKyNkZWZpbmUgc3Rxcl9wKHAsIHYpIHN0 cV9iZV9wKHAsIHYpCisjZGVmaW5lIHN0ZmxyX3AocCwgdikgc3RmbF9iZV9wKHAsIHYpCisjZGVm aW5lIHN0ZnFyX3AocCwgdikgc3RmcV9iZV9wKHAsIHYpCiAjZW5kaWYKIAogLyogTU1VIG1lbW9y eSBhY2Nlc3MgbWFjcm9zICovCkBAIC02MDUsMTEgKzcyNSwxNSBAQAogI2RlZmluZSBsYWRkcih4 KSAodWludDhfdCAqKShsb25nKSh4KQogI2VuZGlmCiAKKy8qIG5hdGl2ZS1lbmRpYW4gKi8KICNk ZWZpbmUgbGR1Yl9yYXcocCkgbGR1Yl9wKGxhZGRyKChwKSkpCiAjZGVmaW5lIGxkc2JfcmF3KHAp IGxkc2JfcChsYWRkcigocCkpKQogI2RlZmluZSBsZHV3X3JhdyhwKSBsZHV3X3AobGFkZHIoKHAp KSkKICNkZWZpbmUgbGRzd19yYXcocCkgbGRzd19wKGxhZGRyKChwKSkpCi0jZGVmaW5lIGxkbF9y YXcocCkgbGRsX3AobGFkZHIoKHApKSkKKyNkZWZpbmUgbGR1bF9yYXcocCkgbGR1bF9wKGxhZGRy KChwKSkpCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xfcmF3KHAp IGxkc2xfcChsYWRkcigocCkpKQorI2VuZGlmCiAjZGVmaW5lIGxkcV9yYXcocCkgbGRxX3AobGFk ZHIoKHApKSkKICNkZWZpbmUgbGRmbF9yYXcocCkgbGRmbF9wKGxhZGRyKChwKSkpCiAjZGVmaW5l IGxkZnFfcmF3KHApIGxkZnFfcChsYWRkcigocCkpKQpAQCAtNjE5LDE2ICs3NDMsMTEyIEBACiAj ZGVmaW5lIHN0cV9yYXcocCwgdikgc3RxX3Aoc2FkZHIoKHApKSwgdikKICNkZWZpbmUgc3RmbF9y YXcocCwgdikgc3RmbF9wKHNhZGRyKChwKSksIHYpCiAjZGVmaW5lIHN0ZnFfcmF3KHAsIHYpIHN0 ZnFfcChzYWRkcigocCkpLCB2KQotCisvKiByZXZlcnNlIGVuZGlhbiAqLworI2RlZmluZSBsZHVi cl9yYXcocCkgbGR1Yl9wKGxhZGRyKChwKSkpCisjZGVmaW5lIGxkc2JyX3JhdyhwKSBsZHNiX3Ao bGFkZHIoKHApKSkKKyNkZWZpbmUgbGR1d3JfcmF3KHApIGxkdXdyX3AobGFkZHIoKHApKSkKKyNk ZWZpbmUgbGRzd3JfcmF3KHApIGxkc3dyX3AobGFkZHIoKHApKSkKKyNkZWZpbmUgbGR1bHJfcmF3 KHApIGxkdWxyX3AobGFkZHIoKHApKSkKKyNpZiAoVEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNk ZWZpbmUgbGRzbHJfcmF3KHApIGxkc2xyX3AobGFkZHIoKHApKSkKKyNlbmRpZgorI2RlZmluZSBs ZHFyX3JhdyhwKSBsZHFyX3AobGFkZHIoKHApKSkKKyNkZWZpbmUgbGRmbHJfcmF3KHApIGxkZmxy X3AobGFkZHIoKHApKSkKKyNkZWZpbmUgbGRmcXJfcmF3KHApIGxkZnFyX3AobGFkZHIoKHApKSkK KyNkZWZpbmUgc3Ricl9yYXcocCwgdikgc3RiX3Aoc2FkZHIoKHApKSwgdikKKyNkZWZpbmUgc3R3 cl9yYXcocCwgdikgc3R3cl9wKHNhZGRyKChwKSksIHYpCisjZGVmaW5lIHN0bHJfcmF3KHAsIHYp IHN0bHJfcChzYWRkcigocCkpLCB2KQorI2RlZmluZSBzdHFyX3JhdyhwLCB2KSBzdHFyX3Aoc2Fk ZHIoKHApKSwgdikKKyNkZWZpbmUgc3RmbHJfcmF3KHAsIHYpIHN0ZmxyX3Aoc2FkZHIoKHApKSwg dikKKyNkZWZpbmUgc3RmcXJfcmF3KHAsIHYpIHN0ZnFyX3Aoc2FkZHIoKHApKSwgdikKKyNpZiBk ZWZpbmVkKFRBUkdFVF9XT1JEU19CSUdFTkRJQU4pCisvKiBiaWctZW5kaWFuICovCisjZGVmaW5l IGxkdWJfYmVfcmF3KHApIGxkdWJfcmF3KHApCisjZGVmaW5lIGxkc2JfYmVfcmF3KHApIGxkc2Jf cmF3KHApCisjZGVmaW5lIGxkdXdfYmVfcmF3KHApIGxkdXdfcmF3KHApCisjZGVmaW5lIGxkc3df YmVfcmF3KHApIGxkc3dfcmF3KHApCisjZGVmaW5lIGxkdWxfYmVfcmF3KHApIGxkdWxfcmF3KHAp CisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xfYmVfcmF3KHApIGxk c2xfcmF3KHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2JlX3JhdyhwKSBsZHFfcmF3KHApCisjZGVm aW5lIGxkZmxfYmVfcmF3KHApIGxkZmxfcmF3KHApCisjZGVmaW5lIGxkZnFfYmVfcmF3KHApIGxk ZnFfcmF3KHApCisjZGVmaW5lIHN0Yl9iZV9yYXcocCwgdikgc3RiX3JhdyhwLCB2KQorI2RlZmlu ZSBzdHdfYmVfcmF3KHAsIHYpIHN0d19yYXcocCwgdikKKyNkZWZpbmUgc3RsX2JlX3JhdyhwLCB2 KSBzdGxfcmF3KHAsIHYpCisjZGVmaW5lIHN0cV9iZV9yYXcocCwgdikgc3RxX3JhdyhwLCB2KQor I2RlZmluZSBzdGZsX2JlX3JhdyhwLCB2KSBzdGZsX3JhdyhwLCB2KQorI2RlZmluZSBzdGZxX2Jl X3JhdyhwLCB2KSBzdGZxX3JhdyhwLCB2KQorLyogbGl0dGxlLWVuZGlhbiAqLworI2RlZmluZSBs ZHViX2xlX3JhdyhwKSBsZHVicl9yYXcocCkKKyNkZWZpbmUgbGRzYl9sZV9yYXcocCkgbGRzYnJf cmF3KHApCisjZGVmaW5lIGxkdXdfbGVfcmF3KHApIGxkdXdyX3JhdyhwKQorI2RlZmluZSBsZHN3 X2xlX3JhdyhwKSBsZHN3cl9yYXcocCkKKyNkZWZpbmUgbGR1bF9sZV9yYXcocCkgbGR1bHJfcmF3 KHApCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xfbGVfcmF3KHAp IGxkc2xyX3JhdyhwKQorI2VuZGlmCisjZGVmaW5lIGxkcV9sZV9yYXcocCkgbGRxcl9yYXcocCkK KyNkZWZpbmUgbGRmbF9sZV9yYXcocCkgbGRmbHJfcmF3KHApCisjZGVmaW5lIGxkZnFfbGVfcmF3 KHApIGxkZnFyX3JhdyhwKQorI2RlZmluZSBzdGJfbGVfcmF3KHAsIHYpIHN0YnJfcmF3KHAsIHYp CisjZGVmaW5lIHN0d19sZV9yYXcocCwgdikgc3R3cl9yYXcocCwgdikKKyNkZWZpbmUgc3RsX2xl X3JhdyhwLCB2KSBzdGxyX3JhdyhwLCB2KQorI2RlZmluZSBzdHFfbGVfcmF3KHAsIHYpIHN0cXJf cmF3KHAsIHYpCisjZGVmaW5lIHN0ZmxfbGVfcmF3KHAsIHYpIHN0ZmxyX3JhdyhwLCB2KQorI2Rl ZmluZSBzdGZxX2xlX3JhdyhwLCB2KSBzdGZxcl9yYXcocCwgdikKKyNlbHNlCisvKiBiaWctZW5k aWFuICovCisjZGVmaW5lIGxkdWJfYmVfcmF3KHApIGxkdWJyX3JhdyhwKQorI2RlZmluZSBsZHNi X2JlX3JhdyhwKSBsZHNicl9yYXcocCkKKyNkZWZpbmUgbGR1d19iZV9yYXcocCkgbGR1d3JfcmF3 KHApCisjZGVmaW5lIGxkc3dfYmVfcmF3KHApIGxkc3dyX3JhdyhwKQorI2RlZmluZSBsZHVsX2Jl X3JhdyhwKSBsZHVscl9yYXcocCkKKyNpZiAoVEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZp bmUgbGRzbF9iZV9yYXcocCkgbGRzbHJfcmF3KHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2JlX3Jh dyhwKSBsZHFyX3JhdyhwKQorI2RlZmluZSBsZGZsX2JlX3JhdyhwKSBsZGZscl9yYXcocCkKKyNk ZWZpbmUgbGRmcV9iZV9yYXcocCkgbGRmcXJfcmF3KHApCisjZGVmaW5lIHN0Yl9iZV9yYXcocCwg dikgc3Ricl9yYXcocCwgdikKKyNkZWZpbmUgc3R3X2JlX3JhdyhwLCB2KSBzdHdyX3JhdyhwLCB2 KQorI2RlZmluZSBzdGxfYmVfcmF3KHAsIHYpIHN0bHJfcmF3KHAsIHYpCisjZGVmaW5lIHN0cV9i ZV9yYXcocCwgdikgc3Rxcl9yYXcocCwgdikKKyNkZWZpbmUgc3RmbF9iZV9yYXcocCwgdikgc3Rm bHJfcmF3KHAsIHYpCisjZGVmaW5lIHN0ZnFfYmVfcmF3KHAsIHYpIHN0ZnFyX3JhdyhwLCB2KQor LyogbGl0dGxlLWVuZGlhbiAqLworI2RlZmluZSBsZHViX2xlX3JhdyhwKSBsZHViX3JhdyhwKQor I2RlZmluZSBsZHNiX2xlX3JhdyhwKSBsZHNiX3JhdyhwKQorI2RlZmluZSBsZHV3X2xlX3Jhdyhw KSBsZHV3X3JhdyhwKQorI2RlZmluZSBsZHN3X2xlX3JhdyhwKSBsZHN3X3JhdyhwKQorI2RlZmlu ZSBsZHVsX2xlX3JhdyhwKSBsZHVsX3JhdyhwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0 KQorI2RlZmluZSBsZHNsX2xlX3JhdyhwKSBsZHNsX3JhdyhwKQorI2VuZGlmCisjZGVmaW5lIGxk cV9sZV9yYXcocCkgbGRxX3JhdyhwKQorI2RlZmluZSBsZGZsX2xlX3JhdyhwKSBsZGZsX3Jhdyhw KQorI2RlZmluZSBsZGZxX2xlX3JhdyhwKSBsZGZxX3JhdyhwKQorI2RlZmluZSBzdGJfbGVfcmF3 KHAsIHYpIHN0Yl9yYXcocCwgdikKKyNkZWZpbmUgc3R3X2xlX3JhdyhwLCB2KSBzdHdfcmF3KHAs IHYpCisjZGVmaW5lIHN0bF9sZV9yYXcocCwgdikgc3RsX3JhdyhwLCB2KQorI2RlZmluZSBzdHFf bGVfcmF3KHAsIHYpIHN0cV9yYXcocCwgdikKKyNkZWZpbmUgc3RmbF9sZV9yYXcocCwgdikgc3Rm bF9yYXcocCwgdikKKyNkZWZpbmUgc3RmcV9sZV9yYXcocCwgdikgc3RmcV9yYXcocCwgdikKKyNl bmRpZgogCiAjaWYgZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKQogCiAvKiBpZiB1c2VyIG1vZGUs IG5vIG90aGVyIG1lbW9yeSBhY2Nlc3MgZnVuY3Rpb25zICovCisvKiBuYXRpdmUtZW5kaWFuICov CiAjZGVmaW5lIGxkdWIocCkgbGR1Yl9yYXcocCkKICNkZWZpbmUgbGRzYihwKSBsZHNiX3Jhdyhw KQogI2RlZmluZSBsZHV3KHApIGxkdXdfcmF3KHApCiAjZGVmaW5lIGxkc3cocCkgbGRzd19yYXco cCkKLSNkZWZpbmUgbGRsKHApIGxkbF9yYXcocCkKKyNkZWZpbmUgbGR1bChwKSBsZHVsX3Jhdyhw KQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNsKHApIGxkc2xfcmF3 KHApCisjZW5kaWYKICNkZWZpbmUgbGRxKHApIGxkcV9yYXcocCkKICNkZWZpbmUgbGRmbChwKSBs ZGZsX3JhdyhwKQogI2RlZmluZSBsZGZxKHApIGxkZnFfcmF3KHApCkBAIC02MzgsMTkgKzg1OCwx NzMgQEAKICNkZWZpbmUgc3RxKHAsIHYpIHN0cV9yYXcocCwgdikKICNkZWZpbmUgc3RmbChwLCB2 KSBzdGZsX3JhdyhwLCB2KQogI2RlZmluZSBzdGZxKHAsIHYpIHN0ZnFfcmF3KHAsIHYpCisvKiBy ZXZlcnNlLWVuZGlhbiAqLworI2RlZmluZSBsZHVicihwKSBsZHViX3JhdyhwKQorI2RlZmluZSBs ZHNicihwKSBsZHNiX3JhdyhwKQorI2RlZmluZSBsZHV3cihwKSBsZHV3cl9yYXcocCkKKyNkZWZp bmUgbGRzd3IocCkgbGRzd3JfcmF3KHApCisjZGVmaW5lIGxkdWxyKHApIGxkdWxyX3JhdyhwKQor I2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNscihwKSBsZHNscl9yYXco cCkKKyNlbmRpZgorI2RlZmluZSBsZHFyKHApIGxkcXJfcmF3KHApCisjZGVmaW5lIGxkZmxyKHAp IGxkZmxyX3JhdyhwKQorI2RlZmluZSBsZGZxcihwKSBsZGZxcl9yYXcocCkKKyNkZWZpbmUgc3Ri cihwLCB2KSBzdGJfcmF3KHAsIHYpCisjZGVmaW5lIHN0d3IocCwgdikgc3R3cl9yYXcocCwgdikK KyNkZWZpbmUgc3RscihwLCB2KSBzdGxyX3JhdyhwLCB2KQorI2RlZmluZSBzdHFyKHAsIHYpIHN0 cXJfcmF3KHAsIHYpCisjZGVmaW5lIHN0ZmxyKHAsIHYpIHN0ZmxyX3JhdyhwLCB2KQorI2RlZmlu ZSBzdGZxcihwLCB2KSBzdGZxcl9yYXcocCwgdikKKyNpZiBkZWZpbmVkKFRBUkdFVF9XT1JEU19C SUdFTkRJQU4pCisvKiBiaWctZW5kaWFuICovCisjZGVmaW5lIGxkdWJfYmUocCkgbGR1YihwKQor I2RlZmluZSBsZHNiX2JlKHApIGxkc2IocCkKKyNkZWZpbmUgbGR1d19iZShwKSBsZHV3KHApCisj ZGVmaW5lIGxkc3dfYmUocCkgbGRzdyhwKQorI2RlZmluZSBsZHVsX2JlKHApIGxkdWwocCkKKyNp ZiAoVEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbF9iZShwKSBsZHNsKHApCisj ZW5kaWYKKyNkZWZpbmUgbGRxX2JlKHApIGxkcShwKQorI2RlZmluZSBsZGZsX2JlKHApIGxkZmwo cCkKKyNkZWZpbmUgbGRmcV9iZShwKSBsZGZxKHApCisjZGVmaW5lIHN0Yl9iZShwLCB2KSBzdGIo cCwgdikKKyNkZWZpbmUgc3R3X2JlKHAsIHYpIHN0dyhwLCB2KQorI2RlZmluZSBzdGxfYmUocCwg dikgc3RsKHAsIHYpCisjZGVmaW5lIHN0cV9iZShwLCB2KSBzdHEocCwgdikKKyNkZWZpbmUgc3Rm bF9iZShwLCB2KSBzdGZsKHAsIHYpCisjZGVmaW5lIHN0ZnFfYmUocCwgdikgc3RmcShwLCB2KQor LyogbGl0dGxlLWVuZGlhbiAqLworI2RlZmluZSBsZHViX2xlKHApIGxkdWJyKHApCisjZGVmaW5l IGxkc2JfbGUocCkgbGRzYnIocCkKKyNkZWZpbmUgbGR1d19sZShwKSBsZHV3cihwKQorI2RlZmlu ZSBsZHN3X2xlKHApIGxkc3dyKHApCisjZGVmaW5lIGxkdWxfbGUocCkgbGR1bHIocCkKKyNpZiAo VEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbF9sZShwKSBsZHNscihwKQorI2Vu ZGlmCisjZGVmaW5lIGxkcV9sZShwKSBsZHFyKHApCisjZGVmaW5lIGxkZmxfbGUocCkgbGRmbHIo cCkKKyNkZWZpbmUgbGRmcV9sZShwKSBsZGZxcihwKQorI2RlZmluZSBzdGJfbGUocCwgdikgc3Ri cihwLCB2KQorI2RlZmluZSBzdHdfbGUocCwgdikgc3R3cihwLCB2KQorI2RlZmluZSBzdGxfbGUo cCwgdikgc3RscihwLCB2KQorI2RlZmluZSBzdHFfbGUocCwgdikgc3RxcihwLCB2KQorI2RlZmlu ZSBzdGZsX2xlKHAsIHYpIHN0ZmxyKHAsIHYpCisjZGVmaW5lIHN0ZnFfbGUocCwgdikgc3RmcXIo cCwgdikKKyNlbHNlCisvKiBiaWctZW5kaWFuICovCisjZGVmaW5lIGxkdWJfYmUocCkgbGR1YnIo cCkKKyNkZWZpbmUgbGRzYl9iZShwKSBsZHNicihwKQorI2RlZmluZSBsZHV3X2JlKHApIGxkdXdy KHApCisjZGVmaW5lIGxkc3dfYmUocCkgbGRzd3IocCkKKyNkZWZpbmUgbGR1bF9iZShwKSBsZHVs cihwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNsX2JlKHApIGxk c2xyKHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2JlKHApIGxkcXIocCkKKyNkZWZpbmUgbGRmbF9i ZShwKSBsZGZscihwKQorI2RlZmluZSBsZGZxX2JlKHApIGxkZnFyKHApCisjZGVmaW5lIHN0Yl9i ZShwLCB2KSBzdGJyKHAsIHYpCisjZGVmaW5lIHN0d19iZShwLCB2KSBzdHdyKHAsIHYpCisjZGVm aW5lIHN0bF9iZShwLCB2KSBzdGxyKHAsIHYpCisjZGVmaW5lIHN0cV9iZShwLCB2KSBzdHFyKHAs IHYpCisjZGVmaW5lIHN0ZmxfYmUocCwgdikgc3RmbHIocCwgdikKKyNkZWZpbmUgc3RmcV9iZShw LCB2KSBzdGZxcihwLCB2KQorLyogbGl0dGxlLWVuZGlhbiAqLworI2RlZmluZSBsZHViX2xlKHAp IGxkdWIocCkKKyNkZWZpbmUgbGRzYl9sZShwKSBsZHNiKHApCisjZGVmaW5lIGxkdXdfbGUocCkg bGR1dyhwKQorI2RlZmluZSBsZHN3X2xlKHApIGxkc3cocCkKKyNkZWZpbmUgbGR1bF9sZShwKSBs ZHVsKHApCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xfbGUocCkg bGRzbChwKQorI2VuZGlmCisjZGVmaW5lIGxkcV9sZShwKSBsZHEocCkKKyNkZWZpbmUgbGRmbF9s ZShwKSBsZGZsKHApCisjZGVmaW5lIGxkZnFfbGUocCkgbGRmcShwKQorI2RlZmluZSBzdGJfbGUo cCwgdikgc3RiKHAsIHYpCisjZGVmaW5lIHN0d19sZShwLCB2KSBzdHcocCwgdikKKyNkZWZpbmUg c3RsX2xlKHAsIHYpIHN0bChwLCB2KQorI2RlZmluZSBzdHFfbGUocCwgdikgc3RxKHAsIHYpCisj ZGVmaW5lIHN0ZmxfbGUocCwgdikgc3RmbChwLCB2KQorI2RlZmluZSBzdGZxX2xlKHAsIHYpIHN0 ZnEocCwgdikKKyNlbmRpZgogCisvKiBuYXRpdmUtZW5kaWFuICovCiAjZGVmaW5lIGxkdWJfY29k ZShwKSBsZHViX3JhdyhwKQogI2RlZmluZSBsZHNiX2NvZGUocCkgbGRzYl9yYXcocCkKICNkZWZp bmUgbGR1d19jb2RlKHApIGxkdXdfcmF3KHApCiAjZGVmaW5lIGxkc3dfY29kZShwKSBsZHN3X3Jh dyhwKQotI2RlZmluZSBsZGxfY29kZShwKSBsZGxfcmF3KHApCisjZGVmaW5lIGxkdWxfY29kZShw KSBsZHVsX3JhdyhwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNs X2NvZGUocCkgbGRzbF9yYXcocCkKKyNlbmRpZgogI2RlZmluZSBsZHFfY29kZShwKSBsZHFfcmF3 KHApCisvKiByZXZlcnNlLWVuZGlhbiAqLworI2RlZmluZSBsZHVicl9jb2RlKHApIGxkdWJfcmF3 KHApCisjZGVmaW5lIGxkc2JyX2NvZGUocCkgbGRzYl9yYXcocCkKKyNkZWZpbmUgbGR1d3JfY29k ZShwKSBsZHV3cl9yYXcocCkKKyNkZWZpbmUgbGRzd3JfY29kZShwKSBsZHN3cl9yYXcocCkKKyNk ZWZpbmUgbGR1bHJfY29kZShwKSBsZHVscl9yYXcocCkKKyNpZiAoVEFSR0VUX0xPTkdfQklUUyA9 PSA2NCkKKyNkZWZpbmUgbGRzbHJfY29kZShwKSBsZHNscl9yYXcocCkKKyNlbmRpZgorI2RlZmlu ZSBsZHFyX2NvZGUocCkgbGRxcl9yYXcocCkKKyNpZiBkZWZpbmVkKFRBUkdFVF9XT1JEU19CSUdF TkRJQU4pCisvKiBiaWctZW5kaWFuICovCisjZGVmaW5lIGxkdWJfYmVfY29kZShwKSBsZHViX2Nv ZGUocCkKKyNkZWZpbmUgbGRzYl9iZV9jb2RlKHApIGxkc2JfY29kZShwKQorI2RlZmluZSBsZHV3 X2JlX2NvZGUocCkgbGR1d19jb2RlKHApCisjZGVmaW5lIGxkc3dfYmVfY29kZShwKSBsZHN3X2Nv ZGUocCkKKyNkZWZpbmUgbGR1bF9iZV9jb2RlKHApIGxkdWxfY29kZShwKQorI2lmIChUQVJHRVRf TE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNsX2JlX2NvZGUocCkgbGRzbF9jb2RlKHApCisj ZW5kaWYKKyNkZWZpbmUgbGRxX2JlX2NvZGUocCkgbGRxX2NvZGUocCkKKy8qIGxpdHRsZS1lbmRp YW4gKi8KKyNkZWZpbmUgbGR1Yl9sZV9jb2RlKHApIGxkdWJyX2NvZGUocCkKKyNkZWZpbmUgbGRz Yl9sZV9jb2RlKHApIGxkc2JyX2NvZGUocCkKKyNkZWZpbmUgbGR1d19sZV9jb2RlKHApIGxkdXdy X2NvZGUocCkKKyNkZWZpbmUgbGRzd19sZV9jb2RlKHApIGxkc3dyX2NvZGUocCkKKyNkZWZpbmUg bGR1bF9sZV9jb2RlKHApIGxkdWxyX2NvZGUocCkKKyNpZiAoVEFSR0VUX0xPTkdfQklUUyA9PSA2 NCkKKyNkZWZpbmUgbGRzbF9sZV9jb2RlKHApIGxkc2xyX2NvZGUocCkKKyNlbmRpZgorI2RlZmlu ZSBsZHFfbGVfY29kZShwKSBsZHFyX2NvZGUocCkKKyNlbHNlCisvKiBiaWctZW5kaWFuICovCisj ZGVmaW5lIGxkdWJfYmVfY29kZShwKSBsZHVicl9jb2RlKHApCisjZGVmaW5lIGxkc2JfYmVfY29k ZShwKSBsZHNicl9jb2RlKHApCisjZGVmaW5lIGxkdXdfYmVfY29kZShwKSBsZHV3cl9jb2RlKHAp CisjZGVmaW5lIGxkc3dfYmVfY29kZShwKSBsZHN3cl9jb2RlKHApCisjZGVmaW5lIGxkdWxfYmVf Y29kZShwKSBsZHVscl9jb2RlKHApCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVm aW5lIGxkc2xfYmVfY29kZShwKSBsZHNscl9jb2RlKHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2Jl X2NvZGUocCkgbGRxcl9jb2RlKHApCisvKiBsaXR0bGUtZW5kaWFuICovCisjZGVmaW5lIGxkdWJf bGVfY29kZShwKSBsZHViX2NvZGUocCkKKyNkZWZpbmUgbGRzYl9sZV9jb2RlKHApIGxkc2JfY29k ZShwKQorI2RlZmluZSBsZHV3X2xlX2NvZGUocCkgbGR1d19jb2RlKHApCisjZGVmaW5lIGxkc3df bGVfY29kZShwKSBsZHN3X2NvZGUocCkKKyNkZWZpbmUgbGR1bF9sZV9jb2RlKHApIGxkdWxfY29k ZShwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNsX2xlX2NvZGUo cCkgbGRzbF9jb2RlKHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2xlX2NvZGUocCkgbGRxX2NvZGUo cCkKKyNlbmRpZgogCisvKiBuYXRpdmUtZW5kaWFuICovCiAjZGVmaW5lIGxkdWJfa2VybmVsKHAp IGxkdWJfcmF3KHApCiAjZGVmaW5lIGxkc2Jfa2VybmVsKHApIGxkc2JfcmF3KHApCiAjZGVmaW5l IGxkdXdfa2VybmVsKHApIGxkdXdfcmF3KHApCiAjZGVmaW5lIGxkc3dfa2VybmVsKHApIGxkc3df cmF3KHApCi0jZGVmaW5lIGxkbF9rZXJuZWwocCkgbGRsX3JhdyhwKQorI2RlZmluZSBsZHVsX2tl cm5lbChwKSBsZHVsX3JhdyhwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmlu ZSBsZHNsX2tlcm5lbChwKSBsZHNsX3JhdyhwKQorI2VuZGlmCiAjZGVmaW5lIGxkcV9rZXJuZWwo cCkgbGRxX3JhdyhwKQogI2RlZmluZSBsZGZsX2tlcm5lbChwKSBsZGZsX3JhdyhwKQogI2RlZmlu ZSBsZGZxX2tlcm5lbChwKSBsZGZxX3JhdyhwKQpAQCAtNjYwLDYgKzEwMzQsOTkgQEAKICNkZWZp bmUgc3RxX2tlcm5lbChwLCB2KSBzdHFfcmF3KHAsIHYpCiAjZGVmaW5lIHN0Zmxfa2VybmVsKHAs IHYpIHN0ZmxfcmF3KHAsIHYpCiAjZGVmaW5lIHN0ZnFfa2VybmVsKHAsIHZ0KSBzdGZxX3Jhdyhw LCB2KQorLyogcmV2ZXJzZS1lbmRpYW4gKi8KKyNkZWZpbmUgbGR1YnJfa2VybmVsKHApIGxkdWJf cmF3KHApCisjZGVmaW5lIGxkc2JyX2tlcm5lbChwKSBsZHNiX3JhdyhwKQorI2RlZmluZSBsZHV3 cl9rZXJuZWwocCkgbGR1d3JfcmF3KHApCisjZGVmaW5lIGxkc3dyX2tlcm5lbChwKSBsZHN3cl9y YXcocCkKKyNkZWZpbmUgbGR1bHJfa2VybmVsKHApIGxkdWxyX3JhdyhwKQorI2lmIChUQVJHRVRf TE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNscl9rZXJuZWwocCkgbGRzbHJfcmF3KHApCisj ZW5kaWYKKyNkZWZpbmUgbGRxcl9rZXJuZWwocCkgbGRxcl9yYXcocCkKKyNkZWZpbmUgbGRmbHJf a2VybmVsKHApIGxkZmxyX3JhdyhwKQorI2RlZmluZSBsZGZxcl9rZXJuZWwocCkgbGRmcXJfcmF3 KHApCisjZGVmaW5lIHN0YnJfa2VybmVsKHAsIHYpIHN0YnJfcmF3KHAsIHYpCisjZGVmaW5lIHN0 d3Jfa2VybmVsKHAsIHYpIHN0d3JfcmF3KHAsIHYpCisjZGVmaW5lIHN0bHJfa2VybmVsKHAsIHYp IHN0bHJfcmF3KHAsIHYpCisjZGVmaW5lIHN0cXJfa2VybmVsKHAsIHYpIHN0cXJfcmF3KHAsIHYp CisjZGVmaW5lIHN0ZmxyX2tlcm5lbChwLCB2KSBzdGZscl9yYXcocCwgdikKKyNkZWZpbmUgc3Rm cXJfa2VybmVsKHAsIHZ0KSBzdGZxcl9yYXcocCwgdikKKyNpZiBkZWZpbmVkKFRBUkdFVF9XT1JE U19CSUdFTkRJQU4pCisvKiBiaWctZW5kaWFuICovCisjZGVmaW5lIGxkdWJfYmVfa2VybmVsKHAp IGxkdWJfa2VybmVsKHApCisjZGVmaW5lIGxkc2JfYmVfa2VybmVsKHApIGxkc2Jfa2VybmVsKHAp CisjZGVmaW5lIGxkdXdfYmVfa2VybmVsKHApIGxkdXdfa2VybmVsKHApCisjZGVmaW5lIGxkc3df YmVfa2VybmVsKHApIGxkc3dfa2VybmVsKHApCisjZGVmaW5lIGxkdWxfYmVfa2VybmVsKHApIGxk dWxfa2VybmVsKHApCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xf YmVfa2VybmVsKHApIGxkc2xfa2VybmVsKHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2JlX2tlcm5l bChwKSBsZHFfa2VybmVsKHApCisjZGVmaW5lIGxkZmxfYmVfa2VybmVsKHApIGxkZmxfa2VybmVs KHApCisjZGVmaW5lIGxkZnFfYmVfa2VybmVsKHApIGxkZnFfa2VybmVsKHApCisjZGVmaW5lIHN0 Yl9iZV9rZXJuZWwocCwgdikgc3RiX2tlcm5lbChwLCB2KQorI2RlZmluZSBzdHdfYmVfa2VybmVs KHAsIHYpIHN0d19rZXJuZWwocCwgdikKKyNkZWZpbmUgc3RsX2JlX2tlcm5lbChwLCB2KSBzdGxf a2VybmVsKHAsIHYpCisjZGVmaW5lIHN0cV9iZV9rZXJuZWwocCwgdikgc3RxX2tlcm5lbChwLCB2 KQorI2RlZmluZSBzdGZsX2JlX2tlcm5lbChwLCB2KSBzdGZsX2tlcm5lbChwLCB2KQorI2RlZmlu ZSBzdGZxX2JlX2tlcm5lbChwLCB2dCkgc3RmcV9rZXJuZWwocCwgdnQpCisvKiBsaXR0bGUtZW5k aWFuICovCisjZGVmaW5lIGxkdWJfbGVfa2VybmVsKHApIGxkdWJyX2tlcm5lbChwKQorI2RlZmlu ZSBsZHNiX2xlX2tlcm5lbChwKSBsZHNicl9rZXJuZWwocCkKKyNkZWZpbmUgbGR1d19sZV9rZXJu ZWwocCkgbGR1d3Jfa2VybmVsKHApCisjZGVmaW5lIGxkc3dfbGVfa2VybmVsKHApIGxkc3dyX2tl cm5lbChwKQorI2RlZmluZSBsZHVsX2xlX2tlcm5lbChwKSBsZHVscl9rZXJuZWwocCkKKyNpZiAo VEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbF9sZV9rZXJuZWwocCkgbGRzbHJf a2VybmVsKHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2xlX2tlcm5lbChwKSBsZHFyX2tlcm5lbChw KQorI2RlZmluZSBsZGZsX2xlX2tlcm5lbChwKSBsZGZscl9rZXJuZWwocCkKKyNkZWZpbmUgbGRm cV9sZV9rZXJuZWwocCkgbGRmcXJfa2VybmVsKHApCisjZGVmaW5lIHN0Yl9sZV9rZXJuZWwocCwg dikgc3Ricl9rZXJuZWwocCwgdikKKyNkZWZpbmUgc3R3X2xlX2tlcm5lbChwLCB2KSBzdHdyX2tl cm5lbChwLCB2KQorI2RlZmluZSBzdGxfbGVfa2VybmVsKHAsIHYpIHN0bHJfa2VybmVsKHAsIHYp CisjZGVmaW5lIHN0cV9sZV9rZXJuZWwocCwgdikgc3Rxcl9rZXJuZWwocCwgdikKKyNkZWZpbmUg c3RmbF9sZV9rZXJuZWwocCwgdikgc3RmbHJfa2VybmVsKHAsIHYpCisjZGVmaW5lIHN0ZnFfbGVf a2VybmVsKHAsIHZ0KSBzdGZxcl9rZXJuZWwocCwgdnQpCisjZWxzZQorLyogYmlnLWVuZGlhbiAq LworI2RlZmluZSBsZHViX2JlX2tlcm5lbChwKSBsZHVicl9rZXJuZWwocCkKKyNkZWZpbmUgbGRz Yl9iZV9rZXJuZWwocCkgbGRzYnJfa2VybmVsKHApCisjZGVmaW5lIGxkdXdfYmVfa2VybmVsKHAp IGxkdXdyX2tlcm5lbChwKQorI2RlZmluZSBsZHN3X2JlX2tlcm5lbChwKSBsZHN3cl9rZXJuZWwo cCkKKyNkZWZpbmUgbGR1bF9iZV9rZXJuZWwocCkgbGR1bHJfa2VybmVsKHApCisjaWYgKFRBUkdF VF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xfYmVfa2VybmVsKHApIGxkc2xyX2tlcm5l bChwKQorI2VuZGlmCisjZGVmaW5lIGxkcV9iZV9rZXJuZWwocCkgbGRxcl9rZXJuZWwocCkKKyNk ZWZpbmUgbGRmbF9iZV9rZXJuZWwocCkgbGRmbHJfa2VybmVsKHApCisjZGVmaW5lIGxkZnFfYmVf a2VybmVsKHApIGxkZnFyX2tlcm5lbChwKQorI2RlZmluZSBzdGJfYmVfa2VybmVsKHAsIHYpIHN0 YnJfa2VybmVsKHAsIHYpCisjZGVmaW5lIHN0d19iZV9rZXJuZWwocCwgdikgc3R3cl9rZXJuZWwo cCwgdikKKyNkZWZpbmUgc3RsX2JlX2tlcm5lbChwLCB2KSBzdGxyX2tlcm5lbChwLCB2KQorI2Rl ZmluZSBzdHFfYmVfa2VybmVsKHAsIHYpIHN0cXJfa2VybmVsKHAsIHYpCisjZGVmaW5lIHN0Zmxf YmVfa2VybmVsKHAsIHYpIHN0ZmxyX2tlcm5lbChwLCB2KQorI2RlZmluZSBzdGZxX2JlX2tlcm5l bChwLCB2dCkgc3RmcXJfa2VybmVsKHAsIHZ0KQorLyogbGl0dGxlLWVuZGlhbiAqLworI2RlZmlu ZSBsZHViX2xlX2tlcm5lbChwKSBsZHViX2tlcm5lbChwKQorI2RlZmluZSBsZHNiX2xlX2tlcm5l bChwKSBsZHNiX2tlcm5lbChwKQorI2RlZmluZSBsZHV3X2xlX2tlcm5lbChwKSBsZHV3X2tlcm5l bChwKQorI2RlZmluZSBsZHN3X2xlX2tlcm5lbChwKSBsZHN3X2tlcm5lbChwKQorI2RlZmluZSBs ZHVsX2xlX2tlcm5lbChwKSBsZHVsX2tlcm5lbChwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09 IDY0KQorI2RlZmluZSBsZHNsX2xlX2tlcm5lbChwKSBsZHNsX2tlcm5lbChwKQorI2VuZGlmCisj ZGVmaW5lIGxkcV9sZV9rZXJuZWwocCkgbGRxX2tlcm5lbChwKQorI2RlZmluZSBsZGZsX2xlX2tl cm5lbChwKSBsZGZsX2tlcm5lbChwKQorI2RlZmluZSBsZGZxX2xlX2tlcm5lbChwKSBsZGZxX2tl cm5lbChwKQorI2RlZmluZSBzdGJfbGVfa2VybmVsKHAsIHYpIHN0Yl9rZXJuZWwocCwgdikKKyNk ZWZpbmUgc3R3X2xlX2tlcm5lbChwLCB2KSBzdHdfa2VybmVsKHAsIHYpCisjZGVmaW5lIHN0bF9s ZV9rZXJuZWwocCwgdikgc3RsX2tlcm5lbChwLCB2KQorI2RlZmluZSBzdHFfbGVfa2VybmVsKHAs IHYpIHN0cV9rZXJuZWwocCwgdikKKyNkZWZpbmUgc3RmbF9sZV9rZXJuZWwocCwgdikgc3RmbF9r ZXJuZWwocCwgdikKKyNkZWZpbmUgc3RmcV9sZV9rZXJuZWwocCwgdnQpIHN0ZnFfa2VybmVsKHAs IHZ0KQorI2VuZGlmCiAKICNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpICovCiAK QEAgLTc5MCw2ICsxMjU3LDggQEAKICAgIHRoZSBwaHlzaWNhbCBhZGRyZXNzICovCiAjZGVmaW5l IElPX01FTV9ST01EICAgICAgICAoMSkKICNkZWZpbmUgSU9fTUVNX1NVQlBBR0UgICAgICgyKQor LyogT24gc29tZSB0YXJnZXQgQ1BVcywgZW5kaWFubmVzIGlzIHN0b3JlZCBpbiBwYWdlIHRhYmxl cyAqLworI2RlZmluZSBJT19NRU1fUkVWRVJTRSAgICAgKDMpCiAKIHR5cGVkZWYgdm9pZCBDUFVX cml0ZU1lbW9yeUZ1bmModm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWlu dDMyX3QgdmFsdWUpOwogdHlwZWRlZiB1aW50MzJfdCBDUFVSZWFkTWVtb3J5RnVuYyh2b2lkICpv cGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKTsKQEAgLTgyMSw3ICsxMjkwLDcgQEAKIH0K IHVpbnQzMl90IGxkdWJfcGh5cyh0YXJnZXRfcGh5c19hZGRyX3QgYWRkcik7CiB1aW50MzJfdCBs ZHV3X3BoeXModGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpOwotdWludDMyX3QgbGRsX3BoeXModGFy Z2V0X3BoeXNfYWRkcl90IGFkZHIpOwordWludDMyX3QgbGR1bF9waHlzKHRhcmdldF9waHlzX2Fk ZHJfdCBhZGRyKTsKIHVpbnQ2NF90IGxkcV9waHlzKHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKTsK IHZvaWQgc3RsX3BoeXNfbm90ZGlydHkodGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90 IHZhbCk7CiB2b2lkIHN0cV9waHlzX25vdGRpcnR5KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1 aW50NjRfdCB2YWwpOwpJbmRleDogY3B1LWV4ZWMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcHUtZXhlYy5j Lm9yaWcJMjAwNy0xMC0xNCAxNjo0NDoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIGNwdS1leGVjLmMJ MjAwNy0xMC0xNSAxNTo0MTowOS4wMDAwMDAwMDAgKzAwMDAKQEAgLTQzNiwxMiArNDM2LDEyIEBA CiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRklYTUU6IHRoaXMgc2hvdWxkIHJlc3BlY3Qg VFBSICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5pbnRlcnJ1cHRfcmVxdWVzdCAm PSB+Q1BVX0lOVEVSUlVQVF9WSVJROwogICAgICAgICAgICAgICAgICAgICAgICAgIHN2bV9jaGVj a19pbnRlcmNlcHQoU1ZNX0VYSVRfVklOVFIpOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlu dG5vID0gbGRsX3BoeXMoZW52LT52bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIGNvbnRy b2wuaW50X3ZlY3RvcikpOworICAgICAgICAgICAgICAgICAgICAgICAgIGludG5vID0gbGR1bF9w aHlzKGVudi0+dm1fdm1jYiArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBjb250cm9sLmludF92ZWN0 b3IpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9nbGV2ZWwgJiBDUFVfTE9HX1RC X0lOX0FTTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50Zihsb2dmaWxlLCAi U2VydmljaW5nIHZpcnR1YWwgaGFyZHdhcmUgSU5UPTB4JTAyeFxuIiwgaW50bm8pOwogCSAgICAg ICAgICAgICAgICAgZG9faW50ZXJydXB0KGludG5vLCAwLCAwLCAtMSwgMSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RsX3BoeXMoZW52LT52bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZt Y2IsIGNvbnRyb2wuaW50X2N0bCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGRsX3BoeXMoZW52LT52bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIGNvbnRyb2wuaW50 X2N0bCkpICYgflZfSVJRX01BU0spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxkdWxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29udHJvbC5p bnRfY3RsKSkgJiB+Vl9JUlFfTUFTSyk7CiAjaWYgZGVmaW5lZChfX3NwYXJjX18pICYmICFkZWZp bmVkKEhPU1RfU09MQVJJUykKICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfVDAgPSAwOwog I2Vsc2UKSW5kZXg6IGV4ZWMtYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZXhlYy1hbGwuaC5vcmlnCTIw MDctMTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAwICswMDAwCisrKyBleGVjLWFsbC5oCTIwMDctMTAt MTUgMTU6NDE6MDkuMDAwMDAwMDAwICswMDAwCkBAIC01NjksNiArNTY5LDcgQEAKICNkZWZpbmUg TUVNU1VGRklYIF9jb2RlCiAjZGVmaW5lIGVudiBjcHVfc2luZ2xlX2VudgogCisvKiBuYXRpdmUt ZW5kaWFuICovCiAjZGVmaW5lIERBVEFfU0laRSAxCiAjaW5jbHVkZSAic29mdG1tdV9oZWFkZXIu aCIKIApAQCAtNTgxLDYgKzU4MiwyMSBAQAogI2RlZmluZSBEQVRBX1NJWkUgOAogI2luY2x1ZGUg InNvZnRtbXVfaGVhZGVyLmgiCiAKKy8qIHJldmVyc2UtZW5kaWFuICovCisjZGVmaW5lIFJFVkVS U0VfRU5ESUFOCisjZGVmaW5lIERBVEFfU0laRSAxCisjaW5jbHVkZSAic29mdG1tdV9oZWFkZXIu aCIKKworI2RlZmluZSBEQVRBX1NJWkUgMgorI2luY2x1ZGUgInNvZnRtbXVfaGVhZGVyLmgiCisK KyNkZWZpbmUgREFUQV9TSVpFIDQKKyNpbmNsdWRlICJzb2Z0bW11X2hlYWRlci5oIgorCisjZGVm aW5lIERBVEFfU0laRSA4CisjaW5jbHVkZSAic29mdG1tdV9oZWFkZXIuaCIKKyN1bmRlZiBSRVZF UlNFX0VORElBTgorCiAjdW5kZWYgQUNDRVNTX1RZUEUKICN1bmRlZiBNRU1TVUZGSVgKICN1bmRl ZiBlbnYKSW5kZXg6IGV4ZWMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleGVjLmMub3JpZwkyMDA3LTEwLTE1 IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAwMAorKysgZXhlYy5jCTIwMDctMTAtMTUgMTU6NDE6MDku MDAwMDAwMDAwICswMDAwCkBAIC0yMjAyLDcgKzIyMDIsNyBAQAogCiBzdGF0aWMgdWludDMyX3Qg d2F0Y2hfbWVtX3JlYWRsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7 Ci0gICAgcmV0dXJuIGxkbF9waHlzKGFkZHIpOworICAgIHJldHVybiBsZHVsX3BoeXMoYWRkcik7 CiB9CiAKIC8qIEdlbmVyYXRlIGEgZGVidWcgZXhjZXB0aW9uIGlmIGEgd2F0Y2hwb2ludCBoYXMg YmVlbiBoaXQuCkBAIC0yNTA3LDcgKzI1MDcsNyBAQAogICAgIHVpbnQ4X3QgKnB0cjsKICAgICB1 aW50MzJfdCB2YWw7CiAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IHBhZ2U7Ci0gICAgdW5zaWduZWQg bG9uZyBwZDsKKyAgICB1bnNpZ25lZCBsb25nIHBkLCBhZGRyMTsKICAgICBQaHlzUGFnZURlc2Mg KnA7CiAKICAgICB3aGlsZSAobGVuID4gMCkgewpAQCAtMjUyNCwzMSArMjUyNCw1NCBAQAogCiAg ICAgICAgIGlmIChpc193cml0ZSkgewogICAgICAgICAgICAgaWYgKChwZCAmIH5UQVJHRVRfUEFH RV9NQVNLKSAhPSBJT19NRU1fUkFNKSB7Ci0gICAgICAgICAgICAgICAgaW9faW5kZXggPSAocGQg Pj4gSU9fTUVNX1NISUZUKSAmIChJT19NRU1fTkJfRU5UUklFUyAtIDEpOwotICAgICAgICAgICAg ICAgIC8qIFhYWDogY291bGQgZm9yY2UgY3B1X3NpbmdsZV9lbnYgdG8gTlVMTCB0byBhdm9pZAot ICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbCBidWdzICovCi0gICAgICAgICAgICAgICAgaWYg KGwgPj0gNCAmJiAoKGFkZHIgJiAzKSA9PSAwKSkgewotICAgICAgICAgICAgICAgICAgICAvKiAz MiBiaXQgd3JpdGUgYWNjZXNzICovCi0gICAgICAgICAgICAgICAgICAgIHZhbCA9IGxkbF9wKGJ1 Zik7Ci0gICAgICAgICAgICAgICAgICAgIGlvX21lbV93cml0ZVtpb19pbmRleF1bMl0oaW9fbWVt X29wYXF1ZVtpb19pbmRleF0sIGFkZHIsIHZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGwgPSA0 OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobCA+PSAyICYmICgoYWRkciAmIDEpID09IDAp KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIDE2IGJpdCB3cml0ZSBhY2Nlc3MgKi8KLSAgICAg ICAgICAgICAgICAgICAgdmFsID0gbGR1d19wKGJ1Zik7Ci0gICAgICAgICAgICAgICAgICAgIGlv X21lbV93cml0ZVtpb19pbmRleF1bMV0oaW9fbWVtX29wYXF1ZVtpb19pbmRleF0sIGFkZHIsIHZh bCk7Ci0gICAgICAgICAgICAgICAgICAgIGwgPSAyOworICAgICAgICAgICAgICAgIGlmIChwZCAm IElPX01FTV9SRVZFUlNFKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFNwZWNpZmljIGNhc2Ug Zm9yIHJldmVyc2UgZW5kaWFuIHBhZ2Ugd3JpdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgYWRk cjEgPSAocGQgJiBUQVJHRVRfUEFHRV9NQVNLKSArCisgICAgICAgICAgICAgICAgICAgICAgICAo YWRkciAmIH5UQVJHRVRfUEFHRV9NQVNLKTsKKyAgICAgICAgICAgICAgICAgICAgcHRyID0gcGh5 c19yYW1fYmFzZSArIGFkZHIxOworICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA+PSA0OyBs IC09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0bHJfcChwdHIsICoodWludDMyX3Qg KilidWYpOworICAgICAgICAgICAgICAgICAgICAgICAgcHRyICs9IDQ7CisgICAgICAgICAgICAg ICAgICAgICAgICBidWYgKz0gNDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICBmb3IgKDsgbCA+PSAyOyBsIC09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0d3JfcChwdHIsICoodWludDE2X3QgKilidWYpOworICAgICAgICAgICAgICAgICAgICAgICAg cHRyICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgKz0gMjsKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobCA+PSAxKQorICAgICAgICAgICAg ICAgICAgICAgICAgKnB0ciA9ICpidWY7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gaW52YWxp ZGF0ZV9jb2RlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg IC8qIDggYml0IHdyaXRlIGFjY2VzcyAqLwotICAgICAgICAgICAgICAgICAgICB2YWwgPSBsZHVi X3AoYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4XVswXShp b19tZW1fb3BhcXVlW2lvX2luZGV4XSwgYWRkciwgdmFsKTsKLSAgICAgICAgICAgICAgICAgICAg bCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGlvX2luZGV4ID0gKHBkID4+IElPX01FTV9TSElG VCkgJiAoSU9fTUVNX05CX0VOVFJJRVMgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgLyogWFhY OiBjb3VsZCBmb3JjZSBjcHVfc2luZ2xlX2VudiB0byBOVUxMIHRvIGF2b2lkCisgICAgICAgICAg ICAgICAgICAgICAgIHBvdGVudGlhbCBidWdzICovCisgICAgICAgICAgICAgICAgICAgIGlmIChs ID49IDQgJiYgKChhZGRyICYgMykgPT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8q IDMyIGJpdCB3cml0ZSBhY2Nlc3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGxk dWxfcChidWYpOworICAgICAgICAgICAgICAgICAgICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4 XVsyXShpb19tZW1fb3BhcXVlW2lvX2luZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGwgPSA0OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGwgPj0gMiAmJiAoKGFk ZHIgJiAxKSA9PSAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogMTYgYml0IHdyaXRl IGFjY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gbGR1d19wKGJ1Zik7Cisg ICAgICAgICAgICAgICAgICAgICAgICBpb19tZW1fd3JpdGVbaW9faW5kZXhdWzFdKGlvX21lbV9v cGFxdWVbaW9faW5kZXhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhZGRyLCB2YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDI7Cisg ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiA4 IGJpdCB3cml0ZSBhY2Nlc3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGxkdWJf cChidWYpOworICAgICAgICAgICAgICAgICAgICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4XVsw XShpb19tZW1fb3BhcXVlW2lvX2luZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRkciwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IGwgPSAxOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIxOwogICAg ICAgICAgICAgICAgIGFkZHIxID0gKHBkICYgVEFSR0VUX1BBR0VfTUFTSykgKyAoYWRkciAmIH5U QVJHRVRfUEFHRV9NQVNLKTsKICAgICAgICAgICAgICAgICAvKiBSQU0gY2FzZSAqLwogICAgICAg ICAgICAgICAgIHB0ciA9IHBoeXNfcmFtX2Jhc2UgKyBhZGRyMTsKICAgICAgICAgICAgICAgICBt ZW1jcHkocHRyLCBidWYsIGwpOworICAgICAgICAgICAgaW52YWxpZGF0ZV9jb2RlOgogICAgICAg ICAgICAgICAgIGlmICghY3B1X3BoeXNpY2FsX21lbW9yeV9pc19kaXJ0eShhZGRyMSkpIHsKICAg ICAgICAgICAgICAgICAgICAgLyogaW52YWxpZGF0ZSBjb2RlICovCiAgICAgICAgICAgICAgICAg ICAgIHRiX2ludmFsaWRhdGVfcGh5c19wYWdlX3JhbmdlKGFkZHIxLCBhZGRyMSArIGwsIDApOwpA QCAtMjU2MCwyMyArMjU4Myw0NSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg KChwZCAmIH5UQVJHRVRfUEFHRV9NQVNLKSA+IElPX01FTV9ST00gJiYKICAgICAgICAgICAgICAg ICAhKHBkICYgSU9fTUVNX1JPTUQpKSB7Ci0gICAgICAgICAgICAgICAgLyogSS9PIGNhc2UgKi8K LSAgICAgICAgICAgICAgICBpb19pbmRleCA9IChwZCA+PiBJT19NRU1fU0hJRlQpICYgKElPX01F TV9OQl9FTlRSSUVTIC0gMSk7Ci0gICAgICAgICAgICAgICAgaWYgKGwgPj0gNCAmJiAoKGFkZHIg JiAzKSA9PSAwKSkgewotICAgICAgICAgICAgICAgICAgICAvKiAzMiBiaXQgcmVhZCBhY2Nlc3Mg Ki8KLSAgICAgICAgICAgICAgICAgICAgdmFsID0gaW9fbWVtX3JlYWRbaW9faW5kZXhdWzJdKGlv X21lbV9vcGFxdWVbaW9faW5kZXhdLCBhZGRyKTsKLSAgICAgICAgICAgICAgICAgICAgc3RsX3Ao YnVmLCB2YWwpOwotICAgICAgICAgICAgICAgICAgICBsID0gNDsKLSAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKGwgPj0gMiAmJiAoKGFkZHIgJiAxKSA9PSAwKSkgewotICAgICAgICAgICAgICAg ICAgICAvKiAxNiBiaXQgcmVhZCBhY2Nlc3MgKi8KLSAgICAgICAgICAgICAgICAgICAgdmFsID0g aW9fbWVtX3JlYWRbaW9faW5kZXhdWzFdKGlvX21lbV9vcGFxdWVbaW9faW5kZXhdLCBhZGRyKTsK LSAgICAgICAgICAgICAgICAgICAgc3R3X3AoYnVmLCB2YWwpOwotICAgICAgICAgICAgICAgICAg ICBsID0gMjsKKyAgICAgICAgICAgICAgICBpZiAocGQgJiBJT19NRU1fUkVWRVJTRSkgeworICAg ICAgICAgICAgICAgICAgICAvKiBTcGVjaWZpYyBjYXNlIGZvciByZXZlcnNlIGVuZGlhbiBwYWdl IHdyaXRlICovCisgICAgICAgICAgICAgICAgICAgIGFkZHIxID0gKHBkICYgVEFSR0VUX1BBR0Vf TUFTSykgKworICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHIgJiB+VEFSR0VUX1BBR0VfTUFT Syk7CisgICAgICAgICAgICAgICAgICAgIHB0ciA9IHBoeXNfcmFtX2Jhc2UgKyBhZGRyMTsKKyAg ICAgICAgICAgICAgICAgICAgZm9yICg7IGwgPj0gNDsgbCAtPSA0KSB7CisgICAgICAgICAgICAg ICAgICAgICAgICAqKHVpbnQzMl90ICopYnVmID0gbGR1bHJfcChwdHIpOworICAgICAgICAgICAg ICAgICAgICAgICAgcHRyICs9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgKz0gNDsK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA+PSAy OyBsIC09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICoodWludDE2X3QgKilidWYgPSBs ZHV3cl9wKHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdHIgKz0gMjsKKyAgICAgICAg ICAgICAgICAgICAgICAgIGJ1ZiArPSAyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgIGlmIChsID49IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAqYnVmID0g KnB0cjsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvKiA4 IGJpdCByZWFkIGFjY2VzcyAqLwotICAgICAgICAgICAgICAgICAgICB2YWwgPSBpb19tZW1fcmVh ZFtpb19pbmRleF1bMF0oaW9fbWVtX29wYXF1ZVtpb19pbmRleF0sIGFkZHIpOwotICAgICAgICAg ICAgICAgICAgICBzdGJfcChidWYsIHZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGwgPSAxOwor ICAgICAgICAgICAgICAgICAgICAvKiBJL08gY2FzZSAqLworICAgICAgICAgICAgICAgICAgICBp b19pbmRleCA9IChwZCA+PiBJT19NRU1fU0hJRlQpICYgKElPX01FTV9OQl9FTlRSSUVTIC0gMSk7 CisgICAgICAgICAgICAgICAgICAgIGlmIChsID49IDQgJiYgKChhZGRyICYgMykgPT0gMCkpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDMyIGJpdCByZWFkIGFjY2VzcyAqLworICAgICAg ICAgICAgICAgICAgICAgICAgdmFsID0gaW9fbWVtX3JlYWRbaW9faW5kZXhdWzJdKGlvX21lbV9v cGFxdWVbaW9faW5kZXhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkZHIpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RsX3AoYnVm LCB2YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDQ7CisgICAgICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAobCA+PSAyICYmICgoYWRkciAmIDEpID09IDApKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICAvKiAxNiBiaXQgcmVhZCBhY2Nlc3MgKi8KKyAgICAgICAgICAgICAgICAg ICAgICAgIHZhbCA9IGlvX21lbV9yZWFkW2lvX2luZGV4XVsxXShpb19tZW1fb3BhcXVlW2lvX2lu ZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhZGRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0d19wKGJ1ZiwgdmFsKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIGwgPSAyOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICAgICAgLyogOCBiaXQgcmVhZCBhY2Nlc3MgKi8KKyAgICAg ICAgICAgICAgICAgICAgICAgIHZhbCA9IGlvX21lbV9yZWFkW2lvX2luZGV4XVswXShpb19tZW1f b3BhcXVlW2lvX2luZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZGRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0Yl9wKGJ1 ZiwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAxOworICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgICAgICAvKiBSQU0gY2FzZSAqLwpAQCAtMjYzMiw3ICsyNjc3LDcgQEAKIAogCiAvKiB3YXJu aW5nOiBhZGRyIG11c3QgYmUgYWxpZ25lZCAqLwotdWludDMyX3QgbGRsX3BoeXModGFyZ2V0X3Bo eXNfYWRkcl90IGFkZHIpCit1aW50MzJfdCBsZHVsX3BoeXModGFyZ2V0X3BoeXNfYWRkcl90IGFk ZHIpCiB7CiAgICAgaW50IGlvX2luZGV4OwogICAgIHVpbnQ4X3QgKnB0cjsKQEAgLTI2NTYsNyAr MjcwMSw3IEBACiAgICAgICAgIC8qIFJBTSBjYXNlICovCiAgICAgICAgIHB0ciA9IHBoeXNfcmFt X2Jhc2UgKyAocGQgJiBUQVJHRVRfUEFHRV9NQVNLKSArCiAgICAgICAgICAgICAoYWRkciAmIH5U QVJHRVRfUEFHRV9NQVNLKTsKLSAgICAgICAgdmFsID0gbGRsX3AocHRyKTsKKyAgICAgICAgdmFs ID0gbGR1bF9wKHB0cik7CiAgICAgfQogICAgIHJldHVybiB2YWw7CiB9CkBAIC0yOTA3LDYgKzI5 NTIsMjEgQEAKICNkZWZpbmUgZW52IGNwdV9zaW5nbGVfZW52CiAjZGVmaW5lIFNPRlRNTVVfQ09E RV9BQ0NFU1MKIAorLyogTmF0aXZlLWVuZGlhbiAqLworI2RlZmluZSBTSElGVCAwCisjaW5jbHVk ZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisjZGVmaW5lIFNISUZUIDEKKyNpbmNsdWRlICJzb2Z0 bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUgU0hJRlQgMgorI2luY2x1ZGUgInNvZnRtbXVfdGVt cGxhdGUuaCIKKworI2RlZmluZSBTSElGVCAzCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5o IgorCisvKiBSZXZlcnNlLWVuZGlhbiAqLworI2RlZmluZSBSRVZFUlNFX0VORElBTgogI2RlZmlu ZSBTSElGVCAwCiAjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgogCkBAIC0yOTE4LDYgKzI5 NzgsNyBAQAogCiAjZGVmaW5lIFNISUZUIDMKICNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgi CisjdW5kZWYgUkVWRVJTRV9FTkRJQU4KIAogI3VuZGVmIGVudgogCkluZGV4OiBtb25pdG9yLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbW9uaXRvci5jLm9yaWcJMjAwNy0xMC0xNCAxMzowMDowNi4wMDAwMDAw MDAgKzAwMDAKKysrIG1vbml0b3IuYwkyMDA3LTEwLTE1IDE1OjQxOjA5LjAwMDAwMDAwMCArMDAw MApAQCAtNTk1LDcgKzU5NSw3IEBACiAgICAgICAgICAgICAgICAgdiA9IGxkdXdfcmF3KGJ1ZiAr IGkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA0OgotICAgICAg ICAgICAgICAgIHYgPSAodWludDMyX3QpbGRsX3JhdyhidWYgKyBpKTsKKyAgICAgICAgICAgICAg ICB2ID0gKHVpbnQzMl90KWxkdWxfcmF3KGJ1ZiArIGkpOwogICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgIHYgPSBsZHFfcmF3KGJ1ZiAr IGkpOwpJbmRleDogc29mdG1tdV9leGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc29mdG1tdV9leGVjLmgu b3JpZwkyMDA3LTEwLTE0IDEzOjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysgc29mdG1tdV9leGVj LmgJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTEsMTMgKzEsNyBAQAog LyogQ29tbW9uIHNvZnRtbXUgZGVmaW5pdGlvbnMgYW5kIGlubGluZSByb3V0aW5lcy4gICovCiAK LS8qIFhYWDogZmluZCBzb21ldGhpbmcgY2xlYW5lci4KLSAqIEZ1cnRoZXJtb3JlLCB0aGlzIGlz IGZhbHNlIGZvciA2NCBiaXRzIHRhcmdldHMKLSAqLwotI2RlZmluZSBsZHVsX3VzZXIgICAgICAg bGRsX3VzZXIKLSNkZWZpbmUgbGR1bF9rZXJuZWwgICAgIGxkbF9rZXJuZWwKLSNkZWZpbmUgbGR1 bF9oeXB2ICAgICAgIGxkbF9oeXB2Ci0jZGVmaW5lIGxkdWxfZXhlY3V0aXZlICBsZGxfZXhlY3V0 aXZlCi0jZGVmaW5lIGxkdWxfc3VwZXJ2aXNvciBsZGxfc3VwZXJ2aXNvcgorI2RlZmluZSBsZHVx X3VzZXIgbGRxX3VzZXIKKyNkZWZpbmUgbGR1cV9rZXJuZWwgbGRxX2tlcm5lbAogCiAjZGVmaW5l IEFDQ0VTU19UWVBFIDAKICNkZWZpbmUgTUVNU1VGRklYIE1NVV9NT0RFMF9TVUZGSVgKQEAgLTEw NCw3ICs5OCwxMCBAQAogI2RlZmluZSBsZHNiKHApIGxkc2JfZGF0YShwKQogI2RlZmluZSBsZHV3 KHApIGxkdXdfZGF0YShwKQogI2RlZmluZSBsZHN3KHApIGxkc3dfZGF0YShwKQotI2RlZmluZSBs ZGwocCkgbGRsX2RhdGEocCkKKyNkZWZpbmUgbGR1bChwKSBsZHVsX2RhdGEocCkKKyNpZiAoVEFS R0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbChwKSBsZHNsX2RhdGEocCkKKyNlbmRp ZgogI2RlZmluZSBsZHEocCkgbGRxX2RhdGEocCkKIAogI2RlZmluZSBzdGIocCwgdikgc3RiX2Rh dGEocCwgdikKSW5kZXg6IHNvZnRtbXVfaGVhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc29mdG1tdV9o ZWFkZXIuaC5vcmlnCTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAwICswMDAwCisrKyBzb2Z0 bW11X2hlYWRlci5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0xNywy NyArMTcsODYgQEAKICAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICAqLworCisj aWYgIWRlZmluZWQoUkVWRVJTRV9FTkRJQU4pCisvKiBuYXRpdmUtZW5kaWFuICovCisjaWYgZGVm aW5lZChUQVJHRVRfV09SRFNfQklHRU5ESUFOKQorI2RlZmluZSBFU1VGRklYIF9iZQorI2Vsc2UK KyNkZWZpbmUgRVNVRkZJWCBfbGUKKyNlbmRpZgogI2lmIERBVEFfU0laRSA9PSA4CiAjZGVmaW5l IFNVRkZJWCBxCiAjZGVmaW5lIFVTVUZGSVggcQorI2RlZmluZSBMU1VGRklYIHEKKyNkZWZpbmUg TFVTVUZGSVggcQogI2RlZmluZSBEQVRBX1RZUEUgdWludDY0X3QKICNlbGlmIERBVEFfU0laRSA9 PSA0CiAjZGVmaW5lIFNVRkZJWCBsCi0jZGVmaW5lIFVTVUZGSVggbAorI2RlZmluZSBVU1VGRklY IHVsCisjZGVmaW5lIExTVUZGSVggbAorI2RlZmluZSBMVVNVRkZJWCB1bAorI2lmIChUQVJHRVRf TE9OR19CSVRTID09IDY0KQorI2RlZmluZSBEQVRBX1NUWVBFIGludDMyX3QKKyNlbmRpZgogI2Rl ZmluZSBEQVRBX1RZUEUgdWludDMyX3QKICNlbGlmIERBVEFfU0laRSA9PSAyCiAjZGVmaW5lIFNV RkZJWCB3CiAjZGVmaW5lIFVTVUZGSVggdXcKKyNkZWZpbmUgTFNVRkZJWCB3CisjZGVmaW5lIExV U1VGRklYIHV3CiAjZGVmaW5lIERBVEFfVFlQRSB1aW50MTZfdAogI2RlZmluZSBEQVRBX1NUWVBF IGludDE2X3QKICNlbGlmIERBVEFfU0laRSA9PSAxCiAjZGVmaW5lIFNVRkZJWCBiCiAjZGVmaW5l IFVTVUZGSVggdWIKKyNkZWZpbmUgTFNVRkZJWCBiCisjZGVmaW5lIExVU1VGRklYIHViCisjZGVm aW5lIERBVEFfVFlQRSB1aW50OF90CisjZGVmaW5lIERBVEFfU1RZUEUgaW50OF90CisjZWxzZQor I2Vycm9yIHVuc3VwcG9ydGVkIGRhdGEgc2l6ZQorI2VuZGlmCisjZWxzZSAvKiAhZGVmaW5lZChS RVZFUlNFX0VORElBTikgKi8KKy8qIHJldmVyc2UtZW5kaWFuICovCisjaWYgZGVmaW5lZChUQVJH RVRfV09SRFNfQklHRU5ESUFOKQorI2RlZmluZSBFU1VGRklYIF9sZQorI2Vsc2UKKyNkZWZpbmUg RVNVRkZJWCBfYmUKKyNlbmRpZgorI2lmIERBVEFfU0laRSA9PSA4CisjZGVmaW5lIFNVRkZJWCBx cgorI2RlZmluZSBVU1VGRklYIHFyCisjZGVmaW5lIExTVUZGSVggcQorI2RlZmluZSBMVVNVRkZJ WCBxCisjZGVmaW5lIERBVEFfVFlQRSB1aW50NjRfdAorI2VsaWYgREFUQV9TSVpFID09IDQKKyNk ZWZpbmUgU1VGRklYIGxyCisjZGVmaW5lIFVTVUZGSVggdWxyCisjZGVmaW5lIExTVUZGSVggbAor I2RlZmluZSBMVVNVRkZJWCB1bAorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmlu ZSBEQVRBX1NUWVBFIGludDMyX3QKKyNlbmRpZgorI2RlZmluZSBEQVRBX1RZUEUgdWludDMyX3QK KyNlbGlmIERBVEFfU0laRSA9PSAyCisjZGVmaW5lIFNVRkZJWCB3cgorI2RlZmluZSBVU1VGRklY IHV3cgorI2RlZmluZSBMU1VGRklYIHcKKyNkZWZpbmUgTFVTVUZGSVggdXcKKyNkZWZpbmUgREFU QV9UWVBFIHVpbnQxNl90CisjZGVmaW5lIERBVEFfU1RZUEUgaW50MTZfdAorI2VsaWYgREFUQV9T SVpFID09IDEKKyNkZWZpbmUgU1VGRklYIGJyCisjZGVmaW5lIFVTVUZGSVggdWJyCisjZGVmaW5l IExTVUZGSVggYgorI2RlZmluZSBMVVNVRkZJWCB1YgogI2RlZmluZSBEQVRBX1RZUEUgdWludDhf dAogI2RlZmluZSBEQVRBX1NUWVBFIGludDhfdAogI2Vsc2UKICNlcnJvciB1bnN1cHBvcnRlZCBk YXRhIHNpemUKICNlbmRpZgorI2VuZGlmIC8qIGRlZmluZWQoUkVWRVJTRV9FTkRJQU4pICovCiAK ICNpZiBBQ0NFU1NfVFlQRSA8IChOQl9NTVVfTU9ERVMpCiAKQEAgLTEyMSw3ICsxODAsNyBAQAog ICAgIHJldHVybiByZXM7CiB9CiAKLSNpZiBEQVRBX1NJWkUgPD0gMgorI2lmIGRlZmluZWQoREFU QV9TVFlQRSkKIHN0YXRpYyBpbmxpbmUgaW50IGdsdWUoZ2x1ZShsZHMsIFNVRkZJWCksIE1FTVNV RkZJWCkodGFyZ2V0X3Vsb25nIHB0cikKIHsKICAgICBpbnQgcmVzOwpAQCAtMjQ0LDcgKzMwMyw3 IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotI2lmIERBVEFfU0laRSA8PSAyCisjaWYgZGVmaW5l ZChEQVRBX1NUWVBFKQogc3RhdGljIGlubGluZSBpbnQgZ2x1ZShnbHVlKGxkcywgU1VGRklYKSwg TUVNU1VGRklYKSh0YXJnZXRfdWxvbmcgcHRyKQogewogICAgIGludCByZXMsIGluZGV4OwpAQCAt MjkzLDggKzM1MiwyOSBAQAogCiAjZW5kaWYgLyogIWFzbSAqLwogCisvKiBCRS9MRSBhY2Nlc3Mg cm91dGluZXMgKi8KK3N0YXRpYyBpbmxpbmUgUkVTX1RZUEUgZ2x1ZShnbHVlKGdsdWUobGQsIExV U1VGRklYKSwgRVNVRkZJWCksIE1FTVNVRkZJWCkodGFyZ2V0X3Vsb25nIHB0cikKK3sKKyAgICBy ZXR1cm4gZ2x1ZShnbHVlKGxkLCBVU1VGRklYKSwgTUVNU1VGRklYKShwdHIpOworfQorCisjaWYg ZGVmaW5lZChEQVRBX1NUWVBFKQorc3RhdGljIGlubGluZSBSRVNfVFlQRSBnbHVlKGdsdWUoZ2x1 ZShsZHMsIExTVUZGSVgpLCBFU1VGRklYKSwgTUVNU1VGRklYKSh0YXJnZXRfdWxvbmcgcHRyKQor eworICAgIHJldHVybiBnbHVlKGdsdWUobGRzLCBTVUZGSVgpLCBNRU1TVUZGSVgpKHB0cik7Cit9 CisjZW5kaWYKKworI2lmIEFDQ0VTU19UWVBFICE9IDMKK3N0YXRpYyBpbmxpbmUgdm9pZCBnbHVl KGdsdWUoZ2x1ZShzdCwgTFNVRkZJWCksIEVTVUZGSVgpLCBNRU1TVUZGSVgpKHRhcmdldF91bG9u ZyBwdHIsIFJFU19UWVBFIHYpCit7CisgICAgZ2x1ZShnbHVlKHN0LCBTVUZGSVgpLCBNRU1TVUZG SVgpKHB0ciwgdik7Cit9CisjZW5kaWYKKwogI2lmIEFDQ0VTU19UWVBFICE9IChOQl9NTVVfTU9E RVMgKyAxKQogCisjaWYgIWRlZmluZWQoUkVWRVJTRV9FTkRJQU4pCiAjaWYgREFUQV9TSVpFID09 IDgKIHN0YXRpYyBpbmxpbmUgZmxvYXQ2NCBnbHVlKGxkZnEsIE1FTVNVRkZJWCkodGFyZ2V0X3Vs b25nIHB0cikKIHsKQEAgLTMwNiw2ICszODYsMTEgQEAKICAgICByZXR1cm4gdS5kOwogfQogCitz dGF0aWMgaW5saW5lIGZsb2F0NjQgZ2x1ZShnbHVlKGxkZnEsIEVTVUZGSVgpLCBNRU1TVUZGSVgp KHRhcmdldF91bG9uZyBwdHIpCit7CisgICAgcmV0dXJuIGdsdWUobGRmcSwgTUVNU1VGRklYKShw dHIpOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2x1ZShzdGZxLCBNRU1TVUZGSVgpKHRhcmdl dF91bG9uZyBwdHIsIGZsb2F0NjQgdikKIHsKICAgICB1bmlvbiB7CkBAIC0zMTUsNiArNDAwLDEy IEBACiAgICAgdS5kID0gdjsKICAgICBnbHVlKHN0cSwgTUVNU1VGRklYKShwdHIsIHUuaSk7CiB9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnbHVlKGdsdWUoc3RmcSwgRVNVRkZJWCksIE1FTVNVRkZJ WCkodGFyZ2V0X3Vsb25nIHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmxvYXQ2NCB2KQoreworICAgIGdsdWUoc3RmcSwgTUVNU1VG RklYKShwdHIsIHYpOworfQogI2VuZGlmIC8qIERBVEFfU0laRSA9PSA4ICovCiAKICNpZiBEQVRB X1NJWkUgPT0gNApAQCAtMzI0LDEwICs0MTUsMTUgQEAKICAgICAgICAgZmxvYXQzMiBmOwogICAg ICAgICB1aW50MzJfdCBpOwogICAgIH0gdTsKLSAgICB1LmkgPSBnbHVlKGxkbCwgTUVNU1VGRklY KShwdHIpOworICAgIHUuaSA9IGdsdWUobGR1bCwgTUVNU1VGRklYKShwdHIpOwogICAgIHJldHVy biB1LmY7CiB9CiAKK3N0YXRpYyBpbmxpbmUgZmxvYXQzMiBnbHVlKGdsdWUobGRmbCwgRVNVRkZJ WCksIE1FTVNVRkZJWCkodGFyZ2V0X3Vsb25nIHB0cikKK3sKKyAgICByZXR1cm4gZ2x1ZShsZGZs LCBNRU1TVUZGSVgpKHB0cik7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBnbHVlKHN0ZmwsIE1F TVNVRkZJWCkodGFyZ2V0X3Vsb25nIHB0ciwgZmxvYXQzMiB2KQogewogICAgIHVuaW9uIHsKQEAg LTMzNyw4ICs0MzMsODQgQEAKICAgICB1LmYgPSB2OwogICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgp KHB0ciwgdS5pKTsKIH0KKworc3RhdGljIGlubGluZSB2b2lkIGdsdWUoZ2x1ZShzdGZsLCBFU1VG RklYKSwgTUVNU1VGRklYKSh0YXJnZXRfdWxvbmcgcHRyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDMyIHYpCit7CisgICAgZ2x1 ZShzdGZsLCBNRU1TVUZGSVgpKHB0ciwgdik7Cit9CiAjZW5kaWYgLyogREFUQV9TSVpFID09IDQg Ki8KIAorI2Vsc2UgLyogZGVmaW5lZChSRVZFUlNFX0VORElBTikgKi8KKworI2lmIERBVEFfU0la RSA9PSA4CitzdGF0aWMgaW5saW5lIGZsb2F0NjQgZ2x1ZShsZGZxciwgTUVNU1VGRklYKSh0YXJn ZXRfdWxvbmcgcHRyKQoreworICAgIHVuaW9uIHsKKyAgICAgICAgZmxvYXQ2NCBkOworICAgICAg ICB1aW50NjRfdCBpOworICAgIH0gdTsKKyAgICB1LmkgPSBnbHVlKGxkcXIsIE1FTVNVRkZJWCko cHRyKTsKKyAgICByZXR1cm4gdS5kOworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0NjQgZ2x1ZShn bHVlKGxkZnFyLCBFU1VGRklYKSwgTUVNU1VGRklYKSh0YXJnZXRfdWxvbmcgcHRyKQoreworICAg IHJldHVybiBnbHVlKGxkZnFyLCBNRU1TVUZGSVgpKHB0cik7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBnbHVlKHN0ZnFyLCBNRU1TVUZGSVgpKHRhcmdldF91bG9uZyBwdHIsIGZsb2F0NjQgdikK K3sKKyAgICB1bmlvbiB7CisgICAgICAgIGZsb2F0NjQgZDsKKyAgICAgICAgdWludDY0X3QgaTsK KyAgICB9IHU7CisgICAgdS5kID0gdjsKKyAgICBnbHVlKHN0cXIsIE1FTVNVRkZJWCkocHRyLCB1 LmkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2x1ZShnbHVlKHN0ZnFyLCBFU1VGRklYKSwg TUVNU1VGRklYKSh0YXJnZXRfdWxvbmcgcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ2NCB2KQoreworICAgIGdsdWUoc3Rm cXIsIE1FTVNVRkZJWCkocHRyLCB2KTsKK30KKyNlbmRpZiAvKiBEQVRBX1NJWkUgPT0gOCAqLwor CisjaWYgREFUQV9TSVpFID09IDQKK3N0YXRpYyBpbmxpbmUgZmxvYXQzMiBnbHVlKGxkZmxyLCBN RU1TVUZGSVgpKHRhcmdldF91bG9uZyBwdHIpCit7CisgICAgdW5pb24geworICAgICAgICBmbG9h dDMyIGY7CisgICAgICAgIHVpbnQzMl90IGk7CisgICAgfSB1OworICAgIHUuaSA9IGdsdWUobGR1 bHIsIE1FTVNVRkZJWCkocHRyKTsKKyAgICByZXR1cm4gdS5mOworfQorCitzdGF0aWMgaW5saW5l IGZsb2F0MzIgZ2x1ZShnbHVlKGxkZmxyLCBFU1VGRklYKSwgTUVNU1VGRklYKSh0YXJnZXRfdWxv bmcgcHRyKQoreworICAgIHJldHVybiBnbHVlKGxkZmxyLCBNRU1TVUZGSVgpKHB0cik7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBnbHVlKHN0ZmxyLCBNRU1TVUZGSVgpKHRhcmdldF91bG9uZyBw dHIsIGZsb2F0MzIgdikKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGZsb2F0MzIgZjsKKyAgICAg ICAgdWludDMyX3QgaTsKKyAgICB9IHU7CisgICAgdS5mID0gdjsKKyAgICBnbHVlKHN0bHIsIE1F TVNVRkZJWCkocHRyLCB1LmkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2x1ZShnbHVlKHN0 ZmxyLCBFU1VGRklYKSwgTUVNU1VGRklYKSh0YXJnZXRfdWxvbmcgcHRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQzMiB2KQor eworICAgIGdsdWUoc3RmbHIsIE1FTVNVRkZJWCkocHRyLCB2KTsKK30KKyNlbmRpZiAvKiBEQVRB X1NJWkUgPT0gNCAqLworCisjZW5kaWYgLyogZGVmaW5lZChSRVZFUlNFX0VORElBTikgKi8KKwog I2VuZGlmIC8qIEFDQ0VTU19UWVBFICE9IChOQl9NTVVfTU9ERVMgKyAxKSAqLwogCiAjdW5kZWYg UkVTX1RZUEUKQEAgLTM0Niw3ICs1MTgsMTAgQEAKICN1bmRlZiBEQVRBX1NUWVBFCiAjdW5kZWYg U1VGRklYCiAjdW5kZWYgVVNVRkZJWAorI3VuZGVmIExTVUZGSVgKKyN1bmRlZiBMVVNVRkZJWAog I3VuZGVmIERBVEFfU0laRQogI3VuZGVmIENQVV9NTVVfSU5ERVgKICN1bmRlZiBNTVVTVUZGSVgK KyN1bmRlZiBFU1VGRklYCiAjdW5kZWYgQUREUl9SRUFECkluZGV4OiBzb2Z0bW11X3RlbXBsYXRl LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gc29mdG1tdV90ZW1wbGF0ZS5oLm9yaWcJMjAwNy0xMC0xNSAxNTo0 MDoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHNvZnRtbXVfdGVtcGxhdGUuaAkyMDA3LTEwLTE1IDE1 OjQ3OjE3LjAwMDAwMDAwMCArMDAwMApAQCAtMTksMjUgKzE5LDY2IEBACiAgKi8KICNkZWZpbmUg REFUQV9TSVpFICgxIDw8IFNISUZUKQogCisjaWYgIWRlZmluZWQoUkVWRVJTRV9FTkRJQU4pCisv KiBuYXRpdmUtZW5kaWFuICovCiAjaWYgREFUQV9TSVpFID09IDgKICNkZWZpbmUgU1VGRklYIHEK ICNkZWZpbmUgVVNVRkZJWCBxCisjZGVmaW5lIFJTVUZGSVggcXIKKyNkZWZpbmUgVVJTVUZGSVgg cXIKICNkZWZpbmUgREFUQV9UWVBFIHVpbnQ2NF90CiAjZWxpZiBEQVRBX1NJWkUgPT0gNAogI2Rl ZmluZSBTVUZGSVggbAotI2RlZmluZSBVU1VGRklYIGwKKyNkZWZpbmUgVVNVRkZJWCB1bAorI2Rl ZmluZSBSU1VGRklYIGxyCisjZGVmaW5lIFVSU1VGRklYIHVscgogI2RlZmluZSBEQVRBX1RZUEUg dWludDMyX3QKICNlbGlmIERBVEFfU0laRSA9PSAyCiAjZGVmaW5lIFNVRkZJWCB3CiAjZGVmaW5l IFVTVUZGSVggdXcKKyNkZWZpbmUgUlNVRkZJWCB3cgorI2RlZmluZSBVUlNVRkZJWCB1d3IKICNk ZWZpbmUgREFUQV9UWVBFIHVpbnQxNl90CiAjZWxpZiBEQVRBX1NJWkUgPT0gMQogI2RlZmluZSBT VUZGSVggYgogI2RlZmluZSBVU1VGRklYIHViCisjZGVmaW5lIFJTVUZGSVggYnIKKyNkZWZpbmUg VVJTVUZGSVggdWJyCiAjZGVmaW5lIERBVEFfVFlQRSB1aW50OF90CiAjZWxzZQogI2Vycm9yIHVu c3VwcG9ydGVkIGRhdGEgc2l6ZQogI2VuZGlmCisjZWxzZSAvKiAhZGVmaW5lZChSRVZFUlNFX0VO RElBTikgKi8KKy8qIHJldmVyc2UtZW5kaWFuICovCisjaWYgREFUQV9TSVpFID09IDgKKyNkZWZp bmUgU1VGRklYIHFyCisjZGVmaW5lIFVTVUZGSVggcXIKKyNkZWZpbmUgUlNVRkZJWCBxCisjZGVm aW5lIFVSU1VGRklYIHEKKyNkZWZpbmUgREFUQV9UWVBFIHVpbnQ2NF90CisjZWxpZiBEQVRBX1NJ WkUgPT0gNAorI2RlZmluZSBTVUZGSVggbHIKKyNkZWZpbmUgVVNVRkZJWCB1bHIKKyNkZWZpbmUg UlNVRkZJWCBsCisjZGVmaW5lIFVSU1VGRklYIHVsCisjZGVmaW5lIERBVEFfVFlQRSB1aW50MzJf dAorI2VsaWYgREFUQV9TSVpFID09IDIKKyNkZWZpbmUgU1VGRklYIHdyCisjZGVmaW5lIFVTVUZG SVggdXdyCisjZGVmaW5lIFJTVUZGSVggdworI2RlZmluZSBVUlNVRkZJWCB1dworI2RlZmluZSBE QVRBX1RZUEUgdWludDE2X3QKKyNlbGlmIERBVEFfU0laRSA9PSAxCisjZGVmaW5lIFNVRkZJWCBi cgorI2RlZmluZSBVU1VGRklYIHVicgorI2RlZmluZSBSU1VGRklYIGIKKyNkZWZpbmUgVVJTVUZG SVggdWIKKyNkZWZpbmUgREFUQV9UWVBFIHVpbnQ4X3QKKyNlbHNlCisjZXJyb3IgdW5zdXBwb3J0 ZWQgZGF0YSBzaXplCisjZW5kaWYKKyNlbmRpZiAvKiBkZWZpbmVkKFJFVkVSU0VfRU5ESUFOKSAq LworCiAKICNpZmRlZiBTT0ZUTU1VX0NPREVfQUNDRVNTCiAjZGVmaW5lIFJFQURfQUNDRVNTX1RZ UEUgMgpAQCAtNDcsMjUgKzg4LDY0IEBACiAjZGVmaW5lIEFERFJfUkVBRCBhZGRyX3JlYWQKICNl bmRpZgogCisjaWYgKGRlZmluZWQoVEFSR0VUX1dPUkRTX0JJR0VORElBTikgJiYgIWRlZmluZWQo UkVWRVJTRV9FTkRJQU4pKSB8fCBcCisgICAgKCFkZWZpbmVkKFRBUkdFVF9XT1JEU19CSUdFTkRJ QU4pICYmIGRlZmluZWQoUkVWRVJTRV9FTkRJQU4pKQorI2RlZmluZSBBQ0NFU1NfV09SRFNfQklH RU5ESUFOCisjZW5kaWYKKworLyogQmV3YXJlOiB3ZSBkbyBub3QgaGF2ZSByZXZlcnNlLWVuZGlh biBhY2Nlc3NvcnMgZm9yIElPcyAqLworI2lmIDAKK2RlZmluZWQoUkVWRVJTRV9FTkRJQU4pCisj ZGVmaW5lIERPX0lPU1dBUCAxCisjaWYgU0hJRlQgPT0gMQorI2RlZmluZSBJT1NXQVAodmFsKSBi c3dhcDE2KHZhbCkKKyNlbGlmIFNISUZUID49IDIKKyNkZWZpbmUgSU9TV0FQKHZhbCkgYnN3YXAz Mih2YWwpCisjZWxzZQorI2RlZmluZSBJT1NXQVAodmFsKSAodmFsKQorI2VuZGlmCisjZWxzZQor I2RlZmluZSBET19JT1NXQVAgMAorI2RlZmluZSBJT1NXQVAodmFsKSAodmFsKQorI2VuZGlmCisK IHN0YXRpYyBEQVRBX1RZUEUgZ2x1ZShnbHVlKHNsb3dfbGQsIFNVRkZJWCksIE1NVVNVRkZJWCko dGFyZ2V0X3Vsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBtbXVfaWR4LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZXRhZGRyKTsKIHN0YXRpYyBp bmxpbmUgREFUQV9UWVBFIGdsdWUoaW9fcmVhZCwgU1VGRklYKSh0YXJnZXRfcGh5c19hZGRyX3Qg cGh5c2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIHRsYl9hZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0bGJfYWRkciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9faW9zd2FwKQogewogICAgIERBVEFfVFlQ RSByZXM7CisjaWYgU0hJRlQgPiAyCisgICAgdWludDMyX3QgdG1wOworI2VuZGlmCiAgICAgaW50 IGluZGV4OwogCiAgICAgaW5kZXggPSAodGxiX2FkZHIgPj4gSU9fTUVNX1NISUZUKSAmIChJT19N RU1fTkJfRU5UUklFUyAtIDEpOwogI2lmIFNISUZUIDw9IDIKICAgICByZXMgPSBpb19tZW1fcmVh ZFtpbmRleF1bU0hJRlRdKGlvX21lbV9vcGFxdWVbaW5kZXhdLCBwaHlzYWRkcik7CisgICAgaWYg KGRvX2lvc3dhcCAhPSBET19JT1NXQVApCisgICAgICAgIHJlcyA9IElPU1dBUChyZXMpOwogI2Vs c2UKLSNpZmRlZiBUQVJHRVRfV09SRFNfQklHRU5ESUFOCi0gICAgcmVzID0gKHVpbnQ2NF90KWlv X21lbV9yZWFkW2luZGV4XVsyXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2FkZHIpIDw8IDMy OwotICAgIHJlcyB8PSBpb19tZW1fcmVhZFtpbmRleF1bMl0oaW9fbWVtX29wYXF1ZVtpbmRleF0s IHBoeXNhZGRyICsgNCk7CisjaWZkZWYgQUNDRVNTX1dPUkRTX0JJR0VORElBTgorICAgIHRtcCA9 IGlvX21lbV9yZWFkW2luZGV4XVsyXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2FkZHIpOwor ICAgIGlmIChkb19pb3N3YXAgIT0gRE9fSU9TV0FQKQorICAgICAgICB0bXAgPSBJT1NXQVAodG1w KTsKKyAgICByZXMgPSAodWludDY0X3QpdG1wIDw8IDMyOworICAgIHRtcCA9IGlvX21lbV9yZWFk W2luZGV4XVsyXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2FkZHIgKyA0KTsKKyAgICBpZiAo ZG9faW9zd2FwICE9IERPX0lPU1dBUCkKKyAgICAgICAgdG1wID0gSU9TV0FQKHRtcCk7CisgICAg cmVzIHw9IHRtcDsKICNlbHNlCi0gICAgcmVzID0gaW9fbWVtX3JlYWRbaW5kZXhdWzJdKGlvX21l bV9vcGFxdWVbaW5kZXhdLCBwaHlzYWRkcik7Ci0gICAgcmVzIHw9ICh1aW50NjRfdClpb19tZW1f cmVhZFtpbmRleF1bMl0oaW9fbWVtX29wYXF1ZVtpbmRleF0sIHBoeXNhZGRyICsgNCkgPDwgMzI7 CisgICAgdG1wID0gaW9fbWVtX3JlYWRbaW5kZXhdWzJdKGlvX21lbV9vcGFxdWVbaW5kZXhdLCBw aHlzYWRkcik7CisgICAgaWYgKGRvX2lvc3dhcCAhPSBET19JT1NXQVApCisgICAgICAgIHRtcCA9 IElPU1dBUCh0bXApOworICAgIHJlcyA9IHRtcDsKKyAgICB0bXAgPSBpb19tZW1fcmVhZFtpbmRl eF1bMl0oaW9fbWVtX29wYXF1ZVtpbmRleF0sIHBoeXNhZGRyICsgNCk7CisgICAgaWYgKGRvX2lv c3dhcCAhPSBET19JT1NXQVApCisgICAgICAgIHRtcCA9IElPU1dBUCh0bXApOworICAgIHJlcyB8 PSAodWludDY0X3QpdG1wIDw8IDMyOwogI2VuZGlmCiAjZW5kaWYgLyogU0hJRlQgPiAyICovCiAj aWZkZWYgVVNFX0tRRU1VCkBAIC05MiwxMCArMTcyLDM0IEBACiAgICAgaWYgKChhZGRyICYgVEFS R0VUX1BBR0VfTUFTSykgPT0gKHRsYl9hZGRyICYgKFRBUkdFVF9QQUdFX01BU0sgfCBUTEJfSU5W QUxJRF9NQVNLKSkpIHsKICAgICAgICAgcGh5c2FkZHIgPSBhZGRyICsgZW52LT50bGJfdGFibGVb bW11X2lkeF1baW5kZXhdLmFkZGVuZDsKICAgICAgICAgaWYgKHRsYl9hZGRyICYgflRBUkdFVF9Q QUdFX01BU0spIHsKLSAgICAgICAgICAgIC8qIElPIGFjY2VzcyAqLwotICAgICAgICAgICAgaWYg KChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKQotICAgICAgICAgICAgICAgIGdvdG8gZG9f dW5hbGlnbmVkX2FjY2VzczsKLSAgICAgICAgICAgIHJlcyA9IGdsdWUoaW9fcmVhZCwgU1VGRklY KShwaHlzYWRkciwgdGxiX2FkZHIpOworICAgICAgICAgICAgaWYgKHRsYl9hZGRyICYgSU9fTUVN X1JFVkVSU0UpIHsKKyAgICAgICAgICAgICAgICBpZiAodGxiX2FkZHIgJiB+KFRBUkdFVF9QQUdF X01BU0sgfCBJT19NRU1fUkVWRVJTRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogU3BlY2lm aWMgY2FzZSBmb3IgcmV2ZXJzZSBlbmRpYW4gSU8gcmVhZCAqLworICAgICAgICAgICAgICAgICAg ICBpZiAoKGFkZHIgJiAoREFUQV9TSVpFIC0gMSkpICE9IDApCisgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGRvX3VuYWxpZ25lZF9hY2Nlc3M7CisgICAgICAgICAgICAgICAgICAgIHJlcyA9 IGdsdWUoaW9fcmVhZCwgU1VGRklYKShwaHlzYWRkciwgdGxiX2FkZHIsIDEpOworICAgICAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFNwZWNpZmljIGNhc2UgZm9y IHJldmVyc2UgZW5kaWFuIHBhZ2UgcmVhZCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoKChh ZGRyICYgflRBUkdFVF9QQUdFX01BU0spICsgREFUQV9TSVpFIC0gMSkgPj0KKyAgICAgICAgICAg ICAgICAgICAgICAgIFRBUkdFVF9QQUdFX1NJWkUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IC8qIHNsb3cgdW5hbGlnbmVkIGFjY2VzcyAoaXQgc3BhbnMgdHdvIHBhZ2VzIG9yIElPKSAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkb191bmFsaWduZWRfYWNjZXNzOworICAgICAg ICAgICAgICAgICAgICB9CisjaWZkZWYgQUxJR05FRF9PTkxZCisgICAgICAgICAgICAgICAgICAg IGlmICgoYWRkciAmIChEQVRBX1NJWkUgLSAxKSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgcmV0YWRkciA9IEdFVFBDKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb191bmFs aWduZWRfYWNjZXNzKGFkZHIsIFJFQURfQUNDRVNTX1RZUEUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1tdV9pZHgsIHJldGFkZHIpOworICAgICAgICAgICAg ICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gZ2x1ZShnbHVlKGxk LCBVUlNVRkZJWCksIF9yYXcpKCh1aW50OF90ICopKGxvbmcpcGh5c2FkZHIpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogSU8gYWNj ZXNzICovCisgICAgICAgICAgICAgICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAw KQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvX3VuYWxpZ25lZF9hY2Nlc3M7CisgICAgICAg ICAgICAgICAgcmVzID0gZ2x1ZShpb19yZWFkLCBTVUZGSVgpKHBoeXNhZGRyLCB0bGJfYWRkciwg MCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKChhZGRyICYgflRBUkdFVF9Q QUdFX01BU0spICsgREFUQV9TSVpFIC0gMSkgPj0gVEFSR0VUX1BBR0VfU0laRSkgewogICAgICAg ICAgICAgLyogc2xvdyB1bmFsaWduZWQgYWNjZXNzIChpdCBzcGFucyB0d28gcGFnZXMgb3IgSU8p ICovCiAgICAgICAgIGRvX3VuYWxpZ25lZF9hY2Nlc3M6CkBAIC0xNDQsMTAgKzI0OCw0NSBAQAog ICAgIGlmICgoYWRkciAmIFRBUkdFVF9QQUdFX01BU0spID09ICh0bGJfYWRkciAmIChUQVJHRVRf UEFHRV9NQVNLIHwgVExCX0lOVkFMSURfTUFTSykpKSB7CiAgICAgICAgIHBoeXNhZGRyID0gYWRk ciArIGVudi0+dGxiX3RhYmxlW21tdV9pZHhdW2luZGV4XS5hZGRlbmQ7CiAgICAgICAgIGlmICh0 bGJfYWRkciAmIH5UQVJHRVRfUEFHRV9NQVNLKSB7Ci0gICAgICAgICAgICAvKiBJTyBhY2Nlc3Mg Ki8KLSAgICAgICAgICAgIGlmICgoYWRkciAmIChEQVRBX1NJWkUgLSAxKSkgIT0gMCkKLSAgICAg ICAgICAgICAgICBnb3RvIGRvX3VuYWxpZ25lZF9hY2Nlc3M7Ci0gICAgICAgICAgICByZXMgPSBn bHVlKGlvX3JlYWQsIFNVRkZJWCkocGh5c2FkZHIsIHRsYl9hZGRyKTsKKyAgICAgICAgICAgIGlm ICh0bGJfYWRkciAmIElPX01FTV9SRVZFUlNFKSB7CisgICAgICAgICAgICAgICAgaWYgKHRsYl9h ZGRyICYgfihUQVJHRVRfUEFHRV9NQVNLIHwgSU9fTUVNX1JFVkVSU0UpKSB7CisgICAgICAgICAg ICAgICAgICAgIC8qIFNwZWNpZmljIGNhc2UgZm9yIHJldmVyc2UgZW5kaWFuIElPIHJlYWQgKi8K KyAgICAgICAgICAgICAgICAgICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKQor ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkb191bmFsaWduZWRfYWNjZXNzOworICAgICAg ICAgICAgICAgICAgICByZXMgPSBnbHVlKGlvX3JlYWQsIFNVRkZJWCkocGh5c2FkZHIsIHRsYl9h ZGRyLCAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAv KiBTcGVjaWZpYyBjYXNlIGZvciByZXZlcnNlIGVuZGlhbiBwYWdlIHJlYWQgKi8KKyAgICAgICAg ICAgICAgICAgICAgaWYgKCgoYWRkciAmIH5UQVJHRVRfUEFHRV9NQVNLKSArIERBVEFfU0laRSAt IDEpID49CisgICAgICAgICAgICAgICAgICAgICAgICBUQVJHRVRfUEFHRV9TSVpFKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICAvKiBzbG93IHVuYWxpZ25lZCBhY2Nlc3MgKGl0IHNwYW5zIHR3 byBwYWdlcykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIxID0gYWRkciAmIH4oREFU QV9TSVpFIC0gMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMiA9IGFkZHIxICsgREFU QV9TSVpFOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzMSA9IGdsdWUoZ2x1ZShzbG93X2xk LCBTVUZGSVgpLCBNTVVTVUZGSVgpKGFkZHIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tdV9pZHgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0YWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMyID0gZ2x1ZShn bHVlKHNsb3dfbGQsIFNVRkZJWCksIE1NVVNVRkZJWCkoYWRkcjIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW11 X2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXRhZGRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNo aWZ0ID0gKGFkZHIgJiAoREFUQV9TSVpFIC0gMSkpICogODsKKyNpZmRlZiBBQ0NFU1NfV09SRFNf QklHRU5ESUFOCisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAocmVzMSA+PiBzaGlmdCkg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXMyIDw8ICgoREFUQV9TSVpFICogOCkg LSBzaGlmdCkpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IChyZXMxIDw8 IHNoaWZ0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlczIgPj4gKChEQVRBX1NJ WkUgKiA4KSAtIHNoaWZ0KSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9 IChEQVRBX1RZUEUpcmVzOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICAgICAgLyogdW5hbGlnbmVkL2FsaWduZWQgYWNjZXNzIGluIHRoZSBzYW1lIHBh Z2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IGdsdWUoZ2x1ZShsZCwgVVJTVUZG SVgpLCBfcmF3KSgodWludDhfdCAqKShsb25nKXBoeXNhZGRyKTsKKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgLyogSU8gYWNjZXNzICovCisgICAgICAgICAgICAgICAgaWYgKChhZGRyICYgKERBVEFf U0laRSAtIDEpKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvX3VuYWxpZ25lZF9h Y2Nlc3M7CisgICAgICAgICAgICAgICAgcmVzID0gZ2x1ZShpb19yZWFkLCBTVUZGSVgpKHBoeXNh ZGRyLCB0bGJfYWRkciwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKChh ZGRyICYgflRBUkdFVF9QQUdFX01BU0spICsgREFUQV9TSVpFIC0gMSkgPj0gVEFSR0VUX1BBR0Vf U0laRSkgewogICAgICAgICBkb191bmFsaWduZWRfYWNjZXNzOgogICAgICAgICAgICAgLyogc2xv dyB1bmFsaWduZWQgYWNjZXNzIChpdCBzcGFucyB0d28gcGFnZXMpICovCkBAIC0xNTgsNyArMjk3 LDcgQEAKICAgICAgICAgICAgIHJlczIgPSBnbHVlKGdsdWUoc2xvd19sZCwgU1VGRklYKSwgTU1V U1VGRklYKShhZGRyMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtbXVfaWR4LCByZXRhZGRyKTsKICAgICAgICAgICAgIHNoaWZ0ID0g KGFkZHIgJiAoREFUQV9TSVpFIC0gMSkpICogODsKLSNpZmRlZiBUQVJHRVRfV09SRFNfQklHRU5E SUFOCisjaWZkZWYgQUNDRVNTX1dPUkRTX0JJR0VORElBTgogICAgICAgICAgICAgcmVzID0gKHJl czEgPDwgc2hpZnQpIHwgKHJlczIgPj4gKChEQVRBX1NJWkUgKiA4KSAtIHNoaWZ0KSk7CiAjZWxz ZQogICAgICAgICAgICAgcmVzID0gKHJlczEgPj4gc2hpZnQpIHwgKHJlczIgPDwgKChEQVRBX1NJ WkUgKiA4KSAtIHNoaWZ0KSk7CkBAIC0xODYsMjIgKzMyNSwzOSBAQAogc3RhdGljIGlubGluZSB2 b2lkIGdsdWUoaW9fd3JpdGUsIFNVRkZJWCkodGFyZ2V0X3BoeXNfYWRkcl90IHBoeXNhZGRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQV9UWVBFIHZhbCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0 bGJfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KnJldGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICpyZXRhZGRyLCBpbnQgZG9faW9zd2FwKQogeworI2lmIFNISUZUID4gMgorICAgIHVpbnQzMl90 IHRtcDsKKyNlbmRpZgogICAgIGludCBpbmRleDsKIAogICAgIGluZGV4ID0gKHRsYl9hZGRyID4+ IElPX01FTV9TSElGVCkgJiAoSU9fTUVNX05CX0VOVFJJRVMgLSAxKTsKICAgICBlbnYtPm1lbV93 cml0ZV92YWRkciA9IHRsYl9hZGRyOwogICAgIGVudi0+bWVtX3dyaXRlX3BjID0gKHVuc2lnbmVk IGxvbmcpcmV0YWRkcjsKICNpZiBTSElGVCA8PSAyCisgICAgaWYgKGRvX2lvc3dhcCAhPSBET19J T1NXQVApCisgICAgICAgIHZhbCA9IElPU1dBUCh2YWwpOwogICAgIGlvX21lbV93cml0ZVtpbmRl eF1bU0hJRlRdKGlvX21lbV9vcGFxdWVbaW5kZXhdLCBwaHlzYWRkciwgdmFsKTsKICNlbHNlCi0j aWZkZWYgVEFSR0VUX1dPUkRTX0JJR0VORElBTgotICAgIGlvX21lbV93cml0ZVtpbmRleF1bMl0o aW9fbWVtX29wYXF1ZVtpbmRleF0sIHBoeXNhZGRyLCB2YWwgPj4gMzIpOwotICAgIGlvX21lbV93 cml0ZVtpbmRleF1bMl0oaW9fbWVtX29wYXF1ZVtpbmRleF0sIHBoeXNhZGRyICsgNCwgdmFsKTsK KyNpZmRlZiBBQ0NFU1NfV09SRFNfQklHRU5ESUFOCisgICAgdG1wID0gdmFsID4+IDMyOworICAg IGlmIChkb19pb3N3YXAgIT0gRE9fSU9TV0FQKQorICAgICAgICB0bXAgPSBJT1NXQVAodG1wKTsK KyAgICBpb19tZW1fd3JpdGVbaW5kZXhdWzJdKGlvX21lbV9vcGFxdWVbaW5kZXhdLCBwaHlzYWRk ciwgdG1wKTsKKyAgICB0bXAgPSB2YWw7CisgICAgaWYgKGRvX2lvc3dhcCAhPSBET19JT1NXQVAp CisgICAgICAgIHRtcCA9IElPU1dBUCh0bXApOworICAgIGlvX21lbV93cml0ZVtpbmRleF1bMl0o aW9fbWVtX29wYXF1ZVtpbmRleF0sIHBoeXNhZGRyICsgNCwgdG1wKTsKICNlbHNlCi0gICAgaW9f bWVtX3dyaXRlW2luZGV4XVsyXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2FkZHIsIHZhbCk7 Ci0gICAgaW9fbWVtX3dyaXRlW2luZGV4XVsyXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2Fk ZHIgKyA0LCB2YWwgPj4gMzIpOworICAgIHRtcCA9IHZhbDsKKyAgICBpZiAoZG9faW9zd2FwICE9 IERPX0lPU1dBUCkKKyAgICAgICAgdG1wID0gSU9TV0FQKHRtcCk7CisgICAgaW9fbWVtX3dyaXRl W2luZGV4XVsyXShpb19tZW1fb3BhcXVlW2luZGV4XSwgcGh5c2FkZHIsIHRtcCk7CisgICAgdG1w ID0gdmFsID4+IDMyOworICAgIGlmIChkb19pb3N3YXAgIT0gRE9fSU9TV0FQKQorICAgICAgICB0 bXAgPSBJT1NXQVAodG1wKTsKKyAgICBpb19tZW1fd3JpdGVbaW5kZXhdWzJdKGlvX21lbV9vcGFx dWVbaW5kZXhdLCBwaHlzYWRkciArIDQsIHRtcCk7CiAjZW5kaWYKICNlbmRpZiAvKiBTSElGVCA+ IDIgKi8KICNpZmRlZiBVU0VfS1FFTVUKQEAgLTIyNCwxMiArMzgwLDM3IEBACiAgICAgaWYgKChh ZGRyICYgVEFSR0VUX1BBR0VfTUFTSykgPT0gKHRsYl9hZGRyICYgKFRBUkdFVF9QQUdFX01BU0sg fCBUTEJfSU5WQUxJRF9NQVNLKSkpIHsKICAgICAgICAgcGh5c2FkZHIgPSBhZGRyICsgZW52LT50 bGJfdGFibGVbbW11X2lkeF1baW5kZXhdLmFkZGVuZDsKICAgICAgICAgaWYgKHRsYl9hZGRyICYg flRBUkdFVF9QQUdFX01BU0spIHsKLSAgICAgICAgICAgIC8qIElPIGFjY2VzcyAqLwotICAgICAg ICAgICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKQotICAgICAgICAgICAgICAg IGdvdG8gZG9fdW5hbGlnbmVkX2FjY2VzczsKLSAgICAgICAgICAgIHJldGFkZHIgPSBHRVRQQygp OwotICAgICAgICAgICAgZ2x1ZShpb193cml0ZSwgU1VGRklYKShwaHlzYWRkciwgdmFsLCB0bGJf YWRkciwgcmV0YWRkcik7CisgICAgICAgICAgICBpZiAodGxiX2FkZHIgJiBJT19NRU1fUkVWRVJT RSkgeworICAgICAgICAgICAgICAgIGlmICh0bGJfYWRkciAmIH4oVEFSR0VUX1BBR0VfTUFTSyB8 IElPX01FTV9SRVZFUlNFKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBTcGVjaWZpYyBjYXNl IGZvciByZXZlcnNlIGVuZGlhbiBJTyB3cml0ZSAqLworICAgICAgICAgICAgICAgICAgICBpZiAo KGFkZHIgJiAoREFUQV9TSVpFIC0gMSkpICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICBn b3RvIGRvX3VuYWxpZ25lZF9hY2Nlc3M7CisgICAgICAgICAgICAgICAgICAgIHJldGFkZHIgPSBH RVRQQygpOworICAgICAgICAgICAgICAgICAgICBnbHVlKGlvX3dyaXRlLCBTVUZGSVgpKHBoeXNh ZGRyLCB2YWwsIHRsYl9hZGRyLCByZXRhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgICAgIC8qIFNwZWNpZmljIGNhc2UgZm9yIHJldmVyc2UgZW5kaWFuIHBhZ2Ugd3JpdGUg Ki8KKyAgICAgICAgICAgICAgICAgICAgaWYgKCgoYWRkciAmIH5UQVJHRVRfUEFHRV9NQVNLKSAr IERBVEFfU0laRSAtIDEpID49CisgICAgICAgICAgICAgICAgICAgICAgICBUQVJHRVRfUEFHRV9T SVpFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGRvX3VuYWxpZ25lZF9hY2Nlc3M7 CisgICAgICAgICAgICAgICAgICAgIH0KKyNpZmRlZiBBTElHTkVEX09OTFkKKyAgICAgICAgICAg ICAgICAgICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICByZXRhZGRyID0gR0VUUEMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IGRvX3VuYWxpZ25lZF9hY2Nlc3MoYWRkciwgMSwgbW11X2lkeCwgcmV0YWRkcik7CisgICAgICAg ICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBnbHVlKGdsdWUoc3Qs IFJTVUZGSVgpLCBfcmF3KSgodWludDhfdCAqKShsb25nKXBoeXNhZGRyLCB2YWwpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogSU8g YWNjZXNzICovCisgICAgICAgICAgICAgICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAh PSAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvX3VuYWxpZ25lZF9hY2Nlc3M7CisgICAg ICAgICAgICAgICAgcmV0YWRkciA9IEdFVFBDKCk7CisgICAgICAgICAgICAgICAgZ2x1ZShpb193 cml0ZSwgU1VGRklYKShwaHlzYWRkciwgdmFsLCB0bGJfYWRkciwgcmV0YWRkciwgMCk7CisgICAg ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKChhZGRyICYgflRBUkdFVF9QQUdFX01BU0sp ICsgREFUQV9TSVpFIC0gMSkgPj0gVEFSR0VUX1BBR0VfU0laRSkgeworICAgICAgICAgICAgLyog c2xvdyB1bmFsaWduZWQgYWNjZXNzIChpdCBzcGFucyB0d28gcGFnZXMgb3IgSU8pICovCiAgICAg ICAgIGRvX3VuYWxpZ25lZF9hY2Nlc3M6CiAgICAgICAgICAgICByZXRhZGRyID0gR0VUUEMoKTsK ICNpZmRlZiBBTElHTkVEX09OTFkKQEAgLTI3NSwxNSArNDU2LDQ4IEBACiAgICAgaWYgKChhZGRy ICYgVEFSR0VUX1BBR0VfTUFTSykgPT0gKHRsYl9hZGRyICYgKFRBUkdFVF9QQUdFX01BU0sgfCBU TEJfSU5WQUxJRF9NQVNLKSkpIHsKICAgICAgICAgcGh5c2FkZHIgPSBhZGRyICsgZW52LT50bGJf dGFibGVbbW11X2lkeF1baW5kZXhdLmFkZGVuZDsKICAgICAgICAgaWYgKHRsYl9hZGRyICYgflRB UkdFVF9QQUdFX01BU0spIHsKLSAgICAgICAgICAgIC8qIElPIGFjY2VzcyAqLwotICAgICAgICAg ICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKQotICAgICAgICAgICAgICAgIGdv dG8gZG9fdW5hbGlnbmVkX2FjY2VzczsKLSAgICAgICAgICAgIGdsdWUoaW9fd3JpdGUsIFNVRkZJ WCkocGh5c2FkZHIsIHZhbCwgdGxiX2FkZHIsIHJldGFkZHIpOworICAgICAgICAgICAgaWYgKHRs Yl9hZGRyICYgSU9fTUVNX1JFVkVSU0UpIHsKKyAgICAgICAgICAgICAgICBpZiAodGxiX2FkZHIg JiB+KFRBUkdFVF9QQUdFX01BU0sgfCBJT19NRU1fUkVWRVJTRSkpIHsKKyAgICAgICAgICAgICAg ICAgICAgLyogU3BlY2lmaWMgY2FzZSBmb3IgcmV2ZXJzZSBlbmRpYW4gSU8gd3JpdGUgKi8KKyAg ICAgICAgICAgICAgICAgICAgaWYgKChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKQorICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBkb191bmFsaWduZWRfYWNjZXNzOworICAgICAgICAg ICAgICAgICAgICBnbHVlKGlvX3dyaXRlLCBTVUZGSVgpKHBoeXNhZGRyLCB2YWwsIHRsYl9hZGRy LCByZXRhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEp OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFNwZWNp ZmljIGNhc2UgZm9yIHJldmVyc2UgZW5kaWFuIHBhZ2Ugd3JpdGUgKi8KKyAgICAgICAgICAgICAg ICAgICAgaWYgKCgoYWRkciAmIH5UQVJHRVRfUEFHRV9NQVNLKSArIERBVEFfU0laRSAtIDEpID49 CisgICAgICAgICAgICAgICAgICAgICAgICBUQVJHRVRfUEFHRV9TSVpFKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICAvKiBzbG93IHVuYWxpZ25lZCBhY2Nlc3MgKGl0IHNwYW5zIHR3byBwYWdl cyBvciBJTykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWDogbm90IGVmZmljaWVu dCwgYnV0IHNpbXBsZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSAwO2kgPCBE QVRBX1NJWkU7IGkrKykgeworI2lmZGVmIEFDQ0VTU19XT1JEU19CSUdFTkRJQU4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnbHVlKHNsb3dfc3RiLCBNTVVTVUZGSVgpKGFkZHIgKyBpLCB2 YWwgPj4gKGkgKiA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1tdV9pZHgsIHJldGFkZHIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnbHVlKHNsb3dfc3RiLCBNTVVTVUZGSVgpKGFkZHIgKyBpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID4+ICgoKERB VEFfU0laRSAtIDEpICogOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLSAoaSAqIDgpKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tdV9pZHgsIHJldGFkZHIpOworI2Vu ZGlmCisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsaWduZWQvdW5hbGlnbmVkIGFjY2Vz cyBpbiB0aGUgc2FtZSBwYWdlICovCisgICAgICAgICAgICAgICAgICAgICAgICBnbHVlKGdsdWUo c3QsIFJTVUZGSVgpLCBfcmF3KSgodWludDhfdCAqKShsb25nKXBoeXNhZGRyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsKTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgLyogSU8gYWNjZXNzICovCisgICAgICAgICAgICAgICAgaWYgKChh ZGRyICYgKERBVEFfU0laRSAtIDEpKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRv X3VuYWxpZ25lZF9hY2Nlc3M7CisgICAgICAgICAgICAgICAgZ2x1ZShpb193cml0ZSwgU1VGRklY KShwaHlzYWRkciwgdmFsLCB0bGJfYWRkciwgcmV0YWRkciwgMCk7CisgICAgICAgICAgICB9CiAg ICAgICAgIH0gZWxzZSBpZiAoKChhZGRyICYgflRBUkdFVF9QQUdFX01BU0spICsgREFUQV9TSVpF IC0gMSkgPj0gVEFSR0VUX1BBR0VfU0laRSkgewogICAgICAgICBkb191bmFsaWduZWRfYWNjZXNz OgogICAgICAgICAgICAgLyogWFhYOiBub3QgZWZmaWNpZW50LCBidXQgc2ltcGxlICovCiAgICAg ICAgICAgICBmb3IoaSA9IDA7aSA8IERBVEFfU0laRTsgaSsrKSB7Ci0jaWZkZWYgVEFSR0VUX1dP UkRTX0JJR0VORElBTgorI2lmZGVmIEFDQ0VTU19XT1JEU19CSUdFTkRJQU4KICAgICAgICAgICAg ICAgICBnbHVlKHNsb3dfc3RiLCBNTVVTVUZGSVgpKGFkZHIgKyBpLCB2YWwgPj4gKCgoREFUQV9T SVpFIC0gMSkgKiA4KSAtIChpICogOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbW11X2lkeCwgcmV0YWRkcik7CiAjZWxzZQpAQCAtMzA0LDEwICs1MTgsMTUg QEAKIAogI2VuZGlmIC8qICFkZWZpbmVkKFNPRlRNTVVfQ09ERV9BQ0NFU1MpICovCiAKKyN1bmRl ZiBET19JT1NXQVAKKyN1bmRlZiBJT1NXQVAKKyN1bmRlZiBBQ0NFU1NfV09SRFNfQklHRU5ESUFO CiAjdW5kZWYgUkVBRF9BQ0NFU1NfVFlQRQogI3VuZGVmIFNISUZUCiAjdW5kZWYgREFUQV9UWVBF CiAjdW5kZWYgU1VGRklYCiAjdW5kZWYgVVNVRkZJWAorI3VuZGVmIFJTVUZGSVgKKyN1bmRlZiBV UlNVRkZJWAogI3VuZGVmIERBVEFfU0laRQogI3VuZGVmIEFERFJfUkVBRApJbmRleDogaHcvZWVw cm8xMDAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBody9lZXBybzEwMC5jLm9yaWcJMjAwNy0xMC0xNCAxMzow MDowNi4wMDAwMDAwMDAgKzAwMDAKKysrIGh3L2VlcHJvMTAwLmMJMjAwNy0xMC0xNSAxNTo0MTox MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTcyMyw3ICs3MjMsNyBAQAogICAgICAgICAgICAgdWludDMy X3QgdGJkX2FkZHJlc3MgPSBjYl9hZGRyZXNzICsgMHgxMDsKICAgICAgICAgICAgIGFzc2VydCh0 Y2JfYnl0ZXMgPD0gc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgd2hpbGUgKHNpemUgPCB0Y2Jf Ynl0ZXMpIHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCB0eF9idWZmZXJfYWRkcmVzcyA9IGxk bF9waHlzKHRiZF9hZGRyZXNzKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCB0eF9idWZmZXJf YWRkcmVzcyA9IGxkdWxfcGh5cyh0YmRfYWRkcmVzcyk7CiAgICAgICAgICAgICAgICAgdWludDE2 X3QgdHhfYnVmZmVyX3NpemUgPSBsZHV3X3BoeXModGJkX2FkZHJlc3MgKyA0KTsKICAgICAgICAg ICAgICAgICAvL34gdWludDE2X3QgdHhfYnVmZmVyX2VsID0gbGR1d19waHlzKHRiZF9hZGRyZXNz ICsgNik7CiAgICAgICAgICAgICAgICAgdGJkX2FkZHJlc3MgKz0gODsKQEAgLTc0Myw3ICs3NDMs NyBAQAogICAgICAgICAgICAgICAgICAgICAvKiBFeHRlbmRlZCBUQ0IuICovCiAgICAgICAgICAg ICAgICAgICAgIGFzc2VydCh0Y2JfYnl0ZXMgPT0gMCk7CiAgICAgICAgICAgICAgICAgICAgIGZv ciAoOyB0YmRfY291bnQgPCAyOyB0YmRfY291bnQrKykgewotICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgdHhfYnVmZmVyX2FkZHJlc3MgPSBsZGxfcGh5cyh0YmRfYWRkcmVzcyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eF9idWZmZXJfYWRkcmVzcyA9IGxkdWxf cGh5cyh0YmRfYWRkcmVzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCB0eF9i dWZmZXJfc2l6ZSA9IGxkdXdfcGh5cyh0YmRfYWRkcmVzcyArIDQpOwogICAgICAgICAgICAgICAg ICAgICAgICAgdWludDE2X3QgdHhfYnVmZmVyX2VsID0gbGR1d19waHlzKHRiZF9hZGRyZXNzICsg Nik7CiAgICAgICAgICAgICAgICAgICAgICAgICB0YmRfYWRkcmVzcyArPSA4OwpAQCAtNzYwLDcg Kzc2MCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRiZF9hZGRyZXNz ID0gdGJkX2FycmF5OwogICAgICAgICAgICAgICAgIGZvciAoOyB0YmRfY291bnQgPCB0eC50YmRf Y291bnQ7IHRiZF9jb3VudCsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR4X2J1 ZmZlcl9hZGRyZXNzID0gbGRsX3BoeXModGJkX2FkZHJlc3MpOworICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCB0eF9idWZmZXJfYWRkcmVzcyA9IGxkdWxfcGh5cyh0YmRfYWRkcmVzcyk7CiAg ICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHR4X2J1ZmZlcl9zaXplID0gbGR1d19waHlzKHRi ZF9hZGRyZXNzICsgNCk7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHR4X2J1ZmZlcl9l bCA9IGxkdXdfcGh5cyh0YmRfYWRkcmVzcyArIDYpOwogICAgICAgICAgICAgICAgICAgICB0YmRf YWRkcmVzcyArPSA4OwpJbmRleDogaHcvcGMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBody9wYy5jLm9yaWcJ MjAwNy0xMC0xNCAxMzowMDowNi4wMDAwMDAwMDAgKzAwMDAKKysrIGh3L3BjLmMJMjAwNy0xMC0x NSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ3Nyw4ICs0NzcsOCBAQAogICAgIH0KIAog ICAgIC8qIGtlcm5lbCBwcm90b2NvbCB2ZXJzaW9uICovCi0gICAgZnByaW50ZihzdGRlcnIsICJo ZWFkZXIgbWFnaWM6ICUjeFxuIiwgbGRsX3AoaGVhZGVyKzB4MjAyKSk7Ci0gICAgaWYgKGxkbF9w KGhlYWRlcisweDIwMikgPT0gMHg1MzcyNjQ0OCkKKyAgICBmcHJpbnRmKHN0ZGVyciwgImhlYWRl ciBtYWdpYzogJSN4XG4iLCBsZHVsX3AoaGVhZGVyKzB4MjAyKSk7CisgICAgaWYgKGxkdWxfcCho ZWFkZXIrMHgyMDIpID09IDB4NTM3MjY0NDgpCiAJcHJvdG9jb2wgPSBsZHV3X3AoaGVhZGVyKzB4 MjA2KTsKICAgICBlbHNlCiAJcHJvdG9jb2wgPSAwOwpAQCAtNTEwLDcgKzUxMCw3IEBACiAKICAg ICAvKiBoaWdoZXN0IGFkZHJlc3MgZm9yIGxvYWRpbmcgdGhlIGluaXRyZCAqLwogICAgIGlmIChw cm90b2NvbCA+PSAweDIwMykKLQlpbml0cmRfbWF4ID0gbGRsX3AoaGVhZGVyKzB4MjJjKTsKKwlp bml0cmRfbWF4ID0gbGR1bF9wKGhlYWRlcisweDIyYyk7CiAgICAgZWxzZQogCWluaXRyZF9tYXgg PSAweDM3ZmZmZmZmOwogCkluZGV4OiBody9wbDA4MC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh3L3BsMDgw LmMub3JpZwkyMDA3LTEwLTE0IDEzOjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysgaHcvcGwwODAu YwkyMDA3LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtMTYyLDEwICsxNjIsMTAg QEAKICAgICAgICAgICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgICAgICAgICAvKiBUcmFu c2ZlciBjb21wbGV0ZS4gICovCiAgICAgICAgICAgICAgICAgaWYgKGNoLT5sbGkpIHsKLSAgICAg ICAgICAgICAgICAgICAgY2gtPnNyYyA9IGxkbF9waHlzKGNoLT5sbGkpOwotICAgICAgICAgICAg ICAgICAgICBjaC0+ZGVzdCA9IGxkbF9waHlzKGNoLT5sbGkgKyA0KTsKLSAgICAgICAgICAgICAg ICAgICAgY2gtPmN0cmwgPSBsZGxfcGh5cyhjaC0+bGxpICsgMTIpOwotICAgICAgICAgICAgICAg ICAgICBjaC0+bGxpID0gbGRsX3BoeXMoY2gtPmxsaSArIDgpOworICAgICAgICAgICAgICAgICAg ICBjaC0+c3JjID0gbGR1bF9waHlzKGNoLT5sbGkpOworICAgICAgICAgICAgICAgICAgICBjaC0+ ZGVzdCA9IGxkdWxfcGh5cyhjaC0+bGxpICsgNCk7CisgICAgICAgICAgICAgICAgICAgIGNoLT5j dHJsID0gbGR1bF9waHlzKGNoLT5sbGkgKyAxMik7CisgICAgICAgICAgICAgICAgICAgIGNoLT5s bGkgPSBsZHVsX3BoeXMoY2gtPmxsaSArIDgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgICAgICAgICAgIGNoLT5jb25mICY9IH5QTDA4MF9DQ09ORl9FOwogICAgICAgICAg ICAgICAgIH0KSW5kZXg6IGh3L3N1bjRtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHcvc3VuNG0uYy5vcmln CTIwMDctMTAtMTQgMTY6Mjc6MzkuMDAwMDAwMDAwICswMDAwCisrKyBody9zdW40bS5jCTIwMDct MTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC00NjUsNyArNDY1LDcgQEAKICAgICAg ICAgfQogICAgICAgICBpZiAoaW5pdHJkX3NpemUgPiAwKSB7CiAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgNjQgKiBUQVJHRVRfUEFHRV9TSVpFOyBpICs9IFRBUkdFVF9QQUdFX1NJWkUpIHsK LSAgICAgICAgICAgICAgICBpZiAobGRsX3JhdyhwaHlzX3JhbV9iYXNlICsgS0VSTkVMX0xPQURf QUREUiArIGkpCisgICAgICAgICAgICAgICAgaWYgKGxkdWxfcmF3KHBoeXNfcmFtX2Jhc2UgKyBL RVJORUxfTE9BRF9BRERSICsgaSkKICAgICAgICAgICAgICAgICAgICAgPT0gMHg0ODY0NzI1Mykg eyAvLyBIZHJTCiAgICAgICAgICAgICAgICAgICAgIHN0bF9yYXcocGh5c19yYW1fYmFzZSArIEtF Uk5FTF9MT0FEX0FERFIgKyBpICsgMTYsIElOSVRSRF9MT0FEX0FERFIpOwogICAgICAgICAgICAg ICAgICAgICBzdGxfcmF3KHBoeXNfcmFtX2Jhc2UgKyBLRVJORUxfTE9BRF9BRERSICsgaSArIDIw LCBpbml0cmRfc2l6ZSk7CkluZGV4OiBody9zdW40dS5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh3L3N1bjR1 LmMub3JpZwkyMDA3LTEwLTE0IDE2OjI3OjM5LjAwMDAwMDAwMCArMDAwMAorKysgaHcvc3VuNHUu YwkyMDA3LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtNDE4LDcgKzQxOCw3IEBA CiAgICAgICAgIH0KICAgICAgICAgaWYgKGluaXRyZF9zaXplID4gMCkgewogICAgICAgICAgICAg Zm9yIChpID0gMDsgaSA8IDY0ICogVEFSR0VUX1BBR0VfU0laRTsgaSArPSBUQVJHRVRfUEFHRV9T SVpFKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxkbF9yYXcocGh5c19yYW1fYmFzZSArIEtFUk5F TF9MT0FEX0FERFIgKyBpKQorICAgICAgICAgICAgICAgIGlmIChsZHVsX3JhdyhwaHlzX3JhbV9i YXNlICsgS0VSTkVMX0xPQURfQUREUiArIGkpCiAgICAgICAgICAgICAgICAgICAgID09IDB4NDg2 NDcyNTMpIHsgLy8gSGRyUwogICAgICAgICAgICAgICAgICAgICBzdGxfcmF3KHBoeXNfcmFtX2Jh c2UgKyBLRVJORUxfTE9BRF9BRERSICsgaSArIDE2LCBJTklUUkRfTE9BRF9BRERSKTsKICAgICAg ICAgICAgICAgICAgICAgc3RsX3JhdyhwaHlzX3JhbV9iYXNlICsgS0VSTkVMX0xPQURfQUREUiAr IGkgKyAyMCwgaW5pdHJkX3NpemUpOwpJbmRleDogbGludXgtdXNlci9lbGZsb2FkLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGludXgtdXNlci9lbGZsb2FkLmMub3JpZwkyMDA3LTEwLTE0IDE2OjIyOjAwLjAw MDAwMDAwMCArMDAwMAorKysgbGludXgtdXNlci9lbGZsb2FkLmMJMjAwNy0xMC0xNSAxNTo0MTo1 OC4wMDAwMDAwMDAgKzAwMDAKQEAgLTM0Niw3ICszNDYsNyBAQAogICAgIHBvcyArPSBzaXplb2Yo YWJpX3Vsb25nKTsKICAgICBfcmVncy0+Z3ByWzRdID0gcG9zOwogICAgIGZvciAodG1wID0gMTsg dG1wICE9IDA7IHBvcyArPSBzaXplb2YoYWJpX3Vsb25nKSkKLSAgICAgICAgdG1wID0gbGRsKHBv cyk7CisgICAgICAgIHRtcCA9IGxkdWwocG9zKTsKICAgICBfcmVncy0+Z3ByWzVdID0gcG9zOwog fQogCkluZGV4OiBsaW51eC11c2VyL3FlbXUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC11c2VyL3Fl bXUuaC5vcmlnCTIwMDctMTAtMTQgMTY6MjI6MDAuMDAwMDAwMDAwICswMDAwCisrKyBsaW51eC11 c2VyL3FlbXUuaAkyMDA3LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtMzIzLDcg KzMyMyw3IEBACiAjZGVmaW5lIHRwdXQ4KGFkZHIsIHZhbCkgc3RiKGFkZHIsIHZhbCkKICNkZWZp bmUgdGdldDE2KGFkZHIpIGxkdXcoYWRkcikKICNkZWZpbmUgdHB1dDE2KGFkZHIsIHZhbCkgc3R3 KGFkZHIsIHZhbCkKLSNkZWZpbmUgdGdldDMyKGFkZHIpIGxkbChhZGRyKQorI2RlZmluZSB0Z2V0 MzIoYWRkcikgbGR1bChhZGRyKQogI2RlZmluZSB0cHV0MzIoYWRkciwgdmFsKSBzdGwoYWRkciwg dmFsKQogI2RlZmluZSB0Z2V0NjQoYWRkcikgbGRxKGFkZHIpCiAjZGVmaW5lIHRwdXQ2NChhZGRy LCB2YWwpIHN0cShhZGRyLCB2YWwpCkBAIC0zMzEsNyArMzMxLDcgQEAKICNkZWZpbmUgdGdldGwo YWRkcikgbGRxKGFkZHIpCiAjZGVmaW5lIHRwdXRsKGFkZHIsIHZhbCkgc3RxKGFkZHIsIHZhbCkK ICNlbHNlCi0jZGVmaW5lIHRnZXRsKGFkZHIpIGxkbChhZGRyKQorI2RlZmluZSB0Z2V0bChhZGRy KSBsZHVsKGFkZHIpCiAjZGVmaW5lIHRwdXRsKGFkZHIsIHZhbCkgc3RsKGFkZHIsIHZhbCkKICNl bmRpZgogCkluZGV4OiBsaW51eC11c2VyL3NpZ25hbC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LXVz ZXIvc2lnbmFsLmMub3JpZwkyMDA3LTEwLTE0IDE2OjIyOjAwLjAwMDAwMDAwMCArMDAwMAorKysg bGludXgtdXNlci9zaWduYWwuYwkyMDA3LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApA QCAtODc4LDI4ICs4NzgsMjggQEAKICAgICAgICAgY3B1X3g4Nl9sb2FkX3NlZyhlbnYsIFJfRVMs IGxkdXcoJnNjLT5lcykpOwogICAgICAgICBjcHVfeDg2X2xvYWRfc2VnKGVudiwgUl9EUywgbGR1 dygmc2MtPmRzKSk7CiAKLSAgICAgICAgZW52LT5yZWdzW1JfRURJXSA9IGxkbCgmc2MtPmVkaSk7 Ci0gICAgICAgIGVudi0+cmVnc1tSX0VTSV0gPSBsZGwoJnNjLT5lc2kpOwotICAgICAgICBlbnYt PnJlZ3NbUl9FQlBdID0gbGRsKCZzYy0+ZWJwKTsKLSAgICAgICAgZW52LT5yZWdzW1JfRVNQXSA9 IGxkbCgmc2MtPmVzcCk7Ci0gICAgICAgIGVudi0+cmVnc1tSX0VCWF0gPSBsZGwoJnNjLT5lYngp OwotICAgICAgICBlbnYtPnJlZ3NbUl9FRFhdID0gbGRsKCZzYy0+ZWR4KTsKLSAgICAgICAgZW52 LT5yZWdzW1JfRUNYXSA9IGxkbCgmc2MtPmVjeCk7Ci0gICAgICAgIGVudi0+ZWlwID0gbGRsKCZz Yy0+ZWlwKTsKKyAgICAgICAgZW52LT5yZWdzW1JfRURJXSA9IGxkdWwoJnNjLT5lZGkpOworICAg ICAgICBlbnYtPnJlZ3NbUl9FU0ldID0gbGR1bCgmc2MtPmVzaSk7CisgICAgICAgIGVudi0+cmVn c1tSX0VCUF0gPSBsZHVsKCZzYy0+ZWJwKTsKKyAgICAgICAgZW52LT5yZWdzW1JfRVNQXSA9IGxk dWwoJnNjLT5lc3ApOworICAgICAgICBlbnYtPnJlZ3NbUl9FQlhdID0gbGR1bCgmc2MtPmVieCk7 CisgICAgICAgIGVudi0+cmVnc1tSX0VEWF0gPSBsZHVsKCZzYy0+ZWR4KTsKKyAgICAgICAgZW52 LT5yZWdzW1JfRUNYXSA9IGxkdWwoJnNjLT5lY3gpOworICAgICAgICBlbnYtPmVpcCA9IGxkdWwo JnNjLT5laXApOwogCiAgICAgICAgIGNwdV94ODZfbG9hZF9zZWcoZW52LCBSX0NTLCBsZHV3KCZz Yy0+Y3MpIHwgMyk7CiAgICAgICAgIGNwdV94ODZfbG9hZF9zZWcoZW52LCBSX1NTLCBsZHV3KCZz Yy0+c3MpIHwgMyk7CiAKIAl7CiAJCXVuc2lnbmVkIGludCB0bXBmbGFnczsKLSAgICAgICAgICAg ICAgICB0bXBmbGFncyA9IGxkbCgmc2MtPmVmbGFncyk7CisgICAgICAgICAgICAgICAgdG1wZmxh Z3MgPSBsZHVsKCZzYy0+ZWZsYWdzKTsKIAkJZW52LT5lZmxhZ3MgPSAoZW52LT5lZmxhZ3MgJiB+ MHg0MERENSkgfCAodG1wZmxhZ3MgJiAweDQwREQ1KTsKICAgICAgICAgICAgICAgICAvLwkJcmVn cy0+b3JpZ19lYXggPSAtMTsJCS8qIGRpc2FibGUgc3lzY2FsbCBjaGVja3MgKi8KIAl9CiAKIAl7 CiAJCXN0cnVjdCBfZnBzdGF0ZSAqIGJ1ZjsKLSAgICAgICAgICAgICAgICBidWYgPSAodm9pZCAq KWxkbCgmc2MtPmZwc3RhdGUpOworICAgICAgICAgICAgICAgIGJ1ZiA9ICh2b2lkICopbGR1bCgm c2MtPmZwc3RhdGUpOwogCQlpZiAoYnVmKSB7CiAjaWYgMAogCQkJaWYgKHZlcmlmeV9hcmVhKFZF UklGWV9SRUFELCBidWYsIHNpemVvZigqYnVmKSkpCkBAIC05MDksNyArOTA5LDcgQEAKIAkJfQog CX0KIAotICAgICAgICAqcGVheCA9IGxkbCgmc2MtPmVheCk7CisgICAgICAgICpwZWF4ID0gbGR1 bCgmc2MtPmVheCk7CiAJcmV0dXJuIGVycjsKICNpZiAwCiBiYWRmcmFtZToKSW5kZXg6IGxpbnV4 LXVzZXIvdm04Ni5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LXVzZXIvdm04Ni5jLm9yaWcJMjAwNy0x MC0xNCAxNjoyMjowMC4wMDAwMDAwMDAgKzAwMDAKKysrIGxpbnV4LXVzZXIvdm04Ni5jCTIwMDct MTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC01Niw3ICs1Niw3IEBACiAKIHN0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IHZtX2dldGwodWludDhfdCAqc2VncHRyLCB1bnNpZ25lZCBp bnQgcmVnMTYpCiB7Ci0gICAgcmV0dXJuIGxkbChzZWdwdHIgKyAocmVnMTYgJiAweGZmZmYpKTsK KyAgICByZXR1cm4gbGR1bChzZWdwdHIgKyAocmVnMTYgJiAweGZmZmYpKTsKIH0KIAogdm9pZCBz YXZlX3Y4Nl9zdGF0ZShDUFVYODZTdGF0ZSAqZW52KQpJbmRleDogdGFyZ2V0LWFscGhhL2V4ZWMu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSB0YXJnZXQtYWxwaGEvZXhlYy5oLm9yaWcJMjAwNy0xMC0xNSAxNTo0 MDoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHRhcmdldC1hbHBoYS9leGVjLmgJMjAwNy0xMC0xNSAx NTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTYyLDYgKzYyLDkgQEAKIAogI2lmICFkZWZpbmVk KENPTkZJR19VU0VSX09OTFkpCiAjaW5jbHVkZSAic29mdG1tdV9leGVjLmgiCisjZGVmaW5lIFJF VkVSU0VfRU5ESUFOCisjaW5jbHVkZSAic29mdG1tdV9leGVjLmgiCisjdW5kZWYgUkVWRVJTRV9F TkRJQU4KICNlbmRpZiAvKiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKSAqLwogCiBzdGF0aWMg aW5saW5lIHZvaWQgZW52X3RvX3JlZ3Modm9pZCkKSW5kZXg6IHRhcmdldC1hbHBoYS9oZWxwZXIu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSB0YXJnZXQtYWxwaGEvaGVscGVyLmMub3JpZwkyMDA3LTEwLTE0IDEz OjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LWFscGhhL2hlbHBlci5jCTIwMDctMTAt MTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICAg ICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfRFRCX01JU1NfUEFMOwogICAgICAgICBlbHNl CiAgICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfRFRCX01JU1NfTkFUSVZF OwotICAgICAgICBvcGMgPSAobGRsX2NvZGUoZW52LT5wYykgPj4gMjEpIDw8IDQ7CisgICAgICAg IG9wYyA9IChsZHVsX2NvZGUoZW52LT5wYykgPj4gMjEpIDw8IDQ7CiAgICAgICAgIGlmIChydykg ewogICAgICAgICAgICAgb3BjIHw9IDB4OTsKICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IHRhcmdl dC1hbHBoYS9vcF9oZWxwZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtYWxwaGEvb3BfaGVscGVy LmMub3JpZwkyMDA3LTEwLTE1IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LWFs cGhhL29wX2hlbHBlci5jCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0x MjEzLDYgKzEyMTMsNyBAQAogCiAjZGVmaW5lIE1NVVNVRkZJWCBfbW11CiAKKy8qIE5hdGl2ZS1l bmRpYW4gKi8KICNkZWZpbmUgU0hJRlQgMAogI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIK IApAQCAtMTIyNSw2ICsxMjI2LDIxIEBACiAjZGVmaW5lIFNISUZUIDMKICNpbmNsdWRlICJzb2Z0 bW11X3RlbXBsYXRlLmgiCiAKKy8qIFJldmVyc2UtZW5kaWFuICovCisjZGVmaW5lIFJFVkVSU0Vf RU5ESUFOCisjZGVmaW5lIFNISUZUIDAKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisK KyNkZWZpbmUgU0hJRlQgMQorI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIKKworI2RlZmlu ZSBTSElGVCAyCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisjZGVmaW5lIFNISUZU IDMKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisjdW5kZWYgUkVWRVJTRV9FTkRJQU4K KwogLyogdHJ5IHRvIGZpbGwgdGhlIFRMQiBhbmQgcmV0dXJuIGFuIGV4Y2VwdGlvbiBpZiBlcnJv ci4gSWYgcmV0YWRkciBpcwogICAgTlVMTCwgaXQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gd2Fz IGNhbGxlZCBpbiBDIGNvZGUgKGkuZS4gbm90CiAgICBmcm9tIGdlbmVyYXRlZCBjb2RlIG9yIGZy b20gaGVscGVyLmMpICovCkluZGV4OiB0YXJnZXQtYWxwaGEvb3BfbWVtLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gdGFyZ2V0LWFscGhhL29wX21lbS5oLm9yaWcJMjAwNy0xMC0xNCAxMzowMDowNi4wMDAwMDAw MDAgKzAwMDAKKysrIHRhcmdldC1hbHBoYS9vcF9tZW0uaAkyMDA3LTEwLTE1IDE1OjQxOjEwLjAw MDAwMDAwMCArMDAwMApAQCAtMzAsNyArMzAsNyBAQAogewogICAgIGVudi0+bG9jayA9IEVBOwog Ci0gICAgcmV0dXJuIGdsdWUobGRsLCBNRU1TVUZGSVgpKEVBKTsKKyAgICByZXR1cm4gZ2x1ZShs ZHVsLCBNRU1TVUZGSVgpKEVBKTsKIH0KIAogc3RhdGljIGlubGluZSB1aW50MzJfdCBnbHVlKGxk cV9sLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEpCkBAIC04Miw3ICs4Miw3IEBACiBBTFBI QV9TVF9PUChiLCBzdGIpOwogQUxQSEFfTERfT1Aod3UsIGxkdXcpOwogQUxQSEFfU1RfT1Aodywg c3R3KTsKLUFMUEhBX0xEX09QKGwsIGxkbCk7CitBTFBIQV9MRF9PUChsLCBsZHVsKTsKIEFMUEhB X1NUX09QKGwsIHN0bCk7CiBBTFBIQV9MRF9PUChxLCBsZHEpOwogQUxQSEFfU1RfT1AocSwgc3Rx KTsKSW5kZXg6IHRhcmdldC1hbHBoYS90cmFuc2xhdGUuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQt YWxwaGEvdHJhbnNsYXRlLmMub3JpZwkyMDA3LTEwLTE0IDE2OjQ0OjIwLjAwMDAwMDAwMCArMDAw MAorKysgdGFyZ2V0LWFscGhhL3RyYW5zbGF0ZS5jCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAw MDAwICswMDAwCkBAIC0yMDEwLDcgKzIwMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjdHgu cGMsIGN0eC5tZW1faWR4KTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGluc24gPSBsZGxf Y29kZShjdHgucGMpOworICAgICAgICBpbnNuID0gbGR1bF9jb2RlKGN0eC5wYyk7CiAjaWYgZGVm aW5lZCBBTFBIQV9ERUJVR19ESVNBUwogICAgICAgICBpbnNuX2NvdW50Kys7CiAgICAgICAgIGlm IChsb2dmaWxlICE9IE5VTEwpIHsKSW5kZXg6IHRhcmdldC1hcm0vZXhlYy5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRhcmdldC1hcm0vZXhlYy5oLm9yaWcJMjAwNy0xMC0xNSAxNTo0MDoyMi4wMDAwMDAwMDAg KzAwMDAKKysrIHRhcmdldC1hcm0vZXhlYy5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAw ICswMDAwCkBAIC02NCw2ICs2NCw5IEBACiAKICNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZ KQogI2luY2x1ZGUgInNvZnRtbXVfZXhlYy5oIgorI2RlZmluZSBSRVZFUlNFX0VORElBTgorI2lu Y2x1ZGUgInNvZnRtbXVfZXhlYy5oIgorI3VuZGVmIFJFVkVSU0VfRU5ESUFOCiAjZW5kaWYKIAog LyogSW4gb3BfaGVscGVyLmMgKi8KSW5kZXg6IHRhcmdldC1hcm0vaGVscGVyLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gdGFyZ2V0LWFybS9oZWxwZXIuYy5vcmlnCTIwMDctMTAtMTQgMTM6MDA6MDYuMDAwMDAw MDAwICswMDAwCisrKyB0YXJnZXQtYXJtL2hlbHBlci5jCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAw MDAwMDAwICswMDAwCkBAIC0yOTcsNyArMjk3LDcgQEAKICAgICAgICAgICAgIGlmIChlbnYtPnRo dW1iKSB7CiAgICAgICAgICAgICAgICAgbWFzayA9IGxkdXdfY29kZShlbnYtPnJlZ3NbMTVdIC0g MikgJiAweGZmOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtYXNrID0g bGRsX2NvZGUoZW52LT5yZWdzWzE1XSAtIDQpICYgMHhmZmZmZmY7CisgICAgICAgICAgICAgICAg bWFzayA9IGxkdWxfY29kZShlbnYtPnJlZ3NbMTVdIC0gNCkgJiAweGZmZmZmZjsKICAgICAgICAg ICAgIH0KICAgICAgICAgICAgIC8qIE9ubHkgaW50ZXJjZXB0IGNhbGxzIGZyb20gcHJpdmlsZWdl ZCBtb2RlcywgdG8gcHJvdmlkZSBzb21lCiAgICAgICAgICAgICAgICBzZW1ibGFuY2Ugb2Ygc2Vj dXJpdHkuICAqLwpAQCAtNDczLDcgKzQ3Myw3IEBACiAgICAgICAgIC8qIFBhZ2V0YWJsZSB3YWxr LiAgKi8KICAgICAgICAgLyogTG9va3VwIGwxIGRlc2NyaXB0b3IuICAqLwogICAgICAgICB0YWJs ZSA9IChlbnYtPmNwMTUuYzJfYmFzZSAmIDB4ZmZmZmMwMDApIHwgKChhZGRyZXNzID4+IDE4KSAm IDB4M2ZmYyk7Ci0gICAgICAgIGRlc2MgPSBsZGxfcGh5cyh0YWJsZSk7CisgICAgICAgIGRlc2Mg PSBsZHVsX3BoeXModGFibGUpOwogICAgICAgICB0eXBlID0gKGRlc2MgJiAzKTsKICAgICAgICAg ZG9tYWluID0gKGVudi0+Y3AxNS5jMyA+PiAoKGRlc2MgPj4gNCkgJiAweDFlKSkgJiAzOwogICAg ICAgICBpZiAodHlwZSA9PSAwKSB7CkBAIC01MDIsNyArNTAyLDcgQEAKICAgICAgICAgICAgICAg ICAvKiBGaW5lIHBhZ2V0YWJsZS4gICovCiAgICAgICAgICAgICAgICAgdGFibGUgPSAoZGVzYyAm IDB4ZmZmZmYwMDApIHwgKChhZGRyZXNzID4+IDgpICYgMHhmZmMpOwogICAgICAgICAgICAgfQot ICAgICAgICAgICAgZGVzYyA9IGxkbF9waHlzKHRhYmxlKTsKKyAgICAgICAgICAgIGRlc2MgPSBs ZHVsX3BoeXModGFibGUpOwogICAgICAgICAgICAgc3dpdGNoIChkZXNjICYgMykgewogICAgICAg ICAgICAgY2FzZSAwOiAvKiBQYWdlIHRyYW5zbGF0aW9uIGZhdWx0LiAgKi8KICAgICAgICAgICAg ICAgICBjb2RlID0gNzsKSW5kZXg6IHRhcmdldC1hcm0vb3BfaGVscGVyLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gdGFyZ2V0LWFybS9vcF9oZWxwZXIuYy5vcmlnCTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAw MDAwICswMDAwCisrKyB0YXJnZXQtYXJtL29wX2hlbHBlci5jCTIwMDctMTAtMTUgMTU6NDE6MTAu MDAwMDAwMDAwICswMDAwCkBAIC0xODAsNiArMTgwLDcgQEAKICNkZWZpbmUgTU1VU1VGRklYIF9t bXUKICNkZWZpbmUgR0VUUEMoKSAoX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKQogCisvKiBO YXRpdmUtZW5kaWFuICovCiAjZGVmaW5lIFNISUZUIDAKICNpbmNsdWRlICJzb2Z0bW11X3RlbXBs YXRlLmgiCiAKQEAgLTE5Miw2ICsxOTMsMjEgQEAKICNkZWZpbmUgU0hJRlQgMwogI2luY2x1ZGUg InNvZnRtbXVfdGVtcGxhdGUuaCIKIAorLyogUmV2ZXJzZS1lbmRpYW4gKi8KKyNkZWZpbmUgUkVW RVJTRV9FTkRJQU4KKyNkZWZpbmUgU0hJRlQgMAorI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUu aCIKKworI2RlZmluZSBTSElGVCAxCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisj ZGVmaW5lIFNISUZUIDIKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUg U0hJRlQgMworI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIKKyN1bmRlZiBSRVZFUlNFX0VO RElBTgorCiAvKiB0cnkgdG8gZmlsbCB0aGUgVExCIGFuZCByZXR1cm4gYW4gZXhjZXB0aW9uIGlm IGVycm9yLiBJZiByZXRhZGRyIGlzCiAgICBOVUxMLCBpdCBtZWFucyB0aGF0IHRoZSBmdW5jdGlv biB3YXMgY2FsbGVkIGluIEMgY29kZSAoaS5lLiBub3QKICAgIGZyb20gZ2VuZXJhdGVkIGNvZGUg b3IgZnJvbSBoZWxwZXIuYykgKi8KSW5kZXg6IHRhcmdldC1hcm0vb3BfbWVtLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gdGFyZ2V0LWFybS9vcF9tZW0uaC5vcmlnCTIwMDctMTAtMTQgMTM6MDA6MDYuMDAwMDAw MDAwICswMDAwCisrKyB0YXJnZXQtYXJtL29wX21lbS5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAw MDAwMDAwICswMDAwCkBAIC0xLDE4ICsxLDE3IEBACiAvKiBBUk0gbWVtb3J5IG9wZXJhdGlvbnMu ICAqLwogCi0vKiBMb2FkIGZyb20gYWRkcmVzcyBUMSBpbnRvIFQwLiAgKi8KLSNkZWZpbmUgTUVN X0xEX09QKG5hbWUpIFwKKyNkZWZpbmUgTUVNX0xEX09QKG5hbWUsIGxuYW1lKSBcCiB2b2lkIE9Q UFJPVE8gZ2x1ZShvcF9sZCMjbmFtZSxNRU1TVUZGSVgpKHZvaWQpIFwKIHsgXAotICAgIFQwID0g Z2x1ZShsZCMjbmFtZSxNRU1TVUZGSVgpKFQxKTsgXAorICAgIFQwID0gZ2x1ZShsZCMjbG5hbWUs TUVNU1VGRklYKShUMSk7IFwKICAgICBGT1JDRV9SRVQoKTsgXAogfQogCi1NRU1fTERfT1AodWIp Ci1NRU1fTERfT1Aoc2IpCi1NRU1fTERfT1AodXcpCi1NRU1fTERfT1Aoc3cpCi1NRU1fTERfT1Ao bCkKK01FTV9MRF9PUCh1Yix1YikKK01FTV9MRF9PUChzYixzYikKK01FTV9MRF9PUCh1dyx1dykK K01FTV9MRF9PUChzdyxzdykKK01FTV9MRF9PUChsLHVsKQogCiAjdW5kZWYgTUVNX0xEX09QCiAK QEAgLTQ1LDcgKzQ0LDcgQEAKIH0KIAogTUVNX1NXUF9PUChiLCB1YikKLU1FTV9TV1BfT1AobCwg bCkKK01FTV9TV1BfT1AobCwgdWwpCiAKICN1bmRlZiBNRU1fU1dQX09QCiAKQEAgLTgyLDcgKzgx LDcgQEAKIAogTU1YX01FTV9PUChiLCB1YikKIE1NWF9NRU1fT1AodywgdXcpCi1NTVhfTUVNX09Q KGwsIGwpCitNTVhfTUVNX09QKGwsIHVsKQogTU1YX01FTV9PUChxLCBxKQogCiAjdW5kZWYgTU1Y X01FTV9PUApJbmRleDogdGFyZ2V0LWFybS90cmFuc2xhdGUuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJn ZXQtYXJtL3RyYW5zbGF0ZS5jLm9yaWcJMjAwNy0xMC0xNCAxNjo0NDoyMC4wMDAwMDAwMDAgKzAw MDAKKysrIHRhcmdldC1hcm0vdHJhbnNsYXRlLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAw MDAgKzAwMDAKQEAgLTIyMDYsNyArMjIwNiw3IEBACiB7CiAgICAgdW5zaWduZWQgaW50IGNvbmQs IGluc24sIHZhbCwgb3AxLCBpLCBzaGlmdCwgcm0sIHJzLCBybiwgcmQsIHNoOwogCi0gICAgaW5z biA9IGxkbF9jb2RlKHMtPnBjKTsKKyAgICBpbnNuID0gbGR1bF9jb2RlKHMtPnBjKTsKICAgICBz LT5wYyArPSA0OwogCiAgICAgY29uZCA9IGluc24gPj4gMjg7CkluZGV4OiB0YXJnZXQtY3Jpcy9l eGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LWNyaXMvZXhlYy5oLm9yaWcJMjAwNy0xMC0xNSAx NTo0MDoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHRhcmdldC1jcmlzL2V4ZWMuaAkyMDA3LTEwLTE1 IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtNTAsNiArNTAsOSBAQAogCiAjaWYgIWRlZmlu ZWQoQ09ORklHX1VTRVJfT05MWSkKICNpbmNsdWRlICJzb2Z0bW11X2V4ZWMuaCIKKyNkZWZpbmUg UkVWRVJTRV9FTkRJQU4KKyNpbmNsdWRlICJzb2Z0bW11X2V4ZWMuaCIKKyN1bmRlZiBSRVZFUlNF X0VORElBTgogI2VuZGlmCiAKIHZvaWQgY3B1X2NyaXNfZmx1c2hfZmxhZ3MoQ1BVQ1JJU1N0YXRl ICplbnYsIGludCBjY19vcCk7CkluZGV4OiB0YXJnZXQtY3Jpcy9oZWxwZXIuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSB0YXJnZXQtY3Jpcy9oZWxwZXIuYy5vcmlnCTIwMDctMTAtMTQgMTM6MDA6MDYuMDAwMDAw MDAwICswMDAwCisrKyB0YXJnZXQtY3Jpcy9oZWxwZXIuYwkyMDA3LTEwLTE1IDE1OjQxOjEwLjAw MDAwMDAwMCArMDAwMApAQCAtMTA2LDcgKzEwNiw3IEBACiAvLwkJCXByaW50ZiAoIkJSRUFLISAl ZFxuIiwgZW52LT50cmFwbnIpOwogCQkJaXJxbnVtID0gZW52LT50cmFwbnI7CiAJCQllYnAgPSBl bnYtPnByZWdzW1NSX0VCUF07Ci0JCQlpc3IgPSBsZGxfY29kZShlYnAgKyBpcnFudW0gKiA0KTsK KwkJCWlzciA9IGxkdWxfY29kZShlYnAgKyBpcnFudW0gKiA0KTsKIAkJCWVudi0+cHJlZ3NbU1Jf RVJQXSA9IGVudi0+cGMgKyAyOwogCQkJZW52LT5wYyA9IGlzcjsKIApAQCAtMTE3LDcgKzExNyw3 IEBACiAvLwkJCXByaW50ZiAoIk1NVSBtaXNzXG4iKTsKIAkJCWlycW51bSA9IDQ7CiAJCQllYnAg PSBlbnYtPnByZWdzW1NSX0VCUF07Ci0JCQlpc3IgPSBsZGxfY29kZShlYnAgKyBpcnFudW0gKiA0 KTsKKwkJCWlzciA9IGxkdWxfY29kZShlYnAgKyBpcnFudW0gKiA0KTsKIAkJCWVudi0+cHJlZ3Nb U1JfRVJQXSA9IGVudi0+cGM7CiAJCQllbnYtPnBjID0gaXNyOwogCQkJY3Jpc19zaGlmdF9jY3Mo ZW52KTsKQEAgLTEzOCw3ICsxMzgsNyBAQAogCQkJCQlfX2J1aWx0aW5fY2x6KGVudi0+cGVuZGlu Z19pbnRlcnJ1cHRzKTsKIAkJCQlpcnFudW0gKz0gMHgzMDsKIAkJCQllYnAgPSBlbnYtPnByZWdz W1NSX0VCUF07Ci0JCQkJaXNyID0gbGRsX2NvZGUoZWJwICsgaXJxbnVtICogNCk7CisJCQkJaXNy ID0gbGR1bF9jb2RlKGVicCArIGlycW51bSAqIDQpOwogCQkJCWVudi0+cHJlZ3NbU1JfRVJQXSA9 IGVudi0+cGM7CiAJCQkJZW52LT5wYyA9IGlzcjsKIApJbmRleDogdGFyZ2V0LWNyaXMvb3BfaGVs cGVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LWNyaXMvb3BfaGVscGVyLmMub3JpZwkyMDA3LTEw LTE1IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LWNyaXMvb3BfaGVscGVyLmMJ MjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTI1LDYgKzI1LDcgQEAKICNk ZWZpbmUgTU1VU1VGRklYIF9tbXUKICNkZWZpbmUgR0VUUEMoKSAoX19idWlsdGluX3JldHVybl9h ZGRyZXNzKDApKQogCisvKiBOYXRpdmUtZW5kaWFuICovCiAjZGVmaW5lIFNISUZUIDAKICNpbmNs dWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCiAKQEAgLTM3LDYgKzM4LDIxIEBACiAjZGVmaW5lIFNI SUZUIDMKICNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCiAKKy8qIFJldmVyc2UtZW5kaWFu ICovCisjZGVmaW5lIFJFVkVSU0VfRU5ESUFOCisjZGVmaW5lIFNISUZUIDAKKyNpbmNsdWRlICJz b2Z0bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUgU0hJRlQgMQorI2luY2x1ZGUgInNvZnRtbXVf dGVtcGxhdGUuaCIKKworI2RlZmluZSBTSElGVCAyCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0 ZS5oIgorCisjZGVmaW5lIFNISUZUIDMKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisj dW5kZWYgUkVWRVJTRV9FTkRJQU4KKwogLyogVHJ5IHRvIGZpbGwgdGhlIFRMQiBhbmQgcmV0dXJu IGFuIGV4Y2VwdGlvbiBpZiBlcnJvci4gSWYgcmV0YWRkciBpcwogICAgTlVMTCwgaXQgbWVhbnMg dGhhdCB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBDIGNvZGUgKGkuZS4gbm90CiAgICBmcm9t IGdlbmVyYXRlZCBjb2RlIG9yIGZyb20gaGVscGVyLmMpICovCkluZGV4OiB0YXJnZXQtY3Jpcy9v cF9tZW0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtY3Jpcy9vcF9tZW0uYy5vcmlnCTIwMDctMTAt MTQgMTM6MDA6MDYuMDAwMDAwMDAwICswMDAwCisrKyB0YXJnZXQtY3Jpcy9vcF9tZW0uYwkyMDA3 LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtNDksNyArNDksNyBAQAogfQogCiB2 b2lkIGdsdWUob3BfbGRsX1QwX1QwLCBNRU1TVUZGSVgpICh2b2lkKSB7Ci0gICAgVDAgPSBnbHVl KGxkbCwgTUVNU1VGRklYKSAoVDApOworICAgIFQwID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpIChU MCk7CiAgICAgUkVUVVJOKCk7CiB9CiAKSW5kZXg6IHRhcmdldC1jcmlzL3RyYW5zbGF0ZS5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHRhcmdldC1jcmlzL3RyYW5zbGF0ZS5jLm9yaWcJMjAwNy0xMC0xNCAxNjo0 NDoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIHRhcmdldC1jcmlzL3RyYW5zbGF0ZS5jCTIwMDctMTAt MTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC04MjgsNyArODI4LDcgQEAKIAkJaWYgKG1l bXNpemUgPT0gMSkKIAkJCWluc25fbGVuKys7CiAKLQkJaW1tID0gbGRsX2NvZGUoZGMtPnBjICsg Mik7CisJCWltbSA9IGxkdWxfY29kZShkYy0+cGMgKyAyKTsKIAkJaWYgKG1lbXNpemUgIT0gNCkg ewogCQkJaWYgKHNfZXh0KSB7CiAJCQkJaW1tID0gc2lnbl9leHRlbmQoaW1tLCAobWVtc2l6ZSAq IDgpIC0gMSk7CkBAIC0xOTYyLDcgKzE5NjIsNyBAQAogCXJkID0gZGMtPm9wMjsKIAogCWNyaXNf Y2NfbWFzayhkYywgMCk7Ci0JaW1tID0gbGRsX2NvZGUoZGMtPnBjICsgMik7CisJaW1tID0gbGR1 bF9jb2RlKGRjLT5wYyArIDIpOwogCURJUyhmcHJpbnRmIChsb2dmaWxlLCAibGFwYyAweCV4LCAk ciV1XG4iLCBpbW0gKyBkYy0+cGMsIGRjLT5vcDIpKTsKIAlnZW5fb3BfbW92bF9UMF9pbSAoZGMt PnBjICsgaW1tKTsKIAlnZW5fbW92bF9yZWdfVDBbcmRdICgpOwpAQCAtMTk5OSw3ICsxOTk5LDcg QEAKIHsKIAl1aW50MzJfdCBpbW07CiAKLQlpbW0gPSBsZGxfY29kZShkYy0+cGMgKyAyKTsKKwlp bW0gPSBsZHVsX2NvZGUoZGMtPnBjICsgMik7CiAKIAlESVMoZnByaW50ZiAobG9nZmlsZSwgImph cyAweCV4XG4iLCBpbW0pKTsKIAljcmlzX2NjX21hc2soZGMsIDApOwpAQCAtMjAxNiw3ICsyMDE2 LDcgQEAKIHsKIAl1aW50MzJfdCBpbW07CiAKLQlpbW0gPSBsZGxfY29kZShkYy0+cGMgKyAyKTsK KwlpbW0gPSBsZHVsX2NvZGUoZGMtPnBjICsgMik7CiAKIAlESVMoZnByaW50ZiAobG9nZmlsZSwg Imphc2MgMHgleFxuIiwgaW1tKSk7CiAJY3Jpc19jY19tYXNrKGRjLCAwKTsKQEAgLTIwNDcsNyAr MjA0Nyw3IEBACiAJaW50MzJfdCBvZmZzZXQ7CiAJdWludDMyX3QgY29uZCA9IGRjLT5vcDI7CiAK LQlvZmZzZXQgPSBsZGxfY29kZShkYy0+cGMgKyAyKTsKKwlvZmZzZXQgPSBsZHVsX2NvZGUoZGMt PnBjICsgMik7CiAJb2Zmc2V0ID0gc2lnbl9leHRlbmQob2Zmc2V0LCAxNSk7CiAKIAlESVMoZnBy aW50ZiAobG9nZmlsZSwgImIlcyAlZCBwYz0leCBkc3Q9JXhcbiIsCkBAIC0yMDY1LDcgKzIwNjUs NyBAQAogCWludDMyX3Qgc2ltbTsKIAogCi0Jc2ltbSA9IGxkbF9jb2RlKGRjLT5wYyArIDIpOwor CXNpbW0gPSBsZHVsX2NvZGUoZGMtPnBjICsgMik7CiAKIAlESVMoZnByaW50ZiAobG9nZmlsZSwg ImJhcyAweCV4LCAkcCV1XG4iLCBkYy0+cGMgKyBzaW1tLCBkYy0+b3AyKSk7CiAJY3Jpc19jY19t YXNrKGRjLCAwKTsKQEAgLTIwODEsNyArMjA4MSw3IEBACiBzdGF0aWMgdW5zaWduZWQgaW50IGRl Y19iYXNjX2ltKERpc2FzQ29udGV4dCAqZGMpCiB7CiAJaW50MzJfdCBzaW1tOwotCXNpbW0gPSBs ZGxfY29kZShkYy0+cGMgKyAyKTsKKwlzaW1tID0gbGR1bF9jb2RlKGRjLT5wYyArIDIpOwogCiAJ RElTKGZwcmludGYgKGxvZ2ZpbGUsICJiYXNjIDB4JXgsICRwJXVcbiIsIGRjLT5wYyArIHNpbW0s IGRjLT5vcDIpKTsKIAljcmlzX2NjX21hc2soZGMsIDApOwpAQCAtMjI1OSw3ICsyMjU5LDcgQEAK IAlpbnQgaTsKIAogCS8qIExvYWQgYSBoYWxmd29yZCBvbnRvIHRoZSBpbnN0cnVjdGlvbiByZWdp c3Rlci4gICovCi0JdG1wID0gbGRsX2NvZGUoZGMtPnBjKTsKKwl0bXAgPSBsZHVsX2NvZGUoZGMt PnBjKTsKIAlkYy0+aXIgPSB0bXAgJiAweGZmZmY7CiAKIAkvKiBOb3cgZGVjb2RlIGl0LiAgKi8K SW5kZXg6IHRhcmdldC1pMzg2L2V4ZWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtaTM4Ni9leGVj Lmgub3JpZwkyMDA3LTEwLTE1IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LWkz ODYvZXhlYy5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0yMTcsNiAr MjE3LDkgQEAKICNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKQogCiAjaW5jbHVkZSAic29m dG1tdV9leGVjLmgiCisjZGVmaW5lIFJFVkVSU0VfRU5ESUFOCisjaW5jbHVkZSAic29mdG1tdV9l eGVjLmgiCisjdW5kZWYgUkVWRVJTRV9FTkRJQU4KIAogc3RhdGljIGlubGluZSBkb3VibGUgbGRm cSh0YXJnZXRfdWxvbmcgcHRyKQogewpAQCAtMjQ0LDcgKzI0Nyw3IEBACiAgICAgICAgIGZsb2F0 IGY7CiAgICAgICAgIHVpbnQzMl90IGk7CiAgICAgfSB1OwotICAgIHUuaSA9IGxkbChwdHIpOwor ICAgIHUuaSA9IGxkdWwocHRyKTsKICAgICByZXR1cm4gdS5mOwogfQogCkBAIC00MTksMTIgKzQy MiwxMiBAQAogCiBzdGF0aWMgaW5saW5lIENQVTg2X0xEb3VibGUgaGVscGVyX2ZsZHQodGFyZ2V0 X3Vsb25nIHB0cikKIHsKLSAgICByZXR1cm4gKihDUFU4Nl9MRG91YmxlICopcHRyOworICAgIHJl dHVybiAqKENQVTg2X0xEb3VibGUgKikodW5zaWduZWQgbG9uZylwdHI7CiB9CiAKIHN0YXRpYyBp bmxpbmUgdm9pZCBoZWxwZXJfZnN0dChDUFU4Nl9MRG91YmxlIGYsIHRhcmdldF91bG9uZyBwdHIp CiB7Ci0gICAgKihDUFU4Nl9MRG91YmxlICopcHRyID0gZjsKKyAgICAqKENQVTg2X0xEb3VibGUg KikodW5zaWduZWQgbG9uZylwdHIgPSBmOwogfQogCiAjZWxzZQpJbmRleDogdGFyZ2V0LWkzODYv aGVscGVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LWkzODYvaGVscGVyLmMub3JpZwkyMDA3LTEw LTE1IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LWkzODYvaGVscGVyLmMJMjAw Ny0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTEyMiw4ICsxMjIsOCBAQAogICAg IGlmICgoaW5kZXggKyA3KSA+IGR0LT5saW1pdCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHB0 ciA9IGR0LT5iYXNlICsgaW5kZXg7Ci0gICAgKmUxX3B0ciA9IGxkbF9rZXJuZWwocHRyKTsKLSAg ICAqZTJfcHRyID0gbGRsX2tlcm5lbChwdHIgKyA0KTsKKyAgICAqZTFfcHRyID0gbGR1bF9rZXJu ZWwocHRyKTsKKyAgICAqZTJfcHRyID0gbGR1bF9rZXJuZWwocHRyICsgNCk7CiAgICAgcmV0dXJu IDA7CiB9CiAKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICAqZXNwX3B0ciA9IGxkdXdfa2Vy bmVsKGVudi0+dHIuYmFzZSArIGluZGV4KTsKICAgICAgICAgKnNzX3B0ciA9IGxkdXdfa2VybmVs KGVudi0+dHIuYmFzZSArIGluZGV4ICsgMik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgKmVzcF9w dHIgPSBsZGxfa2VybmVsKGVudi0+dHIuYmFzZSArIGluZGV4KTsKKyAgICAgICAgKmVzcF9wdHIg PSBsZHVsX2tlcm5lbChlbnYtPnRyLmJhc2UgKyBpbmRleCk7CiAgICAgICAgICpzc19wdHIgPSBs ZHV3X2tlcm5lbChlbnYtPnRyLmJhc2UgKyBpbmRleCArIDQpOwogICAgIH0KIH0KQEAgLTMwMiwx NSArMzAyLDE1IEBACiAgICAgLyogcmVhZCBhbGwgdGhlIHJlZ2lzdGVycyBmcm9tIHRoZSBuZXcg VFNTICovCiAgICAgaWYgKHR5cGUgJiA4KSB7CiAgICAgICAgIC8qIDMyIGJpdCAqLwotICAgICAg ICBuZXdfY3IzID0gbGRsX2tlcm5lbCh0c3NfYmFzZSArIDB4MWMpOwotICAgICAgICBuZXdfZWlw ID0gbGRsX2tlcm5lbCh0c3NfYmFzZSArIDB4MjApOwotICAgICAgICBuZXdfZWZsYWdzID0gbGRs X2tlcm5lbCh0c3NfYmFzZSArIDB4MjQpOworICAgICAgICBuZXdfY3IzID0gbGR1bF9rZXJuZWwo dHNzX2Jhc2UgKyAweDFjKTsKKyAgICAgICAgbmV3X2VpcCA9IGxkdWxfa2VybmVsKHRzc19iYXNl ICsgMHgyMCk7CisgICAgICAgIG5ld19lZmxhZ3MgPSBsZHVsX2tlcm5lbCh0c3NfYmFzZSArIDB4 MjQpOwogICAgICAgICBmb3IoaSA9IDA7IGkgPCA4OyBpKyspCi0gICAgICAgICAgICBuZXdfcmVn c1tpXSA9IGxkbF9rZXJuZWwodHNzX2Jhc2UgKyAoMHgyOCArIGkgKiA0KSk7CisgICAgICAgICAg ICBuZXdfcmVnc1tpXSA9IGxkdWxfa2VybmVsKHRzc19iYXNlICsgKDB4MjggKyBpICogNCkpOwog ICAgICAgICBmb3IoaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBuZXdfc2Vnc1tpXSA9 IGxkdXdfa2VybmVsKHRzc19iYXNlICsgKDB4NDggKyBpICogNCkpOwogICAgICAgICBuZXdfbGR0 ID0gbGR1d19rZXJuZWwodHNzX2Jhc2UgKyAweDYwKTsKLSAgICAgICAgbmV3X3RyYXAgPSBsZGxf a2VybmVsKHRzc19iYXNlICsgMHg2NCk7CisgICAgICAgIG5ld190cmFwID0gbGR1bF9rZXJuZWwo dHNzX2Jhc2UgKyAweDY0KTsKICAgICB9IGVsc2UgewogICAgICAgICAvKiAxNiBiaXQgKi8KICAg ICAgICAgbmV3X2NyMyA9IDA7CkBAIC0zNDEsNyArMzQxLDcgQEAKICAgICAgICAgdGFyZ2V0X3Vs b25nIHB0cjsKICAgICAgICAgdWludDMyX3QgZTI7CiAgICAgICAgIHB0ciA9IGVudi0+Z2R0LmJh c2UgKyAoZW52LT50ci5zZWxlY3RvciAmIH43KTsKLSAgICAgICAgZTIgPSBsZGxfa2VybmVsKHB0 ciArIDQpOworICAgICAgICBlMiA9IGxkdWxfa2VybmVsKHB0ciArIDQpOwogICAgICAgICBlMiAm PSB+REVTQ19UU1NfQlVTWV9NQVNLOwogICAgICAgICBzdGxfa2VybmVsKHB0ciArIDQsIGUyKTsK ICAgICB9CkBAIC0zOTMsNyArMzkzLDcgQEAKICAgICAgICAgdGFyZ2V0X3Vsb25nIHB0cjsKICAg ICAgICAgdWludDMyX3QgZTI7CiAgICAgICAgIHB0ciA9IGVudi0+Z2R0LmJhc2UgKyAodHNzX3Nl bGVjdG9yICYgfjcpOwotICAgICAgICBlMiA9IGxkbF9rZXJuZWwocHRyICsgNCk7CisgICAgICAg IGUyID0gbGR1bF9rZXJuZWwocHRyICsgNCk7CiAgICAgICAgIGUyIHw9IERFU0NfVFNTX0JVU1lf TUFTSzsKICAgICAgICAgc3RsX2tlcm5lbChwdHIgKyA0LCBlMik7CiAgICAgfQpAQCAtNDU2LDgg KzQ1Niw4IEBACiAgICAgICAgIGlmICgoaW5kZXggKyA3KSA+IGR0LT5saW1pdCkKICAgICAgICAg ICAgIHJhaXNlX2V4Y2VwdGlvbl9lcnIoRVhDUDBBX1RTUywgbmV3X2xkdCAmIDB4ZmZmYyk7CiAg ICAgICAgIHB0ciA9IGR0LT5iYXNlICsgaW5kZXg7Ci0gICAgICAgIGUxID0gbGRsX2tlcm5lbChw dHIpOwotICAgICAgICBlMiA9IGxkbF9rZXJuZWwocHRyICsgNCk7CisgICAgICAgIGUxID0gbGR1 bF9rZXJuZWwocHRyKTsKKyAgICAgICAgZTIgPSBsZHVsX2tlcm5lbChwdHIgKyA0KTsKICAgICAg ICAgaWYgKChlMiAmIERFU0NfU19NQVNLKSB8fCAoKGUyID4+IERFU0NfVFlQRV9TSElGVCkgJiAw eGYpICE9IDIpCiAgICAgICAgICAgICByYWlzZV9leGNlcHRpb25fZXJyKEVYQ1AwQV9UU1MsIG5l d19sZHQgJiAweGZmZmMpOwogICAgICAgICBpZiAoIShlMiAmIERFU0NfUF9NQVNLKSkKQEAgLTU4 MCw3ICs1ODAsNyBAQAogCiAjZGVmaW5lIFBPUEwoc3NwLCBzcCwgc3BfbWFzaywgdmFsKVwKIHtc Ci0gICAgdmFsID0gKHVpbnQzMl90KWxkbF9rZXJuZWwoKHNzcCkgKyAoc3AgJiAoc3BfbWFzaykp KTtcCisgICAgdmFsID0gKHVpbnQzMl90KWxkdWxfa2VybmVsKChzc3ApICsgKHNwICYgKHNwX21h c2spKSk7XAogICAgIHNwICs9IDQ7XAogfQogCkBAIC02MjksOCArNjI5LDggQEAKICAgICBpZiAo aW50bm8gKiA4ICsgNyA+IGR0LT5saW1pdCkKICAgICAgICAgcmFpc2VfZXhjZXB0aW9uX2VycihF WENQMERfR1BGLCBpbnRubyAqIDggKyAyKTsKICAgICBwdHIgPSBkdC0+YmFzZSArIGludG5vICog ODsKLSAgICBlMSA9IGxkbF9rZXJuZWwocHRyKTsKLSAgICBlMiA9IGxkbF9rZXJuZWwocHRyICsg NCk7CisgICAgZTEgPSBsZHVsX2tlcm5lbChwdHIpOworICAgIGUyID0gbGR1bF9rZXJuZWwocHRy ICsgNCk7CiAgICAgLyogY2hlY2sgZ2F0ZSB0eXBlICovCiAgICAgdHlwZSA9IChlMiA+PiBERVND X1RZUEVfU0hJRlQpICYgMHgxZjsKICAgICBzd2l0Y2godHlwZSkgewpAQCAtODc1LDkgKzg3NSw5 IEBACiAgICAgaWYgKGludG5vICogMTYgKyAxNSA+IGR0LT5saW1pdCkKICAgICAgICAgcmFpc2Vf ZXhjZXB0aW9uX2VycihFWENQMERfR1BGLCBpbnRubyAqIDE2ICsgMik7CiAgICAgcHRyID0gZHQt PmJhc2UgKyBpbnRubyAqIDE2OwotICAgIGUxID0gbGRsX2tlcm5lbChwdHIpOwotICAgIGUyID0g bGRsX2tlcm5lbChwdHIgKyA0KTsKLSAgICBlMyA9IGxkbF9rZXJuZWwocHRyICsgOCk7CisgICAg ZTEgPSBsZHVsX2tlcm5lbChwdHIpOworICAgIGUyID0gbGR1bF9rZXJuZWwocHRyICsgNCk7Cisg ICAgZTMgPSBsZHVsX2tlcm5lbChwdHIgKyA4KTsKICAgICAvKiBjaGVjayBnYXRlIHR5cGUgKi8K ICAgICB0eXBlID0gKGUyID4+IERFU0NfVFlQRV9TSElGVCkgJiAweDFmOwogICAgIHN3aXRjaCh0 eXBlKSB7CkBAIC0xMTQ3LDcgKzExNDcsNyBAQAogCiAgICAgZHQgPSAmZW52LT5pZHQ7CiAgICAg cHRyID0gZHQtPmJhc2UgKyAoaW50bm8gKiA4KTsKLSAgICBlMiA9IGxkbF9rZXJuZWwocHRyICsg NCk7CisgICAgZTIgPSBsZHVsX2tlcm5lbChwdHIgKyA0KTsKIAogICAgIGRwbCA9IChlMiA+PiBE RVNDX0RQTF9TSElGVCkgJiAzOwogICAgIGNwbCA9IGVudi0+aGZsYWdzICYgSEZfQ1BMX01BU0s7 CkBAIC0xNDY5LDI0ICsxNDY5LDI0IEBACiAgICAgICAgIGNwdV94ODZfbG9hZF9zZWdfY2FjaGUo ZW52LCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxkdXdfcGh5cyhzbV9zdGF0 ZSArIG9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGRxX3BoeXMoc21f c3RhdGUgKyBvZmZzZXQgKyA4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZGxf cGh5cyhzbV9zdGF0ZSArIG9mZnNldCArIDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxkdWxfcGh5cyhzbV9zdGF0ZSArIG9mZnNldCArIDQpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsZHV3X3BoeXMoc21fc3RhdGUgKyBvZmZzZXQgKyAyKSAmIDB4ZjBmZikg PDwgOCk7CiAgICAgfQogCiAgICAgZW52LT5nZHQuYmFzZSA9IGxkcV9waHlzKHNtX3N0YXRlICsg MHg3ZTY4KTsKLSAgICBlbnYtPmdkdC5saW1pdCA9IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZTY0 KTsKKyAgICBlbnYtPmdkdC5saW1pdCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2U2NCk7CiAK ICAgICBlbnYtPmxkdC5zZWxlY3RvciA9IGxkdXdfcGh5cyhzbV9zdGF0ZSArIDB4N2U3MCk7CiAg ICAgZW52LT5sZHQuYmFzZSA9IGxkcV9waHlzKHNtX3N0YXRlICsgMHg3ZTc4KTsKLSAgICBlbnYt PmxkdC5saW1pdCA9IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZTc0KTsKKyAgICBlbnYtPmxkdC5s aW1pdCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2U3NCk7CiAgICAgZW52LT5sZHQuZmxhZ3Mg PSAobGR1d19waHlzKHNtX3N0YXRlICsgMHg3ZTcyKSAmIDB4ZjBmZikgPDwgODsKIAogICAgIGVu di0+aWR0LmJhc2UgPSBsZHFfcGh5cyhzbV9zdGF0ZSArIDB4N2U4OCk7Ci0gICAgZW52LT5pZHQu bGltaXQgPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2U4NCk7CisgICAgZW52LT5pZHQubGltaXQg PSBsZHVsX3BoeXMoc21fc3RhdGUgKyAweDdlODQpOwogCiAgICAgZW52LT50ci5zZWxlY3RvciA9 IGxkdXdfcGh5cyhzbV9zdGF0ZSArIDB4N2U5MCk7CiAgICAgZW52LT50ci5iYXNlID0gbGRxX3Bo eXMoc21fc3RhdGUgKyAweDdlOTgpOwotICAgIGVudi0+dHIubGltaXQgPSBsZGxfcGh5cyhzbV9z dGF0ZSArIDB4N2U5NCk7CisgICAgZW52LT50ci5saW1pdCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSAr IDB4N2U5NCk7CiAgICAgZW52LT50ci5mbGFncyA9IChsZHV3X3BoeXMoc21fc3RhdGUgKyAweDdl OTIpICYgMHhmMGZmKSA8PCA4OwogCiAgICAgRUFYID0gbGRxX3BoeXMoc21fc3RhdGUgKyAweDdm ZjgpOwpAQCAtMTUwMCw1MSArMTUwMCw1MSBAQAogICAgIGZvcihpID0gODsgaSA8IDE2OyBpKysp CiAgICAgICAgIGVudi0+cmVnc1tpXSA9IGxkcV9waHlzKHNtX3N0YXRlICsgMHg3ZmY4IC0gaSAq IDgpOwogICAgIGVudi0+ZWlwID0gbGRxX3BoeXMoc21fc3RhdGUgKyAweDdmNzgpOwotICAgIGxv YWRfZWZsYWdzKGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZjcwKSwKKyAgICBsb2FkX2VmbGFncyhs ZHVsX3BoeXMoc21fc3RhdGUgKyAweDdmNzApLAogICAgICAgICAgICAgICAgIH4oQ0NfTyB8IEND X1MgfCBDQ19aIHwgQ0NfQSB8IENDX1AgfCBDQ19DIHwgREZfTUFTSykpOwotICAgIGVudi0+ZHJb Nl0gPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y2OCk7Ci0gICAgZW52LT5kcls3XSA9IGxkbF9w aHlzKHNtX3N0YXRlICsgMHg3ZjYwKTsKKyAgICBlbnYtPmRyWzZdID0gbGR1bF9waHlzKHNtX3N0 YXRlICsgMHg3ZjY4KTsKKyAgICBlbnYtPmRyWzddID0gbGR1bF9waHlzKHNtX3N0YXRlICsgMHg3 ZjYwKTsKIAotICAgIGNwdV94ODZfdXBkYXRlX2NyNChlbnYsIGxkbF9waHlzKHNtX3N0YXRlICsg MHg3ZjQ4KSk7Ci0gICAgY3B1X3g4Nl91cGRhdGVfY3IzKGVudiwgbGRsX3BoeXMoc21fc3RhdGUg KyAweDdmNTApKTsKLSAgICBjcHVfeDg2X3VwZGF0ZV9jcjAoZW52LCBsZGxfcGh5cyhzbV9zdGF0 ZSArIDB4N2Y1OCkpOworICAgIGNwdV94ODZfdXBkYXRlX2NyNChlbnYsIGxkdWxfcGh5cyhzbV9z dGF0ZSArIDB4N2Y0OCkpOworICAgIGNwdV94ODZfdXBkYXRlX2NyMyhlbnYsIGxkdWxfcGh5cyhz bV9zdGF0ZSArIDB4N2Y1MCkpOworICAgIGNwdV94ODZfdXBkYXRlX2NyMChlbnYsIGxkdWxfcGh5 cyhzbV9zdGF0ZSArIDB4N2Y1OCkpOwogCi0gICAgdmFsID0gbGRsX3BoeXMoc21fc3RhdGUgKyAw eDdlZmMpOyAvKiByZXZpc2lvbiBJRCAqLworICAgIHZhbCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSAr IDB4N2VmYyk7IC8qIHJldmlzaW9uIElEICovCiAgICAgaWYgKHZhbCAmIDB4MjAwMDApIHsKLSAg ICAgICAgZW52LT5zbWJhc2UgPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2YwMCkgJiB+MHg3ZmZm OworICAgICAgICBlbnYtPnNtYmFzZSA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2YwMCkgJiB+ MHg3ZmZmOwogICAgIH0KICNlbHNlCi0gICAgY3B1X3g4Nl91cGRhdGVfY3IwKGVudiwgbGRsX3Bo eXMoc21fc3RhdGUgKyAweDdmZmMpKTsKLSAgICBjcHVfeDg2X3VwZGF0ZV9jcjMoZW52LCBsZGxf cGh5cyhzbV9zdGF0ZSArIDB4N2ZmOCkpOwotICAgIGxvYWRfZWZsYWdzKGxkbF9waHlzKHNtX3N0 YXRlICsgMHg3ZmY0KSwKKyAgICBjcHVfeDg2X3VwZGF0ZV9jcjAoZW52LCBsZHVsX3BoeXMoc21f c3RhdGUgKyAweDdmZmMpKTsKKyAgICBjcHVfeDg2X3VwZGF0ZV9jcjMoZW52LCBsZHVsX3BoeXMo c21fc3RhdGUgKyAweDdmZjgpKTsKKyAgICBsb2FkX2VmbGFncyhsZHVsX3BoeXMoc21fc3RhdGUg KyAweDdmZjQpLAogICAgICAgICAgICAgICAgIH4oQ0NfTyB8IENDX1MgfCBDQ19aIHwgQ0NfQSB8 IENDX1AgfCBDQ19DIHwgREZfTUFTSykpOwotICAgIGVudi0+ZWlwID0gbGRsX3BoeXMoc21fc3Rh dGUgKyAweDdmZjApOwotICAgIEVESSA9IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZmVjKTsKLSAg ICBFU0kgPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZlOCk7Ci0gICAgRUJQID0gbGRsX3BoeXMo c21fc3RhdGUgKyAweDdmZTQpOwotICAgIEVTUCA9IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZmUw KTsKLSAgICBFQlggPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZkYyk7Ci0gICAgRURYID0gbGRs X3BoeXMoc21fc3RhdGUgKyAweDdmZDgpOwotICAgIEVDWCA9IGxkbF9waHlzKHNtX3N0YXRlICsg MHg3ZmQ0KTsKLSAgICBFQVggPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZkMCk7Ci0gICAgZW52 LT5kcls2XSA9IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZmNjKTsKLSAgICBlbnYtPmRyWzddID0g bGRsX3BoeXMoc21fc3RhdGUgKyAweDdmYzgpOwotCi0gICAgZW52LT50ci5zZWxlY3RvciA9IGxk bF9waHlzKHNtX3N0YXRlICsgMHg3ZmM0KSAmIDB4ZmZmZjsKLSAgICBlbnYtPnRyLmJhc2UgPSBs ZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y2NCk7Ci0gICAgZW52LT50ci5saW1pdCA9IGxkbF9waHlz KHNtX3N0YXRlICsgMHg3ZjYwKTsKLSAgICBlbnYtPnRyLmZsYWdzID0gKGxkbF9waHlzKHNtX3N0 YXRlICsgMHg3ZjVjKSAmIDB4ZjBmZikgPDwgODsKLQotICAgIGVudi0+bGR0LnNlbGVjdG9yID0g bGRsX3BoeXMoc21fc3RhdGUgKyAweDdmYzApICYgMHhmZmZmOwotICAgIGVudi0+bGR0LmJhc2Ug PSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y4MCk7Ci0gICAgZW52LT5sZHQubGltaXQgPSBsZGxf cGh5cyhzbV9zdGF0ZSArIDB4N2Y3Yyk7Ci0gICAgZW52LT5sZHQuZmxhZ3MgPSAobGRsX3BoeXMo c21fc3RhdGUgKyAweDdmNzgpICYgMHhmMGZmKSA8PCA4OworICAgIGVudi0+ZWlwID0gbGR1bF9w aHlzKHNtX3N0YXRlICsgMHg3ZmYwKTsKKyAgICBFREkgPSBsZHVsX3BoeXMoc21fc3RhdGUgKyAw eDdmZWMpOworICAgIEVTSSA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZlOCk7CisgICAgRUJQ ID0gbGR1bF9waHlzKHNtX3N0YXRlICsgMHg3ZmU0KTsKKyAgICBFU1AgPSBsZHVsX3BoeXMoc21f c3RhdGUgKyAweDdmZTApOworICAgIEVCWCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZkYyk7 CisgICAgRURYID0gbGR1bF9waHlzKHNtX3N0YXRlICsgMHg3ZmQ4KTsKKyAgICBFQ1ggPSBsZHVs X3BoeXMoc21fc3RhdGUgKyAweDdmZDQpOworICAgIEVBWCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSAr IDB4N2ZkMCk7CisgICAgZW52LT5kcls2XSA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZjYyk7 CisgICAgZW52LT5kcls3XSA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2ZjOCk7CisKKyAgICBl bnYtPnRyLnNlbGVjdG9yID0gbGR1bF9waHlzKHNtX3N0YXRlICsgMHg3ZmM0KSAmIDB4ZmZmZjsK KyAgICBlbnYtPnRyLmJhc2UgPSBsZHVsX3BoeXMoc21fc3RhdGUgKyAweDdmNjQpOworICAgIGVu di0+dHIubGltaXQgPSBsZHVsX3BoeXMoc21fc3RhdGUgKyAweDdmNjApOworICAgIGVudi0+dHIu ZmxhZ3MgPSAobGR1bF9waHlzKHNtX3N0YXRlICsgMHg3ZjVjKSAmIDB4ZjBmZikgPDwgODsKKwor ICAgIGVudi0+bGR0LnNlbGVjdG9yID0gbGR1bF9waHlzKHNtX3N0YXRlICsgMHg3ZmMwKSAmIDB4 ZmZmZjsKKyAgICBlbnYtPmxkdC5iYXNlID0gbGR1bF9waHlzKHNtX3N0YXRlICsgMHg3ZjgwKTsK KyAgICBlbnYtPmxkdC5saW1pdCA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y3Yyk7CisgICAg ZW52LT5sZHQuZmxhZ3MgPSAobGR1bF9waHlzKHNtX3N0YXRlICsgMHg3Zjc4KSAmIDB4ZjBmZikg PDwgODsKIAotICAgIGVudi0+Z2R0LmJhc2UgPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y3NCk7 Ci0gICAgZW52LT5nZHQubGltaXQgPSBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y3MCk7CisgICAg ZW52LT5nZHQuYmFzZSA9IGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2Y3NCk7CisgICAgZW52LT5n ZHQubGltaXQgPSBsZHVsX3BoeXMoc21fc3RhdGUgKyAweDdmNzApOwogCi0gICAgZW52LT5pZHQu YmFzZSA9IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZjU4KTsKLSAgICBlbnYtPmlkdC5saW1pdCA9 IGxkbF9waHlzKHNtX3N0YXRlICsgMHg3ZjU0KTsKKyAgICBlbnYtPmlkdC5iYXNlID0gbGR1bF9w aHlzKHNtX3N0YXRlICsgMHg3ZjU4KTsKKyAgICBlbnYtPmlkdC5saW1pdCA9IGxkdWxfcGh5cyhz bV9zdGF0ZSArIDB4N2Y1NCk7CiAKICAgICBmb3IoaSA9IDA7IGkgPCA2OyBpKyspIHsKICAgICAg ICAgaWYgKGkgPCAzKQpAQCAtMTU1MiwxNiArMTU1MiwxNiBAQAogICAgICAgICBlbHNlCiAgICAg ICAgICAgICBvZmZzZXQgPSAweDdmMmMgKyAoaSAtIDMpICogMTI7CiAgICAgICAgIGNwdV94ODZf bG9hZF9zZWdfY2FjaGUoZW52LCBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxk bF9waHlzKHNtX3N0YXRlICsgMHg3ZmE4ICsgaSAqIDQpICYgMHhmZmZmLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxkbF9waHlzKHNtX3N0YXRlICsgb2Zmc2V0ICsgOCksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGRsX3BoeXMoc21fc3RhdGUgKyBvZmZzZXQgKyA0 KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGRsX3BoeXMoc21fc3RhdGUgKyBv ZmZzZXQpICYgMHhmMGZmKSA8PCA4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZHVsX3BoeXMoc21fc3RhdGUgKyAweDdmYTggKyBpICogNCkgJiAweGZmZmYsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGR1bF9waHlzKHNtX3N0YXRlICsgb2Zmc2V0ICsgOCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGR1bF9waHlzKHNtX3N0YXRlICsgb2Zmc2V0 ICsgNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxkdWxfcGh5cyhzbV9zdGF0 ZSArIG9mZnNldCkgJiAweGYwZmYpIDw8IDgpOwogICAgIH0KLSAgICBjcHVfeDg2X3VwZGF0ZV9j cjQoZW52LCBsZGxfcGh5cyhzbV9zdGF0ZSArIDB4N2YxNCkpOworICAgIGNwdV94ODZfdXBkYXRl X2NyNChlbnYsIGxkdWxfcGh5cyhzbV9zdGF0ZSArIDB4N2YxNCkpOwogCi0gICAgdmFsID0gbGRs X3BoeXMoc21fc3RhdGUgKyAweDdlZmMpOyAvKiByZXZpc2lvbiBJRCAqLworICAgIHZhbCA9IGxk dWxfcGh5cyhzbV9zdGF0ZSArIDB4N2VmYyk7IC8qIHJldmlzaW9uIElEICovCiAgICAgaWYgKHZh bCAmIDB4MjAwMDApIHsKLSAgICAgICAgZW52LT5zbWJhc2UgPSBsZGxfcGh5cyhzbV9zdGF0ZSAr IDB4N2VmOCkgJiB+MHg3ZmZmOworICAgICAgICBlbnYtPnNtYmFzZSA9IGxkdWxfcGh5cyhzbV9z dGF0ZSArIDB4N2VmOCkgJiB+MHg3ZmZmOwogICAgIH0KICNlbmRpZgogICAgIENDX09QID0gQ0Nf T1BfRUZMQUdTOwpAQCAtMTc2MSw3ICsxNzYxLDcgQEAKICAgICAgICAgd2hpbGUgKC0tbGV2ZWwp IHsKICAgICAgICAgICAgIGVzcCAtPSA0OwogICAgICAgICAgICAgZWJwIC09IDQ7Ci0gICAgICAg ICAgICBzdGwoc3NwICsgKGVzcCAmIGVzcF9tYXNrKSwgbGRsKHNzcCArIChlYnAgJiBlc3BfbWFz aykpKTsKKyAgICAgICAgICAgIHN0bChzc3AgKyAoZXNwICYgZXNwX21hc2spLCBsZHVsKHNzcCAr IChlYnAgJiBlc3BfbWFzaykpKTsKICAgICAgICAgfQogICAgICAgICBlc3AgLT0gNDsKICAgICAg ICAgc3RsKHNzcCArIChlc3AgJiBlc3BfbWFzayksIFQxKTsKQEAgLTE4MzYsOCArMTgzNiw4IEBA CiAgICAgICAgIGlmICgoaW5kZXggKyBlbnRyeV9saW1pdCkgPiBkdC0+bGltaXQpCiAgICAgICAg ICAgICByYWlzZV9leGNlcHRpb25fZXJyKEVYQ1AwRF9HUEYsIHNlbGVjdG9yICYgMHhmZmZjKTsK ICAgICAgICAgcHRyID0gZHQtPmJhc2UgKyBpbmRleDsKLSAgICAgICAgZTEgPSBsZGxfa2VybmVs KHB0cik7Ci0gICAgICAgIGUyID0gbGRsX2tlcm5lbChwdHIgKyA0KTsKKyAgICAgICAgZTEgPSBs ZHVsX2tlcm5lbChwdHIpOworICAgICAgICBlMiA9IGxkdWxfa2VybmVsKHB0ciArIDQpOwogICAg ICAgICBpZiAoKGUyICYgREVTQ19TX01BU0spIHx8ICgoZTIgPj4gREVTQ19UWVBFX1NISUZUKSAm IDB4ZikgIT0gMikKICAgICAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbl9lcnIoRVhDUDBEX0dQRiwg c2VsZWN0b3IgJiAweGZmZmMpOwogICAgICAgICBpZiAoIShlMiAmIERFU0NfUF9NQVNLKSkKQEAg LTE4NDUsNyArMTg0NSw3IEBACiAjaWZkZWYgVEFSR0VUX1g4Nl82NAogICAgICAgICBpZiAoZW52 LT5oZmxhZ3MgJiBIRl9MTUFfTUFTSykgewogICAgICAgICAgICAgdWludDMyX3QgZTM7Ci0gICAg ICAgICAgICBlMyA9IGxkbF9rZXJuZWwocHRyICsgOCk7CisgICAgICAgICAgICBlMyA9IGxkdWxf a2VybmVsKHB0ciArIDgpOwogICAgICAgICAgICAgbG9hZF9zZWdfY2FjaGVfcmF3X2R0KCZlbnYt PmxkdCwgZTEsIGUyKTsKICAgICAgICAgICAgIGVudi0+bGR0LmJhc2UgfD0gKHRhcmdldF91bG9u ZyllMyA8PCAzMjsKICAgICAgICAgfSBlbHNlCkBAIC0xODg1LDggKzE4ODUsOCBAQAogICAgICAg ICBpZiAoKGluZGV4ICsgZW50cnlfbGltaXQpID4gZHQtPmxpbWl0KQogICAgICAgICAgICAgcmFp c2VfZXhjZXB0aW9uX2VycihFWENQMERfR1BGLCBzZWxlY3RvciAmIDB4ZmZmYyk7CiAgICAgICAg IHB0ciA9IGR0LT5iYXNlICsgaW5kZXg7Ci0gICAgICAgIGUxID0gbGRsX2tlcm5lbChwdHIpOwot ICAgICAgICBlMiA9IGxkbF9rZXJuZWwocHRyICsgNCk7CisgICAgICAgIGUxID0gbGR1bF9rZXJu ZWwocHRyKTsKKyAgICAgICAgZTIgPSBsZHVsX2tlcm5lbChwdHIgKyA0KTsKICAgICAgICAgdHlw ZSA9IChlMiA+PiBERVNDX1RZUEVfU0hJRlQpICYgMHhmOwogICAgICAgICBpZiAoKGUyICYgREVT Q19TX01BU0spIHx8CiAgICAgICAgICAgICAodHlwZSAhPSAxICYmIHR5cGUgIT0gOSkpCkBAIC0x ODk2LDggKzE4OTYsOCBAQAogI2lmZGVmIFRBUkdFVF9YODZfNjQKICAgICAgICAgaWYgKGVudi0+ aGZsYWdzICYgSEZfTE1BX01BU0spIHsKICAgICAgICAgICAgIHVpbnQzMl90IGUzLCBlNDsKLSAg ICAgICAgICAgIGUzID0gbGRsX2tlcm5lbChwdHIgKyA4KTsKLSAgICAgICAgICAgIGU0ID0gbGRs X2tlcm5lbChwdHIgKyAxMik7CisgICAgICAgICAgICBlMyA9IGxkdWxfa2VybmVsKHB0ciArIDgp OworICAgICAgICAgICAgZTQgPSBsZHVsX2tlcm5lbChwdHIgKyAxMik7CiAgICAgICAgICAgICBp ZiAoKGU0ID4+IERFU0NfVFlQRV9TSElGVCkgJiAweGYpCiAgICAgICAgICAgICAgICAgcmFpc2Vf ZXhjZXB0aW9uX2VycihFWENQMERfR1BGLCBzZWxlY3RvciAmIDB4ZmZmYyk7CiAgICAgICAgICAg ICBsb2FkX3NlZ19jYWNoZV9yYXdfZHQoJmVudi0+dHIsIGUxLCBlMik7CkBAIC0xOTQzLDggKzE5 NDMsOCBAQAogICAgICAgICBpZiAoKGluZGV4ICsgNykgPiBkdC0+bGltaXQpCiAgICAgICAgICAg ICByYWlzZV9leGNlcHRpb25fZXJyKEVYQ1AwRF9HUEYsIHNlbGVjdG9yICYgMHhmZmZjKTsKICAg ICAgICAgcHRyID0gZHQtPmJhc2UgKyBpbmRleDsKLSAgICAgICAgZTEgPSBsZGxfa2VybmVsKHB0 cik7Ci0gICAgICAgIGUyID0gbGRsX2tlcm5lbChwdHIgKyA0KTsKKyAgICAgICAgZTEgPSBsZHVs X2tlcm5lbChwdHIpOworICAgICAgICBlMiA9IGxkdWxfa2VybmVsKHB0ciArIDQpOwogCiAgICAg ICAgIGlmICghKGUyICYgREVTQ19TX01BU0spKQogICAgICAgICAgICAgcmFpc2VfZXhjZXB0aW9u X2VycihFWENQMERfR1BGLCBzZWxlY3RvciAmIDB4ZmZmYyk7CkBAIC0yMjczLDcgKzIyNzMsNyBA QAogICAgICAgICAgICAgICAgIFBVU0hMKHNzcCwgc3AsIHNwX21hc2ssIGVudi0+c2Vnc1tSX1NT XS5zZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgUFVTSEwoc3NwLCBzcCwgc3BfbWFzaywgRVNQ KTsKICAgICAgICAgICAgICAgICBmb3IoaSA9IHBhcmFtX2NvdW50IC0gMTsgaSA+PSAwOyBpLS0p IHsKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gbGRsX2tlcm5lbChvbGRfc3NwICsgKChFU1Ag KyBpICogNCkgJiBvbGRfc3BfbWFzaykpOworICAgICAgICAgICAgICAgICAgICB2YWwgPSBsZHVs X2tlcm5lbChvbGRfc3NwICsgKChFU1AgKyBpICogNCkgJiBvbGRfc3BfbWFzaykpOwogICAgICAg ICAgICAgICAgICAgICBQVVNITChzc3AsIHNwLCBzcF9tYXNrLCB2YWwpOwogICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zNTY5LDggKzM1NjksOCBAQAogCiAgICAg aWYgKGVudi0+Y3JbNF0gJiBDUjRfT1NGWFNSX01BU0spIHsKICAgICAgICAgLyogWFhYOiBmaW5p c2ggaXQgKi8KLSAgICAgICAgZW52LT5teGNzciA9IGxkbChwdHIgKyAweDE4KTsKLSAgICAgICAg Ly9sZGwocHRyICsgMHgxYyk7CisgICAgICAgIGVudi0+bXhjc3IgPSBsZHVsKHB0ciArIDB4MTgp OworICAgICAgICAvL2xkdWwocHRyICsgMHgxYyk7CiAgICAgICAgIG5iX3htbV9yZWdzID0gOCA8 PCBkYXRhNjQ7CiAgICAgICAgIGFkZHIgPSBwdHIgKyAweGEwOwogICAgICAgICBmb3IoaSA9IDA7 IGkgPCBuYl94bW1fcmVnczsgaSsrKSB7CkBAIC0zODY3LDYgKzM4NjcsNyBAQAogI2RlZmluZSBN TVVTVUZGSVggX21tdQogI2RlZmluZSBHRVRQQygpIChfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo MCkpCiAKKy8qIE5hdGl2ZS1lbmRpYW4gKi8KICNkZWZpbmUgU0hJRlQgMAogI2luY2x1ZGUgInNv ZnRtbXVfdGVtcGxhdGUuaCIKIApAQCAtMzg3OSw2ICszODgwLDIxIEBACiAjZGVmaW5lIFNISUZU IDMKICNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCiAKKy8qIFJldmVyc2UtZW5kaWFuICov CisjZGVmaW5lIFJFVkVSU0VfRU5ESUFOCisjZGVmaW5lIFNISUZUIDAKKyNpbmNsdWRlICJzb2Z0 bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUgU0hJRlQgMQorI2luY2x1ZGUgInNvZnRtbXVfdGVt cGxhdGUuaCIKKworI2RlZmluZSBTSElGVCAyCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5o IgorCisjZGVmaW5lIFNISUZUIDMKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisjdW5k ZWYgUkVWRVJTRV9FTkRJQU4KKwogI2VuZGlmCiAKIC8qIHRyeSB0byBmaWxsIHRoZSBUTEIgYW5k IHJldHVybiBhbiBleGNlcHRpb24gaWYgZXJyb3IuIElmIHJldGFkZHIgaXMKQEAgLTQwMTAsMTMg KzQwMjYsMTMgQEAKICAgICBlbnYtPmludGVyY2VwdF9jcl93cml0ZSAgID0gbGR1d19waHlzKGVu di0+dm1fdm1jYiArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBjb250cm9sLmludGVyY2VwdF9jcl93 cml0ZSkpOwogICAgIGVudi0+aW50ZXJjZXB0X2RyX3JlYWQgICAgPSBsZHV3X3BoeXMoZW52LT52 bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIGNvbnRyb2wuaW50ZXJjZXB0X2RyX3JlYWQp KTsKICAgICBlbnYtPmludGVyY2VwdF9kcl93cml0ZSAgID0gbGR1d19waHlzKGVudi0+dm1fdm1j YiArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBjb250cm9sLmludGVyY2VwdF9kcl93cml0ZSkpOwot ICAgIGVudi0+aW50ZXJjZXB0X2V4Y2VwdGlvbnMgPSBsZGxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBv ZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29udHJvbC5pbnRlcmNlcHRfZXhjZXB0aW9ucykpOworICAg IGVudi0+aW50ZXJjZXB0X2V4Y2VwdGlvbnMgPSBsZHVsX3BoeXMoZW52LT52bV92bWNiICsgb2Zm c2V0b2Yoc3RydWN0IHZtY2IsIGNvbnRyb2wuaW50ZXJjZXB0X2V4Y2VwdGlvbnMpKTsKIAogICAg IGVudi0+Z2R0LmJhc2UgID0gbGRxX3BoeXMoZW52LT52bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0 IHZtY2IsIHNhdmUuZ2R0ci5iYXNlKSk7Ci0gICAgZW52LT5nZHQubGltaXQgPSBsZGxfcGh5cyhl bnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5nZHRyLmxpbWl0KSk7Cisg ICAgZW52LT5nZHQubGltaXQgPSBsZHVsX3BoeXMoZW52LT52bV92bWNiICsgb2Zmc2V0b2Yoc3Ry dWN0IHZtY2IsIHNhdmUuZ2R0ci5saW1pdCkpOwogCiAgICAgZW52LT5pZHQuYmFzZSAgPSBsZHFf cGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5pZHRyLmJhc2Up KTsKLSAgICBlbnYtPmlkdC5saW1pdCA9IGxkbF9waHlzKGVudi0+dm1fdm1jYiArIG9mZnNldG9m KHN0cnVjdCB2bWNiLCBzYXZlLmlkdHIubGltaXQpKTsKKyAgICBlbnYtPmlkdC5saW1pdCA9IGxk dWxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5pZHRyLmxp bWl0KSk7CiAKICAgICAvKiBjbGVhciBleGl0X2luZm9fMiBzbyB3ZSBiZWhhdmUgbGlrZSB0aGUg cmVhbCBoYXJkd2FyZSAqLwogICAgIHN0cV9waHlzKGVudi0+dm1fdm1jYiArIG9mZnNldG9mKHN0 cnVjdCB2bWNiLCBjb250cm9sLmV4aXRfaW5mb18yKSwgMCk7CkBAIC00MDI1LDcgKzQwNDEsNyBA QAogICAgIGNwdV94ODZfdXBkYXRlX2NyNChlbnYsIGxkcV9waHlzKGVudi0+dm1fdm1jYiArIG9m ZnNldG9mKHN0cnVjdCB2bWNiLCBzYXZlLmNyNCkpKTsKICAgICBjcHVfeDg2X3VwZGF0ZV9jcjMo ZW52LCBsZHFfcGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5j cjMpKSk7CiAgICAgZW52LT5jclsyXSA9IGxkcV9waHlzKGVudi0+dm1fdm1jYiArIG9mZnNldG9m KHN0cnVjdCB2bWNiLCBzYXZlLmNyMikpOwotICAgIGludF9jdGwgPSBsZGxfcGh5cyhlbnYtPnZt X3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29udHJvbC5pbnRfY3RsKSk7CisgICAgaW50 X2N0bCA9IGxkdWxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29u dHJvbC5pbnRfY3RsKSk7CiAgICAgaWYgKGludF9jdGwgJiBWX0lOVFJfTUFTS0lOR19NQVNLKSB7 CiAgICAgICAgIGVudi0+Y3JbOF0gPSBpbnRfY3RsICYgVl9UUFJfTUFTSzsKICAgICAgICAgaWYg KGVudi0+ZWZsYWdzICYgSUZfTUFTSykKQEAgLTQwNzMsMTEgKzQwODksMTEgQEAKICAgICByZWdz X3RvX2VudigpOwogCiAgICAgLyogbWF5YmUgd2UgbmVlZCB0byBpbmplY3QgYW4gZXZlbnQgKi8K LSAgICBldmVudF9pbmogPSBsZGxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qg dm1jYiwgY29udHJvbC5ldmVudF9pbmopKTsKKyAgICBldmVudF9pbmogPSBsZHVsX3BoeXMoZW52 LT52bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIGNvbnRyb2wuZXZlbnRfaW5qKSk7CiAg ICAgaWYgKGV2ZW50X2luaiAmIFNWTV9FVlRJTkpfVkFMSUQpIHsKICAgICAgICAgdWludDhfdCB2 ZWN0b3IgPSBldmVudF9pbmogJiBTVk1fRVZUSU5KX1ZFQ19NQVNLOwogICAgICAgICB1aW50MTZf dCB2YWxpZF9lcnIgPSBldmVudF9pbmogJiBTVk1fRVZUSU5KX1ZBTElEX0VSUjsKLSAgICAgICAg dWludDMyX3QgZXZlbnRfaW5qX2VyciA9IGxkbF9waHlzKGVudi0+dm1fdm1jYiArIG9mZnNldG9m KHN0cnVjdCB2bWNiLCBjb250cm9sLmV2ZW50X2lual9lcnIpKTsKKyAgICAgICAgdWludDMyX3Qg ZXZlbnRfaW5qX2VyciA9IGxkdWxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBvZmZzZXRvZihzdHJ1Y3Qg dm1jYiwgY29udHJvbC5ldmVudF9pbmpfZXJyKSk7CiAgICAgICAgIHN0bF9waHlzKGVudi0+dm1f dm1jYiArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBjb250cm9sLmV2ZW50X2luaiksIGV2ZW50X2lu aiAmIH5TVk1fRVZUSU5KX1ZBTElEKTsKIAogICAgICAgICBpZiAobG9nbGV2ZWwgJiBDUFVfTE9H X1RCX0lOX0FTTSkKQEAgLTQzMDksNyArNDMyNSw3IEBACiAgICAgc3RxX3BoeXMoZW52LT52bV92 bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuY3IzKSwgZW52LT5jclszXSk7CiAgICAg c3RxX3BoeXMoZW52LT52bV92bWNiICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuY3I0KSwg ZW52LT5jcls0XSk7CiAKLSAgICBpZiAoKGludF9jdGwgPSBsZGxfcGh5cyhlbnYtPnZtX3ZtY2Ig KyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29udHJvbC5pbnRfY3RsKSkpICYgVl9JTlRSX01BU0tJ TkdfTUFTSykgeworICAgIGlmICgoaW50X2N0bCA9IGxkdWxfcGh5cyhlbnYtPnZtX3ZtY2IgKyBv ZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29udHJvbC5pbnRfY3RsKSkpICYgVl9JTlRSX01BU0tJTkdf TUFTSykgewogICAgICAgICBpbnRfY3RsICY9IH5WX1RQUl9NQVNLOwogICAgICAgICBpbnRfY3Rs IHw9IGVudi0+Y3JbOF0gJiBWX1RQUl9NQVNLOwogICAgICAgICBzdGxfcGh5cyhlbnYtPnZtX3Zt Y2IgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgY29udHJvbC5pbnRfY3RsKSwgaW50X2N0bCk7CkBA IC00MzMwLDEwICs0MzQ2LDEwIEBACiAgICAgZW52LT5pbnRlcnJ1cHRfcmVxdWVzdCAmPSB+Q1BV X0lOVEVSUlVQVF9WSVJROwogCiAgICAgZW52LT5nZHQuYmFzZSAgPSBsZHFfcGh5cyhlbnYtPnZt X2hzYXZlICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuZ2R0ci5iYXNlKSk7Ci0gICAgZW52 LT5nZHQubGltaXQgPSBsZGxfcGh5cyhlbnYtPnZtX2hzYXZlICsgb2Zmc2V0b2Yoc3RydWN0IHZt Y2IsIHNhdmUuZ2R0ci5saW1pdCkpOworICAgIGVudi0+Z2R0LmxpbWl0ID0gbGR1bF9waHlzKGVu di0+dm1faHNhdmUgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5nZHRyLmxpbWl0KSk7CiAK ICAgICBlbnYtPmlkdC5iYXNlICA9IGxkcV9waHlzKGVudi0+dm1faHNhdmUgKyBvZmZzZXRvZihz dHJ1Y3Qgdm1jYiwgc2F2ZS5pZHRyLmJhc2UpKTsKLSAgICBlbnYtPmlkdC5saW1pdCA9IGxkbF9w aHlzKGVudi0+dm1faHNhdmUgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5pZHRyLmxpbWl0 KSk7CisgICAgZW52LT5pZHQubGltaXQgPSBsZHVsX3BoeXMoZW52LT52bV9oc2F2ZSArIG9mZnNl dG9mKHN0cnVjdCB2bWNiLCBzYXZlLmlkdHIubGltaXQpKTsKIAogICAgIGNwdV94ODZfdXBkYXRl X2NyMChlbnYsIGxkcV9waHlzKGVudi0+dm1faHNhdmUgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwg c2F2ZS5jcjApKSB8IENSMF9QRV9NQVNLKTsKICAgICBjcHVfeDg2X3VwZGF0ZV9jcjQoZW52LCBs ZHFfcGh5cyhlbnYtPnZtX2hzYXZlICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuY3I0KSkp OwpJbmRleDogdGFyZ2V0LWkzODYvaGVscGVyMi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRhcmdldC1pMzg2 L2hlbHBlcjIuYy5vcmlnCTIwMDctMTAtMTQgMTM6MDA6MDYuMDAwMDAwMDAwICswMDAwCisrKyB0 YXJnZXQtaTM4Ni9oZWxwZXIyLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAK QEAgLTc3Miw3ICs3NzIsNyBAQAogICAgICAgICAvKiBwYWdlIGRpcmVjdG9yeSBlbnRyeSAqLwog ICAgICAgICBwZGVfYWRkciA9ICgoZW52LT5jclszXSAmIH4weGZmZikgKyAoKGFkZHIgPj4gMjAp ICYgMHhmZmMpKSAmCiAgICAgICAgICAgICBlbnYtPmEyMF9tYXNrOwotICAgICAgICBwZGUgPSBs ZGxfcGh5cyhwZGVfYWRkcik7CisgICAgICAgIHBkZSA9IGxkdWxfcGh5cyhwZGVfYWRkcik7CiAg ICAgICAgIGlmICghKHBkZSAmIFBHX1BSRVNFTlRfTUFTSykpIHsKICAgICAgICAgICAgIGVycm9y X2NvZGUgPSAwOwogICAgICAgICAgICAgZ290byBkb19mYXVsdDsKQEAgLTgxMCw3ICs4MTAsNyBA QAogICAgICAgICAgICAgLyogcGFnZSBkaXJlY3RvcnkgZW50cnkgKi8KICAgICAgICAgICAgIHB0 ZV9hZGRyID0gKChwZGUgJiB+MHhmZmYpICsgKChhZGRyID4+IDEwKSAmIDB4ZmZjKSkgJgogICAg ICAgICAgICAgICAgIGVudi0+YTIwX21hc2s7Ci0gICAgICAgICAgICBwdGUgPSBsZGxfcGh5cyhw dGVfYWRkcik7CisgICAgICAgICAgICBwdGUgPSBsZHVsX3BoeXMocHRlX2FkZHIpOwogICAgICAg ICAgICAgaWYgKCEocHRlICYgUEdfUFJFU0VOVF9NQVNLKSkgewogICAgICAgICAgICAgICAgIGVy cm9yX2NvZGUgPSAwOwogICAgICAgICAgICAgICAgIGdvdG8gZG9fZmF1bHQ7CkBAIC05MTAsMTMg KzkxMCwxMyBAQAogCiAgICAgICAgICAgICBwbWw0ZV9hZGRyID0gKChlbnYtPmNyWzNdICYgfjB4 ZmZmKSArICgoKGFkZHIgPj4gMzkpICYgMHgxZmYpIDw8IDMpKSAmCiAgICAgICAgICAgICAgICAg ZW52LT5hMjBfbWFzazsKLSAgICAgICAgICAgIHBtbDRlID0gbGRsX3BoeXMocG1sNGVfYWRkcik7 CisgICAgICAgICAgICBwbWw0ZSA9IGxkdWxfcGh5cyhwbWw0ZV9hZGRyKTsKICAgICAgICAgICAg IGlmICghKHBtbDRlICYgUEdfUFJFU0VOVF9NQVNLKSkKICAgICAgICAgICAgICAgICByZXR1cm4g LTE7CiAKICAgICAgICAgICAgIHBkcGVfYWRkciA9ICgocG1sNGUgJiB+MHhmZmYpICsgKCgoYWRk ciA+PiAzMCkgJiAweDFmZikgPDwgMykpICYKICAgICAgICAgICAgICAgICBlbnYtPmEyMF9tYXNr OwotICAgICAgICAgICAgcGRwZSA9IGxkbF9waHlzKHBkcGVfYWRkcik7CisgICAgICAgICAgICBw ZHBlID0gbGR1bF9waHlzKHBkcGVfYWRkcik7CiAgICAgICAgICAgICBpZiAoIShwZHBlICYgUEdf UFJFU0VOVF9NQVNLKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0gZWxz ZQpAQCAtOTI0LDE0ICs5MjQsMTQgQEAKICAgICAgICAgewogICAgICAgICAgICAgcGRwZV9hZGRy ID0gKChlbnYtPmNyWzNdICYgfjB4MWYpICsgKChhZGRyID4+IDI3KSAmIDB4MTgpKSAmCiAgICAg ICAgICAgICAgICAgZW52LT5hMjBfbWFzazsKLSAgICAgICAgICAgIHBkcGUgPSBsZGxfcGh5cyhw ZHBlX2FkZHIpOworICAgICAgICAgICAgcGRwZSA9IGxkdWxfcGh5cyhwZHBlX2FkZHIpOwogICAg ICAgICAgICAgaWYgKCEocGRwZSAmIFBHX1BSRVNFTlRfTUFTSykpCiAgICAgICAgICAgICAgICAg cmV0dXJuIC0xOwogICAgICAgICB9CiAKICAgICAgICAgcGRlX2FkZHIgPSAoKHBkcGUgJiB+MHhm ZmYpICsgKCgoYWRkciA+PiAyMSkgJiAweDFmZikgPDwgMykpICYKICAgICAgICAgICAgIGVudi0+ YTIwX21hc2s7Ci0gICAgICAgIHBkZSA9IGxkbF9waHlzKHBkZV9hZGRyKTsKKyAgICAgICAgcGRl ID0gbGR1bF9waHlzKHBkZV9hZGRyKTsKICAgICAgICAgaWYgKCEocGRlICYgUEdfUFJFU0VOVF9N QVNLKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC05NDQsNyArOTQ0 LDcgQEAKICAgICAgICAgICAgIHB0ZV9hZGRyID0gKChwZGUgJiB+MHhmZmYpICsgKCgoYWRkciA+ PiAxMikgJiAweDFmZikgPDwgMykpICYKICAgICAgICAgICAgICAgICBlbnYtPmEyMF9tYXNrOwog ICAgICAgICAgICAgcGFnZV9zaXplID0gNDA5NjsKLSAgICAgICAgICAgIHB0ZSA9IGxkbF9waHlz KHB0ZV9hZGRyKTsKKyAgICAgICAgICAgIHB0ZSA9IGxkdWxfcGh5cyhwdGVfYWRkcik7CiAgICAg ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIShlbnYtPmNyWzBdICYgQ1IwX1BHX01B U0spKSB7CkBAIC05NTMsNyArOTUzLDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg IC8qIHBhZ2UgZGlyZWN0b3J5IGVudHJ5ICovCiAgICAgICAgICAgICBwZGVfYWRkciA9ICgoZW52 LT5jclszXSAmIH4weGZmZikgKyAoKGFkZHIgPj4gMjApICYgMHhmZmMpKSAmIGVudi0+YTIwX21h c2s7Ci0gICAgICAgICAgICBwZGUgPSBsZGxfcGh5cyhwZGVfYWRkcik7CisgICAgICAgICAgICBw ZGUgPSBsZHVsX3BoeXMocGRlX2FkZHIpOwogICAgICAgICAgICAgaWYgKCEocGRlICYgUEdfUFJF U0VOVF9NQVNLKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBpZiAo KHBkZSAmIFBHX1BTRV9NQVNLKSAmJiAoZW52LT5jcls0XSAmIENSNF9QU0VfTUFTSykpIHsKQEAg LTk2Miw3ICs5NjIsNyBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv KiBwYWdlIGRpcmVjdG9yeSBlbnRyeSAqLwogICAgICAgICAgICAgICAgIHB0ZV9hZGRyID0gKChw ZGUgJiB+MHhmZmYpICsgKChhZGRyID4+IDEwKSAmIDB4ZmZjKSkgJiBlbnYtPmEyMF9tYXNrOwot ICAgICAgICAgICAgICAgIHB0ZSA9IGxkbF9waHlzKHB0ZV9hZGRyKTsKKyAgICAgICAgICAgICAg ICBwdGUgPSBsZHVsX3BoeXMocHRlX2FkZHIpOwogICAgICAgICAgICAgICAgIGlmICghKHB0ZSAm IFBHX1BSRVNFTlRfTUFTSykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAg ICAgICAgICAgICBwYWdlX3NpemUgPSA0MDk2OwpJbmRleDogdGFyZ2V0LWkzODYvb3AuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSB0YXJnZXQtaTM4Ni9vcC5jLm9yaWcJMjAwNy0xMC0xNCAxMzowMDowNi4wMDAw MDAwMDAgKzAwMDAKKysrIHRhcmdldC1pMzg2L29wLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAw MDAwMDAgKzAwMDAKQEAgLTcxNiw4ICs3MTYsOCBAQAogdm9pZCBPUFBST1RPIG9wX2JvdW5kbCh2 b2lkKQogewogICAgIGludCBsb3csIGhpZ2gsIHY7Ci0gICAgbG93ID0gbGRsKEEwKTsKLSAgICBo aWdoID0gbGRsKEEwICsgNCk7CisgICAgbG93ID0gbGR1bChBMCk7CisgICAgaGlnaCA9IGxkdWwo QTAgKyA0KTsKICAgICB2ID0gVDA7CiAgICAgaWYgKHYgPCBsb3cgfHwgdiA+IGhpZ2gpIHsKICAg ICAgICAgcmFpc2VfZXhjZXB0aW9uKEVYQ1AwNV9CT1VORCk7CkBAIC03NDcsOCArNzQ3LDYgQEAK IAogLyogbXVsdGlwbGUgc2l6ZSBvcHMgKi8KIAotI2RlZmluZSBsZHVsIGxkbAotCiAjZGVmaW5l IFNISUZUIDAKICNpbmNsdWRlICJvcHNfdGVtcGxhdGUuaCIKICN1bmRlZiBTSElGVApAQCAtMTY4 OCw3ICsxNjg2LDcgQEAKIHZvaWQgT1BQUk9UTyBvcF9mbGRzX0ZUMF9BMCh2b2lkKQogewogI2lm ZGVmIFVTRV9GUF9DT05WRVJUCi0gICAgRlBfQ09OVkVSVC5pMzIgPSBsZGwoQTApOworICAgIEZQ X0NPTlZFUlQuaTMyID0gbGR1bChBMCk7CiAgICAgRlQwID0gRlBfQ09OVkVSVC5mOwogI2Vsc2UK ICAgICBGVDAgPSBsZGZsKEEwKTsKQEAgLTE3MTUsNyArMTcxMyw3IEBACiAKIHZvaWQgaGVscGVy X2ZpbGRsX0ZUMF9BMCh2b2lkKQogewotICAgIEZUMCA9IChDUFU4Nl9MRG91YmxlKSgoaW50MzJf dClsZGwoQTApKTsKKyAgICBGVDAgPSAoQ1BVODZfTERvdWJsZSkoKGludDMyX3QpbGR1bChBMCkp OwogfQogCiB2b2lkIGhlbHBlcl9maWxkbGxfRlQwX0EwKHZvaWQpCkBAIC0xNzUzLDEwICsxNzUx LDEwIEBACiB2b2lkIE9QUFJPVE8gb3BfZmlsZGxfRlQwX0EwKHZvaWQpCiB7CiAjaWZkZWYgVVNF X0ZQX0NPTlZFUlQKLSAgICBGUF9DT05WRVJULmkzMiA9IChpbnQzMl90KSBsZGwoQTApOworICAg IEZQX0NPTlZFUlQuaTMyID0gKGludDMyX3QpIGxkdWwoQTApOwogICAgIEZUMCA9IChDUFU4Nl9M RG91YmxlKUZQX0NPTlZFUlQuaTMyOwogI2Vsc2UKLSAgICBGVDAgPSAoQ1BVODZfTERvdWJsZSko KGludDMyX3QpbGRsKEEwKSk7CisgICAgRlQwID0gKENQVTg2X0xEb3VibGUpKChpbnQzMl90KWxk dWwoQTApKTsKICNlbmRpZgogfQogCkBAIC0xNzc4LDcgKzE3NzYsNyBAQAogICAgIGludCBuZXdf ZnBzdHQ7CiAgICAgbmV3X2Zwc3R0ID0gKGVudi0+ZnBzdHQgLSAxKSAmIDc7CiAjaWZkZWYgVVNF X0ZQX0NPTlZFUlQKLSAgICBGUF9DT05WRVJULmkzMiA9IGxkbChBMCk7CisgICAgRlBfQ09OVkVS VC5pMzIgPSBsZHVsKEEwKTsKICAgICBlbnYtPmZwcmVnc1tuZXdfZnBzdHRdLmQgPSBGUF9DT05W RVJULmY7CiAjZWxzZQogICAgIGVudi0+ZnByZWdzW25ld19mcHN0dF0uZCA9IGxkZmwoQTApOwpA QCAtMTgyMiw3ICsxODIwLDcgQEAKIHsKICAgICBpbnQgbmV3X2Zwc3R0OwogICAgIG5ld19mcHN0 dCA9IChlbnYtPmZwc3R0IC0gMSkgJiA3OwotICAgIGVudi0+ZnByZWdzW25ld19mcHN0dF0uZCA9 IChDUFU4Nl9MRG91YmxlKSgoaW50MzJfdClsZGwoQTApKTsKKyAgICBlbnYtPmZwcmVnc1tuZXdf ZnBzdHRdLmQgPSAoQ1BVODZfTERvdWJsZSkoKGludDMyX3QpbGR1bChBMCkpOwogICAgIGVudi0+ ZnBzdHQgPSBuZXdfZnBzdHQ7CiAgICAgZW52LT5mcHRhZ3NbbmV3X2Zwc3R0XSA9IDA7IC8qIHZh bGlkYXRlIHN0YWNrIGVudHJ5ICovCiB9CkBAIC0xODcyLDEwICsxODcwLDEwIEBACiAgICAgaW50 IG5ld19mcHN0dDsKICAgICBuZXdfZnBzdHQgPSAoZW52LT5mcHN0dCAtIDEpICYgNzsKICNpZmRl ZiBVU0VfRlBfQ09OVkVSVAotICAgIEZQX0NPTlZFUlQuaTMyID0gKGludDMyX3QpIGxkbChBMCk7 CisgICAgRlBfQ09OVkVSVC5pMzIgPSAoaW50MzJfdCkgbGR1bChBMCk7CiAgICAgZW52LT5mcHJl Z3NbbmV3X2Zwc3R0XS5kID0gKENQVTg2X0xEb3VibGUpRlBfQ09OVkVSVC5pMzI7CiAjZWxzZQot ICAgIGVudi0+ZnByZWdzW25ld19mcHN0dF0uZCA9IChDUFU4Nl9MRG91YmxlKSgoaW50MzJfdCls ZGwoQTApKTsKKyAgICBlbnYtPmZwcmVnc1tuZXdfZnBzdHRdLmQgPSAoQ1BVODZfTERvdWJsZSko KGludDMyX3QpbGR1bChBMCkpOwogI2VuZGlmCiAgICAgZW52LT5mcHN0dCA9IG5ld19mcHN0dDsK ICAgICBlbnYtPmZwdGFnc1tuZXdfZnBzdHRdID0gMDsgLyogdmFsaWRhdGUgc3RhY2sgZW50cnkg Ki8KSW5kZXg6IHRhcmdldC1pMzg2L29wc19tZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtaTM4 Ni9vcHNfbWVtLmgub3JpZwkyMDA3LTEwLTE0IDEzOjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysg dGFyZ2V0LWkzODYvb3BzX21lbS5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAw CkBAIC0yMCw3ICsyMCw3IEBACiAKIHZvaWQgT1BQUk9UTyBnbHVlKGdsdWUob3BfbGRsLCBNRU1T VUZGSVgpLCBfVDBfQTApKHZvaWQpCiB7Ci0gICAgVDAgPSAodWludDMyX3QpZ2x1ZShsZGwsIE1F TVNVRkZJWCkoQTApOworICAgIFQwID0gKHVpbnQzMl90KWdsdWUobGR1bCwgTUVNU1VGRklYKShB MCk7CiB9CiAKIHZvaWQgT1BQUk9UTyBnbHVlKGdsdWUob3BfbGR1YiwgTUVNU1VGRklYKSwgX1Qx X0EwKSh2b2lkKQpAQCAtNDUsNyArNDUsNyBAQAogCiB2b2lkIE9QUFJPVE8gZ2x1ZShnbHVlKG9w X2xkbCwgTUVNU1VGRklYKSwgX1QxX0EwKSh2b2lkKQogewotICAgIFQxID0gKHVpbnQzMl90KWds dWUobGRsLCBNRU1TVUZGSVgpKEEwKTsKKyAgICBUMSA9ICh1aW50MzJfdClnbHVlKGxkdWwsIE1F TVNVRkZJWCkoQTApOwogfQogCiB2b2lkIE9QUFJPVE8gZ2x1ZShnbHVlKG9wX3N0YiwgTUVNU1VG RklYKSwgX1QwX0EwKSh2b2lkKQpAQCAtMTIyLDEyICsxMjIsMTIgQEAKICNpZmRlZiBUQVJHRVRf WDg2XzY0CiB2b2lkIE9QUFJPVE8gZ2x1ZShnbHVlKG9wX2xkc2wsIE1FTVNVRkZJWCksIF9UMF9B MCkodm9pZCkKIHsKLSAgICBUMCA9IChpbnQzMl90KWdsdWUobGRsLCBNRU1TVUZGSVgpKEEwKTsK KyAgICBUMCA9IGdsdWUobGRzbCwgTUVNU1VGRklYKShBMCk7CiB9CiAKIHZvaWQgT1BQUk9UTyBn bHVlKGdsdWUob3BfbGRzbCwgTUVNU1VGRklYKSwgX1QxX0EwKSh2b2lkKQogewotICAgIFQxID0g KGludDMyX3QpZ2x1ZShsZGwsIE1FTVNVRkZJWCkoQTApOworICAgIFQxID0gZ2x1ZShsZHNsLCBN RU1TVUZGSVgpKEEwKTsKIH0KIAogdm9pZCBPUFBST1RPIGdsdWUoZ2x1ZShvcF9sZHEsIE1FTVNV RkZJWCksIF9UMF9BMCkodm9pZCkKSW5kZXg6IHRhcmdldC1pMzg2L3N2bS5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRhcmdldC1pMzg2L3N2bS5oLm9yaWcJMjAwNy0xMC0xNCAxMzowMDowNi4wMDAwMDAwMDAg KzAwMDAKKysrIHRhcmdldC1pMzg2L3N2bS5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAw ICswMDAwCkBAIC0zNDAsMTMgKzM0MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBSXyMjc2Vn X2luZGV4LCBcCiAgICAgICAgICAgICAgICAgICAgIGxkdXdfcGh5cyhhZGRyICsgb2Zmc2V0b2Yo c3RydWN0IHZtY2IsIHNhdmUuc2VnLnNlbGVjdG9yKSksXAogICAgICAgICAgICAgICAgICAgICBs ZHFfcGh5cyhhZGRyICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuc2VnLmJhc2UpKSxcCi0g ICAgICAgICAgICAgICAgICAgIGxkbF9waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwg c2F2ZS5zZWcubGltaXQpKSxcCi0gICAgICAgICAgICAgICAgICAgIHZtY2IyY3B1X2F0dHJpYihs ZHV3X3BoeXMoYWRkciArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBzYXZlLnNlZy5hdHRyaWIpKSwg bGRxX3BoeXMoYWRkciArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBzYXZlLnNlZy5iYXNlKSksIGxk bF9waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5zZWcubGltaXQpKSkpCisg ICAgICAgICAgICAgICAgICAgIGxkdWxfcGh5cyhhZGRyICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2Is IHNhdmUuc2VnLmxpbWl0KSksXAorICAgICAgICAgICAgICAgICAgICB2bWNiMmNwdV9hdHRyaWIo bGR1d19waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5zZWcuYXR0cmliKSks IGxkcV9waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1Y3Qgdm1jYiwgc2F2ZS5zZWcuYmFzZSkpLCBs ZHVsX3BoeXMoYWRkciArIG9mZnNldG9mKHN0cnVjdCB2bWNiLCBzYXZlLnNlZy5saW1pdCkpKSkK IAogI2RlZmluZSBTVk1fTE9BRF9TRUcyKGFkZHIsIHNlZ19xZW11LCBzZWdfdm1jYikgXAogICAg IGVudi0+c2VnX3FlbXUuc2VsZWN0b3IgID0gbGR1d19waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1 Y3Qgdm1jYiwgc2F2ZS5zZWdfdm1jYi5zZWxlY3RvcikpOyBcCiAgICAgZW52LT5zZWdfcWVtdS5i YXNlICAgICAgPSBsZHFfcGh5cyhhZGRyICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuc2Vn X3ZtY2IuYmFzZSkpOyBcCi0gICAgZW52LT5zZWdfcWVtdS5saW1pdCAgICAgPSBsZGxfcGh5cyhh ZGRyICsgb2Zmc2V0b2Yoc3RydWN0IHZtY2IsIHNhdmUuc2VnX3ZtY2IubGltaXQpKTsgXAorICAg IGVudi0+c2VnX3FlbXUubGltaXQgICAgID0gbGR1bF9waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1 Y3Qgdm1jYiwgc2F2ZS5zZWdfdm1jYi5saW1pdCkpOyBcCiAgICAgZW52LT5zZWdfcWVtdS5mbGFn cyAgICAgPSB2bWNiMmNwdV9hdHRyaWIobGR1d19waHlzKGFkZHIgKyBvZmZzZXRvZihzdHJ1Y3Qg dm1jYiwgc2F2ZS5zZWdfdm1jYi5hdHRyaWIpKSwgZW52LT5zZWdfcWVtdS5iYXNlLCBlbnYtPnNl Z19xZW11LmxpbWl0KQogCiAjZGVmaW5lIFNWTV9TQVZFX1NFRyhhZGRyLCBzZWdfcWVtdSwgc2Vn X3ZtY2IpIFwKSW5kZXg6IHRhcmdldC1pMzg2L3RyYW5zbGF0ZS1jb3B5LmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gdGFyZ2V0LWkzODYvdHJhbnNsYXRlLWNvcHkuYy5vcmlnCTIwMDctMTAtMTQgMTM6MDA6MDYu MDAwMDAwMDAwICswMDAwCisrKyB0YXJnZXQtaTM4Ni90cmFuc2xhdGUtY29weS5jCTIwMDctMTAt MTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICAgICAg Y2FzZSAwOgogICAgICAgICAgICAgaWYgKGJhc2UgPT0gNSkgewogICAgICAgICAgICAgICAgIGJh c2UgPSAtMTsKLSAgICAgICAgICAgICAgICBkaXNwID0gbGRsX2NvZGUocy0+cGMpOworICAgICAg ICAgICAgICAgIGRpc3AgPSBsZHVsX2NvZGUocy0+cGMpOwogICAgICAgICAgICAgICAgIHMtPnBj ICs9IDQ7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRpc3AgPSAwOwpA QCAtMjE4LDcgKzIxOCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK ICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgZGlzcCA9IGxkbF9jb2RlKHMtPnBjKTsKKyAg ICAgICAgICAgIGRpc3AgPSBsZHVsX2NvZGUocy0+cGMpOwogICAgICAgICAgICAgcy0+cGMgKz0g NDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNjYsNyArMjY2LDcgQEAKICAg ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICBjYXNlIE9UX0xPTkc6Ci0gICAgICAgIHJl dCA9IGxkbF9jb2RlKHMtPnBjKTsKKyAgICAgICAgcmV0ID0gbGR1bF9jb2RlKHMtPnBjKTsKICAg ICAgICAgcy0+cGMgKz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogdGFyZ2V0LWkz ODYvdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LWkzODYvdHJhbnNsYXRlLmMub3Jp ZwkyMDA3LTEwLTE0IDE2OjQ0OjIwLjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LWkzODYvdHJh bnNsYXRlLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTE0NjIsNyAr MTQ2Miw3IEBACiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmICgoYmFzZSAmIDcpID09 IDUpIHsKICAgICAgICAgICAgICAgICBiYXNlID0gLTE7Ci0gICAgICAgICAgICAgICAgZGlzcCA9 IChpbnQzMl90KWxkbF9jb2RlKHMtPnBjKTsKKyAgICAgICAgICAgICAgICBkaXNwID0gKGludDMy X3QpbGR1bF9jb2RlKHMtPnBjKTsKICAgICAgICAgICAgICAgICBzLT5wYyArPSA0OwogICAgICAg ICAgICAgICAgIGlmIChDT0RFNjQocykgJiYgIWhhdmVzaWIpIHsKICAgICAgICAgICAgICAgICAg ICAgZGlzcCArPSBzLT5wYyArIHMtPnJpcF9vZmZzZXQ7CkBAIC0xNDc2LDcgKzE0NzYsNyBAQAog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIGNhc2UgMjoKLSAg ICAgICAgICAgIGRpc3AgPSBsZGxfY29kZShzLT5wYyk7CisgICAgICAgICAgICBkaXNwID0gbGR1 bF9jb2RlKHMtPnBjKTsKICAgICAgICAgICAgIHMtPnBjICs9IDQ7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgfQpAQCAtMTczNiw3ICsxNzM2LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAg ZGVmYXVsdDoKICAgICBjYXNlIE9UX0xPTkc6Ci0gICAgICAgIHJldCA9IGxkbF9jb2RlKHMtPnBj KTsKKyAgICAgICAgcmV0ID0gbGR1bF9jb2RlKHMtPnBjKTsKICAgICAgICAgcy0+cGMgKz0gNDsK ICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogdGFyZ2V0LW02OGsvZXhlYy5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHRhcmdldC1tNjhrL2V4ZWMuaC5vcmlnCTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAw MDAwICswMDAwCisrKyB0YXJnZXQtbTY4ay9leGVjLmgJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAw MDAwMDAgKzAwMDAKQEAgLTQyLDYgKzQyLDkgQEAKIAogI2lmICFkZWZpbmVkKENPTkZJR19VU0VS X09OTFkpCiAjaW5jbHVkZSAic29mdG1tdV9leGVjLmgiCisjZGVmaW5lIFJFVkVSU0VfRU5ESUFO CisjaW5jbHVkZSAic29mdG1tdV9leGVjLmgiCisjdW5kZWYgUkVWRVJTRV9FTkRJQU4KICNlbmRp ZgogCiB2b2lkIGNwdV9tNjhrX2ZsdXNoX2ZsYWdzKENQVU02OEtTdGF0ZSAqZW52LCBpbnQgY2Nf b3ApOwpJbmRleDogdGFyZ2V0LW02OGsvb3BfaGVscGVyLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0 LW02OGsvb3BfaGVscGVyLmMub3JpZwkyMDA3LTEwLTE1IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAw MAorKysgdGFyZ2V0LW02OGsvb3BfaGVscGVyLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAw MDAgKzAwMDAKQEAgLTMzLDYgKzMzLDcgQEAKICNkZWZpbmUgTU1VU1VGRklYIF9tbXUKICNkZWZp bmUgR0VUUEMoKSAoX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKQogCisvKiBOYXRpdmUtZW5k aWFuICovCiAjZGVmaW5lIFNISUZUIDAKICNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCiAK QEAgLTQ1LDYgKzQ2LDIxIEBACiAjZGVmaW5lIFNISUZUIDMKICNpbmNsdWRlICJzb2Z0bW11X3Rl bXBsYXRlLmgiCiAKKy8qIFJldmVyc2UtZW5kaWFuICovCisjZGVmaW5lIFJFVkVSU0VfRU5ESUFO CisjZGVmaW5lIFNISUZUIDAKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisKKyNkZWZp bmUgU0hJRlQgMQorI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIKKworI2RlZmluZSBTSElG VCAyCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisjZGVmaW5lIFNISUZUIDMKKyNp bmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisjdW5kZWYgUkVWRVJTRV9FTkRJQU4KKwogLyog VHJ5IHRvIGZpbGwgdGhlIFRMQiBhbmQgcmV0dXJuIGFuIGV4Y2VwdGlvbiBpZiBlcnJvci4gSWYg cmV0YWRkciBpcwogICAgTlVMTCwgaXQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gd2FzIGNhbGxl ZCBpbiBDIGNvZGUgKGkuZS4gbm90CiAgICBmcm9tIGdlbmVyYXRlZCBjb2RlIG9yIGZyb20gaGVs cGVyLmMpICovCkBAIC04Myw4ICs5OSw4IEBACiAgICAgdWludDMyX3QgZm10OwogCiAgICAgc3Ag PSBlbnYtPmFyZWdzWzddOwotICAgIGZtdCA9IGxkbF9rZXJuZWwoc3ApOwotICAgIGVudi0+cGMg PSBsZGxfa2VybmVsKHNwICsgNCk7CisgICAgZm10ID0gbGR1bF9rZXJuZWwoc3ApOworICAgIGVu di0+cGMgPSBsZHVsX2tlcm5lbChzcCArIDQpOwogICAgIHNwIHw9IChmbXQgPj4gMjgpICYgMzsK ICAgICBlbnYtPnNyID0gZm10ICYgMHhmZmZmOwogICAgIG02OGtfc3dpdGNoX3NwKGVudik7CkBA IC0xMTIsNyArMTI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgJiYgKGVudi0+c3IgJiBTUl9T KSAhPSAwCiAgICAgICAgICAgICAgICAgICAgICYmIChlbnYtPnBjICYgMykgPT0gMAogICAgICAg ICAgICAgICAgICAgICAmJiBsZHV3X2NvZGUoZW52LT5wYyAtIDQpID09IDB4NGU3MQotICAgICAg ICAgICAgICAgICAgICAmJiBsZGxfY29kZShlbnYtPnBjKSA9PSAweDRlN2JmMDAwKSB7CisgICAg ICAgICAgICAgICAgICAgICYmIGxkdWxfY29kZShlbnYtPnBjKSA9PSAweDRlN2JmMDAwKSB7CiAg ICAgICAgICAgICAgICAgZW52LT5wYyArPSA0OwogICAgICAgICAgICAgICAgIGRvX202OGtfc2Vt aWhvc3RpbmcoZW52LCBlbnYtPmRyZWdzWzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA IC0xNTMsNyArMTY5LDcgQEAKICAgICBzdGxfa2VybmVsKHNwLCBmbXQpOwogICAgIGVudi0+YXJl Z3NbN10gPSBzcDsKICAgICAvKiBKdW1wIHRvIHZlY3Rvci4gICovCi0gICAgZW52LT5wYyA9IGxk bF9rZXJuZWwoZW52LT52YnIgKyB2ZWN0b3IpOworICAgIGVudi0+cGMgPSBsZHVsX2tlcm5lbChl bnYtPnZiciArIHZlY3Rvcik7CiB9CiAKICNlbmRpZgpJbmRleDogdGFyZ2V0LW02OGsvb3BfbWVt LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gdGFyZ2V0LW02OGsvb3BfbWVtLmgub3JpZwkyMDA3LTEwLTE0IDEz OjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LW02OGsvb3BfbWVtLmgJMjAwNy0xMC0x NSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTExLDcgKzExLDcgQEAKIE1FTV9MRF9PUCg4 czMyLHNiKQogTUVNX0xEX09QKDE2dTMyLHV3KQogTUVNX0xEX09QKDE2czMyLHN3KQotTUVNX0xE X09QKDMyLGwpCitNRU1fTERfT1AoMzIsdWwpCiAKICN1bmRlZiBNRU1fTERfT1AKIApJbmRleDog dGFyZ2V0LW1pcHMvZXhlYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRhcmdldC1taXBzL2V4ZWMuaC5vcmln CTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAwICswMDAwCisrKyB0YXJnZXQtbWlwcy9leGVj LmgJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTU0LDYgKzU0LDkgQEAK IAogI2lmICFkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpCiAjaW5jbHVkZSAic29mdG1tdV9leGVj LmgiCisjZGVmaW5lIFJFVkVSU0VfRU5ESUFOCisjaW5jbHVkZSAic29mdG1tdV9leGVjLmgiCisj dW5kZWYgUkVWRVJTRV9FTkRJQU4KICNlbmRpZiAvKiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZ KSAqLwogCiAjaWYgZGVmaW5lZChUQVJHRVRfTUlQU04zMikgfHwgZGVmaW5lZChUQVJHRVRfTUlQ UzY0KQpJbmRleDogdGFyZ2V0LW1pcHMvb3BfaGVscGVyLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0 LW1pcHMvb3BfaGVscGVyLmMub3JpZwkyMDA3LTEwLTE1IDE1OjQwOjIyLjAwMDAwMDAwMCArMDAw MAorKysgdGFyZ2V0LW1pcHMvb3BfaGVscGVyLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAw MDAgKzAwMDAKQEAgLTU0NCw2ICs1NDQsNyBAQAogI2RlZmluZSBNTVVTVUZGSVggX21tdQogI2Rl ZmluZSBBTElHTkVEX09OTFkKIAorLyogTmF0aXZlLWVuZGlhbiAqLwogI2RlZmluZSBTSElGVCAw CiAjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgogCkBAIC01NTYsNiArNTU3LDIxIEBACiAj ZGVmaW5lIFNISUZUIDMKICNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCiAKKy8qIFJldmVy c2UtZW5kaWFuICovCisjZGVmaW5lIFJFVkVSU0VfRU5ESUFOCisjZGVmaW5lIFNISUZUIDAKKyNp bmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUgU0hJRlQgMQorI2luY2x1ZGUg InNvZnRtbXVfdGVtcGxhdGUuaCIKKworI2RlZmluZSBTSElGVCAyCisjaW5jbHVkZSAic29mdG1t dV90ZW1wbGF0ZS5oIgorCisjZGVmaW5lIFNISUZUIDMKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBs YXRlLmgiCisjdW5kZWYgUkVWRVJTRV9FTkRJQU4KKwogc3RhdGljIHZvaWQgZG9fdW5hbGlnbmVk X2FjY2VzcyAodGFyZ2V0X3Vsb25nIGFkZHIsIGludCBpc193cml0ZSwgaW50IGlzX3VzZXIsIHZv aWQgKnJldGFkZHIpCiB7CiAgICAgZW52LT5DUDBfQmFkVkFkZHIgPSBhZGRyOwpJbmRleDogdGFy Z2V0LW1pcHMvb3BfbWVtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LW1pcHMvb3BfbWVtLmMub3Jp ZwkyMDA3LTEwLTE0IDEzOjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LW1pcHMvb3Bf bWVtLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTU3LDEzICs1Nywx MyBAQAogCiB2b2lkIGdsdWUob3BfbHcsIE1FTVNVRkZJWCkgKHZvaWQpCiB7Ci0gICAgVDAgPSBn bHVlKGxkbCwgTUVNU1VGRklYKShUMCk7CisgICAgVDAgPSBnbHVlKGxkdWwsIE1FTVNVRkZJWCko VDApOwogICAgIFJFVFVSTigpOwogfQogCiB2b2lkIGdsdWUob3BfbHd1LCBNRU1TVUZGSVgpICh2 b2lkKQogewotICAgIFQwID0gKHVpbnQzMl90KWdsdWUobGRsLCBNRU1TVUZGSVgpKFQwKTsKKyAg ICBUMCA9ICh1aW50MzJfdClnbHVlKGxkdWwsIE1FTVNVRkZJWCkoVDApOwogICAgIFJFVFVSTigp OwogfQogCkBAIC0xNjcsNyArMTY3LDcgQEAKIHZvaWQgZ2x1ZShvcF9sbCwgTUVNU1VGRklYKSAo dm9pZCkKIHsKICAgICBUMSA9IFQwOwotICAgIFQwID0gZ2x1ZShsZGwsIE1FTVNVRkZJWCkoVDAp OworICAgIFQwID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpKFQwKTsKICAgICBlbnYtPkNQMF9MTEFk ZHIgPSBUMTsKICAgICBSRVRVUk4oKTsKIH0KQEAgLTM4Myw3ICszODMsNyBAQAogCiB2b2lkIGds dWUob3BfbHdjMSwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBXVDAgPSBnbHVlKGxkbCwgTUVN U1VGRklYKShUMCk7CisgICAgV1QwID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpKFQwKTsKICAgICBS RVRVUk4oKTsKIH0KIHZvaWQgZ2x1ZShvcF9zd2MxLCBNRU1TVUZGSVgpICh2b2lkKQpJbmRleDog dGFyZ2V0LW1pcHMvdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LW1pcHMvdHJhbnNs YXRlLmMub3JpZwkyMDA3LTEwLTE0IDE2OjQ0OjIwLjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0 LW1pcHMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAg LTY1NDQsNyArNjU0NCw3IEBACiAgICAgICAgICAgICBnZW5fb3BjX2hmbGFnc1tsal0gPSBjdHgu aGZsYWdzICYgTUlQU19IRkxBR19CTUFTSzsKICAgICAgICAgICAgIGdlbl9vcGNfaW5zdHJfc3Rh cnRbbGpdID0gMTsKICAgICAgICAgfQotICAgICAgICBjdHgub3Bjb2RlID0gbGRsX2NvZGUoY3R4 LnBjKTsKKyAgICAgICAgY3R4Lm9wY29kZSA9IGxkdWxfY29kZShjdHgucGMpOwogICAgICAgICBk ZWNvZGVfb3BjKGVudiwgJmN0eCk7CiAgICAgICAgIGN0eC5wYyArPSA0OwogCkluZGV4OiB0YXJn ZXQtcHBjL2V4ZWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtcHBjL2V4ZWMuaC5vcmlnCTIwMDct MTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAwICswMDAwCisrKyB0YXJnZXQtcHBjL2V4ZWMuaAkyMDA3 LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtOTEsNyArOTEsMTIgQEAKICNlbmRp ZgogCiAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkKKworI2luY2x1ZGUgInNvZnRtbXVf ZXhlYy5oIgorI2RlZmluZSBSRVZFUlNFX0VORElBTgogI2luY2x1ZGUgInNvZnRtbXVfZXhlYy5o IgorI3VuZGVmIFJFVkVSU0VfRU5ESUFOCisKICNlbmRpZiAvKiAhZGVmaW5lZChDT05GSUdfVVNF Ul9PTkxZKSAqLwogCiB2b2lkIGRvX3JhaXNlX2V4Y2VwdGlvbl9lcnIgKHVpbnQzMl90IGV4Y2Vw dGlvbiwgaW50IGVycm9yX2NvZGUpOwpJbmRleDogdGFyZ2V0LXBwYy9oZWxwZXIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB0YXJnZXQtcHBjL2hlbHBlci5jLm9yaWcJMjAwNy0xMC0xNCAxMzowMDowNi4wMDAw MDAwMDAgKzAwMDAKKysrIHRhcmdldC1wcGMvaGVscGVyLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4w MDAwMDAwMDAgKzAwMDAKQEAgLTU2OSw4ICs1NjksOCBAQAogICAgICAgICB9IGVsc2UKICNlbmRp ZgogICAgICAgICB7Ci0gICAgICAgICAgICBwdGUwID0gbGRsX3BoeXMoYmFzZSArIChpICogOCkp OwotICAgICAgICAgICAgcHRlMSA9ICBsZGxfcGh5cyhiYXNlICsgKGkgKiA4KSArIDQpOworICAg ICAgICAgICAgcHRlMCA9IGxkdWxfcGh5cyhiYXNlICsgKGkgKiA4KSk7CisgICAgICAgICAgICBw dGUxID0gIGxkdWxfcGh5cyhiYXNlICsgKGkgKiA4KSArIDQpOwogICAgICAgICAgICAgciA9IHB0 ZTMyX2NoZWNrKGN0eCwgcHRlMCwgcHRlMSwgaCwgcncsIHR5cGUpOwogI2lmIGRlZmluZWQgKERF QlVHX01NVSkKICAgICAgICAgICAgIGlmIChsb2dsZXZlbCAhPSAwKSB7CkBAIC02ODYsNyArNjg2 LDcgQEAKICAgICBtYXNrID0gMHgwMDAwMDAwMDAwMDAwMDAwVUxMOyAvKiBBdm9pZCBnY2Mgd2Fy bmluZyAqLwogICAgIGZvciAobiA9IDA7IG4gPCBlbnYtPnNsYl9ucjsgbisrKSB7CiAgICAgICAg IHRtcDY0ID0gbGRxX3BoeXMoc3JfYmFzZSk7Ci0gICAgICAgIHRtcCA9IGxkbF9waHlzKHNyX2Jh c2UgKyA4KTsKKyAgICAgICAgdG1wID0gbGR1bF9waHlzKHNyX2Jhc2UgKyA4KTsKICNpZiBkZWZp bmVkKERFQlVHX1NMQikKICAgICAgICAgaWYgKGxvZ2xldmVsICE9IDApIHsKICAgICAgICAgICAg IGZwcmludGYobG9nZmlsZSwgIiVzOiBzZWcgJWQgIiBQQUREUlggIiAlMDE2IiBQUkl4NjQgIiAl MDgiCkBAIC03ODQsNyArNzg0LDcgQEAKICAgICBzcl9iYXNlID0gZW52LT5zcHJbU1BSX0FTUl07 CiAgICAgc3JfYmFzZSArPSAxMiAqIHNsYl9ucjsKICAgICB0bXA2NCA9IGxkcV9waHlzKHNyX2Jh c2UpOwotICAgIHRtcCA9IGxkbF9waHlzKHNyX2Jhc2UgKyA4KTsKKyAgICB0bXAgPSBsZHVsX3Bo eXMoc3JfYmFzZSArIDgpOwogICAgIGlmICh0bXA2NCAmIDB4MDAwMDAwMDAwODAwMDAwMFVMTCkg ewogICAgICAgICAvKiBTTEIgZW50cnkgaXMgdmFsaWQgKi8KICAgICAgICAgLyogQ29weSBTTEIg Yml0cyA2Mjo4OCB0byBSdCAzNzo2MyAoVlNJRCAyMzo0OSkgKi8KQEAgLTk5MCwxMCArOTkwLDEw IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZHIsIG1hc2sgKyAweDgwKTsKICAgICAgICAg ICAgICAgICBmb3IgKGN1cmFkZHIgPSBzZHI7IGN1cmFkZHIgPCAoc2RyICsgbWFzayArIDB4ODAp OwogICAgICAgICAgICAgICAgICAgICAgY3VyYWRkciArPSAxNikgewotICAgICAgICAgICAgICAg ICAgICBhMCA9IGxkbF9waHlzKGN1cmFkZHIpOwotICAgICAgICAgICAgICAgICAgICBhMSA9IGxk bF9waHlzKGN1cmFkZHIgKyA0KTsKLSAgICAgICAgICAgICAgICAgICAgYTIgPSBsZGxfcGh5cyhj dXJhZGRyICsgOCk7Ci0gICAgICAgICAgICAgICAgICAgIGEzID0gbGRsX3BoeXMoY3VyYWRkciAr IDEyKTsKKyAgICAgICAgICAgICAgICAgICAgYTAgPSBsZHVsX3BoeXMoY3VyYWRkcik7CisgICAg ICAgICAgICAgICAgICAgIGExID0gbGR1bF9waHlzKGN1cmFkZHIgKyA0KTsKKyAgICAgICAgICAg ICAgICAgICAgYTIgPSBsZHVsX3BoeXMoY3VyYWRkciArIDgpOworICAgICAgICAgICAgICAgICAg ICBhMyA9IGxkdWxfcGh5cyhjdXJhZGRyICsgMTIpOwogICAgICAgICAgICAgICAgICAgICBpZiAo YTAgIT0gMCB8fCBhMSAhPSAwIHx8IGEyICE9IDAgfHwgYTMgIT0gMCkgewogICAgICAgICAgICAg ICAgICAgICAgICAgZnByaW50Zihsb2dmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQUREUlggIjogJTA4eCAlMDh4ICUwOHggJTA4eFxuIiwKQEAgLTIyNjYsNyArMjI2Niw3 IEBACiAjZW5kaWYKICAgICAgICAgLyogWFhYOiB0aGlzIGlzIGZhbHNlICovCiAgICAgICAgIC8q IEdldCByUy9yRCBhbmQgckEgZnJvbSBmYXVsdGluZyBvcGNvZGUgKi8KLSAgICAgICAgZW52LT5z cHJbU1BSX0RTSVNSXSB8PSAobGRsX2NvZGUoKGVudi0+bmlwIC0gNCkpICYgMHgwM0ZGMDAwMCkg Pj4gMTY7CisgICAgICAgIGVudi0+c3ByW1NQUl9EU0lTUl0gfD0gKGxkdWxfY29kZSgoZW52LT5u aXAgLSA0KSkgJiAweDAzRkYwMDAwKSA+PiAxNjsKICAgICAgICAgZ290byBzdG9yZV9jdXJyZW50 OwogICAgIGNhc2UgUE9XRVJQQ19FWENQX1BST0dSQU06ICAgLyogUHJvZ3JhbSBleGNlcHRpb24g ICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICBzd2l0Y2ggKGVudi0+ZXJyb3JfY29k ZSAmIH4weEYpIHsKSW5kZXg6IHRhcmdldC1wcGMvb3BfaGVscGVyLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g dGFyZ2V0LXBwYy9vcF9oZWxwZXIuYy5vcmlnCTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAw ICswMDAwCisrKyB0YXJnZXQtcHBjL29wX2hlbHBlci5jCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAw MDAwMDAwICswMDAwCkBAIC0yMjk2LDYgKzIyOTYsNyBAQAogI2RlZmluZSBNTVVTVUZGSVggX21t dQogI2RlZmluZSBHRVRQQygpIChfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpCiAKKy8qIE5h dGl2ZS1lbmRpYW4gKi8KICNkZWZpbmUgU0hJRlQgMAogI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxh dGUuaCIKIApAQCAtMjMwOCw2ICsyMzA5LDIxIEBACiAjZGVmaW5lIFNISUZUIDMKICNpbmNsdWRl ICJzb2Z0bW11X3RlbXBsYXRlLmgiCiAKKy8qIFJldmVyc2UtZW5kaWFuICovCisjZGVmaW5lIFJF VkVSU0VfRU5ESUFOCisjZGVmaW5lIFNISUZUIDAKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRl LmgiCisKKyNkZWZpbmUgU0hJRlQgMQorI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIKKwor I2RlZmluZSBTSElGVCAyCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisjZGVmaW5l IFNISUZUIDMKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisjdW5kZWYgUkVWRVJTRV9F TkRJQU4KKwogLyogdHJ5IHRvIGZpbGwgdGhlIFRMQiBhbmQgcmV0dXJuIGFuIGV4Y2VwdGlvbiBp ZiBlcnJvci4gSWYgcmV0YWRkciBpcwogICAgTlVMTCwgaXQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rp b24gd2FzIGNhbGxlZCBpbiBDIGNvZGUgKGkuZS4gbm90CiAgICBmcm9tIGdlbmVyYXRlZCBjb2Rl IG9yIGZyb20gaGVscGVyLmMpICovCkluZGV4OiB0YXJnZXQtcHBjL29wX2hlbHBlci5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHRhcmdldC1wcGMvb3BfaGVscGVyLmgub3JpZwkyMDA3LTEwLTE1IDE1OjQwOjIy LjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LXBwYy9vcF9oZWxwZXIuaAkyMDA3LTEwLTE1IDE1 OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtMzcsMTkgKzM3LDYgQEAKIHZvaWQgZ2x1ZShkb19Q T1dFUjJfc3RmcSwgTUVNU1VGRklYKSAodm9pZCk7CiB2b2lkIGdsdWUoZG9fUE9XRVIyX3N0ZnFf bGUsIE1FTVNVRkZJWCkgKHZvaWQpOwogCi0jaWYgZGVmaW5lZChUQVJHRVRfUFBDNjQpCi12b2lk IGdsdWUoZG9fbHN3XzY0LCBNRU1TVUZGSVgpIChpbnQgZHN0KTsKLXZvaWQgZ2x1ZShkb19sc3df bGVfNjQsIE1FTVNVRkZJWCkgKGludCBkc3QpOwotdm9pZCBnbHVlKGRvX3N0c3dfNjQsIE1FTVNV RkZJWCkgKGludCBzcmMpOwotdm9pZCBnbHVlKGRvX3N0c3dfbGVfNjQsIE1FTVNVRkZJWCkgKGlu dCBzcmMpOwotdm9pZCBnbHVlKGRvX2xtd182NCwgTUVNU1VGRklYKSAoaW50IGRzdCk7Ci12b2lk IGdsdWUoZG9fbG13X2xlXzY0LCBNRU1TVUZGSVgpIChpbnQgZHN0KTsKLXZvaWQgZ2x1ZShkb19z dG13XzY0LCBNRU1TVUZGSVgpIChpbnQgc3JjKTsKLXZvaWQgZ2x1ZShkb19zdG13X2xlXzY0LCBN RU1TVUZGSVgpIChpbnQgc3JjKTsKLXZvaWQgZ2x1ZShkb19pY2JpXzY0LCBNRU1TVUZGSVgpICh2 b2lkKTsKLXZvaWQgZ2x1ZShkb19kY2J6XzY0LCBNRU1TVUZGSVgpICh2b2lkKTsKLSNlbmRpZgot CiAjZWxzZQogCiB2b2lkIGRvX3ByaW50X21lbV9FQSAodGFyZ2V0X3Vsb25nIEVBKTsKSW5kZXg6 IHRhcmdldC1wcGMvb3BfaGVscGVyX21lbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRhcmdldC1wcGMvb3Bf aGVscGVyX21lbS5oLm9yaWcJMjAwNy0xMC0xNSAxNTo0MDoyMi4wMDAwMDAwMDAgKzAwMDAKKysr IHRhcmdldC1wcGMvb3BfaGVscGVyX21lbS5oCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAw ICswMDAwCkBAIC0xOSwyMjkgKzE5LDEwMSBAQAogICovCiAKIC8qIE11bHRpcGxlIHdvcmQgLyBz dHJpbmcgbG9hZCBhbmQgc3RvcmUgKi8KLXN0YXRpYyBhbHdheXNfaW5saW5lIHRhcmdldF91bG9u ZyBnbHVlKGxkMzJyLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEpCi17Ci0gICAgdWludDMy X3QgdG1wID0gZ2x1ZShsZGwsIE1FTVNVRkZJWCkoRUEpOwotICAgIHJldHVybiAoKHRtcCAmIDB4 RkYwMDAwMDBVTCkgPj4gMjQpIHwgKCh0bXAgJiAweDAwRkYwMDAwVUwpID4+IDgpIHwKLSAgICAg ICAgKCh0bXAgJiAweDAwMDBGRjAwVUwpIDw8IDgpIHwgKCh0bXAgJiAweDAwMDAwMEZGVUwpIDw8 IDI0KTsKLX0KLQotc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBnbHVlKHN0MzJyLCBNRU1TVUZG SVgpICh0YXJnZXRfdWxvbmcgRUEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBkYXRhKQotewotICAgIHVpbnQzMl90IHRtcCA9 Ci0gICAgICAgICgoZGF0YSAmIDB4RkYwMDAwMDBVTCkgPj4gMjQpIHwgKChkYXRhICYgMHgwMEZG MDAwMFVMKSA+PiA4KSB8Ci0gICAgICAgICgoZGF0YSAmIDB4MDAwMEZGMDBVTCkgPDwgOCkgfCAo KGRhdGEgJiAweDAwMDAwMEZGVUwpIDw8IDI0KTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShF QSwgdG1wKTsKLX0KLQogdm9pZCBnbHVlKGRvX2xtdywgTUVNU1VGRklYKSAoaW50IGRzdCkKIHsK ICAgICBmb3IgKDsgZHN0IDwgMzI7IGRzdCsrLCBUMCArPSA0KSB7Ci0gICAgICAgIGVudi0+Z3By W2RzdF0gPSBnbHVlKGxkbCwgTUVNU1VGRklYKSgodWludDMyX3QpVDApOwotICAgIH0KLX0KLQot I2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQotdm9pZCBnbHVlKGRvX2xtd182NCwgTUVNU1VGRklY KSAoaW50IGRzdCkKLXsKLSAgICBmb3IgKDsgZHN0IDwgMzI7IGRzdCsrLCBUMCArPSA0KSB7Ci0g ICAgICAgIGVudi0+Z3ByW2RzdF0gPSBnbHVlKGxkbCwgTUVNU1VGRklYKSgodWludDY0X3QpVDAp OworICAgICAgICBlbnYtPmdwcltkc3RdID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpKFQwKTsKICAg ICB9CiB9Ci0jZW5kaWYKIAogdm9pZCBnbHVlKGRvX3N0bXcsIE1FTVNVRkZJWCkgKGludCBzcmMp CiB7CiAgICAgZm9yICg7IHNyYyA8IDMyOyBzcmMrKywgVDAgKz0gNCkgewotICAgICAgICBnbHVl KHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpVDAsIGVudi0+Z3ByW3NyY10pOwotICAgIH0KLX0K LQotI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQotdm9pZCBnbHVlKGRvX3N0bXdfNjQsIE1FTVNV RkZJWCkgKGludCBzcmMpCi17Ci0gICAgZm9yICg7IHNyYyA8IDMyOyBzcmMrKywgVDAgKz0gNCkg ewotICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpVDAsIGVudi0+Z3ByW3Ny Y10pOworICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCwgZW52LT5ncHJbc3JjXSk7CiAg ICAgfQogfQotI2VuZGlmCiAKIHZvaWQgZ2x1ZShkb19sbXdfbGUsIE1FTVNVRkZJWCkgKGludCBk c3QpCiB7CiAgICAgZm9yICg7IGRzdCA8IDMyOyBkc3QrKywgVDAgKz0gNCkgewotICAgICAgICBl bnYtPmdwcltkc3RdID0gZ2x1ZShsZDMyciwgTUVNU1VGRklYKSgodWludDMyX3QpVDApOwotICAg IH0KLX0KLQotI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQotdm9pZCBnbHVlKGRvX2xtd19sZV82 NCwgTUVNU1VGRklYKSAoaW50IGRzdCkKLXsKLSAgICBmb3IgKDsgZHN0IDwgMzI7IGRzdCsrLCBU MCArPSA0KSB7Ci0gICAgICAgIGVudi0+Z3ByW2RzdF0gPSBnbHVlKGxkMzJyLCBNRU1TVUZGSVgp KCh1aW50NjRfdClUMCk7CisgICAgICAgIGVudi0+Z3ByW2RzdF0gPSBnbHVlKGxkdWxyLCBNRU1T VUZGSVgpKFQwKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogdm9pZCBnbHVlKGRvX3N0bXdfbGUsIE1F TVNVRkZJWCkgKGludCBzcmMpCiB7CiAgICAgZm9yICg7IHNyYyA8IDMyOyBzcmMrKywgVDAgKz0g NCkgewotICAgICAgICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCwgZW52LT5n cHJbc3JjXSk7CisgICAgICAgIGdsdWUoc3RsciwgTUVNU1VGRklYKShUMCwgZW52LT5ncHJbc3Jj XSk7CiAgICAgfQogfQogCi0jaWYgZGVmaW5lZChUQVJHRVRfUFBDNjQpCi12b2lkIGdsdWUoZG9f c3Rtd19sZV82NCwgTUVNU1VGRklYKSAoaW50IHNyYykKLXsKLSAgICBmb3IgKDsgc3JjIDwgMzI7 IHNyYysrLCBUMCArPSA0KSB7Ci0gICAgICAgIGdsdWUoc3QzMnIsIE1FTVNVRkZJWCkoKHVpbnQ2 NF90KVQwLCBlbnYtPmdwcltzcmNdKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBnbHVlKGRv X2xzdywgTUVNU1VGRklYKSAoaW50IGRzdCkKIHsKICAgICB1aW50MzJfdCB0bXA7CiAgICAgaW50 IHNoOwogCiAgICAgZm9yICg7IFQxID4gMzsgVDEgLT0gNCwgVDAgKz0gNCkgewotICAgICAgICBl bnYtPmdwcltkc3QrK10gPSBnbHVlKGxkbCwgTUVNU1VGRklYKSgodWludDMyX3QpVDApOworICAg ICAgICBlbnYtPmdwcltkc3QrK10gPSBnbHVlKGxkdWwsIE1FTVNVRkZJWCkoVDApOwogICAgICAg ICBpZiAodW5saWtlbHkoZHN0ID09IDMyKSkKICAgICAgICAgICAgIGRzdCA9IDA7CiAgICAgfQog ICAgIGlmICh1bmxpa2VseShUMSAhPSAwKSkgewogICAgICAgICB0bXAgPSAwOwogICAgICAgICBm b3IgKHNoID0gMjQ7IFQxID4gMDsgVDEtLSwgVDArKywgc2ggLT0gOCkgewotICAgICAgICAgICAg dG1wIHw9IGdsdWUobGR1YiwgTUVNU1VGRklYKSgodWludDMyX3QpVDApIDw8IHNoOworICAgICAg ICAgICAgdG1wIHw9IGdsdWUobGR1YiwgTUVNU1VGRklYKShUMCkgPDwgc2g7CiAgICAgICAgIH0K ICAgICAgICAgZW52LT5ncHJbZHN0XSA9IHRtcDsKICAgICB9CiB9CiAKLSNpZiBkZWZpbmVkKFRB UkdFVF9QUEM2NCkKLXZvaWQgZ2x1ZShkb19sc3dfNjQsIE1FTVNVRkZJWCkgKGludCBkc3QpCi17 Ci0gICAgdWludDMyX3QgdG1wOwotICAgIGludCBzaDsKLQotICAgIGZvciAoOyBUMSA+IDM7IFQx IC09IDQsIFQwICs9IDQpIHsKLSAgICAgICAgZW52LT5ncHJbZHN0KytdID0gZ2x1ZShsZGwsIE1F TVNVRkZJWCkoKHVpbnQ2NF90KVQwKTsKLSAgICAgICAgaWYgKHVubGlrZWx5KGRzdCA9PSAzMikp Ci0gICAgICAgICAgICBkc3QgPSAwOwotICAgIH0KLSAgICBpZiAodW5saWtlbHkoVDEgIT0gMCkp IHsKLSAgICAgICAgdG1wID0gMDsKLSAgICAgICAgZm9yIChzaCA9IDI0OyBUMSA+IDA7IFQxLS0s IFQwKyssIHNoIC09IDgpIHsKLSAgICAgICAgICAgIHRtcCB8PSBnbHVlKGxkdWIsIE1FTVNVRkZJ WCkoKHVpbnQ2NF90KVQwKSA8PCBzaDsKLSAgICAgICAgfQotICAgICAgICBlbnYtPmdwcltkc3Rd ID0gdG1wOwotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIGdsdWUoZG9fc3RzdywgTUVNU1VGRklY KSAoaW50IHNyYykKIHsKICAgICBpbnQgc2g7CiAKICAgICBmb3IgKDsgVDEgPiAzOyBUMSAtPSA0 LCBUMCArPSA0KSB7Ci0gICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCwg ZW52LT5ncHJbc3JjKytdKTsKKyAgICAgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoVDAsIGVudi0+ Z3ByW3NyYysrXSk7CiAgICAgICAgIGlmICh1bmxpa2VseShzcmMgPT0gMzIpKQogICAgICAgICAg ICAgc3JjID0gMDsKICAgICB9CiAgICAgaWYgKHVubGlrZWx5KFQxICE9IDApKSB7CiAgICAgICAg IGZvciAoc2ggPSAyNDsgVDEgPiAwOyBUMS0tLCBUMCsrLCBzaCAtPSA4KQotICAgICAgICAgICAg Z2x1ZShzdGIsIE1FTVNVRkZJWCkoKHVpbnQzMl90KVQwLCAoZW52LT5ncHJbc3JjXSA+PiBzaCkg JiAweEZGKTsKKyAgICAgICAgICAgIGdsdWUoc3RiLCBNRU1TVUZGSVgpKFQwLCAoZW52LT5ncHJb c3JjXSA+PiBzaCkgJiAweEZGKTsKICAgICB9CiB9CiAKLSNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2 NCkKLXZvaWQgZ2x1ZShkb19zdHN3XzY0LCBNRU1TVUZGSVgpIChpbnQgc3JjKQotewotICAgIGlu dCBzaDsKLQotICAgIGZvciAoOyBUMSA+IDM7IFQxIC09IDQsIFQwICs9IDQpIHsKLSAgICAgICAg Z2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KVQwLCBlbnYtPmdwcltzcmMrK10pOwotICAg ICAgICBpZiAodW5saWtlbHkoc3JjID09IDMyKSkKLSAgICAgICAgICAgIHNyYyA9IDA7Ci0gICAg fQotICAgIGlmICh1bmxpa2VseShUMSAhPSAwKSkgewotICAgICAgICBmb3IgKHNoID0gMjQ7IFQx ID4gMDsgVDEtLSwgVDArKywgc2ggLT0gOCkKLSAgICAgICAgICAgIGdsdWUoc3RiLCBNRU1TVUZG SVgpKCh1aW50NjRfdClUMCwgKGVudi0+Z3ByW3NyY10gPj4gc2gpICYgMHhGRik7Ci0gICAgfQot fQotI2VuZGlmCi0KIHZvaWQgZ2x1ZShkb19sc3dfbGUsIE1FTVNVRkZJWCkgKGludCBkc3QpCiB7 CiAgICAgdWludDMyX3QgdG1wOwogICAgIGludCBzaDsKIAogICAgIGZvciAoOyBUMSA+IDM7IFQx IC09IDQsIFQwICs9IDQpIHsKLSAgICAgICAgZW52LT5ncHJbZHN0KytdID0gZ2x1ZShsZDMyciwg TUVNU1VGRklYKSgodWludDMyX3QpVDApOworICAgICAgICBlbnYtPmdwcltkc3QrK10gPSBnbHVl KGxkdWxyLCBNRU1TVUZGSVgpKFQwKTsKICAgICAgICAgaWYgKHVubGlrZWx5KGRzdCA9PSAzMikp CiAgICAgICAgICAgICBkc3QgPSAwOwogICAgIH0KICAgICBpZiAodW5saWtlbHkoVDEgIT0gMCkp IHsKICAgICAgICAgdG1wID0gMDsKICAgICAgICAgZm9yIChzaCA9IDA7IFQxID4gMDsgVDEtLSwg VDArKywgc2ggKz0gOCkgewotICAgICAgICAgICAgdG1wIHw9IGdsdWUobGR1YiwgTUVNU1VGRklY KSgodWludDMyX3QpVDApIDw8IHNoOworICAgICAgICAgICAgdG1wIHw9IGdsdWUobGR1YiwgTUVN U1VGRklYKShUMCkgPDwgc2g7CiAgICAgICAgIH0KICAgICAgICAgZW52LT5ncHJbZHN0XSA9IHRt cDsKICAgICB9CiB9CiAKLSNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLXZvaWQgZ2x1ZShkb19s c3dfbGVfNjQsIE1FTVNVRkZJWCkgKGludCBkc3QpCi17Ci0gICAgdWludDMyX3QgdG1wOwotICAg IGludCBzaDsKLQotICAgIGZvciAoOyBUMSA+IDM7IFQxIC09IDQsIFQwICs9IDQpIHsKLSAgICAg ICAgZW52LT5ncHJbZHN0KytdID0gZ2x1ZShsZDMyciwgTUVNU1VGRklYKSgodWludDY0X3QpVDAp OwotICAgICAgICBpZiAodW5saWtlbHkoZHN0ID09IDMyKSkKLSAgICAgICAgICAgIGRzdCA9IDA7 Ci0gICAgfQotICAgIGlmICh1bmxpa2VseShUMSAhPSAwKSkgewotICAgICAgICB0bXAgPSAwOwot ICAgICAgICBmb3IgKHNoID0gMDsgVDEgPiAwOyBUMS0tLCBUMCsrLCBzaCArPSA4KSB7Ci0gICAg ICAgICAgICB0bXAgfD0gZ2x1ZShsZHViLCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCkgPDwgc2g7 Ci0gICAgICAgIH0KLSAgICAgICAgZW52LT5ncHJbZHN0XSA9IHRtcDsKLSAgICB9Ci19Ci0jZW5k aWYKLQogdm9pZCBnbHVlKGRvX3N0c3dfbGUsIE1FTVNVRkZJWCkgKGludCBzcmMpCiB7CiAgICAg aW50IHNoOwogCiAgICAgZm9yICg7IFQxID4gMzsgVDEgLT0gNCwgVDAgKz0gNCkgewotICAgICAg ICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCwgZW52LT5ncHJbc3JjKytdKTsK LSAgICAgICAgaWYgKHVubGlrZWx5KHNyYyA9PSAzMikpCi0gICAgICAgICAgICBzcmMgPSAwOwot ICAgIH0KLSAgICBpZiAodW5saWtlbHkoVDEgIT0gMCkpIHsKLSAgICAgICAgZm9yIChzaCA9IDA7 IFQxID4gMDsgVDEtLSwgVDArKywgc2ggKz0gOCkKLSAgICAgICAgICAgIGdsdWUoc3RiLCBNRU1T VUZGSVgpKCh1aW50MzJfdClUMCwgKGVudi0+Z3ByW3NyY10gPj4gc2gpICYgMHhGRik7Ci0gICAg fQotfQotCi0jaWYgZGVmaW5lZChUQVJHRVRfUFBDNjQpCi12b2lkIGdsdWUoZG9fc3Rzd19sZV82 NCwgTUVNU1VGRklYKSAoaW50IHNyYykKLXsKLSAgICBpbnQgc2g7Ci0KLSAgICBmb3IgKDsgVDEg PiAzOyBUMSAtPSA0LCBUMCArPSA0KSB7Ci0gICAgICAgIGdsdWUoc3QzMnIsIE1FTVNVRkZJWCko KHVpbnQ2NF90KVQwLCBlbnYtPmdwcltzcmMrK10pOworICAgICAgICBnbHVlKHN0bHIsIE1FTVNV RkZJWCkoVDAsIGVudi0+Z3ByW3NyYysrXSk7CiAgICAgICAgIGlmICh1bmxpa2VseShzcmMgPT0g MzIpKQogICAgICAgICAgICAgc3JjID0gMDsKICAgICB9CiAgICAgaWYgKHVubGlrZWx5KFQxICE9 IDApKSB7CiAgICAgICAgIGZvciAoc2ggPSAwOyBUMSA+IDA7IFQxLS0sIFQwKyssIHNoICs9IDgp Ci0gICAgICAgICAgICBnbHVlKHN0YiwgTUVNU1VGRklYKSgodWludDY0X3QpVDAsIChlbnYtPmdw cltzcmNdID4+IHNoKSAmIDB4RkYpOworICAgICAgICAgICAgZ2x1ZShzdGIsIE1FTVNVRkZJWCko VDAsIChlbnYtPmdwcltzcmNdID4+IHNoKSAmIDB4RkYpOwogICAgIH0KIH0KLSNlbmRpZgogCiAv KiBJbnN0cnVjdGlvbiBjYWNoZSBpbnZhbGlkYXRpb24gaGVscGVyICovCiB2b2lkIGdsdWUoZG9f aWNiaSwgTUVNU1VGRklYKSAodm9pZCkKQEAgLTI1MiwyOCArMTI0LDEyIEBACiAgICAgICogKG5v dCBhIGZldGNoKSBieSB0aGUgTU1VLiBUbyBiZSBzdXJlIGl0IHdpbGwgYmUgc28sCiAgICAgICog ZG8gdGhlIGxvYWQgImJ5IGhhbmQiLgogICAgICAqLwotICAgIHRtcCA9IGdsdWUobGRsLCBNRU1T VUZGSVgpKCh1aW50MzJfdClUMCk7CisgICAgdG1wID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpKFQw KTsKICAgICBUMCAmPSB+KGVudi0+aWNhY2hlX2xpbmVfc2l6ZSAtIDEpOwotICAgIHRiX2ludmFs aWRhdGVfcGFnZV9yYW5nZSgodWludDMyX3QpVDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh1aW50MzJfdCkoVDAgKyBlbnYtPmljYWNoZV9saW5lX3NpemUpKTsKKyAgICAvKiBXZSBh c3N1bWUgaXQgd291bGQgbm90IHdyYXAgYXJvdW5kIDJeMzIgb24gMzIgYml0cyB0YXJnZXRzICov CisgICAgdGJfaW52YWxpZGF0ZV9wYWdlX3JhbmdlKFQwLCBUMCArIGVudi0+aWNhY2hlX2xpbmVf c2l6ZSk7CiB9CiAKLSNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLXZvaWQgZ2x1ZShkb19pY2Jp XzY0LCBNRU1TVUZGSVgpICh2b2lkKQotewotICAgIHVpbnQ2NF90IHRtcDsKLSAgICAvKiBJbnZh bGlkYXRlIG9uZSBjYWNoZSBsaW5lIDoKLSAgICAgKiBQb3dlclBDIHNwZWNpZmljYXRpb24gc2F5 cyB0aGlzIGlzIHRvIGJlIHRyZWF0ZWQgbGlrZSBhIGxvYWQKLSAgICAgKiAobm90IGEgZmV0Y2gp IGJ5IHRoZSBNTVUuIFRvIGJlIHN1cmUgaXQgd2lsbCBiZSBzbywKLSAgICAgKiBkbyB0aGUgbG9h ZCAiYnkgaGFuZCIuCi0gICAgICovCi0gICAgdG1wID0gZ2x1ZShsZHEsIE1FTVNVRkZJWCkoKHVp bnQ2NF90KVQwKTsKLSAgICBUMCAmPSB+KGVudi0+aWNhY2hlX2xpbmVfc2l6ZSAtIDEpOwotICAg IHRiX2ludmFsaWRhdGVfcGFnZV9yYW5nZSgodWludDY0X3QpVDAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1aW50NjRfdCkoVDAgKyBlbnYtPmljYWNoZV9saW5lX3NpemUpKTsKLX0K LSNlbmRpZgotCiB2b2lkIGdsdWUoZG9fZGNieiwgTUVNU1VGRklYKSAodm9pZCkKIHsKICAgICBp bnQgZGNhY2hlX2xpbmVfc2l6ZSA9IGVudi0+ZGNhY2hlX2xpbmVfc2l6ZTsKQEAgLTI4MSw5MSAr MTM3LDQ0IEBACiAgICAgLyogWFhYOiBzaG91bGQgYmUgOTcwIHNwZWNpZmljICg/KSAqLwogICAg IGlmICgoKGVudi0+c3ByW1NQUl85NzBfSElENV0gPj4gNykgJiAweDMpID09IDEpCiAgICAgICAg IGRjYWNoZV9saW5lX3NpemUgPSAzMjsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMy X3QpKFQwICsgMHgwMCksIDApOwotICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50MzJfdCko VDAgKyAweDA0KSwgMCk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQzMl90KShUMCAr IDB4MDgpLCAwKTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHgw QyksIDApOwotICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50MzJfdCkoVDAgKyAweDEwKSwg MCk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQzMl90KShUMCArIDB4MTQpLCAwKTsK LSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHgxOCksIDApOwotICAg IGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50MzJfdCkoVDAgKyAweDFDKSwgMCk7CisgICAgZ2x1 ZShzdGwsIE1FTVNVRkZJWCkoVDAgKyAweDAwLCAwKTsKKyAgICBnbHVlKHN0bCwgTUVNU1VGRklY KShUMCArIDB4MDQsIDApOworICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKFQwICsgMHgwOCwgMCk7 CisgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoVDAgKyAweDBDLCAwKTsKKyAgICBnbHVlKHN0bCwg TUVNU1VGRklYKShUMCArIDB4MTAsIDApOworICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKFQwICsg MHgxNCwgMCk7CisgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoVDAgKyAweDE4LCAwKTsKKyAgICBn bHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4MUMsIDApOwogICAgIGlmIChkY2FjaGVfbGluZV9z aXplID49IDY0KSB7Ci0gICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50MzJfdCkoVDAg KyAweDIwVUwpLCAwKTsKLSAgICAgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQzMl90KShU MCArIDB4MjRVTCksIDApOwotICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3Qp KFQwICsgMHgyOFVMKSwgMCk7Ci0gICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50MzJf dCkoVDAgKyAweDJDVUwpLCAwKTsKLSAgICAgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQz Ml90KShUMCArIDB4MzBVTCksIDApOwotICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWlu dDMyX3QpKFQwICsgMHgzNFVMKSwgMCk7Ci0gICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1 aW50MzJfdCkoVDAgKyAweDM4VUwpLCAwKTsKLSAgICAgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCko KHVpbnQzMl90KShUMCArIDB4M0NVTCksIDApOworICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklY KShUMCArIDB4MjBVTCwgMCk7CisgICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKFQwICsgMHgy NFVMLCAwKTsKKyAgICAgICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoVDAgKyAweDI4VUwsIDApOwor ICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4MkNVTCwgMCk7CisgICAgICAgIGds dWUoc3RsLCBNRU1TVUZGSVgpKFQwICsgMHgzMFVMLCAwKTsKKyAgICAgICAgZ2x1ZShzdGwsIE1F TVNVRkZJWCkoVDAgKyAweDM0VUwsIDApOworICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShU MCArIDB4MzhVTCwgMCk7CisgICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKFQwICsgMHgzQ1VM LCAwKTsKICAgICAgICAgaWYgKGRjYWNoZV9saW5lX3NpemUgPj0gMTI4KSB7Ci0gICAgICAgICAg ICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg0MFVMKSwgMCk7Ci0gICAg ICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg0NFVMKSwgMCk7 Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg0OFVM KSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsg MHg0Q1VMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3Qp KFQwICsgMHg1MFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWlu dDMyX3QpKFQwICsgMHg1NFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklY KSgodWludDMyX3QpKFQwICsgMHg1OFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVN U1VGRklYKSgodWludDMyX3QpKFQwICsgMHg1Q1VMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0 bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg2MFVMKSwgMCk7Ci0gICAgICAgICAgICBn bHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg2NFVMKSwgMCk7Ci0gICAgICAg ICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg2OFVMKSwgMCk7Ci0g ICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg2Q1VMKSwg MCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQwICsgMHg3 MFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMyX3QpKFQw ICsgMHg3NFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDMy X3QpKFQwICsgMHg3OFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgo dWludDMyX3QpKFQwICsgMHg3Q1VMKSwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VG RklYKShUMCArIDB4NDBVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShU MCArIDB4NDRVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4 NDhVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NENVTCwg MCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NTBVTCwgMCk7Cisg ICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NTRVTCwgMCk7CisgICAgICAg ICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NThVTCwgMCk7CisgICAgICAgICAgICBn bHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NUNVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0 bCwgTUVNU1VGRklYKShUMCArIDB4NjBVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVN U1VGRklYKShUMCArIDB4NjRVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklY KShUMCArIDB4NjhVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCAr IDB4NkNVTCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NzBV TCwgMCk7CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NzRVTCwgMCk7 CisgICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4NzhVTCwgMCk7CisgICAg ICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCArIDB4N0NVTCwgMCk7CiAgICAgICAgIH0K ICAgICB9CiB9CiAKLSNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLXZvaWQgZ2x1ZShkb19kY2J6 XzY0LCBNRU1TVUZGSVgpICh2b2lkKQotewotICAgIGludCBkY2FjaGVfbGluZV9zaXplID0gZW52 LT5kY2FjaGVfbGluZV9zaXplOwotCi0gICAgLyogWFhYOiBzaG91bGQgYmUgOTcwIHNwZWNpZmlj ICg/KSAqLwotICAgIGlmICgoKGVudi0+c3ByW1NQUl85NzBfSElENV0gPj4gNikgJiAweDMpID09 IDB4MikKLSAgICAgICAgZGNhY2hlX2xpbmVfc2l6ZSA9IDMyOwotICAgIGdsdWUoc3RsLCBNRU1T VUZGSVgpKCh1aW50NjRfdCkoVDAgKyAweDAwKSwgMCk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNVRkZJ WCkoKHVpbnQ2NF90KShUMCArIDB4MDQpLCAwKTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgo dWludDY0X3QpKFQwICsgMHgwOCksIDApOwotICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50 NjRfdCkoVDAgKyAweDBDKSwgMCk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQ2NF90 KShUMCArIDB4MTApLCAwKTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQw ICsgMHgxNCksIDApOwotICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50NjRfdCkoVDAgKyAw eDE4KSwgMCk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KShUMCArIDB4MUMp LCAwKTsKLSAgICBpZiAoZGNhY2hlX2xpbmVfc2l6ZSA+PSA2NCkgewotICAgICAgICBnbHVlKHN0 bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHgyMFVMKSwgMCk7Ci0gICAgICAgIGdsdWUo c3RsLCBNRU1TVUZGSVgpKCh1aW50NjRfdCkoVDAgKyAweDI0VUwpLCAwKTsKLSAgICAgICAgZ2x1 ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KShUMCArIDB4MjhVTCksIDApOwotICAgICAgICBn bHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHgyQ1VMKSwgMCk7Ci0gICAgICAg IGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50NjRfdCkoVDAgKyAweDMwVUwpLCAwKTsKLSAgICAg ICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KShUMCArIDB4MzRVTCksIDApOwotICAg ICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHgzOFVMKSwgMCk7Ci0g ICAgICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKCh1aW50NjRfdCkoVDAgKyAweDNDVUwpLCAwKTsK LSAgICAgICAgaWYgKGRjYWNoZV9saW5lX3NpemUgPj0gMTI4KSB7Ci0gICAgICAgICAgICBnbHVl KHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg0MFVMKSwgMCk7Ci0gICAgICAgICAg ICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg0NFVMKSwgMCk7Ci0gICAg ICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg0OFVMKSwgMCk7 Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg0Q1VM KSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsg MHg1MFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3Qp KFQwICsgMHg1NFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWlu dDY0X3QpKFQwICsgMHg1OFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklY KSgodWludDY0X3QpKFQwICsgMHg1Q1VMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVN U1VGRklYKSgodWludDY0X3QpKFQwICsgMHg2MFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0 bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg2NFVMKSwgMCk7Ci0gICAgICAgICAgICBn bHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg2OFVMKSwgMCk7Ci0gICAgICAg ICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg2Q1VMKSwgMCk7Ci0g ICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg3MFVMKSwg MCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQwICsgMHg3 NFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0X3QpKFQw ICsgMHg3OFVMKSwgMCk7Ci0gICAgICAgICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgodWludDY0 X3QpKFQwICsgMHg3Q1VMKSwgMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0jZW5kaWYKLQogLyog UG93ZXJQQyA2MDEgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIChQT1dFUiBicmlkZ2UpICovCiAvLyBY WFg6IHRvIGJlIHRlc3RlZAogdm9pZCBnbHVlKGRvX1BPV0VSX2xzY2J4LCBNRU1TVUZGSVgpIChp bnQgZGVzdCwgaW50IHJhLCBpbnQgcmIpCkBAIC00MDAsMjYgKzIwOSw2IEBACiAgICAgRlQxID0g Z2x1ZShsZGZxLCBNRU1TVUZGSVgpKCh1aW50MzJfdCkoVDAgKyA0KSk7CiB9CiAKLXN0YXRpYyBh bHdheXNfaW5saW5lIGRvdWJsZSBnbHVlKGxkZnFyLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcg RUEpCi17Ci0gICAgdW5pb24gewotICAgICAgICBkb3VibGUgZDsKLSAgICAgICAgdWludDY0X3Qg dTsKLSAgICB9IHU7Ci0KLSAgICB1LmQgPSBnbHVlKGxkZnEsIE1FTVNVRkZJWCkoRUEpOwotICAg IHUudSA9ICgodS51ICYgMHhGRjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgfAotICAgICAgICAo KHUudSAmIDB4MDBGRjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwKLSAgICAgICAgKCh1LnUgJiAw eDAwMDBGRjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAwMDBG RjAwMDAwMDAwVUxMKSA+PiA4KSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAwMDAwMEZGMDAwMDAw VUxMKSA8PCA4KSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAwMDAwMDAwRkYwMDAwVUxMKSA8PCAy NCkgfAotICAgICAgICAoKHUudSAmIDB4MDAwMDAwMDAwMDAwRkYwMFVMTCkgPDwgNDApIHwKLSAg ICAgICAgKCh1LnUgJiAweDAwMDAwMDAwMDAwMDAwRkZVTEwpIDw8IDU2KTsKLQotICAgIHJldHVy biB1LmQ7Ci19Ci0KIHZvaWQgZ2x1ZShkb19QT1dFUjJfbGZxX2xlLCBNRU1TVUZGSVgpICh2b2lk KQogewogICAgIEZUMCA9IGdsdWUobGRmcXIsIE1FTVNVRkZJWCkoKHVpbnQzMl90KShUMCArIDQp KTsKQEAgLTQzMiwyNSArMjIxLDYgQEAKICAgICBnbHVlKHN0ZnEsIE1FTVNVRkZJWCkoKHVpbnQz Ml90KShUMCArIDQpLCBGVDEpOwogfQogCi1zdGF0aWMgYWx3YXlzX2lubGluZSB2b2lkIGdsdWUo c3RmcXIsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSwgZG91YmxlIGQpCi17Ci0gICAgdW5p b24gewotICAgICAgICBkb3VibGUgZDsKLSAgICAgICAgdWludDY0X3QgdTsKLSAgICB9IHU7Ci0K LSAgICB1LmQgPSBkOwotICAgIHUudSA9ICgodS51ICYgMHhGRjAwMDAwMDAwMDAwMDAwVUxMKSA+ PiA1NikgfAotICAgICAgICAoKHUudSAmIDB4MDBGRjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwK LSAgICAgICAgKCh1LnUgJiAweDAwMDBGRjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8Ci0gICAgICAg ICgodS51ICYgMHgwMDAwMDBGRjAwMDAwMDAwVUxMKSA+PiA4KSB8Ci0gICAgICAgICgodS51ICYg MHgwMDAwMDAwMEZGMDAwMDAwVUxMKSA8PCA4KSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAwMDAw MDAwRkYwMDAwVUxMKSA8PCAyNCkgfAotICAgICAgICAoKHUudSAmIDB4MDAwMDAwMDAwMDAwRkYw MFVMTCkgPDwgNDApIHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDAwMDAwMDAwMDAwRkZVTEwpIDw8 IDU2KTsKLSAgICBnbHVlKHN0ZnEsIE1FTVNVRkZJWCkoRUEsIHUuZCk7Ci19Ci0KIHZvaWQgZ2x1 ZShkb19QT1dFUjJfc3RmcV9sZSwgTUVNU1VGRklYKSAodm9pZCkKIHsKICAgICBnbHVlKHN0ZnFy LCBNRU1TVUZGSVgpKCh1aW50MzJfdCkoVDAgKyA0KSwgRlQwKTsKSW5kZXg6IHRhcmdldC1wcGMv b3BfbWVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LXBwYy9vcF9tZW0uaC5vcmlnCTIwMDctMTAt MTUgMTU6NDA6MjIuMDAwMDAwMDAwICswMDAwCisrKyB0YXJnZXQtcHBjL29wX21lbS5oCTIwMDct MTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0xOCw4NSArMTgsNiBAQAogICogRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAy MTExLTEzMDcgIFVTQQogICovCiAKLXN0YXRpYyBhbHdheXNfaW5saW5lIHVpbnQxNl90IGdsdWUo bGQxNnIsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSkKLXsKLSAgICB1aW50MTZfdCB0bXAg PSBnbHVlKGxkdXcsIE1FTVNVRkZJWCkoRUEpOwotICAgIHJldHVybiAoKHRtcCAmIDB4RkYwMCkg Pj4gOCkgfCAoKHRtcCAmIDB4MDBGRikgPDwgOCk7Ci19Ci0KLXN0YXRpYyBhbHdheXNfaW5saW5l IGludDMyX3QgZ2x1ZShsZDE2cnMsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSkKLXsKLSAg ICBpbnQxNl90IHRtcCA9IGdsdWUobGR1dywgTUVNU1VGRklYKShFQSk7Ci0gICAgcmV0dXJuIChp bnQxNl90KSgodG1wICYgMHhGRjAwKSA+PiA4KSB8ICgodG1wICYgMHgwMEZGKSA8PCA4KTsKLX0K LQotc3RhdGljIGFsd2F5c19pbmxpbmUgdWludDMyX3QgZ2x1ZShsZDMyciwgTUVNU1VGRklYKSAo dGFyZ2V0X3Vsb25nIEVBKQotewotICAgIHVpbnQzMl90IHRtcCA9IGdsdWUobGRsLCBNRU1TVUZG SVgpKEVBKTsKLSAgICByZXR1cm4gKCh0bXAgJiAweEZGMDAwMDAwKSA+PiAyNCkgfCAoKHRtcCAm IDB4MDBGRjAwMDApID4+IDgpIHwKLSAgICAgICAgKCh0bXAgJiAweDAwMDBGRjAwKSA8PCA4KSB8 ICgodG1wICYgMHgwMDAwMDBGRikgPDwgMjQpOwotfQotCi0jaWYgZGVmaW5lZChUQVJHRVRfUFBD NjQpIHx8IGRlZmluZWQoVEFSR0VUX1BQQ0VNQikKLXN0YXRpYyBhbHdheXNfaW5saW5lIHVpbnQ2 NF90IGdsdWUobGQ2NHIsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSkKLXsKLSAgICB1aW50 NjRfdCB0bXAgPSBnbHVlKGxkcSwgTUVNU1VGRklYKShFQSk7Ci0gICAgcmV0dXJuICgodG1wICYg MHhGRjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgfAotICAgICAgICAoKHRtcCAmIDB4MDBGRjAw MDAwMDAwMDAwMFVMTCkgPj4gNDApIHwKLSAgICAgICAgKCh0bXAgJiAweDAwMDBGRjAwMDAwMDAw MDBVTEwpID4+IDI0KSB8Ci0gICAgICAgICgodG1wICYgMHgwMDAwMDBGRjAwMDAwMDAwVUxMKSA+ PiA4KSB8Ci0gICAgICAgICgodG1wICYgMHgwMDAwMDAwMEZGMDAwMDAwVUxMKSA8PCA4KSB8Ci0g ICAgICAgICgodG1wICYgMHgwMDAwMDAwMDAwRkYwMDAwVUxMKSA8PCAyNCkgfAotICAgICAgICAo KHRtcCAmIDB4MDAwMDAwMDAwMDAwRkYwMFVMTCkgPDwgNDApIHwKLSAgICAgICAgKCh0bXAgJiAw eDAwMDAwMDAwMDAwMDAwRkZVTEwpIDw8IDU0KTsKLX0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChU QVJHRVRfUFBDNjQpCi1zdGF0aWMgYWx3YXlzX2lubGluZSBpbnQ2NF90IGdsdWUobGRzbCwgTUVN U1VGRklYKSAodGFyZ2V0X3Vsb25nIEVBKQotewotICAgIHJldHVybiAoaW50MzJfdClnbHVlKGxk bCwgTUVNU1VGRklYKShFQSk7Ci19Ci0KLXN0YXRpYyBhbHdheXNfaW5saW5lIGludDY0X3QgZ2x1 ZShsZDMycnMsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSkKLXsKLSAgICB1aW50MzJfdCB0 bXAgPSBnbHVlKGxkbCwgTUVNU1VGRklYKShFQSk7Ci0gICAgcmV0dXJuIChpbnQzMl90KSgodG1w ICYgMHhGRjAwMDAwMCkgPj4gMjQpIHwgKCh0bXAgJiAweDAwRkYwMDAwKSA+PiA4KSB8Ci0gICAg ICAgICgodG1wICYgMHgwMDAwRkYwMCkgPDwgOCkgfCAoKHRtcCAmIDB4MDAwMDAwRkYpIDw8IDI0 KTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgYWx3YXlzX2lubGluZSB2b2lkIGdsdWUoc3QxNnIsIE1F TVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgZGF0YSkKLXsKLSAgICB1aW50MTZfdCB0bXAg PSAoKGRhdGEgJiAweEZGMDApID4+IDgpIHwgKChkYXRhICYgMHgwMEZGKSA8PCA4KTsKLSAgICBn bHVlKHN0dywgTUVNU1VGRklYKShFQSwgdG1wKTsKLX0KLQotc3RhdGljIGFsd2F5c19pbmxpbmUg dm9pZCBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGEpCi17 Ci0gICAgdWludDMyX3QgdG1wID0gKChkYXRhICYgMHhGRjAwMDAwMCkgPj4gMjQpIHwgKChkYXRh ICYgMHgwMEZGMDAwMCkgPj4gOCkgfAotICAgICAgICAoKGRhdGEgJiAweDAwMDBGRjAwKSA8PCA4 KSB8ICgoZGF0YSAmIDB4MDAwMDAwRkYpIDw8IDI0KTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklY KShFQSwgdG1wKTsKLX0KLQotI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KSB8fCBkZWZpbmVkKFRB UkdFVF9QUENFTUIpCi1zdGF0aWMgYWx3YXlzX2lubGluZSB2b2lkIGdsdWUoc3Q2NHIsIE1FTVNV RkZJWCkgKHRhcmdldF91bG9uZyBFQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSkKLXsKLSAgICB1aW50NjRfdCB0bXAgPSAo KGRhdGEgJiAweEZGMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSB8Ci0gICAgICAgICgoZGF0YSAm IDB4MDBGRjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwKLSAgICAgICAgKChkYXRhICYgMHgwMDAw RkYwMDAwMDAwMDAwVUxMKSA+PiAyNCkgfAotICAgICAgICAoKGRhdGEgJiAweDAwMDAwMEZGMDAw MDAwMDBVTEwpID4+IDgpIHwKLSAgICAgICAgKChkYXRhICYgMHgwMDAwMDAwMEZGMDAwMDAwVUxM KSA8PCA4KSB8Ci0gICAgICAgICgoZGF0YSAmIDB4MDAwMDAwMDAwMEZGMDAwMFVMTCkgPDwgMjQp IHwKLSAgICAgICAgKChkYXRhICYgMHgwMDAwMDAwMDAwMDBGRjAwVUxMKSA8PCA0MCkgfAotICAg ICAgICAoKGRhdGEgJiAweDAwMDAwMDAwMDAwMDAwRkZVTEwpIDw8IDU2KTsKLSAgICBnbHVlKHN0 cSwgTUVNU1VGRklYKShFQSwgdG1wKTsKLX0KLSNlbmRpZgotCiAvKioqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbnRlZ2VyIGxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq KiovCiAjZGVmaW5lIFBQQ19MRF9PUChuYW1lLCBvcCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB2b2lkIE9QUFJPVE8gZ2x1ZShnbHVlKG9wX2ws IG5hbWUpLCBNRU1TVUZGSVgpICh2b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0x MzAsMTAgKzUxLDExIEBACiB9CiAjZW5kaWYKIAorLyogTmF0aXZlLWVuZGlhbiBmaXhlZC1wb2lu dCBtZW1vcnkgbG9hZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogUFBD X0xEX09QKGJ6LCBsZHViKTsKIFBQQ19MRF9PUChoYSwgbGRzdyk7CiBQUENfTERfT1AoaHosIGxk dXcpOwotUFBDX0xEX09QKHd6LCBsZGwpOworUFBDX0xEX09QKHd6LCBsZHVsKTsKICNpZiBkZWZp bmVkKFRBUkdFVF9QUEM2NCkKIFBQQ19MRF9PUChkLCBsZHEpOwogUFBDX0xEX09QKHdhLCBsZHNs KTsKQEAgLTE0MiwyMyArNjQsMjQgQEAKIFBQQ19MRF9PUF82NChieiwgbGR1Yik7CiBQUENfTERf T1BfNjQoaGEsIGxkc3cpOwogUFBDX0xEX09QXzY0KGh6LCBsZHV3KTsKLVBQQ19MRF9PUF82NCh3 eiwgbGRsKTsKK1BQQ19MRF9PUF82NCh3eiwgbGR1bCk7CiAjZW5kaWYKIAotUFBDX0xEX09QKGhh X2xlLCBsZDE2cnMpOwotUFBDX0xEX09QKGh6X2xlLCBsZDE2cik7Ci1QUENfTERfT1Aod3pfbGUs IGxkMzJyKTsKKy8qIFJldmVyc2UtZW5kaWFuIGZpeGVkLXBvaW50IG1lbW9yeSBsb2FkcyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK1BQQ19MRF9PUChoYV9sZSwgbGRzd3Ip OworUFBDX0xEX09QKGh6X2xlLCBsZHV3cik7CitQUENfTERfT1Aod3pfbGUsIGxkdWxyKTsKICNp ZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLVBQQ19MRF9PUChkX2xlLCBsZDY0cik7Ci1QUENfTERf T1Aod2FfbGUsIGxkMzJycyk7Ci1QUENfTERfT1BfNjQoZF9sZSwgbGQ2NHIpOwotUFBDX0xEX09Q XzY0KHdhX2xlLCBsZDMycnMpOwotUFBDX0xEX09QXzY0KGhhX2xlLCBsZDE2cnMpOwotUFBDX0xE X09QXzY0KGh6X2xlLCBsZDE2cik7Ci1QUENfTERfT1BfNjQod3pfbGUsIGxkMzJyKTsKK1BQQ19M RF9PUChkX2xlLCBsZHFyKTsKK1BQQ19MRF9PUCh3YV9sZSwgbGRzbHIpOworUFBDX0xEX09QXzY0 KGRfbGUsIGxkcXIpOworUFBDX0xEX09QXzY0KHdhX2xlLCBsZHNscik7CitQUENfTERfT1BfNjQo aGFfbGUsIGxkc3dyKTsKK1BQQ19MRF9PUF82NChoel9sZSwgbGR1d3IpOworUFBDX0xEX09QXzY0 KHd6X2xlLCBsZHVscik7CiAjZW5kaWYKIAotLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEludGVnZXIgc3RvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworLyogTmF0 aXZlLWVuZGlhbiBmaXhlZC1wb2ludCBtZW1vcnkgc3RvcmVzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqLwogUFBDX1NUX09QKGIsIHN0Yik7CiBQUENfU1RfT1AoaCwgc3R3KTsK IFBQQ19TVF9PUCh3LCBzdGwpOwpAQCAtMTcwLDEyMCArOTMsMTEwIEBACiBQUENfU1RfT1BfNjQo dywgc3RsKTsKICNlbmRpZgogCi1QUENfU1RfT1AoaF9sZSwgc3QxNnIpOwotUFBDX1NUX09QKHdf bGUsIHN0MzJyKTsKKy8qIFJldmVyc2UtZW5kaWFuIGZpeGVkLXBvaW50IG1lbW9yeSBzdG9yZXMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK1BQQ19TVF9PUChoX2xlLCBzdHdy KTsKK1BQQ19TVF9PUCh3X2xlLCBzdGxyKTsKKyNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKK1BQ Q19TVF9PUChkX2xlLCBzdHFyKTsKK1BQQ19TVF9PUF82NChkX2xlLCBzdHFyKTsKK1BQQ19TVF9P UF82NChoX2xlLCBzdHdyKTsKK1BQQ19TVF9PUF82NCh3X2xlLCBzdGxyKTsKKyNlbmRpZgorCisv KiBOYXRpdmUtZW5kaWFuIGZpeGVkLXBvaW50IGxvYWRzIGFuZCBzdG9yZXMgd2l0aCBieXRlLXJl dmVyc2UgICAgICAgICAgICAgICovCitQUENfTERfT1AoaGJyLCBsZHV3cik7CitQUENfTERfT1Ao d2JyLCBsZHVscik7CitQUENfU1RfT1AoaGJyLCBzdHdyKTsKK1BQQ19TVF9PUCh3YnIsIHN0bHIp OwogI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQotUFBDX1NUX09QKGRfbGUsIHN0NjRyKTsKLVBQ Q19TVF9PUF82NChkX2xlLCBzdDY0cik7Ci1QUENfU1RfT1BfNjQoaF9sZSwgc3QxNnIpOwotUFBD X1NUX09QXzY0KHdfbGUsIHN0MzJyKTsKLSNlbmRpZgotCi0vKioqICAgICAgICAgICAgICAgIElu dGVnZXIgbG9hZCBhbmQgc3RvcmUgd2l0aCBieXRlIHJldmVyc2UgICAgICAgICAgICAgICAqKiov Ci1QUENfTERfT1AoaGJyLCBsZDE2cik7Ci1QUENfTERfT1Aod2JyLCBsZDMycik7Ci1QUENfU1Rf T1AoaGJyLCBzdDE2cik7Ci1QUENfU1RfT1Aod2JyLCBzdDMycik7Ci0jaWYgZGVmaW5lZChUQVJH RVRfUFBDNjQpCi1QUENfTERfT1BfNjQoaGJyLCBsZDE2cik7Ci1QUENfTERfT1BfNjQod2JyLCBs ZDMycik7Ci1QUENfU1RfT1BfNjQoaGJyLCBzdDE2cik7Ci1QUENfU1RfT1BfNjQod2JyLCBzdDMy cik7CitQUENfTERfT1BfNjQoaGJyLCBsZHV3cik7CitQUENfTERfT1BfNjQod2JyLCBsZHVscik7 CitQUENfU1RfT1BfNjQoaGJyLCBzdHdyKTsKK1BQQ19TVF9PUF82NCh3YnIsIHN0bHIpOwogI2Vu ZGlmCiAKKy8qIFJldmVyc2UtZW5kaWFuIGZpeGVkLXBvaW50IGxvYWRzIGFuZCBzdG9yZXMgd2l0 aCBieXRlLXJldmVyc2UgICAgICAgICAgICAgKi8KIFBQQ19MRF9PUChoYnJfbGUsIGxkdXcpOwot UFBDX0xEX09QKHdicl9sZSwgbGRsKTsKK1BQQ19MRF9PUCh3YnJfbGUsIGxkdWwpOwogUFBDX1NU X09QKGhicl9sZSwgc3R3KTsKIFBQQ19TVF9PUCh3YnJfbGUsIHN0bCk7CiAjaWYgZGVmaW5lZChU QVJHRVRfUFBDNjQpCiBQUENfTERfT1BfNjQoaGJyX2xlLCBsZHV3KTsKLVBQQ19MRF9PUF82NCh3 YnJfbGUsIGxkbCk7CitQUENfTERfT1BfNjQod2JyX2xlLCBsZHVsKTsKIFBQQ19TVF9PUF82NCho YnJfbGUsIHN0dyk7CiBQUENfU1RfT1BfNjQod2JyX2xlLCBzdGwpOwogI2VuZGlmCiAKLS8qKiog ICAgICAgICAgICAgICAgICAgIEludGVnZXIgbG9hZCBhbmQgc3RvcmUgbXVsdGlwbGUgICAgICAg ICAgICAgICAgICAgICoqKi8KKy8qIE5hdGl2ZS1lbmRpYW4gZml4ZWQtcG9pbnQgbG9hZHMgYW5k IHN0b3JlcyBtdWx0aXBsZSAgICAgICAgICAgICAgICAgICAgICAgKi8KIHZvaWQgT1BQUk9UTyBn bHVlKG9wX2xtdywgTUVNU1VGRklYKSAodm9pZCkKIHsKKyAgICBUMCA9ICh1aW50MzJfdClUMDsK ICAgICBnbHVlKGRvX2xtdywgTUVNU1VGRklYKShQQVJBTTEpOwogICAgIFJFVFVSTigpOwogfQog Ci0jaWYgZGVmaW5lZChUQVJHRVRfUFBDNjQpCi12b2lkIE9QUFJPVE8gZ2x1ZShvcF9sbXdfNjQs IE1FTVNVRkZJWCkgKHZvaWQpCi17Ci0gICAgZ2x1ZShkb19sbXdfNjQsIE1FTVNVRkZJWCkoUEFS QU0xKTsKLSAgICBSRVRVUk4oKTsKLX0KLSNlbmRpZgotCi12b2lkIE9QUFJPVE8gZ2x1ZShvcF9s bXdfbGUsIE1FTVNVRkZJWCkgKHZvaWQpCit2b2lkIE9QUFJPVE8gZ2x1ZShvcF9zdG13LCBNRU1T VUZGSVgpICh2b2lkKQogewotICAgIGdsdWUoZG9fbG13X2xlLCBNRU1TVUZGSVgpKFBBUkFNMSk7 CisgICAgVDAgPSAodWludDMyX3QpVDA7CisgICAgZ2x1ZShkb19zdG13LCBNRU1TVUZGSVgpKFBB UkFNMSk7CiAgICAgUkVUVVJOKCk7CiB9CiAKICNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLXZv aWQgT1BQUk9UTyBnbHVlKG9wX2xtd19sZV82NCwgTUVNU1VGRklYKSAodm9pZCkKK3ZvaWQgT1BQ Uk9UTyBnbHVlKG9wX2xtd182NCwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBnbHVlKGRvX2xt d19sZV82NCwgTUVNU1VGRklYKShQQVJBTTEpOworICAgIGdsdWUoZG9fbG13LCBNRU1TVUZGSVgp KFBBUkFNMSk7CiAgICAgUkVUVVJOKCk7CiB9Ci0jZW5kaWYKIAotdm9pZCBPUFBST1RPIGdsdWUo b3Bfc3RtdywgTUVNU1VGRklYKSAodm9pZCkKK3ZvaWQgT1BQUk9UTyBnbHVlKG9wX3N0bXdfNjQs IE1FTVNVRkZJWCkgKHZvaWQpCiB7CiAgICAgZ2x1ZShkb19zdG13LCBNRU1TVUZGSVgpKFBBUkFN MSk7CiAgICAgUkVUVVJOKCk7CiB9CisjZW5kaWYKIAotI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0 KQotdm9pZCBPUFBST1RPIGdsdWUob3Bfc3Rtd182NCwgTUVNU1VGRklYKSAodm9pZCkKKy8qIFJl dmVyc2UtZW5kaWFuIGZpeGVkLXBvaW50IGxvYWRzIGFuZCBzdG9yZXMgbXVsdGlwbGUgICAgICAg ICAgICAgICAgICAgICAgKi8KK3ZvaWQgT1BQUk9UTyBnbHVlKG9wX2xtd19sZSwgTUVNU1VGRklY KSAodm9pZCkKIHsKLSAgICBnbHVlKGRvX3N0bXdfNjQsIE1FTVNVRkZJWCkoUEFSQU0xKTsKKyAg ICBUMCA9ICh1aW50MzJfdClUMDsKKyAgICBnbHVlKGRvX2xtd19sZSwgTUVNU1VGRklYKShQQVJB TTEpOwogICAgIFJFVFVSTigpOwogfQotI2VuZGlmCiAKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX3N0 bXdfbGUsIE1FTVNVRkZJWCkgKHZvaWQpCiB7CisgICAgVDAgPSAodWludDMyX3QpVDA7CiAgICAg Z2x1ZShkb19zdG13X2xlLCBNRU1TVUZGSVgpKFBBUkFNMSk7CiAgICAgUkVUVVJOKCk7CiB9CiAK ICNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLXZvaWQgT1BQUk9UTyBnbHVlKG9wX3N0bXdfbGVf NjQsIE1FTVNVRkZJWCkgKHZvaWQpCi17Ci0gICAgZ2x1ZShkb19zdG13X2xlXzY0LCBNRU1TVUZG SVgpKFBBUkFNMSk7Ci0gICAgUkVUVVJOKCk7Ci19Ci0jZW5kaWYKLQotLyoqKiAgICAgICAgICAg ICAgICAgICAgSW50ZWdlciBsb2FkIGFuZCBzdG9yZSBzdHJpbmdzICAgICAgICAgICAgICAgICAg ICAgKioqLwotdm9pZCBPUFBST1RPIGdsdWUob3BfbHN3aSwgTUVNU1VGRklYKSAodm9pZCkKK3Zv aWQgT1BQUk9UTyBnbHVlKG9wX2xtd19sZV82NCwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBn bHVlKGRvX2xzdywgTUVNU1VGRklYKShQQVJBTTEpOworICAgIGdsdWUoZG9fbG13X2xlLCBNRU1T VUZGSVgpKFBBUkFNMSk7CiAgICAgUkVUVVJOKCk7CiB9CiAKLSNpZiBkZWZpbmVkKFRBUkdFVF9Q UEM2NCkKLXZvaWQgT1BQUk9UTyBnbHVlKG9wX2xzd2lfNjQsIE1FTVNVRkZJWCkgKHZvaWQpCit2 b2lkIE9QUFJPVE8gZ2x1ZShvcF9zdG13X2xlXzY0LCBNRU1TVUZGSVgpICh2b2lkKQogewotICAg IGdsdWUoZG9fbHN3XzY0LCBNRU1TVUZGSVgpKFBBUkFNMSk7CisgICAgZ2x1ZShkb19zdG13X2xl LCBNRU1TVUZGSVgpKFBBUkFNMSk7CiAgICAgUkVUVVJOKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBP UFBST1RPIGdsdWUob3BfbHN3aV9sZSwgTUVNU1VGRklYKSAodm9pZCkKKy8qIE5hdGl2ZS1lbmRp YW4gbG9hZHMgYW5kIHN0b3JlcyBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKi8KK3ZvaWQgT1BQUk9UTyBnbHVlKG9wX2xzd2ksIE1FTVNVRkZJWCkgKHZvaWQpCiB7 Ci0gICAgZ2x1ZShkb19sc3dfbGUsIE1FTVNVRkZJWCkoUEFSQU0xKTsKKyAgICBnbHVlKGRvX2xz dywgTUVNU1VGRklYKShQQVJBTTEpOwogICAgIFJFVFVSTigpOwogfQogCiAjaWYgZGVmaW5lZChU QVJHRVRfUFBDNjQpCi12b2lkIE9QUFJPVE8gZ2x1ZShvcF9sc3dpX2xlXzY0LCBNRU1TVUZGSVgp ICh2b2lkKQordm9pZCBPUFBST1RPIGdsdWUob3BfbHN3aV82NCwgTUVNU1VGRklYKSAodm9pZCkK IHsKLSAgICBnbHVlKGRvX2xzd19sZV82NCwgTUVNU1VGRklYKShQQVJBTTEpOworICAgIFQwID0g KHVpbnQzMl90KVQwOworICAgIGdsdWUoZG9fbHN3LCBNRU1TVUZGSVgpKFBBUkFNMSk7CiAgICAg UkVUVVJOKCk7CiB9CiAjZW5kaWYKQEAgLTMwMyw2ICsyMTYsNyBAQAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQT1dFUlBDX0VYQ1BfSU5WQUwgfAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQT1dFUlBDX0VYQ1BfSU5WQUxfTFNXWCk7CiAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICBUMCA9ICh1aW50MzJfdClUMDsKICAgICAgICAgICAgIGdsdWUo ZG9fbHN3LCBNRU1TVUZGSVgpKFBBUkFNMSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjAsMTMg KzIzNCw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1dFUlBDX0VY Q1BfSU5WQUwgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1dFUlBDX0VY Q1BfSU5WQUxfTFNXWCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBnbHVlKGRvX2xz d182NCwgTUVNU1VGRklYKShQQVJBTTEpOworICAgICAgICAgICAgZ2x1ZShkb19sc3csIE1FTVNV RkZJWCkoUEFSQU0xKTsKICAgICAgICAgfQogICAgIH0KICAgICBSRVRVUk4oKTsKIH0KICNlbmRp ZgogCit2b2lkIE9QUFJPVE8gZ2x1ZShvcF9zdHN3LCBNRU1TVUZGSVgpICh2b2lkKQoreworICAg IFQwID0gKHVpbnQzMl90KVQwOworICAgIGdsdWUoZG9fc3RzdywgTUVNU1VGRklYKShQQVJBTTEp OworICAgIFJFVFVSTigpOworfQorCisjaWYgZGVmaW5lZChUQVJHRVRfUFBDNjQpCit2b2lkIE9Q UFJPVE8gZ2x1ZShvcF9zdHN3XzY0LCBNRU1TVUZGSVgpICh2b2lkKQoreworICAgIGdsdWUoZG9f c3RzdywgTUVNU1VGRklYKShQQVJBTTEpOworICAgIFJFVFVSTigpOworfQorI2VuZGlmCisKKy8q IFJldmVyc2UtZW5kaWFuIGxvYWRzIGFuZCBzdG9yZXMgc3RyaW5nICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KK3ZvaWQgT1BQUk9UTyBnbHVlKG9wX2xzd2lfbGUsIE1FTVNV RkZJWCkgKHZvaWQpCit7CisgICAgVDAgPSAodWludDMyX3QpVDA7CisgICAgZ2x1ZShkb19sc3df bGUsIE1FTVNVRkZJWCkoUEFSQU0xKTsKKyAgICBSRVRVUk4oKTsKK30KKworI2lmIGRlZmluZWQo VEFSR0VUX1BQQzY0KQordm9pZCBPUFBST1RPIGdsdWUob3BfbHN3aV9sZV82NCwgTUVNU1VGRklY KSAodm9pZCkKK3sKKyAgICBnbHVlKGRvX2xzd19sZSwgTUVNU1VGRklYKShQQVJBTTEpOworICAg IFJFVFVSTigpOworfQorI2VuZGlmCisKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX2xzd3hfbGUsIE1F TVNVRkZJWCkgKHZvaWQpCiB7CiAgICAgLyogTm90ZTogVDEgY29tZXMgZnJvbSB4ZXJfYmMgdGhl biBubyBjYXN0IGlzIG5lZWRlZCAqLwpAQCAtMzM3LDYgKzI4Miw3IEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBPV0VSUENfRVhDUF9JTlZBTCB8CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBPV0VSUENfRVhDUF9JTlZBTF9MU1dYKTsKICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIFQwID0gKHVpbnQzMl90KVQwOwogICAgICAgICAgICAgZ2x1 ZShkb19sc3dfbGUsIE1FTVNVRkZJWCkoUEFSQU0xKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM1 NCwyOSArMzAwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBPV0VS UENfRVhDUF9JTlZBTCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBPV0VS UENfRVhDUF9JTlZBTF9MU1dYKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGdsdWUo ZG9fbHN3X2xlXzY0LCBNRU1TVUZGSVgpKFBBUkFNMSk7CisgICAgICAgICAgICBnbHVlKGRvX2xz d19sZSwgTUVNU1VGRklYKShQQVJBTTEpOwogICAgICAgICB9CiAgICAgfQogICAgIFJFVFVSTigp OwogfQogI2VuZGlmCiAKLXZvaWQgT1BQUk9UTyBnbHVlKG9wX3N0c3csIE1FTVNVRkZJWCkgKHZv aWQpCi17Ci0gICAgZ2x1ZShkb19zdHN3LCBNRU1TVUZGSVgpKFBBUkFNMSk7Ci0gICAgUkVUVVJO KCk7Ci19Ci0KLSNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkKLXZvaWQgT1BQUk9UTyBnbHVlKG9w X3N0c3dfNjQsIE1FTVNVRkZJWCkgKHZvaWQpCi17Ci0gICAgZ2x1ZShkb19zdHN3XzY0LCBNRU1T VUZGSVgpKFBBUkFNMSk7Ci0gICAgUkVUVVJOKCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBPUFBST1RP IGdsdWUob3Bfc3Rzd19sZSwgTUVNU1VGRklYKSAodm9pZCkKIHsKKyAgICBUMCA9ICh1aW50MzJf dClUMDsKICAgICBnbHVlKGRvX3N0c3dfbGUsIE1FTVNVRkZJWCkoUEFSQU0xKTsKICAgICBSRVRV Uk4oKTsKIH0KQEAgLTM4NCw3ICszMTcsNyBAQAogI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQog dm9pZCBPUFBST1RPIGdsdWUob3Bfc3Rzd19sZV82NCwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAg ICBnbHVlKGRvX3N0c3dfbGVfNjQsIE1FTVNVRkZJWCkoUEFSQU0xKTsKKyAgICBnbHVlKGRvX3N0 c3dfbGUsIE1FTVNVRkZJWCkoUEFSQU0xKTsKICAgICBSRVRVUk4oKTsKIH0KICNlbmRpZgpAQCAt NDMyLDM4ICszNjUsOSBAQAogUFBDX1NURl9PUF82NChmaXd4LCBzdGZpd3gpOwogI2VuZGlmCiAK LXN0YXRpYyBhbHdheXNfaW5saW5lIHZvaWQgZ2x1ZShzdGZxciwgTUVNU1VGRklYKSAodGFyZ2V0 X3Vsb25nIEVBLCBkb3VibGUgZCkKLXsKLSAgICB1bmlvbiB7Ci0gICAgICAgIGRvdWJsZSBkOwot ICAgICAgICB1aW50NjRfdCB1OwotICAgIH0gdTsKLQotICAgIHUuZCA9IGQ7Ci0gICAgdS51ID0g KCh1LnUgJiAweEZGMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSB8Ci0gICAgICAgICgodS51ICYg MHgwMEZGMDAwMDAwMDAwMDAwVUxMKSA+PiA0MCkgfAotICAgICAgICAoKHUudSAmIDB4MDAwMEZG MDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDAwMEZGMDAwMDAw MDBVTEwpID4+IDgpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDAwMDAwRkYwMDAwMDBVTEwpIDw8 IDgpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDAwMDAwMDBGRjAwMDBVTEwpIDw8IDI0KSB8Ci0g ICAgICAgICgodS51ICYgMHgwMDAwMDAwMDAwMDBGRjAwVUxMKSA8PCA0MCkgfAotICAgICAgICAo KHUudSAmIDB4MDAwMDAwMDAwMDAwMDBGRlVMTCkgPDwgNTYpOwotICAgIGdsdWUoc3RmcSwgTUVN U1VGRklYKShFQSwgdS5kKTsKLX0KLQogc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBnbHVlKHN0 ZnNyLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEsIGRvdWJsZSBkKQogewotICAgIHVuaW9u IHsKLSAgICAgICAgZmxvYXQgZjsKLSAgICAgICAgdWludDMyX3QgdTsKLSAgICB9IHU7Ci0KLSAg ICB1LmYgPSBmbG9hdDY0X3RvX2Zsb2F0MzIoZCwgJmVudi0+ZnBfc3RhdHVzKTsKLSAgICB1LnUg PSAoKHUudSAmIDB4RkYwMDAwMDBVTCkgPj4gMjQpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwRkYw MDAwVUxMKSA+PiA4KSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAwRkYwMFVMKSA8PCA4KSB8Ci0g ICAgICAgICgodS51ICYgMHgwMDAwMDBGRlVMTCkgPDwgMjQpOwotICAgIGdsdWUoc3RmbCwgTUVN U1VGRklYKShFQSwgdS5mKTsKKyAgICBnbHVlKHN0ZmxyLCBNRU1TVUZGSVgpKEVBLCBmbG9hdDY0 X3RvX2Zsb2F0MzIoZCwgJmVudi0+ZnBfc3RhdHVzKSk7CiB9CiAKIHN0YXRpYyBhbHdheXNfaW5s aW5lIHZvaWQgZ2x1ZShzdGZpd3hyLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEsIGRvdWJs ZSBkKQpAQCAtNDc1LDExICszNzksNyBAQAogCiAgICAgLyogU3RvcmUgdGhlIGxvdyBvcmRlciAz MiBiaXRzIHdpdGhvdXQgYW55IGNvbnZlcnNpb24gKi8KICAgICB1LmQgPSBkOwotICAgIHUudSA9 ICgodS51ICYgMHhGRjAwMDAwMFVMKSA+PiAyNCkgfAotICAgICAgICAoKHUudSAmIDB4MDBGRjAw MDBVTEwpID4+IDgpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDBGRjAwVUwpIDw8IDgpIHwKLSAg ICAgICAgKCh1LnUgJiAweDAwMDAwMEZGVUxMKSA8PCAyNCk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNV RkZJWCkoRUEsIHUudSk7CisgICAgZ2x1ZShzdGxyLCBNRU1TVUZGSVgpKEVBLCB1LnUpOwogfQog CiBQUENfU1RGX09QKGZkX2xlLCBzdGZxcik7CkBAIC01MjAsNDAgKzQyMCw5IEBACiBQUENfTERG X09QXzY0KGZzLCBsZGZzKTsKICNlbmRpZgogCi1zdGF0aWMgYWx3YXlzX2lubGluZSBkb3VibGUg Z2x1ZShsZGZxciwgTUVNU1VGRklYKSAodGFyZ2V0X3Vsb25nIEVBKQotewotICAgIHVuaW9uIHsK LSAgICAgICAgZG91YmxlIGQ7Ci0gICAgICAgIHVpbnQ2NF90IHU7Ci0gICAgfSB1OwotCi0gICAg dS5kID0gZ2x1ZShsZGZxLCBNRU1TVUZGSVgpKEVBKTsKLSAgICB1LnUgPSAoKHUudSAmIDB4RkYw MDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwRkYwMDAwMDAw MDAwMDBVTEwpID4+IDQwKSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAwRkYwMDAwMDAwMDAwVUxM KSA+PiAyNCkgfAotICAgICAgICAoKHUudSAmIDB4MDAwMDAwRkYwMDAwMDAwMFVMTCkgPj4gOCkg fAotICAgICAgICAoKHUudSAmIDB4MDAwMDAwMDBGRjAwMDAwMFVMTCkgPDwgOCkgfAotICAgICAg ICAoKHUudSAmIDB4MDAwMDAwMDAwMEZGMDAwMFVMTCkgPDwgMjQpIHwKLSAgICAgICAgKCh1LnUg JiAweDAwMDAwMDAwMDAwMEZGMDBVTEwpIDw8IDQwKSB8Ci0gICAgICAgICgodS51ICYgMHgwMDAw MDAwMDAwMDAwMEZGVUxMKSA8PCA1Nik7Ci0KLSAgICByZXR1cm4gdS5kOwotfQotCiBzdGF0aWMg YWx3YXlzX2lubGluZSBkb3VibGUgZ2x1ZShsZGZzciwgTUVNU1VGRklYKSAodGFyZ2V0X3Vsb25n IEVBKQogewotICAgIHVuaW9uIHsKLSAgICAgICAgZmxvYXQgZjsKLSAgICAgICAgdWludDMyX3Qg dTsKLSAgICB9IHU7Ci0KLSAgICB1LmYgPSBnbHVlKGxkZmwsIE1FTVNVRkZJWCkoRUEpOwotICAg IHUudSA9ICgodS51ICYgMHhGRjAwMDAwMFVMKSA+PiAyNCkgfAotICAgICAgICAoKHUudSAmIDB4 MDBGRjAwMDBVTEwpID4+IDgpIHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDBGRjAwVUwpIDw8IDgp IHwKLSAgICAgICAgKCh1LnUgJiAweDAwMDAwMEZGVUxMKSA8PCAyNCk7Ci0KLSAgICByZXR1cm4g ZmxvYXQzMl90b19mbG9hdDY0KHUuZiwgJmVudi0+ZnBfc3RhdHVzKTsKKyAgICByZXR1cm4gZmxv YXQzMl90b19mbG9hdDY0KGdsdWUobGRmbHIsIE1FTVNVRkZJWCkoRUEpLCAmZW52LT5mcF9zdGF0 dXMpOwogfQogCiBQUENfTERGX09QKGZkX2xlLCBsZGZxcik7CkBAIC01NjksNyArNDM4LDcgQEAK ICAgICBpZiAodW5saWtlbHkoVDAgJiAweDAzKSkgewogICAgICAgICBkb19yYWlzZV9leGNlcHRp b24oUE9XRVJQQ19FWENQX0FMSUdOKTsKICAgICB9IGVsc2UgewotICAgICAgICBUMSA9IGdsdWUo bGRsLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCk7CisgICAgICAgIFQxID0gZ2x1ZShsZHVsLCBN RU1TVUZGSVgpKCh1aW50MzJfdClUMCk7CiAgICAgICAgIGVudi0+cmVzZXJ2ZSA9ICh1aW50MzJf dClUMDsKICAgICB9CiAgICAgUkVUVVJOKCk7CkBAIC01ODEsNyArNDUwLDcgQEAKICAgICBpZiAo dW5saWtlbHkoVDAgJiAweDAzKSkgewogICAgICAgICBkb19yYWlzZV9leGNlcHRpb24oUE9XRVJQ Q19FWENQX0FMSUdOKTsKICAgICB9IGVsc2UgewotICAgICAgICBUMSA9IGdsdWUobGRsLCBNRU1T VUZGSVgpKCh1aW50NjRfdClUMCk7CisgICAgICAgIFQxID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgp KCh1aW50NjRfdClUMCk7CiAgICAgICAgIGVudi0+cmVzZXJ2ZSA9ICh1aW50NjRfdClUMDsKICAg ICB9CiAgICAgUkVUVVJOKCk7CkBAIC02MTUsNyArNDg0LDcgQEAKICAgICBpZiAodW5saWtlbHko VDAgJiAweDAzKSkgewogICAgICAgICBkb19yYWlzZV9leGNlcHRpb24oUE9XRVJQQ19FWENQX0FM SUdOKTsKICAgICB9IGVsc2UgewotICAgICAgICBUMSA9IGdsdWUobGQzMnIsIE1FTVNVRkZJWCko KHVpbnQzMl90KVQwKTsKKyAgICAgICAgVDEgPSBnbHVlKGxkdWxyLCBNRU1TVUZGSVgpKCh1aW50 MzJfdClUMCk7CiAgICAgICAgIGVudi0+cmVzZXJ2ZSA9ICh1aW50MzJfdClUMDsKICAgICB9CiAg ICAgUkVUVVJOKCk7CkBAIC02MjcsNyArNDk2LDcgQEAKICAgICBpZiAodW5saWtlbHkoVDAgJiAw eDAzKSkgewogICAgICAgICBkb19yYWlzZV9leGNlcHRpb24oUE9XRVJQQ19FWENQX0FMSUdOKTsK ICAgICB9IGVsc2UgewotICAgICAgICBUMSA9IGdsdWUobGQzMnIsIE1FTVNVRkZJWCkoKHVpbnQ2 NF90KVQwKTsKKyAgICAgICAgVDEgPSBnbHVlKGxkdWxyLCBNRU1TVUZGSVgpKCh1aW50NjRfdClU MCk7CiAgICAgICAgIGVudi0+cmVzZXJ2ZSA9ICh1aW50NjRfdClUMDsKICAgICB9CiAgICAgUkVU VVJOKCk7CkBAIC02MzgsNyArNTA3LDcgQEAKICAgICBpZiAodW5saWtlbHkoVDAgJiAweDAzKSkg ewogICAgICAgICBkb19yYWlzZV9leGNlcHRpb24oUE9XRVJQQ19FWENQX0FMSUdOKTsKICAgICB9 IGVsc2UgewotICAgICAgICBUMSA9IGdsdWUobGQ2NHIsIE1FTVNVRkZJWCkoKHVpbnQzMl90KVQw KTsKKyAgICAgICAgVDEgPSBnbHVlKGxkcXIsIE1FTVNVRkZJWCkoKHVpbnQzMl90KVQwKTsKICAg ICAgICAgZW52LT5yZXNlcnZlID0gKHVpbnQzMl90KVQwOwogICAgIH0KICAgICBSRVRVUk4oKTsK QEAgLTY0OSw3ICs1MTgsNyBAQAogICAgIGlmICh1bmxpa2VseShUMCAmIDB4MDMpKSB7CiAgICAg ICAgIGRvX3JhaXNlX2V4Y2VwdGlvbihQT1dFUlBDX0VYQ1BfQUxJR04pOwogICAgIH0gZWxzZSB7 Ci0gICAgICAgIFQxID0gZ2x1ZShsZDY0ciwgTUVNU1VGRklYKSgodWludDY0X3QpVDApOworICAg ICAgICBUMSA9IGdsdWUobGRxciwgTUVNU1VGRklYKSgodWludDY0X3QpVDApOwogICAgICAgICBl bnYtPnJlc2VydmUgPSAodWludDY0X3QpVDA7CiAgICAgfQogICAgIFJFVFVSTigpOwpAQCAtNzMx LDcgKzYwMCw3IEBACiAgICAgICAgIGlmICh1bmxpa2VseShlbnYtPnJlc2VydmUgIT0gKHVpbnQz Ml90KVQwKSkgewogICAgICAgICAgICAgZW52LT5jcmZbMF0gPSB4ZXJfc287CiAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCwg VDEpOworICAgICAgICAgICAgZ2x1ZShzdGxyLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCwgVDEp OwogICAgICAgICAgICAgZW52LT5jcmZbMF0gPSB4ZXJfc28gfCAweDAyOwogICAgICAgICB9CiAg ICAgfQpAQCAtNzQ4LDcgKzYxNyw3IEBACiAgICAgICAgIGlmICh1bmxpa2VseShlbnYtPnJlc2Vy dmUgIT0gKHVpbnQ2NF90KVQwKSkgewogICAgICAgICAgICAgZW52LT5jcmZbMF0gPSB4ZXJfc287 CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKCh1 aW50NjRfdClUMCwgVDEpOworICAgICAgICAgICAgZ2x1ZShzdGxyLCBNRU1TVUZGSVgpKCh1aW50 NjRfdClUMCwgVDEpOwogICAgICAgICAgICAgZW52LT5jcmZbMF0gPSB4ZXJfc28gfCAweDAyOwog ICAgICAgICB9CiAgICAgfQpAQCAtNzY0LDcgKzYzMyw3IEBACiAgICAgICAgIGlmICh1bmxpa2Vs eShlbnYtPnJlc2VydmUgIT0gKHVpbnQzMl90KVQwKSkgewogICAgICAgICAgICAgZW52LT5jcmZb MF0gPSB4ZXJfc287CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBnbHVlKHN0NjRyLCBN RU1TVUZGSVgpKCh1aW50MzJfdClUMCwgVDEpOworICAgICAgICAgICAgZ2x1ZShzdHFyLCBNRU1T VUZGSVgpKCh1aW50MzJfdClUMCwgVDEpOwogICAgICAgICAgICAgZW52LT5jcmZbMF0gPSB4ZXJf c28gfCAweDAyOwogICAgICAgICB9CiAgICAgfQpAQCAtNzgwLDcgKzY0OSw3IEBACiAgICAgICAg IGlmICh1bmxpa2VseShlbnYtPnJlc2VydmUgIT0gKHVpbnQ2NF90KVQwKSkgewogICAgICAgICAg ICAgZW52LT5jcmZbMF0gPSB4ZXJfc287CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBn bHVlKHN0NjRyLCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCwgVDEpOworICAgICAgICAgICAgZ2x1 ZShzdHFyLCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCwgVDEpOwogICAgICAgICAgICAgZW52LT5j cmZbMF0gPSB4ZXJfc28gfCAweDAyOwogICAgICAgICB9CiAgICAgfQpAQCAtODYyLDYgKzczMSw3 IEBACiAKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX2RjYnosIE1FTVNVRkZJWCkgKHZvaWQpCiB7Cisg ICAgVDAgPSAodWludDMyX3QpVDA7CiAgICAgZ2x1ZShkb19kY2J6LCBNRU1TVUZGSVgpKCk7CiAg ICAgUkVUVVJOKCk7CiB9CkBAIC05NDAsNyArODEwLDcgQEAKIAogdm9pZCBPUFBST1RPIGdsdWUo b3BfZGNiel82NCwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBnbHVlKGRvX2RjYnpfNjQsIE1F TVNVRkZJWCkoKTsKKyAgICBnbHVlKGRvX2RjYnosIE1FTVNVRkZJWCkoKTsKICAgICBSRVRVUk4o KTsKIH0KICNlbmRpZgpAQCAtOTQ4LDYgKzgxOCw3IEBACiAvKiBJbnN0cnVjdGlvbiBjYWNoZSBi bG9jayBpbnZhbGlkYXRlICovCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9pY2JpLCBNRU1TVUZGSVgp ICh2b2lkKQogeworICAgIFQwID0gKHVpbnQzMl90KVQwOwogICAgIGdsdWUoZG9faWNiaSwgTUVN U1VGRklYKSgpOwogICAgIFJFVFVSTigpOwogfQpAQCAtOTU1LDcgKzgyNiw3IEBACiAjaWYgZGVm aW5lZChUQVJHRVRfUFBDNjQpCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9pY2JpXzY0LCBNRU1TVUZG SVgpICh2b2lkKQogewotICAgIGdsdWUoZG9faWNiaV82NCwgTUVNU1VGRklYKSgpOworICAgIGds dWUoZG9faWNiaSwgTUVNU1VGRklYKSgpOwogICAgIFJFVFVSTigpOwogfQogI2VuZGlmCkBAIC05 NjMsMTQgKzgzNCwxNCBAQAogLyogRXh0ZXJuYWwgYWNjZXNzICovCiB2b2lkIE9QUFJPVE8gZ2x1 ZShvcF9lY2l3eCwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBUMSA9IGdsdWUobGRsLCBNRU1T VUZGSVgpKCh1aW50MzJfdClUMCk7CisgICAgVDEgPSBnbHVlKGxkdWwsIE1FTVNVRkZJWCkoKHVp bnQzMl90KVQwKTsKICAgICBSRVRVUk4oKTsKIH0KIAogI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0 KQogdm9pZCBPUFBST1RPIGdsdWUob3BfZWNpd3hfNjQsIE1FTVNVRkZJWCkgKHZvaWQpCiB7Ci0g ICAgVDEgPSBnbHVlKGxkbCwgTUVNU1VGRklYKSgodWludDY0X3QpVDApOworICAgIFQxID0gZ2x1 ZShsZHVsLCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCk7CiAgICAgUkVUVVJOKCk7CiB9CiAjZW5k aWYKQEAgLTk5MSwyOCArODYyLDI4IEBACiAKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX2VjaXd4X2xl LCBNRU1TVUZGSVgpICh2b2lkKQogewotICAgIFQxID0gZ2x1ZShsZDMyciwgTUVNU1VGRklYKSgo dWludDMyX3QpVDApOworICAgIFQxID0gZ2x1ZShsZHVsciwgTUVNU1VGRklYKSgodWludDMyX3Qp VDApOwogICAgIFJFVFVSTigpOwogfQogCiAjaWYgZGVmaW5lZChUQVJHRVRfUFBDNjQpCiB2b2lk IE9QUFJPVE8gZ2x1ZShvcF9lY2l3eF9sZV82NCwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBU MSA9IGdsdWUobGQzMnIsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KVQwKTsKKyAgICBUMSA9IGdsdWUo bGR1bHIsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KVQwKTsKICAgICBSRVRVUk4oKTsKIH0KICNlbmRp ZgogCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9lY293eF9sZSwgTUVNU1VGRklYKSAodm9pZCkKIHsK LSAgICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCwgVDEpOworICAgIGdsdWUo c3RsciwgTUVNU1VGRklYKSgodWludDMyX3QpVDAsIFQxKTsKICAgICBSRVRVUk4oKTsKIH0KIAog I2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQogdm9pZCBPUFBST1RPIGdsdWUob3BfZWNvd3hfbGVf NjQsIE1FTVNVRkZJWCkgKHZvaWQpCiB7Ci0gICAgZ2x1ZShzdDMyciwgTUVNU1VGRklYKSgodWlu dDY0X3QpVDAsIFQxKTsKKyAgICBnbHVlKHN0bHIsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KVQwLCBU MSk7CiAgICAgUkVUVVJOKCk7CiB9CiAjZW5kaWYKQEAgLTEwNzAsOCArOTQxLDggQEAKIAogdm9p ZCBPUFBST1RPIGdsdWUob3BfdnJfbHZ4X2xlLCBNRU1TVUZGSVgpICh2b2lkKQogewotICAgIEFW UjAudTY0W1ZSX0RXT1JEMV0gPSBnbHVlKGxkcSwgTUVNU1VGRklYKSgodWludDMyX3QpVDApOwot ICAgIEFWUjAudTY0W1ZSX0RXT1JEMF0gPSBnbHVlKGxkcSwgTUVNU1VGRklYKSgodWludDMyX3Qp VDAgKyA4KTsKKyAgICBBVlIwLnU2NFtWUl9EV09SRDFdID0gZ2x1ZShsZHFyLCBNRU1TVUZGSVgp KCh1aW50MzJfdClUMCk7CisgICAgQVZSMC51NjRbVlJfRFdPUkQwXSA9IGdsdWUobGRxciwgTUVN U1VGRklYKSgodWludDMyX3QpVDAgKyA4KTsKIH0KIAogdm9pZCBPUFBST1RPIGdsdWUob3BfdnJf c3R2eCwgTUVNU1VGRklYKSAodm9pZCkKQEAgLTEwODIsOCArOTUzLDggQEAKIAogdm9pZCBPUFBS T1RPIGdsdWUob3BfdnJfc3R2eF9sZSwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAgICBnbHVlKHN0 cSwgTUVNU1VGRklYKSgodWludDMyX3QpVDAsIEFWUjAudTY0W1ZSX0RXT1JEMV0pOwotICAgIGds dWUoc3RxLCBNRU1TVUZGSVgpKCh1aW50MzJfdClUMCArIDgsIEFWUjAudTY0W1ZSX0RXT1JEMF0p OworICAgIGdsdWUoc3RxciwgTUVNU1VGRklYKSgodWludDMyX3QpVDAsIEFWUjAudTY0W1ZSX0RX T1JEMV0pOworICAgIGdsdWUoc3RxciwgTUVNU1VGRklYKSgodWludDMyX3QpVDAgKyA4LCBBVlIw LnU2NFtWUl9EV09SRDBdKTsKIH0KIAogI2lmIGRlZmluZWQoVEFSR0VUX1BQQzY0KQpAQCAtMTA5 NSw4ICs5NjYsOCBAQAogCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF92cl9sdnhfbGVfNjQsIE1FTVNV RkZJWCkgKHZvaWQpCiB7Ci0gICAgQVZSMC51NjRbVlJfRFdPUkQxXSA9IGdsdWUobGRxLCBNRU1T VUZGSVgpKCh1aW50NjRfdClUMCk7Ci0gICAgQVZSMC51NjRbVlJfRFdPUkQwXSA9IGdsdWUobGRx LCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCArIDgpOworICAgIEFWUjAudTY0W1ZSX0RXT1JEMV0g PSBnbHVlKGxkcXIsIE1FTVNVRkZJWCkoKHVpbnQ2NF90KVQwKTsKKyAgICBBVlIwLnU2NFtWUl9E V09SRDBdID0gZ2x1ZShsZHFyLCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCArIDgpOwogfQogCiB2 b2lkIE9QUFJPVE8gZ2x1ZShvcF92cl9zdHZ4XzY0LCBNRU1TVUZGSVgpICh2b2lkKQpAQCAtMTEw Nyw4ICs5NzgsOCBAQAogCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF92cl9zdHZ4X2xlXzY0LCBNRU1T VUZGSVgpICh2b2lkKQogewotICAgIGdsdWUoc3RxLCBNRU1TVUZGSVgpKCh1aW50NjRfdClUMCwg QVZSMC51NjRbVlJfRFdPUkQxXSk7Ci0gICAgZ2x1ZShzdHEsIE1FTVNVRkZJWCkoKHVpbnQ2NF90 KVQwICsgOCwgQVZSMC51NjRbVlJfRFdPUkQwXSk7CisgICAgZ2x1ZShzdHFyLCBNRU1TVUZGSVgp KCh1aW50NjRfdClUMCwgQVZSMC51NjRbVlJfRFdPUkQxXSk7CisgICAgZ2x1ZShzdHFyLCBNRU1T VUZGSVgpKCh1aW50NjRfdClUMCArIDgsIEFWUjAudTY0W1ZSX0RXT1JEMF0pOwogfQogI2VuZGlm CiAjdW5kZWYgVlJfRFdPUkQwCkBAIC0xMTYzLDE0ICsxMDM0LDE0IEBACiAjaWYgIWRlZmluZWQo VEFSR0VUX1BQQzY0KQogUFBDX1NQRV9MRF9PUChkZCwgbGRxKTsKIFBQQ19TUEVfU1RfT1AoZGQs IHN0cSk7Ci1QUENfU1BFX0xEX09QKGRkX2xlLCBsZDY0cik7Ci1QUENfU1BFX1NUX09QKGRkX2xl LCBzdDY0cik7CitQUENfU1BFX0xEX09QKGRkX2xlLCBsZHFyKTsKK1BQQ19TUEVfU1RfT1AoZGRf bGUsIHN0cXIpOwogI2VuZGlmCiBzdGF0aWMgYWx3YXlzX2lubGluZSB1aW50NjRfdCBnbHVlKHNw ZV9sZHcsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSkKIHsKICAgICB1aW50NjRfdCByZXQ7 Ci0gICAgcmV0ID0gKHVpbnQ2NF90KWdsdWUobGRsLCBNRU1TVUZGSVgpKEVBKSA8PCAzMjsKLSAg ICByZXQgfD0gKHVpbnQ2NF90KWdsdWUobGRsLCBNRU1TVUZGSVgpKEVBICsgNCk7CisgICAgcmV0 ID0gKHVpbnQ2NF90KWdsdWUobGR1bCwgTUVNU1VGRklYKShFQSkgPDwgMzI7CisgICAgcmV0IHw9 ICh1aW50NjRfdClnbHVlKGxkdWwsIE1FTVNVRkZJWCkoRUEgKyA0KTsKICAgICByZXR1cm4gcmV0 OwogfQogUFBDX1NQRV9MRF9PUChkdywgc3BlX2xkdyk7CkBAIC0xMTg0LDE2ICsxMDU1LDE2IEBA CiBzdGF0aWMgYWx3YXlzX2lubGluZSB1aW50NjRfdCBnbHVlKHNwZV9sZHdfbGUsIE1FTVNVRkZJ WCkgKHRhcmdldF91bG9uZyBFQSkKIHsKICAgICB1aW50NjRfdCByZXQ7Ci0gICAgcmV0ID0gKHVp bnQ2NF90KWdsdWUobGQzMnIsIE1FTVNVRkZJWCkoRUEpIDw8IDMyOwotICAgIHJldCB8PSAodWlu dDY0X3QpZ2x1ZShsZDMyciwgTUVNU1VGRklYKShFQSArIDQpOworICAgIHJldCA9ICh1aW50NjRf dClnbHVlKGxkdWxyLCBNRU1TVUZGSVgpKEVBKSA8PCAzMjsKKyAgICByZXQgfD0gKHVpbnQ2NF90 KWdsdWUobGR1bHIsIE1FTVNVRkZJWCkoRUEgKyA0KTsKICAgICByZXR1cm4gcmV0OwogfQogUFBD X1NQRV9MRF9PUChkd19sZSwgc3BlX2xkd19sZSk7CiBzdGF0aWMgYWx3YXlzX2lubGluZSB2b2lk IGdsdWUoc3BlX3N0ZHdfbGUsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg ZGF0YSkKIHsKLSAgICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKEVBLCBkYXRhID4+IDMyKTsKLSAg ICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKEVBICsgNCwgZGF0YSk7CisgICAgZ2x1ZShzdGxyLCBN RU1TVUZGSVgpKEVBLCBkYXRhID4+IDMyKTsKKyAgICBnbHVlKHN0bHIsIE1FTVNVRkZJWCkoRUEg KyA0LCBkYXRhKTsKIH0KIFBQQ19TUEVfU1RfT1AoZHdfbGUsIHNwZV9zdGR3X2xlKTsKIHN0YXRp YyBhbHdheXNfaW5saW5lIHVpbnQ2NF90IGdsdWUoc3BlX2xkaCwgTUVNU1VGRklYKSAodGFyZ2V0 X3Vsb25nIEVBKQpAQCAtMTIxOCwyMCArMTA4OSwyMCBAQAogc3RhdGljIGFsd2F5c19pbmxpbmUg dWludDY0X3QgZ2x1ZShzcGVfbGRoX2xlLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEpCiB7 CiAgICAgdWludDY0X3QgcmV0OwotICAgIHJldCA9ICh1aW50NjRfdClnbHVlKGxkMTZyLCBNRU1T VUZGSVgpKEVBKSA8PCA0ODsKLSAgICByZXQgfD0gKHVpbnQ2NF90KWdsdWUobGQxNnIsIE1FTVNV RkZJWCkoRUEgKyAyKSA8PCAzMjsKLSAgICByZXQgfD0gKHVpbnQ2NF90KWdsdWUobGQxNnIsIE1F TVNVRkZJWCkoRUEgKyA0KSA8PCAxNjsKLSAgICByZXQgfD0gKHVpbnQ2NF90KWdsdWUobGQxNnIs IE1FTVNVRkZJWCkoRUEgKyA2KTsKKyAgICByZXQgPSAodWludDY0X3QpZ2x1ZShsZHV3ciwgTUVN U1VGRklYKShFQSkgPDwgNDg7CisgICAgcmV0IHw9ICh1aW50NjRfdClnbHVlKGxkdXdyLCBNRU1T VUZGSVgpKEVBICsgMikgPDwgMzI7CisgICAgcmV0IHw9ICh1aW50NjRfdClnbHVlKGxkdXdyLCBN RU1TVUZGSVgpKEVBICsgNCkgPDwgMTY7CisgICAgcmV0IHw9ICh1aW50NjRfdClnbHVlKGxkdXdy LCBNRU1TVUZGSVgpKEVBICsgNik7CiAgICAgcmV0dXJuIHJldDsKIH0KIFBQQ19TUEVfTERfT1Ao ZGhfbGUsIHNwZV9sZGhfbGUpOwogc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBnbHVlKHNwZV9z dGRoX2xlLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCiB7Ci0g ICAgZ2x1ZShzdDE2ciwgTUVNU1VGRklYKShFQSwgZGF0YSA+PiA0OCk7Ci0gICAgZ2x1ZShzdDE2 ciwgTUVNU1VGRklYKShFQSArIDIsIGRhdGEgPj4gMzIpOwotICAgIGdsdWUoc3QxNnIsIE1FTVNV RkZJWCkoRUEgKyA0LCBkYXRhID4+IDE2KTsKLSAgICBnbHVlKHN0MTZyLCBNRU1TVUZGSVgpKEVB ICsgNiwgZGF0YSk7CisgICAgZ2x1ZShzdHdyLCBNRU1TVUZGSVgpKEVBLCBkYXRhID4+IDQ4KTsK KyAgICBnbHVlKHN0d3IsIE1FTVNVRkZJWCkoRUEgKyAyLCBkYXRhID4+IDMyKTsKKyAgICBnbHVl KHN0d3IsIE1FTVNVRkZJWCkoRUEgKyA0LCBkYXRhID4+IDE2KTsKKyAgICBnbHVlKHN0d3IsIE1F TVNVRkZJWCkoRUEgKyA2LCBkYXRhKTsKIH0KIFBQQ19TUEVfU1RfT1AoZGhfbGUsIHNwZV9zdGRo X2xlKTsKIHN0YXRpYyBhbHdheXNfaW5saW5lIHVpbnQ2NF90IGdsdWUoc3BlX2x3aGUsIE1FTVNV RkZJWCkgKHRhcmdldF91bG9uZyBFQSkKQEAgLTEyNTIsMTYgKzExMjMsMTYgQEAKIHN0YXRpYyBh bHdheXNfaW5saW5lIHVpbnQ2NF90IGdsdWUoc3BlX2x3aGVfbGUsIE1FTVNVRkZJWCkgKHRhcmdl dF91bG9uZyBFQSkKIHsKICAgICB1aW50NjRfdCByZXQ7Ci0gICAgcmV0ID0gKHVpbnQ2NF90KWds dWUobGQxNnIsIE1FTVNVRkZJWCkoRUEpIDw8IDQ4OwotICAgIHJldCB8PSAodWludDY0X3QpZ2x1 ZShsZDE2ciwgTUVNU1VGRklYKShFQSArIDIpIDw8IDE2OworICAgIHJldCA9ICh1aW50NjRfdCln bHVlKGxkdXdyLCBNRU1TVUZGSVgpKEVBKSA8PCA0ODsKKyAgICByZXQgfD0gKHVpbnQ2NF90KWds dWUobGR1d3IsIE1FTVNVRkZJWCkoRUEgKyAyKSA8PCAxNjsKICAgICByZXR1cm4gcmV0OwogfQog UFBDX1NQRV9MRF9PUCh3aGVfbGUsIHNwZV9sd2hlX2xlKTsKIHN0YXRpYyBhbHdheXNfaW5saW5l IHZvaWQgZ2x1ZShzcGVfc3R3aGVfbGUsIE1FTVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IGRhdGEpCiB7Ci0gICAgZ2x1ZShzdDE2ciwgTUVNU1VGRklYKShFQSwgZGF0YSA+PiA0 OCk7Ci0gICAgZ2x1ZShzdDE2ciwgTUVNU1VGRklYKShFQSArIDIsIGRhdGEgPj4gMTYpOworICAg IGdsdWUoc3R3ciwgTUVNU1VGRklYKShFQSwgZGF0YSA+PiA0OCk7CisgICAgZ2x1ZShzdHdyLCBN RU1TVUZGSVgpKEVBICsgMiwgZGF0YSA+PiAxNik7CiB9CiBQUENfU1BFX1NUX09QKHdoZV9sZSwg c3BlX3N0d2hlX2xlKTsKIHN0YXRpYyBhbHdheXNfaW5saW5lIHVpbnQ2NF90IGdsdWUoc3BlX2x3 aG91LCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcgRUEpCkBAIC0xMjkwLDI0ICsxMTYxLDI0IEBA CiBzdGF0aWMgYWx3YXlzX2lubGluZSB1aW50NjRfdCBnbHVlKHNwZV9sd2hvdV9sZSwgTUVNU1VG RklYKSAodGFyZ2V0X3Vsb25nIEVBKQogewogICAgIHVpbnQ2NF90IHJldDsKLSAgICByZXQgPSAo dWludDY0X3QpZ2x1ZShsZDE2ciwgTUVNU1VGRklYKShFQSkgPDwgMzI7Ci0gICAgcmV0IHw9ICh1 aW50NjRfdClnbHVlKGxkMTZyLCBNRU1TVUZGSVgpKEVBICsgMik7CisgICAgcmV0ID0gKHVpbnQ2 NF90KWdsdWUobGR1d3IsIE1FTVNVRkZJWCkoRUEpIDw8IDMyOworICAgIHJldCB8PSAodWludDY0 X3QpZ2x1ZShsZHV3ciwgTUVNU1VGRklYKShFQSArIDIpOwogICAgIHJldHVybiByZXQ7CiB9CiBQ UENfU1BFX0xEX09QKHdob3VfbGUsIHNwZV9sd2hvdV9sZSk7CiBzdGF0aWMgYWx3YXlzX2lubGlu ZSB1aW50NjRfdCBnbHVlKHNwZV9sd2hvc19sZSwgTUVNU1VGRklYKSAodGFyZ2V0X3Vsb25nIEVB KQogewogICAgIHVpbnQ2NF90IHJldDsKLSAgICByZXQgPSAoKHVpbnQ2NF90KSgoaW50MzJfdCln bHVlKGxkMTZycywgTUVNU1VGRklYKShFQSkpKSA8PCAzMjsKLSAgICByZXQgfD0gKHVpbnQ2NF90 KSgoaW50MzJfdClnbHVlKGxkMTZycywgTUVNU1VGRklYKShFQSArIDIpKTsKKyAgICByZXQgPSAo KHVpbnQ2NF90KSgoaW50MzJfdClnbHVlKGxkc3dyLCBNRU1TVUZGSVgpKEVBKSkpIDw8IDMyOwor ICAgIHJldCB8PSAodWludDY0X3QpKChpbnQzMl90KWdsdWUobGRzd3IsIE1FTVNVRkZJWCkoRUEg KyAyKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIFBQQ19TUEVfTERfT1Aod2hvc19sZSwgc3BlX2x3 aG9zX2xlKTsKIHN0YXRpYyBhbHdheXNfaW5saW5lIHZvaWQgZ2x1ZShzcGVfc3R3aG9fbGUsIE1F TVNVRkZJWCkgKHRhcmdldF91bG9uZyBFQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCiB7Ci0gICAgZ2x1ZShz dDE2ciwgTUVNU1VGRklYKShFQSwgZGF0YSA+PiAzMik7Ci0gICAgZ2x1ZShzdDE2ciwgTUVNU1VG RklYKShFQSArIDIsIGRhdGEpOworICAgIGdsdWUoc3R3ciwgTUVNU1VGRklYKShFQSwgZGF0YSA+ PiAzMik7CisgICAgZ2x1ZShzdHdyLCBNRU1TVUZGSVgpKEVBICsgMiwgZGF0YSk7CiB9CiBQUENf U1BFX1NUX09QKHdob19sZSwgc3BlX3N0d2hvX2xlKTsKICNpZiAhZGVmaW5lZChUQVJHRVRfUFBD NjQpCkBAIC0xMzIwLDcgKzExOTEsNyBAQAogc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBnbHVl KHNwZV9zdHd3b19sZSwgTUVNU1VGRklYKSAodGFyZ2V0X3Vsb25nIEVBLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0 YSkKIHsKLSAgICBnbHVlKHN0MzJyLCBNRU1TVUZGSVgpKEVBLCBkYXRhKTsKKyAgICBnbHVlKHN0 bHIsIE1FTVNVRkZJWCkoRUEsIGRhdGEpOwogfQogUFBDX1NQRV9TVF9PUCh3d29fbGUsIHNwZV9z dHd3b19sZSk7CiAjZW5kaWYKQEAgLTEzMzQsMTQgKzEyMDUsMTQgQEAKIHN0YXRpYyBhbHdheXNf aW5saW5lIHVpbnQ2NF90IGdsdWUoc3BlX2xoX2xlLCBNRU1TVUZGSVgpICh0YXJnZXRfdWxvbmcg RUEpCiB7CiAgICAgdWludDE2X3QgdG1wOwotICAgIHRtcCA9IGdsdWUobGQxNnIsIE1FTVNVRkZJ WCkoRUEpOworICAgIHRtcCA9IGdsdWUobGR1d3IsIE1FTVNVRkZJWCkoRUEpOwogICAgIHJldHVy biAoKHVpbnQ2NF90KXRtcCA8PCA0OCkgfCAoKHVpbnQ2NF90KXRtcCA8PCAxNik7CiB9CiBQUENf U1BFX0xEX09QKGhfbGUsIHNwZV9saF9sZSk7CiBzdGF0aWMgYWx3YXlzX2lubGluZSB1aW50NjRf dCBnbHVlKHNwZV9sd3dzcGxhdCwgTUVNU1VGRklYKSAodGFyZ2V0X3Vsb25nIEVBKQogewogICAg IHVpbnQzMl90IHRtcDsKLSAgICB0bXAgPSBnbHVlKGxkbCwgTUVNU1VGRklYKShFQSk7CisgICAg dG1wID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpKEVBKTsKICAgICByZXR1cm4gKCh1aW50NjRfdCl0 bXAgPDwgMzIpIHwgKHVpbnQ2NF90KXRtcDsKIH0KIFBQQ19TUEVfTERfT1Aod3dzcGxhdCwgc3Bl X2x3d3NwbGF0KTsKQEAgLTEzNDksNyArMTIyMCw3IEBACiB1aW50NjRfdCBnbHVlKHNwZV9sd3dz cGxhdF9sZSwgTUVNU1VGRklYKSAodGFyZ2V0X3Vsb25nIEVBKQogewogICAgIHVpbnQzMl90IHRt cDsKLSAgICB0bXAgPSBnbHVlKGxkMzJyLCBNRU1TVUZGSVgpKEVBKTsKKyAgICB0bXAgPSBnbHVl KGxkdWxyLCBNRU1TVUZGSVgpKEVBKTsKICAgICByZXR1cm4gKCh1aW50NjRfdCl0bXAgPDwgMzIp IHwgKHVpbnQ2NF90KXRtcDsKIH0KIFBQQ19TUEVfTERfT1Aod3dzcGxhdF9sZSwgc3BlX2x3d3Nw bGF0X2xlKTsKQEAgLTEzNjksOSArMTI0MCw5IEBACiB7CiAgICAgdWludDY0X3QgcmV0OwogICAg IHVpbnQxNl90IHRtcDsKLSAgICB0bXAgPSBnbHVlKGxkMTZyLCBNRU1TVUZGSVgpKEVBKTsKKyAg ICB0bXAgPSBnbHVlKGxkdXdyLCBNRU1TVUZGSVgpKEVBKTsKICAgICByZXQgPSAoKHVpbnQ2NF90 KXRtcCA8PCA0OCkgfCAoKHVpbnQ2NF90KXRtcCA8PCAzMik7Ci0gICAgdG1wID0gZ2x1ZShsZDE2 ciwgTUVNU1VGRklYKShFQSArIDIpOworICAgIHRtcCA9IGdsdWUobGR1d3IsIE1FTVNVRkZJWCko RUEgKyAyKTsKICAgICByZXQgfD0gKCh1aW50NjRfdCl0bXAgPDwgMTYpIHwgKHVpbnQ2NF90KXRt cDsKICAgICByZXR1cm4gcmV0OwogfQpJbmRleDogdGFyZ2V0LXBwYy90cmFuc2xhdGUuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSB0YXJnZXQtcHBjL3RyYW5zbGF0ZS5jLm9yaWcJMjAwNy0xMC0xNCAxNjo0NDoy MC4wMDAwMDAwMDAgKzAwMDAKKysrIHRhcmdldC1wcGMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xNSAx NTo0MToxMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTY3NTYsNyArNjc1Niw3IEBACiAgICAgICAgICAg ICAgICAgICAgIGN0eC5uaXAsIDEgLSBtc3JfcHIsIG1zcl9pcik7CiAgICAgICAgIH0KICNlbmRp ZgotICAgICAgICBjdHgub3Bjb2RlID0gbGRsX2NvZGUoY3R4Lm5pcCk7CisgICAgICAgIGN0eC5v cGNvZGUgPSBsZHVsX2NvZGUoY3R4Lm5pcCk7CiAgICAgICAgIGlmIChtc3JfbGUpIHsKICAgICAg ICAgICAgIGN0eC5vcGNvZGUgPSAoKGN0eC5vcGNvZGUgJiAweEZGMDAwMDAwKSA+PiAyNCkgfAog ICAgICAgICAgICAgICAgICgoY3R4Lm9wY29kZSAmIDB4MDBGRjAwMDApID4+IDgpIHwKSW5kZXg6 IHRhcmdldC1zaDQvZXhlYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRhcmdldC1zaDQvZXhlYy5oLm9yaWcJ MjAwNy0xMC0xNSAxNTo0MDoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHRhcmdldC1zaDQvZXhlYy5o CTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC00OCw2ICs0OCw5IEBACiAK ICNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQogI2luY2x1ZGUgInNvZnRtbXVfZXhlYy5oIgorI2Rl ZmluZSBSRVZFUlNFX0VORElBTgorI2luY2x1ZGUgInNvZnRtbXVfZXhlYy5oIgorI3VuZGVmIFJF VkVSU0VfRU5ESUFOCiAjZW5kaWYKIAogI2RlZmluZSBSRVRVUk4oKSBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIikKSW5kZXg6IHRhcmdldC1zaDQvb3BfaGVscGVyLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFy Z2V0LXNoNC9vcF9oZWxwZXIuYy5vcmlnCTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAwICsw MDAwCisrKyB0YXJnZXQtc2g0L29wX2hlbHBlci5jCTIwMDctMTAtMTUgMTU6NDE6MTAuMDAwMDAw MDAwICswMDAwCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIE1NVVNVRkZJWCBfbW11CiAjZGVm aW5lIEdFVFBDKCkgKF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSkKIAorLyogTmF0aXZlLWVu ZGlhbiAqLwogI2RlZmluZSBTSElGVCAwCiAjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgog CkBAIC00Miw2ICs0MywyMSBAQAogI2RlZmluZSBTSElGVCAzCiAjaW5jbHVkZSAic29mdG1tdV90 ZW1wbGF0ZS5oIgogCisvKiBSZXZlcnNlLWVuZGlhbiAqLworI2RlZmluZSBSRVZFUlNFX0VORElB TgorI2RlZmluZSBTSElGVCAwCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisjZGVm aW5lIFNISUZUIDEKKyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUgU0hJ RlQgMgorI2luY2x1ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIKKworI2RlZmluZSBTSElGVCAzCisj aW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorI3VuZGVmIFJFVkVSU0VfRU5ESUFOCisKIHZv aWQgdGxiX2ZpbGwodGFyZ2V0X3Vsb25nIGFkZHIsIGludCBpc193cml0ZSwgaW50IG1tdV9pZHgs IHZvaWQgKnJldGFkZHIpCiB7CiAgICAgVHJhbnNsYXRpb25CbG9jayAqdGI7CkluZGV4OiB0YXJn ZXQtc2g0L29wX21lbS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRhcmdldC1zaDQvb3BfbWVtLmMub3JpZwky MDA3LTEwLTE0IDEzOjAwOjA2LjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0LXNoNC9vcF9tZW0u YwkyMDA3LTEwLTE1IDE1OjQxOjEwLjAwMDAwMDAwMCArMDAwMApAQCAtNDgsNyArNDgsNyBAQAog fQogCiB2b2lkIGdsdWUob3BfbGRsX1QwX1QwLCBNRU1TVUZGSVgpICh2b2lkKSB7Ci0gICAgVDAg PSBnbHVlKGxkbCwgTUVNU1VGRklYKSAoVDApOworICAgIFQwID0gZ2x1ZShsZHVsLCBNRU1TVUZG SVgpIChUMCk7CiAgICAgUkVUVVJOKCk7CiB9CiAKSW5kZXg6IHRhcmdldC1zcGFyYy9leGVjLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gdGFyZ2V0LXNwYXJjL2V4ZWMuaC5vcmlnCTIwMDctMTAtMTUgMTU6NDA6 MjIuMDAwMDAwMDAwICswMDAwCisrKyB0YXJnZXQtc3BhcmMvZXhlYy5oCTIwMDctMTAtMTUgMTU6 NDE6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0xMDAsNiArMTAwLDkgQEAKIC8qIFhYWDogbW92ZSB0 aGF0IHRvIGEgZ2VuZXJpYyBoZWFkZXIgKi8KICNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZ KQogI2luY2x1ZGUgInNvZnRtbXVfZXhlYy5oIgorI2RlZmluZSBSRVZFUlNFX0VORElBTgorI2lu Y2x1ZGUgInNvZnRtbXVfZXhlYy5oIgorI3VuZGVmIFJFVkVSU0VfRU5ESUFOCiAjZW5kaWYgLyog IWRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkgKi8KIAogc3RhdGljIGlubGluZSB2b2lkIGVudl90 b19yZWdzKHZvaWQpCkluZGV4OiB0YXJnZXQtc3BhcmMvaGVscGVyLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g dGFyZ2V0LXNwYXJjL2hlbHBlci5jLm9yaWcJMjAwNy0xMC0xNCAxMzowMDowNi4wMDAwMDAwMDAg KzAwMDAKKysrIHRhcmdldC1zcGFyYy9oZWxwZXIuYwkyMDA3LTEwLTE1IDE1OjQxOjEwLjAwMDAw MDAwMCArMDAwMApAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgLyogU1BBUkMgcmVmZXJlbmNlIE1N VSB0YWJsZSB3YWxrOiBDb250ZXh0IHRhYmxlLT5MMS0+TDItPlBURSAqLwogICAgIC8qIENvbnRl eHQgYmFzZSArIGNvbnRleHQgbnVtYmVyICovCiAgICAgcGRlX3B0ciA9IChlbnYtPm1tdXJlZ3Nb MV0gPDwgNCkgKyAoZW52LT5tbXVyZWdzWzJdIDw8IDIpOwotICAgIHBkZSA9IGxkbF9waHlzKHBk ZV9wdHIpOworICAgIHBkZSA9IGxkdWxfcGh5cyhwZGVfcHRyKTsKIAogICAgIC8qIEN0eCBwZGUg Ki8KICAgICBzd2l0Y2ggKHBkZSAmIFBURV9FTlRSWVRZUEVfTUFTSykgewpAQCAtMTQyLDcgKzE0 Miw3IEBACiAgICAgICAgIHJldHVybiA0IDw8IDI7CiAgICAgY2FzZSAxOiAvKiBMMCBQREUgKi8K ICAgICAgICAgcGRlX3B0ciA9ICgoYWRkcmVzcyA+PiAyMikgJiB+MykgKyAoKHBkZSAmIH4zKSA8 PCA0KTsKLSAgICAgICAgcGRlID0gbGRsX3BoeXMocGRlX3B0cik7CisgICAgICAgIHBkZSA9IGxk dWxfcGh5cyhwZGVfcHRyKTsKIAogICAgICAgICBzd2l0Y2ggKHBkZSAmIFBURV9FTlRSWVRZUEVf TUFTSykgewogICAgICAgICBkZWZhdWx0OgpAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgICAgICAg ICByZXR1cm4gKDEgPDwgOCkgfCAoNCA8PCAyKTsKICAgICAgICAgY2FzZSAxOiAvKiBMMSBQREUg Ki8KICAgICAgICAgICAgIHBkZV9wdHIgPSAoKGFkZHJlc3MgJiAweGZjMDAwMCkgPj4gMTYpICsg KChwZGUgJiB+MykgPDwgNCk7Ci0gICAgICAgICAgICBwZGUgPSBsZGxfcGh5cyhwZGVfcHRyKTsK KyAgICAgICAgICAgIHBkZSA9IGxkdWxfcGh5cyhwZGVfcHRyKTsKIAogICAgICAgICAgICAgc3dp dGNoIChwZGUgJiBQVEVfRU5UUllUWVBFX01BU0spIHsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBA IC0xNjIsNyArMTYyLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKDIgPDwgOCkgfCAoNCA8 PCAyKTsKICAgICAgICAgICAgIGNhc2UgMTogLyogTDIgUERFICovCiAgICAgICAgICAgICAgICAg cGRlX3B0ciA9ICgoYWRkcmVzcyAmIDB4M2YwMDApID4+IDEwKSArICgocGRlICYgfjMpIDw8IDQp OwotICAgICAgICAgICAgICAgIHBkZSA9IGxkbF9waHlzKHBkZV9wdHIpOworICAgICAgICAgICAg ICAgIHBkZSA9IGxkdWxfcGh5cyhwZGVfcHRyKTsKIAogICAgICAgICAgICAgICAgIHN3aXRjaCAo cGRlICYgUFRFX0VOVFJZVFlQRV9NQVNLKSB7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKQEAg LTI2Niw3ICsyNjYsNyBAQAogICAgIC8qIENvbnRleHQgYmFzZSArIGNvbnRleHQgbnVtYmVyICov CiAgICAgcGRlX3B0ciA9ICh0YXJnZXRfcGh5c19hZGRyX3QpKGVudi0+bW11cmVnc1sxXSA8PCA0 KSArCiAgICAgICAgIChlbnYtPm1tdXJlZ3NbMl0gPDwgMik7Ci0gICAgcGRlID0gbGRsX3BoeXMo cGRlX3B0cik7CisgICAgcGRlID0gbGR1bF9waHlzKHBkZV9wdHIpOwogCiAgICAgc3dpdGNoIChw ZGUgJiBQVEVfRU5UUllUWVBFX01BU0spIHsKICAgICBkZWZhdWx0OgpAQCAtMjc4LDcgKzI3OCw3 IEBACiAgICAgICAgIGlmIChtbXVsZXYgPT0gMykKICAgICAgICAgICAgIHJldHVybiBwZGU7CiAg ICAgICAgIHBkZV9wdHIgPSAoKGFkZHJlc3MgPj4gMjIpICYgfjMpICsgKChwZGUgJiB+MykgPDwg NCk7Ci0gICAgICAgIHBkZSA9IGxkbF9waHlzKHBkZV9wdHIpOworICAgICAgICBwZGUgPSBsZHVs X3BoeXMocGRlX3B0cik7CiAKICAgICAgICAgc3dpdGNoIChwZGUgJiBQVEVfRU5UUllUWVBFX01B U0spIHsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgICAgICAgICAg aWYgKG1tdWxldiA9PSAyKQogICAgICAgICAgICAgICAgIHJldHVybiBwZGU7CiAgICAgICAgICAg ICBwZGVfcHRyID0gKChhZGRyZXNzICYgMHhmYzAwMDApID4+IDE2KSArICgocGRlICYgfjMpIDw8 IDQpOwotICAgICAgICAgICAgcGRlID0gbGRsX3BoeXMocGRlX3B0cik7CisgICAgICAgICAgICBw ZGUgPSBsZHVsX3BoeXMocGRlX3B0cik7CiAKICAgICAgICAgICAgIHN3aXRjaCAocGRlICYgUFRF X0VOVFJZVFlQRV9NQVNLKSB7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMzA0LDcgKzMwNCw3 IEBACiAgICAgICAgICAgICAgICAgaWYgKG1tdWxldiA9PSAxKQogICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcGRlOwogICAgICAgICAgICAgICAgIHBkZV9wdHIgPSAoKGFkZHJlc3MgJiAweDNm MDAwKSA+PiAxMCkgKyAoKHBkZSAmIH4zKSA8PCA0KTsKLSAgICAgICAgICAgICAgICBwZGUgPSBs ZGxfcGh5cyhwZGVfcHRyKTsKKyAgICAgICAgICAgICAgICBwZGUgPSBsZHVsX3BoeXMocGRlX3B0 cik7CiAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHBkZSAmIFBURV9FTlRSWVRZUEVfTUFTSykg ewogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMzEsNyArMzMxLDcgQEAKIAogICAgIHBy aW50ZigiTU1VIGR1bXA6XG4iKTsKICAgICBwZGVfcHRyID0gKGVudi0+bW11cmVnc1sxXSA8PCA0 KSArIChlbnYtPm1tdXJlZ3NbMl0gPDwgMik7Ci0gICAgcGRlID0gbGRsX3BoeXMocGRlX3B0cik7 CisgICAgcGRlID0gbGR1bF9waHlzKHBkZV9wdHIpOwogICAgIHByaW50ZigiUm9vdCBwdHI6ICIg VEFSR0VUX0ZNVF9wbHggIiwgY3R4OiAlZFxuIiwKICAgICAgICAgICAgKHRhcmdldF9waHlzX2Fk ZHJfdCllbnYtPm1tdXJlZ3NbMV0gPDwgNCwgZW52LT5tbXVyZWdzWzJdKTsKICAgICBmb3IgKG4g PSAwLCB2YSA9IDA7IG4gPCAyNTY7IG4rKywgdmEgKz0gMTYgKiAxMDI0ICogMTAyNCkgewpJbmRl eDogdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRhcmdldC1zcGFyYy9v cF9oZWxwZXIuYy5vcmlnCTIwMDctMTAtMTUgMTU6NDA6MjIuMDAwMDAwMDAwICswMDAwCisrKyB0 YXJnZXQtc3BhcmMvb3BfaGVscGVyLmMJMjAwNy0xMC0xNSAxNTo0MjozMy4wMDAwMDAwMDAgKzAw MDAKQEAgLTI0MSwxMSArMjQxLDExIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm YXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgcmV0ID0gbGRsX2NvZGUoVDAgJiB+ Myk7CisgICAgICAgICAgICByZXQgPSBsZHVsX2NvZGUoVDAgJiB+Myk7CiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAgcmV0ID0gbGRsX2NvZGUoVDAgJiB+ Myk7Ci0gICAgICAgICAgICBUMCA9IGxkbF9jb2RlKChUMCArIDQpICYgfjMpOworICAgICAgICAg ICAgcmV0ID0gbGR1bF9jb2RlKFQwICYgfjMpOworICAgICAgICAgICAgVDAgPSBsZHVsX2NvZGUo KFQwICsgNCkgJiB+Myk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBi cmVhazsKQEAgLTI1OSwxMSArMjU5LDExIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ZGVmYXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgcmV0ID0gbGRsX3VzZXIoVDAg JiB+Myk7CisgICAgICAgICAgICByZXQgPSBsZHVsX3VzZXIoVDAgJiB+Myk7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAgcmV0ID0gbGRsX3VzZXIoVDAg JiB+Myk7Ci0gICAgICAgICAgICBUMCA9IGxkbF91c2VyKChUMCArIDQpICYgfjMpOworICAgICAg ICAgICAgcmV0ID0gbGR1bF91c2VyKFQwICYgfjMpOworICAgICAgICAgICAgVDAgPSBsZHVsX3Vz ZXIoKFQwICsgNCkgJiB+Myk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg ICBicmVhazsKQEAgLTI3NywxMSArMjc3LDExIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgcmV0ID0gbGRsX2tlcm5l bChUMCAmIH4zKTsKKyAgICAgICAgICAgIHJldCA9IGxkdWxfa2VybmVsKFQwICYgfjMpOwogICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgODoKLSAgICAgICAgICAgIHJldCA9IGxkbF9r ZXJuZWwoVDAgJiB+Myk7Ci0gICAgICAgICAgICBUMCA9IGxkbF9rZXJuZWwoKFQwICsgNCkgJiB+ Myk7CisgICAgICAgICAgICByZXQgPSBsZHVsX2tlcm5lbChUMCAmIH4zKTsKKyAgICAgICAgICAg IFQwID0gbGR1bF9rZXJuZWwoKFQwICsgNCkgJiB+Myk7CiAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTMwMCwxMSArMzAwLDExIEBACiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAg cmV0ID0gbGRsX3BoeXMoVDAgJiB+Myk7CisgICAgICAgICAgICByZXQgPSBsZHVsX3BoeXMoVDAg JiB+Myk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAg cmV0ID0gbGRsX3BoeXMoVDAgJiB+Myk7Ci0gICAgICAgICAgICBUMCA9IGxkbF9waHlzKChUMCAr IDQpICYgfjMpOworICAgICAgICAgICAgcmV0ID0gbGR1bF9waHlzKFQwICYgfjMpOworICAgICAg ICAgICAgVDAgPSBsZHVsX3BoeXMoKFQwICsgNCkgJiB+Myk7CiAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTMyMSwxMyArMzIxLDEzIEBACiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAgICAg ICAgcmV0ID0gbGRsX3BoeXMoKHRhcmdldF9waHlzX2FkZHJfdCkoVDAgJiB+MykKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgKCh0YXJnZXRfcGh5c19hZGRyX3QpKGFzaSAmIDB4ZikgPDwg MzIpKTsKKyAgICAgICAgICAgIHJldCA9IGxkdWxfcGh5cygodGFyZ2V0X3BoeXNfYWRkcl90KShU MCAmIH4zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCh0YXJnZXRfcGh5c19hZGRy X3QpKGFzaSAmIDB4ZikgPDwgMzIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl IDg6Ci0gICAgICAgICAgICByZXQgPSBsZGxfcGh5cygodGFyZ2V0X3BoeXNfYWRkcl90KShUMCAm IH4zKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHRhcmdldF9waHlzX2FkZHJfdCko YXNpICYgMHhmKSA8PCAzMikpOwotICAgICAgICAgICAgVDAgPSBsZGxfcGh5cygodGFyZ2V0X3Bo eXNfYWRkcl90KSgoVDAgKyA0KSAmIH4zKQorICAgICAgICAgICAgcmV0ID0gbGR1bF9waHlzKCh0 YXJnZXRfcGh5c19hZGRyX3QpKFQwICYgfjMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAoKHRhcmdldF9waHlzX2FkZHJfdCkoYXNpICYgMHhmKSA8PCAzMikpOworICAgICAgICAgICAg VDAgPSBsZHVsX3BoeXMoKHRhcmdldF9waHlzX2FkZHJfdCkoKFQwICsgNCkgJiB+MykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgKCh0YXJnZXRfcGh5c19hZGRyX3QpKGFzaSAmIDB4Zikg PDwgMzIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NTcsNyArNTU3LDcg QEAKICAgICAgICAgICAgIHVpbnQzMl90IHNyYyA9IFQxICYgfjMsIGRzdCA9IFQwICYgfjMsIHRl bXA7CiAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSArPSA0LCBzcmMgKz0gNCwg ZHN0ICs9IDQpIHsKLSAgICAgICAgICAgICAgICB0ZW1wID0gbGRsX2tlcm5lbChzcmMpOworICAg ICAgICAgICAgICAgIHRlbXAgPSBsZHVsX2tlcm5lbChzcmMpOwogICAgICAgICAgICAgICAgIHN0 bF9rZXJuZWwoZHN0LCB0ZW1wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjYwLDcg KzY2MCw3IEBACiAgICAgICAgICAgICAgICAgcmV0ID0gbGR1d19yYXcoVDAgJiB+MSk7CiAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAg cmV0ID0gbGRsX3JhdyhUMCAmIH4zKTsKKyAgICAgICAgICAgICAgICByZXQgPSBsZHVsX3JhdyhU MCAmIH4zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg ICAgICAgICAgICBjYXNlIDg6CkBAIC04MTAsNyArODEwLDcgQEAKICAgICAgICAgICAgICAgICAg ICAgcmV0ID0gbGR1d19oeXB2KFQwICYgfjEpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IGxkbF9o eXB2KFQwICYgfjMpOworICAgICAgICAgICAgICAgICAgICByZXQgPSBsZHVsX2h5cHYoVDAgJiB+ Myk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6 CiAgICAgICAgICAgICAgICAgY2FzZSA4OgpAQCAtODI2LDcgKzgyNiw3IEBACiAgICAgICAgICAg ICAgICAgICAgIHJldCA9IGxkdXdfa2VybmVsKFQwICYgfjEpOwogICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJl dCA9IGxkbF9rZXJuZWwoVDAgJiB+Myk7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGxkdWxf a2VybmVsKFQwICYgfjMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGNhc2UgODoKQEAgLTg0Myw3ICs4NDMsNyBA QAogICAgICAgICAgICAgICAgIHJldCA9IGxkdXdfdXNlcihUMCAmIH4xKTsKICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgICAgICByZXQgPSBs ZGxfdXNlcihUMCAmIH4zKTsKKyAgICAgICAgICAgICAgICByZXQgPSBsZHVsX3VzZXIoVDAgJiB+ Myk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg ICAgICAgY2FzZSA4OgpAQCAtODY1LDcgKzg2NSw3IEBACiAgICAgICAgICAgICAgICAgcmV0ID0g bGR1d19waHlzKFQwICYgfjEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg Y2FzZSA0OgotICAgICAgICAgICAgICAgIHJldCA9IGxkbF9waHlzKFQwICYgfjMpOworICAgICAg ICAgICAgICAgIHJldCA9IGxkdWxfcGh5cyhUMCAmIH4zKTsKICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjYXNlIDg6CkBAIC0xNjcwLDYg KzE2NzAsMjEgQEAKICNkZWZpbmUgQUxJR05FRF9PTkxZCiAjZGVmaW5lIEdFVFBDKCkgKF9fYnVp bHRpbl9yZXR1cm5fYWRkcmVzcygwKSkKIAorLyogTmF0aXZlLWVuZGlhbiAqLworI2RlZmluZSBT SElGVCAwCisjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgorCisjZGVmaW5lIFNISUZUIDEK KyNpbmNsdWRlICJzb2Z0bW11X3RlbXBsYXRlLmgiCisKKyNkZWZpbmUgU0hJRlQgMgorI2luY2x1 ZGUgInNvZnRtbXVfdGVtcGxhdGUuaCIKKworI2RlZmluZSBTSElGVCAzCisjaW5jbHVkZSAic29m dG1tdV90ZW1wbGF0ZS5oIgorCisvKiBSZXZlcnNlLWVuZGlhbiAqLworI2RlZmluZSBSRVZFUlNF X0VORElBTgogI2RlZmluZSBTSElGVCAwCiAjaW5jbHVkZSAic29mdG1tdV90ZW1wbGF0ZS5oIgog CkBAIC0xNjgxLDYgKzE2OTYsNyBAQAogCiAjZGVmaW5lIFNISUZUIDMKICNpbmNsdWRlICJzb2Z0 bW11X3RlbXBsYXRlLmgiCisjdW5kZWYgUkVWRVJTRV9FTkRJQU4KIAogc3RhdGljIHZvaWQgZG9f dW5hbGlnbmVkX2FjY2Vzcyh0YXJnZXRfdWxvbmcgYWRkciwgaW50IGlzX3dyaXRlLCBpbnQgaXNf dXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcmV0YWRkcikKSW5k ZXg6IHRhcmdldC1zcGFyYy9vcF9tZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtc3BhcmMvb3Bf bWVtLmgub3JpZwkyMDA3LTEwLTE0IDIwOjI5OjI2LjAwMDAwMDAwMCArMDAwMAorKysgdGFyZ2V0 LXNwYXJjL29wX21lbS5oCTIwMDctMTAtMTUgMTU6NTk6MTcuMDAwMDAwMDAwICswMDAwCkBAIC0y Myw3ICsyMyw3IEBACiAgICAgZ2x1ZShvcCwgTUVNU1VGRklYKShBRERSKFQwKSwgVDEpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfQogCi1TUEFSQ19MRF9PUChsZCwg bGRsKTsKK1NQQVJDX0xEX09QKGxkLCBsZHVsKTsKIFNQQVJDX0xEX09QKGxkdWIsIGxkdWIpOwog U1BBUkNfTERfT1AobGR1aCwgbGR1dyk7CiBTUEFSQ19MRF9PUF9TKGxkc2IsIGxkc2IpOwpAQCAt NDgsMTUgKzQ4LDE1IEBACiAKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX3N3YXAsIE1FTVNVRkZJWCko dm9pZCkKIHsKLSAgICB0YXJnZXRfdWxvbmcgdG1wID0gZ2x1ZShsZGwsIE1FTVNVRkZJWCkoQURE UihUMCkpOworICAgIHRhcmdldF91bG9uZyB0bXAgPSBnbHVlKGxkdWwsIE1FTVNVRkZJWCkoQURE UihUMCkpOwogICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKEFERFIoVDApLCBUMSk7ICAgICAgIC8q IFhYWDogU2hvdWxkIGJlIEF0b21pY2FsbHkgKi8KICAgICBUMSA9IHRtcDsKIH0KIAogdm9pZCBP UFBST1RPIGdsdWUob3BfbGRkLCBNRU1TVUZGSVgpKHZvaWQpCiB7Ci0gICAgVDEgPSBnbHVlKGxk bCwgTUVNU1VGRklYKShBRERSKFQwKSk7Ci0gICAgVDAgPSBnbHVlKGxkbCwgTUVNU1VGRklYKSgo QUREUihUMCArIDQpKSk7CisgICAgVDEgPSBnbHVlKGxkdWwsIE1FTVNVRkZJWCkoQUREUihUMCkp OworICAgIFQwID0gZ2x1ZShsZHVsLCBNRU1TVUZGSVgpKChBRERSKFQwICsgNCkpKTsKIH0KIAog LyoqKiAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdGluZy1wb2ludCBzdG9yZSAgICAgICAg ICAgICAgICAgICAgICAgICAgKioqLwpAQCAtODQsMTIgKzg0LDEyIEBACiAjaWZkZWYgVEFSR0VU X1NQQVJDNjQKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX2xkdXcsIE1FTVNVRkZJWCkodm9pZCkKIHsK LSAgICBUMSA9ICh1aW50NjRfdCkoZ2x1ZShsZGwsIE1FTVNVRkZJWCkoQUREUihUMCkpICYgMHhm ZmZmZmZmZik7CisgICAgVDEgPSAodWludDY0X3QpKGdsdWUobGR1bCwgTUVNU1VGRklYKShBRERS KFQwKSkgJiAweGZmZmZmZmZmKTsKIH0KIAogdm9pZCBPUFBST1RPIGdsdWUob3BfbGRzdywgTUVN U1VGRklYKSh2b2lkKQogewotICAgIFQxID0gKGludDY0X3QpKGdsdWUobGRsLCBNRU1TVUZGSVgp KEFERFIoVDApKSAmIDB4ZmZmZmZmZmYpOworICAgIFQxID0gKGludDY0X3QpKGdsdWUobGR1bCwg TUVNU1VGRklYKShBRERSKFQwKSkgJiAweGZmZmZmZmZmKTsKIH0KIAogU1BBUkNfTERfT1AobGR4 LCBsZHEpOwpJbmRleDogdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRh cmdldC1zcGFyYy90cmFuc2xhdGUuYy5vcmlnCTIwMDctMTAtMTQgMTY6NDc6MTEuMDAwMDAwMDAw ICswMDAwCisrKyB0YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xNSAxNTo0MToxMC4w MDAwMDAwMDAgKzAwMDAKQEAgLTEwOTYsNyArMTA5Niw3IEBACiB7CiAgICAgdW5zaWduZWQgaW50 IGluc24sIG9wYywgcnMxLCByczIsIHJkOwogCi0gICAgaW5zbiA9IGxkbF9jb2RlKGRjLT5wYyk7 CisgICAgaW5zbiA9IGxkdWxfY29kZShkYy0+cGMpOwogICAgIG9wYyA9IEdFVF9GSUVMRChpbnNu LCAwLCAxKTsKIAogICAgIHJkID0gR0VUX0ZJRUxEKGluc24sIDIsIDYpOwo= ------=_Part_37834_4126741.1192464135907--