From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o91.zoho.com [136.143.188.91]) by sourceware.org (Postfix) with ESMTPS id 2A3493858409; Tue, 23 Nov 2021 02:01:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2A3493858409 ARC-Seal: i=1; a=rsa-sha256; t=1637632891; cv=none; d=zohomail.com; s=zohoarc; b=G4480oTxR05h928vj8wFTMI/Arb4hLgKpK5iNKsx7DQj8vwZXsW9Zmd42SL8BwCjarA5VTYf6kBFGDKKSONwI8mUUy9/Fv/drDLRIr/ZKrYfiTWkztF3P2CamibNTmcuDDepz17SyeNdJsdzm7uVz5IRxSSIJ/gwxlzmK/M0vKE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637632891; h=Content-Type:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=jRLmSTyUaHjjM/Rhnfg8T9K3Oz/YZj3/hob7G7Ya6AE=; b=IYPJoQp0OyzFojVfVm/JLWh4OTZXZxJSNQZhsHlx4Iifc4GKPnUbGR4SLJ7jVpC+QCzijksJ/asYPR+rw7GHp1sP3mM7j21c8Oi/PSl4h2kPrlQMgP/3LXbRrdcOBrBV+aABuv3T/rIpNfRUbUshV8/0OfWEW4NtF++gHTVrf2M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1637632887419753.8189288500572; Mon, 22 Nov 2021 18:01:27 -0800 (PST) Message-ID: Subject: Re: [PATCH] libgccjit: Add function to set the initial value of a global variable [PR96089] From: Antoni Boucher To: David Malcolm Cc: jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Date: Mon, 22 Nov 2021 21:01:25 -0500 In-Reply-To: <62c178b5bb0ab004def3c7869da2b03846e5134c.camel@zoho.com> References: <7d6762623f658712a4b802cc3d6524c106affa2b.camel@zoho.com> <62c178b5bb0ab004def3c7869da2b03846e5134c.camel@zoho.com> Content-Type: multipart/mixed; boundary="=-1DBsgS0gWJPe0N2bD17I" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Nov 2021 02:01:49 -0000 --=-1DBsgS0gWJPe0N2bD17I Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi David! I updated the patch to allow initializing global variables with values of type array or struct. I also fixed the bug I was talking in my previous message by using the following workaround: I create a new memento for the action of setting the global variable initial value and as such, both the global variable and the initial value are bound to exist when setting the global variable initializer. Is that workaround good enough? (I guess that workaround could be used to fix the same issue that we have for inline assembly.) Thanks for the review! Le vendredi 11 juin 2021 =C3=A0 16:44 -0400, Antoni Boucher a =C3=A9crit=C2= =A0: > David: this one wasn't reviewed yet by you, so you can review it. >=20 > Le jeudi 20 mai 2021 =C3=A0 21:27 -0400, Antoni Boucher a =C3=A9crit=C2= =A0: > > Hi. > >=20 > > I made this patch to set an arbitrary value to a global variable. > >=20 > > This patch suffers from the same issue as inline assembly > > (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D100380), i.e. it > > segfaults if the `rvalue` is created after the global variable. > > It seems to be a design issue so I'm not sure what would be the fix > > for > > it and having it fixed would allow me to test this new function > > much > > more and see if things are missing (i.e. it might require a way to > > create a constant struct). > > See the link above for an explanation of this issue. > >=20 > > Thanks for the review. >=20 --=-1DBsgS0gWJPe0N2bD17I Content-Disposition: attachment; filename*0=0001-libgccjit-Add-function-to-set-the-initial-value-of-a.pat; filename*1=ch Content-Type: text/x-patch; name="0001-libgccjit-Add-function-to-set-the-initial-value-of-a.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhMDk1MjkxZjQzY2E4MzQ4YjZjODRmOTRhNTk4ODk1OTY5ZDk0ZDFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogU2F0LCAyNSBTZXAgMjAyMSAxNjozNzo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmdj Y2ppdDogQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBhIGdsb2JhbAog dmFyaWFibGUgW1BSOTYwODldCgoyMDIxLTExLTIyICBBbnRvbmkgQm91Y2hlciAgPGJvdWFudG9A em9oby5jb20+CgogICAgZ2NjL2ppdC8KICAgICAgICAgICAgUFIgdGFyZ2V0Lzk2MDg5CiAgICAg ICAgICAgICogZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QgKExJQkdDQ0pJVF9BQklfMjEp OiBOZXcgQUJJCiAgICAgICAgICAgIHRhZy4KICAgICAgICAgICAgKiBkb2NzL3RvcGljcy9leHBy ZXNzaW9ucy5yc3Q6IEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUKICAgICAgICAgICAgZnVuY3Rp b24gZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3ZhbHVlLAogICAgICAgICAgICBnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2FycmF5LAogICAgICAgICAgICBhbmQgZ2NjX2pp dF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9zdHJ1Y3QuCiAgICAgICAgICAgICogaml0LWNvbW1v bi5oOiBBZGQgbWlzc2luZyByZWZlcmVuY2UgdG8gYXJyYXlfdHlwZSBpbiBjbGFzcwogICAgICAg ICAgICBoaWVyYXJjaHkuCiAgICAgICAgICAgICogaml0LXBsYXliYWNrLmM6IE5ldyBmdW5jdGlv bnMgKG5ld19nbG9iYWxfd2l0aF92YWx1ZSwKICAgICAgICAgICAgc2V0X2dsb2JhbF9pbml0aWFs X3ZhbHVlLCBuZXdfcnZhbHVlX2Zyb21fc3RydWN0LCBuZXdfcnZhbHVlX2Zyb21fYXJyYXkpLgog ICAgICAgICAgICAqIGppdC1wbGF5YmFjay5oOiBOZXcgZnVuY3Rpb25zIChuZXdfZ2xvYmFsX3dp dGhfdmFsdWUsCiAgICAgICAgICAgIHNldF9nbG9iYWxfaW5pdGlhbF92YWx1ZSwgbmV3X3J2YWx1 ZV9mcm9tX3N0cnVjdCwgbmV3X3J2YWx1ZV9mcm9tX2FycmF5KS4KICAgICAgICAgICAgKiBqaXQt cmVjb3JkaW5nLmM6IEFkZCBzdXBwb3J0IGZvciBzZXR0aW5nIGEgdmFsdWUgdG8gYQogICAgICAg ICAgICBnbG9iYWwgdmFyaWFibGUgYW5kIG5ldyBtZXRob2RzCiAgICAgICAgICAgIChnbG9iYWxf aW5pdGlhbGl6ZXI6OndyaXRlX3JlcHJvZHVjZXIsCiAgICAgICAgICAgIGdsb2JhbF9pbml0aWFs aXplcjo6bWFrZV9kZWJ1Z19zdHJpbmcsCiAgICAgICAgICAgIGdsb2JhbF9pbml0aWFsaXplcjo6 d3JpdGVfdG9fZHVtcCwKICAgICAgICAgICAgZ2xvYmFsX2luaXRpYWxpemVyOjpyZXBsYXlfaW50 bywKICAgICAgICAgICAgY29udGV4dDo6bmV3X2dsb2JhbF92YWx1ZV9pbml0aWFsaXplciwKICAg ICAgICAgICAgbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fc3RydWN0Ojp3cml0ZV9yZXByb2R1 Y2VyLAogICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9zdHJ1Y3Q6Om1ha2Vf ZGVidWdfc3RyaW5nLAogICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9zdHJ1 Y3Q6OnZpc2l0X2NoaWxkcmVuLAogICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJv bV9zdHJ1Y3Q6OnJlcGxheV9pbnRvLAogICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVf ZnJvbV9zdHJ1Y3Q6OgogICAgICAgICAgICAgIG1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX3N0 cnVjdCwKICAgICAgICAgICAgY29udGV4dDo6bmV3X3J2YWx1ZV9mcm9tX3N0cnVjdCwKICAgICAg ICAgICAgbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fYXJyYXk6OndyaXRlX3JlcHJvZHVjZXIs CiAgICAgICAgICAgIG1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX2FycmF5OjptYWtlX2RlYnVn X3N0cmluZywKICAgICAgICAgICAgbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fYXJyYXk6OnZp c2l0X2NoaWxkcmVuLAogICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJh eTo6cmVwbGF5X2ludG8sCiAgICAgICAgICAgIG1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX2Fy cmF5OjoKICAgICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJheSwKICAg ICAgICAgICAgbmV3X3J2YWx1ZV9mcm9tX2FycmF5KS4KICAgICAgICAgICAgKiBqaXQtcmVjb3Jk aW5nLmg6IE5ldyBmdW5jdGlvbnMgKHNldF9pbml0aWFsaXplcl92YWx1ZSwKICAgICAgICAgICAg bmV3X2dsb2JhbF92YWx1ZV9pbml0aWFsaXplciwgbmV3X3J2YWx1ZV9mcm9tX3N0cnVjdCwgbmV3 X3J2YWx1ZV9mcm9tX2FycmF5LAogICAgICAgICAgICBnZXRfa2luZCksCiAgICAgICAgICAgIG5l dyBmaWVsZCBtX2luaXRpYWxpemVyX3ZhbHVlIGFuZCBuZXcgY2xhc3NlcyAoZ2xvYmFsX2luaXRp YWxpemVyLAogICAgICAgICAgICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9zdHJ1Y3QsIG1l bWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX2FycmF5KS4KICAgICAgICAgICAgKiBsaWJnY2NqaXQu YzogTmV3IG1hY3JvIFJFVFVSTl9JRl9GQUlMX1BSSU5URjUgYW5kIG5ldwogICAgICAgICAgICBm dW5jdGlvbnMgKGdjY19qaXRfZ2xvYmFsX3NldF9pbml0aWFsaXplcl92YWx1ZSwKICAgICAgICAg ICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9zdHJ1Y3QsCiAgICAgICAgICAgIGdj Y19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fYXJyYXkpLgogICAgICAgICAgICAqIGxpYmdj Y2ppdC5oOiBOZXcgZnVuY3Rpb25zIChnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfdmFs dWUsCiAgICAgICAgICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fc3RydWN0LAog ICAgICAgICAgICBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2FycmF5KS4KICAgICAg ICAgICAgKiBsaWJnY2NqaXQubWFwIChMSUJHQ0NKSVRfQUJJXzIxKTogTmV3IEFCSSB0YWcuCgog ICAgZ2NjL3Rlc3RzdWl0ZS8KICAgICAgICAgICAgUFIgdGFyZ2V0Lzk2MDg5CiAgICAgICAgICAg ICogaml0LmRnL3Rlc3QtZ2xvYmFsLXNldC1pbml0aWFsaXplci5jOiBBZGQgdGVzdCBmb3IgdGhl IG5ldwogICAgICAgICAgICBmdW5jdGlvbiAoZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVy X3ZhbHVlKS4KICAgICAgICAgICAgKiBqaXQuZGcvdGVzdC1lcnJvci1pbXBvcnRlZC1nbG9iYWwt aW5pdGlhbGl6ZXIuYzogQWRkIHRlc3QKICAgICAgICAgICAgZm9yIGVycm9yIGNoZWNraW5nIGlu IHNldHRpbmcgYSB2YWx1ZSB0byBhIGdsb2JhbCB2YXJpYWJsZS4KLS0tCiBnY2Mvaml0L2RvY3Mv dG9waWNzL2NvbXBhdGliaWxpdHkucnN0ICAgICAgICAgfCAgMTMgKwogZ2NjL2ppdC9kb2NzL3Rv cGljcy9leHByZXNzaW9ucy5yc3QgICAgICAgICAgIHwgIDYyICsrKysKIGdjYy9qaXQvaml0LWNv bW1vbi5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBnY2Mvaml0L2ppdC1wbGF5 YmFjay5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzIgKysrKysKIGdjYy9qaXQvaml0LXBs YXliYWNrLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAyMSArKwogZ2NjL2ppdC9qaXQtcmVj b3JkaW5nLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMzA1ICsrKysrKysrKysrKysrKysrLQog Z2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggICAgICAgICAgICAgICAgICAgICAgIHwgMTQwICsrKysr KysrCiBnY2Mvaml0L2xpYmdjY2ppdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNjEg KysrKysrKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMjcgKysKIGdjYy9qaXQvbGliZ2Njaml0Lm1hcCAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxOSArKwogLi4uL3Rlc3QtZXJyb3ItaW1wb3J0ZWQtZ2xvYmFsLWluaXRpYWxpemVyLmMgIHwg IDQwICsrKwogLi4uL2ppdC5kZy90ZXN0LWdsb2JhbC1zZXQtaW5pdGlhbGl6ZXIuYyAgICAgIHwg IDgxICsrKysrCiAxMiBmaWxlcyBjaGFuZ2VkLCA5MzYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWVycm9y LWltcG9ydGVkLWdsb2JhbC1pbml0aWFsaXplci5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2Nz L3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdCBiL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJp bGl0eS5yc3QKaW5kZXggNTJlZTNmODYwYTcuLmY2ZGMwZTQzY2FkIDEwMDY0NAotLS0gYS9nY2Mv aml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3Bp Y3MvY29tcGF0aWJpbGl0eS5yc3QKQEAgLTI4NCwzICsyODQsMTYgQEAgZW50cnlwb2ludHM6CiAg ICogOmZ1bmM6YGdjY19qaXRfc3RydWN0X2dldF9maWVsZGAKIAogICAqIDpmdW5jOmBnY2Nfaml0 X3N0cnVjdF9nZXRfZmllbGRfY291bnRgCisKKy4uIF9MSUJHQ0NKSVRfQUJJXzIxOgorCitgYExJ QkdDQ0pJVF9BQklfMjFgYAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BgTElCR0NDSklUX0FC SV8yMWBgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YgYW4gQVBJIGVudHJ5cG9pbnQgdG8gc2V0IHRo ZSB2YWx1ZQorb2YgYSBnbG9iYWwgdmFyaWFibGU6CisKKyAgKiA6ZnVuYzpgZ2NjX2ppdF9nbG9i YWxfc2V0X2luaXRpYWxpemVyX3ZhbHVlYAorCisgICogOmZ1bmM6YGdjY19qaXRfY29udGV4dF9u ZXdfcnZhbHVlX2Zyb21fc3RydWN0YAorCisgICogOmZ1bmM6YGdjY19qaXRfY29udGV4dF9uZXdf cnZhbHVlX2Zyb21fYXJyYXlgCmRpZmYgLS1naXQgYS9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJl c3Npb25zLnJzdCBiL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0CmluZGV4IDM5 NjI1OWVmMDdlLi5hNTkzMDlmMTcyZiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9l eHByZXNzaW9ucy5yc3QKKysrIGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QK QEAgLTE1MCw2ICsxNTAsNTQgQEAgVmVjdG9yIGV4cHJlc3Npb25zCiAKICAgICAgICNpZmRlZiBM SUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3ZlY3RvcgogCitB cnJheSBleHByZXNzaW9ucworKioqKioqKioqKioqKioqKioqCisKKy4uIGZ1bmN0aW9uOjogZ2Nj X2ppdF9ydmFsdWUgKiBcCisgICAgICAgICAgICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fYXJyYXkgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X2xvY2F0aW9uICpsb2Ms IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2NjX2ppdF90eXBlICphcnJheV90eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fZWxlbWVudHMsIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjX2ppdF9ydmFs dWUgKiplbGVtZW50cykKKworICAgQnVpbGQgYW4gYXJyYXkgcnZhbHVlIGZyb20gYW4gYXJyYXkg b2YgZWxlbWVudHMuCisKKyAgICJ0eXBlIiBzaG91bGQgYmUgYW4gYXJyYXkgdHlwZSwgY3JlYXRl ZCB1c2luZworICAgOmZ1bmM6YGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZWAuCisKKyAg ICJudW1fZWxlbWVudHMiIHNob3VsZCBtYXRjaCB0aGF0IG9mIHRoZSBhcnJheSB0eXBlLgorCisg ICBUaGlzIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIDpyZWY6YExJQkdDQ0pJVF9BQklfMjFgOyB5 b3UgY2FuIHRlc3QgZm9yCisgICBpdHMgcHJlc2VuY2UgdXNpbmcKKworICAgLi4gY29kZS1ibG9j azo6IGMKKworICAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX0dMT0JBTF9JTklUSUFMSVpFUl9W QUxVRQorCitTdHJ1Y3QgZXhwcmVzc2lvbnMKKyoqKioqKioqKioqKioqKioqKgorCisuLiBmdW5j dGlvbjo6IGdjY19qaXRfcnZhbHVlICogXAorICAgICAgICAgICAgICBnY2Nfaml0X2NvbnRleHRf bmV3X3J2YWx1ZV9mcm9tX3N0cnVjdCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X2xv Y2F0aW9uICpsb2MsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdjY19qaXRfc3RydWN0ICpzdHJ1Y3RfdHlwZSwgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9maWVs ZHMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdjY19qaXRfcnZhbHVlICoqZmllbGRzKQorCisgICBCdWlsZCBhIHN0cnVjdCBydmFsdWUg ZnJvbSBhbiBhcnJheSBvZiBmaWVsZHMuCisKKyAgICJzdHJ1Y3RfdHlwZSIgc2hvdWxkIGJlIGEg c3RydWN0IHR5cGUsIGNyZWF0ZWQgdXNpbmcKKyAgIDpmdW5jOmBnY2Nfaml0X2NvbnRleHRfbmV3 X3N0cnVjdF90eXBlYC4KKworICAgIm51bV9maWVsZHMiIHNob3VsZCBtYXRjaCB0aGF0IHRoZSBu dW1iZXIgb2YgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZS4KKworICAgVGhpcyBlbnRyeXBvaW50 IHdhcyBhZGRlZCBpbiA6cmVmOmBMSUJHQ0NKSVRfQUJJXzIxYDsgeW91IGNhbiB0ZXN0IGZvcgor ICAgaXRzIHByZXNlbmNlIHVzaW5nCisKKyAgIC4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAgICNp ZmRlZiBMSUJHQ0NKSVRfSEFWRV9HTE9CQUxfSU5JVElBTElaRVJfVkFMVUUKKwogVW5hcnkgT3Bl cmF0aW9ucwogKioqKioqKioqKioqKioqKgogCkBAIC02MDMsNiArNjUxLDIwIEBAIEdsb2JhbCB2 YXJpYWJsZXMKIAogICAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX2djY19qaXRfZ2xvYmFsX3Nl dF9pbml0aWFsaXplcgogCisuLiBmdW5jdGlvbjo6IHZvaWQKKyAgICAgICAgICAgICAgZ2NjX2pp dF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3ZhbHVlIChnY2Nfaml0X2x2YWx1ZSAqZ2xvYmFsLFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nf aml0X3J2YWx1ZSAqdmFsdWUpCisKKyAgIFNldCBhbiBpbml0aWFsaXplciBmb3IgYGBnbG9iYWxg YCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnN0YW50IHZhbHVlLgorICAgYGBnbG9iYWxgYCBtdXN0 IGJlIHRoZSBzYW1lIHR5cGUgYXMgYGB2YWx1ZWBgLgorCisgICBUaGlzIGVudHJ5cG9pbnQgd2Fz IGFkZGVkIGluIDpyZWY6YExJQkdDQ0pJVF9BQklfMjFgOyB5b3UgY2FuIHRlc3QgZm9yCisgICBp dHMgcHJlc2VuY2UgdXNpbmcKKworICAgLi4gY29kZS1ibG9jazo6IGMKKworICAgICAgI2lmZGVm IExJQkdDQ0pJVF9IQVZFX0dMT0JBTF9JTklUSUFMSVpFUl9WQUxVRQorCiBXb3JraW5nIHdpdGgg cG9pbnRlcnMsIHN0cnVjdHMgYW5kIHVuaW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtY29tbW9uLmggYi9nY2Mv aml0L2ppdC1jb21tb24uaAppbmRleCBmODhlNjc1NWIwMC4uMjg5OGRiN2RkNzUgMTAwNjQ0Ci0t LSBhL2djYy9qaXQvaml0LWNvbW1vbi5oCisrKyBiL2djYy9qaXQvaml0LWNvbW1vbi5oCkBAIC0x MTcsNiArMTE3LDcgQEAgbmFtZXNwYWNlIHJlY29yZGluZyB7CiAgICAgICBjbGFzcyBjb21wb3Vu ZF90eXBlOwogICAgICAgICBjbGFzcyBzdHJ1Y3RfOwogCWNsYXNzIHVuaW9uXzsKKyAgICAgIGNs YXNzIGFycmF5X3R5cGU7CiAgICAgICBjbGFzcyB2ZWN0b3JfdHlwZTsKICAgICBjbGFzcyBmaWVs ZDsKICAgICAgIGNsYXNzIGJpdGZpZWxkOwpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcGxheWJh Y2suYyBiL2djYy9qaXQvaml0LXBsYXliYWNrLmMKaW5kZXggNTkzOTlkZWUyNTEuLjNlMDQ2Y2Jh NjJjIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5jCisrKyBiL2djYy9qaXQvaml0 LXBsYXliYWNrLmMKQEAgLTY2Nyw2ICs2NjcsMzggQEAgbmV3X2dsb2JhbF9pbml0aWFsaXplZCAo bG9jYXRpb24gKmxvYywKICAgcmV0dXJuIGdsb2JhbF9maW5hbGl6ZV9sdmFsdWUgKGlubmVyKTsK IH0KIAorcGxheWJhY2s6Omx2YWx1ZSAqCitwbGF5YmFjazo6Y29udGV4dDo6CituZXdfZ2xvYmFs X3dpdGhfdmFsdWUgKGxvY2F0aW9uICpsb2MsCisJCSAgICAgICBlbnVtIGdjY19qaXRfZ2xvYmFs X2tpbmQga2luZCwKKwkJICAgICAgIHR5cGUgKnR5cGUsCisJCSAgICAgICBwbGF5YmFjazo6cnZh bHVlICp2YWx1ZSwKKwkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIHRyZWUgaW5uZXIg PSBnbG9iYWxfbmV3X2RlY2wgKGxvYywga2luZCwgdHlwZSwgbmFtZSk7CisKKyAgdHJlZSBpbml0 aWFsID0gdmFsdWUtPmFzX3RyZWUgKCk7CisgIGdjY19hc3NlcnQgKFRSRUVfQ09OU1RBTlQgKGlu aXRpYWwpKTsKKyAgREVDTF9JTklUSUFMIChpbm5lcikgPSBpbml0aWFsOworCisgIHJldHVybiBn bG9iYWxfZmluYWxpemVfbHZhbHVlIChpbm5lcik7Cit9CisKK3ZvaWQKK3BsYXliYWNrOjpjb250 ZXh0OjoKK3NldF9nbG9iYWxfaW5pdGlhbF92YWx1ZSAocGxheWJhY2s6Omx2YWx1ZSAqZ2xvYmFs LAorCQkJICBwbGF5YmFjazo6cnZhbHVlICp2YWx1ZSkKK3sKKyAgdHJlZSBpbml0aWFsID0gdmFs dWUtPmFzX3RyZWUgKCk7CisgIGlmICghVFJFRV9DT05TVEFOVCAoaW5pdGlhbCkpCisgIHsKKyAg ICBhZGRfZXJyb3IgKE5VTEwsICJpbml0aWFsIHZhbHVlIGZvciBnbG9iYWwgaXMgbm90IGEgY29u c3RhbnQiKTsKKyAgICBkZWJ1Z190cmVlIChpbml0aWFsKTsKKyAgICBnY2NfYXNzZXJ0IChUUkVF X0NPTlNUQU5UIChpbml0aWFsKSk7CisgIH0KKyAgREVDTF9JTklUSUFMIChnbG9iYWwtPmFzX3Ry ZWUgKCkpID0gaW5pdGlhbDsKK30KKwogLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHZhcmlvdXMK ICAgICAgIGdjYzo6aml0OjpwbGF5YmFjazo6Y29udGV4dDo6bmV3X3J2YWx1ZV9mcm9tX2NvbnN0 IDxIT1NUX1RZUEU+CiAgICBtZXRob2RzLgpAQCAtODE3LDYgKzg0OSw0NiBAQCBwbGF5YmFjazo6 Y29udGV4dDo6bmV3X3J2YWx1ZV9mcm9tX3ZlY3RvciAobG9jYXRpb24gKiwKICAgcmV0dXJuIG5l dyBydmFsdWUgKHRoaXMsIHRfY3Rvcik7CiB9CiAKKy8qIENvbnN0cnVjdCBhIHBsYXliYWNrOjpy dmFsdWUgaW5zdGFuY2UgKHdyYXBwaW5nIGEgdHJlZSkgZm9yIGEKKyAgIHN0cnVjdC4gICovCisK K3BsYXliYWNrOjpydmFsdWUgKgorcGxheWJhY2s6OmNvbnRleHQ6Om5ld19ydmFsdWVfZnJvbV9z dHJ1Y3QgKGxvY2F0aW9uICosCisJCQkJCSAgIHR5cGUgKnR5cGUsCisJCQkJCSAgIGNvbnN0IGF1 dG9fdmVjPHJ2YWx1ZSAqPiAmZmllbGRzKQoreworICB2ZWM8Y29uc3RydWN0b3JfZWx0LCB2YV9n Yz4gKnY7CisgIHZlY19hbGxvYyAodiwgZmllbGRzLmxlbmd0aCAoKSk7CisgIHRyZWUgZmllbGRf ZGVjbCA9IFRZUEVfRklFTERTICh0eXBlLT5hc190cmVlICgpKTsKKyAgZm9yICh1bnNpZ25lZCBp ID0gMDsgaSA8IGZpZWxkcy5sZW5ndGggKCk7ICsraSkKKyAgeworICAgIENPTlNUUlVDVE9SX0FQ UEVORF9FTFQgKHYsIGZpZWxkX2RlY2wsIGZpZWxkc1tpXS0+YXNfdHJlZSAoKSk7CisgICAgZmll bGRfZGVjbCA9IFRSRUVfQ0hBSU4gKGZpZWxkX2RlY2wpOworICB9CisKKyAgdHJlZSB0X2N0b3Ig PSBidWlsZF9jb25zdHJ1Y3RvciAodHlwZS0+YXNfdHJlZSAoKSwgdik7CisgIHJldHVybiBuZXcg cnZhbHVlICh0aGlzLCB0X2N0b3IpOworfQorCisvKiBDb25zdHJ1Y3QgYSBwbGF5YmFjazo6cnZh bHVlIGluc3RhbmNlICh3cmFwcGluZyBhIHRyZWUpIGZvciBhCisgICBhcnJheS4gICovCisKK3Bs YXliYWNrOjpydmFsdWUgKgorcGxheWJhY2s6OmNvbnRleHQ6Om5ld19ydmFsdWVfZnJvbV9hcnJh eSAobG9jYXRpb24gKiwKKwkJCQkJICB0eXBlICp0eXBlLAorCQkJCQkgIGNvbnN0IGF1dG9fdmVj PHJ2YWx1ZSAqPiAmZWxlbWVudHMpCit7CisgIHZlYzxjb25zdHJ1Y3Rvcl9lbHQsIHZhX2djPiAq djsKKyAgdmVjX2FsbG9jICh2LCBlbGVtZW50cy5sZW5ndGggKCkpOworICBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoICgpOyArK2kpCisgIHsKKyAgICB0cmVlIGluZGV4 ID0gYnVpbGRfaW50X2NzdCAobG9uZ191bnNpZ25lZF90eXBlX25vZGUsIGkpOworICAgIENPTlNU UlVDVE9SX0FQUEVORF9FTFQgKHYsIGluZGV4LCBlbGVtZW50c1tpXS0+YXNfdHJlZSAoKSk7Cisg IH0KKyAgdHJlZSB0X2N0b3IgPSBidWlsZF9jb25zdHJ1Y3RvciAodHlwZS0+YXNfdHJlZSAoKSwg dik7CisgIHJldHVybiBuZXcgcnZhbHVlICh0aGlzLCB0X2N0b3IpOworfQorCiAvKiBDb2VyY2Ug YSB0cmVlIGV4cHJlc3Npb24gaW50byBhIGJvb2xlYW4gdHJlZSBleHByZXNzaW9uLiAgKi8KIAog dHJlZQpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcGxheWJhY2suaCBiL2djYy9qaXQvaml0LXBs YXliYWNrLmgKaW5kZXggZjY3MGM5ZTgxZGYuLmU0YzE4MTZkYmFmIDEwMDY0NAotLS0gYS9nY2Mv aml0L2ppdC1wbGF5YmFjay5oCisrKyBiL2djYy9qaXQvaml0LXBsYXliYWNrLmgKQEAgLTEyMCw2 ICsxMjAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk ICppbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt ZSk7CiAKKyAgbHZhbHVlKgorICBuZXdfZ2xvYmFsX3dpdGhfdmFsdWUgKGxvY2F0aW9uICpsb2Ms CisJCQkgZW51bSBnY2Nfaml0X2dsb2JhbF9raW5kIGtpbmQsCisJCQkgdHlwZSAqdHlwZSwKKwkJ CSBydmFsdWUgKnZhbHVlLAorCQkJIGNvbnN0IGNoYXIgKm5hbWUpOworCisgIHZvaWQKKyAgc2V0 X2dsb2JhbF9pbml0aWFsX3ZhbHVlIChwbGF5YmFjazo6bHZhbHVlICpnbG9iYWwsCisJCQkgICAg cGxheWJhY2s6OnJ2YWx1ZSAqdmFsdWUpOworCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIT1NUX1RZ UEU+CiAgIHJ2YWx1ZSAqCiAgIG5ld19ydmFsdWVfZnJvbV9jb25zdCAodHlwZSAqdHlwZSwKQEAg LTEzMyw2ICsxNDQsMTYgQEAgcHVibGljOgogCQkJICB0eXBlICp0eXBlLAogCQkJICBjb25zdCBh dXRvX3ZlYzxydmFsdWUgKj4gJmVsZW1lbnRzKTsKIAorICBydmFsdWUgKgorICBuZXdfcnZhbHVl X2Zyb21fc3RydWN0IChsb2NhdGlvbiAqbG9jLAorCQkJICB0eXBlICp0eXBlLAorCQkJICBjb25z dCBhdXRvX3ZlYzxydmFsdWUgKj4gJmZpZWxkcyk7CisKKyAgcnZhbHVlICoKKyAgbmV3X3J2YWx1 ZV9mcm9tX2FycmF5IChsb2NhdGlvbiAqbG9jLAorCQkJIHR5cGUgKnR5cGUsCisJCQkgY29uc3Qg YXV0b192ZWM8cnZhbHVlICo+ICZlbGVtZW50cyk7CisKICAgcnZhbHVlICoKICAgbmV3X3VuYXJ5 X29wIChsb2NhdGlvbiAqbG9jLAogCQllbnVtIGdjY19qaXRfdW5hcnlfb3Agb3AsCmRpZmYgLS1n aXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuYyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5jCmlu ZGV4IDExN2ZmNzAxMTRjLi4yMTgxM2Y0OTdjYiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVj b3JkaW5nLmMKKysrIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMKQEAgLTEwNjIsNiArMTA2Miwy MSBAQCByZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19nbG9iYWwgKHJlY29yZGluZzo6bG9jYXRpb24g KmxvYywKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogQ3JlYXRlIGEgbWVtZW50byBpbnN0YW5j ZSB0byBpbml0aWFsaXplIGEgZ2xvYmFsIHZhcmlhYmxlIGFuZCBhZGQgaXQgdG8gdGhpcworICog Y29udGV4dCdzIGxpc3Qgb2YgbWVtZW50b3MuCisKKyAgIEltcGxlbWVudHMgdGhlIHBvc3QtZXJy b3ItY2hlY2tpbmcgcGFydCBvZgorICAgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3Zh bHVlLiAgKi8KKwordm9pZAorcmVjb3JkaW5nOjpjb250ZXh0OjpuZXdfZ2xvYmFsX3ZhbHVlX2lu aXRpYWxpemVyIChyZWNvcmRpbmc6Omx2YWx1ZSAqZ2xvYmFsLAorCQkJCXJlY29yZGluZzo6cnZh bHVlICp2YWx1ZSkKK3sKKyAgcmVjb3JkaW5nOjpnbG9iYWxfaW5pdGlhbGl6ZXIgKnJlc3VsdCA9 CisgICAgbmV3IHJlY29yZGluZzo6Z2xvYmFsX2luaXRpYWxpemVyIChnbG9iYWwsIHZhbHVlKTsK KyAgcmVjb3JkIChyZXN1bHQpOworfQorCiAvKiBDcmVhdGUgYSByZWNvcmRpbmc6Om1lbWVudG9f b2ZfbmV3X3N0cmluZ19saXRlcmFsIGluc3RhbmNlIGFuZCBhZGQgaXQKICAgIHRvIHRoaXMgY29u dGV4dCdzIGxpc3Qgb2YgbWVtZW50b3MuCiAKQEAgLTEwNzcsNiArMTA5Miw0MCBAQCByZWNvcmRp bmc6OmNvbnRleHQ6Om5ld19zdHJpbmdfbGl0ZXJhbCAoY29uc3QgY2hhciAqdmFsdWUpCiAgIHJl dHVybiByZXN1bHQ7CiB9CiAKKy8qIENyZWF0ZSBhIHJlY29yZGluZzo6bWVtZW50b19vZl9uZXdf cnZhbHVlX2Zyb21fc3RydWN0IGluc3RhbmNlIGFuZCBhZGQgaXQKKyAgIHRvIHRoaXMgY29udGV4 dCdzIGxpc3Qgb2YgbWVtZW50b3MuCisKKyAgIEltcGxlbWVudHMgdGhlIHBvc3QtZXJyb3ItY2hl Y2tpbmcgcGFydCBvZgorICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9zdHJ1Y3Qu ICAqLworCityZWNvcmRpbmc6OnJ2YWx1ZSAqCityZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19ydmFs dWVfZnJvbV9zdHJ1Y3QgKGxvY2F0aW9uICpsb2MsCisJCQkJCSAgICBzdHJ1Y3RfICp0eXBlLAor CQkJCQkgICAgcnZhbHVlICoqZmllbGRzKQoreworICByZWNvcmRpbmc6OnJ2YWx1ZSAqcmVzdWx0 ID0KKyAgICBuZXcgbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fc3RydWN0ICh0aGlzLCBsb2Ms IHR5cGUsIGZpZWxkcyk7CisgIHJlY29yZCAocmVzdWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30K KworLyogQ3JlYXRlIGEgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJh eSBpbnN0YW5jZSBhbmQgYWRkIGl0CisgICB0byB0aGlzIGNvbnRleHQncyBsaXN0IG9mIG1lbWVu dG9zLgorCisgICBJbXBsZW1lbnRzIHRoZSBwb3N0LWVycm9yLWNoZWNraW5nIHBhcnQgb2YKKyAg IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fYXJyYXkuICAqLworCityZWNvcmRpbmc6 OnJ2YWx1ZSAqCityZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19ydmFsdWVfZnJvbV9hcnJheSAobG9j YXRpb24gKmxvYywKKwkJCQkJICAgYXJyYXlfdHlwZSAqdHlwZSwKKwkJCQkJICAgcnZhbHVlICoq ZWxlbWVudHMpCit7CisgIHJlY29yZGluZzo6cnZhbHVlICpyZXN1bHQgPQorICAgIG5ldyBtZW1l bnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJheSAodGhpcywgbG9jLCB0eXBlLCBlbGVtZW50cyk7 CisgIHJlY29yZCAocmVzdWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyogQ3JlYXRlIGEg cmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV92ZWN0b3IgaW5zdGFuY2UgYW5k IGFkZCBpdAogICAgdG8gdGhpcyBjb250ZXh0J3MgbGlzdCBvZiBtZW1lbnRvcy4KIApAQCAtNDU0 NywyMCArNDU5NiwzNCBAQCByZWNvcmRpbmc6OmJsb2NrOjpkdW1wX2VkZ2VzX3RvX2RvdCAocHJl dHR5X3ByaW50ZXIgKnBwKQogdm9pZAogcmVjb3JkaW5nOjpnbG9iYWw6OnJlcGxheV9pbnRvIChy ZXBsYXllciAqcikKIHsKLSAgc2V0X3BsYXliYWNrX29iaiAoCi0gICAgbV9pbml0aWFsaXplcgot ICAgID8gci0+bmV3X2dsb2JhbF9pbml0aWFsaXplZCAocGxheWJhY2tfbG9jYXRpb24gKHIsIG1f bG9jKSwKKyAgcGxheWJhY2s6Omx2YWx1ZSAqZ2xvYmFsOworICBpZiAobV9pbml0aWFsaXplcikK KyAgeworICAgIGdsb2JhbCA9IHItPm5ld19nbG9iYWxfaW5pdGlhbGl6ZWQgKHBsYXliYWNrX2xv Y2F0aW9uIChyLCBtX2xvYyksCiAJCQkJIG1fa2luZCwKIAkJCQkgbV90eXBlLT5wbGF5YmFja190 eXBlICgpLAogCQkJCSBtX3R5cGUtPmRlcmVmZXJlbmNlICgpLT5nZXRfc2l6ZSAoKSwKIAkJCQkg bV9pbml0aWFsaXplcl9udW1fYnl0ZXMKIAkJCQkgLyBtX3R5cGUtPmRlcmVmZXJlbmNlICgpLT5n ZXRfc2l6ZSAoKSwKIAkJCQkgbV9pbml0aWFsaXplciwKLQkJCQkgcGxheWJhY2tfc3RyaW5nICht X25hbWUpKQotICAgIDogci0+bmV3X2dsb2JhbCAocGxheWJhY2tfbG9jYXRpb24gKHIsIG1fbG9j KSwKKwkJCQkgcGxheWJhY2tfc3RyaW5nIChtX25hbWUpKTsKKyAgfQorICBlbHNlIGlmIChtX2lu aXRpYWxpemVyX3ZhbHVlKQorICB7CisgICAgZ2xvYmFsID0gci0+bmV3X2dsb2JhbF93aXRoX3Zh bHVlIChwbGF5YmFja19sb2NhdGlvbiAociwgbV9sb2MpLAorCQkJCSBtX2tpbmQsCisJCQkJIG1f dHlwZS0+cGxheWJhY2tfdHlwZSAoKSwKKwkJCQkgbV9pbml0aWFsaXplcl92YWx1ZS0+cGxheWJh Y2tfcnZhbHVlICgpLAorCQkJCSBwbGF5YmFja19zdHJpbmcgKG1fbmFtZSkpOworICB9CisgIGVs c2UKKyAgeworICAgIGdsb2JhbCA9IHItPm5ld19nbG9iYWwgKHBsYXliYWNrX2xvY2F0aW9uIChy LCBtX2xvYyksCiAJCSAgICAgbV9raW5kLAogCQkgICAgIG1fdHlwZS0+cGxheWJhY2tfdHlwZSAo KSwKLQkJICAgICBwbGF5YmFja19zdHJpbmcgKG1fbmFtZSkpKTsKKwkJICAgICBwbGF5YmFja19z dHJpbmcgKG1fbmFtZSkpOworICB9CisgIHNldF9wbGF5YmFja19vYmogKGdsb2JhbCk7CiB9CiAK IC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mCkBAIC00Njk3LDYgKzQ3 NjAsNTYgQEAgcmVjb3JkaW5nOjpnbG9iYWw6OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIg JnIpCiAgICAgICB9CiB9CiAKKy8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjbGFzcyBnY2M6Ompp dDo6cmVjb3JkaW5nOjpnbG9iYWxfaW5pdGlhbGl6ZXIuICAqLworCisvKiBJbXBsZW1lbnRhdGlv biBvZiBwdXJlIHZpcnR1YWwgaG9vayByZWNvcmRpbmc6Om1lbWVudG86OnJlcGxheV9pbnRvCisg ICBmb3IgcmVjb3JkaW5nOjpnbG9iYWxfaW5pdGlhbGl6ZXIuICAqLworCit2b2lkCityZWNvcmRp bmc6Omdsb2JhbF9pbml0aWFsaXplcjo6cmVwbGF5X2ludG8gKHJlcGxheWVyICpyKQoreworICBy LT5zZXRfZ2xvYmFsX2luaXRpYWxfdmFsdWUgKG1fZ2xvYmFsLT5wbGF5YmFja19sdmFsdWUgKCks CisgICAgbV92YWx1ZS0+cGxheWJhY2tfcnZhbHVlICgpKTsKK30KKworLyogT3ZlcnJpZGUgdGhl IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YKKyAgIHJlY29yZGluZzo6bWVtZW50bzo6d3JpdGVf dG9fZHVtcCBmb3IgZ2xvYmFscy4KKyAgIFRoaXMgd2lsbCBiZSBvZiB0aGUgZm9ybToKKworICAg ICAgICBHTE9CQUwgPSBJTklUSUFMSVpFUjsKKworICAgVGhlc2UgYXJlIHdyaXR0ZW4gdG8gdGhl IHRvcCBvZiB0aGUgZHVtcCBieQorICAgcmVjb3JkaW5nOjpjb250ZXh0OjpkdW1wX3RvX2ZpbGUu ICAqLworCit2b2lkCityZWNvcmRpbmc6Omdsb2JhbF9pbml0aWFsaXplcjo6d3JpdGVfdG9fZHVt cCAoZHVtcCAmZCkKK3sKKyAgZC53cml0ZSAoIiAgJXMgPSAlcztcbiIsCisJICBtX2dsb2JhbC0+ Z2V0X2RlYnVnX3N0cmluZyAoKSwKKwkgIG1fdmFsdWUtPmdldF9kZWJ1Z19zdHJpbmcgKCkpOwor fQorCityZWNvcmRpbmc6OnN0cmluZyAqCityZWNvcmRpbmc6Omdsb2JhbF9pbml0aWFsaXplcjo6 bWFrZV9kZWJ1Z19zdHJpbmcgKCkKK3sKKyAgcmV0dXJuIHN0cmluZzo6ZnJvbV9wcmludGYgKG1f Y3R4dCwKKwkJCQkiJXMgPSAlcyIsCisJCQkJbV9nbG9iYWwtPmdldF9kZWJ1Z19zdHJpbmcgKCks CisJCQkJbV92YWx1ZS0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7Cit9CisKKy8qIEltcGxlbWVudGF0 aW9uIG9mIHJlY29yZGluZzo6bWVtZW50bzo6d3JpdGVfcmVwcm9kdWNlciBmb3IgZ2xvYmFsCisg ICBpbml0aWFsaXplcnMuICAqLworCit2b2lkCityZWNvcmRpbmc6Omdsb2JhbF9pbml0aWFsaXpl cjo6d3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAmcikKK3sKKyAgci53cml0ZSAoIiAgZ2Nj X2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3ZhbHVlICglcywgLyogZ2NjX2ppdF9sdmFsdWUg Kmdsb2JhbCAqL1xuIgorICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICVzKTsgLyogZ2NjX2ppdF9ydmFsdWUgKnZhbHVlICovXG4iLAorICAgIHIuZ2V0X2lkZW50 aWZpZXJfYXNfbHZhbHVlIChtX2dsb2JhbCksCisgICAgci5nZXRfaWRlbnRpZmllcl9hc19ydmFs dWUgKG1fdmFsdWUpKTsKK30KKwogLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB2YXJpb3Vz IGNvbnN0LWhhbmRsaW5nIGNsYXNzZXM6CiAgICBnY2M6OmppdDo6cmVjb3JkaW5nOjptZW1lbnRv X29mX25ld19ydmFsdWVfZnJvbV9jb25zdCA8SE9TVF9UWVBFPi4gICovCiAKQEAgLTUwNzAsNiAr NTE4MywxODYgQEAgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV92ZWN0b3I6 OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCiAJICAgZWxlbWVudHNfaWQpOwogfQog CisvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3MKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6 Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX3N0cnVjdC4gICovCisKKy8qIFRoZSBjb25zdHJ1 Y3RvciBmb3IKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9m cm9tX3N0cnVjdC4gICovCisKK3JlY29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21f c3RydWN0OjoKK21lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX3N0cnVjdCAoY29udGV4dCAqY3R4 dCwKKwkJCQkgICBsb2NhdGlvbiAqbG9jLAorCQkJCSAgIHN0cnVjdF8gKnR5cGUsCisJCQkJICAg cnZhbHVlICoqZmllbGRzKQorOiBydmFsdWUgKGN0eHQsIGxvYywgdHlwZSksCisgIG1fc3RydWN0 X3R5cGUgKHR5cGUpLAorICBtX2ZpZWxkcyAoKQoreworICBmb3IgKGludCBpID0gMDsgaSA8IHR5 cGUtPmdldF9maWVsZHMgKCktPmxlbmd0aCAoKTsgaSsrKQorICAgIG1fZmllbGRzLnNhZmVfcHVz aCAoZmllbGRzW2ldKTsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFsIGhv b2sgcmVjb3JkaW5nOjptZW1lbnRvOjpyZXBsYXlfaW50bworICAgZm9yIHJlY29yZGluZzo6bWVt ZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fc3RydWN0LiAgKi8KKwordm9pZAorcmVjb3JkaW5nOjpt ZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9zdHJ1Y3Q6OnJlcGxheV9pbnRvIChyZXBsYXllciAq cikKK3sKKyAgYXV0b192ZWM8cGxheWJhY2s6OnJ2YWx1ZSAqPiBwbGF5YmFja19maWVsZHM7Cisg IHBsYXliYWNrX2ZpZWxkcy5jcmVhdGUgKG1fZmllbGRzLmxlbmd0aCAoKSk7CisgIGZvciAodW5z aWduZWQgaSA9IDA7IGk8IG1fZmllbGRzLmxlbmd0aCAoKTsgaSsrKQorICAgIHBsYXliYWNrX2Zp ZWxkcy5zYWZlX3B1c2ggKG1fZmllbGRzW2ldLT5wbGF5YmFja19ydmFsdWUgKCkpOworCisgIHNl dF9wbGF5YmFja19vYmogKHItPm5ld19ydmFsdWVfZnJvbV9zdHJ1Y3QgKHBsYXliYWNrX2xvY2F0 aW9uIChyLCBtX2xvYyksCisJCQkJCSAgICAgICBtX3R5cGUtPnBsYXliYWNrX3R5cGUgKCksCisJ CQkJCSAgICAgICBwbGF5YmFja19maWVsZHMpKTsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2Yg cHVyZSB2aXJ0dWFsIGhvb2sgcmVjb3JkaW5nOjpydmFsdWU6OnZpc2l0X2NoaWxkcmVuCisgICBm b3IgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9zdHJ1Y3QuICAqLworCit2 b2lkCityZWNvcmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX3N0cnVjdDo6dmlzaXRf Y2hpbGRyZW4gKHJ2YWx1ZV92aXNpdG9yICp2KQoreworICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp PCBtX2ZpZWxkcy5sZW5ndGggKCk7IGkrKykKKyAgICB2LT52aXNpdCAobV9maWVsZHNbaV0pOwor fQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86Om1ha2VfZGVidWdf c3RyaW5nIGZvcgorICAgdmVjdG9ycy4gICovCisKK3JlY29yZGluZzo6c3RyaW5nICoKK3JlY29y ZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fc3RydWN0OjptYWtlX2RlYnVnX3N0cmlu ZyAoKQoreworICBjb21tYV9zZXBhcmF0ZWRfc3RyaW5nIGZpZWxkcyAobV9maWVsZHMsIGdldF9w cmVjZWRlbmNlICgpKTsKKworICAvKiBOb3cgYnVpbGQgYSBzdHJpbmcuICAqLworICBzdHJpbmcg KnJlc3VsdCA9IHN0cmluZzo6ZnJvbV9wcmludGYgKG1fY3R4dCwKKwkJCQkJInslc30iLAorCQkJ CQlmaWVsZHMuYXNfY2hhcl9wdHIgKCkpOworCisgcmV0dXJuIHJlc3VsdDsKKworfQorCisvKiBJ bXBsZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86OndyaXRlX3JlcHJvZHVjZXIgZm9y CisgICB2ZWN0b3JzLiAgKi8KKwordm9pZAorcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFs dWVfZnJvbV9zdHJ1Y3Q6OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCit7CisgIGNv bnN0IGNoYXIgKmlkID0gci5tYWtlX2lkZW50aWZpZXIgKHRoaXMsICJzdHJ1Y3QiKTsKKyAgY29u c3QgY2hhciAqZmllbGRzX2lkID0gci5tYWtlX3RtcF9pZGVudGlmaWVyICgiZmllbGRzX2Zvcl8i LCB0aGlzKTsKKyAgci53cml0ZSAoIiAgZ2NjX2ppdF9ydmFsdWUgKiVzWyVpXSA9IHtcbiIsCisJ ICAgZmllbGRzX2lkLAorCSAgIG1fZmllbGRzLmxlbmd0aCAoKSk7CisgIGZvciAodW5zaWduZWQg aSA9IDA7IGk8IG1fZmllbGRzLmxlbmd0aCAoKTsgaSsrKQorICAgIHIud3JpdGUgKCIgICAgJXMs XG4iLCByLmdldF9pZGVudGlmaWVyX2FzX3J2YWx1ZSAobV9maWVsZHNbaV0pKTsKKyAgci53cml0 ZSAoIiAgfTtcbiIpOworICByLndyaXRlICgiICBnY2Nfaml0X3J2YWx1ZSAqJXMgPVxuIgorCSAg ICIgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9zdHJ1Y3QgKCVzLCAvKiBnY2Nf aml0X2NvbnRleHQgKmN0eHQgKi9cbiIKKwkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAlcywgLyogZ2NjX2ppdF9sb2NhdGlvbiAqbG9jICovXG4iCisJICAg IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXMsIC8qIGdjY19q aXRfc3RydWN0ICpzdHJ1Y3RfdHlwZSAqL1xuIgorCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICVpLCAvKiBzaXplX3QgbnVtX2ZpZWxkcyAgKi8gXG4iCisJ ICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXMpOyAvKiBn Y2Nfaml0X3J2YWx1ZSAqKmZpZWxkcyovXG4iLAorCSAgIGlkLAorCSAgIHIuZ2V0X2lkZW50aWZp ZXIgKGdldF9jb250ZXh0ICgpKSwKKwkgICByLmdldF9pZGVudGlmaWVyIChtX2xvYyksCisJICAg ci5nZXRfaWRlbnRpZmllciAobV9zdHJ1Y3RfdHlwZSksCisJICAgbV9maWVsZHMubGVuZ3RoICgp LAorCSAgIGZpZWxkc19pZCk7Cit9CisKKy8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjbGFzcwor ICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fYXJyYXku ICAqLworCisvKiBUaGUgY29uc3RydWN0b3IgZm9yCisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjpt ZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJheS4gICovCisKK3JlY29yZGluZzo6bWVtZW50 b19vZl9uZXdfcnZhbHVlX2Zyb21fYXJyYXk6OgorbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21f YXJyYXkgKGNvbnRleHQgKmN0eHQsCisJCQkJICBsb2NhdGlvbiAqbG9jLAorCQkJCSAgYXJyYXlf dHlwZSAqdHlwZSwKKwkJCQkgIHJ2YWx1ZSAqKmVsZW1lbnRzKQorOiBydmFsdWUgKGN0eHQsIGxv YywgdHlwZSksCisgIG1fYXJyYXlfdHlwZSAodHlwZSksCisgIG1fZWxlbWVudHMgKCkKK3sKKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlLT5udW1fZWxlbWVudHMgKCk7IGkrKykKKyAgICBtX2Vs ZW1lbnRzLnNhZmVfcHVzaCAoZWxlbWVudHNbaV0pOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBv ZiBwdXJlIHZpcnR1YWwgaG9vayByZWNvcmRpbmc6Om1lbWVudG86OnJlcGxheV9pbnRvCisgICBm b3IgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJheS4gICovCisKK3Zv aWQKK3JlY29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fYXJyYXk6OnJlcGxheV9p bnRvIChyZXBsYXllciAqcikKK3sKKyAgYXV0b192ZWM8cGxheWJhY2s6OnJ2YWx1ZSAqPiBwbGF5 YmFja19lbGVtZW50czsKKyAgcGxheWJhY2tfZWxlbWVudHMuY3JlYXRlIChtX2VsZW1lbnRzLmxl bmd0aCAoKSk7CisgIGZvciAodW5zaWduZWQgaSA9IDA7IGk8IG1fZWxlbWVudHMubGVuZ3RoICgp OyBpKyspCisgICAgcGxheWJhY2tfZWxlbWVudHMuc2FmZV9wdXNoIChtX2VsZW1lbnRzW2ldLT5w bGF5YmFja19ydmFsdWUgKCkpOworCisgIHNldF9wbGF5YmFja19vYmogKHItPm5ld19ydmFsdWVf ZnJvbV9hcnJheSAocGxheWJhY2tfbG9jYXRpb24gKHIsIG1fbG9jKSwKKwkJCQkJICAgICAgbV90 eXBlLT5wbGF5YmFja190eXBlICgpLAorCQkJCQkgICAgICBwbGF5YmFja19lbGVtZW50cykpOwor fQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBwdXJlIHZpcnR1YWwgaG9vayByZWNvcmRpbmc6OnJ2 YWx1ZTo6dmlzaXRfY2hpbGRyZW4KKyAgIGZvciByZWNvcmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2 YWx1ZV9mcm9tX2FycmF5LiAgKi8KKwordm9pZAorcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19y dmFsdWVfZnJvbV9hcnJheTo6dmlzaXRfY2hpbGRyZW4gKHJ2YWx1ZV92aXNpdG9yICp2KQorewor ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpPCBtX2VsZW1lbnRzLmxlbmd0aCAoKTsgaSsrKQorICAg IHYtPnZpc2l0IChtX2VsZW1lbnRzW2ldKTsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgcmVj b3JkaW5nOjptZW1lbnRvOjptYWtlX2RlYnVnX3N0cmluZyBmb3IKKyAgIHZlY3RvcnMuICAqLwor CityZWNvcmRpbmc6OnN0cmluZyAqCityZWNvcmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9m cm9tX2FycmF5OjptYWtlX2RlYnVnX3N0cmluZyAoKQoreworICBjb21tYV9zZXBhcmF0ZWRfc3Ry aW5nIGVsZW1lbnRzIChtX2VsZW1lbnRzLCBnZXRfcHJlY2VkZW5jZSAoKSk7CisKKyAgLyogTm93 IGJ1aWxkIGEgc3RyaW5nLiAgKi8KKyAgc3RyaW5nICpyZXN1bHQgPSBzdHJpbmc6OmZyb21fcHJp bnRmIChtX2N0eHQsCisJCQkJCSJ7JXN9IiwKKwkJCQkJZWxlbWVudHMuYXNfY2hhcl9wdHIgKCkp OworCisgcmV0dXJuIHJlc3VsdDsKKworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiByZWNvcmRp bmc6Om1lbWVudG86OndyaXRlX3JlcHJvZHVjZXIgZm9yCisgICB2ZWN0b3JzLiAgKi8KKwordm9p ZAorcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJheTo6d3JpdGVfcmVw cm9kdWNlciAocmVwcm9kdWNlciAmcikKK3sKKyAgY29uc3QgY2hhciAqaWQgPSByLm1ha2VfaWRl bnRpZmllciAodGhpcywgImFycmF5Iik7CisgIGNvbnN0IGNoYXIgKmVsZW1lbnRzX2lkID0gci5t YWtlX3RtcF9pZGVudGlmaWVyICgiZWxlbWVudHNfZm9yXyIsIHRoaXMpOworICByLndyaXRlICgi ICBnY2Nfaml0X3J2YWx1ZSAqJXNbJWldID0ge1xuIiwKKwkgICBlbGVtZW50c19pZCwKKwkgICBt X2VsZW1lbnRzLmxlbmd0aCAoKSk7CisgIGZvciAodW5zaWduZWQgaSA9IDA7IGk8IG1fZWxlbWVu dHMubGVuZ3RoICgpOyBpKyspCisgICAgci53cml0ZSAoIiAgICAlcyxcbiIsIHIuZ2V0X2lkZW50 aWZpZXJfYXNfcnZhbHVlIChtX2VsZW1lbnRzW2ldKSk7CisgIHIud3JpdGUgKCIgIH07XG4iKTsK KyAgci53cml0ZSAoIiAgZ2NjX2ppdF9ydmFsdWUgKiVzID1cbiIKKwkgICAiICAgIGdjY19qaXRf Y29udGV4dF9uZXdfcnZhbHVlX2Zyb21fYXJyYXkgKCVzLCAvKiBnY2Nfaml0X2NvbnRleHQgKmN0 eHQgKi9cbiIKKwkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICVzLCAvKiBnY2Nfaml0X2xvY2F0aW9uICpsb2MgKi9cbiIKKwkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzLCAvKiBnY2Nfaml0X3R5cGUgKmFycmF5X3R5 cGUgKi9cbiIKKwkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICVpLCAvKiBzaXplX3QgbnVtX2VsZW1lbnRzICAqLyBcbiIKKwkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzKTsgLyogZ2NjX2ppdF9ydmFsdWUgKiplbGVt ZW50cyovXG4iLAorCSAgIGlkLAorCSAgIHIuZ2V0X2lkZW50aWZpZXIgKGdldF9jb250ZXh0ICgp KSwKKwkgICByLmdldF9pZGVudGlmaWVyIChtX2xvYyksCisJICAgci5nZXRfaWRlbnRpZmllciAo bV9hcnJheV90eXBlKSwKKwkgICBtX2VsZW1lbnRzLmxlbmd0aCAoKSwKKwkgICBlbGVtZW50c19p ZCk7Cit9CisKIC8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjbGFzcyBnY2M6OmppdDo6cmVjb3Jk aW5nOjp1bmFyeV9vcC4gICovCiAKIC8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUgdmlydHVhbCBo b29rIHJlY29yZGluZzo6bWVtZW50bzo6cmVwbGF5X2ludG8KZGlmZiAtLWdpdCBhL2djYy9qaXQv aml0LXJlY29yZGluZy5oIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKaW5kZXggNGE5OTRmZTcw OTQuLjNhYjIzNzNjYjllIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaAorKysg Yi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaApAQCAtMTQ5LDYgKzE0OSwxMCBAQCBwdWJsaWM6CiAJ ICAgICAgdHlwZSAqdHlwZSwKIAkgICAgICBjb25zdCBjaGFyICpuYW1lKTsKIAorICB2b2lkCisg IG5ld19nbG9iYWxfdmFsdWVfaW5pdGlhbGl6ZXIgKHJlY29yZGluZzo6bHZhbHVlICpnbG9iYWws CisJCQkJcmVjb3JkaW5nOjpydmFsdWUgKnZhbHVlKTsKKwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg SE9TVF9UWVBFPgogICBydmFsdWUgKgogICBuZXdfcnZhbHVlX2Zyb21fY29uc3QgKHR5cGUgKnR5 cGUsCkBAIC0xNjIsNiArMTY2LDE2IEBAIHB1YmxpYzoKIAkJCSAgdmVjdG9yX3R5cGUgKnR5cGUs CiAJCQkgIHJ2YWx1ZSAqKmVsZW1lbnRzKTsKIAorICBydmFsdWUgKgorICBuZXdfcnZhbHVlX2Zy b21fc3RydWN0IChsb2NhdGlvbiAqbG9jLAorCQkJICBzdHJ1Y3RfICp0eXBlLAorCQkJICBydmFs dWUgKipmaWVsZHMpOworCisgIHJ2YWx1ZSAqCisgIG5ld19ydmFsdWVfZnJvbV9hcnJheSAobG9j YXRpb24gKmxvYywKKwkJCSBhcnJheV90eXBlICp0eXBlLAorCQkJIHJ2YWx1ZSAqKmVsZW1lbnRz KTsKKwogICBydmFsdWUgKgogICBuZXdfdW5hcnlfb3AgKGxvY2F0aW9uICpsb2MsCiAJCWVudW0g Z2NjX2ppdF91bmFyeV9vcCBvcCwKQEAgLTUyMiw2ICs1MzYsNyBAQCBwdWJsaWM6CiAgIHZpcnR1 YWwgZnVuY3Rpb25fdHlwZSAqYXNfYV9mdW5jdGlvbl90eXBlKCkgeyBnY2NfdW5yZWFjaGFibGUg KCk7IHJldHVybiBOVUxMOyB9CiAgIHZpcnR1YWwgc3RydWN0XyAqZHluX2Nhc3Rfc3RydWN0ICgp IHsgcmV0dXJuIE5VTEw7IH0KICAgdmlydHVhbCB2ZWN0b3JfdHlwZSAqZHluX2Nhc3RfdmVjdG9y X3R5cGUgKCkgeyByZXR1cm4gTlVMTDsgfQorICB2aXJ0dWFsIGFycmF5X3R5cGUgKmR5bl9jYXN0 X2FycmF5X3R5cGUgKCkgeyByZXR1cm4gTlVMTDsgfQogCiAgIC8qIElzIGl0IHR5cGVzYWZlIHRv IGNvcHkgdG8gdGhpcyB0eXBlIGZyb20gcnR5cGU/ICAqLwogICB2aXJ0dWFsIGJvb2wgYWNjZXB0 c193cml0ZXNfZnJvbSAodHlwZSAqcnR5cGUpCkBAIC03NzMsNiArNzg4LDggQEAgY2xhc3MgYXJy YXlfdHlwZSA6IHB1YmxpYyB0eXBlCiAKICAgdHlwZSAqZGVyZWZlcmVuY2UgKCkgRklOQUwgT1ZF UlJJREU7CiAKKyAgYXJyYXlfdHlwZSAqZHluX2Nhc3RfYXJyYXlfdHlwZSAoKSBGSU5BTCBPVkVS UklERSB7IHJldHVybiB0aGlzOyB9CisKICAgYm9vbCBpc19pbnQgKCkgY29uc3QgRklOQUwgT1ZF UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgYm9vbCBpc19mbG9hdCAoKSBjb25zdCBGSU5BTCBP VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICBib29sIGlzX2Jvb2wgKCkgY29uc3QgRklOQUwg T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTExMzQsNiArMTE1MSwxMSBAQCBwdWJsaWM6 CiAgIGNvbnN0IGNoYXIgKmFjY2Vzc19hc19ydmFsdWUgKHJlcHJvZHVjZXIgJnIpIE9WRVJSSURF OwogICB2aXJ0dWFsIGNvbnN0IGNoYXIgKmFjY2Vzc19hc19sdmFsdWUgKHJlcHJvZHVjZXIgJnIp OwogICB2aXJ0dWFsIGJvb2wgaXNfZ2xvYmFsICgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK KyAgYm9vbCBpc19jb25zdGFudCAoKSBjb25zdCBGSU5BTCBPVkVSUklERQorICB7CisgICAgICBy ZXR1cm4gaXNfZ2xvYmFsICgpOworICB9CiB9OwogCiBjbGFzcyBwYXJhbSA6IHB1YmxpYyBsdmFs dWUKQEAgLTEzNjcsNiArMTM4OSw3IEBAIHB1YmxpYzoKICAgICBtX25hbWUgKG5hbWUpCiAgIHsK ICAgICBtX2luaXRpYWxpemVyID0gTlVMTDsKKyAgICBtX2luaXRpYWxpemVyX3ZhbHVlID0gTlVM TDsKICAgICBtX2luaXRpYWxpemVyX251bV9ieXRlcyA9IDA7CiAgIH0KICAgfmdsb2JhbCAoKQpA QCAtMTM5Myw2ICsxNDE2LDE0IEBAIHB1YmxpYzoKICAgICBtX2luaXRpYWxpemVyX251bV9ieXRl cyA9IG51bV9ieXRlczsKICAgfQogCisgIHZvaWQKKyAgc2V0X2luaXRpYWxpemVyX3ZhbHVlIChy dmFsdWUqIHZhbHVlKQorICB7CisgICAgbV9pbml0aWFsaXplcl92YWx1ZSA9IHZhbHVlOworICB9 CisKKyAgZW51bSBnY2Nfaml0X2dsb2JhbF9raW5kIGdldF9raW5kICgpIGNvbnN0IHsgcmV0dXJu IG1fa2luZDsgfQorCiBwcml2YXRlOgogICBzdHJpbmcgKiBtYWtlX2RlYnVnX3N0cmluZyAoKSBG SU5BTCBPVkVSUklERSB7IHJldHVybiBtX25hbWU7IH0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ CkBAIC0xNDA3LDkgKzE0MzgsMzAgQEAgcHJpdmF0ZToKICAgZW51bSBnY2Nfaml0X2dsb2JhbF9r aW5kIG1fa2luZDsKICAgc3RyaW5nICptX25hbWU7CiAgIHZvaWQgKm1faW5pdGlhbGl6ZXI7Cisg IHJ2YWx1ZSAqbV9pbml0aWFsaXplcl92YWx1ZTsKICAgc2l6ZV90IG1faW5pdGlhbGl6ZXJfbnVt X2J5dGVzOwogfTsKIAorY2xhc3MgZ2xvYmFsX2luaXRpYWxpemVyIDogcHVibGljIG1lbWVudG8K K3sKK3B1YmxpYzoKKyAgdm9pZCB3cml0ZV90b19kdW1wIChkdW1wICZkKSBGSU5BTCBPVkVSUklE RTsKKyAgdm9pZCByZXBsYXlfaW50byAocmVwbGF5ZXIgKikgRklOQUwgT1ZFUlJJREU7CisKKyAg Z2xvYmFsX2luaXRpYWxpemVyIChsdmFsdWUgKmdsb2JhbCwgcnZhbHVlICp2YWx1ZSkKKyAgOiBt ZW1lbnRvIChnbG9iYWwtPm1fY3R4dCksCisgICAgbV9nbG9iYWwgKGdsb2JhbCksCisgICAgbV92 YWx1ZSAodmFsdWUpIHt9CisKK3ByaXZhdGU6CisgIHZvaWQgd3JpdGVfcmVwcm9kdWNlciAocmVw cm9kdWNlciAmcikgRklOQUwgT1ZFUlJJREU7CisgIHN0cmluZyAqIG1ha2VfZGVidWdfc3RyaW5n ICgpIEZJTkFMIE9WRVJSSURFOworCitwcml2YXRlOgorICBsdmFsdWUgKm1fZ2xvYmFsOworICBy dmFsdWUgKm1fdmFsdWU7Cit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSE9TVF9UWVBFPgogY2xh c3MgbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fY29uc3QgOiBwdWJsaWMgcnZhbHVlCiB7CkBA IC0xNDU0LDYgKzE1MDYsOCBAQCBwdWJsaWM6CiAKICAgdm9pZCB2aXNpdF9jaGlsZHJlbiAocnZh bHVlX3Zpc2l0b3IgKikgRklOQUwgT1ZFUlJJREUge30KIAorICB2aXJ0dWFsIGJvb2wgaXNfY29u c3RhbnQgKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICBzdHJpbmcgKiBt YWtlX2RlYnVnX3N0cmluZyAoKSBGSU5BTCBPVkVSUklERTsKICAgdm9pZCB3cml0ZV9yZXByb2R1 Y2VyIChyZXByb2R1Y2VyICZyKSBGSU5BTCBPVkVSUklERTsKQEAgLTE0OTEsNiArMTU0NSw3OCBA QCBwcml2YXRlOgogICBhdXRvX3ZlYzxydmFsdWUgKj4gbV9lbGVtZW50czsKIH07CiAKK2NsYXNz IG1lbWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX2FycmF5IDogcHVibGljIHJ2YWx1ZQoreworcHVi bGljOgorICBtZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9hcnJheSAoY29udGV4dCAqY3R4dCwK KwkJCQkgICAgbG9jYXRpb24gKmxvYywKKwkJCQkgICAgYXJyYXlfdHlwZSAqdHlwZSwKKwkJCQkg ICAgcnZhbHVlICoqZWxlbWVudHMpOworCisgIHZvaWQgcmVwbGF5X2ludG8gKHJlcGxheWVyICpy KSBGSU5BTCBPVkVSUklERTsKKworICB2b2lkIHZpc2l0X2NoaWxkcmVuIChydmFsdWVfdmlzaXRv ciAqKSBGSU5BTCBPVkVSUklERTsKKworICB2aXJ0dWFsIGJvb2wgaXNfY29uc3RhbnQgKCkgY29u c3QgeworICAgICAgZm9yIChydmFsdWUgKmVsZW1lbnQgOiBtX2VsZW1lbnRzKQorICAgICAgewor CWlmICghZWxlbWVudC0+aXNfY29uc3RhbnQgKCkpCisJeworCSAgcmV0dXJuIGZhbHNlOworCX0K KyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICB9CisKK3ByaXZhdGU6CisgIHN0cmluZyAq IG1ha2VfZGVidWdfc3RyaW5nICgpIEZJTkFMIE9WRVJSSURFOworICB2b2lkIHdyaXRlX3JlcHJv ZHVjZXIgKHJlcHJvZHVjZXIgJnIpIEZJTkFMIE9WRVJSSURFOworICBlbnVtIHByZWNlZGVuY2Ug Z2V0X3ByZWNlZGVuY2UgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUKKyAgeworICAgIHJldHVybiBQ UkVDRURFTkNFX1BSSU1BUlk7CisgIH0KKworcHJpdmF0ZToKKyAgYXJyYXlfdHlwZSAqbV9hcnJh eV90eXBlOworICBhdXRvX3ZlYzxydmFsdWUgKj4gbV9lbGVtZW50czsKK307CisKK2NsYXNzIG1l bWVudG9fb2ZfbmV3X3J2YWx1ZV9mcm9tX3N0cnVjdCA6IHB1YmxpYyBydmFsdWUKK3sKK3B1Ymxp YzoKKyAgbWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fc3RydWN0IChjb250ZXh0ICpjdHh0LAor CQkJCSAgICAgbG9jYXRpb24gKmxvYywKKwkJCQkgICAgIHN0cnVjdF8gKnR5cGUsCisJCQkJICAg ICBydmFsdWUgKipmaWVsZHMpOworCisgIHZvaWQgcmVwbGF5X2ludG8gKHJlcGxheWVyICpyKSBG SU5BTCBPVkVSUklERTsKKworICB2b2lkIHZpc2l0X2NoaWxkcmVuIChydmFsdWVfdmlzaXRvciAq KSBGSU5BTCBPVkVSUklERTsKKworICB2aXJ0dWFsIGJvb2wgaXNfY29uc3RhbnQgKCkgY29uc3Qg eworICAgICAgZm9yIChydmFsdWUgKmZpZWxkIDogbV9maWVsZHMpCisgICAgICB7CisJaWYgKCFm aWVsZC0+aXNfY29uc3RhbnQgKCkpCisJeworCSAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgIH0K KyAgICAgIHJldHVybiB0cnVlOworICB9CisKK3ByaXZhdGU6CisgIHN0cmluZyAqIG1ha2VfZGVi dWdfc3RyaW5nICgpIEZJTkFMIE9WRVJSSURFOworICB2b2lkIHdyaXRlX3JlcHJvZHVjZXIgKHJl cHJvZHVjZXIgJnIpIEZJTkFMIE9WRVJSSURFOworICBlbnVtIHByZWNlZGVuY2UgZ2V0X3ByZWNl ZGVuY2UgKCkgY29uc3QgRklOQUwgT1ZFUlJJREUKKyAgeworICAgIHJldHVybiBQUkVDRURFTkNF X1BSSU1BUlk7CisgIH0KKworcHJpdmF0ZToKKyAgc3RydWN0XyAqbV9zdHJ1Y3RfdHlwZTsKKyAg YXV0b192ZWM8cnZhbHVlICo+IG1fZmllbGRzOworfTsKKwogY2xhc3MgdW5hcnlfb3AgOiBwdWJs aWMgcnZhbHVlCiB7CiBwdWJsaWM6CkBAIC0xNTM4LDYgKzE2NjQsMTAgQEAgcHVibGljOgogCiAg IHZvaWQgdmlzaXRfY2hpbGRyZW4gKHJ2YWx1ZV92aXNpdG9yICp2KSBGSU5BTCBPVkVSUklERTsK IAorICB2aXJ0dWFsIGJvb2wgaXNfY29uc3RhbnQgKCkgY29uc3QgeworICAgICAgcmV0dXJuIG1f YS0+aXNfY29uc3RhbnQgKCkgJiYgbV9iLT5pc19jb25zdGFudCAoKTsKKyAgfQorCiBwcml2YXRl OgogICBzdHJpbmcgKiBtYWtlX2RlYnVnX3N0cmluZyAoKSBGSU5BTCBPVkVSUklERTsKICAgdm9p ZCB3cml0ZV9yZXByb2R1Y2VyIChyZXByb2R1Y2VyICZyKSBGSU5BTCBPVkVSUklERTsKQEAgLTE1 OTIsNiArMTcyMiwxMCBAQCBwdWJsaWM6CiAKICAgdm9pZCB2aXNpdF9jaGlsZHJlbiAocnZhbHVl X3Zpc2l0b3IgKnYpIEZJTkFMIE9WRVJSSURFOwogCisgIHZpcnR1YWwgYm9vbCBpc19jb25zdGFu dCAoKSBjb25zdCB7CisgICAgICByZXR1cm4gbV9ydmFsdWUtPmlzX2NvbnN0YW50ICgpOworICB9 CisKIHByaXZhdGU6CiAgIHN0cmluZyAqIG1ha2VfZGVidWdfc3RyaW5nICgpIEZJTkFMIE9WRVJS SURFOwogICB2b2lkIHdyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpIEZJTkFMIE9WRVJS SURFOwpAQCAtMTgzMCw2ICsxOTY0LDEwIEBAIHB1YmxpYzoKIAogICB2b2lkIHZpc2l0X2NoaWxk cmVuIChydmFsdWVfdmlzaXRvciAqdikgRklOQUwgT1ZFUlJJREU7CiAKKyAgdmlydHVhbCBib29s IGlzX2NvbnN0YW50ICgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBtX2x2YWx1ZS0+aXNfY29uc3Rh bnQgKCk7CisgIH0KKwogcHJpdmF0ZToKICAgc3RyaW5nICogbWFrZV9kZWJ1Z19zdHJpbmcgKCkg RklOQUwgT1ZFUlJJREU7CiAgIHZvaWQgd3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAmcikg RklOQUwgT1ZFUlJJREU7CkBAIC0xODU2LDYgKzE5OTQsOCBAQCBwdWJsaWM6CiAKICAgdm9pZCB2 aXNpdF9jaGlsZHJlbiAocnZhbHVlX3Zpc2l0b3IgKnYpIEZJTkFMIE9WRVJSSURFOwogCisgIHZp cnR1YWwgYm9vbCBpc19jb25zdGFudCAoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKIHByaXZh dGU6CiAgIHN0cmluZyAqIG1ha2VfZGVidWdfc3RyaW5nICgpIEZJTkFMIE9WRVJSSURFOwogICB2 b2lkIHdyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpIEZJTkFMIE9WRVJSSURFOwpkaWZm IC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuYyBiL2djYy9qaXQvbGliZ2Njaml0LmMKaW5kZXgg Yzc0NGI2MzRmNGIuLmY0ODYzNmM4NDRmIDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5j CisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmMKQEAgLTI3Nyw2ICsyNzcsMTcgQEAgc3RydWN0IGdj Y19qaXRfZXh0ZW5kZWRfYXNtIDogcHVibGljIGdjYzo6aml0OjpyZWNvcmRpbmc6OmV4dGVuZGVk X2FzbQogICAgICAgfQkJCQkJCQkJXAogICBKSVRfRU5EX1NUTVQKIAorI2RlZmluZSBSRVRVUk5f SUZfRkFJTF9QUklOVEY1KFRFU1RfRVhQUiwgQ1RYVCwgTE9DLCBFUlJfRk1ULCBBMCwgQTEsIEEy LCBBMywgXAorCQkJICAgICAgIEE0KSBcCisgIEpJVF9CRUdJTl9TVE1UCQkJCQkJCVwKKyAgICBp ZiAoIShURVNUX0VYUFIpKQkJCQkJCQlcCisgICAgICB7CQkJCQkJCQlcCisJaml0X2Vycm9yICgo Q1RYVCksIChMT0MpLCAiJXM6ICIgRVJSX0ZNVCwJCQlcCisJCSAgIF9fZnVuY19fLCAoQTApLCAo QTEpLCAoQTIpLCAoQTMpLCAoQTQpKTsJCVwKKwlyZXR1cm47CQkJCQkJCVwKKyAgICAgIH0JCQkJ CQkJCVwKKyAgSklUX0VORF9TVE1UCisKIC8qIENoZWNrIHRoYXQgQkxPQ0sgaXMgbm9uLU5VTEws IGFuZCB0aGF0IGl0J3MgT0sgdG8gYWRkIHN0YXRlbWVudHMgdG8KICAgIGl0LiAgVGhpcyB3aWxs IGZhaWwgaWYgQkxPQ0sgaGFzIGFscmVhZHkgYmVlbiB0ZXJtaW5hdGVkIGJ5IHNvbWUKICAgIGtp bmQgb2YganVtcCBvciBhIHJldHVybi4gICovCkBAIC0xNDI1LDYgKzE0MzYsNDggQEAgZ2NjX2pp dF9nbG9iYWxfc2V0X2luaXRpYWxpemVyIChnY2Nfaml0X2x2YWx1ZSAqZ2xvYmFsLAogICByZXR1 cm4gZ2xvYmFsOwogfQogCisvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBp biBsaWJnY2NqaXQuaC4KKworICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsg aXMgZG9uZSBieSB0aGUKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6Omdsb2JhbDo6c2V0X2luaXRp YWxpemVyX3ZhbHVlIG1ldGhvZCwgaW4KKyAgIGppdC1yZWNvcmRpbmcuYy4gICovCisKK3ZvaWQK K2djY19qaXRfZ2xvYmFsX3NldF9pbml0aWFsaXplcl92YWx1ZSAoZ2NjX2ppdF9sdmFsdWUgKmds b2JhbCwKKwkJCQkgICAgICBnY2Nfaml0X3J2YWx1ZSAqdmFsdWUpCit7CisgIFJFVFVSTl9JRl9G QUlMIChnbG9iYWwsIE5VTEwsIE5VTEwsICJOVUxMIGdsb2JhbCIpOworICBSRVRVUk5fSUZfRkFJ TCAodmFsdWUsIE5VTEwsIE5VTEwsICJOVUxMIHZhbHVlIik7CisgIFJFVFVSTl9JRl9GQUlMX1BS SU5URjEgKGdsb2JhbC0+aXNfZ2xvYmFsICgpLCBOVUxMLCBOVUxMLAorCQkJICAgICAgICJsdmFs dWUgXCIlc1wiIG5vdCBhIGdsb2JhbCIsCisJCQkgICAgICAgZ2xvYmFsLT5nZXRfZGVidWdfc3Ry aW5nICgpKTsKKworICBnY2M6OmppdDo6cmVjb3JkaW5nOjpnbG9iYWwgKmdsb2JhbF92YXJpYWJs ZSA9CisgICAgcmVpbnRlcnByZXRfY2FzdCA8Z2NjOjpqaXQ6OnJlY29yZGluZzo6Z2xvYmFsICo+ IChnbG9iYWwpOworICBSRVRVUk5fSUZfRkFJTF9QUklOVEYxIChnbG9iYWxfdmFyaWFibGUtPmdl dF9raW5kICgpCisgICAgIT0gR0NDX0pJVF9HTE9CQUxfSU1QT1JURUQsIGdsb2JhbC0+Z2V0X2Nv bnRleHQgKCksIE5VTEwsCisgICAgImdsb2JhbCBcIiVzXCIgY2Fubm90IGJlIG9mIGltcG9ydGVk IGtpbmQiLAorICAgIGdsb2JhbC0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7CisKKyAgICAgIFJFVFVS Tl9JRl9GQUlMX1BSSU5URjUgKAorCWNvbXBhdGlibGVfdHlwZXMgKGdsb2JhbC0+Z2V0X3R5cGUg KCksCisJCQkgIHZhbHVlLT5nZXRfdHlwZSAoKSksCisJTlVMTCwgTlVMTCwKKwkibWlzbWF0Y2hp bmcgdHlwZXMgZm9yIGdsb2JhbCBcIiVzXCI6IgorCSIgYXNzaWdubWVudCB0byBnbG9iYWwgJXMg KHR5cGU6ICVzKSBmcm9tICVzICh0eXBlOiAlcykiLAorCWdsb2JhbC0+Z2V0X2RlYnVnX3N0cmlu ZyAoKSwKKwlnbG9iYWwtPmdldF9kZWJ1Z19zdHJpbmcgKCksCisJZ2xvYmFsLT5nZXRfdHlwZSAo KS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKwl2YWx1ZS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKwl2 YWx1ZS0+Z2V0X3R5cGUgKCktPmdldF9kZWJ1Z19zdHJpbmcgKCkpOworCisgIFJFVFVSTl9JRl9G QUlMX1BSSU5URjEgKHZhbHVlLT5pc19jb25zdGFudCAoKSwgTlVMTCwgTlVMTCwKKwkJCSAgICAg ICAicnZhbHVlIFwiJXNcIiBub3QgYSBjb25zdGFudCIsCisJCQkgICAgICAgdmFsdWUtPmdldF9k ZWJ1Z19zdHJpbmcgKCkpOworCisgIGdsb2JhbC0+Z2V0X2NvbnRleHQgKCktPm5ld19nbG9iYWxf dmFsdWVfaW5pdGlhbGl6ZXIgKGdsb2JhbCwgdmFsdWUpOworfQorCiAvKiBQdWJsaWMgZW50cnlw b2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KIAogICAgQWZ0ZXIgZXJyb3It Y2hlY2tpbmcsIHRoaXMgY2FsbHMgdGhlIHRyaXZpYWwKQEAgLTE2NDcsNiArMTcwMCwxMTQgQEAg Z2NjX2ppdF9jb250ZXh0X25ld19zdHJpbmdfbGl0ZXJhbCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0 LAogICByZXR1cm4gKGdjY19qaXRfcnZhbHVlICopY3R4dC0+bmV3X3N0cmluZ19saXRlcmFsICh2 YWx1ZSk7CiB9CiAKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGluIGxp YmdjY2ppdC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29yayBpcyBk b25lIGJ5IHRoZQorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6Y29udGV4dDo6bmV3X3J2YWx1ZV9m cm9tX3N0cnVjdCBtZXRob2QgaW4KKyAgIGppdC1yZWNvcmRpbmcuYy4gICovCisKK2djY19qaXRf cnZhbHVlICoKK2djY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fc3RydWN0IChnY2Nfaml0 X2NvbnRleHQgKmN0eHQsCisJCQkJCWdjY19qaXRfbG9jYXRpb24gKmxvYywKKwkJCQkJZ2NjX2pp dF9zdHJ1Y3QgKnN0cnVjdF90eXBlLAorCQkJCQlzaXplX3QgbnVtX2ZpZWxkcywKKwkJCQkJZ2Nj X2ppdF9ydmFsdWUgKipmaWVsZHMpCit7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKGN0eHQsIE5V TEwsIE5VTEwsICJOVUxMIGNvbnRleHQiKTsKKyAgSklUX0xPR19GVU5DIChjdHh0LT5nZXRfbG9n Z2VyICgpKTsKKworICAvKiBMT0MgY2FuIGJlIE5VTEwuICAqLworICBSRVRVUk5fTlVMTF9JRl9G QUlMIChzdHJ1Y3RfdHlwZSwgY3R4dCwgbG9jLCAiTlVMTCBzdHJ1Y3RfdHlwZSIpOworCisgIC8q ICJudW1fZmllbGRzIiBtdXN0IG1hdGNoLiAgKi8KKyAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklO VEYxICgKKyAgICBudW1fZmllbGRzID09IChzaXplX3QpIHN0cnVjdF90eXBlLT5nZXRfZmllbGRz ICgpLT5sZW5ndGggKCksIGN0eHQsIGxvYywKKyAgICAibnVtX2ZpZWxkcyAhPSAlZCIsIHN0cnVj dF90eXBlLT5nZXRfZmllbGRzICgpLT5sZW5ndGggKCkpOworCisgIC8qICJmaWVsZHMgbXVzdCBi ZSBub24tTlVMTC4gICovCisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKGZpZWxkcywgY3R4dCwgbG9j LCAiTlVMTCBmaWVsZHMiKTsKKworICAvKiBFYWNoIG9mICJmaWVsZHMiIG11c3QgYmUgbm9uLU5V TEwgYW5kIG9mIHRoZSBjb3JyZWN0IHR5cGUuICAqLworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8 IG51bV9maWVsZHM7IGkrKykKKyAgICB7CisgICAgICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5U RjEgKAorCWZpZWxkc1tpXSwgY3R4dCwgbG9jLCAiTlVMTCBmaWVsZHNbJXppXSIsIGkpOworICAg ICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dHlwZSAqZmllbGRfdHlwZQorCT0gc3RydWN0X3R5cGUt PmdldF9maWVsZHMgKCktPmdldF9maWVsZCAoaSktPmdldF90eXBlICgpOworICAgICAgUkVUVVJO X05VTExfSUZfRkFJTF9QUklOVEY0ICgKKwljb21wYXRpYmxlX3R5cGVzIChmaWVsZF90eXBlLAor CQkJICBmaWVsZHNbaV0tPmdldF90eXBlICgpKSwKKwljdHh0LCBsb2MsCisJIm1pc21hdGNoaW5n IHR5cGUgZm9yIGZpZWxkWyV6aV0gKGV4cGVjdGVkIHR5cGU6ICVzKTogJXMgKHR5cGU6ICVzKSIs CisJaSwKKwlmaWVsZF90eXBlLT5nZXRfZGVidWdfc3RyaW5nICgpLAorCWZpZWxkc1tpXS0+Z2V0 X2RlYnVnX3N0cmluZyAoKSwKKwlmaWVsZHNbaV0tPmdldF90eXBlICgpLT5nZXRfZGVidWdfc3Ry aW5nICgpKTsKKyAgICAgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRGMiAoZmllbGRzW2ldLT5p c19jb25zdGFudCAoKSwgY3R4dCwgTlVMTCwKKwkJCQkgICAiZmllbGRzWyVsZF0gaXMgbm90IGEg Y29uc3RhbnQ6ICVzIiwgaSwKKwkJCQkgICBmaWVsZHNbaV0tPmdldF9kZWJ1Z19zdHJpbmcgKCkp OworICAgIH0KKworICByZXR1cm4gKGdjY19qaXRfcnZhbHVlICopY3R4dC0+bmV3X3J2YWx1ZV9m cm9tX3N0cnVjdCAobG9jLCBzdHJ1Y3RfdHlwZSwKKyAgICAoZ2NjOjpqaXQ6OnJlY29yZGluZzo6 cnZhbHVlICoqKWZpZWxkcyk7Cit9CisKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2Ny aXB0aW9uIGluIGxpYmdjY2ppdC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJl YWwgd29yayBpcyBkb25lIGJ5IHRoZQorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6Y29udGV4dDo6 bmV3X3J2YWx1ZV9mcm9tX2FycmF5IG1ldGhvZCBpbgorICAgaml0LXJlY29yZGluZy5jLiAgKi8K KworZ2NjX2ppdF9ydmFsdWUgKgorZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9hcnJh eSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAorCQkJCQlnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisJ CQkJCWdjY19qaXRfdHlwZSAqYXJyYXlfdHlwZSwKKwkJCQkJc2l6ZV90IG51bV9lbGVtZW50cywK KwkJCQkJZ2NjX2ppdF9ydmFsdWUgKiplbGVtZW50cykKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJ TCAoY3R4dCwgTlVMTCwgTlVMTCwgIk5VTEwgY29udGV4dCIpOworICBKSVRfTE9HX0ZVTkMgKGN0 eHQtPmdldF9sb2dnZXIgKCkpOworCisgIC8qIExPQyBjYW4gYmUgTlVMTC4gICovCisgIFJFVFVS Tl9OVUxMX0lGX0ZBSUwgKGFycmF5X3R5cGUsIGN0eHQsIGxvYywgIk5VTEwgdHlwZSIpOworCisg IC8qICJhcnJheV90eXBlIiBtdXN0IGJlIGFuIGFycmF5IHR5cGUuICAqLworICBnY2M6OmppdDo6 cmVjb3JkaW5nOjphcnJheV90eXBlICphc19hcnJheV90eXBlCisgICAgPSBhcnJheV90eXBlLT5k eW5fY2FzdF9hcnJheV90eXBlICgpOworICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjEgKGFz X2FycmF5X3R5cGUsIGN0eHQsIGxvYywKKwkJCSAgICAgICAiJXMgaXMgbm90IGFuIGFycmF5IHR5 cGUiLAorCQkJICAgICAgIGFycmF5X3R5cGUtPmdldF9kZWJ1Z19zdHJpbmcgKCkpOworCisgIC8q ICJudW1fZWxlbWVudHMiIG11c3QgbWF0Y2guICAqLworICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BS SU5URjEgKAorICAgIG51bV9lbGVtZW50cyA9PSAoc2l6ZV90KSBhc19hcnJheV90eXBlLT5udW1f ZWxlbWVudHMgKCksIGN0eHQsIGxvYywKKyAgICAibnVtX2VsZW1lbnRzICE9ICVkIiwgYXNfYXJy YXlfdHlwZS0+bnVtX2VsZW1lbnRzICgpKTsKKworICAvKiAiZWxlbWVudHMgbXVzdCBiZSBub24t TlVMTC4gICovCisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKGVsZW1lbnRzLCBjdHh0LCBsb2MsICJO VUxMIGVsZW1lbnRzIik7CisKKyAgLyogRWFjaCBvZiAiZWxlbWVudHMiIG11c3QgYmUgbm9uLU5V TEwgYW5kIG9mIHRoZSBjb3JyZWN0IHR5cGUuICAqLworICBnY2M6OmppdDo6cmVjb3JkaW5nOjp0 eXBlICplbGVtZW50X3R5cGUKKyAgICA9IGFzX2FycmF5X3R5cGUtPmlzX2FycmF5ICgpOworICBm b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9lbGVtZW50czsgaSsrKQorICAgIHsKKyAgICAgIFJF VFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRGMSAoCisJZWxlbWVudHNbaV0sIGN0eHQsIGxvYywgIk5V TEwgZWxlbWVudHNbJXppXSIsIGkpOworICAgICAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklOVEY0 ICgKKwljb21wYXRpYmxlX3R5cGVzIChlbGVtZW50X3R5cGUsCisJCQkgIGVsZW1lbnRzW2ldLT5n ZXRfdHlwZSAoKSksCisJY3R4dCwgbG9jLAorCSJtaXNtYXRjaGluZyB0eXBlIGZvciBhcnJheVsl emldIChleHBlY3RlZCB0eXBlOiAlcyk6ICVzICh0eXBlOiAlcykiLAorCWksCisJZWxlbWVudF90 eXBlLT5nZXRfZGVidWdfc3RyaW5nICgpLAorCWVsZW1lbnRzW2ldLT5nZXRfZGVidWdfc3RyaW5n ICgpLAorCWVsZW1lbnRzW2ldLT5nZXRfdHlwZSAoKS0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7Cisg ICAgfQorCisgIHJldHVybiAoZ2NjX2ppdF9ydmFsdWUgKiljdHh0LT5uZXdfcnZhbHVlX2Zyb21f YXJyYXkgKGxvYywgYXNfYXJyYXlfdHlwZSwKKyAgICAoZ2NjOjpqaXQ6OnJlY29yZGluZzo6cnZh bHVlICoqKWVsZW1lbnRzKTsKK30KKwogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3Jp cHRpb24gaW4gbGliZ2Njaml0LmguCiAKICAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVh bCB3b3JrIGlzIGRvbmUgYnkgdGhlCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5oIGIv Z2NjL2ppdC9saWJnY2NqaXQuaAppbmRleCBhMWM5NDM2YzU0NS4uZWU5NTlkODNjNjcgMTAwNjQ0 Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0LmgKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuaApAQCAt ODI3LDYgKzgyNywxOSBAQCBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXIgKGdjY19qaXRf bHZhbHVlICpnbG9iYWwsCiAJCQkJY29uc3Qgdm9pZCAqYmxvYiwKIAkJCQlzaXplX3QgbnVtX2J5 dGVzKTsKIAorI2RlZmluZSBMSUJHQ0NKSVRfSEFWRV9HTE9CQUxfSU5JVElBTElaRVJfVkFMVUUK KworLyogU2V0IGFuIGluaXRpYWwgdmFsdWUgZm9yIGEgZ2xvYmFsLCB3aGljaCBtdXN0IGJlIGEg Y29uc3RhbnQuCisKKyAgIFRoaXMgQVBJIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIExJQkdDQ0pJ VF9BQklfMjE7IHlvdSBjYW4gdGVzdCBmb3IgaXRzCisgICBwcmVzZW5jZSB1c2luZworICAgICAj aWZkZWYgTElCR0NDSklUX0hBVkVfR0xPQkFMX0lOSVRJQUxJWkVSX1ZBTFVFCisqLworCitleHRl cm4gdm9pZAorZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3ZhbHVlIChnY2Nfaml0X2x2 YWx1ZSAqZ2xvYmFsLAorCQkJCSAgICAgIGdjY19qaXRfcnZhbHVlICp2YWx1ZSk7CisKIC8qIFVw Y2FzdGluZy4gICovCiBleHRlcm4gZ2NjX2ppdF9vYmplY3QgKgogZ2NjX2ppdF9sdmFsdWVfYXNf b2JqZWN0IChnY2Nfaml0X2x2YWx1ZSAqbHZhbHVlKTsKQEAgLTg4MCw2ICs4OTMsMjAgQEAgZXh0 ZXJuIGdjY19qaXRfcnZhbHVlICoKIGdjY19qaXRfY29udGV4dF9uZXdfc3RyaW5nX2xpdGVyYWwg KGdjY19qaXRfY29udGV4dCAqY3R4dCwKIAkJCQkgICAgY29uc3QgY2hhciAqdmFsdWUpOwogCitl eHRlcm4gZ2NjX2ppdF9ydmFsdWUgKgorZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9z dHJ1Y3QgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKKwkJCQkJZ2NjX2ppdF9sb2NhdGlvbiAqbG9j LAorCQkJCQlnY2Nfaml0X3N0cnVjdCAqc3RydWN0X3R5cGUsCisJCQkJCXNpemVfdCBudW1fZmll bGRzLAorCQkJCQlnY2Nfaml0X3J2YWx1ZSAqKmZpZWxkcyk7CisKK2V4dGVybiBnY2Nfaml0X3J2 YWx1ZSAqCitnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2FycmF5IChnY2Nfaml0X2Nv bnRleHQgKmN0eHQsCisJCQkJCWdjY19qaXRfbG9jYXRpb24gKmxvYywKKwkJCQkJZ2NjX2ppdF90 eXBlICphcnJheV90eXBlLAorCQkJCQlzaXplX3QgbnVtX2VsZW1lbnRzLAorCQkJCQlnY2Nfaml0 X3J2YWx1ZSAqKmVsZW1lbnRzKTsKKwogZW51bSBnY2Nfaml0X3VuYXJ5X29wCiB7CiAgIC8qIE5l Z2F0ZSBhbiBhcml0aG1ldGljIHZhbHVlOyBhbmFsb2dvdXMgdG86CmRpZmYgLS1naXQgYS9nY2Mv aml0L2xpYmdjY2ppdC5tYXAgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKaW5kZXggNjRlNzkwOTQ5 ZTguLjg0MDU5MjYxODQ1IDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKKysrIGIv Z2NjL2ppdC9saWJnY2NqaXQubWFwCkBAIC0yMjYsMyArMjI2LDIyIEBAIExJQkdDQ0pJVF9BQklf MTYgewogICAgIGdjY19qaXRfdHlwZV9pc19zdHJ1Y3Q7CiAgICAgZ2NjX2ppdF9zdHJ1Y3RfZ2V0 X2ZpZWxkX2NvdW50OwogfSBMSUJHQ0NKSVRfQUJJXzE1OworCitMSUJHQ0NKSVRfQUJJXzE3IHsK K30gTElCR0NDSklUX0FCSV8xNjsKKworTElCR0NDSklUX0FCSV8xOCB7Cit9IExJQkdDQ0pJVF9B QklfMTc7CisKK0xJQkdDQ0pJVF9BQklfMTkgeworfSBMSUJHQ0NKSVRfQUJJXzE4OworCitMSUJH Q0NKSVRfQUJJXzIwIHsKK30gTElCR0NDSklUX0FCSV8xOTsKKworTElCR0NDSklUX0FCSV8yMSB7 CisgIGdsb2JhbDoKKyAgICBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfdmFsdWU7Cisg ICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9zdHJ1Y3Q7CisgICAgZ2NjX2ppdF9j b250ZXh0X25ld19ydmFsdWVfZnJvbV9hcnJheTsKK30gTElCR0NDSklUX0FCSV8yMDsKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItaW1wb3J0ZWQtZ2xvYmFsLWlu aXRpYWxpemVyLmMgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWVycm9yLWltcG9ydGVkLWds b2JhbC1pbml0aWFsaXplci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5jZmEzNjU3ZTQyMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rl c3QtZXJyb3ItaW1wb3J0ZWQtZ2xvYmFsLWluaXRpYWxpemVyLmMKQEAgLTAsMCArMSw0MCBAQAor I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWJn Y2NqaXQuaCIKKworI2luY2x1ZGUgImhhcm5lc3MuaCIKKwordm9pZAorY3JlYXRlX2NvZGUgKGdj Y19qaXRfY29udGV4dCAqY3R4dCwgdm9pZCAqdXNlcl9kYXRhKQoreworICAvKiBMZXQncyB0cnkg dG8gaW1wb3J0IGEgZ2xvYmFsIHZhcmlhYmxlIGFuZCBzZXQgYW4gaW5pdGlhbCB2YWx1ZQorICAg ICBhbmQgdmVyaWZ5IHRoYXQgdGhlIEFQSSBjb21wbGFpbnMgYWJvdXQgc2V0dGluZyBhIHZhbHVl IHRvIGFuCisgICAgIGltcG9ydGVkIHZhcmlhYmxlLgorICAqLworICBnY2Nfaml0X3R5cGUgKnVu c2lnbmVkX3R5cGUgPQorICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJ VF9UWVBFX1VOU0lHTkVEX0lOVCk7CisKKyAgZ2NjX2ppdF9ydmFsdWUgKmZvcnR5X3R3byA9IGdj Y19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50ICgKKyAgICAgIGN0eHQsIHVuc2lnbmVk X3R5cGUsIDQyKTsKKworICBnY2Nfaml0X2x2YWx1ZSAqZ2xvYiA9CisgICAgZ2NjX2ppdF9jb250 ZXh0X25ld19nbG9iYWwgKAorICAgICAgY3R4dCwgTlVMTCwgR0NDX0pJVF9HTE9CQUxfSU1QT1JU RUQsCisgICAgICB1bnNpZ25lZF90eXBlLAorICAgICAgImludGVnZXIiKTsKKyAgZ2NjX2ppdF9n bG9iYWxfc2V0X2luaXRpYWxpemVyX3ZhbHVlIChnbG9iLCBmb3J0eV90d28pOworfQorCit2b2lk Cit2ZXJpZnlfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVz dWx0KQoreworICB2b2lkICpnbG9iID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2dsb2JhbCAocmVzdWx0 LCAiaW50ZWdlciIpOworICBDSEVDS19WQUxVRSAoZ2xvYiwgTlVMTCk7CisKKyAgLyogVmVyaWZ5 IHRoYXQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZSB3YXMgZW1pdHRlZC4gICovCisgIENIRUNL X1NUUklOR19WQUxVRSAoZ2NjX2ppdF9jb250ZXh0X2dldF9sYXN0X2Vycm9yIChjdHh0KSwKKwkJ ICAgICAgImdjY19qaXRfZ2xvYmFsX3NldF9pbml0aWFsaXplcl92YWx1ZTogIgorCQkgICAgICAi Z2xvYmFsIFwiaW50ZWdlclwiIGNhbm5vdCBiZSBvZiBpbXBvcnRlZCBraW5kIik7Cit9CisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZ2xvYmFsLXNldC1pbml0aWFsaXpl ci5jIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1nbG9iYWwtc2V0LWluaXRpYWxpemVyLmMK aW5kZXggZDM4YWJhN2Q3M2YuLjJiYmY3MjY2NGVhIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2ppdC5kZy90ZXN0LWdsb2JhbC1zZXQtaW5pdGlhbGl6ZXIuYworKysgYi9nY2MvdGVzdHN1aXRl L2ppdC5kZy90ZXN0LWdsb2JhbC1zZXQtaW5pdGlhbGl6ZXIuYwpAQCAtMTMsNiArMTMsMTEgQEAg c3RhdGljIHNpZ25lZCBjaGFyIHRlc3RfYmxvYjFbXSA9IHsgMHhjLCAweGEsIDB4ZiwgMHhmLCAw eGUgfTsKIHN0YXRpYyB1bnNpZ25lZCB0ZXN0X2Jsb2IyW10gPSB7IDB4MywgMHgyLCAweDEsIDB4 MCwgMHgxLCAweDIsIDB4MyB9Owogc3RhdGljIHVuc2lnbmVkIGNoYXIgdGVzdF9ibG9iM1tCSUdf QkxPQl9TSVpFXTsKIAorc3RydWN0IHN0cnVjdF9vZl9pbnRlZ2VycyB7CisgICAgaW50IGE7Cisg ICAgaW50IGI7Cit9OworCiB2b2lkCiBjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0 LCB2b2lkICp1c2VyX2RhdGEpCiB7CkBAIC0yMSw2ICsyNiwxMyBAQCBjcmVhdGVfY29kZSAoZ2Nj X2ppdF9jb250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCiAgICAgIHNpZ25lZCBjaGFyIGJp bl9ibG9iMVtdID0geyAweGMsIDB4YSwgMHhmLCAweGYsIDB4ZSB9OwogICAgICB1bnNpZ25lZCBi aW5fYmxvYjJbXSA9IHsgMHgzLCAweDIsIDB4MSwgMHgwLCAweDEsIDB4MiwgMHgzIH07CiAgICAg IHVuc2lnbmVkIGNoYXIgYmluX2Jsb2IzWzQwOTZdLi4uCisgICAgIHVuc2lnbmVkIGludCBpbnRl Z2VyID0gNDI7CisgICAgIHVuc2lnbmVkIGludCBpbnRlZ2Vyc1tdID0gezQyLCA0MywgNDV9Owor ICAgICBzdHJ1Y3Qgc3RydWN0X29mX2ludGVnZXJzIHsKKyAgICAgICAgaW50IGE7CisgICAgICAg IGludCBiOworICAgICB9OworICAgICBzdHJ1Y3Qgc3RydWN0X29mX2ludGVnZXJzIGludGVnZXJf c3RydWN0ID0gezQ0LCA0MH07CiAgICovCiAgIGdjY19qaXRfdHlwZSAqdW5zaWduZWRfY2hhcl90 eXBlID0KICAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIEdDQ19KSVRfVFlQRV9V TlNJR05FRF9DSEFSKTsKQEAgLTU2LDYgKzY4LDU4IEBAIGNyZWF0ZV9jb2RlIChnY2Nfaml0X2Nv bnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKIAkJCQkgICAgICBzaXplb2YgKHRlc3RfYmxv YjMpKSwKICAgICAgICJiaW5fYmxvYjMiKTsKICAgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxp emVyIChnbG9iLCB0ZXN0X2Jsb2IzLCBzaXplb2YgKHRlc3RfYmxvYjMpKTsKKworICBnY2Nfaml0 X3J2YWx1ZSAqZm9ydHlfdHdvID0gZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQg KAorICAgICAgY3R4dCwgdW5zaWduZWRfdHlwZSwgNDIpOworCisgIGdsb2IgPQorICAgIGdjY19q aXRfY29udGV4dF9uZXdfZ2xvYmFsICgKKyAgICAgIGN0eHQsIE5VTEwsIEdDQ19KSVRfR0xPQkFM X0VYUE9SVEVELAorICAgICAgdW5zaWduZWRfdHlwZSwKKyAgICAgICJpbnRlZ2VyIik7CisgIGdj Y19qaXRfZ2xvYmFsX3NldF9pbml0aWFsaXplcl92YWx1ZSAoZ2xvYiwgZm9ydHlfdHdvKTsKKwor ICBnY2Nfaml0X3R5cGUgKmFycmF5X3R5cGUgPSBnY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X3R5 cGUgKAorICAgICAgY3R4dCwgTlVMTCwgdW5zaWduZWRfdHlwZSwgMyk7CisKKyAgZ2NjX2ppdF9y dmFsdWUgKmVsZW1lbnRzWzNdID0geworICAgICAgZm9ydHlfdHdvLAorICAgICAgZ2NjX2ppdF9j b250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKCBjdHh0LCB1bnNpZ25lZF90eXBlLCA0MyksCisg ICAgICBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoIGN0eHQsIHVuc2lnbmVk X3R5cGUsIDQ1KSwKKyAgfTsKKworICBnY2Nfaml0X3J2YWx1ZSAqaW50ZWdlcnMgPSBnY2Nfaml0 X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2FycmF5ICgKKyAgICAgIGN0eHQsIE5VTEwsIGFycmF5 X3R5cGUsIDMsIGVsZW1lbnRzKTsKKworICBnbG9iID0KKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3 X2dsb2JhbCAoCisgICAgICBjdHh0LCBOVUxMLCBHQ0NfSklUX0dMT0JBTF9FWFBPUlRFRCwKKyAg ICAgIGFycmF5X3R5cGUsCisgICAgICAiaW50ZWdlcnMiKTsKKyAgZ2NjX2ppdF9nbG9iYWxfc2V0 X2luaXRpYWxpemVyX3ZhbHVlIChnbG9iLCBpbnRlZ2Vycyk7CisKKyAgZ2NjX2ppdF9maWVsZCAq ZmllbGRzWzJdID0geworICAgICAgZ2NjX2ppdF9jb250ZXh0X25ld19maWVsZCAoY3R4dCwgTlVM TCwgdW5zaWduZWRfdHlwZSwgImEiKSwKKyAgICAgIGdjY19qaXRfY29udGV4dF9uZXdfZmllbGQg KGN0eHQsIE5VTEwsIHVuc2lnbmVkX3R5cGUsICJiIiksCisgIH07CisKKyAgZ2NjX2ppdF9zdHJ1 Y3QgKnN0cnVjdF90eXBlID0gZ2NjX2ppdF9jb250ZXh0X25ld19zdHJ1Y3RfdHlwZSAoCisgICAg ICBjdHh0LCBOVUxMLCAic3RydWN0X29mX2ludGVnZXJzIiwgMiwgZmllbGRzKTsKKworICBnY2Nf aml0X3J2YWx1ZSAqc3RydWN0X2VsZW1lbnRzWzJdID0geworICAgICAgZ2NjX2ppdF9jb250ZXh0 X25ld19ydmFsdWVfZnJvbV9pbnQgKCBjdHh0LCB1bnNpZ25lZF90eXBlLCA0NCksCisgICAgICBn Y2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoIGN0eHQsIHVuc2lnbmVkX3R5cGUs IDQwKSwKKyAgfTsKKworICBnY2Nfaml0X3J2YWx1ZSAqaW50ZWdlcl9maWVsZHMgPSBnY2Nfaml0 X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3N0cnVjdCAoCisgICAgICBjdHh0LCBOVUxMLCBzdHJ1 Y3RfdHlwZSwgMiwgc3RydWN0X2VsZW1lbnRzKTsKKworICBnbG9iID0KKyAgICBnY2Nfaml0X2Nv bnRleHRfbmV3X2dsb2JhbCAoCisgICAgICBjdHh0LCBOVUxMLCBHQ0NfSklUX0dMT0JBTF9FWFBP UlRFRCwKKyAgICAgIGdjY19qaXRfc3RydWN0X2FzX3R5cGUgKHN0cnVjdF90eXBlKSwKKyAgICAg ICJpbnRlZ2VyX3N0cnVjdCIpOworICBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfdmFs dWUgKGdsb2IsIGludGVnZXJfZmllbGRzKTsKIH0KIAogdm9pZApAQCAtNzUsNCArMTM5LDIxIEBA IHZlcmlmeV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpyZXN1 bHQpCiAgIENIRUNLX05PTl9OVUxMIChnbG9iKTsKICAgQ0hFQ0tfVkFMVUUgKG1lbWNtcCAodGVz dF9ibG9iMywgZ2xvYiwgc2l6ZW9mICh0ZXN0X2Jsb2IzKSksIDApOwogCisgIGdsb2IgPSBnY2Nf aml0X3Jlc3VsdF9nZXRfZ2xvYmFsIChyZXN1bHQsICJpbnRlZ2VyIik7CisgIENIRUNLX05PTl9O VUxMIChnbG9iKTsKKyAgaW50ICp2YWx1ZSA9IGdsb2I7CisgIENIRUNLX1ZBTFVFICgqdmFsdWUs IDQyKTsKKworICBnbG9iID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2dsb2JhbCAocmVzdWx0LCAiaW50 ZWdlcnMiKTsKKyAgQ0hFQ0tfTk9OX05VTEwgKGdsb2IpOworICBpbnQgKnZhbHVlcyA9IGdsb2I7 CisgIENIRUNLX1ZBTFVFICh2YWx1ZXNbMF0sIDQyKTsKKyAgQ0hFQ0tfVkFMVUUgKHZhbHVlc1sx XSwgNDMpOworICBDSEVDS19WQUxVRSAodmFsdWVzWzJdLCA0NSk7CisKKyAgZ2xvYiA9IGdjY19q aXRfcmVzdWx0X2dldF9nbG9iYWwgKHJlc3VsdCwgImludGVnZXJfc3RydWN0Iik7CisgIENIRUNL X05PTl9OVUxMIChnbG9iKTsKKyAgc3RydWN0IHN0cnVjdF9vZl9pbnRlZ2VycyAqc3RydWN0X3Zh bHVlcyA9IGdsb2I7CisgIENIRUNLX1ZBTFVFIChzdHJ1Y3RfdmFsdWVzLT5hLCA0NCk7CisgIENI RUNLX1ZBTFVFIChzdHJ1Y3RfdmFsdWVzLT5iLCA0MCk7CiB9Ci0tIAoyLjI2LjIuNy5nMTlkYjlj ZmI2OC5kaXJ0eQoK --=-1DBsgS0gWJPe0N2bD17I--