From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 88F03CCF2DE for ; Mon, 19 Oct 2026 14:01:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jXyiVtE6UK4AHMhBaupjsl0E/r8Z9z2PWS4xrP0x+c4=; b=UMO+crYJdA0Yok +RgUn00iXJPa1Gz/IGcjxfxBnARItLQLM6IZDaubKnlM1dB7oza6dKr0/nBY1L74d+6KSjpb0UA8Y yDqEPh6Bgo9liiDF93rR1j876TYVSxwexr9OB1opYDhDQ4lL6niLwkDEZh1gJrUumCF+1oA4Sr/2Y lJ0XlBYsUNxvbXlNh8JE1N4zSuGasiHoP3SAFH0WkptOOE9IRC/VTQ0ahCQeMjMaZmaLl8jL8m764 mS0/gJ95bWWuvAVJEZposvrmle0tZwXDNcK5X0U80u2DXcAj7qNQIDHPwkKWhpv+Ab47dU352XBkr yDE7vt7l35RYYxhLuS1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xInvX-00000007dLf-05bW; Mon, 19 Oct 2026 14:01:23 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xInvW-00000007dKy-0PDT for linux-riscv@lists.infradead.org; Mon, 19 Oct 2026 14:01:22 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 9111942B70; Mon, 19 Oct 2026 14:01:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E2991F000C7; Mon, 19 Oct 2026 14:01:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792418481; bh=gBlviaq2Bd1jxA4rhzos6vfoZby6wGFF0L4p6Ivg+2I=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=OIEf7OWBonhlFXBGqPTKSHJJN7/2RtkRSruw26RcyUNvIFj8eG1829evIbJ2RETxi eKlRsBclVAEWb31SoglLyvWUxMApgjXpZu8PY9C4l4uLOoyqPDQa0uvfCRYG8dd7Dr qMTe8ksrYEaUGMCEnxuDeOY7ntf5adHgReJESW4oL8/wh8Ser+U6goqYzhItfY4RIW 3KF+eEwGD4NgaWvqGuO26pu7TV0s2j9OTEkJVNWvdmf/0nvyEr/UCqQ91khOK9ia5F b+JxEbFto6KQLkjQ7nPi7jZ0njM88Bg/Kvelmy8E6YT62+qFkq5uvvj8hHR0t5lWTX cBTPNpuhIQ2Jg== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Rui Qi , Nam Cao , Paul Walmsley , Sasha Levin , palmer@dabbelt.com, aou@eecs.berkeley.edu, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18-6.6] riscv: kprobes: Prevent probes in breakpoint handlers Date: Mon, 19 Oct 2026 09:49:30 -0400 Message-ID: <20261019135441.1420968-279-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261019135441.1420968-1-sashal@kernel.org> References: <20261019135441.1420968-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.57 X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogUnVpIFFpIDxxaXJ1aS4wMDFAYnl0ZWRhbmNlLmNvbT4KClsgVXBzdHJlYW0gY29tbWl0 IGU3ZDhlYTZjNmQxYmM2ODVhODk0M2ZmYWQyZDM2NzliZTkyZDE2NGYgXQoKVGhlIGZ0cmFjZSBz ZWxmdGVzdCBtdWx0aXBsZV9rcHJvYmVzLnRjIHJlZ2lzdGVycyBrcHJvYmUgZXZlbnRzIG9uCnRo ZSBmaXJzdCAyNTYgdGV4dCBzeW1ib2xzIGZyb20gL3Byb2Mva2FsbHN5bXMuIElmIGhhbmRsZV9i cmVhaygpIGlzCnNlbGVjdGVkIGFzIGEgcHJvYmUgdGFyZ2V0IG9uIFJJU0MtViwgdGhlIGJyZWFr cG9pbnQgZXhjZXB0aW9uIHBhdGgKY2FuIHRyYXAgYWdhaW4gYmVmb3JlIGl0IHJlYWNoZXMgdGhl IGtwcm9iZSBicmVha3BvaW50IGhhbmRsZXIuIFRoYXQKcmVjdXJzaXZlbHkgZW50ZXJzIGRvX3Ry YXBfYnJlYWsoKSBhbmQgY2FuIG1ha2UgdGhlIHN5c3RlbQp1bnJlc3BvbnNpdmUuCgpNYXJrIGhh bmRsZV9icmVhaygpIGFuZCBpdHMgbG9jYWwgcHJvYmUgZGlzcGF0Y2ggaGVscGVycyBhcyBub2tw cm9iZQpzeW1ib2xzIHNvIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBrcHJvYmUgYmxhY2tsaXN0LCBt YXRjaGluZyBvdGhlcgpsb3ctbGV2ZWwgYnJlYWtwb2ludCBleGNlcHRpb24gcGF0aHMuCgpTaWdu ZWQtb2ZmLWJ5OiBSdWkgUWkgPHFpcnVpLjAwMUBieXRlZGFuY2UuY29tPgpSZXZpZXdlZC1ieTog TmFtIENhbyA8bmFtY2FvQGxpbnV0cm9uaXguZGU+Ckxpbms6IGh0dHBzOi8vcGF0Y2gubXNnaWQu bGluay8yMDI2MDgwNjA0MzgwNy4yNTgzMDAxLTEtcWlydWkuMDAxQGJ5dGVkYW5jZS5jb20KU2ln bmVkLW9mZi1ieTogUGF1bCBXYWxtc2xleSA8cGp3QGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6 IFNhc2hhIExldmluIDxzYXNoYWxAa2VybmVsLm9yZz4KLS0tCgpMTE0gR2VuZXJhdGVkIGV4cGxh bmF0aW9ucywgbWF5IGJlIGNvbXBsZXRlbHkgYm9ndXM6CgpUaGlzIGlzIGEgMy1saW5lIFJJU0Mt ViBrcHJvYmUgYmxhY2tsaXN0IHJlc3RvcmUgdGhhdCBwcmV2ZW50cyByZWN1cnNpdmUKYnJlYWtw b2ludCB0cmFwcyBmcm9tIGhhbmdpbmcgdGhlIG1hY2hpbmUuIFRoZSBsb2NhbCB0cmVlIGlzCioq Ni4xMi4xMTEqKiAoYHBlbmRpbmctNi4xMmApOyB0aGUgYnVnZ3kgYGhhbmRsZV9icmVhaygpYCBw YXRoIGlzCnByZXNlbnQgYW5kIHRoZSBwYXRjaCBhcHBsaWVzIGNsZWFubHkuCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhB U0UgMTogQ09NTUlUIE1FU1NBR0UgRk9SRU5TSUNTCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKipTdGVwIDEuMTogUEFSU0Ug VEhFIFNVQkpFQ1QgTElORSoqClJlY29yZDogW3Jpc2N2OiBrcHJvYmVzXSBbUHJldmVudF0gW1N0 b3Aga3Byb2JlcyBvbiBSSVNDLVYgYnJlYWtwb2ludApleGNlcHRpb24gaGFuZGxlcnMgc28gYSBw cm9iZSBvbiB0aGF0IHBhdGggY2Fubm90IHJlY3Vyc2VdCgoqKlN0ZXAgMS4yOiBQQVJTRSBBTEwg Q09NTUlUIE1FU1NBR0UgVEFHUyoqClJlY29yZDoKLSBTaWduZWQtb2ZmLWJ5OiBSdWkgUWkgXDxx aXJ1aS4wMDFAYnl0ZWRhbmNlLmNvbVw+IChhdXRob3IpCi0gUmV2aWV3ZWQtYnk6IE5hbSBDYW8g XDxuYW1jYW9AbGludXRyb25peC5kZVw+Ci0gTGluazogaHR0cHM6Ly9wYXRjaC5tc2dpZC5saW5r LzIwMjYwODA2MDQzODA3LjI1ODMwMDEtMS0KICBxaXJ1aS4wMDFAYnl0ZWRhbmNlLmNvbQotIFNp Z25lZC1vZmYtYnk6IFBhdWwgV2FsbXNsZXkgXDxwandAa2VybmVsLm9yZ1w+IChSSVNDLVYgbWFp bnRhaW5lcikKLSBObyBGaXhlczogdGFnIChleHBlY3RlZCkKLSBObyBSZXBvcnRlZC1ieSAvIFRl c3RlZC1ieSAvIENjOiBzdGFibGUKLSBObyBzeXpib3QKCioqU3RlcCAxLjM6IEFOQUxZWkUgVEhF IENPTU1JVCBCT0RZIFRFWFQqKgpSZWNvcmQ6Ci0gQnVnOiBgbXVsdGlwbGVfa3Byb2Jlcy50Y2Ag cGxhbnRzIGtwcm9iZXMgb24gdGhlIGZpcnN0IDI1NgogIGAvcHJvYy9rYWxsc3ltc2AgdGV4dCBz eW1ib2xzLiBJZiBgaGFuZGxlX2JyZWFrKClgIGlzIG9uZSBvZiB0aGVtLCB0aGUKICBicmVha3Bv aW50IGV4Y2VwdGlvbiBwYXRoIGhpdHMgYW5vdGhlciBlYnJlYWsgYmVmb3JlCiAgYGtwcm9iZV9i cmVha3BvaW50X2hhbmRsZXIoKWAgcnVucy4KLSBTeW1wdG9tOiByZWN1cnNpdmUgYGRvX3RyYXBf YnJlYWsoKWAg4oaSIHN5c3RlbSB1bnJlc3BvbnNpdmUgKGhhbmcpLgotIFJvb3QgY2F1c2U6IHRo b3NlIEMgaGVscGVycyBhcmUgbm90IG9uIHRoZSBrcHJvYmUgYmxhY2tsaXN0LgotIEZpeDogYE5P S1BST0JFX1NZTUJPTCgpYCBvbiBgaGFuZGxlX2JyZWFrKClgLAogIGBwcm9iZV9icmVha3BvaW50 X2hhbmRsZXIoKWAsIGFuZCBgcHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcigpYC4KLSBWZXJzaW9u IGluZm86IG5vbmUgaW4gdGhlIG1lc3NhZ2UuIFRoZSBoYW5nIGlzIFJJU0MtViArIGtwcm9iZXMs IG5vdCBhCiAgbmV3LWtlcm5lbC1vbmx5IGlzc3VlLgoKKipTdGVwIDEuNDogREVURUNUIEhJRERF TiBCVUcgRklYRVMqKgpSZWNvcmQ6IE5vdCBoaWRkZW4uIFRoZSBzdWJqZWN0IHNheXMg4oCcUHJl dmVudOKAnSBhbmQgdGhlIGJvZHkgZGVzY3JpYmVzIGEKaGFuZy4gVGhpcyBpcyBhbiBleHBsaWNp dCBidWcgZml4LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClBIQVNFIDI6IERJRkYgQU5BTFlTSVMgLSBMSU5FIEJZIExJTkUK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CgoqKlN0ZXAgMi4xOiBJTlZFTlRPUlkgVEhFIENIQU5HRVMqKgpSZWNvcmQ6Ci0gRmls ZTogYGFyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmNgIG9ubHkgKCszIC8g4oiSMCkKLSBGdW5jdGlv bnM6IGBwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyYCwgYHByb2JlX2JyZWFrcG9pbnRfaGFuZGxl cmAsCiAgYGhhbmRsZV9icmVha2AKLSBTY29wZTogc2luZ2xlLWZpbGUgc3VyZ2ljYWwgZml4Cgoq KlN0ZXAgMi4yOiBVTkRFUlNUQU5EIFRIRSBDT0RFIEZMT1cgQ0hBTkdFKioKUmVjb3JkOgotIEJl Zm9yZTogYWxsIHRocmVlIGFyZSBub3JtYWwgYC50ZXh0YCBzeW1ib2xzLiBgaGFuZGxlX2JyZWFr KClgIGlzCiAgZ2xvYmFsLCBzbyBpdCBpcyBhbHdheXMgaW4ga2FsbHN5bXMuIEEga3Byb2JlIG9u IGl0IHBhdGNoZXMgZWJyZWFrIGF0CiAgdGhlIGZ1bmN0aW9uIGVudHJ5LgotIFBhdGg6IGVicmVh ayDihpIgYGRvX3RyYXBfYnJlYWsoKWAgKG5vaW5zdHIpIOKGkiBgaGFuZGxlX2JyZWFrKClgIOKG kiBlYnJlYWsKICBhZ2FpbiDihpIgbmVzdGVkIGBkb190cmFwX2JyZWFrKClgIOKGkiBoYW5nL3N0 YWNrIGJsb3ctdXAuCiAgYGtwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoKWAgaXMgbmV2ZXIgcmVh Y2hlZCBiZWNhdXNlIHRoZSB0cmFwCiAgaGFwcGVucyBhdCB0aGUgc3RhcnQgb2YgYGhhbmRsZV9i cmVhaygpYC4KLSBBZnRlcjogdGhlIHRocmVlIHN5bWJvbHMgZ28gaW4gYF9rcHJvYmVfYmxhY2ts aXN0YC4KICBgcmVnaXN0ZXJfa3Byb2JlKClgIHJlamVjdHMgdGhlbSB2aWEgYHdpdGhpbl9rcHJv YmVfYmxhY2tsaXN0KClgCiAgKGBrZXJuZWwva3Byb2Jlcy5jYCkuCgoqKlN0ZXAgMi4zOiBJREVO VElGWSBUSEUgQlVHIE1FQ0hBTklTTSoqClJlY29yZDogW0xvZ2ljIC8ga3Byb2JlIGJsYWNrbGlz dCBnYXBdIFtCcmVha3BvaW50IGV4Y2VwdGlvbiBoZWxwZXJzCndlcmUgcHJvYmVhYmxlOyBwcm9i aW5nIHRoZW0gcmVjdXJzZXMgaW50byB0aGUgc2FtZSBoYW5kbGVyLl0gQ2F0ZWdvcnkKaXMgY2xv c2VzdCB0byBhIGhhbmcvZGVhZGxvY2stY2xhc3MgZmFpbHVyZSwgbm90IFVBRi4KCioqU3RlcCAy LjQ6IEFTU0VTUyBUSEUgRklYIFFVQUxJVFkqKgpSZWNvcmQ6Ci0gT2J2aW91c2x5IGNvcnJlY3Q6 IGBOT0tQUk9CRV9TWU1CT0woKWAgaXMgdGhlIHN0YW5kYXJkIHdheSB0bwogIGJsYWNrbGlzdC4g eDg2IGRvZXMgdGhlIHNhbWUgd2l0aCBgTk9LUFJPQkVfU1lNQk9MKGRvX2ludDMpYC4gUklTQy1W CiAgYWxyZWFkeSB1c2VzIGBfX2twcm9iZXNgIG9uIGBrcHJvYmVfYnJlYWtwb2ludF9oYW5kbGVy KClgIGl0c2VsZi4KLSBNaW5pbWFsOiB0aHJlZSBhbm5vdGF0aW9uIGxpbmVzLCBubyBjb250cm9s LWZsb3cgY2hhbmdlLgotIFJlZ3Jlc3Npb24gcmlzazogdmVyeSBsb3cuIEJsYWNrbGlzdGluZyBv bmx5IHJlZnVzZXMgcHJvYmVzIG9uIHRob3NlCiAgc3ltYm9sczsgbm9ybWFsIGJyZWFrcG9pbnQv QlVHL2tnZGIgaGFuZGxpbmcgaXMgdW5jaGFuZ2VkLgotIGBsaW51eC9rcHJvYmVzLmhgIGlzIGFs cmVhZHkgaW5jbHVkZWQgaW4gYHRyYXBzLmNgLiBXaXRoCiAgYENPTkZJR19LUFJPQkVTPW5gLCBg Tk9LUFJPQkVfU1lNQk9MYCBpcyBhIG5vLW9wLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBIQVNFIDM6IEdJVCBISVNUT1JZ IElOVkVTVElHQVRJT04KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CgoqKlN0ZXAgMy4xOiBCTEFNRSBUSEUgQ0hBTkdFRCBMSU5F UyoqClJlY29yZDoKLSBgaGFuZGxlX2JyZWFrKClgIGNyZWF0ZWQgYnkgYGYwYmRkZjUwNTg2ZGFg ICjigJxyaXNjdjogZW50cnk6IENvbnZlcnQgdG8KICBnZW5lcmljIGVudHJ54oCdLCBpbiB2Ni40 LXJjMSkuIFRoYXQgY29tbWl0ICoqcmVtb3ZlZCoqCiAgYE5PS1BST0JFX1NZTUJPTChkb190cmFw X2JyZWFrKWAgd2hlbiBzcGxpdHRpbmcgYGRvX3RyYXBfYnJlYWsoKWAgaW50bwogIGEgbm9pbnN0 ciB3cmFwcGVyIHBsdXMgYSBDIGBoYW5kbGVfYnJlYWsoKWAuCi0gV3JhcHBlcnMgYHByb2JlXypf aGFuZGxlcigpYCBhZGRlZCBieSBgOWY1NjRiOTJjZjZkMGAgKOKAnHJpc2N2OiBPbmx5CiAgY29u c2lkZXIgc3dicC9zcyBoYW5kbGVycyBmb3IgY29ycmVjdCBwcml2aWxlZ2VkIG1vZGXigJ0sIGlu IHY2LjYtcmM2KS4KLSBCb3RoIGFyZSBhbmNlc3RvcnMgb2YgdGhpcyA2LjEyIHRyZWUuCgoqKlN0 ZXAgMy4yOiBGT0xMT1cgVEhFIEZJWEVTOiBUQUcqKgpSZWNvcmQ6IE5vIEZpeGVzOiB0YWcuIFRo ZSBkcm9wcGVkIGJsYWNrbGlzdCBpcyBmcm9tIGBmMGJkZGY1MDU4NmRhYC4KRWFybGllciwgYDIz NDlhM2IyNmUyOWJgICjigJxyaXNjdjogYWRkIGRvX3BhZ2VfZmF1bHQgYW5kIGRvX3RyYXBfYnJl YWsKaW50byB0aGUga3Byb2JlcyBibGFja2xpc3TigJ0sIDIwMjEpIGFkZGVkCmBOT0tQUk9CRV9T WU1CT0woZG9fdHJhcF9icmVhaylgIHdpdGggKipDYzogc3RhYmxlKiogYW5kIEZpeGVzOgpgYzIy YjBiY2IxZGQwMmAgKOKAnHJpc2N2OiBBZGQga3Byb2JlcyBzdXBwb3J0ZWTigJ0pLiBUaGlzIHBh dGNoIHJlc3RvcmVzCnRoYXQgcHJvdGVjdGlvbiBhZnRlciB0aGUgZ2VuZXJpYy1lbnRyeSBzcGxp dC4KCioqU3RlcCAzLjM6IENIRUNLIEZJTEUgSElTVE9SWSBGT1IgUkVMQVRFRCBDSEFOR0VTKioK UmVjb3JkOiBSZWNlbnQgYHRyYXBzLmNgIGNodXJuIChpcnEgZW5hYmxlIGluIGV4Y2VwdGlvbiBo YW5kbGluZywKbWlzYWxpZ25lZCB0cmFwcykgZG9lcyBub3QgcmV0YXJnZXQgdGhlc2UgdGhyZWUg ZnVuY3Rpb25zLiBOb3QgcGFydCBvZiBhCm11bHRpLXBhdGNoIHNlcmllcyAoc3RhbmRhbG9uZSB2 MeKGknYyIHN0eWxlLW9ubHkpLiBObyBleHRyYSBwcmVyZXF1aXNpdGUKYmV5b25kIGNvZGUgYWxy ZWFkeSBpbiA2LjEyLgoKKipTdGVwIDMuNDogQ0hFQ0sgVEhFIEFVVEhPUidTIE9USEVSIENPTU1J VFMqKgpSZWNvcmQ6IFJ1aSBRaSBpcyBub3QgdGhlIFJJU0MtViBtYWludGFpbmVyLiBPbmUgb3Ro ZXIgUklTQy1WIGNvbW1pdCBpbgp0aGlzIHRyZWUgKGA4Yjc2MDEzMDM4NDc4YCwgc3RhY2t0cmFj ZSkuIFJldmlld2VyIE5hbSBDYW8gaGFzCnN1YnN0YW50aWFsIFJJU0MtViBrcHJvYmVzIHdvcmsu IE1haW50YWluZXIgUGF1bCBXYWxtc2xleSBxdWV1ZWQgdGhlCnBhdGNoLgoKKipTdGVwIDMuNTog Q0hFQ0sgRk9SIERFUEVOREVOVC9QUkVSRVFVSVNJVEUgQ09NTUlUUyoqClJlY29yZDogTm9uZS4g VXNlcyBleGlzdGluZyBgTk9LUFJPQkVfU1lNQk9MYC4gU3RhbmRhbG9uZS4gYGdpdCBhcHBseQot LWNoZWNrYCBvZiB0aGUgdGhyZWUtbGluZSBodW5rIG9uIHRoaXMgdHJlZSBzdWNjZWVkZWQgKGV4 aXQgMCkuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUEhBU0UgNDogTUFJTElORyBMSVNUIEFORCBFWFRFUk5BTCBSRVNFQVJD SAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KCioqU3RlcCA0LjE6IEZJTkQgVEhFIE9SSUdJTkFMIFBBVENIIERJU0NVU1NJT04q KgpSZWNvcmQ6Ci0gYGI0IGRpZyAtYyA8bXNnaWQ+YCBmYWlsZWQ6IGNvbW1pdCBpcyBub3QgaW4g dGhpcyBjaGVja291dCAoYENhbm5vdAogIGZpbmQgYSBjb21taXQgbWF0Y2hpbmcg4oCmYCkuCi0g bG9yZS5rZXJuZWwub3JnIGZldGNoZXMgcmV0dXJuZWQgSFRUUCA0MDMuCi0gUmVjb3ZlcmVkIGZy b20gTEtNTC9wYXRjaGV3L29wZW53YWxsOgogIC0gdjE6IDIwMjYtMDgtMDQsIG1zZ2lkCiAgICBg MjAyNjA4MDQwNjQzNDMuMTg2NTI4My0xLXFpcnVpLjAwMUBieXRlZGFuY2UuY29tYAogIC0gdjI6 IDIwMjYtMDgtMDYsIG1zZ2lkCiAgICBgMjAyNjA4MDYwNDM4MDcuMjU4MzAwMS0xLXFpcnVpLjAw MUBieXRlZGFuY2UuY29tYCAoYXBwbGllZCB2ZXJzaW9uKQotIHYyIGNoYW5nZWxvZzogZHJvcCBi bGFuayBsaW5lIGJlZm9yZSBgTk9LUFJPQkVfU1lNQk9MKClgOyBhZGQgTmFtIENhbwogIFJldmll d2VkLWJ5LiBObyB0ZWNobmljYWwgcmVkZXNpZ24uCi0gUGF1bCBXYWxtc2xleTog4oCcVGhhbmtz LCBxdWV1ZWQgZm9yIHY3LjMu4oCdIE5vIE5BSy4KCioqU3RlcCA0LjI6IENIRUNLIFdITyBSRVZJ RVdFRCBUSEUgUEFUQ0gqKgpSZWNvcmQ6IHYxIENDIGluY2x1ZGVkIFBhdWwgV2FsbXNsZXksIFBh bG1lciBEYWJiZWx0LCBBbGV4YW5kcmUgR2hpdGksClRob21hcyBHbGVpeG5lciwgTmFtIENhbywg bGludXgtcmlzY3YsIGxpbnV4LWtlcm5lbC4gTmFtIENhbyBSZXZpZXdlZC1ieQpvbiB2Mi4gUklT Qy1WIG1haW50YWluZXIgYXBwbGllZCBpdC4KCioqU3RlcCA0LjM6IFNFQVJDSCBGT1IgVEhFIEJV RyBSRVBPUlQqKgpSZWNvcmQ6IE5vIGJ1Z3ppbGxhL3N5emJvdCBsaW5rLiBDb25jcmV0ZSB0cmln Z2VyIGlzIGluLXRyZWU6CmB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9mdHJhY2UvdGVzdC5kL2tw cm9iZS9tdWx0aXBsZV9rcHJvYmVzLnRjYAooZmlyc3QgMjU2IGthbGxzeW1zIHRleHQgc3ltYm9s cykuIEF1dGhvciBkZXNjcmliZXMgYSBoYW5nOyB0aGF0IG1hdGNoZXMKdGhlIGNvZGUgcGF0aC4K CioqU3RlcCA0LjQ6IENIRUNLIEZPUiBSRUxBVEVEIFBBVENIRVMgQU5EIFNFUklFUyoqClJlY29y ZDogU2luZ2xlIHBhdGNoLCBub3QgMi9OLiBObyBmb2xsb3ctdXAgcmVxdWlyZWQgZnJvbSB0aGUg djIKZGlzY3Vzc2lvbi4KCioqU3RlcCA0LjU6IENIRUNLIFNUQUJMRSBNQUlMSU5HIExJU1QgSElT VE9SWSoqClJlY29yZDogbG9yZS5rZXJuZWwub3JnL3N0YWJsZSBzZWFyY2ggcmV0dXJuZWQgNDAz LiBObyBldmlkZW5jZSB0aGlzIHdhcwpyZWplY3RlZCBmb3Igc3RhYmxlLiBUaGUgMjAyMSBwcmVk ZWNlc3NvciAoYDIzNDlhM2IyNmUyOWJgKSB3YXMKZXhwbGljaXRseSBDYzogc3RhYmxlLgoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClBIQVNFIDU6IENPREUgU0VNQU5USUMgQU5BTFlTSVMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoqKlN0ZXAgNS4xOiBJ REVOVElGWSBLRVkgRlVOQ1RJT05TIElOIFRIRSBESUZGKioKUmVjb3JkOiBgcHJvYmVfc2luZ2xl X3N0ZXBfaGFuZGxlcmAsIGBwcm9iZV9icmVha3BvaW50X2hhbmRsZXJgLApgaGFuZGxlX2JyZWFr YC4gQ2FsbGVycyBvZiBgaGFuZGxlX2JyZWFrKClgIGFyZSBvbmx5IHRoZSB0d28gYnJhbmNoZXMg b2YKYGRvX3RyYXBfYnJlYWsoKWAuCgoqKlN0ZXAgNS4yOiBUUkFDRSBDQUxMRVJTKioKUmVjb3Jk OgotIEV4Y2VwdGlvbiB2ZWN0b3IgaW4gYGFyY2gvcmlzY3Yva2VybmVsL2VudHJ5LlNgIChgUklT Q1ZfUFRSCiAgZG9fdHJhcF9icmVha2ApCi0gYGRvX3RyYXBfYnJlYWsoKWAgKG5vaW5zdHIgLyBg X190cmFwX3NlY3Rpb25gKSBhbHJlYWR5IGJsYWNrbGlzdGVkIHZpYQogIGBfX25vaW5zdHJfdGV4 dF8qYCBpbiBgcG9wdWxhdGVfa3Byb2JlX2JsYWNrbGlzdCgpYAotIGBkb190cmFwX2JyZWFrKClg IOKGkiBgaGFuZGxlX2JyZWFrKClgIChub3Qgbm9pbnN0ciwgbm90IGJsYWNrbGlzdGVkCiAgdG9k YXkpCi0gYGhhbmRsZV9icmVhaygpYCDihpIgcHJvYmUgaGVscGVycyDihpIgYGtwcm9iZV8qX2hh bmRsZXIoKWAgKGBfX2twcm9iZXNgLAogIGFscmVhZHkgYmxhY2tsaXN0ZWQpIG9yIFNJR1RSQVAv QlVHL2tnZGIKCkNvbnRleHQ6IGJyZWFrcG9pbnQgZXhjZXB0aW9uLCBpbmNsdWRpbmcga2VybmVs IGVicmVhayBmcm9tIGtwcm9iZXMuCgoqKlN0ZXAgNS4zOiBUUkFDRSBDQUxMRUVTKioKUmVjb3Jk OiBgdXNlcl9tb2RlKClgLCBgdXByb2JlXypgIC8gYGtwcm9iZV8qYCBoYW5kbGVycywKYGZvcmNl X3NpZ19mYXVsdGAsIGBub3RpZnlfZGllYCwgYHJlcG9ydF9idWdgLCBgaGFuZGxlX2NmaV9mYWls dXJlYCwKYGRpZSgpYC4gTm8gYWxsb2NhdGlvbnMgb3IgbmV3IGxvY2tzIGluIHRoZSBwYXRjaCAo YW5ub3RhdGlvbnMgb25seSkuCgoqKlN0ZXAgNS40OiBGT0xMT1cgVEhFIENBTEwgQ0hBSU4qKgpS ZWNvcmQ6IFJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0cmFjaW5nIHdoZW4gYENPTkZJR19LUFJP QkVTYCBpcyBvbjoKd3JpdGUgdG8gYGtwcm9iZV9ldmVudHNgIG9yIGVxdWl2YWxlbnQgKHR5cGlj YWxseSBDQVBfU1lTX0FETUlOIC8KQ0FQX1BFUkZNT04pLiBBbHNvIHJlYWNoYWJsZSBmcm9tIHRo ZSBmdHJhY2Uga3Byb2JlIHNlbGZ0ZXN0LiBOb3QgYQpkZWZhdWx0LWRlZmNvbmZpZyBwYXRoIChg Q09ORklHX0tQUk9CRVNgIGlzIG9wdGlvbmFsLCBSSVNDLVYgZGVmY29uZmlnCmRvZXMgbm90IHNl dCBpdCksIGJ1dCBkaXN0cm8vZGVidWcga2VybmVscyBlbmFibGUgaXQuCgoqKlN0ZXAgNS41OiBT RUFSQ0ggRk9SIFNJTUlMQVIgUEFUVEVSTlMqKgpSZWNvcmQ6IFNhbWUgcGF0dGVybiBvbiB4ODYg KGBOT0tQUk9CRV9TWU1CT0woZG9faW50MylgKSwgczM5MCwgcG93ZXJwYywKbG9vbmdhcmNoIGtw cm9iZSBoYW5kbGVycy4gUklTQy1WIGBrcHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyYCBhbHJlYWR5 CnVzZXMgYF9fa3Byb2Jlc2AuIFRoZSBtaXNzaW5nIHBpZWNlIGlzIHRoZSBDIHRyYW1wb2xpbmUK YGhhbmRsZV9icmVhaygpYCwgd2hpY2ggaXMgd2hhdCBnZW5lcmljLWVudHJ5IGludHJvZHVjZWQu Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUEhBU0UgNjogQ1JPU1MtUkVGRVJFTkNJTkcgQUdBSU5TVCBUSEUgTE9DQUwgVFJF RQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KCioqU3RlcCA2LjE6IERPRVMgVEhFIEJVR0dZIENPREUgRVhJU1QgSU4gVEhJUyBU UkVFPyoqClJlY29yZDogWWVzLiBgYXJjaC9yaXNjdi9rZXJuZWwvdHJhcHMuY2AgbGluZXMgMjY5 4oCTMzA1IGRlZmluZSB0aGUgdGhyZWUKZnVuY3Rpb25zIHdpdGggbm8gYE5PS1BST0JFX1NZTUJP TGAuIGBIQVZFX0tQUk9CRVNgIGlzIHNlbGVjdGVkIGZvcgpSSVNDLVYgd2hlbiBgIVhJUF9LRVJO RUxgLiBCdWcgaW50cm9kdWNlZCB3aGVuCmBOT0tQUk9CRV9TWU1CT0woZG9fdHJhcF9icmVhaylg IHdhcyBkcm9wcGVkIGluIHY2LjQgKGBmMGJkZGY1MDU4NmRhYCk7CndyYXBwZXJzIHByZXNlbnQg c2luY2UgdjYuNi4gUHJlc2VudCB0aHJvdWdob3V0IDYuMTIueS4KCioqU3RlcCA2LjI6IENIRUNL IEZPUiBCQUNLUE9SVCBDT01QTElDQVRJT05TKioKUmVjb3JkOiBDbGVhbiBhcHBseS4gTG9jYWwg YGRvX3RyYXBfYnJlYWsoKWAgaGFzIGV4dHJhCmBsb2NhbF9pcnFfZW5hYmxlL2Rpc2FibGVgIGZy b20gYDMyYjE0ZTc1NzQwNGNgLCBiZWxvdyB0aGUgaW5zZXJ0aW9uCnBvaW50cywgc28gaXQgZG9l cyBub3QgY29uZmxpY3QuIGBnaXQgYXBwbHkgLS1jaGVja2Agc3VjY2VlZGVkLgoKKipTdGVwIDYu MzogQ0hFQ0sgSUYgUkVMQVRFRCBGSVhFUyBBUkUgQUxSRUFEWSBIRVJFKioKUmVjb3JkOiBObyBg Tk9LUFJPQkVfU1lNQk9MYCBpbiBgdHJhcHMuY2Agbm93LiBgZG9fdHJhcF9icmVha2AgaXMgc3Rp bGwKbm9pbnN0ci1ibGFja2xpc3RlZCwgd2hpY2ggaXMgbm90IGVub3VnaCBiZWNhdXNlIGl0IGNh bGxzIG91dCB0bwpgaGFuZGxlX2JyZWFrKClgLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBIQVNFIDc6IFNVQlNZU1RFTSBB TkQgTUFJTlRBSU5FUiBDT05URVhUCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKipTdGVwIDcuMTogSURFTlRJRlkgVEhFIFNV QlNZU1RFTSBBTkQgSVRTIENSSVRJQ0FMSVRZKioKUmVjb3JkOiBbYXJjaC9yaXNjdiBrcHJvYmVz L3RyYXBzXSBbSU1QT1JUQU5UIGZvciBSSVNDLVYgdHJhY2luZzsKUEVSSVBIRVJBTCByZWxhdGl2 ZSB0byBhbGwgYXJjaGl0ZWN0dXJlc10uIE5vdCBjb3JlIG1tL3NjaGVkdWxlciwgYnV0IGEKaGFu ZyBpbiB0aGUgYXJjaCBicmVha3BvaW50IHBhdGguCgoqKlN0ZXAgNy4yOiBBU1NFU1MgU1VCU1lT VEVNIEFDVElWSVRZKioKUmVjb3JkOiBSSVNDLVYgdHJhcHMva3Byb2JlcyBhcmUgbWF0dXJlIGlu IDYuMTIgKGtwcm9iZXMgc2luY2UgNS4xMykuClRoaXMgaXMgYSBsb25nLXN0YW5kaW5nIGhvbGUs IG5vdCBhIGJyYW5kLW5ldyBmZWF0dXJlIGJ1Zy4KCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQSEFTRSA4OiBJTVBBQ1QgQU5E IFJJU0sgQVNTRVNTTUVOVAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCA4LjE6IERFVEVSTUlORSBXSE8gSVMgQUZG RUNURUQqKgpSZWNvcmQ6IFJJU0MtViBrZXJuZWxzIHdpdGggYENPTkZJR19LUFJPQkVTYCAoYW5k IG5vdCBYSVApLiBUcmFjaW5nCnVzZXJzLCBmdHJhY2Uga3Byb2JlIHNlbGZ0ZXN0cywgZGlzdHJv IGtlcm5lbHMgdGhhdCBlbmFibGUga3Byb2Jlcy4gTm90CmV2ZXJ5IDYuMTIgdXNlci4KCioqU3Rl cCA4LjI6IERFVEVSTUlORSBUSEUgVFJJR0dFUiBDT05ESVRJT05TKioKUmVjb3JkOiBQbGFudCBh IGtwcm9iZSBvbiBgaGFuZGxlX2JyZWFrYCAob3IgdGhlIHN0YXRpYyBoZWxwZXJzIGlmIHRoZXkK aGF2ZSBrYWxsc3ltcyBlbnRyaWVzKSwgdGhlbiBhbnkga2VybmVsL3VzZXIgYnJlYWtwb2ludCB0 aGF0IGVudGVycwpgaGFuZGxlX2JyZWFrKClgLiBUaGUgc2VsZnRlc3QgY2FuIGRvIHRoYXQgaWYg YGhhbmRsZV9icmVha2AgaXMgYW1vbmcKdGhlIGZpcnN0IDI1NiB0ZXh0IHN5bWJvbHMgKGFkZHJl c3Mtb3JkZXIsIHNvIHBsYXRmb3JtLWRlcGVuZGVudCkuCkV4cGxpY2l0IGBwZXJmIHByb2JlYCAv IGBrcHJvYmVfZXZlbnRzYCBvbiB0aGF0IHN5bWJvbCBpcyBhIHJlbGlhYmxlCnRyaWdnZXIuIE5l ZWRzIHRyYWNpbmcgcHJpdmlsZWdlLCBub3QgYW4gdW5wcml2aWxlZ2VkIGxvY2FsIERvUyBvbgp0 eXBpY2FsIGNvbmZpZ3MuCgoqKlN0ZXAgOC4zOiBERVRFUk1JTkUgVEhFIEZBSUxVUkUgTU9ERSBT RVZFUklUWSoqClJlY29yZDogW1JlY3Vyc2l2ZSBicmVha3BvaW50IGV4Y2VwdGlvbiDihpIgaGFu ZyAvIHVucmVzcG9uc2l2ZSBzeXN0ZW1dCltDUklUSUNBTCBmb3IgdGhvc2Ugd2hvIGhpdCBpdF0u IE5vdCBkYXRhIGNvcnJ1cHRpb24uIE5vdCBhbgp1bnByaXZpbGVnZWQgc2VjdXJpdHkgYnVnIG9u IHR5cGljYWwga3Byb2JlIHBvbGljeS4KCioqU3RlcCA4LjQ6IENBTENVTEFURSBSSVNLLUJFTkVG SVQgUkFUSU8qKgpSZWNvcmQ6Ci0gQmVuZWZpdDogSElHSCBmb3IgUklTQy1WIGtwcm9iZSB1c2Vy cyAocHJldmVudHMgaGFuZzsgcmVzdG9yZXMKICBibGFja2xpc3QgdGhhdCBzdGFibGUgYWxyZWFk eSBzaGlwcGVkIG9uY2UpLgotIFJpc2s6IFZFUlkgTE9XICgzIGFubm90YXRpb24gbGluZXMsIG5v IHJ1bnRpbWUgbG9naWMgY2hhbmdlKS4KLSBSYXRpbzogc3Ryb25nbHkgZmF2b3JzIGJhY2twb3J0 LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClBIQVNFIDk6IEZJTkFMIFNZTlRIRVNJUwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCioqU3RlcCA5LjE6IENP TVBJTEUgVEhFIEVWSURFTkNFKioKCkZPUjoKLSBSZWFsIGhhbmc6IHJlY3Vyc2l2ZSBlYnJlYWsg aW4gdGhlIGJyZWFrcG9pbnQgcGF0aC4KLSBJbi10cmVlIHNlbGZ0ZXN0IGlzIGEgcGxhdXNpYmxl IHRyaWdnZXI7IGFueSBwcm9iZSBvbiBgaGFuZGxlX2JyZWFrYAogIGlzIGEgaGFyZCB0cmlnZ2Vy LgotIFJlc3RvcmVzIHByb3RlY3Rpb24gdGhhdCBgMjM0OWEzYjI2ZTI5YmAgcHV0IG9uIGBkb190 cmFwX2JyZWFrYCAoQ2M6CiAgc3RhYmxlKSBhbmQgdGhhdCBgZjBiZGRmNTA1ODZkYWAgZHJvcHBl ZC4KLSBNYXRjaGVzIG90aGVyIGFyY2hpdGVjdHVyZXPigJkgbm9rcHJvYmUgb24gbG93LWxldmVs IEJQIGhhbmRsZXJzLgotIDMgbGluZXMsIG9idmlvdXNseSBjb3JyZWN0LCByZXZpZXdlZCBieSBO YW0gQ2FvLCBxdWV1ZWQgYnkgUGF1bAogIFdhbG1zbGV5LgotIEJ1Z2d5IGNvZGUgaXMgaW4gdGhp cyA2LjEyIHRyZWU7IHBhdGNoIGFwcGxpZXMgY2xlYW5seS4KCkFHQUlOU1Q6Ci0gTm90IG9uIGJ5 IGRlZmF1bHQgaW4gUklTQy1WIGRlZmNvbmZpZyAoYENPTkZJR19LUFJPQkVTYCBvcHRpb25hbCku Ci0gTmVlZHMgcHJpdmlsZWdlZCB0cmFjaW5nIHRvIHRyaWdnZXIuCi0gTm8gRml4ZXM6L0NjOiBz dGFibGUgb24gdGhpcyBjb21taXQgKG5vdCBhIG5lZ2F0aXZlIHBlciB0aGUgcmV2aWV3CiAgcnVs ZXMpLgotIEFyY2gtc3BlY2lmaWMsIHNvIG9ubHkgUklTQy1WIDYuMTIgdXNlcnMgYmVuZWZpdC4K ClVOUkVTT0xWRUQ6Ci0gRXhhY3QgTmFtIENhbyByZXZpZXcgZW1haWwgYm9keSAobG9yZSA0MDMp LiB2MiBvbmx5IGNoYW5nZWQgd2hpdGVzcGFjZQogIGFuZCBhZGRlZCBSZXZpZXdlZC1ieS4KLSBX aGV0aGVyIGBoYW5kbGVfYnJlYWtgIGlzIGluIHRoZSBmaXJzdCAyNTYga2FsbHN5bXMgb24gYSB0 eXBpY2FsIDYuMTIKICBSSVNDLVYgdm1saW51eCAodW52ZXJpZmllZDsgaGFuZyBpZiBwcm9iZWQg aXMgdmVyaWZpZWQgZnJvbSBjb2RlCiAgcmVnYXJkbGVzcykuCi0gYGI0IGRpZ2AgY291bGQgbm90 IHJ1biBhZ2FpbnN0IGEgU0hBIG5vdCBpbiB0aGlzIGNoZWNrb3V0LgoKKipTdGVwIDkuMjogQVBQ TFkgVEhFIFNUQUJMRSBSVUxFUyBDSEVDS0xJU1QqKgoxLiBPYnZpb3VzbHkgY29ycmVjdCBhbmQg dGVzdGVkPyAqKlBBU1MqKiDigJQgc3RhbmRhcmQgYE5PS1BST0JFX1NZTUJPTGA7CiAgIG1haW50 YWluZXIgcXVldWVkOyByZXZpZXdlciBBY2suCjIuIEZpeGVzIGEgcmVhbCBidWcgdGhhdCBhZmZl Y3RzIHVzZXJzPyAqKlBBU1MqKiDigJQgaGFuZyB3aGVuIGtwcm9iZXMKICAgbGFuZHMgb24gYGhh bmRsZV9icmVha2AuCjMuIEltcG9ydGFudCBpc3N1ZSAoY3Jhc2gsIHNlY3VyaXR5LCBjb3JydXB0 aW9uLCBkZWFkbG9jayk/ICoqUEFTUyoqIOKAlAogICBzeXN0ZW0gaGFuZyAvIHVucmVzcG9uc2l2 ZS4KNC4gU21hbGwgYW5kIGNvbnRhaW5lZD8gKipQQVNTKiog4oCUICszIGxpbmVzLCBvbmUgZmls ZS4KNS4gTm8gbmV3IGZlYXR1cmVzIG9yIEFQSXM/ICoqUEFTUyoqCjYuIENhbiBhcHBseSB0byB0 aGUgbG9jYWwgdHJlZT8gKipQQVNTKiog4oCUIGBnaXQgYXBwbHkgLS1jaGVja2AgY2xlYW4gb24K ICAgNi4xMi4xMTEuCgoqKlN0ZXAgOS4zOiBDSEVDSyBGT1IgRVhDRVBUSU9OIENBVEVHT1JJRVMq KgpSZWNvcmQ6IE5vdCBhIGRldmljZS1JRC9xdWlyay9EVC9idWlsZC9kb2NzIGV4Y2VwdGlvbi4g SXQgaXMgYSBub3JtYWwKaGFuZyBmaXguCgoqKlN0ZXAgOS40OiBNQUtFIFlPVVIgREVDSVNJT04q KgpUaGlzIGJlbG9uZ3Mgb24gNi4xMi55LiBJdCByZXN0b3JlcyBhIGtwcm9iZSBibGFja2xpc3Qg dGhhdCB0aGlzIHRyZWUKbG9zdCBpbiB0aGUgZ2VuZXJpYy1lbnRyeSBzcGxpdCwgd2l0aCBlc3Nl bnRpYWxseSBubyBiZWhhdmlvcmFsIGNoYW5nZQpleGNlcHQgcmVmdXNpbmcgcHJvYmVzIHRoYXQg Y2FuIHdlZGdlIHRoZSBtYWNoaW5lLgoKRGV0YWlsZWQgZXhwbGFuYXRpb246ClRoZSBwcm9ibGVt IGlzIHRoYXQgUklTQy1WIGtwcm9iZXMgaW1wbGVtZW50IHNvZnR3YXJlIGJyZWFrcG9pbnRzIHdp dGgKZWJyZWFrLiBgZG9fdHJhcF9icmVhaygpYCBpcyBub2luc3RyIChhbHJlYWR5IGJsYWNrbGlz dGVkKSwgYnV0IGl0CmltbWVkaWF0ZWx5IGNhbGxzIGBoYW5kbGVfYnJlYWsoKWAsIHdoaWNoIGlz IG9yZGluYXJ5IEMgdGV4dC4gSWYgYQprcHJvYmUgaXMgaW5zdGFsbGVkIG9uIGBoYW5kbGVfYnJl YWsoKWAsIHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBpcwplYnJlYWssIHNvIHRoZSBleGNlcHRpb24g cGF0aCB0cmFwcyBhZ2FpbiBiZWZvcmUKYGtwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoKWAgY2Fu IHJ1bi4gVGhhdCByZWN1cnNlcyB1bnRpbCB0aGUgc3lzdGVtCnN0b3BzIHJlc3BvbmRpbmcuIE1h cmtpbmcgdGhlIHRocmVlIHN5bWJvbHMgYE5PS1BST0JFX1NZTUJPTGAgcHV0cyB0aGVtCm9uIHRo ZSBzYW1lIGJsYWNrbGlzdCBgcmVnaXN0ZXJfa3Byb2JlKClgIGFscmVhZHkgY29uc3VsdHMuIFN0 YWJsZSB1c2Vycwp3aG8gZW5hYmxlIGtwcm9iZXMgKHRyYWNpbmcsIHNlbGZ0ZXN0cywgZGlzdHJv IGRlYnVnIGtlcm5lbHMpIGFyZSB0aGUKb25lcyB3aG8gaGl0IHRoaXM7IHRoZSBjb3N0IG9mIHRo ZSBiYWNrcG9ydCBpcyB0aHJlZSBhbm5vdGF0aW9ucy4KClZlcmlmaWNhdGlvbjoKLSBbUGhhc2Ug MV0gUGFyc2VkIHRhZ3M6IFJldmlld2VkLWJ5IE5hbSBDYW87IExpbmsgbXNnaWQKICAyMDI2MDgw NjA0MzgwNy4yNTgzMDAxLTE7IFBhdWwgV2FsbXNsZXkgU09COyBubyBGaXhlcy9zeXpib3QKLSBb UGhhc2UgMl0gRGlmZjogKzMgYE5PS1BST0JFX1NZTUJPTGAgbGluZXMgaW4KICBgYXJjaC9yaXNj di9rZXJuZWwvdHJhcHMuY2A7IG5vIGNvbnRyb2wtZmxvdyBjaGFuZ2UKLSBbUGhhc2UgMl0gQ29u ZmlybWVkIGB0cmFwcy5jYCBhbHJlYWR5IGAjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPmAKLSBb UGhhc2UgMl0gQ29uZmlybWVkIGByZWdpc3Rlcl9rcHJvYmUoKWAgcmVqZWN0cwogIGB3aXRoaW5f a3Byb2JlX2JsYWNrbGlzdCgpYCBhZGRyZXNzZXMgKGBrZXJuZWwva3Byb2Jlcy5jYCB+MTU5MykK LSBbUGhhc2UgMl0gQ29uZmlybWVkIGBOT0tQUk9CRV9TWU1CT0xgIHdyaXRlcyBgX2twcm9iZV9i bGFja2xpc3RgCiAgKGBpbmNsdWRlL2FzbS1nZW5lcmljL2twcm9iZXMuaGApCi0gW1BoYXNlIDNd IGBnaXQgZGVzY3JpYmUgSEVBRGAgLyBgbWFrZSBrZXJuZWx2ZXJzaW9uYDoKICBwLTYuMTItMy1n YzUwNGNmMGJhYTNkOCwgNi4xMi4xMTEKLSBbUGhhc2UgM10gYmxhbWU6IGBoYW5kbGVfYnJlYWtg IGZyb20gYGYwYmRkZjUwNTg2ZGFgICh2Ni40LXJjMSk7CiAgd3JhcHBlcnMgZnJvbSBgOWY1NjRi OTJjZjZkMGAgKHY2LjYtcmM2KQotIFtQaGFzZSAzXSBgZ2l0IHNob3cgZjBiZGRmNTA1ODZkYWA6 IHJlbW92ZWQKICBgTk9LUFJPQkVfU1lNQk9MKGRvX3RyYXBfYnJlYWspYCB3aGlsZSBzcGxpdHRp bmcgdGhlIGZ1bmN0aW9uCi0gW1BoYXNlIDNdIGAyMzQ5YTNiMjZlMjliYCBvcmlnaW5hbGx5IGJs YWNrbGlzdGVkIGBkb190cmFwX2JyZWFrYCB3aXRoCiAgQ2M6IHN0YWJsZQotIFtQaGFzZSAzXSBg Z2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvcmAgYm90aCBpbnRyb2R1Y2luZyBjb21taXRzIGFy ZQogIGluIEhFQUQKLSBbUGhhc2UgNF0gYjQgZGlnOiBubyBtYXRjaGluZyBjb21taXQgaW4gdGhp cyB0cmVlIChVTlZFUklGSUVEIHZpYSBiNCkKLSBbUGhhc2UgNF0gdjEvdjIgcmVjb3ZlcmVkIGZy b20gbGttbC5pdS5lZHUgLyBvcGVud2FsbCAvIHBhdGNoZXc7IHYyIGlzCiAgc3R5bGUtb25seSAr IFJldmlld2VkLWJ5Ci0gW1BoYXNlIDRdIFBhdWwgV2FsbXNsZXk6IHF1ZXVlZCBmb3IgdjcuMyAo cGF0Y2hldykKLSBbUGhhc2UgNF0gbG9yZS5rZXJuZWwub3JnIGFuZCBzdGFibGVAIHNlYXJjaDog SFRUUCA0MDMgKFVOVkVSSUZJRUQgdmlhCiAgbG9yZSkKLSBbUGhhc2UgNF0gTmFtIENhbyByZXZp ZXcgYm9keTogVU5WRVJJRklFRCAob3BlbndhbGwgbXNnIGlkIGNvbGxpc2lvbik7CiAgUmV2aWV3 ZWQtYnkgb24gdjIgaXMgdmVyaWZpZWQKLSBbUGhhc2UgNV0gQ2FsbGVyczogYGVudHJ5LlNgIOKG kiBgZG9fdHJhcF9icmVha2Ag4oaSIGBoYW5kbGVfYnJlYWtgOwogIGBkb190cmFwX2JyZWFrYCBp cyBgX190cmFwX3NlY3Rpb25gL2Bub2luc3RyYAotIFtQaGFzZSA1XSBga3Byb2JlX2JyZWFrcG9p bnRfaGFuZGxlcmAgYWxyZWFkeSBgX19rcHJvYmVzYCBpbgogIGBhcmNoL3Jpc2N2L2tlcm5lbC9w cm9iZXMva3Byb2Jlcy5jYAotIFtQaGFzZSA1XSBTZWxmdGVzdCBgbXVsdGlwbGVfa3Byb2Jlcy50 Y2AgY29uZmlybWVkIHRvIHRha2UgZmlyc3QgMjU2CiAga2FsbHN5bXMgdGV4dCBzeW1ib2xzCi0g W1BoYXNlIDVdIHg4NiBjb21wYXJpc29uOiBgTk9LUFJPQkVfU1lNQk9MKGRvX2ludDMpYCBpbgog IGBhcmNoL3g4Ni9rZXJuZWwvdHJhcHMuYzo4MjZgCi0gW1BoYXNlIDZdIEN1cnJlbnQgYHRyYXBz LmNgIGhhcyBubyBgTk9LUFJPQkVfU1lNQk9MYDsgYnVnZ3kgaGVscGVycwogIHByZXNlbnQgYXQg bGluZXMgMjY54oCTMzA1Ci0gW1BoYXNlIDZdIGBnaXQgYXBwbHkgLS1jaGVja2Agb2YgdGhlIHRo cmVlLWxpbmUgaHVuazogZXhpdCAwCi0gW1BoYXNlIDddIGBhcmNoL3Jpc2N2L0tjb25maWdgOiBg c2VsZWN0IEhBVkVfS1BST0JFUyBpZiAhWElQX0tFUk5FTGAKLSBbUGhhc2UgOF0gUklTQy1WIGRl ZmNvbmZpZyBkb2VzIG5vdCBzZXQgYENPTkZJR19LUFJPQkVTYCAodHJpZ2dlciBpcwogIGNvbmZp Zy1zcGVjaWZpYykKLSBVTlZFUklGSUVEOiB3aGV0aGVyIGBoYW5kbGVfYnJlYWtgIGlzIGluIHRo ZSBmaXJzdCAyNTYga2FsbHN5bXMgb24gYQogIHR5cGljYWwgNi4xMiBSSVNDLVYgYnVpbGQgKGRv ZXMgbm90IGNoYW5nZSB0aGUgaGFuZyBpZiB0aGF0IHN5bWJvbCBpcwogIHByb2JlZCkKCioqWUVT KioKCiBhcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jIHwgMyArKysKIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jIGIv YXJjaC9yaXNjdi9rZXJuZWwvdHJhcHMuYwppbmRleCA0N2FmZWE0ZmYxYThkLi5lN2U0NWNiYjA4 OTk5IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvcmlz Y3Yva2VybmVsL3RyYXBzLmMKQEAgLTI3Miw2ICsyNzIsNyBAQCBzdGF0aWMgYm9vbCBwcm9iZV9z aW5nbGVfc3RlcF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCiAJcmV0dXJuIHVzZXIg PyB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihyZWdzKSA6IGtwcm9iZV9zaW5nbGVfc3RlcF9o YW5kbGVyKHJlZ3MpOwogfQorTk9LUFJPQkVfU1lNQk9MKHByb2JlX3NpbmdsZV9zdGVwX2hhbmRs ZXIpOwogCiBzdGF0aWMgYm9vbCBwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MpCiB7CkBAIC0yNzksNiArMjgwLDcgQEAgc3RhdGljIGJvb2wgcHJvYmVfYnJlYWtw b2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCiAJcmV0dXJuIHVzZXIgPyB1cHJv YmVfYnJlYWtwb2ludF9oYW5kbGVyKHJlZ3MpIDoga3Byb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihy ZWdzKTsKIH0KK05PS1BST0JFX1NZTUJPTChwcm9iZV9icmVha3BvaW50X2hhbmRsZXIpOwogCiB2 b2lkIGhhbmRsZV9icmVhayhzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKQEAgLTMwMyw2ICszMDUs NyBAQCB2b2lkIGhhbmRsZV9icmVhayhzdHJ1Y3QgcHRfcmVncyAqcmVncykKIAllbHNlCiAJCWRp ZShyZWdzLCAiS2VybmVsIEJVRyIpOwogfQorTk9LUFJPQkVfU1lNQk9MKGhhbmRsZV9icmVhayk7 CiAKIGFzbWxpbmthZ2UgX192aXNpYmxlIF9fdHJhcF9zZWN0aW9uIHZvaWQgZG9fdHJhcF9icmVh ayhzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLS0gCjIuNTMuMAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAps aW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK