From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?QXVyw6lsaWVu?= Subject: Re: Optics (SFP) monitoring on ixgbe and igbe Date: Sun, 2 Dec 2012 22:47:09 +0100 Message-ID: References: <1352318339.2725.34.camel@bwh-desktop.uk.solarflarecom.com> <1352473713.3159.4.camel@bwh-desktop.uk.solarflarecom.com> <50A570D7.3080409@gmail.com> <1353022205.4867.76.camel@deadeye.wl.decadent.org.uk> <1353094719.2743.21.camel@bwh-desktop.uk.solarflarecom.com> <1354335498.2640.23.camel@bwh-desktop.uk.solarflarecom.com> Reply-To: footplus@gmail.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=047d7b6d88b04cf5d204cfe59491 Cc: netdev@vger.kernel.org To: Ben Hutchings Return-path: Received: from mail-qa0-f53.google.com ([209.85.216.53]:47414 "EHLO mail-qa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752487Ab2LBVra (ORCPT ); Sun, 2 Dec 2012 16:47:30 -0500 Received: by mail-qa0-f53.google.com with SMTP id a19so819415qad.19 for ; Sun, 02 Dec 2012 13:47:29 -0800 (PST) In-Reply-To: <1354335498.2640.23.camel@bwh-desktop.uk.solarflarecom.com> Sender: netdev-owner@vger.kernel.org List-ID: --047d7b6d88b04cf5d204cfe59491 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Ben, Thanks for your review. Here's a fixed-up version, according to your remark= s. On Sat, Dec 1, 2012 at 5:18 AM, Ben Hutchings w= rote: > > This version drops the -lm completely, so it doesn't link. Maybe you > edited the generated Makefile or Makefile.in? No, I just stupidly forgot to make distclean & autogen after removing all libm checks. Re-added AC_CHECK_LIB to link with it. > > The option alias should be included in the manual page and in a > (trivial) test case in test-cmdline.c. > Included in the man page, along with a modified option description, and a test equivalent to --dump-module-eeprom, which passes. > > The indentation is still weird, though: > > [...] > > These comments should be lined up vertically. Yup, I had a mixup between tab/whitespaces, and my Vim config did not help. Fixed. > > be32toh() is non-standard and was apparently added to glibc relatively > recently (version 2.9). Therefore please use the equivalent ntohl() > instead. Did that, it indeed works just fine. I should have used that from the start= . > > Function-like macros generally shouldn't be defined with a trailing > semi-colon, as that will be added at the point of use. > That was a copy/paste typo, fixed. > The backslashes should be lined up on the right, and continuation lines > within parentheses should be indented so they begin just to the right of > the opening parenthesis, e.g.: > > #define PRINT_VCC(string, index) \ > printf("\t%-41s : %.4f V\n", (string), \ > (double)(sd.sfp_voltage[(index)] / 10000.)) > > [...] >> + PRINT_xX_PWR("Laser output power low warning threshold", >> + sd.tx_power, LWARN); > > The continuation lines are over-indented here. > Fixed (was using wrong tabstop width at 4). >> - printf("\tActive Cu cmplnce. : 0x%02x", id[60]); >> + printf("\t%-41s : 0x%02x", "Active copper compliance", i= d[60]); > > If you want to change these labels, do that in a separate patch. > There's no real need, so I'll leave those alone, just changing the alignment like for the other labels. > [...] >> - "Length (62.5um)", 10, "m")= ; >> + "Length (62.5um)", 10, "m"); > > These changes are unnecessary. > Agreed, removed from the patch. Best regards, --=20 Aur=C3=A9lien Guillaume --047d7b6d88b04cf5d204cfe59491 Content-Type: application/octet-stream; name="0001-Implemented-basic-optics-diagnostics-for-SFF-8472.patch" Content-Disposition: attachment; filename="0001-Implemented-basic-optics-diagnostics-for-SFF-8472.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ha8p16fv0 RnJvbSA5YTZlMTQ3NzBmMTJhYTcyODc1MWUzYzkyNTY5NjhiNGZkNjExMjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdXJlbGllbiBHdWlsbGF1bWUgPGF1cmVsaWVuQGl3aS5tZT4K RGF0ZTogU3VuLCAyIERlYyAyMDEyIDIxOjIxOjAxICswMTAwClN1YmplY3Q6IFtQQVRDSF0gSW1w bGVtZW50ZWQgYmFzaWMgb3B0aWNzIGRpYWdub3N0aWNzIGZvciBTRkYtODQ3MgoKClNpZ25lZC1v ZmYtYnk6IEF1cmVsaWVuIEd1aWxsYXVtZSA8YXVyZWxpZW5AaXdpLm1lPgotLS0KIE1ha2VmaWxl LmFtICAgIHwgICAgMiArLQogY29uZmlndXJlLmFjICAgfCAgICAxICsKIGV0aHRvb2wuOC5pbiAg IHwgICAgOCArLQogZXRodG9vbC5jICAgICAgfCAgIDE3ICsrKy0KIGludGVybmFsLmggICAgIHwg ICAgMyArCiBzZnBkaWFnLmMgICAgICB8ICAzNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNmcGlkLmMgICAgICAgIHwgICAyOCArKyst LQogdGVzdC1jbWRsaW5lLmMgfCAgICAyICsKIDggZmlsZXMgY2hhbmdlZCwgNDA0IGluc2VydGlv bnMoKyksIDE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNmcGRpYWcuYwoKZGlm ZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KaW5kZXggZTMzZjcxZi4uODlhMGQx ZSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUuYW0KKysrIGIvTWFrZWZpbGUuYW0KQEAgLTksNyArOSw3 IEBAIGV0aHRvb2xfU09VUkNFUyA9IGV0aHRvb2wuYyBldGh0b29sLWNvcHkuaCBpbnRlcm5hbC5o IG5ldF90c3RhbXAtY29weS5oIFwKIAkJICBmZWNfOHh4LmMgaWJtX2VtYWMuYyBpeGdiLmMgaXhn YmUuYyBuYXRzZW1pLmMJXAogCQkgIHBjbmV0MzIuYyByZWFsdGVrLmMgdGczLmMgbWFydmVsbC5j IHZpb2MuYwlcCiAJCSAgc21zYzkxMXguYyBhdDc2YzUweC11c2IuYyBzZmMuYyBzdG1tYWMuYwlc Ci0JCSAgcnhjbGFzcy5jIHNmcGlkLmMKKwkJICByeGNsYXNzLmMgc2ZwaWQuYyBzZnBkaWFnLmMK IAogVEVTVFMgPSB0ZXN0LWNtZGxpbmUgdGVzdC1mZWF0dXJlcwogY2hlY2tfUFJPR1JBTVMgPSB0 ZXN0LWNtZGxpbmUgdGVzdC1mZWF0dXJlcwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29u ZmlndXJlLmFjCmluZGV4IDBjNTk3YzYuLjU4MDZlYWUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5h YworKysgYi9jb25maWd1cmUuYWMKQEAgLTEzLDYgKzEzLDcgQEAgQUNfUFJPR19HQ0NfVFJBRElU SU9OQUwKIEFNX1BST0dfQ0NfQ19PCiAKIGRubCBDaGVja3MgZm9yIGxpYnJhcmllcy4KK0FDX0NI RUNLX0xJQihbbV0sIFtsb2cxMF0pCiAKIGRubCBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KIEFD X0NIRUNLX0hFQURFUlMoc3lzL2lvY3RsLmgpCmRpZmYgLS1naXQgYS9ldGh0b29sLjguaW4gYi9l dGh0b29sLjguaW4KaW5kZXggYTNjN2ZiYi4uZTcwMTkxOSAxMDA2NDQKLS0tIGEvZXRodG9vbC44 LmluCisrKyBiL2V0aHRvb2wuOC5pbgpAQCAtMzEyLDcgKzMxMiw3IEBAIGV0aHRvb2wgXC0gcXVl cnkgb3IgY29udHJvbCBuZXR3b3JrIGRyaXZlciBhbmQgaGFyZHdhcmUgc2V0dGluZ3MKIC5CTiBv dGhlcgogLkJOIGNvbWJpbmVkCiAuSFAKLS5CIGV0aHRvb2wgXC1tfFwtXC1kdW1wXC1tb2R1bGVc LWVlcHJvbQorLkIgZXRodG9vbCBcLW18XC1cLWR1bXBcLW1vZHVsZVwtZWVwcm9tfFwtXC1tb2R1 bGVcLWluZm8KIC5JIGRldm5hbWUKIC5CMiByYXcgb24gb2ZmCiAuQjIgaGV4IG9uIG9mZgpAQCAt ODE1LDggKzgxNSwxMCBAQCBDaGFuZ2VzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgdXNlZCBvbmx5 IGZvciBvdGhlciBwdXJwb3NlcyBlLmcuIGxpbmsgaW50ZXJydXB0cwogLkJJIGNvbWJpbmVkIFwg TgogQ2hhbmdlcyB0aGUgbnVtYmVyIG9mIG11bHRpLXB1cnBvc2UgY2hhbm5lbHMuCiAuVFAKLS5C IFwtbSBcLVwtZHVtcFwtbW9kdWxlXC1lZXByb20KLVJldHJpZXZlcyBhbmQgaWYgcG9zc2libGUg ZGVjb2RlcyB0aGUgRUVQUk9NIGZyb20gcGx1Z2luIG1vZHVsZXMsIGUuZyBTRlArLCBRU0ZQCisu QiBcLW0gXC1cLWR1bXBcLW1vZHVsZVwtZWVwcm9tIFwtXC1tb2R1bGVcLWluZm8KK1JldHJpZXZl cyBhbmQgaWYgcG9zc2libGUgZGVjb2RlcyB0aGUgRUVQUk9NIGZyb20gcGx1Z2luIG1vZHVsZXMs IGUuZyBTRlArLCBRU0ZQLgorSWYgdGhlIGRyaXZlciBhbmQgbW9kdWxlIHN1cHBvcnQgaXQsIHRo ZSBvcHRpY2FsIGRpYWdub3N0aWMgaW5mb3JtYXRpb24gaXMgYWxzbworcmVhZCBhbmQgZGVjb2Rl ZC4KIC5UUAogLkIgXC1cLXNob3dcLXByaXZcLWZsYWdzCiBRdWVyaWVzIHRoZSBzcGVjaWZpZWQg bmV0d29yayBkZXZpY2UgZm9yIGl0cyBwcml2YXRlIGZsYWdzLiAgVGhlCmRpZmYgLS1naXQgYS9l dGh0b29sLmMgYi9ldGh0b29sLmMKaW5kZXggM2RiN2ZlYy4uMzQ1YzIxYyAxMDA2NDQKLS0tIGEv ZXRodG9vbC5jCisrKyBiL2V0aHRvb2wuYwpAQCAtMzYwNCw2ICszNjA0LDE2IEBAIHN0YXRpYyBp bnQgZG9fZ2V0bW9kdWxlKHN0cnVjdCBjbWRfY29udGV4dCAqY3R4KQogCQlyZXR1cm4gMTsKIAl9 CiAKKwkvKgorCSAqIFNGRi04MDc5IEVFUFJPTSBsYXlvdXQgY29udGFpbnMgdGhlIG1lbW9yeSBh dmFpbGFibGUgYXQgQTAgYWRkcmVzcyBvbgorCSAqIHRoZSBQSFkgRUVQUk9NLgorCSAqIFNGRi04 NDcyIGRlZmluZXMgYSB2aXJ0dWFsIGV4dGVuc2lvbiBvZiB0aGUgRUVQUk9NLCB3aGVyZSB0aGUK KwkgKiBtaWNyb2NvbnRyb2xsZXIgb24gdGhlIFNGUC9TRlArIGdlbmVyYXRlcyBhIHBhZ2UgYXQg dGhlIEEyIGFkZHJlc3MsCisJICogd2hpY2ggY29udGFpbnMgZGF0YSByZWxhdGl2ZSB0byBvcHRp Y2FsIGRpYWdub3N0aWNzLgorCSAqIFRoZSBjdXJyZW50IGtlcm5lbCBpbXBsZW1lbnRhdGlvbiBy ZXR1cm5zIGEgYmxvYiwgd2hpY2ggY29udGFpbnM6CisJICogIC0gRVRIX01PRFVMRV9TRkZfODA3 OSA9PiBUaGUgQTAgcGFnZSBvbmx5LgorCSAqICAtIEVUSF9NT0RVTEVfU0ZGXzg0NzIgPT4gVGhl IEEwIGFuZCBBMiBwYWdlIGNvbmNhdGVuYXRlZC4KKwkgKi8KIAlpZiAoZ2VlcHJvbV9kdW1wX3Jh dykgewogCQlmd3JpdGUoZWVwcm9tLT5kYXRhLCAxLCBlZXByb20tPmxlbiwgc3Rkb3V0KTsKIAl9 IGVsc2UgewpAQCAtMzYxMyw4ICszNjIzLDExIEBAIHN0YXRpYyBpbnQgZG9fZ2V0bW9kdWxlKHN0 cnVjdCBjbWRfY29udGV4dCAqY3R4KQogCQl9IGVsc2UgaWYgKCFnZWVwcm9tX2R1bXBfaGV4KSB7 CiAJCQlzd2l0Y2ggKG1vZGluZm8udHlwZSkgewogCQkJY2FzZSBFVEhfTU9EVUxFX1NGRl84MDc5 OgorCQkJCXNmZjgwNzlfc2hvd19hbGwoZWVwcm9tLT5kYXRhKTsKKwkJCQlicmVhazsKIAkJCWNh c2UgRVRIX01PRFVMRV9TRkZfODQ3MjoKIAkJCQlzZmY4MDc5X3Nob3dfYWxsKGVlcHJvbS0+ZGF0 YSk7CisJCQkJc2ZmODQ3Ml9zaG93X2FsbChlZXByb20tPmRhdGEpOwogCQkJCWJyZWFrOwogCQkJ ZGVmYXVsdDoKIAkJCQlnZWVwcm9tX2R1bXBfaGV4ID0gMTsKQEAgLTM4MzEsOCArMzg0NCw4IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIHsKIAl7ICItLXNob3ctcHJpdi1mbGFncyIgLCAx LCBkb19ncHJpdmZsYWdzLCAiUXVlcnkgcHJpdmF0ZSBmbGFncyIgfSwKIAl7ICItLXNldC1wcml2 LWZsYWdzIiwgMSwgZG9fc3ByaXZmbGFncywgIlNldCBwcml2YXRlIGZsYWdzIiwKIAkgICIJCUZM QUcgb258b2ZmIC4uLlxuIiB9LAotCXsgIi1tfC0tZHVtcC1tb2R1bGUtZWVwcm9tIiwgMSwgZG9f Z2V0bW9kdWxlLAotCSAgIlFldWVyeS9EZWNvZGUgTW9kdWxlIEVFUFJPTSBpbmZvcm1hdGlvbiIs CisJeyAiLW18LS1kdW1wLW1vZHVsZS1lZXByb218LS1tb2R1bGUtaW5mbyIsIDEsIGRvX2dldG1v ZHVsZSwKKwkgICJRdWVyeS9EZWNvZGUgTW9kdWxlIEVFUFJPTSBpbmZvcm1hdGlvbiBhbmQgb3B0 aWNhbCBkaWFnbm9zdGljcyBpZiBhdmFpbGFibGUiLAogCSAgIgkJWyByYXcgb258b2ZmIF1cbiIK IAkgICIJCVsgaGV4IG9ufG9mZiBdXG4iCiAJICAiCQlbIG9mZnNldCBOIF1cbiIKZGlmZiAtLWdp dCBhL2ludGVybmFsLmggYi9pbnRlcm5hbC5oCmluZGV4IDRmOTZmZDUuLmU5NzdhODEgMTAwNjQ0 Ci0tLSBhL2ludGVybmFsLmgKKysrIGIvaW50ZXJuYWwuaApAQCAtMjUzLDQgKzI1Myw3IEBAIGlu dCByeGNsYXNzX3J1bGVfZGVsKHN0cnVjdCBjbWRfY29udGV4dCAqY3R4LCBfX3UzMiBsb2MpOwog LyogTW9kdWxlIEVFUFJPTSBwYXJzaW5nIGNvZGUgKi8KIHZvaWQgc2ZmODA3OV9zaG93X2FsbChj b25zdCBfX3U4ICppZCk7CiAKKy8qIE9wdGljcyBkaWFnbm9zdGljcyAqLwordm9pZCBzZmY4NDcy X3Nob3dfYWxsKGNvbnN0IF9fdTggKmlkKTsKKwogI2VuZGlmIC8qIEVUSFRPT0xfSU5URVJOQUxf SF9fICovCmRpZmYgLS1naXQgYS9zZnBkaWFnLmMgYi9zZnBkaWFnLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjY3ZTQ5MQotLS0gL2Rldi9udWxsCisrKyBiL3NmcGRpYWcu YwpAQCAtMCwwICsxLDM2MiBAQAorLyoKKyAqIHNmcGRpYWcuYzogSW1wbGVtZW50cyBTRkYtODQ3 MiBvcHRpY3MgZGlhZ25vc3RpY3MuCisgKgorICogQXVyZWxpZW4gR3VpbGxhdW1lIDxhdXJlbGll bkBpd2kubWU+IChDKSAyMDEyCisgKiAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgbG9vc2VseSBi YXNlZCBvbiBET00gcGF0Y2hlcworICogICBmcm9tIFJvYmVydCBPbHNzb24gPHJvYmVydEBoZXJq dWxmLnNlPiAoQykgMjAwOQorICogICBhbmQgU0ZGLTg0NzIgc3BlY3MgKGZ0cDovL2Z0cC5zZWFn YXRlLmNvbS9wdWIvc2ZmL1NGRi04NDcyLlBERikKKyAqICAgYnkgU0ZGIENvbW1pdHRlZS4KKyAq LworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8YXJw YS9pbmV0Lmg+CisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKworLyogT2Zmc2V0cyBpbiBkZWNpbWFs LCBmb3IgZGlyZWN0IGNvbXBhcmlzb24gd2l0aCB0aGUgU0ZGIHNwZWNzICovCisKKy8qIEEwLWJh c2VkIEVFUFJPTSBvZmZzZXRzIGZvciBET00gc3VwcG9ydCBjaGVja3MgKi8KKyNkZWZpbmUgU0ZG X0EwX0RPTSAgICAgICAgICAgICAgICAgICAgICAgIDkyCisjZGVmaW5lIFNGRl9BMF9PUFRJT05T ICAgICAgICAgICAgICAgICAgICA5MworI2RlZmluZSBTRkZfQTBfQ09NUCAgICAgICAgICAgICAg ICAgICAgICAgOTQKKworLyogRUVQUk9NIGJpdCB2YWx1ZXMgZm9yIHZhcmlvdXMgcmVnaXN0ZXJz ICovCisjZGVmaW5lIFNGRl9BMF9ET01fRVhUQ0FMICAgICAgICAgICAgICAgICAoMSA8PCA0KQor I2RlZmluZSBTRkZfQTBfRE9NX0lOVENBTCAgICAgICAgICAgICAgICAgKDEgPDwgNSkKKyNkZWZp bmUgU0ZGX0EwX0RPTV9JTVBMICAgICAgICAgICAgICAgICAgICgxIDw8IDYpCisjZGVmaW5lIFNG Rl9BMF9ET01fUFdSVCAgICAgICAgICAgICAgICAgICAoMSA8PCAzKQorCisjZGVmaW5lIFNGRl9B MF9PUFRJT05TX0FXICAgICAgICAgICAgICAgICAoMSA8PCA3KQorCisvKgorICogU2VlIGV0aHRv b2wuYyBjb21tZW50cyBhYm91dCBTRkYtODQ3MiwgdGhpcyBpcyB0aGUgb2Zmc2V0CisgKiBhdCB3 aGljaCB0aGUgQTIgcGFnZSBpcyBpbiB0aGUgRUVQUk9NIGJsb2IgcmV0dXJuZWQgYnkgdGhlCisg KiBrZXJuZWwuCisgKi8KKyNkZWZpbmUgU0ZGX0EyX0JBU0UgICAgICAgICAgICAgICAgICAgICAg IDB4MTAwCisKKy8qIEEyLWJhc2VkIG9mZnNldHMgZm9yIERPTSAqLworI2RlZmluZSBTRkZfQTJf VEVNUCAgICAgICAgICAgICAgICAgICAgICAgOTYKKyNkZWZpbmUgU0ZGX0EyX1RFTVBfSEFMUk0g ICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgU0ZGX0EyX1RFTVBfTEFMUk0gICAgICAgICAgICAg ICAgIDIKKyNkZWZpbmUgU0ZGX0EyX1RFTVBfSFdBUk4gICAgICAgICAgICAgICAgIDQKKyNkZWZp bmUgU0ZGX0EyX1RFTVBfTFdBUk4gICAgICAgICAgICAgICAgIDYKKworI2RlZmluZSBTRkZfQTJf VkNDICAgICAgICAgICAgICAgICAgICAgICAgOTgKKyNkZWZpbmUgU0ZGX0EyX1ZDQ19IQUxSTSAg ICAgICAgICAgICAgICAgIDgKKyNkZWZpbmUgU0ZGX0EyX1ZDQ19MQUxSTSAgICAgICAgICAgICAg ICAgIDEwCisjZGVmaW5lIFNGRl9BMl9WQ0NfSFdBUk4gICAgICAgICAgICAgICAgICAxMgorI2Rl ZmluZSBTRkZfQTJfVkNDX0xXQVJOICAgICAgICAgICAgICAgICAgMTQKKworI2RlZmluZSBTRkZf QTJfQklBUyAgICAgICAgICAgICAgICAgICAgICAgOTYKKyNkZWZpbmUgU0ZGX0EyX0JJQVNfSEFM Uk0gICAgICAgICAgICAgICAgIDE2CisjZGVmaW5lIFNGRl9BMl9CSUFTX0xBTFJNICAgICAgICAg ICAgICAgICAxOAorI2RlZmluZSBTRkZfQTJfQklBU19IV0FSTiAgICAgICAgICAgICAgICAgMjAK KyNkZWZpbmUgU0ZGX0EyX0JJQVNfTFdBUk4gICAgICAgICAgICAgICAgIDIyCisKKyNkZWZpbmUg U0ZGX0EyX1RYX1BXUiAgICAgICAgICAgICAgICAgICAgIDEwMgorI2RlZmluZSBTRkZfQTJfVFhf UFdSX0hBTFJNICAgICAgICAgICAgICAgMjQKKyNkZWZpbmUgU0ZGX0EyX1RYX1BXUl9MQUxSTSAg ICAgICAgICAgICAgIDI2CisjZGVmaW5lIFNGRl9BMl9UWF9QV1JfSFdBUk4gICAgICAgICAgICAg ICAyOAorI2RlZmluZSBTRkZfQTJfVFhfUFdSX0xXQVJOICAgICAgICAgICAgICAgMzAKKworI2Rl ZmluZSBTRkZfQTJfUlhfUFdSICAgICAgICAgICAgICAgICAgICAgMTA0CisjZGVmaW5lIFNGRl9B Ml9SWF9QV1JfSEFMUk0gICAgICAgICAgICAgICAzMgorI2RlZmluZSBTRkZfQTJfUlhfUFdSX0xB TFJNICAgICAgICAgICAgICAgMzQKKyNkZWZpbmUgU0ZGX0EyX1JYX1BXUl9IV0FSTiAgICAgICAg ICAgICAgIDM2CisjZGVmaW5lIFNGRl9BMl9SWF9QV1JfTFdBUk4gICAgICAgICAgICAgICAzOAor CisjZGVmaW5lIFNGRl9BMl9BTFJNX0ZMRyAgICAgICAgICAgICAgICAgICAxMTIKKyNkZWZpbmUg U0ZGX0EyX1dBUk5fRkxHICAgICAgICAgICAgICAgICAgIDExNgorCisvKiAzMi1iaXQgbGl0dGxl LWVuZGlhbiBjYWxpYnJhdGlvbiBjb25zdGFudHMgKi8KKyNkZWZpbmUgU0ZGX0EyX0NBTF9SWFBX UjQgICAgICAgICAgICAgICAgIDU2CisjZGVmaW5lIFNGRl9BMl9DQUxfUlhQV1IzICAgICAgICAg ICAgICAgICA2MAorI2RlZmluZSBTRkZfQTJfQ0FMX1JYUFdSMiAgICAgICAgICAgICAgICAgNjQK KyNkZWZpbmUgU0ZGX0EyX0NBTF9SWFBXUjEgICAgICAgICAgICAgICAgIDY4CisjZGVmaW5lIFNG Rl9BMl9DQUxfUlhQV1IwICAgICAgICAgICAgICAgICA3MgorCisvKiAxNi1iaXQgbGl0dGxlIGVu ZGlhbiBjYWxpYnJhdGlvbiBjb25zdGFudHMgKi8KKyNkZWZpbmUgU0ZGX0EyX0NBTF9UWElfU0xQ ICAgICAgICAgICAgICAgIDc2CisjZGVmaW5lIFNGRl9BMl9DQUxfVFhJX09GRiAgICAgICAgICAg ICAgICA3OAorI2RlZmluZSBTRkZfQTJfQ0FMX1RYUFdSX1NMUCAgICAgICAgICAgICAgODAKKyNk ZWZpbmUgU0ZGX0EyX0NBTF9UWFBXUl9PRkYgICAgICAgICAgICAgIDgyCisjZGVmaW5lIFNGRl9B Ml9DQUxfVF9TTFAgICAgICAgICAgICAgICAgICA4NAorI2RlZmluZSBTRkZfQTJfQ0FMX1RfT0ZG ICAgICAgICAgICAgICAgICAgODYKKyNkZWZpbmUgU0ZGX0EyX0NBTF9WX1NMUCAgICAgICAgICAg ICAgICAgIDg4CisjZGVmaW5lIFNGRl9BMl9DQUxfVl9PRkYgICAgICAgICAgICAgICAgICA5MAor CisKK3N0cnVjdCBzZmY4NDcyX2RpYWdzIHsKKworI2RlZmluZSBNQ1VSUiAwCisjZGVmaW5lIExX QVJOIDEKKyNkZWZpbmUgSFdBUk4gMgorI2RlZmluZSBMQUxSTSAzCisjZGVmaW5lIEhBTFJNIDQK KworCS8qIFs1XSB0YWJsZXMgYXJlIGN1cnJlbnQsIGxvdy9oaWdoIHdhcm4sIGxvdy9oaWdoIGFs YXJtICovCisJX191OCBzdXBwb3J0c19kb207ICAgICAgLyogU3VwcG9ydHMgRE9NICovCisJX191 OCBzdXBwb3J0c19hbGFybXM7ICAgLyogU3VwcG9ydHMgYWxhcm0vd2FybmluZyB0aG9sZCAqLwor CV9fdTggY2FsaWJyYXRlZF9leHQ7ICAgIC8qIElzIGV4dGVybmFsbHkgY2FsaWJyYXRlZCAqLwor CV9fdTE2IGJpYXNfY3VyWzVdOyAgICAgIC8qIE1lYXN1cmVkIGJpYXMgY3VycmVudCBpbiAydUEg dW5pdHMgKi8KKwlfX3UxNiB0eF9wb3dlcls1XTsgICAgICAvKiBNZWFzdXJlZCBUWCBQb3dlciBp biAwLjF1VyB1bml0cyAqLworCV9fdTE2IHJ4X3Bvd2VyWzVdOyAgICAgIC8qIE1lYXN1cmVkIFJY IFBvd2VyICovCisJX191OCAgcnhfcG93ZXJfdHlwZTsgICAgLyogMCA9IE9NQSwgMSA9IEF2ZXJh Z2UgcG93ZXIgKi8KKwlfX3MxNiBzZnBfdGVtcFs1XTsgICAgICAvKiBTRlAgVGVtcCBpbiAxNi1i aXQgc2lnbmVkIDEvMjU2IENlbGNpdXMgKi8KKwlfX3UxNiBzZnBfdm9sdGFnZVs1XTsgICAvKiBT RlAgdm9sdGFnZSBpbiAwLjFtViB1bml0cyAqLworCit9OworCitzdGF0aWMgc3RydWN0IHNmZjg0 NzJfYXdfZmxhZ3MgeworCWNvbnN0IGNoYXIgKnN0cjsgICAgICAgIC8qIEh1bWFuLXJlYWRhYmxl IHN0cmluZywgbnVsbCBhdCB0aGUgZW5kICovCisJaW50IG9mZnNldDsgICAgICAgICAgICAgLyog QTItcmVsYXRpdmUgYWRyZXNzIG9mZnNldCAqLworCV9fdTggdmFsdWU7ICAgICAgICAgICAgIC8q IEFsYXJtIGlzIG9uIGlmIChvZmZzZXQgJiB2YWx1ZSkgIT0gMC4gKi8KK30gc2ZmODQ3Ml9hd19m bGFnc1tdID0geworCXsgIkxhc2VyIGJpYXMgY3VycmVudCBoaWdoIGFsYXJtIiwgICBTRkZfQTJf QUxSTV9GTEcsICgxIDw8IDMpIH0sCisJeyAiTGFzZXIgYmlhcyBjdXJyZW50IGxvdyBhbGFybSIs ICAgIFNGRl9BMl9BTFJNX0ZMRywgKDEgPDwgMikgfSwKKwl7ICJMYXNlciBiaWFzIGN1cnJlbnQg aGlnaCB3YXJuaW5nIiwgU0ZGX0EyX1dBUk5fRkxHLCAoMSA8PCAzKSB9LAorCXsgIkxhc2VyIGJp YXMgY3VycmVudCBsb3cgd2FybmluZyIsICBTRkZfQTJfV0FSTl9GTEcsICgxIDw8IDIpIH0sCisK Kwl7ICJMYXNlciBvdXRwdXQgcG93ZXIgaGlnaCBhbGFybSIsICAgU0ZGX0EyX0FMUk1fRkxHLCAo MSA8PCAxKSB9LAorCXsgIkxhc2VyIG91dHB1dCBwb3dlciBsb3cgYWxhcm0iLCAgICBTRkZfQTJf QUxSTV9GTEcsICgxIDw8IDApIH0sCisJeyAiTGFzZXIgb3V0cHV0IHBvd2VyIGhpZ2ggd2Fybmlu ZyIsIFNGRl9BMl9XQVJOX0ZMRywgKDEgPDwgMSkgfSwKKwl7ICJMYXNlciBvdXRwdXQgcG93ZXIg bG93IHdhcm5pbmciLCAgU0ZGX0EyX1dBUk5fRkxHLCAoMSA8PCAwKSB9LAorCisJeyAiTW9kdWxl IHRlbXBlcmF0dXJlIGhpZ2ggYWxhcm0iLCAgIFNGRl9BMl9BTFJNX0ZMRywgKDEgPDwgNykgfSwK Kwl7ICJNb2R1bGUgdGVtcGVyYXR1cmUgbG93IGFsYXJtIiwgICAgU0ZGX0EyX0FMUk1fRkxHLCAo MSA8PCA2KSB9LAorCXsgIk1vZHVsZSB0ZW1wZXJhdHVyZSBoaWdoIHdhcm5pbmciLCBTRkZfQTJf V0FSTl9GTEcsICgxIDw8IDcpIH0sCisJeyAiTW9kdWxlIHRlbXBlcmF0dXJlIGxvdyB3YXJuaW5n IiwgIFNGRl9BMl9XQVJOX0ZMRywgKDEgPDwgNikgfSwKKworCXsgIk1vZHVsZSB2b2x0YWdlIGhp Z2ggYWxhcm0iLCAgIFNGRl9BMl9BTFJNX0ZMRywgKDEgPDwgNSkgfSwKKwl7ICJNb2R1bGUgdm9s dGFnZSBsb3cgYWxhcm0iLCAgICBTRkZfQTJfQUxSTV9GTEcsICgxIDw8IDQpIH0sCisJeyAiTW9k dWxlIHZvbHRhZ2UgaGlnaCB3YXJuaW5nIiwgU0ZGX0EyX1dBUk5fRkxHLCAoMSA8PCA1KSB9LAor CXsgIk1vZHVsZSB2b2x0YWdlIGxvdyB3YXJuaW5nIiwgIFNGRl9BMl9XQVJOX0ZMRywgKDEgPDwg NCkgfSwKKworCXsgIkxhc2VyIHJ4IHBvd2VyIGhpZ2ggYWxhcm0iLCAgIFNGRl9BMl9BTFJNX0ZM RyArIDEsICgxIDw8IDcpIH0sCisJeyAiTGFzZXIgcnggcG93ZXIgbG93IGFsYXJtIiwgICAgU0ZG X0EyX0FMUk1fRkxHICsgMSwgKDEgPDwgNikgfSwKKwl7ICJMYXNlciByeCBwb3dlciBoaWdoIHdh cm5pbmciLCBTRkZfQTJfV0FSTl9GTEcgKyAxLCAoMSA8PCA3KSB9LAorCXsgIkxhc2VyIHJ4IHBv d2VyIGxvdyB3YXJuaW5nIiwgIFNGRl9BMl9XQVJOX0ZMRyArIDEsICgxIDw8IDYpIH0sCisKKwl7 IE5VTEwsIDAsIDAgfSwKK307CisKK3N0YXRpYyBkb3VibGUgY29udmVydF9td190b19kYm0oZG91 YmxlIG13KQoreworCXJldHVybiAoMTAuICogbG9nMTAobXcgLyAxMDAwLikpICsgMzAuOworfQor CisKKy8qIE1vc3QgY29tbW9uIGNhc2U6IDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGluIGEgY2Vy dGFpbiB1bml0ICovCisjZGVmaW5lIEEyX09GRlNFVF9UT19VMTYob2Zmc2V0KSBcCisJKGlkW1NG Rl9BMl9CQVNFICsgKG9mZnNldCldIDw8IDggfCBpZFtTRkZfQTJfQkFTRSArIChvZmZzZXQpICsg MV0pCisKKy8qIENhbGlicmF0aW9uIHNsb3BlIGlzIGEgbnVtYmVyIGJldHdlZW4gMC4wIGluY2x1 ZGVkIGFuZCAyNTYuMCBleGNsdWRlZC4gKi8KKyNkZWZpbmUgQTJfT0ZGU0VUX1RPX1NMUChvZmZz ZXQpIFwKKwkoaWRbU0ZGX0EyX0JBU0UgKyAob2Zmc2V0KV0gKyBpZFtTRkZfQTJfQkFTRSArIChv ZmZzZXQpICsgMV0gLyAyNTYuKQorCisvKiBDYWxpYnJhdGlvbiBvZmZzZXQgaXMgYW4gaW50ZWdl ciBmcm9tIC0zMjc2OCB0byAzMjc2NyAqLworI2RlZmluZSBBMl9PRkZTRVRfVE9fT0ZGKG9mZnNl dCkgXAorCSgoX19zMTYpQTJfT0ZGU0VUX1RPX1UxNihvZmZzZXQpKQorCisvKiBSWFBXUih4KSBh cmUgSUVFRS03NTQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbiBiaWctZW5kaWFuIGZvcm1hdCAq LworI2RlZmluZSBBMl9PRkZTRVRfVE9fUlhQV1J4KG9mZnNldCkgXAorCShiZWZsb2F0dG9oKChf X3UzMiAqKShpZCArIFNGRl9BMl9CQVNFICsgKG9mZnNldCkpKSkKKworLyoKKyAqIDItYnl0ZSBp bnRlcm5hbCB0ZW1wZXJhdHVyZSBjb252ZXJzaW9uczoKKyAqIEZpcnN0IGJ5dGUgaXMgYSBzaWdu ZWQgOC1iaXQgaW50ZWdlciwgd2hpY2ggaXMgdGhlIHRlbXAgZGVjaW1hbCBwYXJ0CisgKiBTZWNv bmQgYnl0ZSBhcmUgMS8yNTZ0aCBvZiBkZWdyZWUsIHdoaWNoIGFyZSBhZGRlZCB0byB0aGUgZGVj IHBhcnQuCisgKi8KKyNkZWZpbmUgQTJfT0ZGU0VUX1RPX1RFTVAob2Zmc2V0KSAoKF9fczE2KUEy X09GRlNFVF9UT19VMTYob2Zmc2V0KSkKKworCitzdGF0aWMgdm9pZCBzZmY4NDcyX2RvbV9wYXJz ZShjb25zdCBfX3U4ICppZCwgc3RydWN0IHNmZjg0NzJfZGlhZ3MgKnNkKQoreworCisJc2QtPmJp YXNfY3VyW01DVVJSXSA9IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX0JJQVMpOworCXNkLT5iaWFz X2N1cltIQUxSTV0gPSBBMl9PRkZTRVRfVE9fVTE2KFNGRl9BMl9CSUFTX0hBTFJNKTsKKwlzZC0+ Ymlhc19jdXJbTEFMUk1dID0gQTJfT0ZGU0VUX1RPX1UxNihTRkZfQTJfQklBU19MQUxSTSk7CisJ c2QtPmJpYXNfY3VyW0hXQVJOXSA9IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX0JJQVNfSFdBUk4p OworCXNkLT5iaWFzX2N1cltMV0FSTl0gPSBBMl9PRkZTRVRfVE9fVTE2KFNGRl9BMl9CSUFTX0xX QVJOKTsKKworCXNkLT5zZnBfdm9sdGFnZVtNQ1VSUl0gPSBBMl9PRkZTRVRfVE9fVTE2KFNGRl9B Ml9WQ0MpOworCXNkLT5zZnBfdm9sdGFnZVtIQUxSTV0gPSBBMl9PRkZTRVRfVE9fVTE2KFNGRl9B Ml9WQ0NfSEFMUk0pOworCXNkLT5zZnBfdm9sdGFnZVtMQUxSTV0gPSBBMl9PRkZTRVRfVE9fVTE2 KFNGRl9BMl9WQ0NfTEFMUk0pOworCXNkLT5zZnBfdm9sdGFnZVtIV0FSTl0gPSBBMl9PRkZTRVRf VE9fVTE2KFNGRl9BMl9WQ0NfSFdBUk4pOworCXNkLT5zZnBfdm9sdGFnZVtMV0FSTl0gPSBBMl9P RkZTRVRfVE9fVTE2KFNGRl9BMl9WQ0NfTFdBUk4pOworCisJc2QtPnR4X3Bvd2VyW01DVVJSXSA9 IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX1RYX1BXUik7CisJc2QtPnR4X3Bvd2VyW0hBTFJNXSA9 IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX1RYX1BXUl9IQUxSTSk7CisJc2QtPnR4X3Bvd2VyW0xB TFJNXSA9IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX1RYX1BXUl9MQUxSTSk7CisJc2QtPnR4X3Bv d2VyW0hXQVJOXSA9IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX1RYX1BXUl9IV0FSTik7CisJc2Qt PnR4X3Bvd2VyW0xXQVJOXSA9IEEyX09GRlNFVF9UT19VMTYoU0ZGX0EyX1RYX1BXUl9MV0FSTik7 CisKKwlzZC0+cnhfcG93ZXJbTUNVUlJdID0gQTJfT0ZGU0VUX1RPX1UxNihTRkZfQTJfUlhfUFdS KTsKKwlzZC0+cnhfcG93ZXJbSEFMUk1dID0gQTJfT0ZGU0VUX1RPX1UxNihTRkZfQTJfUlhfUFdS X0hBTFJNKTsKKwlzZC0+cnhfcG93ZXJbTEFMUk1dID0gQTJfT0ZGU0VUX1RPX1UxNihTRkZfQTJf UlhfUFdSX0xBTFJNKTsKKwlzZC0+cnhfcG93ZXJbSFdBUk5dID0gQTJfT0ZGU0VUX1RPX1UxNihT RkZfQTJfUlhfUFdSX0hXQVJOKTsKKwlzZC0+cnhfcG93ZXJbTFdBUk5dID0gQTJfT0ZGU0VUX1RP X1UxNihTRkZfQTJfUlhfUFdSX0xXQVJOKTsKKworCXNkLT5zZnBfdGVtcFtNQ1VSUl0gPSBBMl9P RkZTRVRfVE9fVEVNUChTRkZfQTJfVEVNUCk7CisJc2QtPnNmcF90ZW1wW0hBTFJNXSA9IEEyX09G RlNFVF9UT19URU1QKFNGRl9BMl9URU1QX0hBTFJNKTsKKwlzZC0+c2ZwX3RlbXBbTEFMUk1dID0g QTJfT0ZGU0VUX1RPX1RFTVAoU0ZGX0EyX1RFTVBfTEFMUk0pOworCXNkLT5zZnBfdGVtcFtIV0FS Tl0gPSBBMl9PRkZTRVRfVE9fVEVNUChTRkZfQTJfVEVNUF9IV0FSTik7CisJc2QtPnNmcF90ZW1w W0xXQVJOXSA9IEEyX09GRlNFVF9UT19URU1QKFNGRl9BMl9URU1QX0xXQVJOKTsKKworfQorCisv KiBDb252ZXJ0cyB0byBhIGZsb2F0IGZyb20gYSBiaWctZW5kaWFuIDQtYnl0ZSBzb3VyY2UgYnVm ZmVyLiAqLworc3RhdGljIGZsb2F0IGJlZmxvYXR0b2goY29uc3QgX191MzIgKnNvdXJjZSkKK3sK Kwl1bmlvbiB7CisJCV9fdTMyIHNyYzsKKwkJZmxvYXQgZHN0OworCX0gY29udmVydGVyOworCisJ Y29udmVydGVyLnNyYyA9IG50b2hsKCpzb3VyY2UpOworCXJldHVybiBjb252ZXJ0ZXIuZHN0Owor fQorCitzdGF0aWMgdm9pZCBzZmY4NDcyX2NhbGlicmF0aW9uKGNvbnN0IF9fdTggKmlkLCBzdHJ1 Y3Qgc2ZmODQ3Ml9kaWFncyAqc2QpCit7CisJaW50IGk7CisJX191MTYgcnhfcmVhZGluZzsKKwor CS8qIENhbGlicmF0aW9uIHNob3VsZCBvY2N1ciBmb3IgYWxsIHZhbHVlcyAodGhyZXNob2xkIGFu ZCBjdXJyZW50KSAqLworCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2QtPmJpYXNfY3VyKTsgKytp KSB7CisJCS8qCisJCSAqIEFwcGx5IGNhbGlicmF0aW9uIGZvcm11bGEgMSAoVGVtcC4sIFZvbHRh Z2UsIEJpYXMsIFR4IFBvd2VyKQorCQkgKi8KKwkJc2QtPmJpYXNfY3VyW2ldICAgICo9IEEyX09G RlNFVF9UT19TTFAoU0ZGX0EyX0NBTF9UWElfU0xQKTsKKwkJc2QtPnR4X3Bvd2VyW2ldICAgICo9 IEEyX09GRlNFVF9UT19TTFAoU0ZGX0EyX0NBTF9UWFBXUl9TTFApOworCQlzZC0+c2ZwX3ZvbHRh Z2VbaV0gKj0gQTJfT0ZGU0VUX1RPX1NMUChTRkZfQTJfQ0FMX1ZfU0xQKTsKKwkJc2QtPnNmcF90 ZW1wW2ldICAgICo9IEEyX09GRlNFVF9UT19TTFAoU0ZGX0EyX0NBTF9UX1NMUCk7CisKKwkJc2Qt PmJpYXNfY3VyW2ldICAgICs9IEEyX09GRlNFVF9UT19PRkYoU0ZGX0EyX0NBTF9UWElfT0ZGKTsK KwkJc2QtPnR4X3Bvd2VyW2ldICAgICs9IEEyX09GRlNFVF9UT19PRkYoU0ZGX0EyX0NBTF9UWFBX Ul9PRkYpOworCQlzZC0+c2ZwX3ZvbHRhZ2VbaV0gKz0gQTJfT0ZGU0VUX1RPX09GRihTRkZfQTJf Q0FMX1ZfT0ZGKTsKKwkJc2QtPnNmcF90ZW1wW2ldICAgICs9IEEyX09GRlNFVF9UT19PRkYoU0ZG X0EyX0NBTF9UX09GRik7CisKKwkJLyoKKwkJICogQXBwbHkgY2FsaWJyYXRpb24gZm9ybXVsYSAy IChSeCBQb3dlciBvbmx5KQorCQkgKi8KKwkJcnhfcmVhZGluZyA9IHNkLT5yeF9wb3dlcltpXTsK KwkJc2QtPnJ4X3Bvd2VyW2ldICAgID0gQTJfT0ZGU0VUX1RPX1JYUFdSeChTRkZfQTJfQ0FMX1JY UFdSMCk7CisJCXNkLT5yeF9wb3dlcltpXSAgICArPSByeF9yZWFkaW5nICoKKwkJCUEyX09GRlNF VF9UT19SWFBXUngoU0ZGX0EyX0NBTF9SWFBXUjEpOworCQlzZC0+cnhfcG93ZXJbaV0gICAgKz0g cnhfcmVhZGluZyAqCisJCQlBMl9PRkZTRVRfVE9fUlhQV1J4KFNGRl9BMl9DQUxfUlhQV1IyKTsK KwkJc2QtPnJ4X3Bvd2VyW2ldICAgICs9IHJ4X3JlYWRpbmcgKgorCQkJQTJfT0ZGU0VUX1RPX1JY UFdSeChTRkZfQTJfQ0FMX1JYUFdSMyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBzZmY4NDcyX3Bh cnNlX2VlcHJvbShjb25zdCBfX3U4ICppZCwgc3RydWN0IHNmZjg0NzJfZGlhZ3MgKnNkKQorewor CXNkLT5zdXBwb3J0c19kb20gPSBpZFtTRkZfQTBfRE9NXSAmIFNGRl9BMF9ET01fSU1QTDsKKwlz ZC0+c3VwcG9ydHNfYWxhcm1zID0gaWRbU0ZGX0EwX09QVElPTlNdICYgU0ZGX0EwX09QVElPTlNf QVc7CisJc2QtPmNhbGlicmF0ZWRfZXh0ID0gaWRbU0ZGX0EwX0RPTV0gJiBTRkZfQTBfRE9NX0VY VENBTDsKKwlzZC0+cnhfcG93ZXJfdHlwZSA9IGlkW1NGRl9BMF9ET01dICYgU0ZGX0EwX0RPTV9Q V1JUOworCisJc2ZmODQ3Ml9kb21fcGFyc2UoaWQsIHNkKTsKKworCS8qCisJICogSWYgdGhlIFNG UCBpcyBleHRlcm5hbGx5IGNhbGlicmF0ZWQsIHdlIG5lZWQgdG8gcmVhZCBjYWxpYnJhdGlvbiBk YXRhCisJICogYW5kIGNvbXBlbnNhdGUgdGhlIGFscmVhZHkgc3RvcmVkIHJlYWRpbmdzLgorCSAq LworCWlmIChzZC0+Y2FsaWJyYXRlZF9leHQpCisJCXNmZjg0NzJfY2FsaWJyYXRpb24oaWQsIHNk KTsKK30KKwordm9pZCBzZmY4NDcyX3Nob3dfYWxsKGNvbnN0IF9fdTggKmlkKQoreworCXN0cnVj dCBzZmY4NDcyX2RpYWdzIHNkOworCWNoYXIgKnJ4X3Bvd2VyX3N0cmluZyA9IE5VTEw7CisJaW50 IGk7CisKKwlzZmY4NDcyX3BhcnNlX2VlcHJvbShpZCwgJnNkKTsKKworCWlmICghc2Quc3VwcG9y dHNfZG9tKSB7CisJCXByaW50ZigiXHQlLTQxcyA6IE5vXG4iLCAiT3B0aWNhbCBkaWFnbm9zdGlj cyBzdXBwb3J0Iik7CisJCXJldHVybiA7CisJfQorCXByaW50ZigiXHQlLTQxcyA6IFllc1xuIiwg Ik9wdGljYWwgZGlhZ25vc3RpY3Mgc3VwcG9ydCIpOworCisjZGVmaW5lIFBSSU5UX0JJQVMoc3Ry aW5nLCBpbmRleCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXBy aW50ZigiXHQlLTQxcyA6ICUuM2YgbUFcbiIsIChzdHJpbmcpLCAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorCSAgICAgICAoZG91YmxlKShzZC5iaWFzX2N1clsoaW5kZXgpXSAvIDUwMC4pKQor CisjIGRlZmluZSBQUklOVF94WF9QV1Ioc3RyaW5nLCB2YXIsIGluZGV4KSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorCXByaW50ZigiXHQlLTQxcyA6ICUuNGYgbVcgLyAlLjJmIGRC bVxuIiwgKHN0cmluZyksICAgICAgICAgICAgICAgXAorCSAgICAgICAoZG91YmxlKSgodmFyKVso aW5kZXgpXSAvIDEwMDAwLiksICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAgICBjb252 ZXJ0X213X3RvX2RibSgoZG91YmxlKSgodmFyKVsoaW5kZXgpXSAvIDEwMDAwLikpKQorCisjZGVm aW5lIFBSSU5UX1RFTVAoc3RyaW5nLCBpbmRleCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorCXByaW50ZigiXHQlLTQxcyA6ICUuMmYgZGVncmVlcyBDIC8gJS4yZiBk ZWdyZWVzIEZcbiIsIChzdHJpbmcpLCAgXAorCSAgICAgICAoZG91YmxlKShzZC5zZnBfdGVtcFso aW5kZXgpXSAvIDI1Ni4pLCAgICAgICAgICAgICAgICAgICAgXAorCSAgICAgICAoZG91YmxlKShz ZC5zZnBfdGVtcFsoaW5kZXgpXSAvIDI1Ni4gKiAxLjggKyAzMi4pKQorCisjZGVmaW5lIFBSSU5U X1ZDQyhzdHJpbmcsIGluZGV4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorCXByaW50ZigiXHQlLTQxcyA6ICUuNGYgVlxuIiwgKHN0cmluZyksICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorCSAgICAgICAoZG91YmxlKShzZC5zZnBfdm9sdGFnZVsoaW5kZXgp XSAvIDEwMDAwLikpCisKKwlQUklOVF9CSUFTKCJMYXNlciBiaWFzIGN1cnJlbnQiLCBNQ1VSUik7 CisJUFJJTlRfeFhfUFdSKCJMYXNlciBvdXRwdXQgcG93ZXIiLCBzZC50eF9wb3dlciwgTUNVUlIp OworCisJaWYgKCFzZC5yeF9wb3dlcl90eXBlKQorCQlyeF9wb3dlcl9zdHJpbmcgPSAiUmVjZWl2 ZXIgc2lnbmFsIE9NQSI7CisJZWxzZQorCQlyeF9wb3dlcl9zdHJpbmcgPSAiUmVjZWl2ZXIgc2ln bmFsIGF2ZXJhZ2Ugb3B0aWNhbCBwb3dlciI7CisKKwlQUklOVF94WF9QV1IocnhfcG93ZXJfc3Ry aW5nLCBzZC5yeF9wb3dlciwgTUNVUlIpOworCisJUFJJTlRfVEVNUCgiTW9kdWxlIHRlbXBlcmF0 dXJlIiwgTUNVUlIpOworCVBSSU5UX1ZDQygiTW9kdWxlIHZvbHRhZ2UiLCBNQ1VSUik7CisKKwlw cmludGYoIlx0JS00MXMgOiAlc1xuIiwgIkFsYXJtL3dhcm5pbmcgZmxhZ3MgaW1wbGVtZW50ZWQi LAorCSAgICAgICAoc2Quc3VwcG9ydHNfYWxhcm1zID8gIlllcyIgOiAiTm8iKSk7CisJaWYgKHNk LnN1cHBvcnRzX2FsYXJtcykgeworCisJCWZvciAoaSA9IDA7IHNmZjg0NzJfYXdfZmxhZ3NbaV0u c3RyOyArK2kpIHsKKwkJCXByaW50ZigiXHQlLTQxcyA6ICVzXG4iLCBzZmY4NDcyX2F3X2ZsYWdz W2ldLnN0ciwKKwkJCSAgICAgICBpZFtTRkZfQTJfQkFTRSArIHNmZjg0NzJfYXdfZmxhZ3NbaV0u b2Zmc2V0XQorCQkJICAgICAgICYgc2ZmODQ3Ml9hd19mbGFnc1tpXS52YWx1ZSA/ICJPbiIgOiAi T2ZmIik7CisJCX0KKworCQlQUklOVF9CSUFTKCJMYXNlciBiaWFzIGN1cnJlbnQgaGlnaCBhbGFy bSB0aHJlc2hvbGQiLCAgIEhBTFJNKTsKKwkJUFJJTlRfQklBUygiTGFzZXIgYmlhcyBjdXJyZW50 IGxvdyBhbGFybSB0aHJlc2hvbGQiLCAgICBMQUxSTSk7CisJCVBSSU5UX0JJQVMoIkxhc2VyIGJp YXMgY3VycmVudCBoaWdoIHdhcm5pbmcgdGhyZXNob2xkIiwgSFdBUk4pOworCQlQUklOVF9CSUFT KCJMYXNlciBiaWFzIGN1cnJlbnQgbG93IHdhcm5pbmcgdGhyZXNob2xkIiwgIExXQVJOKTsKKwor CQlQUklOVF94WF9QV1IoIkxhc2VyIG91dHB1dCBwb3dlciBoaWdoIGFsYXJtIHRocmVzaG9sZCIs CisJCQkgICAgIHNkLnR4X3Bvd2VyLCBIQUxSTSk7CisJCVBSSU5UX3hYX1BXUigiTGFzZXIgb3V0 cHV0IHBvd2VyIGxvdyBhbGFybSB0aHJlc2hvbGQiLAorCQkJICAgICBzZC50eF9wb3dlciwgTEFM Uk0pOworCQlQUklOVF94WF9QV1IoIkxhc2VyIG91dHB1dCBwb3dlciBoaWdoIHdhcm5pbmcgdGhy ZXNob2xkIiwKKwkJCSAgICAgc2QudHhfcG93ZXIsIEhXQVJOKTsKKwkJUFJJTlRfeFhfUFdSKCJM YXNlciBvdXRwdXQgcG93ZXIgbG93IHdhcm5pbmcgdGhyZXNob2xkIiwKKwkJCSAgICAgc2QudHhf cG93ZXIsIExXQVJOKTsKKworCQlQUklOVF9URU1QKCJNb2R1bGUgdGVtcGVyYXR1cmUgaGlnaCBh bGFybSB0aHJlc2hvbGQiLCAgIEhBTFJNKTsKKwkJUFJJTlRfVEVNUCgiTW9kdWxlIHRlbXBlcmF0 dXJlIGxvdyBhbGFybSB0aHJlc2hvbGQiLCAgICBMQUxSTSk7CisJCVBSSU5UX1RFTVAoIk1vZHVs ZSB0ZW1wZXJhdHVyZSBoaWdoIHdhcm5pbmcgdGhyZXNob2xkIiwgSFdBUk4pOworCQlQUklOVF9U RU1QKCJNb2R1bGUgdGVtcGVyYXR1cmUgbG93IHdhcm5pbmcgdGhyZXNob2xkIiwgIExXQVJOKTsK KworCQlQUklOVF9WQ0MoIk1vZHVsZSB2b2x0YWdlIGhpZ2ggYWxhcm0gdGhyZXNob2xkIiwgICBI QUxSTSk7CisJCVBSSU5UX1ZDQygiTW9kdWxlIHZvbHRhZ2UgbG93IGFsYXJtIHRocmVzaG9sZCIs ICAgIExBTFJNKTsKKwkJUFJJTlRfVkNDKCJNb2R1bGUgdm9sdGFnZSBoaWdoIHdhcm5pbmcgdGhy ZXNob2xkIiwgSFdBUk4pOworCQlQUklOVF9WQ0MoIk1vZHVsZSB2b2x0YWdlIGxvdyB3YXJuaW5n IHRocmVzaG9sZCIsICBMV0FSTik7CisKKwkJUFJJTlRfeFhfUFdSKCJMYXNlciByeCBwb3dlciBo aWdoIGFsYXJtIHRocmVzaG9sZCIsCisJCQkgICAgIHNkLnJ4X3Bvd2VyLCBIQUxSTSk7CisJCVBS SU5UX3hYX1BXUigiTGFzZXIgcnggcG93ZXIgbG93IGFsYXJtIHRocmVzaG9sZCIsCisJCQkgICAg IHNkLnJ4X3Bvd2VyLCBMQUxSTSk7CisJCVBSSU5UX3hYX1BXUigiTGFzZXIgcnggcG93ZXIgaGln aCB3YXJuaW5nIHRocmVzaG9sZCIsCisJCQkgICAgIHNkLnJ4X3Bvd2VyLCBIV0FSTik7CisJCVBS SU5UX3hYX1BXUigiTGFzZXIgcnggcG93ZXIgbG93IHdhcm5pbmcgdGhyZXNob2xkIiwKKwkJCSAg ICAgc2QucnhfcG93ZXIsIExXQVJOKTsKKwl9CisKK30KKwpkaWZmIC0tZ2l0IGEvc2ZwaWQuYyBi L3NmcGlkLmMKaW5kZXggYTRhNjcxZC4uNGY4OGFhMiAxMDA2NDQKLS0tIGEvc2ZwaWQuYworKysg Yi9zZnBpZC5jCkBAIC0xMiw3ICsxMiw3IEBACiAKIHN0YXRpYyB2b2lkIHNmZjgwNzlfc2hvd19p ZGVudGlmaWVyKGNvbnN0IF9fdTggKmlkKQogewotCXByaW50ZigiXHRJZGVudGlmaWVyICAgICAg ICAgIDogMHglMDJ4IiwgaWRbMF0pOworCXByaW50ZigiXHQlLTQxcyA6IDB4JTAyeCIsICJJZGVu dGlmaWVyIiwgaWRbMF0pOwogCXN3aXRjaCAoaWRbMF0pIHsKIAljYXNlIDB4MDA6CiAJCXByaW50 ZigiIChubyBtb2R1bGUgcHJlc2VudCwgdW5rbm93biwgb3IgdW5zcGVjaWZpZWQpXG4iKTsKQEAg LTM0LDcgKzM0LDcgQEAgc3RhdGljIHZvaWQgc2ZmODA3OV9zaG93X2lkZW50aWZpZXIoY29uc3Qg X191OCAqaWQpCiAKIHN0YXRpYyB2b2lkIHNmZjgwNzlfc2hvd19leHRfaWRlbnRpZmllcihjb25z dCBfX3U4ICppZCkKIHsKLQlwcmludGYoIlx0RXh0ZW5kZWQgaWRlbnRpZmllciA6IDB4JTAyeCIs IGlkWzFdKTsKKwlwcmludGYoIlx0JS00MXMgOiAweCUwMngiLCAiRXh0ZW5kZWQgaWRlbnRpZmll ciIsIGlkWzFdKTsKIAlpZiAoaWRbMV0gPT0gMHgwMCkKIAkJcHJpbnRmKCIgKEdCSUMgbm90IHNw ZWNpZmllZCAvIG5vdCBNT0RfREVGIGNvbXBsaWFudClcbiIpOwogCWVsc2UgaWYgKGlkWzFdID09 IDB4MDQpCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyB2b2lkIHNmZjgwNzlfc2hvd19leHRfaWRl bnRpZmllcihjb25zdCBfX3U4ICppZCkKIAogc3RhdGljIHZvaWQgc2ZmODA3OV9zaG93X2Nvbm5l Y3Rvcihjb25zdCBfX3U4ICppZCkKIHsKLQlwcmludGYoIlx0Q29ubmVjdG9yICAgICAgICAgICA6 IDB4JTAyeCIsIGlkWzJdKTsKKwlwcmludGYoIlx0JS00MXMgOiAweCUwMngiLCAiQ29ubmVjdG9y IiwgaWRbMl0pOwogCXN3aXRjaCAoaWRbMl0pIHsKIAljYXNlIDB4MDA6CiAJCXByaW50ZigiICh1 bmtub3duIG9yIHVuc3BlY2lmaWVkKVxuIik7CkBAIC0xMDUsMTAgKzEwNSwxMiBAQCBzdGF0aWMg dm9pZCBzZmY4MDc5X3Nob3dfY29ubmVjdG9yKGNvbnN0IF9fdTggKmlkKQogCiBzdGF0aWMgdm9p ZCBzZmY4MDc5X3Nob3dfdHJhbnNjZWl2ZXIoY29uc3QgX191OCAqaWQpCiB7Ci0Jc3RhdGljIGNv bnN0IGNoYXIgKnBmeCA9ICJcdCAgICAgICAgICAgICAgICAgICAgOiAgPT4iOworCXN0YXRpYyBj b25zdCBjaGFyICpwZnggPQorCQkiXHRUcmFuc2NlaXZlciB0eXBlICAgICAgICAgICAgICAgICAg ICAgICAgICA6IjsKIAotCXByaW50ZigiXHRUcmFuc2NlaXZlciBjb2RlcyAgIDogMHglMDJ4IDB4 JTAyeCAweCUwMngiIFwKKwlwcmludGYoIlx0JS00MXMgOiAweCUwMnggMHglMDJ4IDB4JTAyeCAi IFwKIAkgICAgICAgIjB4JTAyeCAweCUwMnggMHglMDJ4IDB4JTAyeCAweCUwMnhcbiIsCisJCSAg ICJUcmFuc2NlaXZlciBjb2RlcyIsCiAJICAgICAgIGlkWzNdLCBpZFs0XSwgaWRbNV0sIGlkWzZd LAogCSAgICAgICBpZFs3XSwgaWRbOF0sIGlkWzldLCBpZFsxMF0pOwogCS8qIDEwRyBFdGhlcm5l dCBDb21wbGlhbmNlIENvZGVzICovCkBAIC0yMzksNyArMjQxLDcgQEAgc3RhdGljIHZvaWQgc2Zm ODA3OV9zaG93X3RyYW5zY2VpdmVyKGNvbnN0IF9fdTggKmlkKQogCiBzdGF0aWMgdm9pZCBzZmY4 MDc5X3Nob3dfZW5jb2RpbmcoY29uc3QgX191OCAqaWQpCiB7Ci0JcHJpbnRmKCJcdEVuY29kaW5n ICAgICAgICAgICAgOiAweCUwMngiLCBpZFsxMV0pOworCXByaW50ZigiXHQlLTQxcyA6IDB4JTAy eCIsICJFbmNvZGluZyIsIGlkWzExXSk7CiAJc3dpdGNoIChpZFsxMV0pIHsKIAljYXNlIDB4MDA6 CiAJCXByaW50ZigiICh1bnNwZWNpZmllZClcbiIpOwpAQCAtMjcwLDcgKzI3Miw3IEBAIHN0YXRp YyB2b2lkIHNmZjgwNzlfc2hvd19lbmNvZGluZyhjb25zdCBfX3U4ICppZCkKIAogc3RhdGljIHZv aWQgc2ZmODA3OV9zaG93X3JhdGVfaWRlbnRpZmllcihjb25zdCBfX3U4ICppZCkKIHsKLQlwcmlu dGYoIlx0UmF0ZSBpZGVudGlmaWVyICAgICA6IDB4JTAyeCIsIGlkWzEzXSk7CisJcHJpbnRmKCJc dCUtNDFzIDogMHglMDJ4IiwgIlJhdGUgaWRlbnRpZmllciIsIGlkWzEzXSk7CiAJc3dpdGNoIChp ZFsxM10pIHsKIAljYXNlIDB4MDA6CiAJCXByaW50ZigiICh1bnNwZWNpZmllZClcbiIpOwpAQCAt Mjk1LDE0ICsyOTcsMTQgQEAgc3RhdGljIHZvaWQgc2ZmODA3OV9zaG93X3JhdGVfaWRlbnRpZmll cihjb25zdCBfX3U4ICppZCkKIAogc3RhdGljIHZvaWQgc2ZmODA3OV9zaG93X291aShjb25zdCBf X3U4ICppZCkKIHsKLQlwcmludGYoIlx0VmVuZG9yIE9VSSAgICAgICAgICA6ICUwMng6JTAyeDol MDJ4XG4iLAorCXByaW50ZigiXHQlLTQxcyA6ICUwMng6JTAyeDolMDJ4XG4iLCAiVmVuZG9yIE9V SSIsCiAJICAgICAgIGlkWzM3XSwgaWRbMzhdLCBpZFszOV0pOwogfQogCiBzdGF0aWMgdm9pZCBz ZmY4MDc5X3Nob3dfd2F2ZWxlbmd0aF9vcl9jb3BwZXJfY29tcGxpYW5jZShjb25zdCBfX3U4ICpp ZCkKIHsKIAlpZiAoaWRbOF0gJiAoMSA8PCAyKSkgewotCQlwcmludGYoIlx0UGFzc2l2ZSBDdSBj bXBsbmNlLiA6IDB4JTAyeCIsIGlkWzYwXSk7CisJCXByaW50ZigiXHQlLTQxcyA6IDB4JTAyeCIs ICJQYXNzaXZlIEN1IGNtcGxuY2UuIiwgaWRbNjBdKTsKIAkJc3dpdGNoIChpZFs2MF0pIHsKIAkJ Y2FzZSAweDAwOgogCQkJcHJpbnRmKCIgKHVuc3BlY2lmaWVkKSIpOwpAQCAtMzE2LDcgKzMxOCw3 IEBAIHN0YXRpYyB2b2lkIHNmZjgwNzlfc2hvd193YXZlbGVuZ3RoX29yX2NvcHBlcl9jb21wbGlh bmNlKGNvbnN0IF9fdTggKmlkKQogCQl9CiAJCXByaW50ZigiIFtTRkYtODQ3MiByZXYxMC40IG9u bHldXG4iKTsKIAl9IGVsc2UgaWYgKGlkWzhdICYgKDEgPDwgMykpIHsKLQkJcHJpbnRmKCJcdEFj dGl2ZSBDdSBjbXBsbmNlLiAgOiAweCUwMngiLCBpZFs2MF0pOworCQlwcmludGYoIlx0JS00MXMg OiAweCUwMngiLCAiQWN0aXZlIEN1IGNtcGxuY2UuIiwgaWRbNjBdKTsKIAkJc3dpdGNoIChpZFs2 MF0pIHsKIAkJY2FzZSAweDAwOgogCQkJcHJpbnRmKCIgKHVuc3BlY2lmaWVkKSIpOwpAQCAtMzMz LDcgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIHNmZjgwNzlfc2hvd193YXZlbGVuZ3RoX29yX2NvcHBl cl9jb21wbGlhbmNlKGNvbnN0IF9fdTggKmlkKQogCQl9CiAJCXByaW50ZigiIFtTRkYtODQ3MiBy ZXYxMC40IG9ubHldXG4iKTsKIAl9IGVsc2UgewotCQlwcmludGYoIlx0TGFzZXIgd2F2ZWxlbmd0 aCAgICA6ICV1bm1cbiIsCisJCXByaW50ZigiXHQlLTQxcyA6ICV1bm1cbiIsICJMYXNlciB3YXZl bGVuZ3RoIiwKIAkJICAgICAgIChpZFs2MF0gPDwgOCkgfCBpZFs2MV0pOwogCX0KIH0KQEAgLTM0 NCw3ICszNDYsNyBAQCBzdGF0aWMgdm9pZCBzZmY4MDc5X3Nob3dfdmFsdWVfd2l0aF91bml0KGNv bnN0IF9fdTggKmlkLCB1bnNpZ25lZCBpbnQgcmVnLAogewogCXVuc2lnbmVkIGludCB2YWwgPSBp ZFtyZWddOwogCi0JcHJpbnRmKCJcdCUtMjBzOiAldSVzXG4iLCBuYW1lLCB2YWwgKiBtdWx0LCB1 bml0KTsKKwlwcmludGYoIlx0JS00MXMgOiAldSVzXG4iLCBuYW1lLCB2YWwgKiBtdWx0LCB1bml0 KTsKIH0KIAogc3RhdGljIHZvaWQgc2ZmODA3OV9zaG93X2FzY2lpKGNvbnN0IF9fdTggKmlkLCB1 bnNpZ25lZCBpbnQgZmlyc3RfcmVnLApAQCAtMzUyLDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIHNm ZjgwNzlfc2hvd19hc2NpaShjb25zdCBfX3U4ICppZCwgdW5zaWduZWQgaW50IGZpcnN0X3JlZywK IHsKIAl1bnNpZ25lZCBpbnQgcmVnLCB2YWw7CiAKLQlwcmludGYoIlx0JS0yMHM6ICIsIG5hbWUp OworCXByaW50ZigiXHQlLTQxcyA6ICIsIG5hbWUpOwogCWZvciAocmVnID0gZmlyc3RfcmVnOyBy ZWcgPD0gbGFzdF9yZWc7IHJlZysrKSB7CiAJCXZhbCA9IGlkW3JlZ107CiAJCXB1dGNoYXIoKCh2 YWwgPj0gMzIpICYmICh2YWwgPD0gMTI2KSkgPyB2YWwgOiAnXycpOwpkaWZmIC0tZ2l0IGEvdGVz dC1jbWRsaW5lLmMgYi90ZXN0LWNtZGxpbmUuYwppbmRleCA4NWI0Y2UwLi5mMWQ0NTU1IDEwMDY0 NAotLS0gYS90ZXN0LWNtZGxpbmUuYworKysgYi90ZXN0LWNtZGxpbmUuYwpAQCAtMjEzLDYgKzIx Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGVzdF9jYXNlIHsKIAl7IDAsICItbSBkZXZuYW1lIiB9LAog CXsgMSwgIi0tZHVtcC1tb2R1bGUtZWVwcm9tIiB9LAogCXsgMCwgIi0tZHVtcC1tb2R1bGUtZWVw cm9tIGRldm5hbWUiIH0sCisJeyAxLCAiLS1tb2R1bGUtaW5mbyIgfSwKKwl7IDAsICItLW1vZHVs ZS1pbmZvIGRldm5hbWUiIH0sCiAJeyAwLCAiLW0gZGV2bmFtZSByYXcgb24iIH0sCiAJeyAwLCAi LW0gZGV2bmFtZSByYXcgb2ZmIiB9LAogCXsgMCwgIi1tIGRldm5hbWUgaGV4IG9uIiB9LAotLSAK MS43LjAuNAoK --047d7b6d88b04cf5d204cfe59491--