From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH] pinctrl: stmfx: Fix compile issue when CONFIG_OF_GPIO is not defined Date: Wed, 22 May 2019 10:30:26 +0100 Message-ID: <20190522093026.GG4574@dell> References: <1558338735-8444-1-git-send-email-amelie.delaunay@st.com> <20190522054833.GB4574@dell> <20190522084133.GF4574@dell> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Amelie DELAUNAY Cc: Linus Walleij , Alexandre TORGUE , Maxime Coquelin , "linux-gpio@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-stm32@st-md-mailman.stormreply.com" , "kbuild-all@01.org" , Randy Dunlap List-Id: linux-gpio@vger.kernel.org On Wed, 22 May 2019, Amelie DELAUNAY wrote: > On 5/22/19 10:41 AM, Lee Jones wrote: > > On Wed, 22 May 2019, Amelie DELAUNAY wrote: > >> On 5/22/19 7:48 AM, Lee Jones wrote: > >>> On Mon, 20 May 2019, Amelie Delaunay wrote: > >>> > >>>> When CONFIG_GPIO_OF is not defined, struct gpio_chip 'of_node' member does > >>>> not exist: > >>>> drivers/pinctrl/pinctrl-stmfx.c: In function 'stmfx_pinctrl_probe': > >>>> drivers/pinctrl/pinctrl-stmfx.c:652:17: error: 'struct gpio_chip' has no member named 'of_node' > >>>> pctl->gpio_chip.of_node = np; > >>>> > >>>> Fixes: 1490d9f841b1 ("pinctrl: Add STMFX GPIO expander Pinctrl/GPIO driver") > >>>> Reported-by: kbuild test robot > >>>> Signed-off-by: Amelie Delaunay > >>>> --- > >>>> drivers/pinctrl/pinctrl-stmfx.c | 2 ++ > >>>> 1 file changed, 2 insertions(+) > >>>> > >>>> diff --git a/drivers/pinctrl/pinctrl-stmfx.c b/drivers/pinctrl/pinctrl-stmfx.c > >>>> index eba872c..bb64aa0 100644 > >>>> --- a/drivers/pinctrl/pinctrl-stmfx.c > >>>> +++ b/drivers/pinctrl/pinctrl-stmfx.c > >>>> @@ -648,7 +648,9 @@ static int stmfx_pinctrl_probe(struct platform_device *pdev) > >>>> pctl->gpio_chip.base = -1; > >>>> pctl->gpio_chip.ngpio = pctl->pctl_desc.npins; > >>>> pctl->gpio_chip.can_sleep = true; > >>>> +#ifdef CONFIG_OF_GPIO > >>>> pctl->gpio_chip.of_node = np; > >>>> +#endif > >>> > >>> This is pretty ugly. Will STMFX ever be used without OF support? If > >>> not, it might be better to place this restriction on the driver as a > >>> whole. > >>> > >>> Incidentally, why is this blanked out in the structure definition? > >>> Even 'struct device' doesn't do this. > >>> > >> config PINCTRL_STMFX > >> tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" > >> depends on I2C > >> depends on OF || COMPILE_TEST > >> select GENERIC_PINCONF > >> select GPIOLIB_IRQCHIP > >> select MFD_STMFX > >> > >> The issue is due to COMPILE_TEST: would "depends on OF || (OF && > >> COMPILE_TEST)" be better ? > > > > Linus would be in a better position to respond, but from what I can > > see, maybe: > > > > depends on OF || (OF_GPIO && COMPILE_TEST) > > > > Although, I'm unsure why other COMPILE_TESTs haven't highlighted this > > issue. Perhaps because they have all been locked down to a particular > > arch: > > > > $ grep COMPILE_TEST -- drivers/pinctrl/Kconfig > > bool "Support pin multiplexing controllers" if COMPILE_TEST > > bool "Support pin configuration controllers" if COMPILE_TEST > > depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST) > > depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST) > > depends on OF && (ARCH_LPC18XX || COMPILE_TEST) > > depends on ARCH_R7S72100 || COMPILE_TEST > > depends on ARCH_R7S9210 || COMPILE_TEST > > depends on ARCH_RZN1 || COMPILE_TEST > > depends on MIPS || COMPILE_TEST > > > > What about adding this to your Kconfig entry: > > > > select OF_GPIO > > > > Yes COMPILE_TEST is combined with arch when depending on OF. But STMFX > isn't arch dependent, it is just OF and I2C dependent. > > Randy also see a build error in pinctrl-stmfx.c when CONFIG_OF is not > set/enabled (randconfig): > > ../drivers/pinctrl/pinctrl-stmfx.c:409:20: error: > ‘pinconf_generic_dt_node_to_map_pin’ undeclared here (not in a function) > .dt_node_to_map = pinconf_generic_dt_node_to_map_pin, > > OF_GPIO depends on OF. > > So either > depends on OF || (OF && COMPILE_TEST) > or > depends on OF || (OF_GPIO && COMPILE_TEST) > > and > > select OF_GPIO > > What is the prettiest way ? I'll leave the final call up to Linus. -- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog 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 X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43A1DC18E7D for ; Wed, 22 May 2019 09:30:38 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 182A521479 for ; Wed, 22 May 2019 09:30:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="BmS4aQ4t"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="p1vVrT54" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 182A521479 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qzuh/K+HFLHwE0vESfJfIHMpUz5cv00fk3KQrLqLWAA=; b=BmS4aQ4tvr+Hg/ bdFYtS4PnrkcAMPs6mTAFhkHD7KgBwtmf0TUVvLNIpRiT4XPFFOVw850rNTWDb7X+QJqo6wAaZJIM TSQFCQUVspXVW0+6BQ2D6hVPYBWyO9d+95c6U3mYT25BqzRYqWVlMVRJkZlYYefo3J5Zysiwo1I0k abr/m+beyXTfz1gRhJWge4p9KsAwQ8sI5aQzq0KfO9Nnv3CPVWwlgx9dur93+begReBzrj0S9Rgta m3SXul05O8xOyaY/d/YuEOAw3rqmYK6Dzq/3OHQHJrMoJEldWppMd+WHBOqLJDALorse14ncD2Cim 01TpKMlOL23HCr2msTeQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hTNZz-000638-8F; Wed, 22 May 2019 09:30:35 +0000 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hTNZv-00062m-4e for linux-arm-kernel@lists.infradead.org; Wed, 22 May 2019 09:30:32 +0000 Received: by mail-wm1-x343.google.com with SMTP id i3so1442327wml.4 for ; Wed, 22 May 2019 02:30:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=+VK7fLshFfrAgd2rmmiVLNHyPAHPZZGXsuVy0XdS+Zc=; b=p1vVrT54TqP7Tv92KeSNxtCIKuVh2was82RL9sqlsEHAdDh2H92mU+5C8DI7g4nWA9 i3gl7B3ndoe5+0YE0YsQh97LdUGeRyA+qKuVr5IxMCSdyTmWj88ezs+VPsiQSidfaUOx nMwyYdFrAY59hOb8Z70FDRyo6llGJNl1RnZaQjrFuGtBibmnjtPtJcqWMQBzAKGJi/yY w90y0HTNXO0xxbADc/H1ZIfStFB8ee25hmcLtJs5/3Rwiyv8rZau4N9xonQVjuERSZ9g 5zA4zplXyKSdEUdqJDu/8K+MjKIv7rFTsGhQd76J7EIAPwSf8VO3O6ukvm1/MoxXQZxN yNMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=+VK7fLshFfrAgd2rmmiVLNHyPAHPZZGXsuVy0XdS+Zc=; b=Q3oPvpWENgDgf1RJQn5k/XEvCyt7/cBChzAVZW0YFgU/shUx45YCz8O6GI4JptNFKJ 1QSRGd6m/uYtzx9TXN+MCOqkM5Bw4MBQ40tUYPsC88l6pNcBInkG6Uryjp7b9dZLL4U/ gcd5D815pCAvDqUDv3+oVmtRqvsKp4XRYq7bGrL7LEgLzf6dWigWWrxUFf6vD8zj5lF8 GUvImWfIyhoNKU5LNaX9U0EHBIys1d+BeVrxlUKIOWdK17Vi/tlEkdZSINfx6pFpTER7 g+SN9h7x22iyBbVtPi8PBwV1lf2489VRBC5TxnZsu0q70OPdAvFtQ7VXocxKE+kOuIqz YE6Q== X-Gm-Message-State: APjAAAVxwEia2UrDGCxJiLchKsDu2oqxUwH7qdCn6/jrDuTQC6t7AAoi 78rBIreuBVaY+wiegsfWp6wxCg== X-Google-Smtp-Source: APXvYqwWvQYOAuut9pW+SWIr2WhinP84EdHxdOWjWpQnLL2IrrpfL3/E5WtmX1qrlrUmJEKNMHencA== X-Received: by 2002:a1c:7503:: with SMTP id o3mr7066267wmc.28.1558517429034; Wed, 22 May 2019 02:30:29 -0700 (PDT) Received: from dell ([2.27.167.43]) by smtp.gmail.com with ESMTPSA id g17sm21322431wrr.65.2019.05.22.02.30.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 22 May 2019 02:30:28 -0700 (PDT) Date: Wed, 22 May 2019 10:30:26 +0100 From: Lee Jones To: Amelie DELAUNAY Subject: Re: [PATCH] pinctrl: stmfx: Fix compile issue when CONFIG_OF_GPIO is not defined Message-ID: <20190522093026.GG4574@dell> References: <1558338735-8444-1-git-send-email-amelie.delaunay@st.com> <20190522054833.GB4574@dell> <20190522084133.GF4574@dell> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190522_023031_213255_D9B906E4 X-CRM114-Status: GOOD ( 21.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre TORGUE , Linus Walleij , Randy Dunlap , "linux-kernel@vger.kernel.org" , "linux-gpio@vger.kernel.org" , "kbuild-all@01.org" , Maxime Coquelin , "linux-stm32@st-md-mailman.stormreply.com" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCAyMiBNYXkgMjAxOSwgQW1lbGllIERFTEFVTkFZIHdyb3RlOgoKPiBPbiA1LzIyLzE5 IDEwOjQxIEFNLCBMZWUgSm9uZXMgd3JvdGU6Cj4gPiBPbiBXZWQsIDIyIE1heSAyMDE5LCBBbWVs aWUgREVMQVVOQVkgd3JvdGU6Cj4gPj4gT24gNS8yMi8xOSA3OjQ4IEFNLCBMZWUgSm9uZXMgd3Jv dGU6Cj4gPj4+IE9uIE1vbiwgMjAgTWF5IDIwMTksIEFtZWxpZSBEZWxhdW5heSB3cm90ZToKPiA+ Pj4KPiA+Pj4+IFdoZW4gQ09ORklHX0dQSU9fT0YgaXMgbm90IGRlZmluZWQsIHN0cnVjdCBncGlv X2NoaXAgJ29mX25vZGUnIG1lbWJlciBkb2VzCj4gPj4+PiBub3QgZXhpc3Q6Cj4gPj4+PiBkcml2 ZXJzL3BpbmN0cmwvcGluY3RybC1zdG1meC5jOiBJbiBmdW5jdGlvbiAnc3RtZnhfcGluY3RybF9w cm9iZSc6Cj4gPj4+PiBkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1zdG1meC5jOjY1MjoxNzogZXJy b3I6ICdzdHJ1Y3QgZ3Bpb19jaGlwJyBoYXMgbm8gbWVtYmVyIG5hbWVkICdvZl9ub2RlJwo+ID4+ Pj4gICAgICAgIHBjdGwtPmdwaW9fY2hpcC5vZl9ub2RlID0gbnA7Cj4gPj4+Pgo+ID4+Pj4gRml4 ZXM6IDE0OTBkOWY4NDFiMSAoInBpbmN0cmw6IEFkZCBTVE1GWCBHUElPIGV4cGFuZGVyIFBpbmN0 cmwvR1BJTyBkcml2ZXIiKQo+ID4+Pj4gUmVwb3J0ZWQtYnk6IGtidWlsZCB0ZXN0IHJvYm90IDxs a3BAaW50ZWwuY29tPgo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogQW1lbGllIERlbGF1bmF5IDxhbWVs aWUuZGVsYXVuYXlAc3QuY29tPgo+ID4+Pj4gLS0tCj4gPj4+PiAgICBkcml2ZXJzL3BpbmN0cmwv cGluY3RybC1zdG1meC5jIHwgMiArKwo+ID4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKQo+ID4+Pj4KPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvcGluY3Ry bC1zdG1meC5jIGIvZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtc3RtZnguYwo+ID4+Pj4gaW5kZXgg ZWJhODcyYy4uYmI2NGFhMCAxMDA2NDQKPiA+Pj4+IC0tLSBhL2RyaXZlcnMvcGluY3RybC9waW5j dHJsLXN0bWZ4LmMKPiA+Pj4+ICsrKyBiL2RyaXZlcnMvcGluY3RybC9waW5jdHJsLXN0bWZ4LmMK PiA+Pj4+IEBAIC02NDgsNyArNjQ4LDkgQEAgc3RhdGljIGludCBzdG1meF9waW5jdHJsX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPj4+PiAgICAJcGN0bC0+Z3Bpb19jaGlw LmJhc2UgPSAtMTsKPiA+Pj4+ICAgIAlwY3RsLT5ncGlvX2NoaXAubmdwaW8gPSBwY3RsLT5wY3Rs X2Rlc2MubnBpbnM7Cj4gPj4+PiAgICAJcGN0bC0+Z3Bpb19jaGlwLmNhbl9zbGVlcCA9IHRydWU7 Cj4gPj4+PiArI2lmZGVmIENPTkZJR19PRl9HUElPCj4gPj4+PiAgICAJcGN0bC0+Z3Bpb19jaGlw Lm9mX25vZGUgPSBucDsKPiA+Pj4+ICsjZW5kaWYKPiA+Pj4KPiA+Pj4gVGhpcyBpcyBwcmV0dHkg dWdseS4gIFdpbGwgU1RNRlggZXZlciBiZSB1c2VkIHdpdGhvdXQgT0Ygc3VwcG9ydD8gIElmCj4g Pj4+IG5vdCwgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHBsYWNlIHRoaXMgcmVzdHJpY3Rpb24gb24g dGhlIGRyaXZlciBhcyBhCj4gPj4+IHdob2xlLgo+ID4+Pgo+ID4+PiBJbmNpZGVudGFsbHksIHdo eSBpcyB0aGlzIGJsYW5rZWQgb3V0IGluIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbj8KPiA+Pj4g RXZlbiAnc3RydWN0IGRldmljZScgZG9lc24ndCBkbyB0aGlzLgo+ID4+Pgo+ID4+IGNvbmZpZyBQ SU5DVFJMX1NUTUZYCj4gPj4gCXRyaXN0YXRlICJTVE1pY3JvZWxlY3Ryb25pY3MgU1RNRlggR1BJ TyBleHBhbmRlciBwaW5jdHJsIGRyaXZlciIKPiA+PiAJZGVwZW5kcyBvbiBJMkMKPiA+PiAJZGVw ZW5kcyBvbiBPRiB8fCBDT01QSUxFX1RFU1QKPiA+PiAJc2VsZWN0IEdFTkVSSUNfUElOQ09ORgo+ ID4+IAlzZWxlY3QgR1BJT0xJQl9JUlFDSElQCj4gPj4gCXNlbGVjdCBNRkRfU1RNRlgKPiA+Pgo+ ID4+IFRoZSBpc3N1ZSBpcyBkdWUgdG8gQ09NUElMRV9URVNUOiB3b3VsZCAiZGVwZW5kcyBvbiBP RiB8fCAoT0YgJiYKPiA+PiBDT01QSUxFX1RFU1QpIiBiZSBiZXR0ZXIgPwo+ID4gCj4gPiBMaW51 cyB3b3VsZCBiZSBpbiBhIGJldHRlciBwb3NpdGlvbiB0byByZXNwb25kLCBidXQgZnJvbSB3aGF0 IEkgY2FuCj4gPiBzZWUsIG1heWJlOgo+ID4gCj4gPiAgICBkZXBlbmRzIG9uIE9GIHx8IChPRl9H UElPICYmIENPTVBJTEVfVEVTVCkKPiA+IAo+ID4gQWx0aG91Z2gsIEknbSB1bnN1cmUgd2h5IG90 aGVyIENPTVBJTEVfVEVTVHMgaGF2ZW4ndCBoaWdobGlnaHRlZCB0aGlzCj4gPiBpc3N1ZS4gIFBl cmhhcHMgYmVjYXVzZSB0aGV5IGhhdmUgYWxsIGJlZW4gbG9ja2VkIGRvd24gdG8gYSBwYXJ0aWN1 bGFyCj4gPiBhcmNoOgo+ID4gCj4gPiAkIGdyZXAgQ09NUElMRV9URVNUIC0tIGRyaXZlcnMvcGlu Y3RybC9LY29uZmlnCj4gPiAJYm9vbCAiU3VwcG9ydCBwaW4gbXVsdGlwbGV4aW5nIGNvbnRyb2xs ZXJzIiBpZiBDT01QSUxFX1RFU1QKPiA+IAlib29sICJTdXBwb3J0IHBpbiBjb25maWd1cmF0aW9u IGNvbnRyb2xsZXJzIiBpZiBDT01QSUxFX1RFU1QKPiA+IAlkZXBlbmRzIG9uIE9GICYmIChBUkNI X0RBVklOQ0lfREE4NTAgfHwgQ09NUElMRV9URVNUKQo+ID4gCWRlcGVuZHMgb24gT0YgJiYgKEFS Q0hfRElHSUNPTE9SIHx8IENPTVBJTEVfVEVTVCkKPiA+IAlkZXBlbmRzIG9uIE9GICYmIChBUkNI X0xQQzE4WFggfHwgQ09NUElMRV9URVNUKQo+ID4gCWRlcGVuZHMgb24gQVJDSF9SN1M3MjEwMCB8 fCBDT01QSUxFX1RFU1QKPiA+IAlkZXBlbmRzIG9uIEFSQ0hfUjdTOTIxMCB8fCBDT01QSUxFX1RF U1QKPiA+IAlkZXBlbmRzIG9uIEFSQ0hfUlpOMSB8fCBDT01QSUxFX1RFU1QKPiA+IAlkZXBlbmRz IG9uIE1JUFMgfHwgQ09NUElMRV9URVNUCj4gPiAKPiA+IFdoYXQgYWJvdXQgYWRkaW5nIHRoaXMg dG8geW91ciBLY29uZmlnIGVudHJ5Ogo+ID4gCj4gPiAgICBzZWxlY3QgT0ZfR1BJTwo+ID4gCj4g Cj4gWWVzIENPTVBJTEVfVEVTVCBpcyBjb21iaW5lZCB3aXRoIGFyY2ggd2hlbiBkZXBlbmRpbmcg b24gT0YuIEJ1dCBTVE1GWCAKPiBpc24ndCBhcmNoIGRlcGVuZGVudCwgaXQgaXMganVzdCBPRiBh bmQgSTJDIGRlcGVuZGVudC4KPiAKPiBSYW5keSBhbHNvIHNlZSBhIGJ1aWxkIGVycm9yIGluIHBp bmN0cmwtc3RtZnguYyB3aGVuIENPTkZJR19PRiBpcyBub3QgCj4gc2V0L2VuYWJsZWQgKHJhbmRj b25maWcpOgo+IAo+IC4uL2RyaXZlcnMvcGluY3RybC9waW5jdHJsLXN0bWZ4LmM6NDA5OjIwOiBl cnJvcjogCj4g4oCYcGluY29uZl9nZW5lcmljX2R0X25vZGVfdG9fbWFwX3BpbuKAmSB1bmRlY2xh cmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQo+ICAgIC5kdF9ub2RlX3RvX21hcCA9IHBpbmNv bmZfZ2VuZXJpY19kdF9ub2RlX3RvX21hcF9waW4sCj4gCj4gT0ZfR1BJTyBkZXBlbmRzIG9uIE9G Lgo+IAo+IFNvIGVpdGhlcgo+ICAgICAgZGVwZW5kcyBvbiBPRiB8fCAoT0YgJiYgQ09NUElMRV9U RVNUKQo+IG9yCj4gICAgICBkZXBlbmRzIG9uIE9GIHx8IChPRl9HUElPICYmIENPTVBJTEVfVEVT VCkKPiAKPiBhbmQKPiAKPiAgICAgIHNlbGVjdCBPRl9HUElPCj4gCj4gV2hhdCBpcyB0aGUgcHJl dHRpZXN0IHdheSA/CgpJJ2xsIGxlYXZlIHRoZSBmaW5hbCBjYWxsIHVwIHRvIExpbnVzLgoKLS0g CkxlZSBKb25lcyBb5p2O55C85pavXQpMaW5hcm8gU2VydmljZXMgVGVjaG5pY2FsIExlYWQKTGlu YXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBTb0NzCkZvbGxvdyBMaW5h cm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK