From owner-freebsd-net@freebsd.org Mon Jan 25 09:22:16 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C047BA3145D for ; Mon, 25 Jan 2016 09:22:16 +0000 (UTC) (envelope-from boris.astardzhiev@gmail.com) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 9B76AB19 for ; Mon, 25 Jan 2016 09:22:16 +0000 (UTC) (envelope-from boris.astardzhiev@gmail.com) Received: by mailman.ysv.freebsd.org (Postfix) id 9A08EA3145C; Mon, 25 Jan 2016 09:22:16 +0000 (UTC) Delivered-To: net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 810E2A31459; Mon, 25 Jan 2016 09:22:16 +0000 (UTC) (envelope-from boris.astardzhiev@gmail.com) Received: from mail-wm0-x232.google.com (mail-wm0-x232.google.com [IPv6:2a00:1450:400c:c09::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 066F5B17; Mon, 25 Jan 2016 09:22:16 +0000 (UTC) (envelope-from boris.astardzhiev@gmail.com) Received: by mail-wm0-x232.google.com with SMTP id r129so55543748wmr.0; Mon, 25 Jan 2016 01:22:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=CcFkVN47pIQ5OVbrQHvURyT9WAvjP32Z9OoYuQbifsc=; b=HFi4le++96JrxICuvWWBRZd1XkvrUlU8QvX/PbV5mE6yoA1+uw8u7UIm3gZ8MGhu+V 7HeUsfor3WJ14e7MgvByblCKywcXmKqg/92t0KF6N4yMd9EtUtcGw31tyUfFMSXIBuwz xEasjvjewA2w34JwR+ELpVdjeen5i9+EfOY3JcPKcHpxyx3qSMvpiircQZjjRwK7iyus dArtKEqqQMFPM7ixRPiWg8uO4onW28CGSFEzV6YEKfZA9zWfD8GD/CCkaYpyYaFJmHKp kFKRV9CGcuLan7bcxdpKGYXS+DQ200R1HVU6N3BHNRyIYA8g99GIqzv/Zz2ImDbIr+E3 yjTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=CcFkVN47pIQ5OVbrQHvURyT9WAvjP32Z9OoYuQbifsc=; b=WH7K9hQFF1SZBkZ8OBb/P+aRkFo8yryEfNJQIWb5f0SszPbc57YwPqLk0P59GdFL2c KldN60pUcD/PLGvbuIVQcqeKaFGbj0a5Y+CaASbscDxWi27TVsuYW0gWdTeaZ351NwkE TEhCXg23ajBHlfPkEugiDvbGVUS2xU9f3qFEQcTH/XRZTGRWFw4j7RWVLIJvvdPawEfq TucVecKusLgL/JbHVIhmCQZ5mMtK4IN+UmLwiwXLz3pY1At2A+rA4XnHLZd0JkXv+0jD lgwk2OOvhPjod7Ol3hG656h7eIC/e8vtFjkDKbQ6oWpbQSfctfLnSEKzdibalG2t3SVm WTaQ== X-Gm-Message-State: AG10YORd7M5AZD14AYitsxJtZ7n1lXZQpgXmp6XlI7qSUtf2AsHTkvdHSUBlIvgXLVrFe/ayZUEGmuyKbAxhPQ== MIME-Version: 1.0 X-Received: by 10.194.78.175 with SMTP id c15mr16420727wjx.16.1453713733992; Mon, 25 Jan 2016 01:22:13 -0800 (PST) Received: by 10.28.136.148 with HTTP; Mon, 25 Jan 2016 01:22:13 -0800 (PST) In-Reply-To: <20160124100747.551f8e3f@ernst.home> References: <20160117211853.GA37847@stack.nl> <20160118044826.GS3942@kib.kiev.ua> <20160118140811.GW3942@kib.kiev.ua> <20160120073154.GB3942@kib.kiev.ua> <20160121093509.GK3942@kib.kiev.ua> <20160121233040.E1864@besplex.bde.org> <20160124050634.GS3942@kib.kiev.ua> <20160124100747.551f8e3f@ernst.home> Date: Mon, 25 Jan 2016 11:22:13 +0200 Message-ID: Subject: Re: Does FreeBSD have sendmmsg or recvmmsg system calls? From: Boris Astardzhiev To: gljennjohn@gmail.com Cc: Konstantin Belousov , threads@freebsd.org, Bruce Evans , net@freebsd.org Content-Type: multipart/mixed; boundary=047d7bfcf874b8bfce052a251a15 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2016 09:22:16 -0000 --047d7bfcf874b8bfce052a251a15 Content-Type: text/plain; charset=UTF-8 kb>You defer to ppoll() and pselect() due to the struct timespec type of kb>the argument, am I right ? Yes. kb>BTW, just noted, I think the functions should live in libc/gen. Okay. Moving them. kb>Put each sentence on new line Done. kb>The CMTR define is only used once. I do not see why not inline it, and kb>get rid of the staircase of backslashes. Initially I wrote two CMTRs - one using pselect and the other using ppoll. I left it this way to easily switch between these and that's why I have this macro. I'll inline the code as suggested. kb>Also, it seems that the next unused bit is 0x80000. I noticed that as well and fixed it. kb>Still int for msg_len ? I'll convert it to ssize_t. kb>It probably makes sense to mark pointers with __restrict. Done. gj>This seems wrong. rcvd is initialized to 1 so that the check for gj>rcvd != 0 can never be false. We already successfully called gj>__sys_recvmsg() just above the loop, so why not simplify the gj>code by doing gj> gj> if (ret == -1) gj> return (rcvd); Fixed. On Sun, Jan 24, 2016 at 11:07 AM, Gary Jennejohn wrote: > On Sun, 24 Jan 2016 07:06:34 +0200 > Konstantin Belousov wrote: > > [delete irrelevant parts of the patch] > > > > + rcvd = 1; > > > + for (i = rcvd; i < vlen; i++) { > > i = rcvd = 1; ... i++, rcvd++ ? > > > > > + ret = __sys_recvmsg(s, &msgvec[i].msg_hdr, flags); > > > + if (ret == -1) { > > > + if (rcvd != 0) { > > > + /* We've received messages. Let caller > know. */ > > > > + return (rcvd); > > > + } > > > + return (ret); > > > + } > > > + > > This seems wrong. rcvd is initialized to 1 so that the check for > rcvd != 0 can never be false. We already successfully called > __sys_recvmsg() just above the loop, so why not simplify the > code by doing > > if (ret == -1) > return (rcvd); > > -- > Gary Jennejohn (gj@) > --047d7bfcf874b8bfce052a251a15 Content-Type: text/plain; charset=US-ASCII; name="sendrecvmmsg-libconly5.diff" Content-Disposition: attachment; filename="sendrecvmmsg-libconly5.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijtrkzeo0 ZGlmZiAtLWdpdCBhL2xpYi9saWJjL2dlbi9NYWtlZmlsZS5pbmMgYi9saWIvbGliYy9nZW4vTWFr ZWZpbGUuaW5jCmluZGV4IGI0NDg0NjEuLmY5ZDJmOGEgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL2dl bi9NYWtlZmlsZS5pbmMKKysrIGIvbGliL2xpYmMvZ2VuL01ha2VmaWxlLmluYwpAQCAtOTksMTEg Kzk5LDEzIEBAIFNSQ1MrPQlfX2dldG9zcmVsZGF0ZS5jIFwKIAlyYWlzZS5jIFwKIAlyZWFkZGly LmMgXAogCXJlYWRwYXNzcGhyYXNlLmMgXAorCXJlY3ZtbXNnLmMgXAogCXJld2luZGRpci5jIFwK IAlzY2FuZGlyLmMgXAogCXNlZWQ0OC5jIFwKIAlzZWVrZGlyLmMgXAogCXNlbWN0bC5jIFwKKwlz ZW5kbW1zZy5jIFwKIAlzZXRkb21haW5uYW1lLmMgXAogCXNldGhvc3RuYW1lLmMgXAogCXNldGpt cGVyci5jIFwKZGlmZiAtLWdpdCBhL2xpYi9saWJjL2dlbi9yZWN2bW1zZy5jIGIvbGliL2xpYmMv Z2VuL3JlY3ZtbXNnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4MzVi YQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9saWJjL2dlbi9yZWN2bW1zZy5jCkBAIC0wLDAgKzEs ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQm9yaXMgQXN0YXJkemhpZXYsIFNtYXJ0 Y29tLUJ1bGdhcmlhIEFECisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZShz KSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBh cworICogICAgdGhlIGZpcnN0IGxpbmVzIG9mIHRoaXMgZmlsZSB1bm1vZGlmaWVkIG90aGVyIHRo YW4gdGhlIHBvc3NpYmxlCisgKiAgICBhZGRpdGlvbiBvZiBvbmUgb3IgbW9yZSBjb3B5cmlnaHQg bm90aWNlcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UocyksIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAg IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD T1BZUklHSFQgSE9MREVSKFMpIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IENPUFlSSUdIVCBIT0xERVIoUykgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP RklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSV0lT RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsCisg KiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov CisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2lu Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N5 c2NhbGwuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3NlbGVjdC5o PgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlICJsaWJjX3ByaXZhdGUuaCIKKworc3Np emVfdAorcmVjdm1tc2coaW50IHMsIHN0cnVjdCBtbXNnaGRyICpfX3Jlc3RyaWN0IG1zZ3ZlYywg c2l6ZV90IHZsZW4sIGludCBmbGFncywKKyAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVz dHJpY3QgdGltZW91dCkKK3sKKwlzaXplX3QgaSwgcmN2ZDsKKwlzc2l6ZV90IHJldDsKKworCWlm ICh0aW1lb3V0ICE9IE5VTEwpIHsKKwkJZmRfc2V0IGZkczsKKwkJaW50IHJlczsKKworCQlGRF9a RVJPKCZmZHMpOworCQlGRF9TRVQocywgJmZkcyk7CisJCXJlcyA9IF9fc3lzX3BzZWxlY3QocyAr IDEsICZmZHMsIE5VTEwsIE5VTEwsIHRpbWVvdXQsIE5VTEwpOworCQlpZiAocmVzID09IC0xIHx8 IHJlcyA9PSAwKQorCQkJcmV0dXJuIChyZXMpOworCQlpZiAoIUZEX0lTU0VUKHMsICZmZHMpKQor CQkJcmV0dXJuICgtMSk7CisJfQorCisJcmV0ID0gX19zeXNfcmVjdm1zZyhzLCAmbXNndmVjWzBd Lm1zZ19oZHIsIGZsYWdzKTsKKwlpZiAocmV0ID09IC0xKQorCQlyZXR1cm4gKHJldCk7CisKKwkv KiBDaGVjayBpbml0aWFsbHkgZm9yIHRoZSBwcmVzZW5jZSBvZiBNU0dfV0FJVEZPUk9ORS4KKwkg KiBUdXJuIG9uIE1TR19ET05UV0FJVCBpZiBzZXQuICovCisJaWYgKGZsYWdzICYgTVNHX1dBSVRG T1JPTkUpIHsKKwkJZmxhZ3MgfD0gTVNHX0RPTlRXQUlUOworCQkvKiBUaGUga2VybmVsIGRvZXNu J3QgbmVlZCB0byBrbm93IGFib3V0IHRoaXMgZmxhZy4gKi8KKwkJZmxhZ3MgJj0gfk1TR19XQUlU Rk9ST05FOworCX0KKworCXJjdmQgPSAxOworCWZvciAoaSA9IHJjdmQ7IGkgPCB2bGVuOyBpKyss IHJjdmQrKykgeworCQlyZXQgPSBfX3N5c19yZWN2bXNnKHMsICZtc2d2ZWNbaV0ubXNnX2hkciwg ZmxhZ3MpOworCQlpZiAocmV0ID09IC0xKSB7CisJCQkvKiBXZSBoYXZlIHJlY2VpdmVkIG1lc3Nh Z2VzLiBMZXQgY2FsbGVyIGtub3cuICovCisJCQlyZXR1cm4gKHJjdmQpOworCQl9CisKKwkJLyog U2F2ZSByZWNlaXZlZCBieXRlcyAqLworCQltc2d2ZWNbaV0ubXNnX2xlbiA9IHJldDsKKwl9CisK KwlyZXR1cm4gKHJjdmQpOworfQpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvZ2VuL3NlbmRtbXNnLmMg Yi9saWIvbGliYy9nZW4vc2VuZG1tc2cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lNGU2MmE0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYmMvZ2VuL3NlbmRtbXNnLmMK QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBCb3JpcyBBc3RhcmR6 aGlldiwgU21hcnRjb20tQnVsZ2FyaWEgQUQKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog ICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGFzCisgKiAgICB0aGUgZmlyc3QgbGluZXMgb2YgdGhpcyBmaWxlIHVubW9kaWZp ZWQgb3RoZXIgdGhhbiB0aGUgcG9zc2libGUKKyAqICAgIGFkZGl0aW9uIG9mIG9uZSBvciBtb3Jl IGNvcHlyaWdodCBub3RpY2VzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZShzKSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICog ICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBCRQorICogTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE QVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisgKiBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRQorICog T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwKKyAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorX19GQlNESUQoIiRGcmVlQlNE JCIpOworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNs dWRlIDxzeXMvc3lzY2FsbC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxw dGhyZWFkLmg+CisjaW5jbHVkZSAibGliY19wcml2YXRlLmgiCisKK3NzaXplX3QKK3NlbmRtbXNn KGludCBzLCBzdHJ1Y3QgbW1zZ2hkciAqX19yZXN0cmljdCBtc2d2ZWMsIHNpemVfdCB2bGVuLCBp bnQgZmxhZ3MpCit7CisJc2l6ZV90IGksIHNlbnQ7CisJc3NpemVfdCByZXQ7CisKKwlzZW50ID0g MDsKKwlmb3IgKGkgPSAwOyBpIDwgdmxlbjsgaSsrLCBzZW50KyspIHsKKwkJcmV0ID0gX19zeXNf c2VuZG1zZyhzLCAmbXNndmVjW2ldLm1zZ19oZHIsIGZsYWdzKTsKKwkJaWYgKHJldCA9PSAtMSkg eworCQkJaWYgKHNlbnQgIT0gMCkgeworCQkJCS8qIFdlIGhhdmUgc2VudCBtZXNzYWdlcy4gTGV0 IGNhbGxlciBrbm93LiAqLworCQkJCXJldHVybiAoc2VudCk7CisJCQl9CisJCQlyZXR1cm4gKHJl dCk7CisJCX0KKworCQkvKiBTYXZlIHNlbnQgYnl0ZXMgKi8KKwkJbXNndmVjW2ldLm1zZ19sZW4g PSByZXQ7CisJfQorCisJcmV0dXJuIChzZW50KTsKK30KZGlmZiAtLWdpdCBhL2xpYi9saWJjL2lu Y2x1ZGUvbmFtZXNwYWNlLmggYi9saWIvbGliYy9pbmNsdWRlL25hbWVzcGFjZS5oCmluZGV4IDcz OWQ3YjEuLmM5NTgyOWUgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL2luY2x1ZGUvbmFtZXNwYWNlLmgK KysrIGIvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2UuaApAQCAtMjA4LDYgKzIwOCw3IEBACiAj ZGVmaW5lCQlyZWFkdgkJCQlfcmVhZHYKICNkZWZpbmUJCXJlY3Zmcm9tCQkJX3JlY3Zmcm9tCiAj ZGVmaW5lCQlyZWN2bXNnCQkJCV9yZWN2bXNnCisjZGVmaW5lCQlyZWN2bW1zZwkJCV9yZWN2bW1z ZwogI2RlZmluZQkJc2VsZWN0CQkJCV9zZWxlY3QKICNkZWZpbmUJCXNlbV9jbG9zZQkJCV9zZW1f Y2xvc2UKICNkZWZpbmUJCXNlbV9kZXN0cm95CQkJX3NlbV9kZXN0cm95CkBAIC0yMjAsNiArMjIx LDcgQEAKICNkZWZpbmUJCXNlbV91bmxpbmsJCQlfc2VtX3VubGluawogI2RlZmluZQkJc2VtX3dh aXQJCQlfc2VtX3dhaXQKICNkZWZpbmUJCXNlbmRtc2cJCQkJX3NlbmRtc2cKKyNkZWZpbmUJCXNl bmRtbXNnCQkJX3NlbmRtbXNnCiAjZGVmaW5lCQlzZW5kdG8JCQkJX3NlbmR0bwogI2RlZmluZQkJ c2V0c29ja29wdAkJCV9zZXRzb2Nrb3B0CiAvKiNkZWZpbmUJCXNpZ2FjdGlvbgkJCV9zaWdhY3Rp b24qLwpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvaW5jbHVkZS91bi1uYW1lc3BhY2UuaCBiL2xpYi9s aWJjL2luY2x1ZGUvdW4tbmFtZXNwYWNlLmgKaW5kZXggZjMxZmE3YS4uMDIzMzM0OCAxMDA2NDQK LS0tIGEvbGliL2xpYmMvaW5jbHVkZS91bi1uYW1lc3BhY2UuaAorKysgYi9saWIvbGliYy9pbmNs dWRlL3VuLW5hbWVzcGFjZS5oCkBAIC0xODksNiArMTg5LDcgQEAKICN1bmRlZgkJcmVhZHYKICN1 bmRlZgkJcmVjdmZyb20KICN1bmRlZgkJcmVjdm1zZworI3VuZGVmCQlyZWN2bW1zZwogI3VuZGVm CQlzZWxlY3QKICN1bmRlZgkJc2VtX2Nsb3NlCiAjdW5kZWYJCXNlbV9kZXN0cm95CkBAIC0yMDEs NiArMjAyLDcgQEAKICN1bmRlZgkJc2VtX3VubGluawogI3VuZGVmCQlzZW1fd2FpdAogI3VuZGVm CQlzZW5kbXNnCisjdW5kZWYJCXNlbmRtbXNnCiAjdW5kZWYJCXNlbmR0bwogI3VuZGVmCQlzZXRz b2Nrb3B0CiAjdW5kZWYJCXNpZ2FjdGlvbgpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvc3lzL1N5bWJv bC5tYXAgYi9saWIvbGliYy9zeXMvU3ltYm9sLm1hcAppbmRleCA3YjMyNTdjLi5kYzJlZDBlIDEw MDY0NAotLS0gYS9saWIvbGliYy9zeXMvU3ltYm9sLm1hcAorKysgYi9saWIvbGliYy9zeXMvU3lt Ym9sLm1hcApAQCAtMzk5LDYgKzM5OSw4IEBAIEZCU0RfMS40IHsKIAl1dGltZW5zYXQ7CiAJbnVt YV9zZXRhZmZpbml0eTsKIAludW1hX2dldGFmZmluaXR5OworCXNlbmRtbXNnOworCXJlY3ZtbXNn OwogfTsKIAogRkJTRHByaXZhdGVfMS4wIHsKZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9yZWN2 LjIgYi9saWIvbGliYy9zeXMvcmVjdi4yCmluZGV4IDMyNmU3ZmYuLmU5NDAzNjQgMTAwNjQ0Ci0t LSBhL2xpYi9saWJjL3N5cy9yZWN2LjIKKysrIGIvbGliL2xpYmMvc3lzL3JlY3YuMgpAQCAtMzQs OCArMzQsOSBAQAogLlNoIE5BTUUKIC5ObSByZWN2ICwKIC5ObSByZWN2ZnJvbSAsCi0uTm0gcmVj dm1zZwotLk5kIHJlY2VpdmUgYSBtZXNzYWdlIGZyb20gYSBzb2NrZXQKKy5ObSByZWN2bXNnICwK Ky5ObSByZWN2bW1zZworLk5kIHJlY2VpdmUgbWVzc2FnZShzKSBmcm9tIGEgc29ja2V0CiAuU2gg TElCUkFSWQogLkxiIGxpYmMKIC5TaCBTWU5PUFNJUwpAQCAtNDcsMTEgKzQ4LDE1IEBACiAuRm4g cmVjdmZyb20gImludCBzIiAidm9pZCAqYnVmIiAic2l6ZV90IGxlbiIgImludCBmbGFncyIgInN0 cnVjdCBzb2NrYWRkciAqIHJlc3RyaWN0IGZyb20iICJzb2NrbGVuX3QgKiByZXN0cmljdCBmcm9t bGVuIgogLkZ0IHNzaXplX3QKIC5GbiByZWN2bXNnICJpbnQgcyIgInN0cnVjdCBtc2doZHIgKm1z ZyIgImludCBmbGFncyIKKy5GdCBzc2l6ZV90CisuRm4gcmVjdm1tc2cgImludCBzIiAic3RydWN0 IG1tc2doZHIgKiByZXN0cmljdCBtc2d2ZWMiICJzaXplX3QgdmxlbiIgImludCBmbGFncyIgImNv bnN0IHN0cnVjdCB0aW1lc3BlYyAqIHJlc3RyaWN0IHRpbWVvdXQiCiAuU2ggREVTQ1JJUFRJT04K IFRoZQogLkZuIHJlY3Zmcm9tCiBhbmQKIC5GbiByZWN2bXNnCithbmQKKy5GbiByZWN2bW1zZwog c3lzdGVtIGNhbGxzCiBhcmUgdXNlZCB0byByZWNlaXZlIG1lc3NhZ2VzIGZyb20gYSBzb2NrZXQs CiBhbmQgbWF5IGJlIHVzZWQgdG8gcmVjZWl2ZSBkYXRhIG9uIGEgc29ja2V0IHdoZXRoZXIgb3Ig bm90CkBAIC04NCw4ICs4OSwyOSBAQCBudWxsIHBvaW50ZXIgcGFzc2VkIGFzIGl0cwogLkZhIGZy b20KIGFyZ3VtZW50LgogLlBwCi1BbGwgdGhyZWUgcm91dGluZXMgcmV0dXJuIHRoZSBsZW5ndGgg b2YgdGhlIG1lc3NhZ2Ugb24gc3VjY2Vzc2Z1bAotY29tcGxldGlvbi4KK1RoZQorLkZuIHJlY3Zt bXNnCitmdW5jdGlvbiBpcyB1c2VkIHRvIHJlY2VpdmUgbXVsdGlwbGUKK21lc3NhZ2VzIGF0IGEg Y2FsbC4KK1RoZWlyIG51bWJlciBpcyBzdXBwbGllZCBieQorLkZhIHZsZW4gLgorVGhlIG1lc3Nh Z2VzIGFyZSBwbGFjZWQgaW4gdGhlCisuRmEgbXNndmVjCit2ZWN0b3IgYWZ0ZXIgcmVjZXB0aW9u LgorVGhlIHNpemUgb2YgZWFjaCByZWNlaXZlZCBtZXNzYWdlIGlzIHBsYWNlZCBpbiB0aGUKKy5G YSBtc2dfbGVuCitmaWVsZCBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIHZlY3Rvci4KK0lmCisuRmEg dGltZW91dAoraXMgTlVMTCB0aGUgY2FsbCB3aWxsIG5vcm1hbGx5IGJsb2NrLgorT3RoZXJ3aXNl IGl0IHdpbGwgd2FpdCBmb3IgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZS4K K0lmIHRoZSB0aW1lb3V0IGV4cGlyZXMgYW5kIHRoZXJlIGlzIG5vIGRhdGEgcmVjZWl2ZWQgYSB2 YWx1ZSBvZiAwIGlzIHJldHVybmVkLgorcHNlbGVjdCgyKSBpcyB1c2VkIGZvciB0aGUgaW1wbGVt ZW50YXRpb24gb2YgdGhlIHRpbWVvdXQgbWVjaGFuaXNtLgorLlBwCitUaGUgZmlyc3QgdGhyZWUg cm91dGluZXMgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2Ugb24gc3VjY2Vzc2Z1bAor Y29tcGxldGlvbiB3aGVyZWFzCisuRm4gcmVjdm1tc2cKK3JldHVybnMgdGhlIG51bWJlciBvZiBy ZWNlaXZlZCBtZXNzYWdlcy4KIElmIGEgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBmaXQgaW4gdGhl IHN1cHBsaWVkIGJ1ZmZlciwKIGV4Y2VzcyBieXRlcyBtYXkgYmUgZGlzY2FyZGVkIGRlcGVuZGlu ZyBvbiB0aGUgdHlwZSBvZiBzb2NrZXQKIHRoZSBtZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gKHNl ZQpAQCAtMTAwLDcgKzEyNiw5IEBAIGluIHdoaWNoIGNhc2UgdGhlIHZhbHVlCiAuVmEgZXJybm8K IGlzIHNldCB0bwogLkVyIEVBR0FJTiAuCi1UaGUgcmVjZWl2ZSBjYWxscyBub3JtYWxseSByZXR1 cm4gYW55IGRhdGEgYXZhaWxhYmxlLAorVGhlIHJlY2VpdmUgY2FsbHMgZXhjZXB0CisuRm4gcmVj dm1tc2cKK25vcm1hbGx5IHJldHVybiBhbnkgZGF0YSBhdmFpbGFibGUsCiB1cCB0byB0aGUgcmVx dWVzdGVkIGFtb3VudCwKIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIHJlY2VpcHQgb2YgdGhlIGZ1 bGwgYW1vdW50IHJlcXVlc3RlZDsKIHRoaXMgYmVoYXZpb3IgaXMgYWZmZWN0ZWQgYnkgdGhlIHNv Y2tldC1sZXZlbCBvcHRpb25zCkBAIC0xMjcsNiArMTU1LDkgQEAgb25lIG9yIG1vcmUgb2YgdGhl IHZhbHVlczoKIC5JdCBEdiBNU0dfV0FJVEFMTCBUYSB3YWl0IGZvciBmdWxsIHJlcXVlc3Qgb3Ig ZXJyb3IKIC5JdCBEdiBNU0dfRE9OVFdBSVQgVGEgZG8gbm90IGJsb2NrCiAuSXQgRHYgTVNHX0NN U0dfQ0xPRVhFQyBUYSBzZXQgcmVjZWl2ZWQgZmRzIGNsb3NlLW9uLWV4ZWMKKy5JdCBEdiBNU0df V0FJVEZPUk9ORSBUYSBkbyBub3QgYmxvY2sgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBmaXJzdCBtZXNz YWdlCisocmVsZXZhbnQgb25seSBmb3IKKy5GbiByZWN2bW1zZyApCiAuRWwKIC5QcAogVGhlCkBA IC0xNTgsNiArMTg5LDExIEBAIGlzIHNldCB0bwogVGhpcyBmbGFnIGlzIG5vdCBhdmFpbGFibGUg aW4gc3RyaWN0CiAuVG4gQU5TSQogb3IgQzk5IGNvbXBpbGF0aW9uIG1vZGUuCitUaGUKKy5EdiBN U0dfV0FJVEZPUk9ORQorZmxhZyBzZXRzIE1TR19ET05UV0FJVCBhZnRlciB0aGUgZmlyc3QgbWVz c2FnZSBoYXMgYmVlbiByZWNlaXZlZC4KK1RoaXMgZmxhZyBpcyBvbmx5IHJlbGV2YW50IGZvcgor LkZuIHJlY3ZtbXNnIC4KIC5QcAogVGhlCiAuRm4gcmVjdm1zZwpAQCAtMjkwLDkgKzMyNiwzMyBA QCBjb250cm9sIGRhdGEgd2VyZSBkaXNjYXJkZWQgZHVlIHRvIGxhY2sgb2Ygc3BhY2UgaW4gdGhl IGJ1ZmZlcgogZm9yIGFuY2lsbGFyeSBkYXRhLgogLkR2IE1TR19PT0IKIGlzIHJldHVybmVkIHRv IGluZGljYXRlIHRoYXQgZXhwZWRpdGVkIG9yIG91dC1vZi1iYW5kIGRhdGEgd2VyZSByZWNlaXZl ZC4KKy5QcAorVGhlCisuRm4gcmVjdm1tc2cKK3N5c3RlbSBjYWxsIHVzZXMgdGhlCisuRmEgbW1z Z2hkcgorc3RydWN0dXJlLiBJdHMgZm9ybSBpcyBhcyBmb2xsb3dzLCBhcyBkZWZpbmVkIGluCisu SW4gc3lzL3NvY2tldC5oIDoKKy5CZCAtbGl0ZXJhbAorc3RydWN0IG1tc2doZHIgeworCXN0cnVj dCBtc2doZHIJIG1zZ19oZHI7CS8qIG1lc3NhZ2UgaGVhZGVyICovCisJc3NpemVfdAkJIG1zZ19s ZW47CS8qIG1lc3NhZ2UgbGVuZ3RoICovCit9OworLkVkCisuUHAKK0ZvcgorLkZhIG1zZ19oZHIK K3NlZSBhYm92ZS4gT24gZGF0YSByZWNlcHRpb24gdGhlCisuRmEgbXNnX2xlbgorZmllbGQgaXMg dXBkYXRlZCB0byB0aGUgbGVuZ3RoIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlLgorT24gZGF0YSB0 cmFuc21pc3Npb24gaXQgaXMgdXBkYXRlZCB0byB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgc2Vu dC4KIC5TaCBSRVRVUk4gVkFMVUVTCi1UaGVzZSBjYWxscyByZXR1cm4gdGhlIG51bWJlciBvZiBi eXRlcyByZWNlaXZlZCwgb3IgLTEKLWlmIGFuIGVycm9yIG9jY3VycmVkLgorVGhlc2UgY2FsbHMg ZXhjZXB0CisuRm4gcmVjdm1tc2cKK3JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVk LgorLkZuIHJlY3ZtbXNnCityZXR1cm5zIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgcmVjZWl2ZWQu CitBIHZhbHVlIG9mIC0xIGlzIHJldHVybmVkIGlmIGFuIGVycm9yIG9jY3VycmVkLgogLlNoIEVS Uk9SUwogVGhlIGNhbGxzIGZhaWwgaWY6CiAuQmwgLXRhZyAtd2lkdGggRXIKZGlmZiAtLWdpdCBh L2xpYi9saWJjL3N5cy9zZW5kLjIgYi9saWIvbGliYy9zeXMvc2VuZC4yCmluZGV4IDhmYTJjNjQu Ljk4MTBhY2UgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL3N5cy9zZW5kLjIKKysrIGIvbGliL2xpYmMv c3lzL3NlbmQuMgpAQCAtMzQsOCArMzQsOSBAQAogLlNoIE5BTUUKIC5ObSBzZW5kICwKIC5ObSBz ZW5kdG8gLAotLk5tIHNlbmRtc2cKLS5OZCBzZW5kIGEgbWVzc2FnZSBmcm9tIGEgc29ja2V0Cisu Tm0gc2VuZG1zZyAsCisuTm0gc2VuZG1tc2cKKy5OZCBzZW5kIG1lc3NhZ2UocykgZnJvbSBhIHNv Y2tldAogLlNoIExJQlJBUlkKIC5MYiBsaWJjCiAuU2ggU1lOT1BTSVMKQEAgLTQ3LDYgKzQ4LDgg QEAKIC5GbiBzZW5kdG8gImludCBzIiAiY29uc3Qgdm9pZCAqbXNnIiAic2l6ZV90IGxlbiIgImlu dCBmbGFncyIgImNvbnN0IHN0cnVjdCBzb2NrYWRkciAqdG8iICJzb2NrbGVuX3QgdG9sZW4iCiAu RnQgc3NpemVfdAogLkZuIHNlbmRtc2cgImludCBzIiAiY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNn IiAiaW50IGZsYWdzIgorLkZ0IHNzaXplX3QKKy5GbiBzZW5kbW1zZyAiaW50IHMiICJzdHJ1Y3Qg bW1zZ2hkciAqIHJlc3RyaWN0IG1zZ3ZlYyIgInNpemVfdCB2bGVuIiAiaW50IGZsYWdzIgogLlNo IERFU0NSSVBUSU9OCiBUaGUKIC5GbiBzZW5kCkBAIC01NSw4ICs1OCwxMSBAQCBhbmQKIC5GbiBz ZW5kdG8KIGFuZAogLkZuIHNlbmRtc2cKK2FuZAorLkZuIHNlbmRtbXNnCiBzeXN0ZW0gY2FsbHMK LWFyZSB1c2VkIHRvIHRyYW5zbWl0IGEgbWVzc2FnZSB0byBhbm90aGVyIHNvY2tldC4KK2FyZSB1 c2VkIHRvIHRyYW5zbWl0IG9uZSBvciBtdWx0aXBsZSBtZXNzYWdlcyAod2l0aCB0aGUgbGF0dGVy IGNhbGwpIHRvCithbm90aGVyIHNvY2tldC4KIFRoZQogLkZuIHNlbmQKIGZ1bmN0aW9uCkBAIC02 Niw2ICs3Miw4IEBAIHN0YXRlLCB3aGlsZQogLkZuIHNlbmR0bwogYW5kCiAuRm4gc2VuZG1zZwor YW5kCisuRm4gc2VuZG1tc2cKIG1heSBiZSB1c2VkIGF0IGFueSB0aW1lLgogLlBwCiBUaGUgYWRk cmVzcyBvZiB0aGUgdGFyZ2V0IGlzIGdpdmVuIGJ5CkBAIC04MSw2ICs4OSwxOCBAQCB1bmRlcmx5 aW5nIHByb3RvY29sLCB0aGUgZXJyb3IKIGlzIHJldHVybmVkLCBhbmQKIHRoZSBtZXNzYWdlIGlz IG5vdCB0cmFuc21pdHRlZC4KIC5QcAorVGhlCisuRm4gc2VuZG1tc2cKK2Z1bmN0aW9uIHNlbmRz IG11bHRpcGxlIG1lc3NhZ2VzIGF0IGEgY2FsbC4KK1RoZXkgYXJlIGdpdmVuIGJ5IHRoZQorLkZh IG1zZ3ZlYwordmVjdG9yIGFsb25nIHdpdGgKKy5GYSB2bGVuCitzcGVjaWZ5aW5nIGl0cyBzaXpl LgorVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHNlbnQgcGVyIGVhY2ggbWVzc2FnZSBpcyBwbGFj ZWQgaW4gdGhlCisuRmEgbXNnX2xlbgorZmllbGQgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSB2ZWN0 b3IgYWZ0ZXIgdHJhbnNtaXNzaW9uLgorLlBwCiBObyBpbmRpY2F0aW9uIG9mIGZhaWx1cmUgdG8g ZGVsaXZlciBpcyBpbXBsaWNpdCBpbiBhCiAuRm4gc2VuZCAuCiBMb2NhbGx5IGRldGVjdGVkIGVy cm9ycyBhcmUgaW5kaWNhdGVkIGJ5IGEgcmV0dXJuIHZhbHVlIG9mIC0xLgpAQCAtMTM4LDEwICsx NTgsMTYgQEAgU2VlCiAuWHIgcmVjdiAyCiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKIC5GYSBt c2doZHIKK3N0cnVjdHVyZSBhbmQgdGhlCisuRmEgbW1zZ2hkcgogc3RydWN0dXJlLgogLlNoIFJF VFVSTiBWQUxVRVMKLVRoZSBjYWxsIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHNl bnQsIG9yIC0xCi1pZiBhbiBlcnJvciBvY2N1cnJlZC4KK0FsbCBjYWxscyBleGNlcHQKKy5GbiBz ZW5kbW1zZworcmV0dXJuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBzZW50LiBUaGUKKy5GbiBz ZW5kbW1zZworY2FsbCByZXR1cm5zIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgc2VudC4KK0lmIGFu IGVycm9yIG9jY3VycmVkIGEgdmFsdWUgb2YgLTEgaXMgcmV0dXJuZWQuCiAuU2ggRVJST1JTCiBU aGUKIC5GbiBzZW5kCkBAIC0xNDksNiArMTc1LDggQEAgZnVuY3Rpb24gYW5kCiAuRm4gc2VuZHRv CiBhbmQKIC5GbiBzZW5kbXNnCithbmQKKy5GbiBzZW5kbW1zZwogc3lzdGVtIGNhbGxzCiBmYWls IGlmOgogLkJsIC10YWcgLXdpZHRoIEVyCmRpZmYgLS1naXQgYS9zeXMvc3lzL3NvY2tldC5oIGIv c3lzL3N5cy9zb2NrZXQuaAppbmRleCAxOGUyZGUxLi5jN2EyMWNjIDEwMDY0NAotLS0gYS9zeXMv c3lzL3NvY2tldC5oCisrKyBiL3N5cy9zeXMvc29ja2V0LmgKQEAgLTQzMSw2ICs0MzEsOSBAQCBz dHJ1Y3QgbXNnaGRyIHsKICNkZWZpbmUJTVNHX05CSU8JMHg0MDAwCQkvKiBGSU9OQklPIG1vZGUs IHVzZWQgYnkgZmlmb2ZzICovCiAjZGVmaW5lCU1TR19DT01QQVQgICAgICAweDgwMDAJCS8qIHVz ZWQgaW4gc2VuZGl0KCkgKi8KICNkZWZpbmUJTVNHX0NNU0dfQ0xPRVhFQyAweDQwMDAwCS8qIG1h a2UgcmVjZWl2ZWQgZmRzIGNsb3NlLW9uLWV4ZWMgKi8KKyNpZm5kZWYgX0tFUk5FTAorI2RlZmlu ZSBNU0dfV0FJVEZPUk9ORQkweDgwMDAwCQkvKiBmb3IgcmVjdm1tc2coKSAqLworI2VuZGlmIC8q ICFfS0VSTkVMICovCiAjZW5kaWYKICNpZmRlZiBfS0VSTkVMCiAjZGVmaW5lCU1TR19TT0NBTExC Q0sgICAweDEwMDAwCQkvKiBmb3IgdXNlIGJ5IHNvY2tldCBjYWxsYmFja3MgLSBzb3JlY2VpdmUg KFRDUCkgKi8KQEAgLTU5NSw2ICs1OTgsMTggQEAgc3RydWN0IHNmX2hkdHIgewogI2VuZGlmIC8q IF9LRVJORUwgKi8KICNlbmRpZiAvKiBfX0JTRF9WSVNJQkxFICovCiAKKyNpZm5kZWYgX0tFUk5F TAorI2lmZGVmIF9fQlNEX1ZJU0lCTEUKKy8qCisgKiBTZW5kL3JlY3ZtbXNnIHNwZWNpZmljIHN0 cnVjdHVyZShzKQorICovCitzdHJ1Y3QgbW1zZ2hkciB7CisJc3RydWN0IG1zZ2hkcgltc2dfaGRy OwkJLyogbWVzc2FnZSBoZWFkZXIgKi8KKwlzc2l6ZV90CQltc2dfbGVuOwkJLyogbWVzc2FnZSBs ZW5ndGggKi8KK307CisjZW5kaWYgLyogX19CU0RfVklTSUJMRSAqLworI2VuZGlmIC8qICFfS0VS TkVMICovCisKICNpZm5kZWYJX0tFUk5FTAogCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CkBAIC02 MTUsMTEgKzYzMCwxOSBAQCBpbnQJbGlzdGVuKGludCwgaW50KTsKIHNzaXplX3QJcmVjdihpbnQs IHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogc3NpemVfdAlyZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6 ZV90LCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqIF9fcmVzdHJpY3QsIHNvY2tsZW5fdCAqIF9fcmVz dHJpY3QpOwogc3NpemVfdAlyZWN2bXNnKGludCwgc3RydWN0IG1zZ2hkciAqLCBpbnQpOworI2lm IF9fQlNEX1ZJU0lCTEUKK3N0cnVjdCB0aW1lc3BlYzsKK3NzaXplX3QJcmVjdm1tc2coaW50LCBz dHJ1Y3QgbW1zZ2hkciAqIF9fcmVzdHJpY3QsIHNpemVfdCwgaW50LAorICAgIGNvbnN0IHN0cnVj dCB0aW1lc3BlYyAqIF9fcmVzdHJpY3QpOworI2VuZGlmCiBzc2l6ZV90CXNlbmQoaW50LCBjb25z dCB2b2lkICosIHNpemVfdCwgaW50KTsKIHNzaXplX3QJc2VuZHRvKGludCwgY29uc3Qgdm9pZCAq LAogCSAgICBzaXplX3QsIGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7 CiBzc2l6ZV90CXNlbmRtc2coaW50LCBjb25zdCBzdHJ1Y3QgbXNnaGRyICosIGludCk7CiAjaWYg X19CU0RfVklTSUJMRQorc3NpemVfdAlzZW5kbW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRyICogX19y ZXN0cmljdCwgc2l6ZV90LCBpbnQpOworI2VuZGlmCisjaWYgX19CU0RfVklTSUJMRQogaW50CXNl bmRmaWxlKGludCwgaW50LCBvZmZfdCwgc2l6ZV90LCBzdHJ1Y3Qgc2ZfaGR0ciAqLCBvZmZfdCAq LCBpbnQpOwogaW50CXNldGZpYihpbnQpOwogI2VuZGlmCg== --047d7bfcf874b8bfce052a251a15--