From mboxrd@z Thu Jan 1 00:00:00 1970 From: "davor emard" Subject: Re: uinput oopses and bugs Date: Fri, 28 Mar 2008 20:07:10 +0100 Message-ID: References: <20080326132844.GC25854@cathedrallabs.org> <20080326182314.GF25854@cathedrallabs.org> <20080327202245.GK25854@cathedrallabs.org> <47ED3D23.5050605@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_23107_16400708.1206731230858" Return-path: Received: from py-out-1112.google.com ([64.233.166.176]:45374 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753949AbYC1THM (ORCPT ); Fri, 28 Mar 2008 15:07:12 -0400 Received: by py-out-1112.google.com with SMTP id u52so560497pyb.10 for ; Fri, 28 Mar 2008 12:07:11 -0700 (PDT) In-Reply-To: <47ED3D23.5050605@gmail.com> Sender: linux-input-owner@vger.kernel.org List-Id: linux-input@vger.kernel.org To: Anssi Hannula Cc: Aristeu Rozanski , linux-input@vger.kernel.org ------=_Part_23107_16400708.1206731230858 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline HI I understand! The device I tried to support was a USB Skype@phone EX-B so I attempted to write a libusb uinput driver which I'm attaching here for reference. I got up to working keypad, LED and ringer without LCD or keypad and LCD without LED and ringer due to EV_FF issue. but now I got rid of this EX-B and obtained Yealink P1K that already has driver in kernel, keyboard led ringer and display all supported out of the box If you can take some time, it would be maybe most useful to look about what makes LED and SND being disabled by EV_FF (no matter CUSTOM, SINE or any other type of effect) Best regards, Davor ------=_Part_23107_16400708.1206731230858 Content-Type: text/x-csrc; name=skypephone.c Content-Transfer-Encoding: base64 X-Attachment-Id: file1 Content-Disposition: attachment; filename=skypephone.c LyogTElDRU5TRT1HUEwgKi8KCi8qIGlGZWVsIGZvcmNlIGZlZWRiYWNrIHVpbnB1dCBkcml2ZXIK Kiogd3JpdHRlbiBieSBlbWFyZEBzb2Z0aG9tZS5uZXQKKi8KCi8qIGNvbXBpbGUgd2l0aCBsaWJ1 c2IsIHVzZSBnY2MgLWx1c2IgLWxwdGhyZWFkICovCiNkZWZpbmUgVEhSRUFEIDAKCiNpbmNsdWRl IDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRl IDxtYXRoLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNp bmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2lmIFRIUkVBRAojaW5jbHVkZSA8 cHRocmVhZC5oPgojZW5kaWYKI2luY2x1ZGUgPHNpZ25hbC5oPgojaW5jbHVkZSA8YXNtL3R5cGVz Lmg+CiNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgojaW5jbHVkZSA8bGludXgvdWlucHV0Lmg+CiNp bmNsdWRlIDx1c2IuaD4KI2luY2x1ZGUgPGhpZC5oPgoKI2lmIFRIUkVBRApwdGhyZWFkX211dGV4 X3QgbXV0ZXgxID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKI2VuZGlmCgojaW5jbHVkZSAi dXNiaWQuaCIKCiNkZWZpbmUgVElNRU9VVCAzMDAwCiNkZWZpbmUgV0FJVElOQkVUV0VFTiA1MDAw MDAKCi8qIEZyb20gSElEIHNwZWNpZmljYXRpb24gKi8KI2RlZmluZSBTRVRfUkVRVUVTVCAweDIx CiNkZWZpbmUgU0VUX1JFUE9SVCAweDA5IAojZGVmaW5lIE9VVFBVVF9SRVBPUlRfVFlQRSAweDAy CgovKiBob3cgbWFueSBjb250cm9sbGluZyB0aHJlYWRzICovCiNkZWZpbmUgVEhSRUFEUyAzCgoj ZGVmaW5lIEhBVkVGRiAwCmludCBsZWRjb3VudGVyID0gMDsgLyogZGVidWdnaW5nIHB1cnBvc2Ug Ki8KI2RlZmluZSBNVVRFWCAwCgpjaGFyIGxlZDBbXSA9IHsgCjB4MDEsMHgxMSwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsCjB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCjB4MDAsCn07CgpjaGFyIGxlZDFbXSA9IHsgCjB4 MDEsMHgxMSwweGZmLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsCjB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCjB4MDAsCn07Cgpj aGFyIHJpbmcwW10gPSB7CjB4MDEsMHgwMCwweDExLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCjB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsCjB4MDAKfTsKCmNoYXIgcmluZzFbXSA9IHsKMHgwMSwweGZmLDB4MTEsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwK MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKMHgwMAp9OwoKc3RydWN0IGxjZHBhY2tldCB7CiAgdW5z aWduZWQgY2hhciB0eXBlOwogIHVuc2lnbmVkIGNoYXIgdW5rbm93blsxNl07CiAgdW5zaWduZWQg Y2hhciBiaXRtYXBbMTZdOwp9OwoKI2RlZmluZSBTQ0FOTUFYIDMyCi8qIGtleXMgKi8KaW50IGtl eXNbXVsyXSA9IHsKICB7IEtFWV9CQUNLU1BBQ0UsIDB4MDF9LAogIHsgS0VZX0VOVEVSLCAweDA3 IH0sCiAgeyBLRVlfVVAsIDB4MGQgfSwKICB7IEtFWV9ET1dOLCAweDEzIH0sCiAgeyBLRVlfMSwg MHgwNCB9LAogIHsgS0VZXzIsIDB4MDMgfSwKICB7IEtFWV8zLCAweDAyIH0sCiAgeyBLRVlfNCwg MHgwYSB9LAogIHsgS0VZXzUsIDB4MDkgfSwKICB7IEtFWV82LCAweDA4IH0sCiAgeyBLRVlfNywg MHgxMCB9LAogIHsgS0VZXzgsIDB4MGYgfSwKICB7IEtFWV85LCAweDBlIH0sCiAgeyBLRVlfS1BB U1RFUklTSywgMHgxNiB9LAogIHsgS0VZXzAsIDB4MTUgfSwKICB7IEtFWV9LUFBMVVMsIDB4MTQg fSwKICB7IEtFWV9NQVgsIDAgfQp9OwoKaW50IHNjYW4yY29kZVtTQ0FOTUFYXTsKCnVuc2lnbmVk IHNob3J0IHVzYl9waG9uZV92ZW5kb3IgPSBVU0JfTU9VU0VfVkVORE9SOwp1bnNpZ25lZCBzaG9y dCB1c2JfcGhvbmVfcHJvZHVjdCA9IFVTQl9NT1VTRV9QUk9EVUNUOwoKI2lmIFRIUkVBRAppbnQg cmNbVEhSRUFEU107CnB0aHJlYWRfdCB0aHJlYWRbVEhSRUFEU107CiNlbmRpZgoKLyogR2xvYmFs IGxpc3Qgb2YgRkRzIGVhY2ggb2JqZWN0IGlzIGludGVyZXN0ZWQgaW4sCioqIGFuZCBGRHMgdGhh dCB0aGVyZSBoYXZlIGJlZW4gYWN0aXZpdHkgb24uIEVhY2ggb2JqZWN0CioqIGFkZHMgaXRzZWxm IHRvIHRoZSBmZF9yZXF1ZXN0XyogbGlzdHMgb24gY3JlYXRpb24gYW5kIHJlbW92ZXMKKiogaXRz ZWxmIG9uIGRlbGV0aW9uLCBhbmQgY2hlY2tzIHRoZSBmZF8qIGxpc3RzIG9uIHBvbGwuCiovCnN0 YXRpYyBmZF9zZXQgZmRfcmVxdWVzdF9yZWFkLCBmZF9yZXF1ZXN0X3dyaXRlLCBmZF9yZXF1ZXN0 X2V4Y2VwdDsKc3RhdGljIGZkX3NldCBmZF9yZWFkLCBmZF93cml0ZSwgZmRfZXhjZXB0OwppbnQg ZmRfY291bnQgPSAwOwoKc3RydWN0IGhhbmRzZXQgewogIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7 IC8qIGxpYnVzYiBkZXYgKi8KICBzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmhhbmRsZTsKICBpbnQg dWlmZDsgLyogb3Mtc2lkZSB1aW5wdXQgZmQgKHJlYWQvd3JpdGUpICovCiAgc3RydWN0IHVpbnB1 dF91c2VyX2RldiBkZXZpY2U7CiAgdW5zaWduZWQgaW50IHN0cmVuZ3RoLCBkZWxheSwgY291bnQ7 CiAgZG91YmxlIHQwOyAvKiBhYnNvbHV0ZSB1bml4IHRpbWUgd2hlbiBlZmZlY3Qgd2FzIHN0YXJ0 ZWQgdF9lZmZlY3Q9MCAqLwogIGRvdWJsZSB0OyAvKiBjdXJyZW50IHRpbWUgd2hlbiBlZmZlY3Qg ZW52ZWxvcGUgaXMgdG8gYmUgY2FsY3VsYXRlZCAqLwogIC8qIGltbWVkaWF0ZWx5IGNvbnZlcnQg dGltZXZhbCB0byBkb3VibGUgdG8gc2ltcGx5ZnkgaGFuZGxpbmcgKi8KICBpbnQgY291bnRkb3du OyAvKiBlZmZlY3QgY291bnRkb3duIGNvdW50ZXIgKi8KICBzdHJ1Y3QgdGltZXZhbCB0aW1lcl9j b250OyAvKiBjb250aW51YXRpb24gdGltZXIgKi8KICB1bnNpZ25lZCBjaGFyIGxlZDsgLyogZ3Jl ZW4gTEVEICovCiAgdW5zaWduZWQgY2hhciByaW5nZXI7IC8qIHJpbmdlciBzdGF0dXMgKi8KICBj aGFyIGRhdGFbMjBdOyAvKiBwcmV2aW91cyBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIHBob25lICov CiAgaW50IGN1c3RvbV9sZW47IC8qIGN1c3RvbSBlZmZlY3QgdXBsb2FkIGxlbmd0aCAqLwogIHVu c2lnbmVkIGNoYXIgY3VzdG9tX2RhdGFbMTZdOyAvKiBjdXN0b20gZGF0YSAqLwogIHRpbWVfdCB6 YXB0aW1lOwogIGludCB6YXBob2xkOwp9OwoKc3RydWN0IGhhbmRzZXQgaGFuZHNldDsKCgovKiBn ZXQgYWJzb3VsdGUgY3VycmVudCB0aW1lIAoqLwpkb3VibGUgY3VycmVudF90aW1lKCkKewogIHN0 cnVjdCB0aW1ldmFsIGN1cnJlbnRfdGltZTsKCiAgZ2V0dGltZW9mZGF5KCZjdXJyZW50X3RpbWUs IE5VTEwpOwogIHJldHVybiAoZG91YmxlKWN1cnJlbnRfdGltZS50dl9zZWMgKyAxLjBlLTYgKiAo ZG91YmxlKWN1cnJlbnRfdGltZS50dl91c2VjOyAgCn0KCgoKLyogVGhpcyBpbml0aWFsaXplcyBs aWJ1c2IgYW5kIHRyYWNrcyBkb3duIHRoZSBkZXZpY2UKKi8Kc3RhdGljIHN0cnVjdCB1c2JfZGV2 aWNlICppbml0X2RldmljZSgpCnsKICBzdHJ1Y3QgdXNiX2J1cyAqYnVzOwogIHN0cnVjdCB1c2Jf ZGV2aWNlICpkZXY7CiAgCiAgdXNiX2luaXQoKTsKICB1c2JfZmluZF9idXNzZXMoKTsKICB1c2Jf ZmluZF9kZXZpY2VzKCk7CiAgCiAgZm9yIChidXMgPSB1c2JfYnVzc2VzOyBidXM7IGJ1cyA9IGJ1 cy0+bmV4dCkKICB7CiAgICBmb3IgKGRldiA9IGJ1cy0+ZGV2aWNlczsgZGV2OyBkZXYgPSBkZXYt Pm5leHQpCiAgICB7CiAgICAgIGlmICgoZGV2LT5kZXNjcmlwdG9yLmlkVmVuZG9yID09IHVzYl9w aG9uZV92ZW5kb3IpICYmCiAgICAgICAgICAoZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCA9PSB1 c2JfcGhvbmVfcHJvZHVjdCkpCiAgICAgICAgcmV0dXJuIGRldjsKICAgIH0KICB9CiAgcmV0dXJu IE5VTEw7Cn0KCgovKiByZWdpc3RlciB0aGUgcGhvbmUgaW4gdWlucHV0IHN5c3RlbSBhcwoqKiBw b2ludGluZyBkZXZpY2Ugd2l0aAoqKiBhIG51bWJlciBvZiBrZXlzLCByZWxhdGl2ZSBwb2ludGVy cyBhbmQgbGVkcwoqKiB0aGVuIGl0IHdpbGwgYXV0b21hdGljYWxseSBhcHBlYXIgYXMgL2Rldi9p bnB1dC9waG9uZSoKKi8KaW50IGhhbmRzZXRfcmVnaXN0ZXIoc3RydWN0IGhhbmRzZXQgKnBob25l KQp7CiAgaW50IGF1eCwgZmQ7CgogIC8qIGxpYnVzYiBpbml0aWFsaXphdGlvbiAqLwoKICBwaG9u ZS0+ZGV2ID0gaW5pdF9kZXZpY2UoKTsKICBpZighcGhvbmUtPmRldikKICB7CiAgICBwcmludGYo IlVuYWJsZSB0byBmaW5kIGRldmljZS5cbiIpOwogICAgcmV0dXJuIDE7CiAgfQogIAogIC8qIE9w ZW4gZGV2aWNlLCBub3RlOiB3ZSB3YW50IGludGVyZmFjZSB6ZXJvIHNvIHdlIG9ubHkgaGF2ZSB0 byBvcGVuCiAgICAgb25jZSAqLwogIHBob25lLT5oYW5kbGUgPSB1c2Jfb3BlbihwaG9uZS0+ZGV2 KTsKICBpZighcGhvbmUtPmhhbmRsZSkKICB7CiAgICBwcmludGYoIlVuYWJsZSB0byBvcGVuIGRl dmljZS5cbiIpOwogICAgcmV0dXJuIDE7CiAgfQoKI2lmIDAKICAvKiBkZXZpY2UgZG9lc24ndCBh Y2NlcHQgY29uZmlndXJhdGlvbiBjaGFuZ2UgISAqLwogIGlmKHVzYl9zZXRfY29uZmlndXJhdGlv bihwaG9uZS0+aGFuZGxlLCAxKSkKICB7CiAgICBwcmludGYoIkZhaWxlZCB0byBzZXQgY29uZmln IDE6IEVCVVM6ICVkIEVOT05NOiAlZFxuIiwgRUJVU1ksIEVOT01FTSk7CiAgICByZXR1cm4gMTsK ICB9CiNlbmRpZgoKICAvKiBUaGUga2V5cGFkLCBsZWQgYW5kIHJpbmdlciBhcmUgYXQgaW50ZXJm YWNlIDMgKi8KICBpZih1c2JfY2xhaW1faW50ZXJmYWNlKHBob25lLT5oYW5kbGUsIDMpIDwgMCkK ICB7CiAgICBwcmludGYoIlVuYWJsZSB0byBjbGFpbSBpbnRlcmZhY2UgMy5cbiIpOwogICAgcmV0 dXJuIDE7CiAgfQoKICAvKiB1aW5wdXQgaW5pdGlhbGl6YXRpb24gKi8KICBGRF9aRVJPKCZmZF9y ZXF1ZXN0X3JlYWQpOwogIEZEX1pFUk8oJmZkX3JlcXVlc3Rfd3JpdGUpOwogIEZEX1pFUk8oJmZk X3JlcXVlc3RfZXhjZXB0KTsKICAKICAvKiBvcGVuIHVpbnB1dCBkZXZpY2UgZmlsZSAqLwogIGZk ID0gb3BlbigiL2Rldi9pbnB1dC91aW5wdXQiLCBPX1JEV1IgfCBPX05PTkJMT0NLKTsKICBpZiAo ZmQgPCAwKSB7CiAgICBwZXJyb3IoIm9wZW4iKTsKICAgIHJldHVybiAtMTsKICB9CgogIHBob25l LT51aWZkID0gZmQ7CgogIC8qIHNldHMgdGhlIG5hbWUgb2Ygb3VyIGRldmljZSAqLwogIHN0cmNw eShwaG9uZS0+ZGV2aWNlLm5hbWUsICJCZXlvbmRUZWwgVVNCIFBob25lIik7CgogIC8qIHNldHMg bWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGZvcmNlIGZlZWRiYWNrIGVmZmVjdHMgKi8K ICAvKiByZXBvcnQga2VybmVsIGJ1ZyAtIG5vdCBzZXR0aW5nIHRoaXMgbGVhZHMgdG8ga2VybmVs IG9vcHMgKi8KI2lmIEhBVkVGRgogIHBob25lLT5kZXZpY2UuZmZfZWZmZWN0c19tYXggPSAxOwoj ZW5kaWYKICAKICAvKiBpdHMgYnVzICovCiAgcGhvbmUtPmRldmljZS5pZC5idXN0eXBlID0gQlVT X1VTQjsKICAKICAvKiBhbmQgaWQvdmVuZG9yIGlkL3Byb2R1Y3QgaWQvdmVyc2lvbgogICoqIHdl IHdpbGwgY3JlYXRlIHdpdGggdWlucHV0CiAgKiogKG5vdCBuZWVkIHRvIGJlIHRoZSBzYW1lIGFz IHRoZSBoYXJkd2FyZSBwaG9uZSkKICAqLwogIHBob25lLT5kZXZpY2UuaWQudmVuZG9yID0gdXNi X3Bob25lX3ZlbmRvcjsKICBwaG9uZS0+ZGV2aWNlLmlkLnByb2R1Y3QgPSB1c2JfcGhvbmVfcHJv ZHVjdDsKICBwaG9uZS0+ZGV2aWNlLmlkLnZlcnNpb24gPSAyNTc7CiAgCiAgLyogaW5mb3JtIHRo YXQgd2UnbGwgZ2VuZXJhdGUga2V5IGV2ZW50cyAqLwogIGlvY3RsKGZkLCBVSV9TRVRfRVZCSVQs IEVWX0tFWSk7CgogIC8qIHNldCBrZXlib2FyZCBldmVudHMgd2UgY2FuIGdlbmVyYXRlICovCiAg Zm9yIChhdXggPSAwOyBrZXlzW2F1eF1bMF0gPCBLRVlfTUFYOyBhdXgrKykKICB7CiAgICBpb2N0 bChmZCwgVUlfU0VUX0tFWUJJVCwga2V5c1thdXhdWzBdKTsKICAgIC8qIGtleWJvYXJkIHRyYW5z bGF0aW9uIHRhYmxlICovCiAgICBzY2FuMmNvZGVba2V5c1thdXhdWzFdXSA9IGtleXNbYXV4XVsw XTsKICB9CgogIC8qIGluZm9ybSB0aGF0IHdlIGhhdmUgcmluZ2VyICovCiAgaW9jdGwoZmQsIFVJ X1NFVF9FVkJJVCwgRVZfU05EKTsKCiAgLyogc2V0IHNvdW5kIHdlIGNhbiByaW5nIGJlbGwgKi8K ICBpb2N0bChmZCwgVUlfU0VUX1NOREJJVCwgU05EX0JFTEwpOwogIAogIC8qIGluZm9ybSB0aGF0 IHdlIGhhdmUgZm9yY2UgZmVlZGJhY2sgLSBoYWNrIHRvIHVzZSBMQ0QgKi8KI2lmIEhBVkVGRgog IGlvY3RsKGZkLCBVSV9TRVRfRVZCSVQsIEVWX0ZGKTsKCiAgLyogc2V0IGZvcmNlIGZlZWRiYWNr IGV2ZW50cyAtIGN1c3RvbSBjb250YWluZXIgZm9yIExDRCBjb250cm9sICovCiAgaW9jdGwoZmQs IFVJX1NFVF9GRkJJVCwgRkZfUEVSSU9ESUMpOwogIGlvY3RsKGZkLCBVSV9TRVRfRkZCSVQsIEZG X0NVU1RPTSk7CiNlbmRpZgoKICAvKiBpbmZvcm0gdGhhdCB3ZSBoYXZlIExFRCAqLwogIGlvY3Rs KGZkLCBVSV9TRVRfRVZCSVQsIEVWX0xFRCk7CgogIC8qIHNldCBMRUQgd2UgY2FuIGRpc3BsYXkg Ki8KICBpb2N0bChmZCwgVUlfU0VUX0xFREJJVCwgTEVEX05VTUwpOwoKICAvKiB3cml0ZSBkb3du IGluZm9ybWF0aW9uIGZvciBjcmVhdGluZyBhIG5ldyBkZXZpY2UgKi8KICBpZiAod3JpdGUoZmQs ICYocGhvbmUtPmRldmljZSksIHNpemVvZihzdHJ1Y3QgdWlucHV0X3VzZXJfZGV2KSkgPCAwKSB7 CiAgICBwZXJyb3IoIndyaXRlIik7CiAgICBjbG9zZShmZCk7CiAgICByZXR1cm4gMTsKICB9Cgog IC8qIGFjdHVhbGx5IGNyZWF0ZXMgdGhlIGRldmljZSAqLwogIGlvY3RsKGZkLCBVSV9ERVZfQ1JF QVRFKTsKICAKICAvKiBub3cgd2UgY2FuIHJlZ2lzdGVyIG91ciB1aW5wdXQgZGV2aWNlIGZvciBz ZWxlY3QoKSAqLwogIEZEX1NFVChmZCwgJmZkX3JlcXVlc3RfcmVhZCk7CiAgaWYoZmQgPj0gZmRf Y291bnQpCiAgICBmZF9jb3VudCA9IGZkICsgMTsKCiAgLyogc3RhcnQgd2l0aCBMRUQgb2ZmICov CiAgcGhvbmUtPmxlZCA9IDA7CgogIC8qIHN0YXJ0IHdpdGggcmluZ2VyIG9mZiAqLwogIHBob25l LT5yaW5nZXIgPSAwOwogIAogIG1lbXNldCgmKHBob25lLT50aW1lcl9jb250KSwgMCwgc2l6ZW9m KHBob25lLT50aW1lcl9jb250KSk7CgogIHJldHVybiAwOwp9CgoKLyogd2FpdCBmb3IgZmlsZSBk ZXNjcmlwdG9ycy4KKiogd2FpdHMgZm9yIHZpYnJhdGlvbiBjb21tYW5kcwoqKiBmcm9tIHVpbnB1 dCBzeXN0ZW0sIG9yIGZvciB0aW1lb3V0cwoqKiBpbiBvcmRlciB0byBjb250aW51ZSBsZW5ndGh5 IHZpYnJhdGlvbnMKKi8KaW50IGhhbmRzZXRfd2FpdChzdHJ1Y3QgaGFuZHNldCAqcGhvbmUpCnsK ICBpbnQgbjsKICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dDsKCiAgdGltZW91dCA9ICYocGhvbmUt PnRpbWVyX2NvbnQpOwoKICBpZih0aW1lb3V0LT50dl9zZWMgPT0gMCAmJiB0aW1lb3V0LT50dl91 c2VjID09IDApCiAgICB0aW1lb3V0ID0gTlVMTDsKCiAgbWVtY3B5KCZmZF9yZWFkLCAmZmRfcmVx dWVzdF9yZWFkLCBzaXplb2YoZmRfc2V0KSk7CiAgbWVtY3B5KCZmZF93cml0ZSwgJmZkX3JlcXVl c3Rfd3JpdGUsIHNpemVvZihmZF9zZXQpKTsKICBtZW1jcHkoJmZkX2V4Y2VwdCwgJmZkX3JlcXVl c3RfZXhjZXB0LCBzaXplb2YoZmRfc2V0KSk7CiAgbiA9IHNlbGVjdChmZF9jb3VudCwgJmZkX3Jl YWQsICZmZF9yZXF1ZXN0X3dyaXRlLCAmZmRfcmVxdWVzdF9leGNlcHQsIHRpbWVvdXQgKTsKCiAg cmV0dXJuIDA7Cn0KCgovKiB1bnJlZ2lzdGVyIHRoZSBwaG9uZSBmcm9tIHVpbnB1dCBzeXN0ZW0K Ki8KaW50IGhhbmRzZXRfdW5yZWdpc3RlcihzdHJ1Y3QgaGFuZHNldCAqcGhvbmUpCnsKICAvKiB1 aW5wdXQgZGUtaW5pdGlhbGl6YXRpb24gKi8KICBjbG9zZShwaG9uZS0+dWlmZCk7CgogIC8qIGxp YnVzYiBkZS1pbml0aWFsaXphdGlvbiAqLwogIHVzYl9jbG9zZShwaG9uZS0+aGFuZGxlKTsKCiAg cmV0dXJuIDA7Cn0KCgppbnQgc2V0X2xlZChzdHJ1Y3QgaGFuZHNldCAqcGhvbmUpCnsKICBjaGFy IGJ1ZmZlclsyMF07CiAgaW50IHJldDsKCiAgcmV0ID0gdXNiX2ludGVycnVwdF9yZWFkKHBob25l LT5oYW5kbGUsIDEsIGJ1ZmZlciwgMTcsIDUwMDApOwoKICBpZihwaG9uZS0+bGVkKQogICAgcmV0 ID0gdXNiX2ludGVycnVwdF93cml0ZShwaG9uZS0+aGFuZGxlLCAxLCBsZWQxLCBzaXplb2YobGVk MSksIDUwMDApOwogIGVsc2UKICAgIHJldCA9IHVzYl9pbnRlcnJ1cHRfd3JpdGUocGhvbmUtPmhh bmRsZSwgMSwgbGVkMCwgc2l6ZW9mKGxlZDApLCA1MDAwKTsKCiAgcmV0ID0gdXNiX2ludGVycnVw dF9yZWFkKHBob25lLT5oYW5kbGUsIDEsIGJ1ZmZlciwgMTcsIDUwMDApOwogIAogIHJldHVybiAw Owp9CgppbnQgc2V0X3JpbmdlcihzdHJ1Y3QgaGFuZHNldCAqcGhvbmUpCnsKICBjaGFyIGJ1ZmZl clsyMF07CiAgaW50IHJldDsKCiAgcmV0ID0gdXNiX2ludGVycnVwdF9yZWFkKHBob25lLT5oYW5k bGUsIDEsIGJ1ZmZlciwgMTcsIDUwMDApOwoKICBpZihwaG9uZS0+cmluZ2VyKQogICAgcmV0ID0g dXNiX2ludGVycnVwdF93cml0ZShwaG9uZS0+aGFuZGxlLCAxLCByaW5nMSwgc2l6ZW9mKHJpbmcx KSwgNTAwMCk7CiAgZWxzZQogICAgcmV0ID0gdXNiX2ludGVycnVwdF93cml0ZShwaG9uZS0+aGFu ZGxlLCAxLCByaW5nMCwgc2l6ZW9mKHJpbmcwKSwgNTAwMCk7CiAgCiAgcmV0ID0gdXNiX2ludGVy cnVwdF9yZWFkKHBob25lLT5oYW5kbGUsIDEsIGJ1ZmZlciwgMTcsIDUwMDApOwoKICByZXR1cm4g MDsKfQoKaW50IHNldF9sY2Qoc3RydWN0IGhhbmRzZXQgKnBob25lKQp7CiAgY2hhciBidWZmZXJb MjBdOwogIHN0cnVjdCBsY2RwYWNrZXQgZGlzcGxheVsxXTsKICB1bnNpZ25lZCBjaGFyICpwYWNr ZXRkaXNwOwogIGludCByZXQ7CiAgaW50IGk7CiAgZGlzcGxheS0+dHlwZSA9IDM7CiAgbWVtc2V0 KGRpc3BsYXktPnVua25vd24sIDAsIHNpemVvZihkaXNwbGF5LT51bmtub3duKSk7CiAgbWVtY3B5 KGRpc3BsYXktPmJpdG1hcCwgcGhvbmUtPmN1c3RvbV9kYXRhLCBzaXplb2YoZGlzcGxheS0+Yml0 bWFwKSk7CgojaWYgMAogIHBhY2tldGRpc3AgPSAodW5zaWduZWQgY2hhciAqKWRpc3BsYXk7CiAg Zm9yKGkgPSAwOyBpIDwgc2l6ZW9mKGRpc3BsYXkpOyBpKyspCiAgICBwcmludGYoIiUwMnggIiwg cGFja2V0ZGlzcFtpXSk7CiAgcHJpbnRmKCJcbiIpOwojZW5kaWYKCiAgcmV0ID0gdXNiX2ludGVy cnVwdF9yZWFkKHBob25lLT5oYW5kbGUsIDEsIGJ1ZmZlciwgMTcsIDUwMDApOwogIHJldCA9IHVz Yl9pbnRlcnJ1cHRfd3JpdGUocGhvbmUtPmhhbmRsZSwgMSwgKHVuc2lnbmVkIGNoYXIgKilkaXNw bGF5LCBzaXplb2YoZGlzcGxheSksIDUwMDApOwogIHJldCA9IHVzYl9pbnRlcnJ1cHRfcmVhZChw aG9uZS0+aGFuZGxlLCAxLCBidWZmZXIsIDE3LCA1MDAwKTsKCiAgcmV0dXJuIDA7Cn0KCgovKiBw cm9jZXNzIHVpbnB1dCBldmVudCAocmluZ2VyIGFuZCBMRUQpICovCmludCB1aW5wdXRfZXZlbnQo c3RydWN0IGhhbmRzZXQgKnBob25lKQp7CiAgc3RydWN0IGlucHV0X2V2ZW50ICAgICAgZXZlbnQs IHJlY2VpdmVkX2V2ZW50OwogIHN0cnVjdCB1aW5wdXRfZmZfdXBsb2FkIGZmX3VwOwogIHN0cnVj dCB1aW5wdXRfZmZfZXJhc2UgIGZmX2VyYXNlOwogIGludCBmZDsKICBpbnQgICAgICAgICAgICAg ICAgICAgICBsb25nX2NvdW50OwogIGludCBpOwoKICBmZCA9IHBob25lLT51aWZkOwoKICBpZihy ZWFkKGZkLCAmcmVjZWl2ZWRfZXZlbnQsIHNpemVvZihyZWNlaXZlZF9ldmVudCkpID09IHNpemVv ZihyZWNlaXZlZF9ldmVudCkpCiAgewogICAgc3dpdGNoKHJlY2VpdmVkX2V2ZW50LnR5cGUpCiAg ICB7CiAgICBjYXNlIEVWX0xFRDoKICAgICAgc3dpdGNoKHJlY2VpdmVkX2V2ZW50LmNvZGUpCiAg ICAgIHsKICAgICAgY2FzZSBMRURfTlVNTDoKICAgICAgICBwaG9uZS0+bGVkID0gcmVjZWl2ZWRf ZXZlbnQudmFsdWUgPiAwID8gMSA6IDA7CiNpZiAwCiAgICAgICAgcHJpbnRmKCJMRUQ9JWQgY250 PSVkXG4iLCBwaG9uZS0+bGVkLCBsZWRjb3VudGVyKyspOwojZW5kaWYKICAgICAgICBzZXRfbGVk KHBob25lKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBicmVhazsKICAgIGNhc2UgRVZf U05EOgogICAgICBzd2l0Y2gocmVjZWl2ZWRfZXZlbnQuY29kZSkKICAgICAgewogICAgICBjYXNl IFNORF9CRUxMOgogICAgICAgIHBob25lLT5yaW5nZXIgPSByZWNlaXZlZF9ldmVudC52YWx1ZSA+ IDAgPyAxIDogMDsKICAgICAgICBzZXRfcmluZ2VyKHBob25lKTsKICAgICAgICBicmVhazsKICAg ICAgfQogICAgICBicmVhazsKI2lmIEhBVkVGRgogICAgY2FzZSBFVl9VSU5QVVQ6CiAgICAgIHN3 aXRjaChyZWNlaXZlZF9ldmVudC5jb2RlKQogICAgICB7CiAgICAgIGNhc2UgVUlfRkZfVVBMT0FE OgogICAgICAgIHByaW50ZigiRWZmZWN0IHVwbG9hZCByZXF1ZXN0ZWQuXG4iKTsKICAgICAgICBm Zl91cC5yZXF1ZXN0X2lkID0gcmVjZWl2ZWRfZXZlbnQudmFsdWU7CiAgICAgICAgaWYoaW9jdGwo ZmQsIFVJX0JFR0lOX0ZGX1VQTE9BRCwgJmZmX3VwKSA8IDApIHsKICAgICAgICAgIHBlcnJvcigi aW9jdGwgVUlfQkVHSU5fRkZfVVBMT0FEIik7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQog ICAgICAgIC8qIHVwbG9hZCBlZmZlY3QgKGZmX3VwLnJlcXVlc3RfaWQsIGZmX3VwLmVmZmVjdCkg Ki8KICAgICAgICBzd2l0Y2goZmZfdXAuZWZmZWN0LnR5cGUpCiAgICAgICAgewogICAgICAgIGNh c2UgRkZfUEVSSU9ESUM6CiAgICAgICAgICBzd2l0Y2goZmZfdXAuZWZmZWN0LnUucGVyaW9kaWMu d2F2ZWZvcm0pCiAgICAgICAgICB7CiAgICAgICAgICBjYXNlIEZGX0NVU1RPTToKICAgICAgICAg ICAgIG1lbWNweShwaG9uZS0+Y3VzdG9tX2RhdGEsICYoZmZfdXAuZWZmZWN0LnUucGVyaW9kaWMu cGVyaW9kKSwgCiAgICAgICAgICAgICAgIHNpemVvZihwaG9uZS0+Y3VzdG9tX2RhdGEpKTsKI2lm IDAKICAgICAgICAgICAgIHByaW50ZigiT3VyIHN0cnVjdCAiKTsKICAgICAgICAgICAgIGZvcihp ID0gMDsgaSA8IHNpemVvZihwaG9uZS0+Y3VzdG9tX2RhdGEpOyBpKyspCiAgICAgICAgICAgICAg IHByaW50ZigiJTAyeCAiLCBwaG9uZS0+Y3VzdG9tX2RhdGFbaV0pOwogICAgICAgICAgICAgcHJp bnRmKCJcbiIpOwojZW5kaWYKICAgICAgICAgICAgIHNldF9sY2QocGhvbmUpOwogICAgICAgICAg ICAgZmZfdXAucmV0dmFsID0gMDsKICAgICAgICAgICAgIGZmX3VwLmVmZmVjdC5pZCA9IDA7CiAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K ICAgICAgICBpZihpb2N0bChmZCwgVUlfRU5EX0ZGX1VQTE9BRCwgJmZmX3VwKSA8IDApIHsKICAg ICAgICAgIHBlcnJvcigiaW9jdGwgVUlfRU5EX0ZGX1VQTE9BRCIpOwogICAgICAgICAgcmV0dXJu OwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgY2FzZSBVSV9GRl9FUkFTRToKICAgICAg ICBmZl9lcmFzZS5yZXF1ZXN0X2lkID0gcmVjZWl2ZWRfZXZlbnQudmFsdWU7CiAgICAgICAgaWYo aW9jdGwoZmQsIFVJX0JFR0lOX0ZGX0VSQVNFLCAmZmZfZXJhc2UpIDwgMCkgewogICAgICAgICAg cGVycm9yKCJpb2N0bCBVSV9CRUdJTl9GRl9FUkFTRSIpOwogICAgICAgIH0KICAgICAgICBwaG9u ZS0+Y3VzdG9tX2xlbiA9IDA7CiAgICAgICAgLy8gbWVtc2V0KHBob25lLT5jdXN0b21fZGF0YSwg MCwgc2l6ZW9mKHBob25lLT5jdXN0b21fZGF0YSkpOwogICAgICAgIHByaW50ZigicmVxdWVzdF9p ZD0lZCBlZmZlY3RfaWQ9JWQgZXJhc2VkLlxuIiwgZmZfZXJhc2UucmVxdWVzdF9pZCwgZmZfZXJh c2UuZWZmZWN0X2lkKTsKICAgICAgICBmZl9lcmFzZS5yZXR2YWwgPSAwOwogICAgICAgIGlmKGlv Y3RsKGZkLCBVSV9FTkRfRkZfRVJBU0UsICZmZl9lcmFzZSkgPCAwKSB7CiAgICAgICAgICBwZXJy b3IoImlvY3RsIFVJX0VORF9GRl9VUExPQUQiKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAg ICAgIH0KICAgICAgYnJlYWs7CiNlbmRpZgoKICAgIH0KICB9CiNpZiAwCiAgZWxzZQogICAgcHV0 cygidWlucHV0IGV2ZW50IHdyb25nIHNpemUuLi4iKTsKI2VuZGlmCiAgCiAgcmV0dXJuIDA7Cn0K CgovKiBjcmVhdGUgc2luZ2xlIHRocmVhZCBjb250YWluaW5nIGFsbCBoZXJlICovCnZvaWQgKnVp bnB1dF9oYW5kbGVyKHZvaWQgKmRhdGEpCnsKICBzdHJ1Y3QgaGFuZHNldCAqcGhvbmUgPSAoc3Ry dWN0IGhhbmRzZXQgKikgZGF0YTsKICBpbnQgaSwgbjsKCiAgLyogbG9vcCBwcm9jZXNzaW5nIGV2 ZW50cyAqLwogIGZvcig7OykKICB7CiAgICAvKiB3YWl0IGZvciBldmVudHMgZnJvbSB1aW5wdXQg Ki8KICAgIGhhbmRzZXRfd2FpdChwaG9uZSk7CgogICAgLyogaXMgdGhpcyB1aW5wdXQgZXZlbnQ/ ICovCiAgICBpZihGRF9JU1NFVChwaG9uZS0+dWlmZCwgJmZkX3JlYWQpKQogICAgewojaWYgTVVU RVgKICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleDEpOwojZW5kaWYKICAgICAgdWlucHV0 X2V2ZW50KHBob25lKTsKI2lmIE1VVEVYCiAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRl eDEpOwojZW5kaWYKICAgIH0KICAgIGVsc2UKICAgIHsKI2lmIDAKICAgICAgLyogbm8sIHRoaXMg Y291bGQgYmUgdGltZXItYmFzZWQgY29udGludWF0aW9uICovCiAgICAgIGlmKHBob25lLT5jb3Vu dGRvd24pCiAgICAgICAgaGFuZHNldF92aWJyYXRlKHBob25lLCAxKTsKI2VuZGlmCiAgICB9CiAg fQoKICByZXR1cm4gTlVMTDsKfQoKCi8qIHdhcm5pbmcgdHJhY2sga2V5cyBpZiBtYW55IG9mIHRo ZW0gYXJlIHByZXNzZWQKKiogbmVlZCB0byBnZW5lcmF0ZSBrZXkgdXAgLSBrZXkgZG93biBldmVu dHMgaW5iZXR3ZWVuCiovCmludCBrZXlfZXZlbnQoc3RydWN0IGhhbmRzZXQgKnBob25lLCBjaGFy ICpidWZmZXIpCnsKICBzdHJ1Y3QgaW5wdXRfZXZlbnQgZXZlbnQ7CgogIGlmKCBidWZmZXJbMV0g IT0gcGhvbmUtPmRhdGFbMV0gKQogIHsKI2lmIE1VVEVYCiAgICBwdGhyZWFkX211dGV4X2xvY2so Jm11dGV4MSk7CiNlbmRpZgoKICBpZiggcGhvbmUtPmRhdGFbMV0gIT0gMCAmJiBwaG9uZS0+ZGF0 YVsxXSA8IFNDQU5NQVggKQogIHsKICAgIGV2ZW50LnR5cGUgPSBFVl9LRVk7CiAgICBldmVudC5j b2RlID0gc2NhbjJjb2RlW3Bob25lLT5kYXRhWzFdXTsKICAgIGV2ZW50LnZhbHVlID0gMDsKICAg IHdyaXRlKHBob25lLT51aWZkLCAmZXZlbnQsIHNpemVvZihzdHJ1Y3QgaW5wdXRfZXZlbnQpKTsK CiAgICBldmVudC50eXBlID0gRVZfU1lOOwogICAgZXZlbnQuY29kZSA9IFNZTl9SRVBPUlQ7CiAg ICBldmVudC52YWx1ZSA9IDA7CiAgICB3cml0ZShwaG9uZS0+dWlmZCwgJmV2ZW50LCBzaXplb2Yo c3RydWN0IGlucHV0X2V2ZW50KSk7CgogIH0KCiAgaWYoIGJ1ZmZlclsxXSAhPSAwICYmIGJ1ZmZl clsxXSA8IFNDQU5NQVggKQogIHsKCiAgICBldmVudC50eXBlID0gRVZfS0VZOwogICAgZXZlbnQu Y29kZSA9IHNjYW4yY29kZVtidWZmZXJbMV1dOwogICAgZXZlbnQudmFsdWUgPSAxOwogICAgd3Jp dGUocGhvbmUtPnVpZmQsICZldmVudCwgc2l6ZW9mKHN0cnVjdCBpbnB1dF9ldmVudCkpOwoKICAg IGV2ZW50LnR5cGUgPSBFVl9TWU47CiAgICBldmVudC5jb2RlID0gU1lOX1JFUE9SVDsKICAgIGV2 ZW50LnZhbHVlID0gMDsKICAgIHdyaXRlKHBob25lLT51aWZkLCAmZXZlbnQsIHNpemVvZihzdHJ1 Y3QgaW5wdXRfZXZlbnQpKTsgICAgICAgIAoKICB9CgogICAgZnN5bmMocGhvbmUtPnVpZmQpOwoj aWYgTVVURVgKICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleDEpOwojZW5kaWYKICAKICB9 CgogIHJldHVybiAwOwp9CgoKdm9pZCAqa2V5cGFkX2hhbmRsZXIodm9pZCAqZGF0YSkKewogIHN0 cnVjdCBoYW5kc2V0ICpwaG9uZSA9IChzdHJ1Y3QgaGFuZHNldCAqKSBkYXRhOwogIHN0cnVjdCBp bnB1dF9ldmVudCBldmVudDsKICBpbnQgaSwgaiwgcmV0LCBjaGFuZ2UsIGZkOwogIGNoYXIgYnVm ZmVyWzIwXTsKCiAgZmQgPSBwaG9uZS0+dWlmZDsKICBmb3IoOzspCiAgewojaWYgTVVURVgKICAg IHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgxKTsKI2VuZGlmCiAgICByZXQgPSB1c2JfaW50ZXJy dXB0X3JlYWQocGhvbmUtPmhhbmRsZSwgMSwgYnVmZmVyLCAxNywgNTAwMCk7CiNpZiBNVVRFWAog ICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4MSk7CiNlbmRpZgoKICAgIGlmKHJldCA8IDAp IHsKICAgICAgcHJpbnRmKCJGYWlsdXJlIHVzYl9pbnRlcnJ1cHRfcmVhZCAgJWQgJyVzJ1xuIiwg cmV0LCBzdHJlcnJvcigtcmV0KSk7CiAgICB9CiNpZiAwCiAgICBwcmludGYoIlJlYWQgJWQgYnl0 ZXM6ICIsIHJldCk7CiAgICBmb3IoaiA9IDA7IGogPCByZXQ7IGorKykKICAgICAgcHJpbnRmKCIl MDJ4ICIsCiAgICAgICAgICAgICAoKGludClidWZmZXJbal0gJiAweDBmZikpOwogICAgcHJpbnRm KCJcbiIpOwojZW5kaWYKICAgIC8qIGRlY29kZSBldmVudCAqLwoKICAgIC8qIEluIHZhZ3VlIGhh bGx1Y2luYXRpb24gSSBoYXZlIG5vdCBoZWFyZAogICAgKiogbWFzdGVyIFlvZGEgc2F5OgogICAg KioKICAgICoqIG11dGV4aW5nIHRoaXMgYW5kIHVpbnB1dCBmb3IKICAgICoqIGtlcm5lbCAyLjYu MTMuNCBjcmFzaCBwcmV2ZW50IGNvdWxkIG5vdCBub3QKICAgICoqIGJ1dCByYXRoZXIgZGVsYXll ZCB3b3VsZAogICAgKi8KICAgIGlmKHJldCA9PSAxNykKICAgIHsKICAgICAga2V5X2V2ZW50KHBo b25lLCBidWZmZXIpOwoKICAgICAgbWVtY3B5KHBob25lLT5kYXRhLCBidWZmZXIsIDE3KTsKICAg IH0KICAgIC8qIGhlcmUgd2UgY2FuIHByb2Nlc3MgdWlucHV0IGV2ZW50IGluLXRocmVhZCAKICAg ICoqIGJld2FyZSBvZiBibG9ja2luZwogICAgKi8KICAgICNpZiBUSFJFQUQKICAgICNlbHNlCiAg ICB1aW5wdXRfZXZlbnQocGhvbmUpOwogICAgI2VuZGlmCiAgfQoKICByZXR1cm4gTlVMTDsKfQoK CnZvaWQgdGVybWluYXRlKGludCBzaWduYWwpCnsKI2lmIFRIUkVBRAogIHB0aHJlYWRfY2FuY2Vs KHRocmVhZFswXSk7CiAgcHRocmVhZF9jYW5jZWwodGhyZWFkWzFdKTsKI2VuZGlmCn0KCgppbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgaW50IGksIG4gPSBUSFJFQURTOwogIHN0 cnVjdCBoYW5kc2V0ICpwaG9uZSA9ICZoYW5kc2V0OwoKICBpZihhcmdjID49IDIgJiYgYXJnYyA8 PSAzKQogIHsKICAgIGludCBkZXRhY2ggPSAwOwogICAgY2hhciogY29uc3QgSEVYUFJFRklYID0g IjB4IjsKICAgIHVuc2lnbmVkIGNoYXIgY29uc3QgSEVYUFJFRklYTEVOID0gMjsKICAgIHVuc2ln bmVkIGNoYXIgY29uc3QgSEVYU1RSSU5HTEVOID0gNjsKICAgIHVuc2lnbmVkIGNoYXIgY29uc3Qg SEVYTlVNTEVOID0gNDsKICAgIGNoYXIgdmVuZG9yX2lkX3NbSEVYU1RSSU5HTEVOICsgMV0sIHBy b2R1Y3RfaWRfc1tIRVhTVFJJTkdMRU4gKyAxXTsKICAgIAogICAgaWYoKmFyZ3ZbMV0gPT0gJy0n KQogICAgewogICAgICBpZihhcmd2WzFdWzFdID09ICdkJykKICAgICAgewogICAgICAgIGRldGFj aCA9IDE7CiAgICAgICAgYXJnYy0tOwogICAgICAgIGFyZ3YrKzsKICAgICAgfQogICAgICBlbHNl CiAgICAgIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyA8LWQ+IDxoZXhfdmVu ZG9yX2lkOmhleF9wcm9kdWN0X2lkPlxuIiwgYXJndlswXSk7CiAgICAgICAgZnByaW50ZihzdGRl cnIsICIgICBFZzogJXMgLWQgJTA0eDolMDR4XG4iLCBhcmd2WzBdLCB1c2JfcGhvbmVfdmVuZG9y LCB1c2JfcGhvbmVfcHJvZHVjdCk7CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KICAgIH0KCiAg ICBpZihhcmdjID09IDIpCiAgICB7CiAgICAgIG1lbWNweSh2ZW5kb3JfaWRfcywgSEVYUFJFRklY LCBIRVhQUkVGSVhMRU4pOwogICAgICBzdHJuY3B5KHZlbmRvcl9pZF9zICsgSEVYUFJFRklYTEVO LCBhcmd2WzFdLCBIRVhOVU1MRU4pOwogICAgICB1c2JfcGhvbmVfdmVuZG9yID0gMHhmZmZmICYg c3RydG9sKHZlbmRvcl9pZF9zLCBOVUxMLCAxNik7CgogICAgICBtZW1jcHkocHJvZHVjdF9pZF9z LCBIRVhQUkVGSVgsIEhFWFBSRUZJWExFTik7CiAgICAgIHN0cm5jcHkocHJvZHVjdF9pZF9zICsg SEVYUFJFRklYTEVOLCBhcmd2WzFdICsgSEVYTlVNTEVOICsgMSwgSEVYTlVNTEVOKTsKICAgICAg dXNiX3Bob25lX3Byb2R1Y3QgPSAweGZmZmYgJiBzdHJ0b2wocHJvZHVjdF9pZF9zLCBOVUxMLCAx Nik7CiAgICB9CgogICAgaWYoZGV0YWNoKQogICAgewogICAgICBISURJbnRlcmZhY2UqIGhpZDsK ICAgICAgaGlkX3JldHVybiByZXQ7CgogICAgICBmcHJpbnRmKHN0ZGVyciwgIlRyeWluZyB0byBk ZXRhY2ggSElEIHdpdGggSURzICUwNHg6JTA0eC4uLiAiLAogICAgICAgICAgICAgIHVzYl9waG9u ZV92ZW5kb3IsIHVzYl9waG9uZV9wcm9kdWN0KTsKCiAgICAgIEhJREludGVyZmFjZU1hdGNoZXIg bWF0Y2hlciA9IHsgdXNiX3Bob25lX3ZlbmRvciwgdXNiX3Bob25lX3Byb2R1Y3QsIE5VTEwsIE5V TEwsIDAgfTsKCiAgICAgIHJldCA9IGhpZF9pbml0KCk7CiAgICAgIGlmIChyZXQgIT0gSElEX1JF VF9TVUNDRVNTKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJoaWRfaW5pdCBmYWlsZWQgd2l0 aCByZXR1cm4gY29kZSAlZC5cbiIsIHJldCk7CiAgICAgICAgcmV0dXJuIDE7CiAgICAgIH0KCiAg ICAgIGhpZCA9IGhpZF9uZXdfSElESW50ZXJmYWNlKCk7CiAgICAgIGlmIChoaWQgPT0gMCkgewog ICAgICAgIGZwcmludGYoc3RkZXJyLCAiaGlkX25ld19ISURJbnRlcmZhY2UoKSBmYWlsZWQsIG91 dCBvZiBtZW1vcnk/XG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgICAgfQogICAgICAKICAgICAg cmV0ID0gaGlkX2ZvcmNlX29wZW4oaGlkLCAwLCAmbWF0Y2hlciwgMyk7CiAgICAgIGlmIChyZXQg IT0gSElEX1JFVF9TVUNDRVNTKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJoaWRfZm9yY2Vf b3BlbiBmYWlsZWQgd2l0aCByZXR1cm4gY29kZSAlZC5cbiIsIHJldCk7CiAgICAgICAgcmV0dXJu IDE7CiAgICAgIH0KICAgICAgCiAgICAgIHJldCA9IGhpZF9jbG9zZShoaWQpOwogICAgICBpZiAo cmV0ICE9IEhJRF9SRVRfU1VDQ0VTUykgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiaGlkX2Ns b3NlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlICVkLlxuIiwgcmV0KTsKICAgICAgICByZXR1cm4g MTsKICAgICAgfQogICAgICAKICAgICAgaGlkX2RlbGV0ZV9ISURJbnRlcmZhY2UoJmhpZCk7Cgog ICAgICByZXQgPSBoaWRfY2xlYW51cCgpOwogICAgICBpZiAocmV0ICE9IEhJRF9SRVRfU1VDQ0VT UykgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiaGlkX2NsZWFudXAgZmFpbGVkIHdpdGggcmV0 dXJuIGNvZGUgJWQuXG4iLCByZXQpOwogICAgICAgIHJldHVybiAxOwogICAgICB9CiAgICAgIAog ICAgICBmcHJpbnRmKHN0ZGVyciwgImRvbmUuXG4iKTsKICAgICAgCiAgICB9CiAgfQoKICBpZiho YW5kc2V0X3JlZ2lzdGVyKHBob25lKSkKICB7CiAgICBwcmludGYoIkNhbm5vdCBvcGVuIGRldmlj ZVxuIik7CiAgICByZXR1cm4gLTE7CiAgfQogIAogIHByaW50ZigiVXNlciBzcGFjZSBkcml2ZXIg KHVpbnB1dCkgZm9yIEJleW9uZFRlbCBVU0IgUGhvbmUuXG4iKTsKICAvKiBDcmVhdGUgMiBpbmRl cGVuZGFudCB0aHJlYWRzCiAgKiogb25lIGZvciBmb3JjZSBmZWVkYmFjayBoYW5kbGVyCiAgKiog c2Vjb25kIGZvciBub3JtYWwgcGhvbmUgZXZlbnRzIChrYXlzIGFuZCBtb3ZlbWVudCkKICAqLwoK I2lmIFRIUkVBRAogIC8qIHRoaXMgaXMgcHRocmVhZCB2ZXJzaW9uICovCiAgaSA9IDA7CiAgaWYo IChyY1tpXSA9IHB0aHJlYWRfY3JlYXRlKCAmdGhyZWFkW2ldLCBOVUxMLCAmdWlucHV0X2hhbmRs ZXIsICh2b2lkICopIChwaG9uZSkgKSkgKQogICAgcHJpbnRmKCJUaHJlYWQgY3JlYXRpb24gZmFp bGVkOiAlZFxuIiwgcmNbaV0pOwoKICBpID0gMTsKICBpZiggKHJjW2ldID0gcHRocmVhZF9jcmVh dGUoICZ0aHJlYWRbaV0sIE5VTEwsICZrZXlwYWRfaGFuZGxlciwgKHZvaWQgKikgKHBob25lKSAp KSApCiAgICBwcmludGYoIlRocmVhZCBjcmVhdGlvbiBmYWlsZWQ6ICVkXG4iLCByY1tpXSk7Cgog IC8qIGdyYWNlZnVsIGV4aXQgaGFuZGxlciAqLwogIHNpZ25hbChTSUdJTlQsICZ0ZXJtaW5hdGUp OwogIHNpZ25hbChTSUdURVJNLCAmdGVybWluYXRlKTsKCiAgLyogV2FpdCB0aWxsIHRocmVhZHMg YXJlIGNvbXBsZXRlIGJlZm9yZSBtYWluIGNvbnRpbnVlcy4gVW5sZXNzIHdlICAqLwogIC8qIHdh aXQgd2UgcnVuIHRoZSByaXNrIG9mIGV4ZWN1dGluZyBhbiBleGl0IHdoaWNoIHdpbGwgdGVybWlu YXRlICAgKi8KICAvKiB0aGUgcHJvY2VzcyBhbmQgYWxsIHRocmVhZHMgYmVmb3JlIHRoZSB0aHJl YWRzIGhhdmUgY29tcGxldGVkLiAgICovCiAgCiAgcHRocmVhZF9qb2luKCB0aHJlYWRbMF0sIE5V TEwpOwogIHB0aHJlYWRfam9pbiggdGhyZWFkWzFdLCBOVUxMKTsKI2Vsc2UKICBrZXlwYWRfaGFu ZGxlcihwaG9uZSk7CiNlbmRpZgoKICAvKiB0cnkgc2luZ2xlIGV4ZWN1dGlvbiBuby10aHJlYWQg dmVyc2lvbiAqLwoKICBoYW5kc2V0X3VucmVnaXN0ZXIocGhvbmUpOwogIHByaW50ZigiZXhpdC5c biIpOwogIAogIHJldHVybiAwOwp9Cg== ------=_Part_23107_16400708.1206731230858 Content-Type: text/x-csrc; name=iftest.c Content-Transfer-Encoding: base64 X-Attachment-Id: file2 Content-Disposition: attachment; filename=iftest.c I2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPGZj bnRsLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxz dHJpbmcuaD4KCiNkZWZpbmUgSEFWRUZGIDAKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCnsKICBzdHJ1Y3QgaW5wdXRfZXZlbnQgcGxheTsKICBzdHJ1Y3QgaW5wdXRfZXZlbnQgc3Rv cDsKICBzdHJ1Y3QgZmZfZWZmZWN0ICplZmZlY3Q7CiAgaW50IGZkOwogIGludCBnYWluID0gMTA7 IC8qIDAtMTAwICovCiAgY2hhciBuYW1lWzI1Nl0gPSAiVW5rbm93biI7CiAgdW5zaWduZWQgY2hh ciAKICBkaXNwbGF5X3RpbWVbXSA9IHsgCiAgMHgxMCwweGJlLDB4NWUsMHg0MCwweDdjLDB4YzYs MHhiZiwweGU1LDB4NzAsMHg2MCwweDAwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMAogIH0sCiAg ZGlzcGxheV9vZmZob29rW10gPSB7IAogIDB4MTEsMHhiZSwweDVlLDB4NDAsMHg3YywweGM2LDB4 ZmIsMHhlYiwweDcwLDB4NjAsMHgwMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAKICB9CiAgOwog IGludCByZXR2YWw7CiAgaW50IGk7CgogIGVmZmVjdCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGZm X2VmZmVjdCkgKyAxNik7CiAgbWVtc2V0KGVmZmVjdCwgMCwgc2l6ZW9mKHN0cnVjdCBmZl9lZmZl Y3QpKTsKCiAgaWYoYXJnYyA8IDIpCiAgewogICAgcHJpbnRmKCJ1c2FnZTogZmZ0ZXN0IC9kZXYv aW5wdXQvZXZlbnRYXG4iKTsKICAgIHJldHVybiAwOwogIH0KICBmZCA9IG9wZW4oYXJndlsxXSwg T19SRFdSIHwgT19TWU5DKTsKICAKICBpZihpb2N0bChmZCwgRVZJT0NHTkFNRShzaXplb2YobmFt ZSkpLCBuYW1lKSA8IDApIHsKICAgIHBlcnJvcigiZXZkZXYgaW9jdGwiKTsKICB9CiAgcHJpbnRm KCIlczogJXNcbiIsIGFyZ3ZbMV0sIG5hbWUpOwoKI2lmIEhBVkVGRgogIG1lbXNldChlZmZlY3Qs IDAsIHNpemVvZihzdHJ1Y3QgZmZfZWZmZWN0KSk7CgogIC8qIGZpbGwgdGhlIGVmZmVjdCBzdHJ1 Y3R1cmUgKi8KICBlZmZlY3QtPnR5cGUgPSBGRl9QRVJJT0RJQzsKICBlZmZlY3QtPmlkID0gLTE7 IC8qIGdlbmVyYXRlIG5ldyBlZmZlY3QgKi8KICBlZmZlY3QtPnUucGVyaW9kaWMud2F2ZWZvcm0g PSBGRl9DVVNUT007CiAgLyogZGlydHkgaGFjayAqLwogIG1lbWNweSgmZWZmZWN0LT51LnBlcmlv ZGljLnBlcmlvZCwgZGlzcGxheV9vZmZob29rLCBzaXplb2YoZGlzcGxheV9vZmZob29rKSk7CiAg CiAgLyogdXBsb2FkIHRoZSBlZmZlY3QgKi8KICByZXR2YWwgPSBpb2N0bChmZCwgRVZJT0NTRkYs IGVmZmVjdCk7CiAgaWYgKHJldHZhbCA8IDApCiAgewogICAgcHJpbnRmKCJjYW5ub3QgdXBsb2Fk IHRoZSBlZmZlY3RcbiIpOwogIH0KICBlbHNlCiAgewogICAgcHJpbnRmKCJlZmZlY3QgJWQgdXBs b2FkZWQuXG4iLCBlZmZlY3QtPmlkKTsKCiAgICAvKiBSZW1vdmUgdGhlIGVmZmVjdCAqLwogICAg cmV0dmFsID0gaW9jdGwoZmQsIEVWSU9DUk1GRiwgZWZmZWN0LT5pZCk7CiAgICBpZiAocmV0dmFs IDwgMCkKICAgICAgcHJpbnRmKCJjYW5ub3QgcmVtb3ZlIHRoZSBlZmZlY3QgJWRcbiIsIGVmZmVj dC0+aWQpOwogIH0KI2VuZGlmCgojaWYgMQogIC8qIHR1cm4gUklOR0VSIG9uICovCiAgcGxheS50 eXBlID0gRVZfU05EOwogIHBsYXkuY29kZSA9IFNORF9CRUxMOwogIHBsYXkudmFsdWUgPSAxOwog IHdyaXRlKGZkLCAoY29uc3Qgdm9pZCopICZwbGF5LCBzaXplb2YocGxheSkpOwojZW5kaWYKCiAg Zm9yKGkgPSAwOyBpIDwgMjsgaSsrKQogIHsKICAvKiB0dXJuIExFRCBvbiAqLwogIHBsYXkudHlw ZSA9IEVWX0xFRDsKICBwbGF5LmNvZGUgPSBMRURfTlVNTDsKICBwbGF5LnZhbHVlID0gMTsKICB3 cml0ZShmZCwgKGNvbnN0IHZvaWQqKSAmcGxheSwgc2l6ZW9mKHBsYXkpKTsKICBmc3luYyhmZCk7 CgogIHVzbGVlcCgxMDAwMDApOwoKICAvKiB0dXJuIExFRCBvZmYgKi8KICBwbGF5LnR5cGUgPSBF Vl9MRUQ7CiAgcGxheS5jb2RlID0gTEVEX05VTUw7CiAgcGxheS52YWx1ZSA9IDA7CiAgd3JpdGUo ZmQsIChjb25zdCB2b2lkKikgJnBsYXksIHNpemVvZihwbGF5KSk7CiAgZnN5bmMoZmQpOwogIAog IHVzbGVlcCgxMDAwMDApOwogIH0KCiNpZiAxCiAgLyogdHVybiBSSU5HRVIgb2ZmICovCiAgcGxh eS50eXBlID0gRVZfU05EOwogIHBsYXkuY29kZSA9IFNORF9CRUxMOwogIHBsYXkudmFsdWUgPSAw OwogIHdyaXRlKGZkLCAoY29uc3Qgdm9pZCopICZwbGF5LCBzaXplb2YocGxheSkpOwojZW5kaWYK CiNpZiBIQVZFRkYKICAvKiBmaWxsIHRoZSBlZmZlY3Qgc3RydWN0dXJlICovCiAgZWZmZWN0LT50 eXBlID0gRkZfUEVSSU9ESUM7CiAgZWZmZWN0LT5pZCA9IC0xOyAvKiBnZW5lcmF0ZSBuZXcgZWZm ZWN0ICovCiAgZWZmZWN0LT51LnBlcmlvZGljLndhdmVmb3JtID0gRkZfQ1VTVE9NOwogIC8qIGRp cnR5IGhhY2sgKi8KICBtZW1jcHkoJmVmZmVjdC0+dS5wZXJpb2RpYy5wZXJpb2QsIGRpc3BsYXlf dGltZSwgc2l6ZW9mKGRpc3BsYXlfdGltZSkpOwogIAogIC8qIHVwbG9hZCB0aGUgZWZmZWN0ICov CiAgcmV0dmFsID0gaW9jdGwoZmQsIEVWSU9DU0ZGLCBlZmZlY3QpOwogIGlmIChyZXR2YWwgPCAw KQogIHsKICAgIHByaW50ZigiY2Fubm90IHVwbG9hZCB0aGUgZWZmZWN0XG4iKTsKICB9CiAgZWxz ZQogIHsKICAgIHByaW50ZigiZWZmZWN0ICVkIHVwbG9hZGVkLlxuIiwgZWZmZWN0LT5pZCk7Cgog ICAgLyogUmVtb3ZlIHRoZSBlZmZlY3QgKi8KICAgIHJldHZhbCA9IGlvY3RsKGZkLCBFVklPQ1JN RkYsIGVmZmVjdC0+aWQpOwogICAgaWYgKHJldHZhbCA8IDApCiAgICAgIHByaW50ZigiY2Fubm90 IHJlbW92ZSB0aGUgZWZmZWN0ICVkXG4iLCBlZmZlY3QtPmlkKTsKICB9CiNlbmRpZgoKICBjbG9z ZShmZCk7CiAgCiAgcmV0dXJuIDA7Cn0K ------=_Part_23107_16400708.1206731230858 Content-Type: text/x-csrc; name=testlibusb.c Content-Transfer-Encoding: base64 X-Attachment-Id: file3 Content-Disposition: attachment; filename=testlibusb.c LyoKICogdGVzdGxpYnVzYi5jCiAqCiAqICBUZXN0IHN1aXRlIHByb2dyYW0KICovCgojaW5jbHVk ZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dXNiLmg+CiNpbmNsdWRl IDxzdHJpbmcuaD4KI2luY2x1ZGUgPGFzbS9lcnJuby5oPgoKLyogYmluZCBvbiB0aGlzIHZlbmRv ci9wcm9kdWN0ICovCiNpbmNsdWRlICJ1c2JpZC5oIgoKY2hhciBsZWQwW10gPSB7IAoweDAxLDB4 MTEsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLAoweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAoweDAwLAp9OwoKY2hhciBs ZWQxW10gPSB7IAoweDAxLDB4MTEsMHhmZiwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAoweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAw LAoweDAwLAp9OwoKY2hhciBkaXNwbGF5X3RpbWVbXSA9IHsKMHgwMywweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw MCwKMHgwMCwweDEwLDB4YmUsMHg1ZSwweDQwLDB4N2MsMHhjNiwweGJmLDB4ZTUsMHg3MCwweDYw LDB4MDAsMHgxMCwweDEwLDB4MTAsMHgxMCwKMHgxMCwKfTsKCmNoYXIgZGlzcGxheV9vZmZob29r W10gPSB7CjB4MDMsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCjB4MDAsMHgxMSwweGJlLDB4NWUsMHg0MCww eDdjLDB4YzYsMHhmYiwweGViLDB4NzAsMHg2MCwweDAwLDB4MTAsMHgxMCwweDEwLDB4MTAsCjB4 MTAKfTsKCmNoYXIgZGlzcGxheV8wMDBbXSA9IHsKMHgwMywweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKMHgw MCwweDExLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweGViLDB4ZWIsMHhmZiwweGZmLDB4ZWIs MHhmYiwweGViLDB4ZWIsMHhmYiwKLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAwICAgIDAgICA6OCAgIDo4ICAgIDAgICB8MCAgICAwICAgfDAgICAgMCAgKi8KMHhlYgovKiAw ICovCn07CgpjaGFyIHJpbmcxW10gPSB7CjB4MDEsMHhmZiwweDExLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCjB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLDB4MDAsCjB4MDAKfTsKCmNoYXIgcmluZzBbXSA9IHsKMHgwMSwweDAwLDB4MTEs MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwKMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKMHgwMAp9OwoKI2RlZmluZSBNQVhfVVNC X01JQ0UgMTAKc3RydWN0IHVzYl9kZXZpY2UqIHVzYl9tb3VzZVtNQVhfVVNCX01JQ0VdOwppbnQg bWljZUZvdW5kID0gMDsKCmludCB2ZXJib3NlID0gMDsKCnZvaWQgZG9fdXNibW91c2Uoc3RydWN0 IHVzYl9kZXZpY2UgKmRldikgewogIHVzYl9kZXZfaGFuZGxlICptb3VzZV9kZXZpY2UgPSAwOwog IGludCByZXQgPSAwOwogIGludCBpLCBqIDsKCiAgcHJpbnRmKCJEb2luZyB1c2Jtb3VzZVxuIik7 CiAgaWYoZGV2LT5kZXNjcmlwdG9yLmlkVmVuZG9yICE9IFVTQl9NT1VTRV9WRU5ET1IgfHwKICAg ICBkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0ICE9IFVTQl9NT1VTRV9QUk9EVUNUKSB7CiAgICBw cmludGYoIkVSUjogV2Fzbid0IHBhc3NlZCBhIHVzYm1vdXNlIVxuIik7CiAgICByZXR1cm47CiAg fQogIGlmIChkZXYtPmRlc2NyaXB0b3IuaVNlcmlhbE51bWJlcikgewogICAgcHJpbnRmKCJQcm9j ZXNzaW5nIHVzYiBtb3VzZSBpZCAuLi5cbiIpOwogIH0gZWxzZSB7CiAgICBwcmludGYoIkN1cmlv dXMsIGRldmljZSBoYXMgbm8gc2VyaWFsIG51bWJlci5cbiIpOwogIH0KICBtb3VzZV9kZXZpY2Ug PSB1c2Jfb3BlbihkZXYpOwogIGlmKG1vdXNlX2RldmljZSA+IDApIHsKICAgIGNoYXIgYnVmZmVy WzUxMl07CiNpZiAwCiAgICByZXQgPSB1c2Jfc2V0X2NvbmZpZ3VyYXRpb24obW91c2VfZGV2aWNl LCBkZXYtPmNvbmZpZy0+YkNvbmZpZ3VyYXRpb25WYWx1ZSk7CiAgICBpZihyZXQgPCAwKSB7CiAg ICAgIHByaW50ZigiRmFpbGVkIHRvIHNldCBjb25maWcgMTogJWQgRUJVUzogJWQgRU5PTk06ICVk XG4iLCByZXQsIEVCVVNZLCBFTk9NRU0pOwogICAgICBnb3RvIGJhaWw7CiAgICB9CiNlbmRpZgoK ICAgIHJldCA9IHVzYl9jbGFpbV9pbnRlcmZhY2UobW91c2VfZGV2aWNlLCAzKTsKICAgIGlmKHJl dCA8IDApIHsKICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gY2xhaW0gaW50ZXJmYWNlIDM6ICVkIEVC VVM6ICVkIEVOT05NOiAlZFxuIiwgcmV0LCBFQlVTWSwgRU5PTUVNKTsKICAgICAgZ290byBiYWls OwogICAgfQogICAgCiAgICAvKiBzZW5kIHNvbWUgbWVzc2FnZSB0byB0aGUgZGV2aWNlICovCiAg ICByZXQgPSB1c2JfaW50ZXJydXB0X3dyaXRlKG1vdXNlX2RldmljZSwgMSwgZGlzcGxheV8wMDAs IHNpemVvZihkaXNwbGF5XzAwMCksIDUwMDApOwogICAgcmV0ID0gdXNiX2ludGVycnVwdF9yZWFk KG1vdXNlX2RldmljZSwgMSwgYnVmZmVyLCAxNywgNTAwMCk7CgogICAgLy8gcmV0ID0gdXNiX2lu dGVycnVwdF93cml0ZShtb3VzZV9kZXZpY2UsIDEsIHJpbmcxLCBzaXplb2YocmluZzEpLCA1MDAw KTsKICAgIC8vIHJldCA9IHVzYl9pbnRlcnJ1cHRfcmVhZChtb3VzZV9kZXZpY2UsIDEsIGJ1ZmZl ciwgMTcsIDUwMDApOwoKICAgIHJldCA9IHVzYl9pbnRlcnJ1cHRfd3JpdGUobW91c2VfZGV2aWNl LCAxLCBsZWQxLCBzaXplb2YobGVkMSksIDUwMDApOwogICAgaSA9IDIwMDA7CiAgICB3aGlsZShp LS0pIHsKICAgICAgcmV0ID0gdXNiX2ludGVycnVwdF9yZWFkKG1vdXNlX2RldmljZSwgMSwgYnVm ZmVyLCAxNywgNTAwMCk7CiAgICAgIGlmKHJldCA8IDApIHsKICAgICAgICBwcmludGYoIkZhaWx1 cmUgdXNiX2ludGVycnVwdF9yZWFkICAlZCAnJXMnXG4iLCByZXQsIHN0cmVycm9yKC1yZXQpKTsK ICAgICAgICBnb3RvIGJhaWw7CiAgICAgIH0gCiAgICAgIHByaW50ZigiJTA0eCBSZWFkICVkIGJ5 dGVzOiAiLCBpLCByZXQpOwogICAgICBmb3IoaiA9IDA7IGogPCByZXQ7IGorKykgewogICAgICAg IHByaW50ZigiJTAyeCAiLAogICAgICAgICAgICAgICAoKGludClidWZmZXJbal0gJiAweDBmZikp OwogICAgICB9CiAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KICAgIHJldCA9IHVzYl9pbnRlcnJ1 cHRfd3JpdGUobW91c2VfZGV2aWNlLCAxLCBsZWQwLCBzaXplb2YobGVkMSksIDUwMDApOwogICAg cmV0ID0gdXNiX2ludGVycnVwdF9yZWFkKG1vdXNlX2RldmljZSwgMSwgYnVmZmVyLCAxNywgNTAw MCk7CgogICAgcmV0ID0gdXNiX2ludGVycnVwdF93cml0ZShtb3VzZV9kZXZpY2UsIDEsIGRpc3Bs YXlfdGltZSwgc2l6ZW9mKGRpc3BsYXlfdGltZSksIDUwMDApOwogICAgcmV0ID0gdXNiX2ludGVy cnVwdF9yZWFkKG1vdXNlX2RldmljZSwgMSwgYnVmZmVyLCAxNywgNTAwMCk7CgogICAgcmV0ID0g dXNiX2ludGVycnVwdF93cml0ZShtb3VzZV9kZXZpY2UsIDEsIHJpbmcwLCBzaXplb2YocmluZzAp LCA1MDAwKTsKICAgIHJldCA9IHVzYl9pbnRlcnJ1cHRfcmVhZChtb3VzZV9kZXZpY2UsIDEsIGJ1 ZmZlciwgMTcsIDUwMDApOwoKICBiYWlsOgogICAgdXNiX2Nsb3NlKG1vdXNlX2RldmljZSk7CiAg fQp9Cgp2b2lkIHByaW50X2VuZHBvaW50KHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAq ZW5kcG9pbnQpCnsKICBwcmludGYoIiAgICAgIGJFbmRwb2ludEFkZHJlc3M6ICUwMnhoXG4iLCBl bmRwb2ludC0+YkVuZHBvaW50QWRkcmVzcyk7CiAgcHJpbnRmKCIgICAgICBibUF0dHJpYnV0ZXM6 ICAgICAlMDJ4aFxuIiwgZW5kcG9pbnQtPmJtQXR0cmlidXRlcyk7CiAgcHJpbnRmKCIgICAgICB3 TWF4UGFja2V0U2l6ZTogICAlZFxuIiwgZW5kcG9pbnQtPndNYXhQYWNrZXRTaXplKTsKICBwcmlu dGYoIiAgICAgIGJJbnRlcnZhbDogICAgICAgICVkXG4iLCBlbmRwb2ludC0+YkludGVydmFsKTsK ICBwcmludGYoIiAgICAgIGJSZWZyZXNoOiAgICAgICAgICVkXG4iLCBlbmRwb2ludC0+YlJlZnJl c2gpOwogIHByaW50ZigiICAgICAgYlN5bmNoQWRkcmVzczogICAgJWRcbiIsIGVuZHBvaW50LT5i U3luY2hBZGRyZXNzKTsKfQoKdm9pZCBwcmludF9hbHRzZXR0aW5nKHN0cnVjdCB1c2JfaW50ZXJm YWNlX2Rlc2NyaXB0b3IgKmludGVyZmFjZSkKewogIGludCBpOwoKICBwcmludGYoIiAgICBiSW50 ZXJmYWNlTnVtYmVyOiAgICVkXG4iLCBpbnRlcmZhY2UtPmJJbnRlcmZhY2VOdW1iZXIpOwogIHBy aW50ZigiICAgIGJBbHRlcm5hdGVTZXR0aW5nOiAgJWRcbiIsIGludGVyZmFjZS0+YkFsdGVybmF0 ZVNldHRpbmcpOwogIHByaW50ZigiICAgIGJOdW1FbmRwb2ludHM6ICAgICAgJWRcbiIsIGludGVy ZmFjZS0+Yk51bUVuZHBvaW50cyk7CiAgcHJpbnRmKCIgICAgYkludGVyZmFjZUNsYXNzOiAgICAl ZFxuIiwgaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MpOwogIHByaW50ZigiICAgIGJJbnRlcmZh Y2VTdWJDbGFzczogJWRcbiIsIGludGVyZmFjZS0+YkludGVyZmFjZVN1YkNsYXNzKTsKICBwcmlu dGYoIiAgICBiSW50ZXJmYWNlUHJvdG9jb2w6ICVkXG4iLCBpbnRlcmZhY2UtPmJJbnRlcmZhY2VQ cm90b2NvbCk7CiAgcHJpbnRmKCIgICAgaUludGVyZmFjZTogICAgICAgICAlZFxuIiwgaW50ZXJm YWNlLT5pSW50ZXJmYWNlKTsKCiAgZm9yIChpID0gMDsgaSA8IGludGVyZmFjZS0+Yk51bUVuZHBv aW50czsgaSsrKQogICAgcHJpbnRfZW5kcG9pbnQoJmludGVyZmFjZS0+ZW5kcG9pbnRbaV0pOwp9 Cgp2b2lkIHByaW50X2ludGVyZmFjZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKQp7 CiAgaW50IGk7CgogIGZvciAoaSA9IDA7IGkgPCBpbnRlcmZhY2UtPm51bV9hbHRzZXR0aW5nOyBp KyspCiAgICBwcmludF9hbHRzZXR0aW5nKCZpbnRlcmZhY2UtPmFsdHNldHRpbmdbaV0pOwp9Cgp2 b2lkIHByaW50X2NvbmZpZ3VyYXRpb24oc3RydWN0IHVzYl9jb25maWdfZGVzY3JpcHRvciAqY29u ZmlnKQp7CiAgaW50IGk7CgogIHByaW50ZigiICB3VG90YWxMZW5ndGg6ICAgICAgICAgJWRcbiIs IGNvbmZpZy0+d1RvdGFsTGVuZ3RoKTsKICBwcmludGYoIiAgYkRlc2NyaXB0b3JUeXBlOiAgICAg ICVkXG4iLCBjb25maWctPmJEZXNjcmlwdG9yVHlwZSk7CiAgcHJpbnRmKCIgIGJOdW1JbnRlcmZh Y2VzOiAgICAgICAlZFxuIiwgY29uZmlnLT5iTnVtSW50ZXJmYWNlcyk7CiAgcHJpbnRmKCIgIGJD b25maWd1cmF0aW9uVmFsdWU6ICAlZFxuIiwgY29uZmlnLT5iQ29uZmlndXJhdGlvblZhbHVlKTsK ICBwcmludGYoIiAgaUNvbmZpZ3VyYXRpb246ICAgICAgICVkXG4iLCBjb25maWctPmlDb25maWd1 cmF0aW9uKTsKICBwcmludGYoIiAgYm1BdHRyaWJ1dGVzOiAgICAgICAgICUwMnhoXG4iLCBjb25m aWctPmJtQXR0cmlidXRlcyk7CiAgcHJpbnRmKCIgIE1heFBvd2VyOiAgICAgICAgICAgICAlZFxu IiwgY29uZmlnLT5NYXhQb3dlcik7CgogIGZvciAoaSA9IDA7IGkgPCBjb25maWctPmJOdW1JbnRl cmZhY2VzOyBpKyspCiAgICBwcmludF9pbnRlcmZhY2UoJmNvbmZpZy0+aW50ZXJmYWNlW2ldKTsK fQoKdm9pZCBmb3VuZF91c2JfbW91c2Uoc3RydWN0IHVzYl9kZXZpY2UgKmRldikgewogIGlmKG1p Y2VGb3VuZCA8IE1BWF9VU0JfTUlDRSkgewogICAgdXNiX21vdXNlW21pY2VGb3VuZCsrXSA9IGRl djsKICAgIGlmKHZlcmJvc2UpIHByaW50ZigiRm91bmQgdXNiIG1vdXNlIGZvYiAjJWRcbiIsIG1p Y2VGb3VuZCk7CiAgfQp9CgppbnQgcHJpbnRfZGV2aWNlKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYs IGludCBsZXZlbCkKewogIHVzYl9kZXZfaGFuZGxlICp1ZGV2OwogIGNoYXIgZGVzY3JpcHRpb25b MjU2XTsKICBjaGFyIHN0cmluZ1syNTZdOwogIGludCByZXQsIGk7CgogIHVkZXYgPSB1c2Jfb3Bl bihkZXYpOwogIGlmICh1ZGV2KSB7CiAgICBpZiAoZGV2LT5kZXNjcmlwdG9yLmlNYW51ZmFjdHVy ZXIpIHsKICAgICAgcmV0ID0gdXNiX2dldF9zdHJpbmdfc2ltcGxlKHVkZXYsIGRldi0+ZGVzY3Jp cHRvci5pTWFudWZhY3R1cmVyLCBzdHJpbmcsIHNpemVvZihzdHJpbmcpKTsKICAgICAgaWYgKHJl dCA+IDApIHsKICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZW9mKGRlc2NyaXB0aW9u KSwgIiglMDRYKSIsCiAgICAgICAgICAgICAgICAgZGV2LT5kZXNjcmlwdG9yLmlkVmVuZG9yKTsK ICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbitzdHJsZW4oZGVzY3JpcHRpb24pLCBzaXplb2Yo ZGVzY3JpcHRpb24pLXN0cmxlbihkZXNjcmlwdGlvbiksICIlcyB+ICIsIHN0cmluZyk7CiAgICAg IH0gZWxzZSB7CiAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemVvZihkZXNjcmlwdGlv biksICIlMDRYIC0gIiwKICAgICAgICAgICAgICAgICBkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3Ip OwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZW9m KGRlc2NyaXB0aW9uKSwgIiUwNFggLSAiLAogICAgICAgICAgICAgICBkZXYtPmRlc2NyaXB0b3Iu aWRWZW5kb3IpOwogICAgfQoKICAgIGlmIChkZXYtPmRlc2NyaXB0b3IuaVByb2R1Y3QpIHsKICAg ICAgcmV0ID0gdXNiX2dldF9zdHJpbmdfc2ltcGxlKHVkZXYsIGRldi0+ZGVzY3JpcHRvci5pUHJv ZHVjdCwgc3RyaW5nLCBzaXplb2Yoc3RyaW5nKSk7CiAgICAgIGlmIChyZXQgPiAwKSB7CiAgICAg ICAgc25wcmludGYoZGVzY3JpcHRpb24gKyBzdHJsZW4oZGVzY3JpcHRpb24pLCBzaXplb2YoZGVz Y3JpcHRpb24pIC0KICAgICAgICAgICAgICAgICBzdHJsZW4oZGVzY3JpcHRpb24pLCAiKCUwNFgp IiwgZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7CiAgICAgICAgc25wcmludGYoZGVzY3JpcHRp b24gKyBzdHJsZW4oZGVzY3JpcHRpb24pLCBzaXplb2YoZGVzY3JpcHRpb24pIC0KICAgICAgICAg ICAgICAgICBzdHJsZW4oZGVzY3JpcHRpb24pLCAiJXMiLCBzdHJpbmcpOwogICAgICB9IGVsc2UK ICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiArIHN0cmxlbihkZXNjcmlwdGlvbiksIHNpemVv ZihkZXNjcmlwdGlvbikgLQogICAgICAgICAgICAgICAgIHN0cmxlbihkZXNjcmlwdGlvbiksICIl MDRYIiwgZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7CiAgICB9IGVsc2UKICAgICAgc25wcmlu dGYoZGVzY3JpcHRpb24gKyBzdHJsZW4oZGVzY3JpcHRpb24pLCBzaXplb2YoZGVzY3JpcHRpb24p IC0KICAgICAgICAgICAgICAgc3RybGVuKGRlc2NyaXB0aW9uKSwgIiUwNFgiLCBkZXYtPmRlc2Ny aXB0b3IuaWRQcm9kdWN0KTsKCiAgfSBlbHNlCiAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6 ZW9mKGRlc2NyaXB0aW9uKSwgIiUwNFggLSAlMDRYIiwKICAgICAgICAgICAgIGRldi0+ZGVzY3Jp cHRvci5pZFZlbmRvciwgZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7CgogIHByaW50ZigiJS4q c0RldiAjJWQ6ICVzXG4iLCBsZXZlbCAqIDIsICIgICAgICAgICAgICAgICAgICAgICIsIGRldi0+ ZGV2bnVtLAogICAgICAgICBkZXNjcmlwdGlvbik7CgogIGlmICh1ZGV2ICYmIHZlcmJvc2UpIHsK ICAgIGlmIChkZXYtPmRlc2NyaXB0b3IuaVNlcmlhbE51bWJlcikgewogICAgICByZXQgPSB1c2Jf Z2V0X3N0cmluZ19zaW1wbGUodWRldiwgZGV2LT5kZXNjcmlwdG9yLmlTZXJpYWxOdW1iZXIsIHN0 cmluZywgc2l6ZW9mKHN0cmluZykpOwogICAgICBpZiAocmV0ID4gMCkKICAgICAgICBwcmludGYo IiUuKnMgIC0gU2VyaWFsIE51bWJlcjogJXNcbiIsIGxldmVsICogMiwKICAgICAgICAgICAgICAg IiAgICAgICAgICAgICAgICAgICAgIiwgc3RyaW5nKTsKICAgIH0KICB9CgogIGlmICh1ZGV2KQog ICAgdXNiX2Nsb3NlKHVkZXYpOwoKICBpZiAodmVyYm9zZSkgewogICAgaWYgKCFkZXYtPmNvbmZp ZykgewogICAgICBwcmludGYoIiAgQ291bGRuJ3QgcmV0cmlldmUgZGVzY3JpcHRvcnNcbiIpOwog ICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgZGV2LT5kZXNjcmlwdG9y LmJOdW1Db25maWd1cmF0aW9uczsgaSsrKQogICAgICBwcmludF9jb25maWd1cmF0aW9uKCZkZXYt PmNvbmZpZ1tpXSk7CiAgfSBlbHNlIHsKICAgIGZvciAoaSA9IDA7IGkgPCBkZXYtPm51bV9jaGls ZHJlbjsgaSsrKSB7CiAgICAgIHByaW50X2RldmljZShkZXYtPmNoaWxkcmVuW2ldLCBsZXZlbCAr IDEpOwoJaWYoZGV2LT5jaGlsZHJlbltpXS0+ZGVzY3JpcHRvci5pZFZlbmRvciA9PSBVU0JfTU9V U0VfVkVORE9SICYmCgkgICBkZXYtPmNoaWxkcmVuW2ldLT5kZXNjcmlwdG9yLmlkUHJvZHVjdCA9 PSBVU0JfTU9VU0VfUFJPRFVDVCkgewoJICBmb3VuZF91c2JfbW91c2UoZGV2LT5jaGlsZHJlbltp XSk7Cgl9CiAgICB9CiAgfQoKICByZXR1cm4gMDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKewogIHN0cnVjdCB1c2JfYnVzICpidXM7CiAgaW50IGJ1c19jaGFuZ2VzID0gMDsK ICBpbnQgZGV2X2NoYW5nZXMgPSAwOwogIGludCBpOwoKICBpZiAoYXJnYyA+IDEgJiYgIXN0cmNt cChhcmd2WzFdLCAiLXYiKSkKICAgIHZlcmJvc2UgPSAxOwoKICB1c2JfaW5pdCgpOwoKI2lmIDEK ICBidXNfY2hhbmdlcyA9IHVzYl9maW5kX2J1c3NlcygpOwogIGlmKHZlcmJvc2UpIHByaW50Zigi QnVzIGNoYW5nZXM6ICVkXG4iLCBidXNfY2hhbmdlcyk7CiAgZGV2X2NoYW5nZXMgPSB1c2JfZmlu ZF9kZXZpY2VzKCk7CiAgaWYodmVyYm9zZSkgcHJpbnRmKCJEZXYgY2hhbmdlczogJWRcbiIsIGRl dl9jaGFuZ2VzKTsKI2VuZGlmCgoKICBmb3IgKGJ1cyA9IHVzYl9idXNzZXM7IGJ1czsgYnVzID0g YnVzLT5uZXh0KSB7CiAgICBzdHJ1Y3QgdXNiX2RldmljZSAqZGV2OwogICAgZm9yIChkZXYgPSBi dXMtPmRldmljZXM7IGRldjsgZGV2ID0gZGV2LT5uZXh0KSB7CiAgICAgIHByaW50X2RldmljZShk ZXYsIDApOwogICAgICBpZihkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3IgPT0gVVNCX01PVVNFX1ZF TkRPUiAmJgogICAgICAgICBkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0ID09IFVTQl9NT1VTRV9Q Uk9EVUNUKSB7CiAgICAgICAgZm91bmRfdXNiX21vdXNlKGRldik7CiAgICAgIH0KICAgIH0KICB9 CgogIGZvcihpID0gMDsgaSA8IG1pY2VGb3VuZCAmJiBpIDwgMTsgaSsrKSB7CiAgICBkb191c2Jt b3VzZSh1c2JfbW91c2VbaV0pOwogIH0KICByZXR1cm4gMDsKfQo= ------=_Part_23107_16400708.1206731230858 Content-Type: text/x-makefile; name=Makefile Content-Transfer-Encoding: base64 X-Attachment-Id: file4 Content-Disposition: attachment; filename=Makefile YWxsOiB0ZXN0bGlidXNiIHNreXBlcGhvbmUgaWZ0ZXN0CgojIHRoaXMgaXMgZm9yIGxvZ2l0ZWNo IGlGZWVsIG1vdXNlCnVzYmlkPTA0YjQ6MDMwMgojIHRoaXMgaXMgZm9yIGN5cHJlc3MgbW91c2UK I3VzYmlkPTA1ZmU6MDAxMQoKc2t5cGVwaG9uZTogc2t5cGVwaG9uZS5jCgljYyAtbHVzYiAtbGhp ZCAtbHB0aHJlYWQgLW8gJEAgJDwKCmlmdGVzdDogaWZ0ZXN0LmMKCWNjICQ8IC1vICRACiAgICAg ICAgCnRlc3RsaWJ1c2I6IHRlc3RsaWJ1c2IuYwoJY2MgLWx1c2IgLW8gJEAgJDwKCQp0ZXN0cmF3 aGlkOiB0ZXN0cmF3aGlkLmMKCWNjIC1vICRAICQ8CgpkZXRhY2g6CglsaWJoaWQtZGV0YWNoLWRl dmljZSAkKHVzYmlkKQoKaW5mbzoKCWxzdXNiIC12dnYgLWQgJCh1c2JpZCkKCnRlc3R1aTogaWZl ZWwgaWZ0ZXN0IGRldGFjaAoJLi9pZmVlbCAtZCAkKHVzYmlkKSAmCglzbGVlcCAxCgkuL2lmdGVz dCAvZGV2L2lucHV0L2V2ZW50NAoJc2xlZXAgMQoJa2lsbGFsbCBpZmVlbAoKdGVzdHVzYjogdGVz dGxpYnVzYgoJLi90ZXN0bGlidXNiIC12CgpjbGVhbjoKCXJtIC1mIERFQURKT0UgKn4KCXJtIC1m IHNreXBlcGhvbmUubyBza3lwZXBob25lIGlmdGVzdCBpZnRlc3QubyB0ZXN0bGlidXNiCg== ------=_Part_23107_16400708.1206731230858 Content-Type: text/plain; name=usbid.h Content-Transfer-Encoding: base64 X-Attachment-Id: file5 Content-Disposition: attachment; filename=usbid.h LyogU2t5cGVAUGhvbmUgRVgtQiAqLwojZGVmaW5lIFVTQl9NT1VTRV9WRU5ET1IgICAweDA0YjQK I2RlZmluZSBVU0JfTU9VU0VfUFJPRFVDVCAgMHgwMzAyCg== ------=_Part_23107_16400708.1206731230858--