From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6877 Path: news.gmane.org!not-for-mail From: =?UTF-8?B?0KDRi9GB0Yw=?= Newsgroups: gmane.linux.lib.musl.general Subject: Re: musl and android Date: Thu, 22 Jan 2015 09:37:52 +0700 Message-ID: <20150122093752.671ec2f0@sibserver.ru> References: <20150115161322.4ee903b7@sibserver.ru> <20150118133237.40beda09@sibserver.ru> <20150118064440.GA4574@brightrain.aerifal.cx> <20150118150119.1a80a4ba@sibserver.ru> <20150118164010.GC4574@brightrain.aerifal.cx> <20150121173403.75ef5a15@sibserver.ru> <20150121183637.GK4574@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/NbmCMH3lUlVKgkPGDrT=LBU" X-Trace: ger.gmane.org 1421893917 21982 80.91.229.3 (22 Jan 2015 02:31:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 22 Jan 2015 02:31:57 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6890-gllmg-musl=m.gmane.org@lists.openwall.com Thu Jan 22 03:31:52 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1YE7Yi-0007Ro-NH for gllmg-musl@m.gmane.org; Thu, 22 Jan 2015 03:31:48 +0100 Original-Received: (qmail 3638 invoked by uid 550); 22 Jan 2015 02:31:47 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 3630 invoked from network); 22 Jan 2015 02:31:46 -0000 X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NO_RECEIVED, NO_RELAYS autolearn=ham autolearn_force=no version=3.4.0 In-Reply-To: <20150121183637.GK4574@brightrain.aerifal.cx> X-Mailer: claws-mail Xref: news.gmane.org gmane.linux.lib.musl.general:6877 Archived-At: --MP_/NbmCMH3lUlVKgkPGDrT=LBU Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =D0=92 Wed, 21 Jan 2015 13:36:37 -0500 Rich Felker =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > It would be very much appreciated to send patches as attachments > rather than links. There's no way to have a well-documented ongoing > discussion of the patch if it's not in a permanent place for review, > and attached to the email/archives is the best way to achieve that. >=20 > Rich Sorry. Now patch is attached (I think it is more sane now to include it here) --MP_/NbmCMH3lUlVKgkPGDrT=LBU Content-Type: application/octet-stream; name=musl-1.1.4_android.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=musl-1.1.4_android.patch LS0tIC9kZXYvbnVsbAorKysgbXVzbC0xLjEuNC9pbmNsdWRlL2FuZHJvaWQvYXR6LmgKQEAgLTAs MCArMSw3IEBACisjZGVmaW5lIEFfVFpfSURFWEZJTEUgIi9zeXN0ZW0vdXNyL3NoYXJlL3pvbmVp bmZvL3pvbmVpbmZvLmlkeCIKKyNkZWZpbmUgQV9UWl9aT05FRklMRSAiL3N5c3RlbS91c3Ivc2hh cmUvem9uZWluZm8vem9uZWluZm8uZGF0IgorI2RlZmluZSBBX1RaX05BTUVMRU4gNDAKKyNkZWZp bmUgQV9UWl9JTlRMRU4gNAorCitpbnQgYW5kcm9pZF9maW5kX3R6KGNvbnN0IGNoYXIgKnR6bmFt ZSwgb2ZmX3QgKm9mZnMsIHNpemVfdCAqbGVuKTsKK2ludCBhbmRyb2lkX2dldF90eih1bnNpZ25l ZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsLCBvZmZfdCBvZmZzLCBzaXplX3QgbGVuKTsKLS0tIC9k ZXYvbnVsbAorKysgbXVzbC0xLjEuNC9pbmNsdWRlL2FuZHJvaWQvaWRtYXAuaApAQCAtMCwwICsx LDcgQEAKKyNkZWZpbmUgQV9MTlNJWkUgMjU2CisKK2NoYXIgKmFuZHJvaWRfZ2V0cGFzc3dkZGIo c2l6ZV90ICpzeik7CitjaGFyICphbmRyb2lkX2dldGdyb3VwZGIoc2l6ZV90ICpzeik7CitjaGFy ICphbmRyb2lkX21rcGFzc3dkKGNvbnN0IGNoYXIgKm5hbWUsIHVpZF90IHVpZCk7CitjaGFyICph bmRyb2lkX21rZ3JvdXAoY29uc3QgY2hhciAqbmFtZSwgZ2lkX3QgZ2lkKTsKK2ludCBhbmRyb2lk X2lzYXBwdXNyKGNvbnN0IGNoYXIgKm5hbWUpOwotLS0gL2Rldi9udWxsCisrKyBtdXNsLTEuMS40 L2luY2x1ZGUvYW5kcm9pZC9pc3RvbnVtLmgKQEAgLTAsMCArMSw1IEBACitpbnQgX19pc3RvbnVt KGNvbnN0IGNoYXIgKnMsIGxvbmcgaW50ICpyZXMpOworaW50IF9faXN0b251bV9pKGNvbnN0IGNo YXIgKnMsIGludCAqcmVzKTsKK2ludCBfX2lzdG9udW1fc3ooY29uc3QgY2hhciAqcywgc2l6ZV90 ICpyZXMpOworaW50IF9faXN0b251bV91aWQoY29uc3QgY2hhciAqcywgdWlkX3QgKnJlcyk7Citp bnQgX19pc3RvbnVtX2dpZChjb25zdCBjaGFyICpzLCBnaWRfdCAqcmVzKTsKLS0tIC9kZXYvbnVs bAorKysgbXVzbC0xLjEuNC9pbmNsdWRlL2FuZHJvaWQvcHJvcGVydHkuaApAQCAtMCwwICsxLDEw IEBACitleHRlcm4gaW50IF9fcHJvcF9mZDsKK2V4dGVybiBzaXplX3QgX19wcm9wX3NpemU7Citl eHRlcm4gdm9pZCAqX19wcm9wX21hcDsKKworI2RlZmluZSBQUk9QX05BTUVMRU4gMzIKKyNkZWZp bmUgUFJPUF9WQUxVRUxFTiA5MgorI2RlZmluZSBQUk9QX1NFUklBTExFTiA0CisKK2ludCBhbmRy b2lkX3Byb3BlcnR5X2dldChjb25zdCBjaGFyICpuYW1lLCBjaGFyICp2YWwpOworaW50IGFuZHJv aWRfcHJvcGVydHlfc2V0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbCk7Ci0tLSAv ZGV2L251bGwKKysrIG11c2wtMS4xLjQvaW5jbHVkZS9hbmRyb2lkL3ZlcnNpb24uaApAQCAtMCww ICsxIEBACitpbnQgYW5kcm9pZF9nZXRfdmVyc2lvbihpbnQgKm1haiwgaW50ICptaW4sIGludCAq c3ViLCBpbnQgKnJzdmQpOwotLS0gbXVzbC0xLjEuNC5vL2luY2x1ZGUvbW50ZW50LmgKKysrIG11 c2wtMS4xLjQvaW5jbHVkZS9tbnRlbnQuaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX19ORUVE X0ZJTEUKICNpbmNsdWRlIDxiaXRzL2FsbHR5cGVzLmg+CiAKLSNkZWZpbmUgTU9VTlRFRCAiL2V0 Yy9tdGFiIgorI2RlZmluZSBNT1VOVEVEICIvcHJvYy9tb3VudHMiCiAKICNkZWZpbmUgTU5UVFlQ RV9JR05PUkUJImlnbm9yZSIKICNkZWZpbmUgTU5UVFlQRV9ORlMJIm5mcyIKLS0tIG11c2wtMS4x LjQuby9pbmNsdWRlL3BhdGhzLmgKKysrIG11c2wtMS4xLjQvaW5jbHVkZS9wYXRocy5oCkBAIC0x LDMxICsxLDMxIEBACiAjaWZuZGVmIF9QQVRIU19ICiAjZGVmaW5lIF9QQVRIU19ICiAKLSNkZWZp bmUJX1BBVEhfREVGUEFUSCAiL3Vzci9sb2NhbC9iaW46L2JpbjovdXNyL2JpbiIKLSNkZWZpbmUJ X1BBVEhfU1REUEFUSCAiL2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4iCisjZGVmaW5lCV9Q QVRIX0RFRlBBVEggIi9zeXN0ZW0vYmluOi9zeXN0ZW0veGJpbjovdmVuZG9yL2JpbiIKKyNkZWZp bmUJX1BBVEhfU1REUEFUSCAiL3N5c3RlbS9iaW46L3N5c3RlbS94YmluIgogCi0jZGVmaW5lCV9Q QVRIX0JTSEVMTAkiL2Jpbi9zaCIKKyNkZWZpbmUJX1BBVEhfQlNIRUxMCSIvc3lzdGVtL2Jpbi9z aCIKICNkZWZpbmUJX1BBVEhfQ09OU09MRQkiL2Rldi9jb25zb2xlIgogI2RlZmluZQlfUEFUSF9E RVZOVUxMCSIvZGV2L251bGwiCiAjZGVmaW5lCV9QQVRIX0tMT0cJIi9wcm9jL2ttc2ciCi0jZGVm aW5lCV9QQVRIX0xBU1RMT0cJIi92YXIvbG9nL2xhc3Rsb2ciCi0jZGVmaW5lCV9QQVRIX01BSUxE SVIJIi92YXIvbWFpbCIKLSNkZWZpbmUJX1BBVEhfTUFOCSIvdXNyL3NoYXJlL21hbiIKKyNkZWZp bmUJX1BBVEhfTEFTVExPRwkiL2RhdGEvbWlzYy9sYXN0bG9nIgorI2RlZmluZQlfUEFUSF9NQUlM RElSCSIvZGF0YS9taXNjL21haWwiCisjZGVmaW5lCV9QQVRIX01BTgkiL3N5c3RlbS9zaGFyZS9t YW4iCiAjZGVmaW5lCV9QQVRIX01OVFRBQgkiL2V0Yy9mc3RhYiIKLSNkZWZpbmUJX1BBVEhfTU9V TlRFRAkiL2V0Yy9tdGFiIgorI2RlZmluZQlfUEFUSF9NT1VOVEVECSIvcHJvYy9tb3VudHMiCiAj ZGVmaW5lCV9QQVRIX05PTE9HSU4JIi9ldGMvbm9sb2dpbiIKLSNkZWZpbmUJX1BBVEhfU0VORE1B SUwJIi91c3Ivc2Jpbi9zZW5kbWFpbCIKLSNkZWZpbmUJX1BBVEhfU0hBRE9XCSIvZXRjL3NoYWRv dyIKLSNkZWZpbmUJX1BBVEhfU0hFTExTCSIvZXRjL3NoZWxscyIKKyNkZWZpbmUJX1BBVEhfU0VO RE1BSUwJIi9zeXN0ZW0veGJpbi9zZW5kbWFpbCIKKyNkZWZpbmUJX1BBVEhfU0hBRE9XCSIvc3lz dGVtL2V0Yy9zaGFkb3ciCisjZGVmaW5lCV9QQVRIX1NIRUxMUwkiL3N5c3RlbS9ldGMvc2hlbGxz IgogI2RlZmluZQlfUEFUSF9UVFkJIi9kZXYvdHR5IgogI2RlZmluZSBfUEFUSF9VVE1QCSIvZGV2 L251bGwvdXRtcCIKLSNkZWZpbmUJX1BBVEhfVkkJIi91c3IvYmluL3ZpIgorI2RlZmluZQlfUEFU SF9WSQkiL3N5c3RlbS94YmluL3ZpIgogI2RlZmluZSBfUEFUSF9XVE1QCSIvZGV2L251bGwvd3Rt cCIKIAogI2RlZmluZQlfUEFUSF9ERVYJIi9kZXYvIgotI2RlZmluZQlfUEFUSF9UTVAJIi90bXAv IgotI2RlZmluZQlfUEFUSF9WQVJEQgkiL3Zhci9saWIvbWlzYy8iCi0jZGVmaW5lCV9QQVRIX1ZB UlJVTgkiL3Zhci9ydW4vIgotI2RlZmluZQlfUEFUSF9WQVJUTVAJIi92YXIvdG1wLyIKKyNkZWZp bmUJX1BBVEhfVE1QCSIvZGF0YS90bXAvIgorI2RlZmluZQlfUEFUSF9WQVJEQgkiL2RhdGEvbWlz Yy8iCisjZGVmaW5lCV9QQVRIX1ZBUlJVTgkiL2RhdGEvcnVuLyIKKyNkZWZpbmUJX1BBVEhfVkFS VE1QCSIvZGF0YS90bXAvIgogCiAjZW5kaWYKLS0tIG11c2wtMS4xLjQuby9pbmNsdWRlL3Jlc29s di5oCisrKyBtdXNsLTEuMS40L2luY2x1ZGUvcmVzb2x2LmgKQEAgLTY0LDcgKzY0LDcgQEAKICNk ZWZpbmUJX19SRVMJMTk5OTEwMDYKIAogI2lmbmRlZiBfUEFUSF9SRVNDT05GCi0jZGVmaW5lIF9Q QVRIX1JFU0NPTkYgICAgICAgICIvZXRjL3Jlc29sdi5jb25mIgorI2RlZmluZSBfUEFUSF9SRVND T05GICAgICAgICAiL3N5c3RlbS9ldGMvcmVzb2x2LmNvbmYiCiAjZW5kaWYKIAogc3RydWN0IHJl c19zeW0gewotLS0gbXVzbC0xLjEuNC5vL2luY2x1ZGUvc3RkaW8uaAorKysgbXVzbC0xLjEuNC9p bmNsdWRlL3N0ZGlvLmgKQEAgLTE1NCw3ICsxNTQsNyBAQAogCiAjaWYgZGVmaW5lZChfWE9QRU5f U09VUkNFKSB8fCBkZWZpbmVkKF9HTlVfU09VUkNFKSBcCiAgfHwgZGVmaW5lZChfQlNEX1NPVVJD RSkKLSNkZWZpbmUgUF90bXBkaXIgIi90bXAiCisjZGVmaW5lIFBfdG1wZGlyICIvZGF0YS90bXAi CiBjaGFyICp0ZW1wbmFtKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICNlbmRpZgogCi0t LSAvZGV2L251bGwKKysrIG11c2wtMS4xLjQvc3JjL2FuZHJvaWQvYXR6LmMKQEAgLTAsMCArMSw3 MCBAQAorI2RlZmluZSBfR05VX1NPVVJDRQorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUg PHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgor I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxm Y250bC5oPgorI2luY2x1ZGUgPGFuZHJvaWQvYXR6Lmg+CisjaW5jbHVkZSAic3lzY2FsbC5oIgor CitzdGF0aWMgaW50IF9fdG9pbnQodW5zaWduZWQgY2hhciAqcykKK3sKKwlyZXR1cm4gKHNbMF0g PDwgMjQpIHwgKHNbMV0gPDwgMTYpIHwgKHNbMl0gPDwgOCkgfCBzWzNdOworfQorCitpbnQgYW5k cm9pZF9maW5kX3R6KGNvbnN0IGNoYXIgKnR6bmFtZSwgb2ZmX3QgKm9mZnMsIHNpemVfdCAqbGVu KQoreworCXNpemVfdCBubDsKKwlpbnQgZmQgPSAtMTsKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwl1bnNp Z25lZCBjaGFyICptYXAgPSBNQVBfRkFJTEVELCAqcDsKKworCW5sID0gc3Rybmxlbih0em5hbWUs IEFfVFpfTkFNRUxFTik7CisKKwlmZCA9IG9wZW4oQV9UWl9JREVYRklMRSwgT19SRE9OTFl8T19D TE9FWEVDKTsKKwlpZiAoZmQgPT0gLTEpIGdvdG8gX2VycjsKKworCWlmICghZnN0YXQoZmQsICZz dCkpCisJCW1hcCA9IG1tYXAoMCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBm ZCwgMCk7CisKKwlpZiAobWFwID09IE1BUF9GQUlMRUQpIGdvdG8gX2VycjsKKwljbG9zZShmZCk7 CisKKwlwID0gbWVtbWVtKG1hcCwgc3Quc3Rfc2l6ZSwgdHpuYW1lLCBubCk7CisJaWYgKCFwKSBn b3RvIF9lcnI7CisKKwlpZiAob2ZmcykgKm9mZnMgPSAob2ZmX3QpX190b2ludChwICsgQV9UWl9O QU1FTEVOKTsKKwlpZiAobGVuKSAqbGVuID0gKHNpemVfdClfX3RvaW50KHAgKyBBX1RaX05BTUVM RU4gKyBBX1RaX0lOVExFTik7CisKKwltdW5tYXAobWFwLCBzdC5zdF9zaXplKTsKKworCXJldHVy biAxOworCitfZXJyOgorCWlmIChtYXAgJiYgc3Quc3Rfc2l6ZSkgbXVubWFwKG1hcCwgc3Quc3Rf c2l6ZSk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBhbmRyb2lkX2dldF90eih1bnNpZ25lZCBjaGFy ICpvdXQsIHNpemVfdCBvdXRsLCBvZmZfdCBvZmZzLCBzaXplX3QgbGVuKQoreworCWludCBmZCA9 IC0xOworCisJaWYgKGxlbiA+IG91dGwpIGdvdG8gX2VycjsKKworCWZkID0gb3BlbihBX1RaX1pP TkVGSUxFLCBPX1JET05MWXxPX0NMT0VYRUMpOworCWlmIChmZCA9PSAtMSkgZ290byBfZXJyOwor CisJaWYgKGxzZWVrKGZkLCBvZmZzLCBTRUVLX1NFVCkgPT0gLTEpIGdvdG8gX2VycjsKKworCWlm IChyZWFkKGZkLCBvdXQsIGxlbikgPCBsZW4pIGdvdG8gX2VycjsKKworCWNsb3NlKGZkKTsKKwor CXJldHVybiAxOworCitfZXJyOgorCWlmIChmZCAhPSAtMSkgY2xvc2UoZmQpOworCXJldHVybiAw OworfQotLS0gL2Rldi9udWxsCisrKyBtdXNsLTEuMS40L3NyYy9hbmRyb2lkL2lkbWFwLmMKQEAg LTAsMCArMSwyMzIgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgorI2luY2x1ZGUgPGFuZHJvaWQvaWRtYXAuaD4KKyNpbmNsdWRlIDxhbmRyb2lkL2lz dG9udW0uaD4KKyNpbmNsdWRlIDxhbmRyb2lkL3ZlcnNpb24uaD4KKworI2RlZmluZSBOT1VJRCAo KHVpZF90KS0xKQorI2RlZmluZSBOT0dJRCAoKGdpZF90KS0xKQorCisjZGVmaW5lIEFfRklSU1RB UFBJRCAxMDAwMAorI2RlZmluZSBBX1BFUlVTUkFQUFMgMTAwMDAwCisKKyNkZWZpbmUgTVVMVElT SUQoeCkgKCh4LUFfRklSU1RBUFBJRCkvQV9QRVJVU1JBUFBTKQorI2RlZmluZSBTSURNVUxUSSh4 KSAoKHgqQV9QRVJVU1JBUFBTKStBX0ZJUlNUQVBQSUQpCisjZGVmaW5lIE1VTFRJVUlEKHgpICh4 LVNJRE1VTFRJKE1VTFRJU0lEKHgpKSkKKworc3RhdGljIGNoYXIgX19hX3VzZXJzW10gPQorInJv b3Q6eDowOjA6YW5kcm9pZCByb290Oi9kYXRhL3Jvb3Q6L3N5c3RlbS9iaW4vc2hcbiIKKyJzeXN0 ZW06eDoxMDAwOjEwMDA6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJyYWRpbzp4 OjEwMDE6MTAwMTphbmRyb2lkIHVzZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorImJsdWV0b290aDp4 OjEwMDI6MTAwMjphbmRyb2lkIHVzZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorImdyYXBoaWNzOng6 MTAwMzoxMDAzOmFuZHJvaWQgdXNlcjovOi9zeXN0ZW0vYmluL3NoXG4iCisiaW5wdXQ6eDoxMDA0 OjEwMDQ6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJhdWRpbzp4OjEwMDU6MTAw NTphbmRyb2lkIHVzZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorImNhbWVyYTp4OjEwMDY6MTAwNjph bmRyb2lkIHVzZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorImxvZzp4OjEwMDc6MTAwNzphbmRyb2lk IHVzZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorImNvbXBhc3M6eDoxMDA4OjEwMDg6YW5kcm9pZCB1 c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJtb3VudDp4OjEwMDk6MTAwOTphbmRyb2lkIHVzZXI6 Lzovc3lzdGVtL2Jpbi9zaFxuIgorIndpZmk6eDoxMDEwOjEwMTA6YW5kcm9pZCB1c2VyOi86L3N5 c3RlbS9iaW4vc2hcbiIKKyJhZGI6eDoxMDExOjEwMTE6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9i aW4vc2hcbiIKKyJpbnN0YWxsOng6MTAxMjoxMDEyOmFuZHJvaWQgdXNlcjovOi9zeXN0ZW0vYmlu L3NoXG4iCisibWVkaWE6eDoxMDEzOjEwMTM6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hc biIKKyJkaGNwOng6MTAxNDoxMDE0OmFuZHJvaWQgdXNlcjovOi9zeXN0ZW0vYmluL3NoXG4iCisi c2RjYXJkX3J3Ong6MTAxNToxMDE1OmFuZHJvaWQgdXNlcjovOi9zeXN0ZW0vYmluL3NoXG4iCisi dnBuOng6MTAxNjoxMDE2OmFuZHJvaWQgdXNlcjovOi9zeXN0ZW0vYmluL3NoXG4iCisia2V5c3Rv cmU6eDoxMDE3OjEwMTc6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJ1c2I6eDox MDE4OjEwMTg6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJkcm06eDoxMDE5OjEw MTk6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJhdmFpbGFibGU6eDoxMDIwOjEw MjA6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJncHM6eDoxMDIxOjEwMjE6YW5k cm9pZCB1c2VyOi86L3N5c3RlbS9iaW4vc2hcbiIKKyJtZWRpYV9ydzp4OjEwMjM6MTAyMzphbmRy b2lkIHVzZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorIm10cDp4OjEwMjQ6MTAyNDphbmRyb2lkIHVz ZXI6Lzovc3lzdGVtL2Jpbi9zaFxuIgorIm5mYzp4OjEwMjc6MTAyNzphbmRyb2lkIHVzZXI6Lzov c3lzdGVtL2Jpbi9zaFxuIgorInNoZWxsOng6MjAwMDoyMDAwOmFuZHJvaWQgc2hlbGw6L2RhdGE6 L3N5c3RlbS9iaW4vc2hcbiIKKyJjYWNoZTp4OjIwMDE6MjAwMTphbmRyb2lkIHVzZXI6Lzovc3lz dGVtL2Jpbi9zaFxuIgorImRpYWc6eDoyMDAyOjIwMDI6YW5kcm9pZCB1c2VyOi86L3N5c3RlbS9i aW4vc2hcbiIKKyJtaXNjOng6OTk5ODo5OTk4OmFuZHJvaWQgdXNlcjovOi9zeXN0ZW0vYmluL3No XG4iCisibm9ib2R5Ong6OTk5OTo5OTk5OmFuZHJvaWQgbm9ib2R5Oi86L3N5c3RlbS9iaW4vc2hc biIKKzsKKworc3RhdGljIGNoYXIgX19hX2dyb3Vwc1tdID0KKyJyb290Ong6MDpcbiIKKyJzeXN0 ZW06eDoxMDAwOlxuIgorInJhZGlvOng6MTAwMTpcbiIKKyJibHVldG9vdGg6eDoxMDAyOlxuIgor ImdyYXBoaWNzOng6MTAwMzpcbiIKKyJpbnB1dDp4OjEwMDQ6XG4iCisiYXVkaW86eDoxMDA1Olxu IgorImNhbWVyYTp4OjEwMDY6XG4iCisibG9nOng6MTAwNzpcbiIKKyJjb21wYXNzOng6MTAwODpc biIKKyJtb3VudDp4OjEwMDk6XG4iCisid2lmaTp4OjEwMTA6XG4iCisiYWRiOng6MTAxMTpcbiIK KyJpbnN0YWxsOng6MTAxMjpcbiIKKyJtZWRpYTp4OjEwMTM6XG4iCisiZGhjcDp4OjEwMTQ6XG4i Cisic2RjYXJkX3J3Ong6MTAxNTpcbiIKKyJ2cG46eDoxMDE2OlxuIgorImtleXN0b3JlOng6MTAx NzpcbiIKKyJ1c2I6eDoxMDE4OlxuIgorImRybTp4OjEwMTk6XG4iCisiYXZhaWxhYmxlOng6MTAy MDpcbiIKKyJncHM6eDoxMDIxOlxuIgorIm1lZGlhX3J3Ong6MTAyMzpcbiIKKyJtdHA6eDoxMDI0 OlxuIgorImRybXJwYzp4OjEwMjY6XG4iCisibmZjOng6MTAyNzpcbiIKKyJzaGVsbDp4OjIwMDA6 XG4iCisiY2FjaGU6eDoyMDAxOlxuIgorImRpYWc6eDoyMDAyOlxuIgorIm5ldF9idF9hZG1pbjp4 OjMwMDE6XG4iCisibmV0X2J0Ong6MzAwMjpcbiIKKyJpbmV0Ong6MzAwMzpcbiIKKyJuZXRfcmF3 Ong6MzAwNDpcbiIKKyJuZXRfYWRtaW46eDozMDA1OlxuIgorIm5ldF9id19zdGF0czp4OjMwMDY6 XG4iCisibmV0X2J3X2FjY3Q6eDozMDA3OlxuIgorIm1pc2M6eDo5OTk4OlxuIgorIm5vYm9keTp4 Ojk5OTk6XG4iCis7CisKK3N0YXRpYyBjaGFyIGdlY29zW10gPSAiYW5kcm9pZCB2aXJ0dWFsIjsK Kworc3RhdGljIGludCBfX2lzc3VwZXIodm9pZCkKK3sKKwlyZXR1cm4gISEoZ2V0dWlkKCkgPT0g MCk7Cit9CisKK3N0YXRpYyBjaGFyICpfX3hnZXRlbnYoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlp ZiAoX19pc3N1cGVyKCkpIHJldHVybiBnZXRlbnYobmFtZSk7CisJZWxzZSByZXR1cm4gTlVMTDsK K30KKworc3RhdGljIGludCBfX2FfaXNfbXVsdGl1c2VyKHZvaWQpCit7CisJaW50IG1haiwgbWlu OworCisJaWYgKCFhbmRyb2lkX2dldF92ZXJzaW9uKCZtYWosICZtaW4sIE5VTEwsIE5VTEwpKSBy ZXR1cm4gMDsKKwlpZiAobWFqID49IDUpIHJldHVybiAxOworCWlmIChtYWogPT0gNCkgeworCQlp ZiAobWluID49IDEpIHJldHVybiAxOworCQllbHNlIHJldHVybiAwOworCX0KKwlpZiAobWFqIDw9 IDMpIHJldHVybiAwOworfQorCitjaGFyICphbmRyb2lkX2dldHBhc3N3ZGRiKHNpemVfdCAqc3op Cit7CisJKnN6ID0gc2l6ZW9mKF9fYV91c2Vycyk7CisJcmV0dXJuIF9fYV91c2VyczsKK30KKwor Y2hhciAqYW5kcm9pZF9nZXRncm91cGRiKHNpemVfdCAqc3opCit7CisJKnN6ID0gc2l6ZW9mKF9f YV9ncm91cHMpOworCXJldHVybiBfX2FfZ3JvdXBzOworfQorCitjaGFyICphbmRyb2lkX21rcGFz c3dkKGNvbnN0IGNoYXIgKm5hbWUsIHVpZF90IHVpZCkKK3sKKwlzdGF0aWMgY2hhciBwW0FfTE5T SVpFXTsKKwljaGFyICp1ZGlyID0gIi9kYXRhIjsKKwljaGFyICpzaCA9ICIvc3lzdGVtL2Jpbi9z aCI7CisJY2hhciAqcywgKmQ7CisKKwltZW1zZXQocCwgMCwgc2l6ZW9mKHApKTsKKworCXMgPSBf X3hnZXRlbnYoIl9BX1VTRVJESVIiKTsKKwlpZiAocykgdWRpciA9IHM7CisJcyA9IF9feGdldGVu digiX0FfU0hFTEwiKTsKKwlpZiAocykgc2ggPSBzOworCisJaWYgKG5hbWUpIHsKKwkJdWlkX3Qg YSwgYjsKKwkJaWYgKF9fYV9pc19tdWx0aXVzZXIoKSAmJiAqbmFtZSA9PSAndScgJiYgc3RyY2hy KG5hbWUsICdfJykpIHsKKwkJCXN0cm5jcHkocCwgbmFtZSwgQV9MTlNJWkUpOworCQkJcyA9IHAr MTsKKwkJCWQgPSBzdHJzdHIocywgIl9hIik7CisJCQlpZiAoIWQpIHJldHVybiBOVUxMOworCQkJ KmQgPSAwOyBkICs9IDI7CisJCQlpZiAoIV9faXN0b251bV91aWQocywgJmEpKSByZXR1cm4gTlVM TDsKKwkJCWlmICghX19pc3RvbnVtX3VpZChkLCAmYikpIHJldHVybiBOVUxMOworCQkJdWlkID0g U0lETVVMVEkoYSkrYjsKKwkJfQorCQllbHNlIGlmICghc3RybmNtcChuYW1lLCAiYXBwXyIsIDQp KSB7CisJCQl1aWRfdCB5OworCQkJY29uc3QgY2hhciAqUzsKKworCQkJUyA9IG5hbWUrNDsKKwkJ CWlmICghX19pc3RvbnVtX3VpZChTLCAmeSkpIHJldHVybiBOVUxMOworCQkJdWlkID0geStBX0ZJ UlNUQVBQSUQ7CisJCX0KKwkJZWxzZSByZXR1cm4gTlVMTDsKKworCQlzbnByaW50ZihwLCBzaXpl b2YocCksICIlczp4OiV1OiV1OiVzOiVzOiVzIiwgbmFtZSwgdWlkLCB1aWQsIGdlY29zLCB1ZGly LCBzaCk7CisJfQorCWVsc2UgaWYgKHVpZCA+PSBBX0ZJUlNUQVBQSUQpIHsKKwkJaWYgKF9fYV9p c19tdWx0aXVzZXIoKSkKKwkJCXNucHJpbnRmKHAsIHNpemVvZihwKSwgInUldV9hJXU6eDoldTol dTolczolczolcyIsIE1VTFRJU0lEKHVpZCksIE1VTFRJVUlEKHVpZCksIHVpZCwgdWlkLCBnZWNv cywgdWRpciwgc2gpOworCQllbHNlCisJCQlzbnByaW50ZihwLCBzaXplb2YocCksICJhcHBfJXU6 eDoldToldTolczolczolcyIsIHVpZC1BX0ZJUlNUQVBQSUQsIHVpZCwgdWlkLCBnZWNvcywgdWRp ciwgc2gpOworCX0KKwllbHNlIHJldHVybiBOVUxMOworCisJcmV0dXJuIHA7Cit9CisKK2NoYXIg KmFuZHJvaWRfbWtncm91cChjb25zdCBjaGFyICpuYW1lLCBnaWRfdCBnaWQpCit7CisJc3RhdGlj IGNoYXIgZ1tBX0xOU0laRV07CisJY2hhciAqcywgKmQ7CisKKwltZW1zZXQoZywgMCwgc2l6ZW9m KGcpKTsKKworCWlmIChuYW1lKSB7CisJCWlmIChfX2FfaXNfbXVsdGl1c2VyKCkgJiYgKm5hbWUg PT0gJ3UnICYmIHN0cmNocihuYW1lLCAnXycpKSB7CisJCQlnaWRfdCBhLCBiOworCisJCQlzdHJu Y3B5KGcsIG5hbWUsIEFfTE5TSVpFKTsKKwkJCXMgPSBnKzE7CisJCQlkID0gc3Ryc3RyKHMsICJf YSIpOworCQkJaWYgKCFkKSByZXR1cm4gTlVMTDsKKwkJCSpkID0gMDsgZCArPSAyOworCQkJaWYg KCFfX2lzdG9udW1fZ2lkKHMsICZhKSkgcmV0dXJuIE5VTEw7CisJCQlpZiAoIV9faXN0b251bV9n aWQoZCwgJmIpKSByZXR1cm4gTlVMTDsKKwkJCWdpZCA9IFNJRE1VTFRJKGEpK2I7CisJCX0KKwkJ ZWxzZSBpZiAoIXN0cm5jbXAobmFtZSwgImFwcF8iLCA0KSkgeworCQkJZ2lkX3QgeTsKKwkJCWNv bnN0IGNoYXIgKlM7CisKKwkJCVMgPSBuYW1lKzQ7CisJCQlpZiAoIV9faXN0b251bV9naWQoUywg JnkpKSByZXR1cm4gTlVMTDsKKwkJCWVsc2UgZ2lkID0geStBX0ZJUlNUQVBQSUQ7CisJCX0KKwkJ ZWxzZSByZXR1cm4gTlVMTDsKKworCQlzbnByaW50ZihnLCBzaXplb2YoZyksICIlczp4OiV1OiIs IG5hbWUsIGdpZCk7CisJfQorCWVsc2UgaWYgKGdpZCA+PSBBX0ZJUlNUQVBQSUQpIHsKKwkJaWYg KF9fYV9pc19tdWx0aXVzZXIoKSkKKwkJCXNucHJpbnRmKGcsIHNpemVvZihnKSwgInUldV9hJXU6 eDoldToiLCBNVUxUSVNJRChnaWQpLCBNVUxUSVVJRChnaWQpLCBnaWQpOworCQllbHNlCisJCQlz bnByaW50ZihnLCBzaXplb2YoZyksICJhcHBfJXU6eDoldToiLCBnaWQtQV9GSVJTVEFQUElELCBn aWQpOworCX0KKwllbHNlIHJldHVybiBOVUxMOworCisJcmV0dXJuIGc7Cit9CisKK2ludCBhbmRy b2lkX2lzYXBwdXNyKGNvbnN0IGNoYXIgKm5hbWUpCit7CisJY2hhciAqcDsKKworCXAgPSBhbmRy b2lkX21rcGFzc3dkKG5hbWUsIDApOworCXJldHVybiAocCA9PSAwKTsKK30KLS0tIC9kZXYvbnVs bAorKysgbXVzbC0xLjEuNC9zcmMvYW5kcm9pZC9pc3RvbnVtLmMKQEAgLTAsMCArMSw0OCBAQAor I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFu ZHJvaWQvaXN0b251bS5oPgorCitpbnQgX19pc3RvbnVtKGNvbnN0IGNoYXIgKnMsIGxvbmcgaW50 ICpyZXMpCit7CisJY2hhciAqcDsKKwlpZiAoIXMgfHwgKnMgPT0gMCkgcmV0dXJuIDA7CisJaWYg KHJlcykgKnJlcyA9IHN0cnRvbChzLCAmcCwgMTApOworCWVsc2Ugc3RydG9sKHMsICZwLCAxMCk7 CisJcmV0dXJuICgqcCA9PSAwKTsKK30KKworaW50IF9faXN0b251bV9pKGNvbnN0IGNoYXIgKnMs IGludCAqcmVzKQoreworCWxvbmcgaW50IHggPSAwOworCWludCB5OworCXkgPSBfX2lzdG9udW0o cywgJngpOworCSpyZXMgPSAoaW50KXg7CisJcmV0dXJuIHk7Cit9CisKK2ludCBfX2lzdG9udW1f c3ooY29uc3QgY2hhciAqcywgc2l6ZV90ICpyZXMpCit7CisJbG9uZyBpbnQgeCA9IDA7CisJaW50 IHk7CisJeSA9IF9faXN0b251bShzLCAmeCk7CisJKnJlcyA9IChzaXplX3QpeDsKKwlyZXR1cm4g eTsKK30KKworaW50IF9faXN0b251bV91aWQoY29uc3QgY2hhciAqcywgdWlkX3QgKnJlcykKK3sK Kwlsb25nIGludCB4ID0gMDsKKwlpbnQgeTsKKwl5ID0gX19pc3RvbnVtKHMsICZ4KTsKKwkqcmVz ID0gKHVpZF90KXg7CisJcmV0dXJuIHk7Cit9CisKK2ludCBfX2lzdG9udW1fZ2lkKGNvbnN0IGNo YXIgKnMsIGdpZF90ICpyZXMpCit7CisJbG9uZyBpbnQgeCA9IDA7CisJaW50IHk7CisJeSA9IF9f aXN0b251bShzLCAmeCk7CisJKnJlcyA9IChnaWRfdCl4OworCXJldHVybiB5OworfQotLS0gL2Rl di9udWxsCisrKyBtdXNsLTEuMS40L3NyYy9hbmRyb2lkL3Byb3BlcnR5LmMKQEAgLTAsMCArMSw5 MiBAQAorI2RlZmluZSBfR05VX1NPVVJDRQorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUg PHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+ CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxhbmRyb2lkL2lzdG9udW0uaD4KKyNpbmNs dWRlIDxhbmRyb2lkL3Byb3BlcnR5Lmg+CisKK2ludCBfX3Byb3BfZmQgPSAtMTsKK3NpemVfdCBf X3Byb3Bfc2l6ZSA9IDA7Cit2b2lkICpfX3Byb3BfbWFwID0gTlVMTDsKKworc3RhdGljIGludCBf X2FuZHJvaWRfaW5pdF9wcm9wKHZvaWQpCit7CisJY2hhciBwcm9wY2ZnWzY0XTsKKwljaGFyICpz LCAqZDsKKworCWlmIChfX3Byb3BfbWFwKSByZXR1cm4gMTsKKworCXMgPSBnZXRlbnYoIkFORFJP SURfUFJPUEVSVFlfV09SS1NQQUNFIik7CisJaWYgKCFzKSByZXR1cm4gMDsKKwlzdHJuY3B5KHBy b3BjZmcsIHMsIHNpemVvZihwcm9wY2ZnKSk7IHMgPSBwcm9wY2ZnOworCisJZCA9IHN0cmNocihz LCAnLCcpOworCWlmICghZCkgcmV0dXJuIDA7CisJKmQgPSAwOyBkKys7CisKKwlpZiAoIV9faXN0 b251bV9pKHMsICZfX3Byb3BfZmQpKSByZXR1cm4gMDsKKwlpZiAoIV9faXN0b251bV9zeihkLCAm X19wcm9wX3NpemUpKSByZXR1cm4gMDsKKworCV9fcHJvcF9tYXAgPSBtbWFwKE5VTEwsIF9fcHJv cF9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIF9fcHJvcF9mZCwgMCk7CisKKwlpZiAoX19w cm9wX21hcCA9PSBNQVBfRkFJTEVEKSB7CisJCV9fcHJvcF9tYXAgPSBOVUxMOworCQlyZXR1cm4g MDsKKwl9CisKKwlyZXR1cm4gMTsKK30KKworI2lmIDAKK3N0YXRpYyB2b2lkIF9fYW5kcm9pZF9m aW5pX3Byb3Aodm9pZCkKK3sKKwltdW5tYXAoX19wcm9wX21hcCwgX19wcm9wX3NpemUpOworCV9f cHJvcF9tYXAgPSBOVUxMOyBfX3Byb3Bfc2l6ZSA9IDA7Cit9CisjZW5kaWYKKworaW50IGFuZHJv aWRfcHJvcGVydHlfZ2V0KGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKnZhbCkKK3sKKwljaGFyICpz LCAqZDsKKwlzaXplX3Qgbmw7CisKKwlpZiAoIV9fYW5kcm9pZF9pbml0X3Byb3AoKSkgcmV0dXJu IDA7CisKKwlubCA9IHN0cm5sZW4obmFtZSwgUFJPUF9OQU1FTEVOKTsKKwlzID0gbWVtbWVtKF9f cHJvcF9tYXAsIF9fcHJvcF9zaXplLCBuYW1lLCBubCk7CisKKwlpZiAoIXMpIHJldHVybiAwOwor CisJZCA9IHMrUFJPUF9OQU1FTEVOK1BST1BfU0VSSUFMTEVOOworCXN0cm5jcHkodmFsLCBkLCBQ Uk9QX1ZBTFVFTEVOKTsKKworCXJldHVybiAxOworfQorCisjaWYgMAoraW50IGFuZHJvaWRfcHJv cGVydHlfZ2V0b25jZShjb25zdCBjaGFyICpuYW1lLCBjaGFyICp2YWwpCit7CisJaW50IHI7CisK KwlyID0gYW5kcm9pZF9wcm9wZXJ0eV9nZXQobmFtZSwgdmFsKTsKKwlfX2FuZHJvaWRfZmluaV9w cm9wKCk7Cit9CisKK2NoYXIgKmFuZHJvaWRfZ2V0cHJvcChjb25zdCBjaGFyICpuYW1lKQorewor CXN0YXRpYyBjaGFyICpyOworCisJaWYgKCFyKSByID0gbWFsbG9jKFBST1BfVkFMVUVMRU4pOwor CWlmICghcikgcmV0dXJuIHI7CisJaWYgKCFhbmRyb2lkX3Byb3BlcnR5X2dldChuYW1lLCByKSkg cmV0dXJuIE5VTEw7CisJcmV0dXJuIHI7Cit9CisjZW5kaWYKKworaW50IGFuZHJvaWRfcHJvcGVy dHlfc2V0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbCkKK3sKKwkvKiBTb3JyeSwg dW5pbXBsZW1lbnRlZCAqLworCXJldHVybiAwOworfQotLS0gL2Rldi9udWxsCisrKyBtdXNsLTEu MS40L3NyYy9hbmRyb2lkL3ZlcnNpb24uYwpAQCAtMCwwICsxLDYyIEBACisjaW5jbHVkZSA8c3Rk bGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5j bHVkZSA8YW5kcm9pZC9pc3RvbnVtLmg+CisjaW5jbHVkZSA8YW5kcm9pZC9wcm9wZXJ0eS5oPgor CitpbnQgYW5kcm9pZF9nZXRfdmVyc2lvbihpbnQgKm1haiwgaW50ICptaW4sIGludCAqc3ViLCBp bnQgKnJzdmQpCit7CisJY2hhciB2ZXJzdHJbUFJPUF9WQUxVRUxFTl0gPSB7MH07CisJY2hhciAq cywgKmQsICp0OworCWludCB4OworCisJaWYgKCFhbmRyb2lkX3Byb3BlcnR5X2dldCgicm8uYnVp bGQudmVyc2lvbi5yZWxlYXNlIiwgdmVyc3RyKSkgZ290byBfZXJyOworCisJaWYgKG1haikgKm1h aiA9IDA7CisJaWYgKG1pbikgKm1pbiA9IDA7CisJaWYgKHN1YikgKnN1YiA9IDA7CisJaWYgKHJz dmQpICpyc3ZkID0gMDsKKworCXMgPSBkID0gdmVyc3RyOyB0ID0gTlVMTDsgeCA9IDA7CisJd2hp bGUgKChzID0gc3RydG9rX3IoZCwgIi4iLCAmdCkpKSB7CisJCWlmIChkKSBkID0gTlVMTDsKKwor CQlzd2l0Y2ggKHgpIHsKKwkJCWNhc2UgMDogaWYgKG1haikgaWYgKCFfX2lzdG9udW1faShzLCBt YWopKSBnb3RvIF9lcnI7IGJyZWFrOworCQkJY2FzZSAxOiBpZiAobWluKSBpZiAoIV9faXN0b251 bV9pKHMsIG1pbikpIGdvdG8gX2VycjsgYnJlYWs7CisJCQljYXNlIDI6IGlmIChzdWIpIGlmICgh X19pc3RvbnVtX2kocywgc3ViKSkgZ290byBfZXJyOyBicmVhazsKKwkJCWNhc2UgMzogaWYgKHJz dmQpIGlmICghX19pc3RvbnVtX2kocywgcnN2ZCkpIGdvdG8gX2VycjsgYnJlYWs7CisJCX0KKwor CQl4Kys7CisJfQorCisJcmV0dXJuIDE7CitfZXJyOglyZXR1cm4gMDsKK30KKworI2lmIDAKK2lu dCBhbmRyb2lkX2dldF9tYWpvcih2b2lkKQoreworCWludCByOworCisJaWYgKCFhbmRyb2lkX2dl dF92ZXJzaW9uKCZyLCBOVUxMLCBOVUxMLCBOVUxMKSkgcmV0dXJuIC0xOworCXJldHVybiByOwor fQorCitpbnQgYW5kcm9pZF9nZXRfbWlub3Iodm9pZCkKK3sKKwlpbnQgcjsKKworCWlmICghYW5k cm9pZF9nZXRfdmVyc2lvbihOVUxMLCAmciwgTlVMTCwgTlVMTCkpIHJldHVybiAtMTsKKwlyZXR1 cm4gcjsKK30KKworaW50IGFuZHJvaWRfZ2V0X3N1Ym1pbm9yKHZvaWQpCit7CisJaW50IHI7CisK KwlpZiAoIWFuZHJvaWRfZ2V0X3ZlcnNpb24oTlVMTCwgTlVMTCwgJnIsIE5VTEwpKSByZXR1cm4g LTE7CisJcmV0dXJuIHI7Cit9CisjZW5kaWYKLS0tIG11c2wtMS4xLjQuby9zcmMvY29uZi9jb25m c3RyLmMKKysrIG11c2wtMS4xLjQvc3JjL2NvbmYvY29uZnN0ci5jCkBAIC02LDcgKzYsNyBAQAog ewogCWNvbnN0IGNoYXIgKnMgPSAiIjsKIAlpZiAoIW5hbWUpIHsKLQkJcyA9ICIvYmluOi91c3Iv YmluIjsKKwkJcyA9ICIvc3lzdGVtL2Jpbjovc3lzdGVtL3hiaW4iOwogCX0gZWxzZSBpZiAoKG5h bWUmfjRVKSE9MSAmJiBuYW1lLV9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9DRkxBR1M+MzFVKSB7 CiAJCWVycm5vID0gRUlOVkFMOwogCQlyZXR1cm4gMDsKLS0tIG11c2wtMS4xLjQuby9zcmMvbGRz by9keW5saW5rLmMKKysrIG11c2wtMS4xLjQvc3JjL2xkc28vZHlubGluay5jCkBAIC03NTEsNyAr NzUxLDcgQEAKIAkJCQkJc3lzX3BhdGggPSAiIjsKIAkJCQl9CiAJCQl9Ci0JCQlpZiAoIXN5c19w YXRoKSBzeXNfcGF0aCA9ICIvbGliOi91c3IvbG9jYWwvbGliOi91c3IvbGliIjsKKwkJCWlmICgh c3lzX3BhdGgpIHN5c19wYXRoID0gIi9zeXN0ZW0vbGliOi9zeXN0ZW0veGxpYjovdmVuZG9yL2xp YiI7CiAJCQlmZCA9IHBhdGhfb3BlbihuYW1lLCBzeXNfcGF0aCwgYnVmLCBzaXplb2YgYnVmKTsK IAkJfQogCQlwYXRobmFtZSA9IGJ1ZjsKLS0tIG11c2wtMS4xLjQuby9zcmMvbGVnYWN5L2dldHVz ZXJzaGVsbC5jCisrKyBtdXNsLTEuMS40L3NyYy9sZWdhY3kvZ2V0dXNlcnNoZWxsLmMKQEAgLTIs NyArMiw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAotc3Rh dGljIGNvbnN0IGNoYXIgZGVmc2hlbGxzW10gPSAiL2Jpbi9zaFxuL2Jpbi9jc2hcbiI7CitzdGF0 aWMgY29uc3QgY2hhciBkZWZzaGVsbHNbXSA9ICIvc3lzdGVtL2Jpbi9zaFxuL3N5c3RlbS9iaW4v Y3NoXG4iOwogCiBzdGF0aWMgY2hhciAqbGluZTsKIHN0YXRpYyBzaXplX3QgbGluZXNpemU7CkBA IC0xNiw3ICsxNiw3IEBACiAKIHZvaWQgc2V0dXNlcnNoZWxsKHZvaWQpCiB7Ci0JaWYgKCFmKSBm ID0gZm9wZW4oIi9ldGMvc2hlbGxzIiwgInJiZSIpOworCWlmICghZikgZiA9IGZvcGVuKCIvc3lz dGVtL2V0Yy9zaGVsbHMiLCAicmJlIik7CiAJaWYgKCFmKSBmID0gZm1lbW9wZW4oKHZvaWQgKilk ZWZzaGVsbHMsIHNpemVvZiBkZWZzaGVsbHMgLSAxLCAicmIiKTsKIH0KIAotLS0gbXVzbC0xLjEu NC5vL3NyYy9taXNjL2dldGdyb3VwbGlzdC5jCisrKyBtdXNsLTEuMS40L3NyYy9taXNjL2dldGdy b3VwbGlzdC5jCkBAIC0xLDggKzEsMTMgQEAKICNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxwd2QuaD4KICNpbmNsdWRlIDxncnAuaD4KICNpbmNs dWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxhbmRyb2lkL2lk bWFwLmg+CiAKK3N0cnVjdCBncm91cCAqX19nZXRncmVudF9hbmRyb2lkKCk7CisKIGludCBnZXRn cm91cGxpc3QoY29uc3QgY2hhciAqdXNlciwgZ2lkX3QgZ2lkLCBnaWRfdCAqZ3JvdXBzLCBpbnQg Km5ncm91cHMpCiB7CiAJc2l6ZV90IG4sIGk7CkBAIC0xMiw2ICsxNyw4IEBACiAJKmdyb3Vwcysr ID0gZ2lkOwogCSpuZ3JvdXBzID0gMTsKIAorCWlmIChhbmRyb2lkX2lzYXBwdXNyKHVzZXIpKSBn b3RvIF9lbmQ7CisKIAlzZXRncmVudCgpOwogCXdoaWxlICgoZ3IgPSBnZXRncmVudCgpKSAmJiAq bmdyb3VwcyA8IElOVF9NQVgpIHsKIAkJZm9yIChpPTA7IGdyLT5ncl9tZW1baV0gJiYgc3RyY21w KHVzZXIsIGdyLT5ncl9tZW1baV0pOyBpKyspOwpAQCAtMjAsNSArMjcsMTMgQEAKIAl9CiAJZW5k Z3JlbnQoKTsKIAotCXJldHVybiAqbmdyb3VwcyA+IG4gPyAtMSA6ICpuZ3JvdXBzOworCXNldGdy ZW50KCk7CisJd2hpbGUgKChnciA9IF9fZ2V0Z3JlbnRfYW5kcm9pZCgpKSAmJiAqbmdyb3VwcyA8 IElOVF9NQVgpIHsKKwkJZm9yIChpPTA7IGdyLT5ncl9tZW1baV0gJiYgc3RyY21wKHVzZXIsIGdy LT5ncl9tZW1baV0pOyBpKyspOworCQlpZiAoIWdyLT5ncl9tZW1baV0pIGNvbnRpbnVlOworCQlp ZiAoKysqbmdyb3VwcyA8PSBuKSAqZ3JvdXBzKysgPSBnci0+Z3JfZ2lkOworCX0KKwllbmRncmVu dCgpOworCitfZW5kOglyZXR1cm4gKm5ncm91cHMgPiBuID8gLTEgOiAqbmdyb3VwczsKIH0KLS0t IG11c2wtMS4xLjQuby9zcmMvbWlzYy93b3JkZXhwLmMKKysrIG11c2wtMS4xLjQvc3JjL21pc2Mv d29yZGV4cC5jCkBAIC0xMTMsNyArMTEzLDcgQEAKIAlpZiAoIXBpZCkgewogCQlpZiAocFsxXSA9 PSAxKSBmY250bCgxLCBGX1NFVEZELCAwKTsKIAkJZWxzZSBkdXAyKHBbMV0sIDEpOwotCQlleGVj bCgiL2Jpbi9zaCIsICJzaCIsICItYyIsCisJCWV4ZWNsKCIvc3lzdGVtL2Jpbi9zaCIsICJzaCIs ICItYyIsCiAJCQkiZXZhbCBcInByaW50ZiAlc1xcXFxcXFxcMCB4ICQxICQyXCIiLAogCQkJInNo IiwgcywgcmVkaXIsIChjaGFyICopMCk7CiAJCV9leGl0KDEpOwotLS0gbXVzbC0xLjEuNC5vL3Ny Yy9uZXR3b3JrL2dldG5hbWVpbmZvLmMKKysrIG11c2wtMS4xLjQvc3JjL25ldHdvcmsvZ2V0bmFt ZWluZm8uYwpAQCAtNTAsNyArNTAsNyBAQAogCWNoYXIgbGluZVs1MTJdLCAqcCwgKno7CiAJdW5z aWduZWQgY2hhciBfYnVmWzEwMzJdLCBhdG1wWzE2XTsKIAlzdHJ1Y3QgYWRkcmVzcyBpcGxpdDsK LQlGSUxFIF9mLCAqZiA9IF9fZm9wZW5fcmJfY2EoIi9ldGMvaG9zdHMiLCAmX2YsIF9idWYsIHNp emVvZiBfYnVmKTsKKwlGSUxFIF9mLCAqZiA9IF9fZm9wZW5fcmJfY2EoIi9zeXN0ZW0vZXRjL2hv c3RzIiwgJl9mLCBfYnVmLCBzaXplb2YgX2J1Zik7CiAJaWYgKCFmKSByZXR1cm47CiAJaWYgKGZh bWlseSA9PSBBRl9JTkVUKSB7CiAJCW1lbWNweShhdG1wKzEyLCBhLCA0KTsKQEAgLTkwLDcgKzkw LDcgQEAKIAl1bnNpZ25lZCBsb25nIHN2cG9ydDsKIAljaGFyIGxpbmVbMTI4XSwgKnAsICp6Owog CXVuc2lnbmVkIGNoYXIgX2J1ZlsxMDMyXTsKLQlGSUxFIF9mLCAqZiA9IF9fZm9wZW5fcmJfY2Eo Ii9ldGMvc2VydmljZXMiLCAmX2YsIF9idWYsIHNpemVvZiBfYnVmKTsKKwlGSUxFIF9mLCAqZiA9 IF9fZm9wZW5fcmJfY2EoIi9zeXN0ZW0vZXRjL3NlcnZpY2VzIiwgJl9mLCBfYnVmLCBzaXplb2Yg X2J1Zik7CiAJaWYgKCFmKSByZXR1cm47CiAJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZiBsaW5l LCBmKSkgewogCQlpZiAoKHA9c3RyY2hyKGxpbmUsICcjJykpKSAqcCsrPSdcbicsICpwPTA7Ci0t LSBtdXNsLTEuMS40Lm8vc3JjL25ldHdvcmsvbG9va3VwX25hbWUuYworKysgbXVzbC0xLjEuNC9z cmMvbmV0d29yay9sb29rdXBfbmFtZS5jCkBAIC01MCw3ICs1MCw3IEBACiAJc2l6ZV90IGwgPSBz dHJsZW4obmFtZSk7CiAJaW50IGNudCA9IDA7CiAJdW5zaWduZWQgY2hhciBfYnVmWzEwMzJdOwot CUZJTEUgX2YsICpmID0gX19mb3Blbl9yYl9jYSgiL2V0Yy9ob3N0cyIsICZfZiwgX2J1Ziwgc2l6 ZW9mIF9idWYpOworCUZJTEUgX2YsICpmID0gX19mb3Blbl9yYl9jYSgiL3N5c3RlbS9ldGMvaG9z dHMiLCAmX2YsIF9idWYsIHNpemVvZiBfYnVmKTsKIAlpZiAoIWYpIHJldHVybiAwOwogCXdoaWxl IChmZ2V0cyhsaW5lLCBzaXplb2YgbGluZSwgZikgJiYgY250IDwgTUFYQUREUlMpIHsKIAkJY2hh ciAqcCwgKno7Ci0tLSBtdXNsLTEuMS40Lm8vc3JjL25ldHdvcmsvbG9va3VwX3NlcnYuYworKysg bXVzbC0xLjEuNC9zcmMvbmV0d29yay9sb29rdXBfc2Vydi5jCkBAIC0zNiw3ICszNiw3IEBACiAJ c2l6ZV90IGwgPSBzdHJsZW4obmFtZSk7CiAKIAl1bnNpZ25lZCBjaGFyIF9idWZbMTAzMl07Ci0J RklMRSBfZiwgKmYgPSBfX2ZvcGVuX3JiX2NhKCIvZXRjL3NlcnZpY2VzIiwgJl9mLCBfYnVmLCBz aXplb2YgX2J1Zik7CisJRklMRSBfZiwgKmYgPSBfX2ZvcGVuX3JiX2NhKCIvc3lzdGVtL2V0Yy9z ZXJ2aWNlcyIsICZfZiwgX2J1Ziwgc2l6ZW9mIF9idWYpOwogCWlmICghZikgcmV0dXJuIEVBSV9T RVJWSUNFOwogCiAJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZiBsaW5lLCBmKSAmJiBjbnQgPCBN QVhTRVJWUykgewotLS0gbXVzbC0xLjEuNC5vL3NyYy9uZXR3b3JrL3Jlc19tc2VuZC5jCisrKyBt dXNsLTEuMS40L3NyYy9uZXR3b3JrL3Jlc19tc2VuZC5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5j bHVkZSAic3RkaW9faW1wbC5oIgogI2luY2x1ZGUgInN5c2NhbGwuaCIKICNpbmNsdWRlICJsb29r dXAuaCIKKyNpbmNsdWRlIDxhbmRyb2lkL3Byb3BlcnR5Lmg+CiAKIHN0YXRpYyB2b2lkIGNsZWFu dXAodm9pZCAqcCkKIHsKQEAgLTUzLDcgKzU0LDcgQEAKIAlwdGhyZWFkX3NldGNhbmNlbHN0YXRl KFBUSFJFQURfQ0FOQ0VMX0RJU0FCTEUsICZjcyk7CiAKIAkvKiBHZXQgbmFtZXNlcnZlcnMgZnJv bSByZXNvbHYuY29uZiwgZmFsbGJhY2sgdG8gbG9jYWxob3N0ICovCi0JZiA9IF9fZm9wZW5fcmJf Y2EoIi9ldGMvcmVzb2x2LmNvbmYiLCAmX2YsIF9idWYsIHNpemVvZiBfYnVmKTsKKwlmID0gX19m b3Blbl9yYl9jYSgiL3N5c3RlbS9ldGMvcmVzb2x2LmNvbmYiLCAmX2YsIF9idWYsIHNpemVvZiBf YnVmKTsKIAlpZiAoZikgZm9yIChubnM9MDsgbm5zPDMgJiYgZmdldHMobGluZSwgc2l6ZW9mIGxp bmUsIGYpOyApIHsKIAkJaWYgKCFzdHJuY21wKGxpbmUsICJvcHRpb25zIiwgNykgJiYgaXNzcGFj ZShsaW5lWzddKSkgewogCQkJdW5zaWduZWQgbG9uZyB4OwpAQCAtOTMsNyArOTQsMzAgQEAKIAkJ fQogCX0KIAlpZiAoZikgX19mY2xvc2VfY2EoZik7CisKKwkvKiBpZiB0aGVyZSBpcyBubyAvZXRj L3Jlc29sdi5jb25mLCB0aGVuIGdldCBuYW1lc2VydmVycyBmcm9tIGFuZHJvaWQgY29uZmlnICov CiAJaWYgKCFubnMpIHsKKwkJc3RyY3B5KGxpbmUsICJuZXQuZG5zMSIpOworX3NlY29uZDoJaWYg KGxpbmVbN10gPiAnMicpIGdvdG8gX291dDsKKwkJaWYgKGFuZHJvaWRfcHJvcGVydHlfZ2V0KGxp bmUsIChjaGFyICopX2J1ZikpIHsKKwkJCWlmIChfX2xvb2t1cF9pcGxpdGVyYWwoJmlwbGl0LCAo Y2hhciAqKV9idWYsIEFGX1VOU1BFQyk+MCkgeworCQkJCWlmIChpcGxpdC5mYW1pbHkgPT0gQUZf SU5FVCkgeworCQkJCQltZW1jcHkoJm5zW25uc10uc2luLnNpbl9hZGRyLCBpcGxpdC5hZGRyLCA0 KTsKKwkJCQkJbnNbbm5zXS5zaW4uc2luX3BvcnQgPSBodG9ucyg1Myk7CisJCQkJCW5zW25ucysr XS5zaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlzbCA9 IHNpemVvZiBzYS5zaW42OworCQkJCQltZW1jcHkoJm5zW25uc10uc2luNi5zaW42X2FkZHIsIGlw bGl0LmFkZHIsIDE2KTsKKwkJCQkJbnNbbm5zXS5zaW42LnNpbjZfcG9ydCA9IGh0b25zKDUzKTsK KwkJCQkJbnNbbm5zXS5zaW42LnNpbjZfc2NvcGVfaWQgPSBpcGxpdC5zY29wZWlkOworCQkJCQlu c1tubnMrK10uc2luNi5zaW42X2ZhbWlseSA9IGZhbWlseSA9IEFGX0lORVQ2OworCQkJCX0KKwkJ CX0KKwkJfQorCQlsaW5lWzddKys7IGdvdG8gX3NlY29uZDsKKwl9Citfb3V0OglpZiAoIW5ucykg ewogCQluc1swXS5zaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAJCW5zWzBdLnNpbi5zaW5fcG9y dCA9IGh0b25zKDUzKTsKIAkJbnNbMF0uc2luLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKDB4N2Yw MDAwMDEpOwotLS0gbXVzbC0xLjEuNC5vL3NyYy9wYXNzd2QvZ2V0Z3Jfci5jCisrKyBtdXNsLTEu MS40L3NyYy9wYXNzd2QvZ2V0Z3Jfci5jCkBAIC0xLDExICsxLDExIEBACiAjaW5jbHVkZSAicHdm LmgiCiAjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGFuZHJvaWQvaWRtYXAuaD4KIAog I2RlZmluZSBGSVgoeCkgKGdyLT5ncl8jI3ggPSBnci0+Z3JfIyN4LWxpbmUrYnVmKQogCi1zdGF0 aWMgaW50IGdldGdyX3IoY29uc3QgY2hhciAqbmFtZSwgZ2lkX3QgZ2lkLCBzdHJ1Y3QgZ3JvdXAg KmdyLCBjaGFyICpidWYsIHNpemVfdCBzaXplLCBzdHJ1Y3QgZ3JvdXAgKipyZXMpCitzdGF0aWMg aW50IGdldGdyX3IoRklMRSAqZiwgY29uc3QgY2hhciAqbmFtZSwgZ2lkX3QgZ2lkLCBzdHJ1Y3Qg Z3JvdXAgKmdyLCBjaGFyICpidWYsIHNpemVfdCBzaXplLCBzdHJ1Y3QgZ3JvdXAgKipyZXMpCiB7 Ci0JRklMRSAqZjsKIAljaGFyICpsaW5lID0gMDsKIAlzaXplX3QgbGVuID0gMDsKIAljaGFyICoq bWVtID0gMDsKQEAgLTE2LDEzICsxNiwxMyBAQAogCiAJcHRocmVhZF9zZXRjYW5jZWxzdGF0ZShQ VEhSRUFEX0NBTkNFTF9ESVNBQkxFLCAmY3MpOwogCi0JZiA9IGZvcGVuKCIvZXRjL2dyb3VwIiwg InJiZSIpOworCSpyZXMgPSAwOworCWlmICghZikgZiA9IGZvcGVuKCIvc3lzdGVtL2V0Yy9ncm91 cCIsICJyYmUiKTsKIAlpZiAoIWYpIHsKIAkJcnYgPSBlcnJubzsKIAkJZ290byBkb25lOwogCX0K IAotCSpyZXMgPSAwOwogCXdoaWxlIChfX2dldGdyZW50X2EoZiwgZ3IsICZsaW5lLCAmbGVuLCAm bWVtLCAmbm1lbSkpIHsKIAkJaWYgKG5hbWUgJiYgIXN0cmNtcChuYW1lLCBnci0+Z3JfbmFtZSkK IAkJfHwgIW5hbWUgJiYgZ3ItPmdyX2dpZCA9PSBnaWQpIHsKQEAgLTUxLDEyICs1MSw1NSBAQAog CXJldHVybiBydjsKIH0KIAorc3RhdGljIGludCBfX2dldGdyX2FuZHJvaWRfcihjb25zdCBjaGFy ICpuYW1lLCBnaWRfdCBnaWQsIHN0cnVjdCBncm91cCAqZ3IsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNp emUsIHN0cnVjdCBncm91cCAqKnJlcykKK3sKKwljaGFyICpwOworCXNpemVfdCBzejsKKwlGSUxF ICpmOworCisJKnJlcyA9IDA7CisJcCA9IGFuZHJvaWRfZ2V0Z3JvdXBkYigmc3opOworCWlmICgh cCkgcmV0dXJuIDA7CisKKwlmID0gZm1lbW9wZW4ocCwgc3osICJyYiIpOworCWlmICghZikgcmV0 dXJuIDA7CisKKwlyZXR1cm4gZ2V0Z3JfcihmLCBuYW1lLCBnaWQsIGdyLCBidWYsIHNpemUsIHJl cyk7Cit9CisKK3N0YXRpYyBpbnQgX19nZXRncl9hbmRyb2lkX2FwcF9yKGNvbnN0IGNoYXIgKm5h bWUsIGdpZF90IGdpZCwgc3RydWN0IGdyb3VwICpnciwgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwg c3RydWN0IGdyb3VwICoqcmVzKQoreworCWNoYXIgKnA7CisJc2l6ZV90IHN6OworCUZJTEUgKmY7 CisKKwkqcmVzID0gMDsKKwlwID0gYW5kcm9pZF9ta2dyb3VwKG5hbWUsIGdpZCk7CisJaWYgKCFw KSByZXR1cm4gMDsKKwlzeiA9IHN0cm5sZW4ocCwgQV9MTlNJWkUpKzE7CisKKwlmID0gZm1lbW9w ZW4ocCwgc3osICJyYiIpOworCWlmICghZikgcmV0dXJuIDA7CisKKwlyZXR1cm4gZ2V0Z3Jfcihm LCBuYW1lLCBnaWQsIGdyLCBidWYsIHNpemUsIHJlcyk7Cit9CisKIGludCBnZXRncm5hbV9yKGNv bnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBncm91cCAqZ3IsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUs IHN0cnVjdCBncm91cCAqKnJlcykKIHsKLQlyZXR1cm4gZ2V0Z3JfcihuYW1lLCAwLCBnciwgYnVm LCBzaXplLCByZXMpOworCWludCByOworCisJciA9IGdldGdyX3IoMCwgbmFtZSwgMCwgZ3IsIGJ1 Ziwgc2l6ZSwgcmVzKTsKKwlpZiAoISpyZXMpIF9fZ2V0Z3JfYW5kcm9pZF9yKG5hbWUsIDAsIGdy LCBidWYsIHNpemUsIHJlcyk7CisJaWYgKCEqcmVzKSBfX2dldGdyX2FuZHJvaWRfYXBwX3IobmFt ZSwgMCwgZ3IsIGJ1Ziwgc2l6ZSwgcmVzKTsKKwlyZXR1cm4gcjsKIH0KIAogaW50IGdldGdyZ2lk X3IoZ2lkX3QgZ2lkLCBzdHJ1Y3QgZ3JvdXAgKmdyLCBjaGFyICpidWYsIHNpemVfdCBzaXplLCBz dHJ1Y3QgZ3JvdXAgKipyZXMpCiB7Ci0JcmV0dXJuIGdldGdyX3IoMCwgZ2lkLCBnciwgYnVmLCBz aXplLCByZXMpOworCWludCByOworCisJciA9IGdldGdyX3IoMCwgMCwgZ2lkLCBnciwgYnVmLCBz aXplLCByZXMpOworCWlmICghKnJlcykgX19nZXRncl9hbmRyb2lkX3IoMCwgZ2lkLCBnciwgYnVm LCBzaXplLCByZXMpOworCWlmICghKnJlcykgX19nZXRncl9hbmRyb2lkX2FwcF9yKDAsIGdpZCwg Z3IsIGJ1Ziwgc2l6ZSwgcmVzKTsKKwlyZXR1cm4gcjsKIH0KLS0tIG11c2wtMS4xLjQuby9zcmMv cGFzc3dkL2dldGdyZW50LmMKKysrIG11c2wtMS4xLjQvc3JjL3Bhc3N3ZC9nZXRncmVudC5jCkBA IC0xLDYgKzEsOSBAQAogI2luY2x1ZGUgInB3Zi5oIgorI2luY2x1ZGUgPGFuZHJvaWQvaWRtYXAu aD4KIAogc3RhdGljIEZJTEUgKmY7CitzdGF0aWMgY2hhciAqbGluZSwgKiptZW07CitzdGF0aWMg c3RydWN0IGdyb3VwIGdyczsKIAogdm9pZCBzZXRncmVudCgpCiB7CkBAIC0xMiwxNCArMTUsNDUg QEAKIAogc3RydWN0IGdyb3VwICpnZXRncmVudCgpCiB7Ci0Jc3RhdGljIGNoYXIgKmxpbmUsICoq bWVtOwotCXN0YXRpYyBzdHJ1Y3QgZ3JvdXAgZ3I7CiAJc2l6ZV90IHNpemU9MCwgbm1lbT0wOwot CWlmICghZikgZiA9IGZvcGVuKCIvZXRjL2dyb3VwIiwgInJiZSIpOworCWlmICghZikgZiA9IGZv cGVuKCIvc3lzdGVtL2V0Yy9ncm91cCIsICJyYmUiKTsKIAlpZiAoIWYpIHJldHVybiAwOwotCXJl dHVybiBfX2dldGdyZW50X2EoZiwgJmdyLCAmbGluZSwgJnNpemUsICZtZW0sICZubWVtKTsKKwly ZXR1cm4gX19nZXRncmVudF9hKGYsICZncnMsICZsaW5lLCAmc2l6ZSwgJm1lbSwgJm5tZW0pOwog fQogCitzdHJ1Y3QgZ3JvdXAgKl9fZ2V0Z3JlbnRfYW5kcm9pZCgpCit7CisJY2hhciAqcDsKKwlz aXplX3Qgc2l6ZSwgbm1lbT0wOworCisJaWYgKCFmKSB7CisJCXAgPSBhbmRyb2lkX2dldGdyb3Vw ZGIoJnNpemUpOworCQlpZiAoIXApIHJldHVybiAwOworCisJCWYgPSBmbWVtb3BlbihwLCBzaXpl LCAicmIiKTsKKwkJaWYgKCFmKSByZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gX19nZXRncmVudF9h KGYsICZncnMsICZsaW5lLCAmc2l6ZSwgJm1lbSwgJm5tZW0pOworfQorCitzdGF0aWMgc3RydWN0 IGdyb3VwICpfX2dldGdyX2FuZHJvaWRfYXBwKGNvbnN0IGNoYXIgKm5hbWUsIGdpZF90IGdpZCkK K3sKKwljaGFyICpwOworCXNpemVfdCBzaXplLCBubWVtPTA7CisKKwlpZiAoIWYpIHsKKwkJcCA9 IGFuZHJvaWRfbWtncm91cChuYW1lLCBnaWQpOworCQlpZiAoIXApIHJldHVybiAwOworCQlzaXpl ID0gc3RybmxlbihwLCBBX0xOU0laRSkrMTsKKworCQlmID0gZm1lbW9wZW4ocCwgc2l6ZSwgInJi Iik7CisJCWlmICghZikgcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIF9fZ2V0Z3JlbnRfYShmLCAm Z3JzLCAmbGluZSwgJnNpemUsICZtZW0sICZubWVtKTsKK30KKwogc3RydWN0IGdyb3VwICpnZXRn cmdpZChnaWRfdCBnaWQpCiB7CiAJc3RydWN0IGdyb3VwICpncjsKQEAgLTI4LDYgKzYyLDE0IEBA CiAJd2hpbGUgKChncj1nZXRncmVudCgpKSAmJiBnci0+Z3JfZ2lkICE9IGdpZCk7CiAJZXJybm9f c2F2ZWQgPSBlcnJubzsKIAllbmRncmVudCgpOworCWlmICghZ3IpIHsKKwkJc2V0Z3JlbnQoKTsK KwkJd2hpbGUgKChncj1fX2dldGdyZW50X2FuZHJvaWQoKSkgJiYgZ3ItPmdyX2dpZCAhPSBnaWQp OworCQllbmRncmVudCgpOworCX0KKwlzZXRncmVudCgpOworCWlmICghZ3IpIGdyID0gX19nZXRn cl9hbmRyb2lkX2FwcChOVUxMLCBnaWQpOworCWVuZGdyZW50KCk7CiAJZXJybm8gPSBlcnJub19z YXZlZDsKIAlyZXR1cm4gZ3I7CiB9CkBAIC0zOSw2ICs4MSwxNCBAQAogCXNldGdyZW50KCk7CiAJ d2hpbGUgKChncj1nZXRncmVudCgpKSAmJiBzdHJjbXAoZ3ItPmdyX25hbWUsIG5hbWUpKTsKIAll cnJub19zYXZlZCA9IGVycm5vOworCWVuZGdyZW50KCk7CisJaWYgKCFncikgeworCQlzZXRncmVu dCgpOworCQl3aGlsZSAoKGdyPV9fZ2V0Z3JlbnRfYW5kcm9pZCgpKSAmJiBzdHJjbXAoZ3ItPmdy X25hbWUsIG5hbWUpKTsKKwkJZW5kZ3JlbnQoKTsKKwl9CisJc2V0Z3JlbnQoKTsKKwlpZiAoIWdy KSBnciA9IF9fZ2V0Z3JfYW5kcm9pZF9hcHAobmFtZSwgMCk7CiAJZW5kZ3JlbnQoKTsKIAllcnJu byA9IGVycm5vX3NhdmVkOwogCXJldHVybiBncjsKLS0tIG11c2wtMS4xLjQuby9zcmMvcGFzc3dk L2dldHB3X3IuYworKysgbXVzbC0xLjEuNC9zcmMvcGFzc3dkL2dldHB3X3IuYwpAQCAtMSwxMSAr MSwxMSBAQAogI2luY2x1ZGUgInB3Zi5oIgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRl IDxhbmRyb2lkL2lkbWFwLmg+CiAKICNkZWZpbmUgRklYKHgpIChwdy0+cHdfIyN4ID0gcHctPnB3 XyMjeC1saW5lK2J1ZikKIAotc3RhdGljIGludCBnZXRwd19yKGNvbnN0IGNoYXIgKm5hbWUsIHVp ZF90IHVpZCwgc3RydWN0IHBhc3N3ZCAqcHcsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVj dCBwYXNzd2QgKipyZXMpCitzdGF0aWMgaW50IGdldHB3X3IoRklMRSAqZiwgY29uc3QgY2hhciAq bmFtZSwgdWlkX3QgdWlkLCBzdHJ1Y3QgcGFzc3dkICpwdywgY2hhciAqYnVmLCBzaXplX3Qgc2l6 ZSwgc3RydWN0IHBhc3N3ZCAqKnJlcykKIHsKLQlGSUxFICpmOwogCWNoYXIgKmxpbmUgPSAwOwog CXNpemVfdCBsZW4gPSAwOwogCWludCBydiA9IDA7CkBAIC0xMywxMyArMTMsMTMgQEAKIAogCXB0 aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoUFRIUkVBRF9DQU5DRUxfRElTQUJMRSwgJmNzKTsKIAotCWYg PSBmb3BlbigiL2V0Yy9wYXNzd2QiLCAicmJlIik7CisJKnJlcyA9IDA7CisJaWYgKCFmKSBmID0g Zm9wZW4oIi9zeXN0ZW0vZXRjL3Bhc3N3ZCIsICJyYmUiKTsKIAlpZiAoIWYpIHsKIAkJcnYgPSBl cnJubzsKIAkJZ290byBkb25lOwogCX0KIAotCSpyZXMgPSAwOwogCXdoaWxlIChfX2dldHB3ZW50 X2EoZiwgcHcsICZsaW5lLCAmbGVuKSkgewogCQlpZiAobmFtZSAmJiAhc3RyY21wKG5hbWUsIHB3 LT5wd19uYW1lKQogCQl8fCAhbmFtZSAmJiBwdy0+cHdfdWlkID09IHVpZCkgewpAQCAtMzcsMTkg KzM3LDYzIEBACiAJCQlicmVhazsKIAkJfQogCX0KLSAJZnJlZShsaW5lKTsKKwlmcmVlKGxpbmUp OwogCWZjbG9zZShmKTsKIGRvbmU6CiAJcHRocmVhZF9zZXRjYW5jZWxzdGF0ZShjcywgMCk7CiAJ cmV0dXJuIHJ2OwogfQogCitzdGF0aWMgaW50IF9fZ2V0cHdfYW5kcm9pZF9yKGNvbnN0IGNoYXIg Km5hbWUsIHVpZF90IHVpZCwgc3RydWN0IHBhc3N3ZCAqcHcsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNp emUsIHN0cnVjdCBwYXNzd2QgKipyZXMpCit7CisJY2hhciAqcDsKKwlzaXplX3Qgc3o7CisJRklM RSAqZjsKKworCSpyZXMgPSAwOworCXAgPSBhbmRyb2lkX2dldHBhc3N3ZGRiKCZzeik7CisJaWYg KCFwKSByZXR1cm4gMDsKKworCWYgPSBmbWVtb3BlbihwLCBzeiwgInJiIik7CisJaWYgKCFmKSBy ZXR1cm4gMDsKKworCXJldHVybiBnZXRwd19yKGYsIG5hbWUsIHVpZCwgcHcsIGJ1Ziwgc2l6ZSwg cmVzKTsKK30KKworc3RhdGljIGludCBfX2dldHB3X2FuZHJvaWRfYXBwX3IoY29uc3QgY2hhciAq bmFtZSwgdWlkX3QgdWlkLCBzdHJ1Y3QgcGFzc3dkICpwdywgY2hhciAqYnVmLCBzaXplX3Qgc2l6 ZSwgc3RydWN0IHBhc3N3ZCAqKnJlcykKK3sKKwljaGFyICpwOworCXNpemVfdCBzejsKKwlGSUxF ICpmOworCisJKnJlcyA9IDA7CisJcCA9IGFuZHJvaWRfbWtwYXNzd2QobmFtZSwgdWlkKTsKKwlp ZiAoIXApIHJldHVybiAwOworCXN6ID0gc3RybmxlbihwLCBBX0xOU0laRSkrMTsKKworCWYgPSBm bWVtb3BlbihwLCBzeiwgInJiIik7CisJaWYgKCFmKSByZXR1cm4gMDsKKworCXJldHVybiBnZXRw d19yKGYsIG5hbWUsIHVpZCwgcHcsIGJ1Ziwgc2l6ZSwgcmVzKTsKK30KKwogaW50IGdldHB3bmFt X3IoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHBhc3N3ZCAqcHcsIGNoYXIgKmJ1Ziwgc2l6ZV90 IHNpemUsIHN0cnVjdCBwYXNzd2QgKipyZXMpCiB7Ci0JcmV0dXJuIGdldHB3X3IobmFtZSwgMCwg cHcsIGJ1Ziwgc2l6ZSwgcmVzKTsKKwlpbnQgcjsKKworCXIgPSBnZXRwd19yKDAsIG5hbWUsIDAs IHB3LCBidWYsIHNpemUsIHJlcyk7CisJaWYgKCEqcmVzKSBfX2dldHB3X2FuZHJvaWRfcihuYW1l LCAwLCBwdywgYnVmLCBzaXplLCByZXMpOworCWlmICghKnJlcykgX19nZXRwd19hbmRyb2lkX2Fw cF9yKG5hbWUsIDAsIHB3LCBidWYsIHNpemUsIHJlcyk7CisJcmV0dXJuIHI7CiB9CiAKIGludCBn ZXRwd3VpZF9yKHVpZF90IHVpZCwgc3RydWN0IHBhc3N3ZCAqcHcsIGNoYXIgKmJ1Ziwgc2l6ZV90 IHNpemUsIHN0cnVjdCBwYXNzd2QgKipyZXMpCiB7Ci0JcmV0dXJuIGdldHB3X3IoMCwgdWlkLCBw dywgYnVmLCBzaXplLCByZXMpOworCWludCByOworCisJciA9IGdldHB3X3IoMCwgMCwgdWlkLCBw dywgYnVmLCBzaXplLCByZXMpOworCS8qIGRpc3Bvc2UgYW55IGFuZHJvaWQgZXJyb3JzICovCisJ aWYgKCEqcmVzKSBfX2dldHB3X2FuZHJvaWRfcigwLCB1aWQsIHB3LCBidWYsIHNpemUsIHJlcyk7 CisJaWYgKCEqcmVzKSBfX2dldHB3X2FuZHJvaWRfYXBwX3IoMCwgdWlkLCBwdywgYnVmLCBzaXpl LCByZXMpOworCXJldHVybiByOwogfQotLS0gbXVzbC0xLjEuNC5vL3NyYy9wYXNzd2QvZ2V0cHdl bnQuYworKysgbXVzbC0xLjEuNC9zcmMvcGFzc3dkL2dldHB3ZW50LmMKQEAgLTEsNiArMSw5IEBA CiAjaW5jbHVkZSAicHdmLmgiCisjaW5jbHVkZSA8YW5kcm9pZC9pZG1hcC5oPgogCiBzdGF0aWMg RklMRSAqZjsKK3N0YXRpYyBjaGFyICpsaW5lOworc3RhdGljIHN0cnVjdCBwYXNzd2QgcHdzOwog CiB2b2lkIHNldHB3ZW50KCkKIHsKQEAgLTEyLDE0ICsxNSw0NiBAQAogCiBzdHJ1Y3QgcGFzc3dk ICpnZXRwd2VudCgpCiB7Ci0Jc3RhdGljIGNoYXIgKmxpbmU7Ci0Jc3RhdGljIHN0cnVjdCBwYXNz d2QgcHc7CisJc3RydWN0IHBhc3N3ZCAqcjsKIAlzaXplX3Qgc2l6ZT0wOwotCWlmICghZikgZiA9 IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsICJyYmUiKTsKKwlpZiAoIWYpIGYgPSBmb3BlbigiL3N5c3Rl bS9ldGMvcGFzc3dkIiwgInJiZSIpOwogCWlmICghZikgcmV0dXJuIDA7Ci0JcmV0dXJuIF9fZ2V0 cHdlbnRfYShmLCAmcHcsICZsaW5lLCAmc2l6ZSk7CisJcmV0dXJuIF9fZ2V0cHdlbnRfYShmLCAm cHdzLCAmbGluZSwgJnNpemUpOwogfQogCitzdGF0aWMgc3RydWN0IHBhc3N3ZCAqX19nZXRwd2Vu dF9hbmRyb2lkKCkKK3sKKwljaGFyICpwOworCXNpemVfdCBzaXplOworCisJaWYgKCFmKSB7CisJ CXAgPSBhbmRyb2lkX2dldHBhc3N3ZGRiKCZzaXplKTsKKwkJaWYgKCFwKSByZXR1cm4gMDsKKwor CQlmID0gZm1lbW9wZW4ocCwgc2l6ZSwgInJiIik7CisJCWlmICghZikgcmV0dXJuIDA7CisJfQor CisJcmV0dXJuIF9fZ2V0cHdlbnRfYShmLCAmcHdzLCAmbGluZSwgJnNpemUpOworfQorCitzdGF0 aWMgc3RydWN0IHBhc3N3ZCAqX19nZXRwd19hbmRyb2lkX2FwcChjb25zdCBjaGFyICpuYW1lLCB1 aWRfdCB1aWQpCit7CisJY2hhciAqcDsKKwlzaXplX3Qgc2l6ZTsKKworCWlmICghZikgeworCQlw ID0gYW5kcm9pZF9ta3Bhc3N3ZChuYW1lLCB1aWQpOworCQlpZiAoIXApIHJldHVybiAwOworCQlz aXplID0gc3RybmxlbihwLCBBX0xOU0laRSkrMTsKKworCQlmID0gZm1lbW9wZW4ocCwgc2l6ZSwg InJiIik7CisJCWlmICghZikgcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIF9fZ2V0cHdlbnRfYShm LCAmcHdzLCAmbGluZSwgJnNpemUpOworfQorCiBzdHJ1Y3QgcGFzc3dkICpnZXRwd3VpZCh1aWRf dCB1aWQpCiB7CiAJc3RydWN0IHBhc3N3ZCAqcHc7CkBAIC0yOCw2ICs2MywxNiBAQAogCXdoaWxl ICgocHc9Z2V0cHdlbnQoKSkgJiYgcHctPnB3X3VpZCAhPSB1aWQpOwogCWVycm5vX3NhdmVkID0g ZXJybm87CiAJZW5kcHdlbnQoKTsKKwkvKiBhc2sgYWJvdXQgYW5kcm9pZCBkZWZpbmVkIHZpcnR1 YWwgdXNlcnMgKi8KKwlpZiAoIXB3KSB7CisJCXNldHB3ZW50KCk7CisJCXdoaWxlICgocHc9X19n ZXRwd2VudF9hbmRyb2lkKCkpICYmIHB3LT5wd191aWQgIT0gdWlkKTsKKwkJZW5kcHdlbnQoKTsK Kwl9CisJLyogZm9yICJhcHBfWFgiLyJ1WF9hWVkiIHRyYW5zbGF0aW9uIHlvdSBzdGlsbCBuZWVk IGEgZGVkaWNhdGVkIGZ1bmN0aW9uLi4uICovCisJc2V0cHdlbnQoKTsKKwlpZiAoIXB3KSBwdyA9 IF9fZ2V0cHdfYW5kcm9pZF9hcHAoTlVMTCwgdWlkKTsKKwllbmRwd2VudCgpOwogCWVycm5vID0g ZXJybm9fc2F2ZWQ7CiAJcmV0dXJuIHB3OwogfQpAQCAtMzksNiArODQsMTQgQEAKIAlzZXRwd2Vu dCgpOwogCXdoaWxlICgocHc9Z2V0cHdlbnQoKSkgJiYgc3RyY21wKHB3LT5wd19uYW1lLCBuYW1l KSk7CiAJZXJybm9fc2F2ZWQgPSBlcnJubzsKKwllbmRwd2VudCgpOworCWlmICghcHcpIHsKKwkJ c2V0cHdlbnQoKTsKKwkJd2hpbGUgKChwdz1fX2dldHB3ZW50X2FuZHJvaWQoKSkgJiYgc3RyY21w KHB3LT5wd19uYW1lLCBuYW1lKSk7CisJCWVuZHB3ZW50KCk7CisJfQorCXNldHB3ZW50KCk7CisJ aWYgKCFwdykgcHcgPSBfX2dldHB3X2FuZHJvaWRfYXBwKG5hbWUsIDApOwogCWVuZHB3ZW50KCk7 CiAJZXJybm8gPSBlcnJub19zYXZlZDsKIAlyZXR1cm4gcHc7Ci0tLSBtdXNsLTEuMS40Lm8vc3Jj L3Byb2Nlc3MvZXhlY3ZwLmMKKysrIG11c2wtMS4xLjQvc3JjL3Byb2Nlc3MvZXhlY3ZwLmMKQEAg LTE4LDcgKzE4LDcgQEAKIAlpZiAoc3RyY2hyKGZpbGUsICcvJykpCiAJCXJldHVybiBleGVjdmUo ZmlsZSwgYXJndiwgZW52cCk7CiAKLQlpZiAoIXBhdGgpIHBhdGggPSAiL3Vzci9sb2NhbC9iaW46 L2JpbjovdXNyL2JpbiI7CisJaWYgKCFwYXRoKSBwYXRoID0gIi9zeXN0ZW0vYmluOi9zeXN0ZW0v eGJpbjovdmVuZG9yL2JpbiI7CiAJayA9IHN0cm5sZW4oZmlsZSwgTkFNRV9NQVgrMSk7CiAJaWYg KGsgPiBOQU1FX01BWCkgewogCQllcnJubyA9IEVOQU1FVE9PTE9ORzsKLS0tIG11c2wtMS4xLjQu by9zcmMvcHJvY2Vzcy9zeXN0ZW0uYworKysgbXVzbC0xLjEuNC9zcmMvcHJvY2Vzcy9zeXN0ZW0u YwpAQCAtMzMsNyArMzMsNyBAQAogCXBvc2l4X3NwYXduYXR0cl9zZXRzaWdtYXNrKCZhdHRyLCAm b2xkKTsKIAlwb3NpeF9zcGF3bmF0dHJfc2V0c2lnZGVmYXVsdCgmYXR0ciwgJnJlc2V0KTsKIAlw b3NpeF9zcGF3bmF0dHJfc2V0ZmxhZ3MoJmF0dHIsIFBPU0lYX1NQQVdOX1NFVFNJR0RFRnxQT1NJ WF9TUEFXTl9TRVRTSUdNQVNLKTsKLQlyZXQgPSBwb3NpeF9zcGF3bigmcGlkLCAiL2Jpbi9zaCIs IDAsICZhdHRyLAorCXJldCA9IHBvc2l4X3NwYXduKCZwaWQsICIvc3lzdGVtL2Jpbi9zaCIsIDAs ICZhdHRyLAogCQkoY2hhciAqW10peyJzaCIsICItYyIsIChjaGFyICopY21kLCAwfSwgX19lbnZp cm9uKTsKIAlwb3NpeF9zcGF3bmF0dHJfZGVzdHJveSgmYXR0cik7CiAKLS0tIG11c2wtMS4xLjQu by9zcmMvc3RkaW8vcG9wZW4uYworKysgbXVzbC0xLjEuNC9zcmMvc3RkaW8vcG9wZW4uYwpAQCAt NTEsNyArNTEsNyBAQAogCWUgPSBFTk9NRU07CiAJaWYgKCFwb3NpeF9zcGF3bl9maWxlX2FjdGlv bnNfaW5pdCgmZmEpKSB7CiAJCWlmICghcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZGR1cDIo JmZhLCBwWzEtb3BdLCAxLW9wKSkgewotCQkJaWYgKCEoZSA9IHBvc2l4X3NwYXduKCZwaWQsICIv YmluL3NoIiwgJmZhLCAwLAorCQkJaWYgKCEoZSA9IHBvc2l4X3NwYXduKCZwaWQsICIvc3lzdGVt L2Jpbi9zaCIsICZmYSwgMCwKIAkJCSAgICAoY2hhciAqW10peyAic2giLCAiLWMiLCAoY2hhciAq KWNtZCwgMCB9LCBfX2Vudmlyb24pKSkgewogCQkJCXBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19k ZXN0cm95KCZmYSk7CiAJCQkJZi0+cGlwZV9waWQgPSBwaWQ7Ci0tLSBtdXNsLTEuMS40Lm8vc3Jj L3N0ZGlvL3RtcGZpbGUuYworKysgbXVzbC0xLjEuNC9zcmMvc3RkaW8vdG1wZmlsZS5jCkBAIC04 LDcgKzgsNyBAQAogCiBGSUxFICp0bXBmaWxlKHZvaWQpCiB7Ci0JY2hhciBzW10gPSAiL3RtcC90 bXBmaWxlX1hYWFhYWCI7CisJY2hhciBzW10gPSAiL2RhdGEvdG1wL3RtcGZpbGVfWFhYWFhYIjsK IAlpbnQgZmQ7CiAJRklMRSAqZjsKIAlpbnQgdHJ5OwotLS0gbXVzbC0xLjEuNC5vL3NyYy9zdGRp by90bXBuYW0uYworKysgbXVzbC0xLjEuNC9zcmMvc3RkaW8vdG1wbmFtLmMKQEAgLTEyLDcgKzEy LDcgQEAKIGNoYXIgKnRtcG5hbShjaGFyICpidWYpCiB7CiAJc3RhdGljIGNoYXIgaW50ZXJuYWxb TF90bXBuYW1dOwotCWNoYXIgc1tdID0gIi90bXAvdG1wbmFtX1hYWFhYWCI7CisJY2hhciBzW10g PSAiL2RhdGEvdG1wL3RtcG5hbV9YWFhYWFgiOwogCWludCB0cnk7CiAJaW50IHI7CiAJZm9yICh0 cnk9MDsgdHJ5PE1BWFRSSUVTOyB0cnkrKykgewotLS0gbXVzbC0xLjEuNC5vL3NyYy90aW1lL19f dHouYworKysgbXVzbC0xLjEuNC9zcmMvdGltZS9fX3R6LmMKQEAgLTEsOSArMSwxMiBAQAotI2lu Y2x1ZGUgInRpbWVfaW1wbC5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGxpbWl0 cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUg PHN5cy90eXBlcy5oPgorI2luY2x1ZGUgInRpbWVfaW1wbC5oIgogI2luY2x1ZGUgImxpYmMuaCIK KyNpbmNsdWRlIDxhbmRyb2lkL3Byb3BlcnR5Lmg+CisjaW5jbHVkZSA8YW5kcm9pZC9hdHouaD4K IAogbG9uZyAgX190aW1lem9uZSA9IDA7CiBpbnQgICBfX2RheWxpZ2h0ID0gMDsKQEAgLTEyMSwx NCArMTI0LDE5IEBACiBzdGF0aWMgdm9pZCBkb190enNldCgpCiB7CiAJY2hhciBidWZbTkFNRV9N QVgrMjVdLCAqcGF0aG5hbWU9YnVmKzI0OworCWNoYXIgYXR6W1BST1BfVkFMVUVMRU5dOyB1bnNp Z25lZCBjaGFyIGF0emRhdGFbMjA0OF07CisJb2ZmX3QgYW9mZnM7IHNpemVfdCBhbGVuOwogCWNv bnN0IGNoYXIgKnRyeSwgKnMsICpwOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKm1hcCA9IDA7CiAJ c2l6ZV90IGk7CiAJc3RhdGljIGNvbnN0IGNoYXIgc2VhcmNoW10gPQotCQkiL3Vzci9zaGFyZS96 b25laW5mby9cMC9zaGFyZS96b25laW5mby9cMC9ldGMvem9uZWluZm8vXDAiOworCQkiL3N5c3Rl bS9zaGFyZS96b25laW5mby9cMC9zeXN0ZW0vdXNyL3NoYXJlL3pvbmVpbmZvL1wwL2V0Yy96b25l aW5mby9cMCI7CiAKIAlzID0gZ2V0ZW52KCJUWiIpOwotCWlmICghcyB8fCAhKnMpIHMgPSAiL2V0 Yy9sb2NhbHRpbWUiOworCWlmICghcyB8fCAhKnMpIHsKKwkJcyA9ICIvc3lzdGVtL2V0Yy9sb2Nh bHRpbWUiOworCQlpZiAoYW5kcm9pZF9wcm9wZXJ0eV9nZXQoInBlcnNpc3Quc3lzLnRpbWV6b25l IiwgYXR6KSkgcyA9IGF0ejsKKwl9CiAKIAlpZiAob2xkX3R6ICYmICFzdHJjbXAocywgb2xkX3R6 KSkgcmV0dXJuOwogCkBAIC0xNDcsMTMgKzE1NSwyMiBAQAogCX0KIAlpZiAob2xkX3R6KSBtZW1j cHkob2xkX3R6LCBzLCBpKzEpOwogCisJaWYgKHMgPT0gYXR6KSB7CisJCWlmIChhbmRyb2lkX2Zp bmRfdHoocywgJmFvZmZzLCAmYWxlbikKKwkJICAgICYmIGFuZHJvaWRfZ2V0X3R6KGF0emRhdGEs IHNpemVvZihhdHpkYXRhKSwgYW9mZnMsIGFsZW4pKSB7CisJCQltYXAgPSBhdHpkYXRhOworCQkJ bWFwX3NpemUgPSBhbGVuOworCQl9CisJCWVsc2UgcyA9IF9fZ210OworCX0KKwllbHNlIHsKIAkv KiBOb24tc3VpZCBjYW4gdXNlIGFuIGFic29sdXRlIHR6ZmlsZSBwYXRobmFtZSBvciBhIHJlbGF0 aXZlCiAJICogcGF0aGFtZSBiZWdpbm5pbmcgd2l0aCAiLiI7IGluIHNlY3VyZSBtb2RlLCBvbmx5 IHRoZQogCSAqIHN0YW5kYXJkIHBhdGggd2lsbCBiZSBzZWFyY2hlZC4gKi8KIAlpZiAoKnMgPT0g JzonIHx8ICgocD1zdHJjaHIocywgJy8nKSkgJiYgIW1lbWNocihzLCAnLCcsIHAtcykpKSB7CiAJ CWlmICgqcyA9PSAnOicpIHMrKzsKIAkJaWYgKCpzID09ICcvJyB8fCAqcyA9PSAnLicpIHsKLQkJ CWlmICghbGliYy5zZWN1cmUgfHwgIXN0cmNtcChzLCAiL2V0Yy9sb2NhbHRpbWUiKSkKKwkJCWlm ICghbGliYy5zZWN1cmUgfHwgIXN0cmNtcChzLCAiL3N5c3RlbS9ldGMvbG9jYWx0aW1lIikpCiAJ CQkJbWFwID0gX19tYXBfZmlsZShzLCAmbWFwX3NpemUpOwogCQl9IGVsc2UgewogCQkJc2l6ZV90 IGwgPSBzdHJsZW4ocyk7CkBAIC0xNjgsNiArMTg1LDcgQEAKIAkJCX0KIAkJfQogCQlpZiAoIW1h cCkgcyA9IF9fZ210OworCX0KIAl9CiAJaWYgKG1hcCAmJiAobWFwX3NpemUgPCA0NCB8fCBtZW1j bXAobWFwLCAiVFppZiIsIDQpKSkgewogCQlfX211bm1hcCgodm9pZCAqKW1hcCwgbWFwX3NpemUp Owo= --MP_/NbmCMH3lUlVKgkPGDrT=LBU--