From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.mindbit.ro (xs1.mindbit.ro [80.86.107.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DAC292D97B9 for ; Sat, 25 Jul 2026 16:29:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=80.86.107.70 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784996965; cv=none; b=cMYf0VnzRZ3jVIRN+6BfRGQfbitCRHF4+Q5xUb/LWAEUSaMJFYBLA0Gh13z2IauCU4p0F0RRdfLbDIvcy/bJEKFEyYwOJNxpWC+CBDLeEgQk6tejYVymRhMPRRrmn2wvNkXzhwiLcs7E4QKIdIYwiWDykYL3893FMyurRvg3Oeo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784996965; c=relaxed/simple; bh=kRrAbcks0rnrX6sXO4wXQrXSObH327Citv6v77kFmRI=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=pwItA8SaXuvilZb6YVCgHTOTwEC0ZEAClNXH9xUkPT+Ug8VVIG5YI5axjYDEO1bnPmm7KU8bMrxuPpDnS1qmfsB3bTQVnuuk078+vmsISxjOZz0TVlW7ozjt6p6f7ee7tQt20zRX5iJtsK/3mrzXPkoH0dREFfSaALLi/6jKgPk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=rendec.net; spf=pass smtp.mailfrom=rendec.net; dkim=pass (2048-bit key) header.d=rendec.net header.i=@rendec.net header.b=hRgySj2L; arc=none smtp.client-ip=80.86.107.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=rendec.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rendec.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rendec.net header.i=@rendec.net header.b="hRgySj2L" Received: from dog.kanata.rendec.net (pool-174-112-193-187.cpe.net.cable.rogers.com [174.112.193.187]) by mail.mindbit.ro (Postfix) with ESMTPSA id B8A16C289F; Sat, 25 Jul 2026 19:29:19 +0300 (EEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.mindbit.ro B8A16C289F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rendec.net; s=default; t=1784996961; bh=kRrAbcks0rnrX6sXO4wXQrXSObH327Citv6v77kFmRI=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=hRgySj2L1OHufCOSrFgL+tL/wF99GY1UPNXgXDrYFEA72Ghd7RU3CKDlvCod0BLL0 3hiOE5yOl3pCOCxzk1JPbmkXwx754o6VlrDIn/0nxN+DZfs5pdX1BkJu+YisQ4jbb0 7hQSrW9DzC/1K61MXUdCXTq239VIkEJmYpo2nyf+LP25fN7Gc+2hinBrfFo3+Ggzzp Oi93MqpwUhh0gxqecSXzHwkycPovCGElknIvx10JtHCLsqII1RmhTmEQvZL+FQ9axd Fj5ItDehyvWwspkZOyUe/Su6uzFv27qQY4kZCKIzUgEJi7HdjpXzWRS5WxLYt4GzWK t7KYtB8c3C81A== Message-ID: <53a1f3a1354ed65fbeacb2fe1f6fc151815f7718.camel@rendec.net> Subject: Re: [PATCH 00/16] irqchip: harden initialization error paths From: Radu Rendec To: Haofeng Li Cc: tglx@kernel.org, linux-kernel@vger.kernel.org, Haofeng Li <13266079573@163.com>, Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Samuel Holland , linux-riscv@lists.infradead.org Date: Sat, 25 Jul 2026 12:29:18 -0400 In-Reply-To: <20260714122351.3274006-1-lihaofeng@kylinos.cn> References: <20260714122351.3274006-1-lihaofeng@kylinos.cn> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.58.3 (3.58.3-1.fc43) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Tue, 2026-07-14 at 20:23 +0800, Haofeng Li wrote: > An audit of irqchip initialization and allocation error paths found a > collection of resource leaks and lifetime issues across several drivers. >=20 > The most serious cases leave interrupt handlers or other globally visible > state pointing at memory that is subsequently freed or unmapped.=C2=A0 Ot= her > cases leak IRQ domains, parent mappings, MMIO mappings, allocation bitmap > regions, or allocated objects when initialization fails part-way through. > The series also fixes an unbounded IMSIC MMIO lookup, a possible NULL MMI= O > access in the NVIDIA T241 workaround, and two cases where useful error > information is lost or reported incorrectly. >=20 > The changes are confined to failure handling; successful initialization > paths are left unchanged.=C2=A0 The MIPS GIC fixes in patches 7 and 8 bui= ld on > each other, as do the Realtek RTL fixes in patches 12 and 13.=C2=A0 The r= emaining > patches are independent. >=20 > The issues addressed are: >=20 > =C2=A0 - bound MMIO lookup and make allocation cleanup NULL-safe; > =C2=A0 - roll back partially allocated IRQs, domains and bitmap regions; > =C2=A0 - do not free or unmap state after it has been published to live u= sers; > =C2=A0 - distinguish managed from unmanaged MMIO mappings during cleanup; > =C2=A0 - release parent IRQ mappings, per-CPU mappings and OF node refere= nces; > =C2=A0 - preserve deferred-probe errors and report the correct reset erro= r. >=20 > Haofeng Li (16): > =C2=A0 irqchip/riscv-imsic: fix MMIO lookup OOB and NULL cleanup > =C2=A0 irqchip/loongarch-ir: fix redirect free and alloc leaks > =C2=A0 irqchip/sifive-plic: do not iounmap devm mappings > =C2=A0 irqchip/crossbar: fix allocation and init cleanup > =C2=A0 irqchip/bcm7038-l1: clean up init failure paths > =C2=A0 irqchip/loongson-liointc: unmap per-core iomaps on error > =C2=A0 irqchip/mips-gic: clean up IRQ domain creation failure > =C2=A0 irqchip/mips-gic: clean up if IPI domain registration fails > =C2=A0 irqchip/econet: clean up VEIC initialization > =C2=A0 irqchip/aspeed-vic: publish handler only after domain creation > =C2=A0 irqchip/loongson-eiointc: preserve live state on cascade failure > =C2=A0 irqchip/realtek-rtl: unmap per-CPU bases on init failure > =C2=A0 irqchip/realtek-rtl: dispose parent mapping on domain failure > =C2=A0 irqchip/renesas-rzg2l: fix wrong errno in reset error log > =C2=A0 irqchip/gic-v3: fail T241 quirk if alias ioremap fails > =C2=A0 irqchip/bcm7120-l2: fix parent IRQ count error handling Patches 3-16 in your series use a different email address than this cover letter and patches 1-2. This is not a showstopper but makes it harder to process your series using tools like b4. Please use a consistent email address in the future, particularly if you post another version of this series for any reason. Thanks! > =C2=A0drivers/irqchip/irq-aspeed-vic.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 | 23 ++++++++++++++---- > =C2=A0drivers/irqchip/irq-bcm7038-l1.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 | 24 +++++++++++++++---- > =C2=A0drivers/irqchip/irq-bcm7120-l2.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 |=C2=A0 8 +++++-- > =C2=A0drivers/irqchip/irq-crossbar.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 | 23 ++++++++++++++++-- > =C2=A0drivers/irqchip/irq-econet-en751221.c=C2=A0=C2=A0 |=C2=A0 5 +++- > =C2=A0drivers/irqchip/irq-gic-v3.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 | 11 ++++++++- > =C2=A0drivers/irqchip/irq-loongarch-ir.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | = 21 +++++++++++++++-- > =C2=A0drivers/irqchip/irq-loongson-eiointc.c=C2=A0 | 13 ++++++----- > =C2=A0drivers/irqchip/irq-loongson-liointc.c=C2=A0 |=C2=A0 8 +++++++ > =C2=A0drivers/irqchip/irq-mips-gic.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 | 31 +++++++++++++++---------- > =C2=A0drivers/irqchip/irq-realtek-rtl.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 | 28 ++++++++++++++++++---- > =C2=A0drivers/irqchip/irq-renesas-rzg2l.c=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0= 2 +- > =C2=A0drivers/irqchip/irq-riscv-imsic-state.c | 12 ++++++---- > =C2=A0drivers/irqchip/irq-sifive-plic.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 |=C2=A0 4 +++- > =C2=A014 files changed, 168 insertions(+), 45 deletions(-) >=20 >=20 > base-commit: a13c140cc289c0b7b3770bce5b3ad42ab35074aa 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 0C17AC531D0 for ; Sat, 25 Jul 2026 16:29:37 +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: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=u8ZMs9s1/DQqCsS1bNQrlOLHLxZwCxBJgysluiuEgGQ=; b=a6vd87oHXiH8VE zUrQ7wYJkQb1GO6q6na6qAK9SfxNJ6fjC8j9WyLnL2ly5PHAOqfcp3CZsq+V+V7jjf4zlkXKlMG9N vE++y9YZeZURQuG4cWBMULN9WASZo4qnQBkVCW+6BKjIS15LYdt9Gd4nnrLrwXARZhjkxHLVBIUPn QFs4jftycKBLFsiU4a6Ohr/IHale5bUa9rl5XvPAfwoHUdWkerlJB6okosqFVNlBaq+GjpqeGWSOZ 5tuEYyelc52z18O5eFZWVvoflWs3y2BxvDgFEtvgmDMIOkMQ7PgrZ3ju3/WzP+SAW+PREO5MAl2k5 vVOZy9Xf0Qn0NO9d+WKg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnfFd-00000000XN5-1FnI; Sat, 25 Jul 2026 16:29:25 +0000 Received: from xs1.mindbit.ro ([80.86.107.70] helo=mail.mindbit.ro) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnfFb-00000000XMV-2I0I for linux-riscv@lists.infradead.org; Sat, 25 Jul 2026 16:29:24 +0000 Received: from dog.kanata.rendec.net (pool-174-112-193-187.cpe.net.cable.rogers.com [174.112.193.187]) by mail.mindbit.ro (Postfix) with ESMTPSA id B8A16C289F; Sat, 25 Jul 2026 19:29:19 +0300 (EEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.mindbit.ro B8A16C289F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rendec.net; s=default; t=1784996961; bh=kRrAbcks0rnrX6sXO4wXQrXSObH327Citv6v77kFmRI=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=hRgySj2L1OHufCOSrFgL+tL/wF99GY1UPNXgXDrYFEA72Ghd7RU3CKDlvCod0BLL0 3hiOE5yOl3pCOCxzk1JPbmkXwx754o6VlrDIn/0nxN+DZfs5pdX1BkJu+YisQ4jbb0 7hQSrW9DzC/1K61MXUdCXTq239VIkEJmYpo2nyf+LP25fN7Gc+2hinBrfFo3+Ggzzp Oi93MqpwUhh0gxqecSXzHwkycPovCGElknIvx10JtHCLsqII1RmhTmEQvZL+FQ9axd Fj5ItDehyvWwspkZOyUe/Su6uzFv27qQY4kZCKIzUgEJi7HdjpXzWRS5WxLYt4GzWK t7KYtB8c3C81A== Message-ID: <53a1f3a1354ed65fbeacb2fe1f6fc151815f7718.camel@rendec.net> Subject: Re: [PATCH 00/16] irqchip: harden initialization error paths From: Radu Rendec To: Haofeng Li Cc: tglx@kernel.org, linux-kernel@vger.kernel.org, Haofeng Li <13266079573@163.com>, Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Samuel Holland , linux-riscv@lists.infradead.org Date: Sat, 25 Jul 2026 12:29:18 -0400 In-Reply-To: <20260714122351.3274006-1-lihaofeng@kylinos.cn> References: <20260714122351.3274006-1-lihaofeng@kylinos.cn> User-Agent: Evolution 3.58.3 (3.58.3-1.fc43) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260725_092923_765877_FA59797D X-CRM114-Status: GOOD ( 13.70 ) 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 T24gVHVlLCAyMDI2LTA3LTE0IGF0IDIwOjIzICswODAwLCBIYW9mZW5nIExpIHdyb3RlOgo+IEFu IGF1ZGl0IG9mIGlycWNoaXAgaW5pdGlhbGl6YXRpb24gYW5kIGFsbG9jYXRpb24gZXJyb3IgcGF0 aHMgZm91bmQgYQo+IGNvbGxlY3Rpb24gb2YgcmVzb3VyY2UgbGVha3MgYW5kIGxpZmV0aW1lIGlz c3VlcyBhY3Jvc3Mgc2V2ZXJhbCBkcml2ZXJzLgo+IAo+IFRoZSBtb3N0IHNlcmlvdXMgY2FzZXMg bGVhdmUgaW50ZXJydXB0IGhhbmRsZXJzIG9yIG90aGVyIGdsb2JhbGx5IHZpc2libGUKPiBzdGF0 ZSBwb2ludGluZyBhdCBtZW1vcnkgdGhhdCBpcyBzdWJzZXF1ZW50bHkgZnJlZWQgb3IgdW5tYXBw ZWQuwqAgT3RoZXIKPiBjYXNlcyBsZWFrIElSUSBkb21haW5zLCBwYXJlbnQgbWFwcGluZ3MsIE1N SU8gbWFwcGluZ3MsIGFsbG9jYXRpb24gYml0bWFwCj4gcmVnaW9ucywgb3IgYWxsb2NhdGVkIG9i amVjdHMgd2hlbiBpbml0aWFsaXphdGlvbiBmYWlscyBwYXJ0LXdheSB0aHJvdWdoLgo+IFRoZSBz ZXJpZXMgYWxzbyBmaXhlcyBhbiB1bmJvdW5kZWQgSU1TSUMgTU1JTyBsb29rdXAsIGEgcG9zc2li bGUgTlVMTCBNTUlPCj4gYWNjZXNzIGluIHRoZSBOVklESUEgVDI0MSB3b3JrYXJvdW5kLCBhbmQg dHdvIGNhc2VzIHdoZXJlIHVzZWZ1bCBlcnJvcgo+IGluZm9ybWF0aW9uIGlzIGxvc3Qgb3IgcmVw b3J0ZWQgaW5jb3JyZWN0bHkuCj4gCj4gVGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIGZhaWx1 cmUgaGFuZGxpbmc7IHN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24KPiBwYXRocyBhcmUgbGVmdCB1 bmNoYW5nZWQuwqAgVGhlIE1JUFMgR0lDIGZpeGVzIGluIHBhdGNoZXMgNyBhbmQgOCBidWlsZCBv bgo+IGVhY2ggb3RoZXIsIGFzIGRvIHRoZSBSZWFsdGVrIFJUTCBmaXhlcyBpbiBwYXRjaGVzIDEy IGFuZCAxMy7CoCBUaGUgcmVtYWluaW5nCj4gcGF0Y2hlcyBhcmUgaW5kZXBlbmRlbnQuCj4gCj4g VGhlIGlzc3VlcyBhZGRyZXNzZWQgYXJlOgo+IAo+IMKgIC0gYm91bmQgTU1JTyBsb29rdXAgYW5k IG1ha2UgYWxsb2NhdGlvbiBjbGVhbnVwIE5VTEwtc2FmZTsKPiDCoCAtIHJvbGwgYmFjayBwYXJ0 aWFsbHkgYWxsb2NhdGVkIElSUXMsIGRvbWFpbnMgYW5kIGJpdG1hcCByZWdpb25zOwo+IMKgIC0g ZG8gbm90IGZyZWUgb3IgdW5tYXAgc3RhdGUgYWZ0ZXIgaXQgaGFzIGJlZW4gcHVibGlzaGVkIHRv IGxpdmUgdXNlcnM7Cj4gwqAgLSBkaXN0aW5ndWlzaCBtYW5hZ2VkIGZyb20gdW5tYW5hZ2VkIE1N SU8gbWFwcGluZ3MgZHVyaW5nIGNsZWFudXA7Cj4gwqAgLSByZWxlYXNlIHBhcmVudCBJUlEgbWFw cGluZ3MsIHBlci1DUFUgbWFwcGluZ3MgYW5kIE9GIG5vZGUgcmVmZXJlbmNlczsKPiDCoCAtIHBy ZXNlcnZlIGRlZmVycmVkLXByb2JlIGVycm9ycyBhbmQgcmVwb3J0IHRoZSBjb3JyZWN0IHJlc2V0 IGVycm9yLgo+IAo+IEhhb2ZlbmcgTGkgKDE2KToKPiDCoCBpcnFjaGlwL3Jpc2N2LWltc2ljOiBm aXggTU1JTyBsb29rdXAgT09CIGFuZCBOVUxMIGNsZWFudXAKPiDCoCBpcnFjaGlwL2xvb25nYXJj aC1pcjogZml4IHJlZGlyZWN0IGZyZWUgYW5kIGFsbG9jIGxlYWtzCj4gwqAgaXJxY2hpcC9zaWZp dmUtcGxpYzogZG8gbm90IGlvdW5tYXAgZGV2bSBtYXBwaW5ncwo+IMKgIGlycWNoaXAvY3Jvc3Ni YXI6IGZpeCBhbGxvY2F0aW9uIGFuZCBpbml0IGNsZWFudXAKPiDCoCBpcnFjaGlwL2JjbTcwMzgt bDE6IGNsZWFuIHVwIGluaXQgZmFpbHVyZSBwYXRocwo+IMKgIGlycWNoaXAvbG9vbmdzb24tbGlv aW50YzogdW5tYXAgcGVyLWNvcmUgaW9tYXBzIG9uIGVycm9yCj4gwqAgaXJxY2hpcC9taXBzLWdp YzogY2xlYW4gdXAgSVJRIGRvbWFpbiBjcmVhdGlvbiBmYWlsdXJlCj4gwqAgaXJxY2hpcC9taXBz LWdpYzogY2xlYW4gdXAgaWYgSVBJIGRvbWFpbiByZWdpc3RyYXRpb24gZmFpbHMKPiDCoCBpcnFj aGlwL2Vjb25ldDogY2xlYW4gdXAgVkVJQyBpbml0aWFsaXphdGlvbgo+IMKgIGlycWNoaXAvYXNw ZWVkLXZpYzogcHVibGlzaCBoYW5kbGVyIG9ubHkgYWZ0ZXIgZG9tYWluIGNyZWF0aW9uCj4gwqAg aXJxY2hpcC9sb29uZ3Nvbi1laW9pbnRjOiBwcmVzZXJ2ZSBsaXZlIHN0YXRlIG9uIGNhc2NhZGUg ZmFpbHVyZQo+IMKgIGlycWNoaXAvcmVhbHRlay1ydGw6IHVubWFwIHBlci1DUFUgYmFzZXMgb24g aW5pdCBmYWlsdXJlCj4gwqAgaXJxY2hpcC9yZWFsdGVrLXJ0bDogZGlzcG9zZSBwYXJlbnQgbWFw cGluZyBvbiBkb21haW4gZmFpbHVyZQo+IMKgIGlycWNoaXAvcmVuZXNhcy1yemcybDogZml4IHdy b25nIGVycm5vIGluIHJlc2V0IGVycm9yIGxvZwo+IMKgIGlycWNoaXAvZ2ljLXYzOiBmYWlsIFQy NDEgcXVpcmsgaWYgYWxpYXMgaW9yZW1hcCBmYWlscwo+IMKgIGlycWNoaXAvYmNtNzEyMC1sMjog Zml4IHBhcmVudCBJUlEgY291bnQgZXJyb3IgaGFuZGxpbmcKClBhdGNoZXMgMy0xNiBpbiB5b3Vy IHNlcmllcyB1c2UgYSBkaWZmZXJlbnQgZW1haWwgYWRkcmVzcyB0aGFuIHRoaXMKY292ZXIgbGV0 dGVyIGFuZCBwYXRjaGVzIDEtMi4gVGhpcyBpcyBub3QgYSBzaG93c3RvcHBlciBidXQgbWFrZXMg aXQKaGFyZGVyIHRvIHByb2Nlc3MgeW91ciBzZXJpZXMgdXNpbmcgdG9vbHMgbGlrZSBiNC4KClBs ZWFzZSB1c2UgYSBjb25zaXN0ZW50IGVtYWlsIGFkZHJlc3MgaW4gdGhlIGZ1dHVyZSwgcGFydGlj dWxhcmx5IGlmCnlvdSBwb3N0IGFub3RoZXIgdmVyc2lvbiBvZiB0aGlzIHNlcmllcyBmb3IgYW55 IHJlYXNvbi4gVGhhbmtzIQoKPiDCoGRyaXZlcnMvaXJxY2hpcC9pcnEtYXNwZWVkLXZpYy5jwqDC oMKgwqDCoMKgwqAgfCAyMyArKysrKysrKysrKysrKy0tLS0KPiDCoGRyaXZlcnMvaXJxY2hpcC9p cnEtYmNtNzAzOC1sMS5jwqDCoMKgwqDCoMKgwqAgfCAyNCArKysrKysrKysrKysrKystLS0tCj4g wqBkcml2ZXJzL2lycWNoaXAvaXJxLWJjbTcxMjAtbDIuY8KgwqDCoMKgwqDCoMKgIHzCoCA4ICsr KysrLS0KPiDCoGRyaXZlcnMvaXJxY2hpcC9pcnEtY3Jvc3NiYXIuY8KgwqDCoMKgwqDCoMKgwqDC oCB8IDIzICsrKysrKysrKysrKysrKystLQo+IMKgZHJpdmVycy9pcnFjaGlwL2lycS1lY29uZXQt ZW43NTEyMjEuY8KgwqAgfMKgIDUgKysrLQo+IMKgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMSArKysrKysrKy0KPiDCoGRyaXZlcnMvaXJxY2hp cC9pcnEtbG9vbmdhcmNoLWlyLmPCoMKgwqDCoMKgIHwgMjEgKysrKysrKysrKysrKysrLS0KPiDC oGRyaXZlcnMvaXJxY2hpcC9pcnEtbG9vbmdzb24tZWlvaW50Yy5jwqAgfCAxMyArKysrKystLS0t LQo+IMKgZHJpdmVycy9pcnFjaGlwL2lycS1sb29uZ3Nvbi1saW9pbnRjLmPCoCB8wqAgOCArKysr KysrCj4gwqBkcml2ZXJzL2lycWNoaXAvaXJxLW1pcHMtZ2ljLmPCoMKgwqDCoMKgwqDCoMKgwqAg fCAzMSArKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2lycWNoaXAvaXJxLXJl YWx0ZWstcnRsLmPCoMKgwqDCoMKgwqAgfCAyOCArKysrKysrKysrKysrKysrKystLS0tCj4gwqBk cml2ZXJzL2lycWNoaXAvaXJxLXJlbmVzYXMtcnpnMmwuY8KgwqDCoMKgIHzCoCAyICstCj4gwqBk cml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWltc2ljLXN0YXRlLmMgfCAxMiArKysrKystLS0tCj4g wqBkcml2ZXJzL2lycWNoaXAvaXJxLXNpZml2ZS1wbGljLmPCoMKgwqDCoMKgwqAgfMKgIDQgKysr LQo+IMKgMTQgZmlsZXMgY2hhbmdlZCwgMTY4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygt KQo+IAo+IAo+IGJhc2UtY29tbWl0OiBhMTNjMTQwY2MyODljMGI3YjM3NzBiY2U1YjNhZDQyYWIz NTA3NGFhCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==