From owner-freebsd-hackers@FreeBSD.ORG Mon Jun 13 09:22:57 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5292916A41C for ; Mon, 13 Jun 2005 09:22:57 +0000 (GMT) (envelope-from NKoch@demig.de) Received: from server.absolute-media.de (server.absolute-media.de [213.239.231.9]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5511643D4C for ; Mon, 13 Jun 2005 09:22:56 +0000 (GMT) (envelope-from NKoch@demig.de) Received: from localhost (unknown [127.0.0.1]) by server.absolute-media.de (Postfix) with ESMTP id 9D4E684EB3; Mon, 13 Jun 2005 11:22:54 +0200 (CEST) Received: from server.absolute-media.de ([127.0.0.1]) by localhost (server [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24076-04; Mon, 13 Jun 2005 11:22:49 +0200 (CEST) Received: from firewall.demig (p50839F04.dip0.t-ipconnect.de [80.131.159.4]) by server.absolute-media.de (Postfix) with ESMTP id 0BA187EDE6; Mon, 13 Jun 2005 11:22:48 +0200 (CEST) Received: from ws-ew-3 (ws-ew-3.w2kdemig [192.168.1.72]) by firewall.demig (8.13.4/8.13.1) with SMTP id j5D9JSKF031279; Mon, 13 Jun 2005 11:19:28 +0200 (CEST) (envelope-from NKoch@demig.de) From: "Norbert Koch" To: "Maksim Yevmenkin" Date: Mon, 13 Jun 2005 11:19:28 +0200 Message-ID: <000001c56ff8$ffda5b40$4801a8c0@ws-ew-3.W2KDEMIG> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0001_01C57009.C3632B40" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 Importance: Normal In-Reply-To: <42A0891F.8080800@savvis.net> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2120.0 X-Virus-Scanned: by amavisd-new X-Virus-Scanned: by amavisd-new at absolute-media.de Cc: "Freebsd-Hackers@Freebsd. Org" Subject: RE: using vkbd device X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2005 09:22:57 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C57009.C3632B40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit > you also might want to look at experimental keyboard mux drivers. it is > based on vkbd(4) and uses the idea of one super-keyboard that consumes > scancodes from other keyboards. there are still a few issues i need to > fix, but, in general, it works. > > http://www.geocities.com/m_evmenkin/kbdmux-2.tar.gz > > thanks, > max > Hello Max, I back-ported kbdmux to FreeBSD 4.11 (and stopped work on vkbd). It seems to work, although I still have some stability issues with dynamically attaching/detaching a usb keyboard. For your reference I have enclosed a patch file. Sorry for some diffs due to slightly different coding and debugging style. Thank you for any comments, Norbert ------=_NextPart_000_0001_01C57009.C3632B40 Content-Type: application/octet-stream; name="kbdmux.c.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kbdmux.c.patch" LS0tIGtiZG11eC9rYmRtdXguYwlTYXQgTWF5IDIxIDAxOjUxOjQ3IDIwMDUKKysrIGtiZG11eC5j CU1vbiBKdW4gMTMgMTE6MDg6MTggMjAwNQpAQCAtMjcsNyArMjcsNyBAQAogICogT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRgogICogU1VDSCBEQU1BR0UuCiAgKgotICogJElkJAorICogJElkOiBrYmRtdXguYyx2IDEu NCAyMDA1LzA2LzEzIDA5OjA2OjMwIG5rIEV4cCAkCiAgKiAkRnJlZUJTRCQKICAqLwogCkBAIC0z NiwyNSArMzYsMTA4IEBACiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL2Nv bmYuaD4KICNpbmNsdWRlIDxzeXMvY29uc2lvLmg+CisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0g NjAwMDAwCiAjaW5jbHVkZSA8c3lzL2ZjbnRsLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5cy92bm9k ZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3lzL2tiaW8uaD4KICNpbmNsdWRlIDxzeXMva2VybmVs Lmg+CisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAwCiAjaW5jbHVkZSA8c3lzL2xpbWl0 cy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxtYWNoaW5lL2xpbWl0cy5oPgorI2VuZGlmCiAjaW5jbHVk ZSA8c3lzL2xvY2suaD4KICNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CiAjaW5jbHVkZSA8c3lzL21v ZHVsZS5oPgorI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAxNAogI2luY2x1ZGUgPHN5cy9t dXRleC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3lzL3BvbGwuaD4KICNpbmNsdWRlIDxzeXMvcHJv Yy5oPgogI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUw MDAxNAogI2luY2x1ZGUgPHN5cy9zZWxpbmZvLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5cy9zZWxl Y3QuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgogI2luY2x1ZGUgPHN5cy90YXNr cXVldWUuaD4KICNpbmNsdWRlIDxzeXMvdHR5Lmg+CiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2lu Y2x1ZGUgPGRldi9rYmQva2JkcmVnLmg+CiAjaW5jbHVkZSA8ZGV2L2tiZC9rYmR0YWJsZXMuaD4K LSNpbmNsdWRlIDxkZXYva2JkbXV4L2tiZG11eF92YXIuaD4KKyNpbmNsdWRlICJrYmRtdXhfdmFy LmgiCisKKyNpZm5kZWYgREVCVUcKKyNkZWZpbmUgREVCVUcgICAgICAgICAgIDEKKyNlbmRpZgor I2lmbmRlZiBWRVJCT1NFCisjZGVmaW5lIFZFUkJPU0UgICAgICAgICAxCisjZW5kaWYKKyNpZm5k ZWYgREVCVUdfVVNFU1lTTE9HCisjZGVmaW5lIERFQlVHX1VTRVNZU0xPRyAwCisjZW5kaWYKKyNk ZWZpbmUgREVCVUdfVEFHICAgICAgIHZrYmQKKworI2RlZmluZSBERUJVR19RVUVVRSAgICAgREVC VUcKKworI2luY2x1ZGUgPGRldl9kZWJ1Zy9kZXZfZGVidWcuaD4KKworCisvKgorICogZGVjbGFy ZSB1aW50IHN5c2N0bCBkZWJ1Zy52a2JkX2RlYnVnCisgKiB3aXRoIGluaXRpYWwgdmFsdWUgb2Yg OQorICovCisKK2RlYnVnX3Zhcl9kZWNsKDkpOworZGVidWdfc3lzY3RsKCk7CisKKworLyoKKyAq IE9TIHNwZWNpZmljCisgKi8KKworI2RlZmluZSBQUFJJTyAgICAgICAgICAgICAgICAgICAoUFpF Uk8rMSkKKworI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAxNAorCisjZGVmaW5lIFRBU0tR VUVVRSAgICAgICAgICAgICAgIHRhc2txdWV1ZV9zd2lfZ2lhbnQKKworI2RlZmluZSBLQkRNVVhf TE9DS19ERUNMX0dMT0JBTCBzdHJ1Y3QgbXR4X2xvY2sga3NfbG9jaworI2RlZmluZSBLQkRNVVhf TE9DTF9ERUNMX0xPQ0FMCS8qIG9ubHkgZm9yIEZyZWVCU0QgNC5YICovCisjZGVmaW5lIEtCRE1V WF9MT0NLX0lOSVQocykgICAgIG10eF9pbml0ICgmIChzKS0+a3NfbG9jaywgTlVMTCwgTlVMTCwg TVRYX0RFRikKKyNkZWZpbmUgS0JETVVYX0xPQ0tfREVTVFJPWShzKSAgbXR4X2Rlc3Ryb3kgKCYg KHMpLT5rc19sb2NrKQorI2RlZmluZSBLQkRNVVhfTE9DSyhzKSAgICAgICAgICBtdHhfbG9jayAo JiAocyktPmtzX2xvY2spCisjZGVmaW5lIEtCRE1VWF9VTkxPQ0socykgICAgICAgIG10eF91bmxv Y2sgKCYgKHMpLT5rc19sb2NrKQorI2RlZmluZSBLQkRNVVhfTE9DS19BU1NFUlQocywgdyltdHhf YXNzZXJ0ICgmIChzKS0+a3NfbG9jaywgdykKKyNkZWZpbmUgS0JETVVYX1NMRUVQKHMsIGYsIGQs IHQsIGUpICBcCisgIGUgPSBtc2xlZXAgKCYgKHMpLT5mLCAmIChzKS0+a3NfbG9jaywgUENBVENI fFBQUklPLCBkLCB0KQorCisjZWxzZQorCisjZGVmaW5lIFRBU0tRVUVVRSAgICAgICAgICAgICAg IHRhc2txdWV1ZV9zd2kKKworI2RlZmluZSBLQkRNVVhfTE9DS19ERUNMX0dMT0JBTAkvKiBvbmx5 IGZvciBGcmVlQlNEIDUuWCBhbmQgdXAgKi8KKyNkZWZpbmUgS0JETVVYX0xPQ0tfREVDTF9MT0NB TCAgaW50cm1hc2tfdCBpcGwKKyNkZWZpbmUgS0JETVVYX0xPQ0tfSU5JVChzKQkvKiBvbmx5IGZv ciBGcmVlQlNEIDUuWCBhbmQgdXAgKi8KKyNkZWZpbmUgS0JETVVYX0xPQ0tfREVTVFJPWShzKQkv KiBvbmx5IGZvciBGcmVlQlNEIDUuWCBhbmQgdXAgKi8KKyNkZWZpbmUgS0JETVVYX0xPQ0socykg ICAgICAgICAgaXBsID0gc3BsaGlnaCAoKQorI2RlZmluZSBLQkRNVVhfVU5MT0NLKHMpICAgICAg ICBzcGx4IChpcGwpCisjZGVmaW5lIEtCRE1VWF9MT0NLX0FTU0VSVChzLCB3KQkvKiBvbmx5IGJ5 IEZyZWVCU0QgNS5YIGFuZCB1cAorCQkJCQkgKiBzdXBwb3J0ZWQgKi8KKyNkZWZpbmUgS0JETVVY X1NMRUVQKHMsIGYsIGQsIHQpICAgICAgICAgICAgICAgIFwKKyAgZG8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBLQkRNVVhfVU5MT0NLIChzKTsgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICB0c2xlZXAgKCYgKHMpLT5mLCBQQ0FUQ0h8UFBSSU8sIGQs IHQpOyAgICAgIFwKKyAgICBLQkRNVVhfTE9DSyAocyk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgd2hpbGUgKDApCisKKyNlbmRpZgorCiAKICNkZWZpbmUgS0VZQk9BUkRfTkFNRQkia2JkbXV4 IgogCkBAIC02NywxNSArMTUwLDYgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwogCi0jZGVmaW5lIEtCRE1VWF9MT0NLX0RFQ0wJc3RydWN0IG10eCBrc19s b2NrCi0jZGVmaW5lIEtCRE1VWF9MT0NLX0lOSVQocykJbXR4X2luaXQoJihzKS0+a3NfbG9jaywg TlVMTCwgTlVMTCwgTVRYX0RFRikKLSNkZWZpbmUgS0JETVVYX0xPQ0tfREVTVFJPWShzKQltdHhf ZGVzdHJveSgmKHMpLT5rc19sb2NrKQotI2RlZmluZSBLQkRNVVhfTE9DSyhzKQkJbXR4X2xvY2so JihzKS0+a3NfbG9jaykKLSNkZWZpbmUgS0JETVVYX1VOTE9DSyhzKQltdHhfdW5sb2NrKCYocykt PmtzX2xvY2spCi0jZGVmaW5lIEtCRE1VWF9MT0NLX0FTU0VSVChzLCB3KQltdHhfYXNzZXJ0KCYo cyktPmtzX2xvY2ssIHcpCi0jZGVmaW5lIEtCRE1VWF9TTEVFUChzLCBmLCBkLCB0KSBcCi0JbXNs ZWVwKCYocyktPmYsICYocyktPmtzX2xvY2ssIFBDQVRDSCB8IChQWkVSTyArIDEpLCBkLCB0KQot CiAjZGVmaW5lCUtCRE1VWF9JTlRSKGtiZCwgYXJnKSBcCiAJKCprYmRzd1soa2JkKS0+a2JfaW5k ZXhdLT5pbnRyKSgoa2JkKSwgKGFyZykpCiAKQEAgLTkxLDkgKzE2NSwxMCBAQAogI2RlZmluZQlL QkRNVVhfRU5BQkxFKGtiZCkgXAogCSgqa2Jkc3dbKGtiZCktPmtiX2luZGV4XS0+ZW5hYmxlKSgo a2JkKSkKIAotLyoga2JkbXV4IGtleWJvYXJkICovCi1zdHJ1Y3Qga2JkbXV4X2tiZAoteworLyoK KyAqIGtiZG11eCBrZXlib2FyZCAKKyAqLworc3RydWN0IGtiZG11eF9rYmQgewogCWtleWJvYXJk X3QJCSprYmQ7CS8qIGtleWJvYXJkICovCiAJaW50CQkJIGlkeDsJLyoga2V5Ym9hcmQgaW5kZXgg Ki8KIAlTTElTVF9FTlRSWShrYmRtdXhfa2JkKQkgbmV4dDsJLyogbGluayB0byBuZXh0ICovCkBA IC0xMDEsOSArMTc2LDEwIEBACiAKIHR5cGVkZWYgc3RydWN0IGtiZG11eF9rYmQJa2JkbXV4X2ti ZF90OwogCi0vKiBrYmRtdXggc3RhdGUgKi8KLXN0cnVjdCBrYmRtdXhfc3RhdGUKLXsKKy8qCisg KiBrYmRtdXggc3RhdGUgCisgKi8KK3N0cnVjdCBrYmRtdXhfc3RhdGUgewogCXN0cnVjdCBjbGlz dAkJIGtzX2lucTsJLyogaW5wdXQgY2hhcnMgcXVldWUgKi8KIAlzdHJ1Y3QgdGFzawkJIGtzX3Rh c2s7CS8qIGludGVycnVwdCB0YXNrICovCiAKQEAgLTEyMCw3ICsxOTYsNyBAQAogCiAJU0xJU1Rf SEVBRCgsIGtiZG11eF9rYmQpIGtzX2tiZHM7CS8qIGtleWJvYXJkcyAqLwogCi0JS0JETVVYX0xP Q0tfREVDTDsKKwkgICAgICAgICAgICAgICAgS0JETVVYX0xPQ0tfREVDTF9HTE9CQUw7CiB9Owog CiB0eXBlZGVmIHN0cnVjdCBrYmRtdXhfc3RhdGUJa2JkbXV4X3N0YXRlX3Q7CkBAIC0xMzQsMTIg KzIxMCwxNSBAQAogc3RhdGljIHZvaWQJCQlrYmRtdXhfa2JkX2ludHIodm9pZCAqLCBpbnQpOwog c3RhdGljIGtiZF9jYWxsYmFja19mdW5jX3QJa2JkbXV4X2tiZF9ldmVudDsKIAotLyogSW50ZXJy dXB0IGhhbmRsZXIgdGFzayAqLworLyoKKyAqIEludGVycnVwdCBoYW5kbGVyIHRhc2sgCisgKi8K IHZvaWQKIGtiZG11eF9rYmRfaW50cih2b2lkICp4a2JkLCBpbnQgcGVuZGluZykKIHsKIAlrZXli b2FyZF90CSprYmQgPSAoa2V5Ym9hcmRfdCAqKSB4a2JkOwogCWtiZG11eF9zdGF0ZV90CSpzdGF0 ZSA9IChrYmRtdXhfc3RhdGVfdCAqKSBrYmQtPmtiX2RhdGE7CisJS0JETVVYX0xPQ0tfREVDTF9M T0NBTDsKIAogCUtCRE1VWF9JTlRSKGtiZCwgTlVMTCk7CiAKQEAgLTE1MSwxOSArMjMwLDI1IEBA CiAJS0JETVVYX1VOTE9DSyhzdGF0ZSk7CiB9CiAKLS8qIFByb2Nlc3MgZXZlbnQgZnJvbSBvbmUg b2Ygb3VyIGtleWJvYXJkcyAqLworLyoKKyAqIFByb2Nlc3MgZXZlbnQgZnJvbSBvbmUgb2Ygb3Vy IGtleWJvYXJkcyAKKyAqLwogc3RhdGljIGludAoga2JkbXV4X2tiZF9ldmVudChrZXlib2FyZF90 ICprYmQsIGludCBldmVudCwgdm9pZCAqYXJnKQogewogCWtiZG11eF9zdGF0ZV90CSpzdGF0ZSA9 IChrYmRtdXhfc3RhdGVfdCAqKSBhcmc7CiAKIAlzd2l0Y2ggKGV2ZW50KSB7Ci0JY2FzZSBLQkRJ T19LRVlJTlBVVDogeworCWNhc2UgS0JESU9fS0VZSU5QVVQ6CisJCXsKIAkJaW50CWM7CisJCQlL QkRNVVhfTE9DS19ERUNMX0xPQ0FMOwogCiAJCUtCRE1VWF9MT0NLKHN0YXRlKTsKIAotCQkvKiBy ZWFkIGFsbCBjaGFycyBmcm9tIHRoZSBrZXlib2FyZCAqLworCQkJLyoKKwkJCSAqIHJlYWQgYWxs IGNoYXJzIGZyb20gdGhlIGtleWJvYXJkIAorCQkJICovCiAJCXdoaWxlIChLQkRNVVhfQ0hFQ0tf Q0hBUihrYmQpKSB7CiAJCQljID0gS0JETVVYX1JFQURfQ0hBUihrYmQsIDApOwogCQkJaWYgKGMg PT0gTk9LRVkpCkBAIC0xNzEsMzEgKzI1NiwzOSBAQAogCQkJaWYgKGMgPT0gRVJSS0VZKQogCQkJ CWNvbnRpbnVlOyAvKiBYWFggcmluZyBiZWxsICovCiAJCQlpZiAoIUtCRF9JU19CVVNZKGtiZCkp Ci0JCQkJY29udGludWU7IC8qIG5vdCBvcGVuIC0gZGlzY2FyZCB0aGUgaW5wdXQgKi8KKwkJCQkJ Y29udGludWU7CS8qIG5vdCBvcGVuIC0gZGlzY2FyZAorCQkJCQkJCSAqIHRoZSBpbnB1dCAqLwog CiAJCQlwdXRjKGMsICZzdGF0ZS0+a3NfaW5xKTsKIAkJfQogCi0JCS8qIHF1ZXVlIGludGVycnVw dCB0YXNrIGlmIG5lZWRlZCAqLwotCQlpZiAoc3RhdGUtPmtzX2lucS5jX2NjID4gMCAmJiAhKHN0 YXRlLT5rc19mbGFncyAmIFRBU0spICYmCi0JCSAgICB0YXNrcXVldWVfZW5xdWV1ZSh0YXNrcXVl dWVfc3dpX2dpYW50LCAmc3RhdGUtPmtzX3Rhc2spID09IDApCisJCQkvKgorCQkJICogcXVldWUg aW50ZXJydXB0IHRhc2sgaWYgbmVlZGVkIAorCQkJICovCisJCQlpZiAoc3RhdGUtPmtzX2lucS5j X2NjID4gMCAmJiAhKHN0YXRlLT5rc19mbGFncyAmIFRBU0spCisJCQkgICAgJiYgdGFza3F1ZXVl X2VucXVldWUoVEFTS1FVRVVFLAorCQkJCQkJICZzdGF0ZS0+a3NfdGFzaykgPT0gMCkKIAkJCXN0 YXRlLT5rc19mbGFncyB8PSBUQVNLOwogCiAJCUtCRE1VWF9VTkxPQ0soc3RhdGUpOwotCQl9IGJy ZWFrOworCQl9CisJCWJyZWFrOwogCi0JY2FzZSBLQkRJT19VTkxPQURJTkc6IHsKKwljYXNlIEtC RElPX1VOTE9BRElORzoKKwkJewogCQlrYmRtdXhfa2JkX3QJKms7CisJCQlLQkRNVVhfTE9DS19E RUNMX0xPQ0FMOwogCiAJCUtCRE1VWF9MT0NLKHN0YXRlKTsKIAotCQlTTElTVF9GT1JFQUNIKGss ICZzdGF0ZS0+a3Nfa2JkcywgbmV4dCkKLQkJCWlmIChrLT5rYmQgPT0ga2JkKQorCQkJU0xJU1Rf Rk9SRUFDSChrLCAmc3RhdGUtPmtzX2tiZHMsCisJCQkJICAgICAgbmV4dCkgaWYgKGstPmtiZCA9 PSBrYmQpCiAJCQkJYnJlYWs7CiAKIAkJaWYgKGsgIT0gTlVMTCkgewogCQkJa2JkX3JlbGVhc2Uo ay0+a2JkLCAmay0+a2JkKTsKLQkJCVNMSVNUX1JFTU9WRSgmc3RhdGUtPmtzX2tiZHMsIGssIGti ZG11eF9rYmQsIG5leHQpOworCQkJCVNMSVNUX1JFTU9WRSgmc3RhdGUtPmtzX2tiZHMsIGssIGti ZG11eF9rYmQsCisJCQkJCSAgICAgbmV4dCk7CiAKIAkJCWstPmtiZCA9IE5VTEw7CiAJCQlrLT5p ZHggPSAtMTsKQEAgLTIwNCwxMSArMjk3LDE0IEBACiAJCX0KIAogCQlLQkRNVVhfVU5MT0NLKHN0 YXRlKTsKLQkJfSBicmVhazsKKwkJfQorCQlicmVhazsKIAogCWRlZmF1bHQ6CiAJCXJldHVybiAo RUlOVkFMKTsKLQkJLyogTk9UIFJFQUNIRUQgKi8KKwkJLyoKKwkJICogTk9UIFJFQUNIRUQgCisJ CSAqLwogCX0KIAogCXJldHVybiAoMCk7CkBAIC0yNDAsNiArMzM2LDggQEAKIHN0YXRpYyBrYmRf c2V0X3N0YXRlX3QJa2JkbXV4X3NldF9zdGF0ZTsKIHN0YXRpYyBrYmRfcG9sbF9tb2RlX3QJa2Jk bXV4X3BvbGw7CiAKKyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKKwogc3RhdGljIGtl eWJvYXJkX3N3aXRjaF90IGtiZG11eHN3ID0gewogCS5wcm9iZSA9CWtiZG11eF9wcm9iZSwKIAku aW5pdCA9CQlrYmRtdXhfaW5pdCwKQEAgLTI2MiwyMSArMzYwLDUzIEBACiAJLmRpYWcgPQkJZ2Vu a2JkX2RpYWcsCiB9OwogCi0vKiBSZXR1cm4gdGhlIG51bWJlciBvZiBmb3VuZCBrZXlib2FyZHMg Ki8KKyNlbHNlCisKK3N0YXRpYyBrZXlib2FyZF9zd2l0Y2hfdCBrYmRtdXhzdyA9IHsKKwlrYmRt dXhfcHJvYmUsCisJa2JkbXV4X2luaXQsCisJa2JkbXV4X3Rlcm0sCisJa2JkbXV4X2ludHIsCisJ a2JkbXV4X3Rlc3RfaWYsCisJa2JkbXV4X2VuYWJsZSwKKwlrYmRtdXhfZGlzYWJsZSwKKwlrYmRt dXhfcmVhZCwKKwlrYmRtdXhfY2hlY2ssCisJa2JkbXV4X3JlYWRfY2hhciwKKwlrYmRtdXhfY2hl Y2tfY2hhciwKKwlrYmRtdXhfaW9jdGwsCisJa2JkbXV4X2xvY2ssCisJa2JkbXV4X2NsZWFyX3N0 YXRlLAorCWtiZG11eF9nZXRfc3RhdGUsCisJa2JkbXV4X3NldF9zdGF0ZSwKKwlnZW5rYmRfZ2V0 X2ZrZXlzdHIsCisJa2JkbXV4X3BvbGwsCisJZ2Vua2JkX2RpYWcKK307CisKKyNlbmRpZgorCisv KgorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZm91bmQga2V5Ym9hcmRzIAorICovCiBzdGF0aWMg aW50CiBrYmRtdXhfY29uZmlndXJlKGludCBmbGFncykKIHsKIAlyZXR1cm4gKDEpOwogfQogCi0v KiBEZXRlY3QgYSBrZXlib2FyZCAqLworLyoKKyAqIERldGVjdCBhIGtleWJvYXJkIAorICovCiBz dGF0aWMgaW50CiBrYmRtdXhfcHJvYmUoaW50IHVuaXQsIHZvaWQgKmFyZywgaW50IGZsYWdzKQog ewogCXJldHVybiAoMCk7CiB9CiAKLS8qIFJlc2V0IGFuZCBpbml0aWFsaXplIHRoZSBrZXlib2Fy ZCAoc3RvbGVuIGZyb20gYXRrYmQuYykgKi8KKy8qCisgKiBSZXNldCBhbmQgaW5pdGlhbGl6ZSB0 aGUga2V5Ym9hcmQgKHN0b2xlbiBmcm9tIGF0a2JkLmMpIAorICovCiBzdGF0aWMgaW50CiBrYmRt dXhfaW5pdChpbnQgdW5pdCwga2V5Ym9hcmRfdCAqKmtiZHAsIHZvaWQgKmFyZywgaW50IGZsYWdz KQogewpAQCAtMjg2LDkgKzQxNiwxMSBAQAogICAgICAgICBhY2NlbnRtYXBfdAkqYWNjbWFwID0g TlVMTDsKICAgICAgICAgZmtleXRhYl90CSpma2V5bWFwID0gTlVMTDsKIAlpbnQJCSBlcnJvciwg bmVlZGZyZWUsIGZrZXltYXBfc2l6ZTsKKwlLQkRNVVhfTE9DS19ERUNMX0xPQ0FMOwogCiAJaWYg KCprYmRwID09IE5VTEwpIHsKLQkJKmtiZHAgPSBrYmQgPSBtYWxsb2Moc2l6ZW9mKCprYmQpLCBN X0tCRE1VWCwgTV9OT1dBSVQgfCBNX1pFUk8pOworCQkqa2JkcCA9IGtiZCA9CisJCSAgICBtYWxs b2Moc2l6ZW9mKCprYmQpLCBNX0tCRE1VWCwgTV9OT1dBSVQgfCBNX1pFUk8pOwogCQlzdGF0ZSA9 IG1hbGxvYyhzaXplb2YoKnN0YXRlKSwgTV9LQkRNVVgsIE1fTk9XQUlUIHwgTV9aRVJPKTsKIAkJ a2V5bWFwID0gbWFsbG9jKHNpemVvZihrZXlfbWFwKSwgTV9LQkRNVVgsIE1fTk9XQUlUKTsKIAkJ YWNjbWFwID0gbWFsbG9jKHNpemVvZihhY2NlbnRfbWFwKSwgTV9LQkRNVVgsIE1fTk9XQUlUKTsK QEAgLTMwMyw3ICs0MzUsOCBAQAogCQl9CiAKIAkJS0JETVVYX0xPQ0tfSU5JVChzdGF0ZSk7Ci0J CWNsaXN0X2FsbG9jX2NibG9ja3MoJnN0YXRlLT5rc19pbnEsIEtCRE1VWF9RX1NJWkUsIEtCRE1V WF9RX1NJWkUgLyAyKTsgLyogWFhYICovCisJCWNsaXN0X2FsbG9jX2NibG9ja3MoJnN0YXRlLT5r c19pbnEsIEtCRE1VWF9RX1NJWkUsIEtCRE1VWF9RX1NJWkUgLyAyKTsJLyogWFhYIAorCQkJCQkJ CQkJCQkgKi8KIAkJVEFTS19JTklUKCZzdGF0ZS0+a3NfdGFzaywgMCwga2JkbXV4X2tiZF9pbnRy LCAodm9pZCAqKSBrYmQpOwogCQlTTElTVF9JTklUKCZzdGF0ZS0+a3Nfa2Jkcyk7CiAJfSBlbHNl IGlmIChLQkRfSVNfSU5JVElBTElaRUQoKmtiZHApICYmIEtCRF9JU19DT05GSUdVUkVEKCprYmRw KSkgewpAQCAtMzE5LDEyICs0NTIsMTUgQEAKIAl9CiAKIAlpZiAoIUtCRF9JU19QUk9CRUQoa2Jk KSkgewotCQkvKiBYWFggYXNzdW1lIDEwMS8xMDIga2V5cyBrZXlib2FyZCAqLworCQkvKgorCQkg KiBYWFggYXNzdW1lIDEwMS8xMDIga2V5cyBrZXlib2FyZCAKKwkJICovCiAJCWtiZF9pbml0X3N0 cnVjdChrYmQsIEtFWUJPQVJEX05BTUUsIEtCXzEwMSwgdW5pdCwgZmxhZ3MsIDAsIDApOwogCQli Y29weSgma2V5X21hcCwga2V5bWFwLCBzaXplb2Yoa2V5X21hcCkpOwogCQliY29weSgmYWNjZW50 X21hcCwgYWNjbWFwLCBzaXplb2YoYWNjZW50X21hcCkpOwogCQliY29weShma2V5X3RhYiwgZmtl eW1hcCwKLQkJCWltaW4oZmtleW1hcF9zaXplKnNpemVvZihma2V5bWFwWzBdKSwgc2l6ZW9mKGZr ZXlfdGFiKSkpOworCQkgICAgICBpbWluKGZrZXltYXBfc2l6ZSAqIHNpemVvZihma2V5bWFwWzBd KSwKKwkJCSAgIHNpemVvZihma2V5X3RhYikpKTsKIAkJa2JkX3NldF9tYXBzKGtiZCwga2V5bWFw LCBhY2NtYXAsIGZrZXltYXAsIGZrZXltYXBfc2l6ZSk7CiAJCWtiZC0+a2JfZGF0YSA9ICh2b2lk ICopc3RhdGU7CiAJCkBAIC0zNDAsMTIgKzQ3NiwxMSBAQAogCWlmICghS0JEX0lTX0lOSVRJQUxJ WkVEKGtiZCkgJiYgIShmbGFncyAmIEtCX0NPTkZfUFJPQkVfT05MWSkpIHsKIAkJa2JkLT5rYl9j b25maWcgPSBmbGFncyAmIH5LQl9DT05GX1BST0JFX09OTFk7CiAKLS8qIFhYWAotCQlrYmRtdXhf aW9jdGwoa2JkLCBLRFNFVExFRCwgKGNhZGRyX3QpJnN0YXRlLT5rc19zdGF0ZSk7Ci0JCWRlbGF5 WzBdID0ga2JkLT5rYl9kZWxheTE7Ci0JCWRlbGF5WzFdID0ga2JkLT5rYl9kZWxheTI7Ci0JCWti ZG11eF9pb2N0bChrYmQsIEtEU0VUUkVQRUFULCAoY2FkZHJfdClkZWxheSk7Ci1YWFggKi8KKwkJ LyoKKwkJICogWFhYIGtiZG11eF9pb2N0bChrYmQsIEtEU0VUTEVELCAoY2FkZHJfdCkmc3RhdGUt PmtzX3N0YXRlKTsKKwkJICogZGVsYXlbMF0gPSBrYmQtPmtiX2RlbGF5MTsgZGVsYXlbMV0gPSBr YmQtPmtiX2RlbGF5MjsKKwkJICoga2JkbXV4X2lvY3RsKGtiZCwgS0RTRVRSRVBFQVQsIChjYWRk cl90KWRlbGF5KTsgWFhYIAorCQkgKi8KIAogCQlLQkRfSU5JVF9ET05FKGtiZCk7CiAJfQpAQCAt MzgxLDIwICs1MTYsMjcgQEAKIAlyZXR1cm4gKGVycm9yKTsKIH0KIAotLyogRmluaXNoIHVzaW5n IHRoaXMga2V5Ym9hcmQgKi8KKy8qCisgKiBGaW5pc2ggdXNpbmcgdGhpcyBrZXlib2FyZCAKKyAq Lwogc3RhdGljIGludAoga2JkbXV4X3Rlcm0oa2V5Ym9hcmRfdCAqa2JkKQogewogCWtiZG11eF9z dGF0ZV90CSpzdGF0ZSA9IChrYmRtdXhfc3RhdGVfdCAqKSBrYmQtPmtiX2RhdGE7CiAJa2JkbXV4 X2tiZF90CSprOworCUtCRE1VWF9MT0NLX0RFQ0xfTE9DQUw7CiAKIAlLQkRNVVhfTE9DSyhzdGF0 ZSk7CiAKLQkvKiB3YWl0IGZvciBpbnRlcnJ1cHQgdGFzayAqLworCS8qCisJICogd2FpdCBmb3Ig aW50ZXJydXB0IHRhc2sgCisJICovCiAJd2hpbGUgKHN0YXRlLT5rc19mbGFncyAmIFRBU0spCiAJ CUtCRE1VWF9TTEVFUChzdGF0ZSwga3NfdGFzaywgImtiZG11eGMiLCAwKTsKIAotCS8qIHJlbGVh c2UgYWxsIGtleWJvYXJkcyBmcm9tIHRoZSBtdXggKi8KKwkvKgorCSAqIHJlbGVhc2UgYWxsIGtl eWJvYXJkcyBmcm9tIHRoZSBtdXggCisJICovCiAJd2hpbGUgKChrID0gU0xJU1RfRklSU1QoJnN0 YXRlLT5rc19rYmRzKSkgIT0gTlVMTCkgewogCQlrYmRfcmVsZWFzZShrLT5rYmQsICZrLT5rYmQp OwogCQlTTElTVF9SRU1PVkVfSEVBRCgmc3RhdGUtPmtzX2tiZHMsIG5leHQpOwpAQCAtNDA1LDcg KzU0Nyw5IEBACiAJCWZyZWUoaywgTV9LQkRNVVgpOwogCX0KIAotCS8qIGZsdXNoIGlucHV0IHF1 ZXVlICovCisJLyoKKwkgKiBmbHVzaCBpbnB1dCBxdWV1ZSAKKwkgKi8KIAluZGZsdXNoKCZzdGF0 ZS0+a3NfaW5xLCBzdGF0ZS0+a3NfaW5xLmNfY2MpOwogCWNsaXN0X2ZyZWVfY2Jsb2Nrcygmc3Rh dGUtPmtzX2lucSk7CiAKQEAgLTQyMSwyNyArNTY1LDM2IEBACiAJcmV0dXJuICgwKTsKIH0KIAot LyogS2V5Ym9hcmQgaW50ZXJydXB0IHJvdXRpbmUgKi8KKy8qCisgKiBLZXlib2FyZCBpbnRlcnJ1 cHQgcm91dGluZSAKKyAqLwogc3RhdGljIGludAoga2JkbXV4X2ludHIoa2V5Ym9hcmRfdCAqa2Jk LCB2b2lkICphcmcpCiB7CiAJaW50CWM7CiAKIAlpZiAoS0JEX0lTX0FDVElWRShrYmQpICYmIEtC RF9JU19CVVNZKGtiZCkpIHsKLQkJLyogbGV0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBwcm9j ZXNzIHRoZSBpbnB1dCAqLworCQkvKgorCQkgKiBsZXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRv IHByb2Nlc3MgdGhlIGlucHV0IAorCQkgKi8KIAkJKCprYmQtPmtiX2NhbGxiYWNrLmtjX2Z1bmMp KGtiZCwgS0JESU9fS0VZSU5QVVQsCiAJCQkJCSAgICBrYmQtPmtiX2NhbGxiYWNrLmtjX2FyZyk7 CiAJfSBlbHNlIHsKLQkJLyogcmVhZCBhbmQgZGlzY2FyZCB0aGUgaW5wdXQ7IG5vIG9uZSBpcyB3 YWl0aW5nIGZvciBpbnB1dCAqLworCQkvKgorCQkgKiByZWFkIGFuZCBkaXNjYXJkIHRoZSBpbnB1 dDsgbm8gb25lIGlzIHdhaXRpbmcgZm9yIGlucHV0IAorCQkgKi8KIAkJZG8gewogCQkJYyA9IGti ZG11eF9yZWFkX2NoYXIoa2JkLCBGQUxTRSk7Ci0JCX0gd2hpbGUgKGMgIT0gTk9LRVkpOworCQl9 CisJCXdoaWxlIChjICE9IE5PS0VZKTsKIAl9CiAKIAlyZXR1cm4gKDApOwogfQogCi0vKiBUZXN0 IHRoZSBpbnRlcmZhY2UgdG8gdGhlIGRldmljZSAqLworLyoKKyAqIFRlc3QgdGhlIGludGVyZmFj ZSB0byB0aGUgZGV2aWNlIAorICovCiBzdGF0aWMgaW50CiBrYmRtdXhfdGVzdF9pZihrZXlib2Fy ZF90ICprYmQpCiB7CkBAIC00NjAsNyArNjEzLDkgQEAKIAlyZXR1cm4gKDApOwogfQogCi0vKiBE aXNhbGxvdyB0aGUgYWNjZXNzIHRvIHRoZSBkZXZpY2UgKi8KKy8qCisgKiBEaXNhbGxvdyB0aGUg YWNjZXNzIHRvIHRoZSBkZXZpY2UgCisgKi8KIHN0YXRpYyBpbnQKIGtiZG11eF9kaXNhYmxlKGtl eWJvYXJkX3QgKmtiZCkKIHsKQEAgLTQ2OCwxMiArNjIzLDE1IEBACiAJcmV0dXJuICgwKTsKIH0K IAotLyogUmVhZCBvbmUgYnl0ZSBmcm9tIHRoZSBrZXlib2FyZCBpZiBpdCdzIGFsbG93ZWQgKi8K Ky8qCisgKiBSZWFkIG9uZSBieXRlIGZyb20gdGhlIGtleWJvYXJkIGlmIGl0J3MgYWxsb3dlZCAK KyAqLwogc3RhdGljIGludAoga2JkbXV4X3JlYWQoa2V5Ym9hcmRfdCAqa2JkLCBpbnQgd2FpdCkK IHsKIAlrYmRtdXhfc3RhdGVfdAkqc3RhdGUgPSAoa2JkbXV4X3N0YXRlX3QgKikga2JkLT5rYl9k YXRhOwogCWludAkJIGM7CisJS0JETVVYX0xPQ0tfREVDTF9MT0NBTDsKIAogCUtCRE1VWF9MT0NL KHN0YXRlKTsKIAljID0gZ2V0Yygmc3RhdGUtPmtzX2lucSk7CkBAIC00ODUsMTIgKzY0MywxNSBA QAogCXJldHVybiAoS0JEX0lTX0FDVElWRShrYmQpPyBjIDogLTEpOwogfQogCi0vKiBDaGVjayBp ZiBkYXRhIGlzIHdhaXRpbmcgKi8KKy8qCisgKiBDaGVjayBpZiBkYXRhIGlzIHdhaXRpbmcgCisg Ki8KIHN0YXRpYyBpbnQKIGtiZG11eF9jaGVjayhrZXlib2FyZF90ICprYmQpCiB7CiAJa2JkbXV4 X3N0YXRlX3QJKnN0YXRlID0gTlVMTDsKIAlpbnQJCSByZWFkeTsKKwlLQkRNVVhfTE9DS19ERUNM X0xPQ0FMOwogCiAJaWYgKCFLQkRfSVNfQUNUSVZFKGtiZCkpCiAJCXJldHVybiAoRkFMU0UpOwpA QCAtNTA0LDE5ICs2NjUsMjQgQEAKIAlyZXR1cm4gKHJlYWR5KTsKIH0KIAotLyogUmVhZCBjaGFy IGZyb20gdGhlIGtleWJvYXJkIChzdG9sZW4gZnJvbSBhdGtiZC5jKSAqLworLyoKKyAqIFJlYWQg Y2hhciBmcm9tIHRoZSBrZXlib2FyZCAoc3RvbGVuIGZyb20gYXRrYmQuYykgCisgKi8KIHN0YXRp YyB1X2ludAoga2JkbXV4X3JlYWRfY2hhcihrZXlib2FyZF90ICprYmQsIGludCB3YWl0KQogewog CWtiZG11eF9zdGF0ZV90CSpzdGF0ZSA9IChrYmRtdXhfc3RhdGVfdCAqKSBrYmQtPmtiX2RhdGE7 CiAJdV9pbnQJCSBhY3Rpb247CiAJaW50CQkgc2NhbmNvZGUsIGtleWNvZGU7CisJS0JETVVYX0xP Q0tfREVDTF9MT0NBTDsKIAogCUtCRE1VWF9MT0NLKHN0YXRlKTsKIAogbmV4dF9jb2RlOgogCi0J LyogZG8gd2UgaGF2ZSBhIGNvbXBvc2VkIGNoYXIgdG8gcmV0dXJuPyAqLworCS8qCisJICogZG8g d2UgaGF2ZSBhIGNvbXBvc2VkIGNoYXIgdG8gcmV0dXJuPyAKKwkgKi8KIAlpZiAoIShzdGF0ZS0+ a3NfZmxhZ3MgJiBDT01QT1NFKSAmJiAoc3RhdGUtPmtzX2NvbXBvc2VkX2NoYXIgPiAwKSkgewog CQlhY3Rpb24gPSBzdGF0ZS0+a3NfY29tcG9zZWRfY2hhcjsKIAkJc3RhdGUtPmtzX2NvbXBvc2Vk X2NoYXIgPSAwOwpAQCAtNTMxLDIzICs2OTcsMzEgQEAKIAkJcmV0dXJuIChhY3Rpb24pOwogCX0K IAotCS8qIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgaW4gdGhlIGtleWJvYXJkIHF1ZXVlICov CisJLyoKKwkgKiBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIGluIHRoZSBrZXlib2FyZCBxdWV1 ZSAKKwkgKi8KIAlzY2FuY29kZSA9IGdldGMoJnN0YXRlLT5rc19pbnEpOwogCWlmIChzY2FuY29k ZSA9PSAtMSkgewogCQlLQkRNVVhfVU5MT0NLKHN0YXRlKTsKIAkJcmV0dXJuIChOT0tFWSk7CiAJ fQotCS8qIFhYWCBGSVhNRTogY2hlY2sgZm9yIC0xIGlmIHdhaXQgPT0gMSEgKi8KKwkvKgorCSAq IFhYWCBGSVhNRTogY2hlY2sgZm9yIC0xIGlmIHdhaXQgPT0gMSEgCisJICovCiAKIAlrYmQtPmti X2NvdW50ICsrOwogCi0JLyogcmV0dXJuIHRoZSBieXRlIGFzIGlzIGZvciB0aGUgS19SQVcgbW9k ZSAqLworCS8qCisJICogcmV0dXJuIHRoZSBieXRlIGFzIGlzIGZvciB0aGUgS19SQVcgbW9kZSAK KwkgKi8KIAlpZiAoc3RhdGUtPmtzX21vZGUgPT0gS19SQVcpIHsKIAkJS0JETVVYX1VOTE9DSyhz dGF0ZSk7CiAJCXJldHVybiAoc2NhbmNvZGUpOwogCX0KIAotCS8qIHRyYW5zbGF0ZSB0aGUgc2Nh biBjb2RlIGludG8gYSBrZXljb2RlICovCisJLyoKKwkgKiB0cmFuc2xhdGUgdGhlIHNjYW4gY29k ZSBpbnRvIGEga2V5Y29kZSAKKwkgKi8KIAlrZXljb2RlID0gc2NhbmNvZGUgJiAweDdGOwogCXN3 aXRjaCAoc3RhdGUtPmtzX3ByZWZpeCkgewogCWNhc2UgMHgwMDoJLyogbm9ybWFsIHNjYW5jb2Rl ICovCkBAIC02MjIsNyArNzk2LDkgQEAKIAkJY2FzZSAweDUzOgkvKiBncmV5IGRlbGV0ZSBrZXkg Ki8KIAkJCWtleWNvZGUgPSAweDY3OwogCQkJYnJlYWs7Ci0JCS8qIHRoZSBmb2xsb3dpbmcgMyBh cmUgb25seSB1c2VkIG9uIHRoZSBNUyAiTmF0dXJhbCIga2V5Ym9hcmQgKi8KKwkJCS8qCisJCQkg KiB0aGUgZm9sbG93aW5nIDMgYXJlIG9ubHkgdXNlZCBvbiB0aGUgTVMgIk5hdHVyYWwiIGtleWJv YXJkIAorCQkJICovCiAJCWNhc2UgMHg1YjoJLyogbGVmdCBXaW5kb3cga2V5ICovCiAJCQlrZXlj b2RlID0gMHg2OTsKIAkJCWJyZWFrOwpAQCAtNjU2LDcgKzgzMiw5IEBACiAJCWlmIChrZXljb2Rl ID09IDB4MUQpCiAJCQlzdGF0ZS0+a3NfcHJlZml4ID0gMHgxRDsKIAkJZ290byBuZXh0X2NvZGU7 Ci0JCS8qIE5PVCBSRUFDSEVEICovCisJCS8qCisJCSAqIE5PVCBSRUFDSEVEIAorCQkgKi8KIAlj YXNlIDB4MUQ6CS8qIHBhdXNlIC8gYnJlYWsgKi8KIAkJc3RhdGUtPmtzX3ByZWZpeCA9IDA7CiAJ CWlmIChrZXljb2RlICE9IDB4NDUpCkBAIC02NjUsNyArODQzLDkgQEAKIAkJYnJlYWs7CiAJfQog Ci0JLyogWFhYIGFzc3VtZSAxMDEvMTAyIGtleXMgQVQga2V5Ym9hcmQgKi8KKwkvKgorCSAqIFhY WCBhc3N1bWUgMTAxLzEwMiBrZXlzIEFUIGtleWJvYXJkIAorCSAqLwogCXN3aXRjaCAoa2V5Y29k ZSkgewogCWNhc2UgMHg1YzoJLyogcHJpbnQgc2NyZWVuICovCiAJCWlmIChzdGF0ZS0+a3NfZmxh Z3MgJiBBTFRTKQpAQCAtNjc3LDE3ICs4NTcsMjUgQEAKIAkJYnJlYWs7CiAJfQogCi0JLyogcmV0 dXJuIHRoZSBrZXkgY29kZSBpbiB0aGUgS19DT0RFIG1vZGUgKi8KKwkvKgorCSAqIHJldHVybiB0 aGUga2V5IGNvZGUgaW4gdGhlIEtfQ09ERSBtb2RlIAorCSAqLwogCWlmIChzdGF0ZS0+a3NfbW9k ZSA9PSBLX0NPREUpIHsKIAkJS0JETVVYX1VOTE9DSyhzdGF0ZSk7CiAJCXJldHVybiAoa2V5Y29k ZSB8IChzY2FuY29kZSAmIDB4ODApKTsKIAl9CiAKLQkvKiBjb21wb3NlIGEgY2hhcmFjdGVyIGNv ZGUgKi8KKwkvKgorCSAqIGNvbXBvc2UgYSBjaGFyYWN0ZXIgY29kZSAKKwkgKi8KIAlpZiAoc3Rh dGUtPmtzX2ZsYWdzICYgQ09NUE9TRSkgewogCQlzd2l0Y2ggKGtleWNvZGUgfCAoc2NhbmNvZGUg JiAweDgwKSkgewotCQkvKiBrZXkgcHJlc3NlZCwgcHJvY2VzcyBpdCAqLwotCQljYXNlIDB4NDc6 IGNhc2UgMHg0ODogY2FzZSAweDQ5OgkvKiBrZXlwYWQgNyw4LDkgKi8KKwkJCS8qCisJCQkgKiBr ZXkgcHJlc3NlZCwgcHJvY2VzcyBpdCAKKwkJCSAqLworCQljYXNlIDB4NDc6CisJCWNhc2UgMHg0 ODoKKwkJY2FzZSAweDQ5OgkvKiBrZXlwYWQgNyw4LDkgKi8KIAkJCXN0YXRlLT5rc19jb21wb3Nl ZF9jaGFyICo9IDEwOwogCQkJc3RhdGUtPmtzX2NvbXBvc2VkX2NoYXIgKz0ga2V5Y29kZSAtIDB4 NDA7CiAJCQlpZiAoc3RhdGUtPmtzX2NvbXBvc2VkX2NoYXIgPiBVQ0hBUl9NQVgpIHsKQEAgLTY5 NSw3ICs4ODMsOSBAQAogCQkJCXJldHVybiAoRVJSS0VZKTsKIAkJCX0KIAkJCWdvdG8gbmV4dF9j b2RlOwotCQljYXNlIDB4NEI6IGNhc2UgMHg0QzogY2FzZSAweDREOgkvKiBrZXlwYWQgNCw1LDYg Ki8KKwkJY2FzZSAweDRCOgorCQljYXNlIDB4NEM6CisJCWNhc2UgMHg0RDoJLyoga2V5cGFkIDQs NSw2ICovCiAJCQlzdGF0ZS0+a3NfY29tcG9zZWRfY2hhciAqPSAxMDsKIAkJCXN0YXRlLT5rc19j b21wb3NlZF9jaGFyICs9IGtleWNvZGUgLSAweDQ3OwogCQkJaWYgKHN0YXRlLT5rc19jb21wb3Nl ZF9jaGFyID4gVUNIQVJfTUFYKSB7CkBAIC03MDMsNyArODkzLDkgQEAKIAkJCQlyZXR1cm4gKEVS UktFWSk7CiAJCQl9CiAJCQlnb3RvIG5leHRfY29kZTsKLQkJY2FzZSAweDRGOiBjYXNlIDB4NTA6 IGNhc2UgMHg1MToJLyoga2V5cGFkIDEsMiwzICovCisJCWNhc2UgMHg0RjoKKwkJY2FzZSAweDUw OgorCQljYXNlIDB4NTE6CS8qIGtleXBhZCAxLDIsMyAqLwogCQkJc3RhdGUtPmtzX2NvbXBvc2Vk X2NoYXIgKj0gMTA7CiAJCQlzdGF0ZS0+a3NfY29tcG9zZWRfY2hhciArPSBrZXljb2RlIC0gMHg0 RTsKIAkJCWlmIChzdGF0ZS0+a3NfY29tcG9zZWRfY2hhciA+IFVDSEFSX01BWCkgewpAQCAtNzE5 LDEwICs5MTEsMTggQEAKIAkJCX0KIAkJCWdvdG8gbmV4dF9jb2RlOwogCi0JCS8qIGtleSByZWxl YXNlZCwgbm8gaW50ZXJlc3QgaGVyZSAqLwotCQljYXNlIDB4Qzc6IGNhc2UgMHhDODogY2FzZSAw eEM5OgkvKiBrZXlwYWQgNyw4LDkgKi8KLQkJY2FzZSAweENCOiBjYXNlIDB4Q0M6IGNhc2UgMHhD RDoJLyoga2V5cGFkIDQsNSw2ICovCi0JCWNhc2UgMHhDRjogY2FzZSAweEQwOiBjYXNlIDB4RDE6 CS8qIGtleXBhZCAxLDIsMyAqLworCQkJLyoKKwkJCSAqIGtleSByZWxlYXNlZCwgbm8gaW50ZXJl c3QgaGVyZSAKKwkJCSAqLworCQljYXNlIDB4Qzc6CisJCWNhc2UgMHhDODoKKwkJY2FzZSAweEM5 OgkvKiBrZXlwYWQgNyw4LDkgKi8KKwkJY2FzZSAweENCOgorCQljYXNlIDB4Q0M6CisJCWNhc2Ug MHhDRDoJLyoga2V5cGFkIDQsNSw2ICovCisJCWNhc2UgMHhDRjoKKwkJY2FzZSAweEQwOgorCQlj YXNlIDB4RDE6CS8qIGtleXBhZCAxLDIsMyAqLwogCQljYXNlIDB4RDI6CQkJCS8qIGtleXBhZCAw ICovCiAJCQlnb3RvIG5leHRfY29kZTsKIApAQCAtNzQwLDcgKzk0MCw5IEBACiAJCX0KIAl9CiAK LQkvKiBrZXljb2RlIHRvIGtleSBhY3Rpb24gKi8KKwkvKgorCSAqIGtleWNvZGUgdG8ga2V5IGFj dGlvbiAKKwkgKi8KIAlhY3Rpb24gPSBnZW5rYmRfa2V5YWN0aW9uKGtiZCwga2V5Y29kZSwgc2Nh bmNvZGUgJiAweDgwLAogCQkJJnN0YXRlLT5rc19zdGF0ZSwgJnN0YXRlLT5rc19hY2NlbnRzKTsK IAlpZiAoYWN0aW9uID09IE5PS0VZKQpAQCAtNzUxLDEyICs5NTMsMTUgQEAKIAlyZXR1cm4gKGFj dGlvbik7CiB9CiAKLS8qIENoZWNrIGlmIGNoYXIgaXMgd2FpdGluZyAqLworLyoKKyAqIENoZWNr IGlmIGNoYXIgaXMgd2FpdGluZyAKKyAqLwogc3RhdGljIGludAoga2JkbXV4X2NoZWNrX2NoYXIo a2V5Ym9hcmRfdCAqa2JkKQogewogCWtiZG11eF9zdGF0ZV90CSpzdGF0ZSA9IChrYmRtdXhfc3Rh dGVfdCAqKSBrYmQtPmtiX2RhdGE7CiAJaW50CQkgcmVhZHk7CisJS0JETVVYX0xPQ0tfREVDTF9M T0NBTDsKIAogCWlmICghS0JEX0lTX0FDVElWRShrYmQpKQogCQlyZXR1cm4gKEZBTFNFKTsKQEAg LTc3MywxMyArOTc4LDE2IEBACiAJcmV0dXJuIChyZWFkeSk7CiB9CiAKLS8qIEtleWJvYXJkIGlv Y3RsJ3MgKi8KKy8qCisgKiBLZXlib2FyZCBpb2N0bCdzIAorICovCiBzdGF0aWMgaW50CiBrYmRt dXhfaW9jdGwoa2V5Ym9hcmRfdCAqa2JkLCB1X2xvbmcgY21kLCBjYWRkcl90IGFyZykKIHsKIAlr YmRtdXhfc3RhdGVfdAkqc3RhdGUgPSAoa2JkbXV4X3N0YXRlX3QgKikga2JkLT5rYl9kYXRhOwog CWtiZG11eF9rYmRfdAkqayA9IE5VTEw7CiAJaW50CQkgZXJyb3IgPSAwLCBtb2RlOworCUtCRE1V WF9MT0NLX0RFQ0xfTE9DQUw7CiAKIAlpZiAoc3RhdGUgPT0gTlVMTCkKIAkJcmV0dXJuIChFTlhJ Tyk7CkBAIC03ODgsOCArOTk2LDggQEAKIAljYXNlIEtCRE1VWF9BRERLQkQ6IC8qIGFkZCBrZXli b2FyZCB0byB0aGUgbXV4ICovCiAJCUtCRE1VWF9MT0NLKHN0YXRlKTsKIAotCQlTTElTVF9GT1JF QUNIKGssICZzdGF0ZS0+a3Nfa2JkcywgbmV4dCkKLQkJCWlmIChrLT5pZHggPT0gKigoaW50ICop IGFyZykpCisJCVNMSVNUX0ZPUkVBQ0goaywgJnN0YXRlLT5rc19rYmRzLAorCQkJICAgICAgbmV4 dCkgaWYgKGstPmlkeCA9PSAqKChpbnQgKilhcmcpKQogCQkJCWJyZWFrOwogCiAJCWlmIChrICE9 IE5VTEwpIHsKQEAgLTg0NywxNCArMTA1NSwxNSBAQAogCWNhc2UgS0JETVVYX1JFTEtCRDogLyog cmVsZWFzZSBrZXlib2FyZCBmcm9tIHRoZSBtdXggKi8KIAkJS0JETVVYX0xPQ0soc3RhdGUpOwog Ci0JCVNMSVNUX0ZPUkVBQ0goaywgJnN0YXRlLT5rc19rYmRzLCBuZXh0KQotCQkJaWYgKGstPmlk eCA9PSAqKChpbnQgKikgYXJnKSkKKwkJU0xJU1RfRk9SRUFDSChrLCAmc3RhdGUtPmtzX2tiZHMs CisJCQkgICAgICBuZXh0KSBpZiAoay0+aWR4ID09ICooKGludCAqKWFyZykpCiAJCQkJYnJlYWs7 CiAKIAkJaWYgKGsgIT0gTlVMTCkgewogCQkJZXJyb3IgPSBrYmRfcmVsZWFzZShrLT5rYmQsICZr LT5rYmQpOwogCQkJaWYgKGVycm9yID09IDApIHsKLQkJCQlTTElTVF9SRU1PVkUoJnN0YXRlLT5r c19rYmRzLCBrLCBrYmRtdXhfa2JkLCBuZXh0KTsKKwkJCQlTTElTVF9SRU1PVkUoJnN0YXRlLT5r c19rYmRzLCBrLCBrYmRtdXhfa2JkLAorCQkJCQkgICAgIG5leHQpOwogCiAJCQkJay0+a2JkID0g TlVMTDsKIAkJCQlrLT5pZHggPSAtMTsKQEAgLTg3OSwxMSArMTA4OCwxNSBAQAogCQlzd2l0Y2gg KCooKGludCAqKSBhcmcpKSB7CiAJCWNhc2UgS19YTEFURToKIAkJCWlmIChzdGF0ZS0+a3NfbW9k ZSAhPSBLX1hMQVRFKSB7Ci0JCQkJLyogbWFrZSBsb2NrIGtleSBzdGF0ZSBhbmQgTEVEIHN0YXRl IG1hdGNoICovCisJCQkJLyoKKwkJCQkgKiBtYWtlIGxvY2sga2V5IHN0YXRlIGFuZCBMRUQgc3Rh dGUgbWF0Y2ggCisJCQkJICovCiAJCQkJc3RhdGUtPmtzX3N0YXRlICY9IH5MT0NLX01BU0s7CiAJ CQkJc3RhdGUtPmtzX3N0YXRlIHw9IEtCRF9MRURfVkFMKGtiZCk7CiAgICAgICAgICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBGQUxMVEhST1VHSCAqLworCQkJ LyoKKwkJCSAqIEZBTExUSFJPVUdIIAorCQkJICovCiAKIAkJY2FzZSBLX1JBVzoKIAkJY2FzZSBL X0NPREU6CkBAIC05MTAsNyArMTEyMyw5IEBACiAJY2FzZSBLRFNFVExFRDogLyogc2V0IGtleWJv YXJkIExFRCAqLwogCQlLQkRNVVhfTE9DSyhzdGF0ZSk7CiAKLQkJLyogTk9URTogbG9jayBrZXkg c3RhdGUgaW4ga3Nfc3RhdGUgd29uJ3QgYmUgY2hhbmdlZCAqLworCQkvKgorCQkgKiBOT1RFOiBs b2NrIGtleSBzdGF0ZSBpbiBrc19zdGF0ZSB3b24ndCBiZSBjaGFuZ2VkIAorCQkgKi8KIAkJaWYg KCooKGludCAqKSBhcmcpICYgfkxPQ0tfTUFTSykgewogCQkJS0JETVVYX1VOTE9DSyhzdGF0ZSk7 CiAKQEAgLTk0Myw3ICsxMTU4LDkgQEAKIAkJS0JETVVYX1VOTE9DSyhzdGF0ZSk7CiAKIAkJcmV0 dXJuIChrYmRtdXhfaW9jdGwoa2JkLCBLRFNFVExFRCwgYXJnKSk7Ci0JCS8qIE5PVCBSRUFDSEVE ICovCisJCS8qCisJCSAqIE5PVCBSRUFDSEVEIAorCQkgKi8KIAogCWNhc2UgS0RTRVRSRVBFQVQ6 IC8qIHNldCBrZXlib2FyZCByZXBlYXQgcmF0ZSAobmV3IGludGVyZmFjZSkgKi8KIAkJYnJlYWs7 CkBAIC05NTcsNyArMTE3NCw5IEBACiAJCUtCRE1VWF9MT0NLKHN0YXRlKTsKICAgICAgICAgICAg ICAgICBzdGF0ZS0+a3NfYWNjZW50cyA9IDA7CiAJCUtCRE1VWF9VTkxPQ0soc3RhdGUpOwotICAg ICAgICAgICAgICAgIC8qIEZBTExUSFJPVUdIICovCisJCS8qCisJCSAqIEZBTExUSFJPVUdIIAor CQkgKi8KIAogCWRlZmF1bHQ6CiAJCWVycm9yID0gZ2Vua2JkX2NvbW1vbmlvY3RsKGtiZCwgY21k LCBhcmcpOwpAQCAtOTY3LDE0ICsxMTg2LDE4IEBACiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLS8q IExvY2sgdGhlIGFjY2VzcyB0byB0aGUga2V5Ym9hcmQgKi8KKy8qCisgKiBMb2NrIHRoZSBhY2Nl c3MgdG8gdGhlIGtleWJvYXJkIAorICovCiBzdGF0aWMgaW50CiBrYmRtdXhfbG9jayhrZXlib2Fy ZF90ICprYmQsIGludCBsb2NrKQogewogCXJldHVybiAoMSk7IC8qIFhYWCAqLwogfQogCi0vKiBD bGVhciB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGtleWJvYXJkICovCisvKgorICogQ2xlYXIg dGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXlib2FyZCAKKyAqLwogc3RhdGljIHZvaWQKIGti ZG11eF9jbGVhcl9zdGF0ZV9sb2NrZWQoa2JkbXV4X3N0YXRlX3QgKnN0YXRlKQogewpAQCAtOTg0 LDcgKzEyMDcsOSBAQAogCXN0YXRlLT5rc19zdGF0ZSAmPSBMT0NLX01BU0s7CS8qIHByZXNlcnZl IGxvY2tpbmcga2V5IHN0YXRlICovCiAJc3RhdGUtPmtzX2FjY2VudHMgPSAwOwogCXN0YXRlLT5r c19jb21wb3NlZF9jaGFyID0gMDsKLS8qCXN0YXRlLT5rc19wcmVmaXggPSAwOwkJWFhYICovCisJ LyoKKwkgKiBzdGF0ZS0+a3NfcHJlZml4ID0gMDsgWFhYIAorCSAqLwogCiAJbmRmbHVzaCgmc3Rh dGUtPmtzX2lucSwgc3RhdGUtPmtzX2lucS5jX2NjKTsKIH0KQEAgLTk5MywxMyArMTIxOCwxNiBA QAoga2JkbXV4X2NsZWFyX3N0YXRlKGtleWJvYXJkX3QgKmtiZCkKIHsKIAlrYmRtdXhfc3RhdGVf dAkqc3RhdGUgPSAoa2JkbXV4X3N0YXRlX3QgKikga2JkLT5rYl9kYXRhOworCUtCRE1VWF9MT0NL X0RFQ0xfTE9DQUw7CiAKIAlLQkRNVVhfTE9DSyhzdGF0ZSk7CiAJa2JkbXV4X2NsZWFyX3N0YXRl X2xvY2tlZChzdGF0ZSk7CiAJS0JETVVYX1VOTE9DSyhzdGF0ZSk7CiB9CiAKLS8qIFNhdmUgdGhl IGludGVybmFsIHN0YXRlICovCisvKgorICogU2F2ZSB0aGUgaW50ZXJuYWwgc3RhdGUgCisgKi8K IHN0YXRpYyBpbnQKIGtiZG11eF9nZXRfc3RhdGUoa2V5Ym9hcmRfdCAqa2JkLCB2b2lkICpidWYs IHNpemVfdCBsZW4pCiB7CkBAIC0xMDA4LDI4ICsxMjM2LDM1IEBACiAJaWYgKGxlbiA8IHNpemVv ZihrYmRtdXhfc3RhdGVfdCkpCiAJCXJldHVybiAoLTEpOwogCi0JYmNvcHkoa2JkLT5rYl9kYXRh LCBidWYsIHNpemVvZihrYmRtdXhfc3RhdGVfdCkpOyAvKiBYWFggbG9ja2luZz8gKi8KKwliY29w eShrYmQtPmtiX2RhdGEsIGJ1Ziwgc2l6ZW9mKGtiZG11eF9zdGF0ZV90KSk7CS8qIFhYWAorCQkJ CQkJCQkgKiBsb2NraW5nPyAqLwogCiAJcmV0dXJuICgwKTsKIH0KIAotLyogU2V0IHRoZSBpbnRl cm5hbCBzdGF0ZSAqLworLyoKKyAqIFNldCB0aGUgaW50ZXJuYWwgc3RhdGUgCisgKi8KIHN0YXRp YyBpbnQKIGtiZG11eF9zZXRfc3RhdGUoa2V5Ym9hcmRfdCAqa2JkLCB2b2lkICpidWYsIHNpemVf dCBsZW4pCiB7CiAJaWYgKGxlbiA8IHNpemVvZihrYmRtdXhfc3RhdGVfdCkpCiAJCXJldHVybiAo RU5PTUVNKTsKIAotCWJjb3B5KGJ1Ziwga2JkLT5rYl9kYXRhLCBzaXplb2Yoa2JkbXV4X3N0YXRl X3QpKTsgLyogWFhYIGxvY2tpbmc/ICovCisJYmNvcHkoYnVmLCBrYmQtPmtiX2RhdGEsIHNpemVv ZihrYmRtdXhfc3RhdGVfdCkpOwkvKiBYWFgKKwkJCQkJCQkJICogbG9ja2luZz8gKi8KIAogCXJl dHVybiAoMCk7CiB9CiAKLS8qIFNldCBwb2xsaW5nICovCisvKgorICogU2V0IHBvbGxpbmcgCisg Ki8KIHN0YXRpYyBpbnQKIGtiZG11eF9wb2xsKGtleWJvYXJkX3QgKmtiZCwgaW50IG9uKQogewog CWtiZG11eF9zdGF0ZV90CSpzdGF0ZSA9IE5VTEw7CisJS0JETVVYX0xPQ0tfREVDTF9MT0NBTDsK IAogCXN0YXRlID0gKGtiZG11eF9zdGF0ZV90ICopIGtiZC0+a2JfZGF0YTsKIApAQCAtMTEwMiwx MiArMTMzNywxNCBAQAogCQlicmVhazsKIAogCWNhc2UgTU9EX1VOTE9BRDoKLQkJaWYgKChzdyA9 IGtiZF9nZXRfc3dpdGNoKEtFWUJPQVJEX05BTUUpKSA9PSBOVUxMKQotCQkJcGFuaWMoImtiZF9n ZXRfc3dpdGNoKCIgS0VZQk9BUkRfTkFNRSAiKSA9PSBOVUxMIik7CisJCXN3ID0ga2JkX2dldF9z d2l0Y2goS0VZQk9BUkRfTkFNRSk7CisJCUFTU0VSVChzdyAhPSBOVUxMLAorCQkgICAgICAgImti ZF9nZXRfc3dpdGNoKCIgS0VZQk9BUkRfTkFNRSAiKSA9PSBOVUxMIik7CiAKIAkJa2JkID0ga2Jk X2dldF9rZXlib2FyZChrYmRfZmluZF9rZXlib2FyZChLRVlCT0FSRF9OQU1FLCAwKSk7Ci0JCWlm IChrYmQgPT0gTlVMTCkKLQkJCSBwYW5pYygia2JkX2dldF9rZXlib2FyZChrYmRfZmluZF9rZXli b2FyZCgiIEtFWUJPQVJEX05BTUUgIiwgMCkpID09IE5VTEwiKTsKKwkJQVNTRVJUKGtiZCAhPSBO VUxMLAorCQkgICAgICAgImtiZF9nZXRfa2V5Ym9hcmQoa2JkX2ZpbmRfa2V5Ym9hcmQoIiBLRVlC T0FSRF9OQU1FCisJCSAgICAgICAiLCAwKSkgPT0gTlVMTCIpOwogCiAJCSgqc3ctPmRpc2FibGUp KGtiZCk7CiAJCWtiZF9kZXRhY2goa2JkKTsKQEAgLTExMjUsNCArMTM2MiwzIEBACiB9CiAKIERF Vl9NT0RVTEUoa2JkbXV4LCBrYmRtdXhfbW9kZXZlbnQsIE5VTEwpOwotCg== ------=_NextPart_000_0001_01C57009.C3632B40 Content-Type: application/octet-stream; name="dev_debug.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dev_debug.h" LyoKICogJEhlYWRlcjogL3Vzci9sb2NhbC9jdnMvZGV2X2RlYnVnL2Rldl9kZWJ1Zy5oLHYgMS42 IDIwMDUvMDUvMzEgMTQ6Mjk6MjIgbmsgRXhwICQKICoKICogICAgQ09QWVJJR0hUKGMpIDIwMDMs MjAwNCwyMDA1IGJ5IGRlbWlnIFByb3plc3NhdXRvbWF0aXNpZXJ1bmcgR21iSCAKICogICAgICB8 XCAgL3wgIEhhYXJkdHN0cmFzc2UgNDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAqICAgICAgfF9cLyB8ICBELTU3MDc2IFNpZWdlbiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogKiAgICAgIHwgL1wgfCAgR2VybWFueSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICogICAgICB8LyAgXHwgIGh0dHA6Ly93d3cuZGVtaWcuZGUg IGluZm9AZGVtaWcuZGUgICAgICAgICAgICAgICAgCiAqLwoKCiNpZm5kZWYgREVWX0RFQlVHX0gK I2RlZmluZSBERVZfREVCVUdfSAoKCiNpZm5kZWYgREVCVUcKI2Vycm9yICAiREVCVUcgbm90IGRl ZmluZWQiCiNlbmRpZgojaWZuZGVmIFZFUkJPU0UKI2Vycm9yICAiVkVSQk9TRSBub3QgZGVmaW5l ZCIKI2VuZGlmCiNpZm5kZWYgREVCVUdfVVNFU1lTTE9HCiNlcnJvciAgIkRFQlVHX1VTRVNZU0xP RyBub3QgZGVmaW5lZCIKI2VuZGlmCiNpZm5kZWYgREVCVUdfVEFHCiNlcnJvciAgIkRFQlVHX1RB RyBub3QgZGVmaW5lZCIKI2VuZGlmCgoKI2RlZmluZSBDQVQoeCx5KSAgICAgICAgeCMjeQojZGVm aW5lIFhDQVQoeCx5KSAgICAgICBDQVQgKHgseSkKI2RlZmluZSBTVFIoeCkgICN4CiNkZWZpbmUg WFNUUih4KSBTVFIgKHgpCgoKI2lmIERFQlVHCiNkZWZpbmUgSU5MSU5FCiNlbHNlCiNkZWZpbmUg SU5MSU5FICBfX2lubGluZQojZW5kaWYKCgojaWYgREVCVUdfVVNFU1lTTE9HCgojaW5jbHVkZSA8 c3lzL3N5c2xvZy5oPgojZGVmaW5lIExPRyh0eHQsIGFyZ3MuLi4pICAgICAgIGxvZyAoTE9HX0RF QlVHLCB0eHQsICMjIGFyZ3MpCgojZWxzZQoKI2RlZmluZSBMT0codHh0LCBhcmdzLi4uKSAgICAg ICBwcmludGYgKHR4dCwgIyMgYXJncykKCiNlbmRpZgoKCiNpZiBkZWZpbmVkIChOREVCVUcpCiNk ZWZpbmUgREVCVUdQUklOVEYwKGV4cHIsIGZ1bmMsIHR4dCwgYXJncy4uLikgICAgICAgICAgXAog IGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICBpZiAoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgZnVuYyAoWFNUUiAoREVCVUdfVEFHKSAiOiAiIHR4dCwgIyMgYXJncyk7ICAgICAg ICBcCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICB3aGlsZSAoRkFMU0UpCiNlbHNlCiNkZWZpbmUgREVCVUdQUklOVEYwKGV4cHIsIGZ1 bmMsIHR4dCwgYXJncy4uLikgICAgICAgICAgXAogIGRvICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpZiAoZXhwcikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgZnVuYyAoWFNUUiAoX19GSUxF X18pIiwgIiBYU1RSIChfX0xJTkVfXykgIjogIiAgICBcCiAgICAgICAgICAgIHR4dCwgIyMgYXJn cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgfSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgd2hpbGUgKEZBTFNFKQojZW5k aWYKCgojaWYgZGVmaW5lZCAoTkRFQlVHKQojZGVmaW5lIEFTU0VSVChleHByLCB0eHQsIGFyZ3Mu Li4pCiNlbHNlCiNkZWZpbmUgQVNTRVJUKGV4cHIsIHR4dCwgYXJncy4uLikgXAogIERFQlVHUFJJ TlRGMCAoISAoZXhwciksIHBhbmljLCB0eHQsICMjIGFyZ3MpCiNlbmRpZgoKCiNpZiBWRVJCT1NF CiNkZWZpbmUgdnByaW50Zih0eHQsIGFyZ3MuLi4pIFwKICBERUJVR1BSSU5URjAgKFRSVUUsIHBy aW50ZiwgdHh0LCAjIyBhcmdzKQojZWxzZQojZGVmaW5lIHZwcmludGYodHh0LCBhcmdzLi4uKQoj ZW5kaWYKCgojZGVmaW5lIERFQlVHUFJJTlRGKGx2bCwgY21wLCB0eHQsIGFyZ3MuLi4pICAgICAg IFwKICBERUJVR1BSSU5URjAgKGNtcCA+PSBsdmwsIExPRywgdHh0LCAjIyBhcmdzKQoKCiNkZWZp bmUgREVCVUdfVkFSX1NDT1BFICAgICAgICAgc3RhdGljCiNkZWZpbmUgREVCVUdfVkFSX1RZUEUg ICAgICAgICAgaW50CiNkZWZpbmUgREVCVUdfVkFSX1NZU0NUTCAgICAgICAgU1lTQ1RMX1VJTlQK I2RlZmluZSBERUJVR19WQVJfTkFNRSh0YWcpICAgICBYQ0FUICh0YWcsIF9kZWJ1ZykKCgojaWYg REVCVUcKCiNpZiBkZWZpbmVkIChOREVCVUcpCiNkZWZpbmUgREVCVUdfVkFSX0RFQ0wodGFnLCBs dmwpICAgICAgICAgICAgICAgIFwKREVCVUdfVkFSX1NDT1BFIERFQlVHX1ZBUl9UWVBFIERFQlVH X1ZBUl9OQU1FICh0YWcpID0gMAojZWxzZQojZGVmaW5lIERFQlVHX1ZBUl9ERUNMKHRhZywgbHZs KSAgICAgICAgICAgICAgICBcCkRFQlVHX1ZBUl9TQ09QRSBERUJVR19WQVJfVFlQRSBERUJVR19W QVJfTkFNRSAodGFnKSA9IGx2bAojZW5kaWYKCiNkZWZpbmUgRFBSSU5URih0YWcsIGx2bCwgdHh0 LCBhcmdzLi4uKSAgICAgICAgIFwKICBERUJVR1BSSU5URiAobHZsLCBERUJVR19WQVJfTkFNRSAo dGFnKSwgdHh0LCAjIyBhcmdzKQoKI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KCiNkZWZpbmUgREVC VUdfU1lTQ1RMKHRhZykgICAgICAgICAgICAgICAgICAgICAgIFwKREVCVUdfVkFSX1NZU0NUTCAo X2RlYnVnLCAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICBPSURfQVVU TywgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgIFhDQVQgKHRhZywgX2Rl YnVnKSwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgQ1RMRkxBR19SVywgICAgICAgICAg ICAgICAgICAgXAogICAgICAgICAgICAgICAgICAmIERFQlVHX1ZBUl9OQU1FICh0YWcpLCAgICAg ICBcCiAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgICAgICAgICAgWENBVCAoWFNUUiAodGFnKSwgIiBkZWJ1ZyIpKQoKCiNlbHNlCgojZGVm aW5lIERFQlVHX1ZBUl9ERUNMKHRhZywgbHZsKQojZGVmaW5lIERFQlVHX1NZU0NUTCh0YWcpCiNk ZWZpbmUgRFBSSU5URih0YWcsIGx2bCwgdHh0LCBhcmdzLi4uKQoKI2VuZGlmCgoKI2RlZmluZSBk ZWJ1Z192YXJfZGVjbChsdmwpICAgICBERUJVR19WQVJfREVDTCAoREVCVUdfVEFHLCBsdmwpCiNk ZWZpbmUgZGVidWdfc3lzY3RsKCkgICAgICAgICAgREVCVUdfU1lTQ1RMIChERUJVR19UQUcpCiNk ZWZpbmUgZHByaW50ZihsdmwsIHR4dCwgYXJncy4uLikgICAgICAgICAgICAgIFwKICBEUFJJTlRG IChERUJVR19UQUcsIGx2bCwgdHh0LCAjIyBhcmdzKQoKCiNlbmRpZgo= ------=_NextPart_000_0001_01C57009.C3632B40--