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=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 B0339C433FE for ; Mon, 13 Sep 2021 20:20:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 88DD061103 for ; Mon, 13 Sep 2021 20:20:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243415AbhIMUVZ (ORCPT ); Mon, 13 Sep 2021 16:21:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241893AbhIMUVP (ORCPT ); Mon, 13 Sep 2021 16:21:15 -0400 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 183DBC061574 for ; Mon, 13 Sep 2021 13:19:59 -0700 (PDT) Received: by mail-ed1-x531.google.com with SMTP id 9so16173694edx.11 for ; Mon, 13 Sep 2021 13:19:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paul-moore-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=a6cDeTvVM/zwuAekpHf0unWAPapurIVQ8FF1NNOdAUw=; b=sPoy/dS3wFFuiTrUc9FWgn/a+pIInQwVXZDUCfZrt/nRsTJSJfnLpiJFPHkKzvCIZa onPHm/+SGfI/11cIX+N2K9iKl91Vi85K4823RHjOhsYOkZZyT3r6LdVvAawfjW0/6P/J w4pHIjRmSZM+YNvsPxXp2uLEyC2dd8RGeM76t8PCUtHc8Yasb0UmofvVR+zBMcdlxmaI J2ad6YZ75zK8lAgn3Z6Ih3+1lkkw4FegxETcJK1D1L/UqzVkv4CrlRt9iYmEJ8eQ8qhm xdw5u+QtkptWiw98qira3GEy0clqaidZpTCCe3DbuypPXA+jq81x//wgHNCGcDAPUqnO 0ZqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=a6cDeTvVM/zwuAekpHf0unWAPapurIVQ8FF1NNOdAUw=; b=xKMhY1427uGWECQCUJ1OwPkteyXh7EqLL+hPXcFa+frfNgwIhMNevOFUu3AARu4kcW lCdx4pgvnJ+rYTSou2GLAQN5XPi401mYlzgqIz3Cxyb3qc5HtgKHXVP49JtW8ORRg8WS m7xUzONzk9jX3KETac9WJwE0dRzClFXz/cqEtpbVRB+55ZGUMluL9MbCcbCnbgVWxdNu cNYDdsECu4/0/Yi/1qGBXlCHnDkYDYX0/mI2zi77+j7iD5TZN/ujL1UzV7SDSgn8IS2T ZTRGQjapan21fwqTw873zO/fpH3DphxQlAxDcbaodkKQwHzR3/5KFkGX2BHZR6e2ACQP mZPw== X-Gm-Message-State: AOAM533Ocj/bEKdRRRevM3eaXNgbzRW+2bTaGOYpU7CaD2gUs4a2lz19 3q0d1n0ivOAYhbprS54BoxZNY1xOvIxkiMq5rVPY X-Google-Smtp-Source: ABdhPJzXztdoaWcmdR79de3Ty/sKwyB2qHD8EM1jfTUpK2BcaoJb8HBR6a7zJmM2CQIaTVZDUNOG8hONRx/ACwD7zds= X-Received: by 2002:aa7:dd4e:: with SMTP id o14mr14707466edw.104.1631564397579; Mon, 13 Sep 2021 13:19:57 -0700 (PDT) MIME-Version: 1.0 References: <4e2370a9022495c49f3108fe34c5a2b2f4b28dfa.1630684009.git.christophe.leroy@csgroup.eu> <2057e2ab-b303-8ec6-9c43-2c2614591925@csgroup.eu> In-Reply-To: From: Paul Moore Date: Mon, 13 Sep 2021 16:19:46 -0400 Message-ID: Subject: Re: [PATCH] audit: Fix build failure by renaming struct node to struct audit_node To: LEROY Christophe Cc: Eric Paris , "linux-kernel@vger.kernel.org" , "linux-audit@redhat.com" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 7, 2021 at 11:45 AM LEROY Christophe wrote: > > -----Message d'origine----- > > De : Paul Moore > > On Mon, Sep 6, 2021 at 2:41 AM LEROY Christophe > > wrote: > > > Le 03/09/2021 =C3=A0 19:06, Paul Moore a =C3=A9crit : > > > > On Fri, Sep 3, 2021 at 11:48 AM Christophe Leroy > > > > wrote: > > > >> > > > >> struct node defined in kernel/audit_tree.c conflicts with struct > > > >> node defined in include/linux/node.h > > > >> > > > >> CC kernel/audit_tree.o > > > >> kernel/audit_tree.c:33:9: error: redefinition of 'struct = node' > > > >> 33 | struct node { > > > >> | ^~~~ > > > >> In file included from ./include/linux/cpu.h:17, > > > >> from ./include/linux/static_call.h:102, > > > >> from ./arch/powerpc/include/asm/machdep.= h:10, > > > >> from ./arch/powerpc/include/asm/archrand= om.h:7, > > > >> from ./include/linux/random.h:121, > > > >> from ./include/linux/net.h:18, > > > >> from ./include/linux/skbuff.h:26, > > > >> from kernel/audit.h:11, > > > >> from kernel/audit_tree.c:2: > > > >> ./include/linux/node.h:84:8: note: originally defined her= e > > > >> 84 | struct node { > > > >> | ^~~~ > > > >> make[2]: *** [kernel/audit_tree.o] Error 1 > > > >> > > > >> Rename it audit_node. > > > >> > > > >> Signed-off-by: Christophe Leroy > > > >> --- > > > >> kernel/audit_tree.c | 20 ++++++++++---------- > > > >> 1 file changed, 10 insertions(+), 10 deletions(-) > > > > > > > > That's interesting, I wonder why we didn't see this prior? Also as > > > > an aside, there are evidently a good handful of symbols named > > > > "node". In fact I don't see this now in the audit/stable-5.15 or > > > > Linus' tree as of a right now, both using an allyesconfig: > > > > > > > > % git show-ref HEAD > > > > a9c9a6f741cdaa2fa9ba24a790db8d07295761e3 refs/remotes/linus/HEAD % > > > > touch kernel/audit_tree.c % make C=3D1 kernel/ > > > > CALL scripts/checksyscalls.sh > > > > CALL scripts/atomic/check-atomics.sh > > > > DESCEND objtool > > > > CHK kernel/kheaders_data.tar.xz > > > > CC kernel/audit_tree.o > > > > CHECK kernel/audit_tree.c > > > > AR kernel/built-in.a > > > > > > > > What tree and config are you using where you see this error? > > > > Looking at your error, I'm guessing this is limited to ppc builds, > > > > and if I look at the arch/powerpc/include/asm/machdep.h file in > > > > Linus tree I don't see a static_call.h include so I'm guessing this > > > > is a -next tree for ppc? Something else? > > > > > > > > Without knowing the context, is adding the static_call.h include in > > > > arch/powerpc/include/asm/machdep.h intentional or simply a bit of > > > > include file creep? > > > > > > struct machdep_calls in asm/machdep.h is full of function pointers an= d > > > I'm working on converting that to static_calls > > > (https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=3D260= 878 > > > &state=3D*) > > > > > > So yes, adding static_call.h in asm/machdep.h is intentional and the > > > issue was detected by CI build test > > > (http://kisskb.ellerman.id.au/kisskb/buildresult/14628100/) > > > > > > I submitted this change to you because for me it make sense to not > > > re-use globably defined struct names in local C files, and anybody ma= y > > > encounter the problem as soon as linux/node.h gets included directly > > > or indirectly. But if you prefer I guess the fix may be merged throug= h > > > powerpc tree as part of this series. > > > > Yes, this patch should go in via the audit tree, and while I don't have= an > > objection to the patch, whenever I see a patch to fix an issue that is = not visible in > > Linus' tree or the audit tree it raises some questions. I usually hope= to see those > > questions answered proactively in the cover letter and/or patch descrip= tion but > > that wasn't the case here so you get to play a game of 20 questions. > > > > Speaking of which, I don't recall seeing an answer to the "where do the= se > > include file changes live?" question, is is the ppc -next tree, or are = they still > > unmerged and just on the ppc list? > > It is still an RFC in the ppc list. I just merged this into audit/next but I rewrote chunks of the subject line and commit description as the build failure isn't yet "real" as the offending patch is still just a RFC. Hopefully be merging this patch into audit/next now we'll prevent future problems if/when the other patch is merged. --=20 paul moore www.paul-moore.com 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=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 C668BC433EF for ; Mon, 13 Sep 2021 20:24:58 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) (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 0562460F6D for ; Mon, 13 Sep 2021 20:24:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0562460F6D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=paul-moore.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-379-7NhCXou5NjKliUb6TH7Nwg-1; Mon, 13 Sep 2021 16:24:55 -0400 X-MC-Unique: 7NhCXou5NjKliUb6TH7Nwg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 621B51006AA3; Mon, 13 Sep 2021 20:24:52 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 864B46A901; Mon, 13 Sep 2021 20:24:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 910841800B8B; Mon, 13 Sep 2021 20:24:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 18DKK4F4020652 for ; Mon, 13 Sep 2021 16:20:04 -0400 Received: by smtp.corp.redhat.com (Postfix) id 41F072164DF1; Mon, 13 Sep 2021 20:20:04 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3CE3A2166B4E for ; Mon, 13 Sep 2021 20:20:01 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2018910665A0 for ; Mon, 13 Sep 2021 20:20:01 +0000 (UTC) Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-242-NvV8iSkDMU-4e2BHmopoCg-1; Mon, 13 Sep 2021 16:19:58 -0400 X-MC-Unique: NvV8iSkDMU-4e2BHmopoCg-1 Received: by mail-ed1-f41.google.com with SMTP id t6so14797536edi.9 for ; Mon, 13 Sep 2021 13:19:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=a6cDeTvVM/zwuAekpHf0unWAPapurIVQ8FF1NNOdAUw=; b=6DzBBeA+4SbzMtq78aJui5Moz4Ja3NLsehKMMHyTUvWeIAtVk2IruW3yEXjqQXg9ow y34TPbPJLTEn+6k/XF5a8AxDxMRHL5OWDlr8qZcYmxCrJOhnZvHeJTUYEXFhi8mxjiWU P13huNDHISSveBxhW89/mYtKKoXjHvCbrUytRA8InsqPaIRDxooQz2IzJVXW0JnRgMjJ y7fcrXaM4v8zTQwZt5LjQLO6RnA42l2255pCnEPZakqDGEJjDTMICnHHM8apk6gQUoqU O+dBwv+RjHWUO1hRRstl6no/zzfn48kgsWbl2DbZ4g0s+F4pviMeEqdOyLfpa+LXKGvZ RPBg== X-Gm-Message-State: AOAM533wNwZBZ4pAEKLSq6MrdMAqDoyQSNgoORYpoQA/S6LspORFDJPk swkE5mRBHQJYV77CoZTVWSCUKeiQx+I53x4jUKp01/RPVw== X-Google-Smtp-Source: ABdhPJzXztdoaWcmdR79de3Ty/sKwyB2qHD8EM1jfTUpK2BcaoJb8HBR6a7zJmM2CQIaTVZDUNOG8hONRx/ACwD7zds= X-Received: by 2002:aa7:dd4e:: with SMTP id o14mr14707466edw.104.1631564397579; Mon, 13 Sep 2021 13:19:57 -0700 (PDT) MIME-Version: 1.0 References: <4e2370a9022495c49f3108fe34c5a2b2f4b28dfa.1630684009.git.christophe.leroy@csgroup.eu> <2057e2ab-b303-8ec6-9c43-2c2614591925@csgroup.eu> In-Reply-To: From: Paul Moore Date: Mon, 13 Sep 2021 16:19:46 -0400 Message-ID: Subject: Re: [PATCH] audit: Fix build failure by renaming struct node to struct audit_node To: LEROY Christophe X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 18DKK4F4020652 X-loop: linux-audit@redhat.com Cc: "linux-audit@redhat.com" , "linux-kernel@vger.kernel.org" , Eric Paris X-BeenThere: linux-audit@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Linux Audit Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=linux-audit-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlLCBTZXAgNywgMjAyMSBhdCAxMTo0NSBBTSBMRVJPWSBDaHJpc3RvcGhlCjxjaHJpc3Rv cGhlLmxlcm95QGNzZ3JvdXAuZXU+IHdyb3RlOgo+ID4gLS0tLS1NZXNzYWdlIGQnb3JpZ2luZS0t LS0tCj4gPiBEZSA6IFBhdWwgTW9vcmUgPHBhdWxAcGF1bC1tb29yZS5jb20+Cj4gPiBPbiBNb24s IFNlcCA2LCAyMDIxIGF0IDI6NDEgQU0gTEVST1kgQ2hyaXN0b3BoZQo+ID4gPGNocmlzdG9waGUu bGVyb3lAY3Nncm91cC5ldT4gd3JvdGU6Cj4gPiA+IExlIDAzLzA5LzIwMjEgw6AgMTk6MDYsIFBh dWwgTW9vcmUgYSDDqWNyaXQgOgo+ID4gPiA+IE9uIEZyaSwgU2VwIDMsIDIwMjEgYXQgMTE6NDgg QU0gQ2hyaXN0b3BoZSBMZXJveQo+ID4gPiA+IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+ IHdyb3RlOgo+ID4gPiA+Pgo+ID4gPiA+PiBzdHJ1Y3Qgbm9kZSBkZWZpbmVkIGluIGtlcm5lbC9h dWRpdF90cmVlLmMgY29uZmxpY3RzIHdpdGggc3RydWN0Cj4gPiA+ID4+IG5vZGUgZGVmaW5lZCBp biBpbmNsdWRlL2xpbnV4L25vZGUuaAo+ID4gPiA+Pgo+ID4gPiA+PiAgICAgICAgICAgIENDICAg ICAga2VybmVsL2F1ZGl0X3RyZWUubwo+ID4gPiA+PiAgICAgICAgICBrZXJuZWwvYXVkaXRfdHJl ZS5jOjMzOjk6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBub2RlJwo+ID4gPiA+PiAg ICAgICAgICAgICAzMyB8ICBzdHJ1Y3Qgbm9kZSB7Cj4gPiA+ID4+ICAgICAgICAgICAgICAgIHwg ICAgICAgICBefn5+Cj4gPiA+ID4+ICAgICAgICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAuL2lu Y2x1ZGUvbGludXgvY3B1Lmg6MTcsCj4gPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJvbSAuL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaDoxMDIsCj4gPiA+ID4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSAuL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVw Lmg6MTAsCj4gPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAuL2FyY2gvcG93 ZXJwYy9pbmNsdWRlL2FzbS9hcmNocmFuZG9tLmg6NywKPiA+ID4gPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICBmcm9tIC4vaW5jbHVkZS9saW51eC9yYW5kb20uaDoxMjEsCj4gPiA+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAuL2luY2x1ZGUvbGludXgvbmV0Lmg6MTgsCj4g PiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAuL2luY2x1ZGUvbGludXgvc2ti dWZmLmg6MjYsCj4gPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBrZXJuZWwv YXVkaXQuaDoxMSwKPiA+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGtlcm5l bC9hdWRpdF90cmVlLmM6MjoKPiA+ID4gPj4gICAgICAgICAgLi9pbmNsdWRlL2xpbnV4L25vZGUu aDo4NDo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQo+ID4gPiA+PiAgICAgICAgICAg ICA4NCB8IHN0cnVjdCBub2RlIHsKPiA+ID4gPj4gICAgICAgICAgICAgICAgfCAgICAgICAgXn5+ fgo+ID4gPiA+PiAgICAgICAgICBtYWtlWzJdOiAqKiogW2tlcm5lbC9hdWRpdF90cmVlLm9dIEVy cm9yIDEKPiA+ID4gPj4KPiA+ID4gPj4gUmVuYW1lIGl0IGF1ZGl0X25vZGUuCj4gPiA+ID4+Cj4g PiA+ID4+IFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lA Y3Nncm91cC5ldT4KPiA+ID4gPj4gLS0tCj4gPiA+ID4+ICAga2VybmVsL2F1ZGl0X3RyZWUuYyB8 IDIwICsrKysrKysrKystLS0tLS0tLS0tCj4gPiA+ID4+ICAgMSBmaWxlIGNoYW5nZWQsIDEwIGlu c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+ID4gPiA+Cj4gPiA+ID4gVGhhdCdzIGludGVy ZXN0aW5nLCBJIHdvbmRlciB3aHkgd2UgZGlkbid0IHNlZSB0aGlzIHByaW9yPyAgQWxzbyBhcwo+ ID4gPiA+IGFuIGFzaWRlLCB0aGVyZSBhcmUgZXZpZGVudGx5IGEgZ29vZCBoYW5kZnVsIG9mIHN5 bWJvbHMgbmFtZWQKPiA+ID4gPiAibm9kZSIuICBJbiBmYWN0IEkgZG9uJ3Qgc2VlIHRoaXMgbm93 IGluIHRoZSBhdWRpdC9zdGFibGUtNS4xNSBvcgo+ID4gPiA+IExpbnVzJyB0cmVlIGFzIG9mIGEg cmlnaHQgbm93LCBib3RoIHVzaW5nIGFuIGFsbHllc2NvbmZpZzoKPiA+ID4gPgo+ID4gPiA+ICUg Z2l0IHNob3ctcmVmIEhFQUQKPiA+ID4gPiBhOWM5YTZmNzQxY2RhYTJmYTliYTI0YTc5MGRiOGQw NzI5NTc2MWUzIHJlZnMvcmVtb3Rlcy9saW51cy9IRUFEICUKPiA+ID4gPiB0b3VjaCBrZXJuZWwv YXVkaXRfdHJlZS5jICUgbWFrZSBDPTEga2VybmVsLwo+ID4gPiA+ICAgQ0FMTCAgICBzY3JpcHRz L2NoZWNrc3lzY2FsbHMuc2gKPiA+ID4gPiAgIENBTEwgICAgc2NyaXB0cy9hdG9taWMvY2hlY2st YXRvbWljcy5zaAo+ID4gPiA+ICAgREVTQ0VORCBvYmp0b29sCj4gPiA+ID4gICBDSEsgICAgIGtl cm5lbC9raGVhZGVyc19kYXRhLnRhci54ego+ID4gPiA+ICAgQ0MgICAgICBrZXJuZWwvYXVkaXRf dHJlZS5vCj4gPiA+ID4gICBDSEVDSyAgIGtlcm5lbC9hdWRpdF90cmVlLmMKPiA+ID4gPiAgIEFS ICAgICAga2VybmVsL2J1aWx0LWluLmEKPiA+ID4gPgo+ID4gPiA+IFdoYXQgdHJlZSBhbmQgY29u ZmlnIGFyZSB5b3UgdXNpbmcgd2hlcmUgeW91IHNlZSB0aGlzIGVycm9yPwo+ID4gPiA+IExvb2tp bmcgYXQgeW91ciBlcnJvciwgSSdtIGd1ZXNzaW5nIHRoaXMgaXMgbGltaXRlZCB0byBwcGMgYnVp bGRzLAo+ID4gPiA+IGFuZCBpZiBJIGxvb2sgYXQgdGhlIGFyY2gvcG93ZXJwYy9pbmNsdWRlL2Fz bS9tYWNoZGVwLmggZmlsZSBpbgo+ID4gPiA+IExpbnVzIHRyZWUgSSBkb24ndCBzZWUgYSBzdGF0 aWNfY2FsbC5oIGluY2x1ZGUgc28gSSdtIGd1ZXNzaW5nIHRoaXMKPiA+ID4gPiBpcyBhIC1uZXh0 IHRyZWUgZm9yIHBwYz8gIFNvbWV0aGluZyBlbHNlPwo+ID4gPiA+Cj4gPiA+ID4gV2l0aG91dCBr bm93aW5nIHRoZSBjb250ZXh0LCBpcyBhZGRpbmcgdGhlIHN0YXRpY19jYWxsLmggaW5jbHVkZSBp bgo+ID4gPiA+IGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmggaW50ZW50aW9uYWwg b3Igc2ltcGx5IGEgYml0IG9mCj4gPiA+ID4gaW5jbHVkZSBmaWxlIGNyZWVwPwo+ID4gPgo+ID4g PiBzdHJ1Y3QgbWFjaGRlcF9jYWxscyBpbiBhc20vbWFjaGRlcC5oIGlzIGZ1bGwgb2YgZnVuY3Rp b24gcG9pbnRlcnMgYW5kCj4gPiA+IEknbSB3b3JraW5nIG9uIGNvbnZlcnRpbmcgdGhhdCB0byBz dGF0aWNfY2FsbHMKPiA+ID4gKGh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9s aW51eHBwYy1kZXYvbGlzdC8/c2VyaWVzPTI2MDg3OAo+ID4gPiAmc3RhdGU9KikKPiA+ID4KPiA+ ID4gU28geWVzLCBhZGRpbmcgc3RhdGljX2NhbGwuaCBpbiBhc20vbWFjaGRlcC5oIGlzIGludGVu dGlvbmFsIGFuZCB0aGUKPiA+ID4gaXNzdWUgd2FzIGRldGVjdGVkIGJ5IENJIGJ1aWxkIHRlc3QK PiA+ID4gKGh0dHA6Ly9raXNza2IuZWxsZXJtYW4uaWQuYXUva2lzc2tiL2J1aWxkcmVzdWx0LzE0 NjI4MTAwLykKPiA+ID4KPiA+ID4gSSBzdWJtaXR0ZWQgdGhpcyBjaGFuZ2UgdG8geW91IGJlY2F1 c2UgZm9yIG1lIGl0IG1ha2Ugc2Vuc2UgdG8gbm90Cj4gPiA+IHJlLXVzZSBnbG9iYWJseSBkZWZp bmVkIHN0cnVjdCBuYW1lcyBpbiBsb2NhbCBDIGZpbGVzLCBhbmQgYW55Ym9keSBtYXkKPiA+ID4g ZW5jb3VudGVyIHRoZSBwcm9ibGVtIGFzIHNvb24gYXMgbGludXgvbm9kZS5oIGdldHMgaW5jbHVk ZWQgZGlyZWN0bHkKPiA+ID4gb3IgaW5kaXJlY3RseS4gQnV0IGlmIHlvdSBwcmVmZXIgSSBndWVz cyB0aGUgZml4IG1heSBiZSBtZXJnZWQgdGhyb3VnaAo+ID4gPiBwb3dlcnBjIHRyZWUgYXMgcGFy dCBvZiB0aGlzIHNlcmllcy4KPiA+Cj4gPiBZZXMsIHRoaXMgcGF0Y2ggc2hvdWxkIGdvIGluIHZp YSB0aGUgYXVkaXQgdHJlZSwgYW5kIHdoaWxlIEkgZG9uJ3QgaGF2ZSBhbgo+ID4gb2JqZWN0aW9u IHRvIHRoZSBwYXRjaCwgd2hlbmV2ZXIgSSBzZWUgYSBwYXRjaCB0byBmaXggYW4gaXNzdWUgdGhh dCBpcyBub3QgdmlzaWJsZSBpbgo+ID4gTGludXMnIHRyZWUgb3IgdGhlIGF1ZGl0IHRyZWUgaXQg cmFpc2VzIHNvbWUgcXVlc3Rpb25zLiAgSSB1c3VhbGx5IGhvcGUgdG8gc2VlIHRob3NlCj4gPiBx dWVzdGlvbnMgYW5zd2VyZWQgcHJvYWN0aXZlbHkgaW4gdGhlIGNvdmVyIGxldHRlciBhbmQvb3Ig cGF0Y2ggZGVzY3JpcHRpb24gYnV0Cj4gPiB0aGF0IHdhc24ndCB0aGUgY2FzZSBoZXJlIHNvIHlv dSBnZXQgdG8gcGxheSBhIGdhbWUgb2YgMjAgcXVlc3Rpb25zLgo+ID4KPiA+IFNwZWFraW5nIG9m IHdoaWNoLCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW4gYW5zd2VyIHRvIHRoZSAid2hlcmUgZG8g dGhlc2UKPiA+IGluY2x1ZGUgZmlsZSBjaGFuZ2VzIGxpdmU/IiBxdWVzdGlvbiwgaXMgaXMgdGhl IHBwYyAtbmV4dCB0cmVlLCBvciBhcmUgdGhleSBzdGlsbAo+ID4gdW5tZXJnZWQgYW5kIGp1c3Qg b24gdGhlIHBwYyBsaXN0Pwo+Cj4gSXQgaXMgc3RpbGwgYW4gUkZDIGluIHRoZSBwcGMgbGlzdC4K CkkganVzdCBtZXJnZWQgdGhpcyBpbnRvIGF1ZGl0L25leHQgYnV0IEkgcmV3cm90ZSBjaHVua3Mg b2YgdGhlIHN1YmplY3QKbGluZSBhbmQgY29tbWl0IGRlc2NyaXB0aW9uIGFzIHRoZSBidWlsZCBm YWlsdXJlIGlzbid0IHlldCAicmVhbCIgYXMKdGhlIG9mZmVuZGluZyBwYXRjaCBpcyBzdGlsbCBq dXN0IGEgUkZDLiAgSG9wZWZ1bGx5IGJlIG1lcmdpbmcgdGhpcwpwYXRjaCBpbnRvIGF1ZGl0L25l eHQgbm93IHdlJ2xsIHByZXZlbnQgZnV0dXJlIHByb2JsZW1zIGlmL3doZW4gdGhlCm90aGVyIHBh dGNoIGlzIG1lcmdlZC4KCi0tIApwYXVsIG1vb3JlCnd3dy5wYXVsLW1vb3JlLmNvbQoKCi0tCkxp bnV4LWF1ZGl0IG1haWxpbmcgbGlzdApMaW51eC1hdWRpdEByZWRoYXQuY29tCmh0dHBzOi8vbGlz dG1hbi5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vbGludXgtYXVkaXQ=