From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.28.91.67 with SMTP id p64csp3835466wmb; Tue, 20 Mar 2018 06:29:50 -0700 (PDT) X-Google-Smtp-Source: AG47ELvW1xdvWAV9b+SEJ4y/5y8acvVjTnqgO8wImMCd37sLO8REutye4iK0ksYqaq0s1S1kOT5A X-Received: by 10.55.64.22 with SMTP id n22mr23432290qka.186.1521552590359; Tue, 20 Mar 2018 06:29:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521552590; cv=none; d=google.com; s=arc-20160816; b=oBv3ElZA4BXRhJRKPHfx01pGrmsr39cJJ2+7UA8ehZAU8k8wHxIQVabRf3AFSpmjWJ Of8sf5DFtI0U3RRRhjbgwR8LMefWnkuKgw2jnmmd1BjQ8Xc2F6SfleKKPwDXW/jxf/pH Kdh7CoLwMT5Rduw8tCUW6uVGzVflct5QbrW8DtSpIG3kujqmjC4xQ+HpKZAcJ7K1jxpi QheVDR6ckyaXFxxI4iu6m831LoaTDvPvFH/4yp4y8ZJJbaky+ZCOyIT682KWLs7mTO4K ssztvDPUMviUxGmP2q1yqVp6IDAhwVCXOrFf5rnwL6fX27vP1oNDHxh/DX7xe+2fX7IJ QI0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:in-reply-to:content-disposition :mime-version:references:message-id:to:from:date :arc-authentication-results; bh=7gjoQSNw163tg464kRzpbftibXjwV42rCIjo2E3oy2w=; b=QofCjh0p2V++1W+zj4nmwdGxSKeb+3WaFRgpal6LwZBQd3CoBBUFj49t173iS7jPiR 9/Sjf5yNZMvOLtVlPPLAyC9F8u9bN7ic2+/qFlVlteo29hkDf9WKrsjBJblGTxfdIXCf GUFEql23pYoWiUsanCq+3Kf/wutvMEabRugvlrK/OnMSZcbO96XEkLniR/PTktiPkzna oR79QckYQj6UvTQmAkDaAB+WdiRvGZhYYyctu1Gn5FA1mgRp9h4XwTe2CJVwriiLFy+P pt04A5kc7sbLwty80PapVO9aHSmKbND9fjwhCmxoVQ+sDdP+Y5rlWosSI7wM3x41Miof XnUg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id s123si1191795qke.479.2018.03.20.06.29.50 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 20 Mar 2018 06:29:50 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:48535 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyHKn-00013v-IZ for alex.bennee@linaro.org; Tue, 20 Mar 2018 09:29:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyGO8-0004LL-16 for qemu-devel@nongnu.org; Tue, 20 Mar 2018 08:29:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eyGO6-0004vW-AV for qemu-devel@nongnu.org; Tue, 20 Mar 2018 08:29:12 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:37988 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eyGNy-0004qu-8f; Tue, 20 Mar 2018 08:29:02 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EBF1F412A2A0; Tue, 20 Mar 2018 12:28:50 +0000 (UTC) Received: from redhat.com (ovpn-121-0.rdu2.redhat.com [10.10.121.0]) by smtp.corp.redhat.com (Postfix) with ESMTP id 34C972024CA6; Tue, 20 Mar 2018 12:28:42 +0000 (UTC) Date: Tue, 20 Mar 2018 14:28:42 +0200 From: "Michael S. Tsirkin" To: Daniel =?iso-8859-1?Q?P=2E_Berrang=E9?= Message-ID: <20180320142756-mutt-send-email-mst@kernel.org> References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> <20180320094406.GD4530@redhat.com> <20180320141107-mutt-send-email-mst@kernel.org> <20180320121841.GN4530@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <20180320121841.GN4530@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 20 Mar 2018 12:28:51 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 20 Mar 2018 12:28:51 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'mst@redhat.com' RCPT:'' Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 X-Mailman-Approved-At: Tue, 20 Mar 2018 09:27:42 -0400 Subject: Re: [Qemu-devel] [PATCH] qemu: include generated files with <> and not "" X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Dmitry Fleytman , sheepdog@lists.wpkg.org, Ronnie Sahlberg , Li Zhijian , David Hildenbrand , Jeff Cody , Zhang Chen , Mark Cave-Ayland , qemu-devel@nongnu.org, "Richard W.M. Jones" , Keith Busch , Max Filippov , Gerd Hoffmann , "Edgar E. Iglesias" , Jiri Pirko , Subbaraya Sundeep , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia , zhanghailiang , Ben Warren , Marcel Apfelbaum , Yongbok Kim , Markus Armbruster , Stefan Berger , Christian Borntraeger , kvm@vger.kernel.org, =?iso-8859-1?Q?Herv=E9?= Poussineau , Shannon Zhao , Anthony Perard , Liu Yuan , David Gibson , Jason Wang , Artyom Tarasenko , Thomas Huth , Riku Voipio , Fam Zheng , Eduardo Habkost , Corey Minyard , Amit Shah , Pavel Dovgalyuk , Stefan Weil , Xie Changlong , Alistair Francis , Peter Lieven , "Dr. David Alan Gilbert" , Fabien Chouteau , Greg Kurz , =?iso-8859-1?Q?Marc-Andr=E9?= Lureau , Alex Williamson , qemu-arm@nongnu.org, Peter Chubb , Yuval Shaia , Stefan Hajnoczi , Paolo Bonzini , xen-devel@lists.xenproject.org, John Snow , Richard Henderson , Kevin Wolf , Alexander Graf , qemu-block@nongnu.org, Peter Crosthwaite , Hitoshi Mitake , Wen Congyang , qemu-s390x@nongnu.org, Cornelia Huck , Laurent Vivier , Juan Quintela , Max Reitz , Michael Walle , qemu-ppc@nongnu.org, Andreas =?iso-8859-1?Q?F=E4rber?= , Igor Mammedov , Hannes Reinecke , Aurelien Jarno , Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= Errors-To: qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-devel" X-TUID: +gRWia4ZLwOi On Tue, Mar 20, 2018 at 12:18:41PM +0000, Daniel P. Berrang=E9 wrote: > On Tue, Mar 20, 2018 at 02:12:24PM +0200, Michael S. Tsirkin wrote: > > On Tue, Mar 20, 2018 at 09:44:06AM +0000, Daniel P. Berrang=E9 wrote: > > > On Tue, Mar 20, 2018 at 09:58:23AM +0100, Laurent Vivier wrote: > > > > Le 20/03/2018 =E0 02:54, Michael S. Tsirkin a =E9crit=A0: > > > > > QEMU coding style at the moment asks for all non-system > > > > > include files to be used with #include "foo.h". > > > > > However this rule actually does not make sense and > > > > > creates issues for when the included file is generated. > > > >=20 > > > > If you change that, we can have issue when a system include has t= he same > > > > name as our local include. With "", system header are taken= first. > > >=20 > > > > > In C, include "file" means look in current directory, > > > > > then on include search path. Current directory here > > > > > means the source file directory. > > > > > By comparison include means look on include search path. > > > >=20 > > > > Not exactly, there is the notion of "system header" too. > > > >=20 > > > > https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html > > > >=20 > > > > #include > > > > This variant is used for system header files. It searches for a f= ile > > > > named file in a standard list of system directories. You can prep= end > > > > directories to this list with the -I option (see Invocation). > > > >=20 > > > > #include "file" > > > > This variant is used for header files of your own program. It sea= rches > > > > for a file named file first in the directory containing the curre= nt > > > > file, then in the quote directories and then the same directories= used > > > > for . You can prepend directories to the list of quote dire= ctories > > > > with the -iquote option. > > > >=20 > > > > > As generated files are not in the search directory (unless the = build > > > > > directory happens to match the source directory), it does not m= ake sense > > > > > to include them with "" - doing so is merely more work for prep= rocessor > > > > > and a source or errors if a stale file happens to exist in the = source > > > > > directory. > > > >=20 > > > > I agree there is a problem with stale files. But linux, for insta= nce, > > > > asks for a "make mrproper" to avoid this. > > >=20 > > > We can follow what autoconf does, and add a check to configure to s= ee if > > > there are generated files left in the source dir, when configuring = with > > > builddir !=3D srcdir, and exit with error, telling user to clean th= eir > > > src dir first. > > >=20 > > > > > This changes include directives for all generated files, across= the > > > > > tree. The idea is to avoid sending a huge amount of email. But= when > > > > > merging, the changes will be split with one commit per file, e.= g. for > > > > > ease of bisect in case of build failures, and to ease merging. > > > > >=20 > > > > > Note that should some generated files be missed by this tree-wi= de > > > > > refactoring, it isn't a big deal - this merely maintains the st= atus quo, > > > > > and this can be addressed by a separate patch on top. > > > > >=20 > > > > > Signed-off-by: Michael S. Tsirkin > > > >=20 > > > > I think your idea conflicts with what Markus has started to do: > > >=20 > > > Yes, I don't think we should revert what Markus started. Both way= s of > > > referencing QEMU headers have downsides, but I think "..." has fewe= r > > > downsides that "<....">. > >=20 > > Could you please explain what the advantage of "" is? > > It seems to be gone since we moved headers away from > > source. >=20 > We moved *some* headers into the include/ directory tree. >=20 > I still count 650+ headers which are alongside the .c files. >=20 > Regards, > Daniel So for these, we should use "". None of these are generated files though= . > --=20 > |: https://berrange.com -o- https://www.flickr.com/photos/dberr= ange :| > |: https://libvirt.org -o- https://fstop138.berrange= .com :| > |: https://entangle-photo.org -o- https://www.instagram.com/dberr= ange :| From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH] qemu: include generated files with <> and not "" Date: Tue, 20 Mar 2018 14:28:42 +0200 Message-ID: <20180320142756-mutt-send-email-mst@kernel.org> References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> <20180320094406.GD4530@redhat.com> <20180320141107-mutt-send-email-mst@kernel.org> <20180320121841.GN4530@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1eyGNp-0002zp-E5 for xen-devel@lists.xenproject.org; Tue, 20 Mar 2018 12:28:53 +0000 Content-Disposition: inline In-Reply-To: <20180320121841.GN4530@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Daniel =?iso-8859-1?Q?P=2E_Berrang=E9?= Cc: Peter Maydell , Dmitry Fleytman , sheepdog@lists.wpkg.org, Ronnie Sahlberg , Li Zhijian , David Hildenbrand , Jeff Cody , Zhang Chen , Mark Cave-Ayland , qemu-devel@nongnu.org, "Richard W.M. Jones" , Keith Busch , Max Filippov , Gerd Hoffmann , "Edgar E. Iglesias" , Jiri Pirko , Subbaraya Sundeep , Eric Blake , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia , zhanghailiang List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMTI6MTg6NDFQTSArMDAwMCwgRGFuaWVsIFAuIEJlcnJh bmfDqSB3cm90ZToKPiBPbiBUdWUsIE1hciAyMCwgMjAxOCBhdCAwMjoxMjoyNFBNICswMjAwLCBN aWNoYWVsIFMuIFRzaXJraW4gd3JvdGU6Cj4gPiBPbiBUdWUsIE1hciAyMCwgMjAxOCBhdCAwOTo0 NDowNkFNICswMDAwLCBEYW5pZWwgUC4gQmVycmFuZ8OpIHdyb3RlOgo+ID4gPiBPbiBUdWUsIE1h ciAyMCwgMjAxOCBhdCAwOTo1ODoyM0FNICswMTAwLCBMYXVyZW50IFZpdmllciB3cm90ZToKPiA+ ID4gPiBMZSAyMC8wMy8yMDE4IMOgIDAyOjU0LCBNaWNoYWVsIFMuIFRzaXJraW4gYSDDqWNyaXTC oDoKPiA+ID4gPiA+IFFFTVUgY29kaW5nIHN0eWxlIGF0IHRoZSBtb21lbnQgYXNrcyBmb3IgYWxs IG5vbi1zeXN0ZW0KPiA+ID4gPiA+IGluY2x1ZGUgZmlsZXMgdG8gYmUgdXNlZCB3aXRoICNpbmNs dWRlICJmb28uaCIuCj4gPiA+ID4gPiBIb3dldmVyIHRoaXMgcnVsZSBhY3R1YWxseSBkb2VzIG5v dCBtYWtlIHNlbnNlIGFuZAo+ID4gPiA+ID4gY3JlYXRlcyBpc3N1ZXMgZm9yIHdoZW4gdGhlIGlu Y2x1ZGVkIGZpbGUgaXMgZ2VuZXJhdGVkLgo+ID4gPiA+IAo+ID4gPiA+IElmIHlvdSBjaGFuZ2Ug dGhhdCwgd2UgY2FuIGhhdmUgaXNzdWUgd2hlbiBhIHN5c3RlbSBpbmNsdWRlIGhhcyB0aGUgc2Ft ZQo+ID4gPiA+IG5hbWUgYXMgb3VyIGxvY2FsIGluY2x1ZGUuIFdpdGggIjxGSUxFPiIsIHN5c3Rl bSBoZWFkZXIgYXJlIHRha2VuIGZpcnN0Lgo+ID4gPiAKPiA+ID4gPiA+IEluIEMsIGluY2x1ZGUg ImZpbGUiIG1lYW5zIGxvb2sgaW4gY3VycmVudCBkaXJlY3RvcnksCj4gPiA+ID4gPiB0aGVuIG9u IGluY2x1ZGUgc2VhcmNoIHBhdGguIEN1cnJlbnQgZGlyZWN0b3J5IGhlcmUKPiA+ID4gPiA+IG1l YW5zIHRoZSBzb3VyY2UgZmlsZSBkaXJlY3RvcnkuCj4gPiA+ID4gPiBCeSBjb21wYXJpc29uIGlu Y2x1ZGUgPGZpbGU+IG1lYW5zIGxvb2sgb24gaW5jbHVkZSBzZWFyY2ggcGF0aC4KPiA+ID4gPiAK PiA+ID4gPiBOb3QgZXhhY3RseSwgdGhlcmUgaXMgdGhlIG5vdGlvbiBvZiAic3lzdGVtIGhlYWRl ciIgdG9vLgo+ID4gPiA+IAo+ID4gPiA+IGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9j cHAvSW5jbHVkZS1TeW50YXguaHRtbAo+ID4gPiA+IAo+ID4gPiA+ICNpbmNsdWRlIDxmaWxlPgo+ ID4gPiA+IFRoaXMgdmFyaWFudCBpcyB1c2VkIGZvciBzeXN0ZW0gaGVhZGVyIGZpbGVzLiBJdCBz ZWFyY2hlcyBmb3IgYSBmaWxlCj4gPiA+ID4gbmFtZWQgZmlsZSBpbiBhIHN0YW5kYXJkIGxpc3Qg b2Ygc3lzdGVtIGRpcmVjdG9yaWVzLiBZb3UgY2FuIHByZXBlbmQKPiA+ID4gPiBkaXJlY3Rvcmll cyB0byB0aGlzIGxpc3Qgd2l0aCB0aGUgLUkgb3B0aW9uIChzZWUgSW52b2NhdGlvbikuCj4gPiA+ ID4gCj4gPiA+ID4gI2luY2x1ZGUgImZpbGUiCj4gPiA+ID4gVGhpcyB2YXJpYW50IGlzIHVzZWQg Zm9yIGhlYWRlciBmaWxlcyBvZiB5b3VyIG93biBwcm9ncmFtLiBJdCBzZWFyY2hlcwo+ID4gPiA+ IGZvciBhIGZpbGUgbmFtZWQgZmlsZSBmaXJzdCBpbiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcg dGhlIGN1cnJlbnQKPiA+ID4gPiBmaWxlLCB0aGVuIGluIHRoZSBxdW90ZSBkaXJlY3RvcmllcyBh bmQgdGhlbiB0aGUgc2FtZSBkaXJlY3RvcmllcyB1c2VkCj4gPiA+ID4gZm9yIDxmaWxlPi4gWW91 IGNhbiBwcmVwZW5kIGRpcmVjdG9yaWVzIHRvIHRoZSBsaXN0IG9mIHF1b3RlIGRpcmVjdG9yaWVz Cj4gPiA+ID4gd2l0aCB0aGUgLWlxdW90ZSBvcHRpb24uCj4gPiA+ID4gCj4gPiA+ID4gPiBBcyBn ZW5lcmF0ZWQgZmlsZXMgYXJlIG5vdCBpbiB0aGUgc2VhcmNoIGRpcmVjdG9yeSAodW5sZXNzIHRo ZSBidWlsZAo+ID4gPiA+ID4gZGlyZWN0b3J5IGhhcHBlbnMgdG8gbWF0Y2ggdGhlIHNvdXJjZSBk aXJlY3RvcnkpLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlCj4gPiA+ID4gPiB0byBpbmNsdWRlIHRo ZW0gd2l0aCAiIiAtIGRvaW5nIHNvIGlzIG1lcmVseSBtb3JlIHdvcmsgZm9yIHByZXByb2Nlc3Nv cgo+ID4gPiA+ID4gYW5kIGEgc291cmNlIG9yIGVycm9ycyBpZiBhIHN0YWxlIGZpbGUgaGFwcGVu cyB0byBleGlzdCBpbiB0aGUgc291cmNlCj4gPiA+ID4gPiBkaXJlY3RvcnkuCj4gPiA+ID4gCj4g PiA+ID4gSSBhZ3JlZSB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCBzdGFsZSBmaWxlcy4gQnV0IGxp bnV4LCBmb3IgaW5zdGFuY2UsCj4gPiA+ID4gYXNrcyBmb3IgYSAibWFrZSBtcnByb3BlciIgdG8g YXZvaWQgdGhpcy4KPiA+ID4gCj4gPiA+IFdlIGNhbiBmb2xsb3cgd2hhdCBhdXRvY29uZiBkb2Vz LCBhbmQgYWRkIGEgY2hlY2sgdG8gY29uZmlndXJlIHRvIHNlZSBpZgo+ID4gPiB0aGVyZSBhcmUg Z2VuZXJhdGVkIGZpbGVzIGxlZnQgaW4gdGhlIHNvdXJjZSBkaXIsIHdoZW4gY29uZmlndXJpbmcg d2l0aAo+ID4gPiBidWlsZGRpciAhPSBzcmNkaXIsIGFuZCBleGl0IHdpdGggZXJyb3IsIHRlbGxp bmcgdXNlciB0byBjbGVhbiB0aGVpcgo+ID4gPiBzcmMgZGlyIGZpcnN0Lgo+ID4gPiAKPiA+ID4g PiA+IFRoaXMgY2hhbmdlcyBpbmNsdWRlIGRpcmVjdGl2ZXMgZm9yIGFsbCBnZW5lcmF0ZWQgZmls ZXMsIGFjcm9zcyB0aGUKPiA+ID4gPiA+IHRyZWUuIFRoZSBpZGVhIGlzIHRvIGF2b2lkIHNlbmRp bmcgYSBodWdlIGFtb3VudCBvZiBlbWFpbC4gIEJ1dCB3aGVuCj4gPiA+ID4gPiBtZXJnaW5nLCB0 aGUgY2hhbmdlcyB3aWxsIGJlIHNwbGl0IHdpdGggb25lIGNvbW1pdCBwZXIgZmlsZSwgZS5nLiBm b3IKPiA+ID4gPiA+IGVhc2Ugb2YgYmlzZWN0IGluIGNhc2Ugb2YgYnVpbGQgZmFpbHVyZXMsIGFu ZCB0byBlYXNlIG1lcmdpbmcuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IE5vdGUgdGhhdCBzaG91bGQg c29tZSBnZW5lcmF0ZWQgZmlsZXMgYmUgbWlzc2VkIGJ5IHRoaXMgdHJlZS13aWRlCj4gPiA+ID4g PiByZWZhY3RvcmluZywgaXQgaXNuJ3QgYSBiaWcgZGVhbCAtIHRoaXMgbWVyZWx5IG1haW50YWlu cyB0aGUgc3RhdHVzIHF1bywKPiA+ID4gPiA+IGFuZCB0aGlzIGNhbiBiZSBhZGRyZXNzZWQgYnkg YSBzZXBhcmF0ZSBwYXRjaCBvbiB0b3AuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNpZ25lZC1vZmYt Ynk6IE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+Cj4gPiA+ID4gCj4gPiA+ID4g SSB0aGluayB5b3VyIGlkZWEgY29uZmxpY3RzIHdpdGggd2hhdCBNYXJrdXMgaGFzIHN0YXJ0ZWQg dG8gZG86Cj4gPiA+IAo+ID4gPiBZZXMsIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIHJldmVydCB3 aGF0IE1hcmt1cyBzdGFydGVkLiAgIEJvdGggd2F5cyBvZgo+ID4gPiByZWZlcmVuY2luZyBRRU1V IGhlYWRlcnMgaGF2ZSBkb3duc2lkZXMsIGJ1dCBJIHRoaW5rICIuLi4iIGhhcyBmZXdlcgo+ID4g PiBkb3duc2lkZXMgdGhhdCAiPC4uLi4iPi4KPiA+IAo+ID4gQ291bGQgeW91IHBsZWFzZSBleHBs YWluIHdoYXQgdGhlIGFkdmFudGFnZSBvZiAiIiBpcz8KPiA+IEl0IHNlZW1zIHRvIGJlIGdvbmUg c2luY2Ugd2UgbW92ZWQgaGVhZGVycyBhd2F5IGZyb20KPiA+IHNvdXJjZS4KPiAKPiBXZSBtb3Zl ZCAqc29tZSogaGVhZGVycyBpbnRvIHRoZSBpbmNsdWRlLyBkaXJlY3RvcnkgdHJlZS4KPiAKPiBJ IHN0aWxsIGNvdW50IDY1MCsgaGVhZGVycyB3aGljaCBhcmUgYWxvbmdzaWRlIHRoZSAuYyBmaWxl cy4KPiAKPiBSZWdhcmRzLAo+IERhbmllbAoKU28gZm9yIHRoZXNlLCB3ZSBzaG91bGQgdXNlICIi LiAgTm9uZSBvZiB0aGVzZSBhcmUgZ2VuZXJhdGVkIGZpbGVzIHRob3VnaC4KCj4gLS0gCj4gfDog aHR0cHM6Ly9iZXJyYW5nZS5jb20gICAgICAtby0gICAgaHR0cHM6Ly93d3cuZmxpY2tyLmNvbS9w aG90b3MvZGJlcnJhbmdlIDp8Cj4gfDogaHR0cHM6Ly9saWJ2aXJ0Lm9yZyAgICAgICAgIC1vLSAg ICAgICAgICAgIGh0dHBzOi8vZnN0b3AxMzguYmVycmFuZ2UuY29tIDp8Cj4gfDogaHR0cHM6Ly9l bnRhbmdsZS1waG90by5vcmcgICAgLW8tICAgIGh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vZGJl cnJhbmdlIDp8CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs