From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH 0/2] MMIO emulation fixes Date: Fri, 10 Aug 2018 17:37:24 +0100 Message-ID: <92ca69e5-98b1-61e4-817a-3868f829471a@citrix.com> References: <20180810103714.5112-1-paul.durrant@citrix.com> <5B6D7E9C02000078001DCF26@prv1-mh.provo.novell.com> <5B6D816402000078001DCF55@prv1-mh.provo.novell.com> <990684b4ff644494bdf006a8c9f69bf5@AMSPEX02CL03.citrite.net> <5B6D86F302000078001DCF85@prv1-mh.provo.novell.com> <5B6DAF9F02000078001DD040@prv1-mh.provo.novell.com> <5B6DB69D02000078001DD06A@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1foAQT-00084T-Td for xen-devel@lists.xenproject.org; Fri, 10 Aug 2018 16:38:09 +0000 In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: George Dunlap , Jan Beulich , Paul Durrant , George Dunlap Cc: xen-devel List-Id: xen-devel@lists.xenproject.org T24gMTAvMDgvMTggMTc6MzAsIEdlb3JnZSBEdW5sYXAgd3JvdGU6Cj4gT24gMDgvMTAvMjAxOCAw NTowMCBQTSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4+IE9uIDEwLjA4LjE4IGF0IDE3OjM1LCA8 UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+IHdyb3RlOgo+Pj4+ICAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+Pj4+IEZyb206IEphbiBCZXVsaWNoIFttYWlsdG86SkJldWxpY2hAc3VzZS5jb21d Cj4+Pj4gU2VudDogMTAgQXVndXN0IDIwMTggMTY6MzEKPj4+PiBUbzogUGF1bCBEdXJyYW50IDxQ YXVsLkR1cnJhbnRAY2l0cml4LmNvbT4KPj4+PiBDYzogQW5kcmV3IENvb3BlciA8QW5kcmV3LkNv b3BlcjNAY2l0cml4LmNvbT47IHhlbi1kZXZlbCA8eGVuLQo+Pj4+IGRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnPgo+Pj4+IFN1YmplY3Q6IFJFOiBbWGVuLWRldmVsXSBbUEFUQ0ggMC8yXSBNTUlP IGVtdWxhdGlvbiBmaXhlcwo+Pj4+Cj4+Pj4+Pj4gT24gMTAuMDguMTggYXQgMTc6MDgsIDxQYXVs LkR1cnJhbnRAY2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4+PiAgLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0KPj4+Pj4+IEZyb206IEFuZHJldyBDb29wZXIKPj4+Pj4+IFNlbnQ6IDEwIEF1Z3VzdCAy MDE4IDEzOjU2Cj4+Pj4+PiBUbzogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNv bT47ICdKYW4gQmV1bGljaCcKPj4+Pj4+IDxKQmV1bGljaEBzdXNlLmNvbT4KPj4+Pj4+IENjOiB4 ZW4tZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4KPj4+Pj4+IFN1YmplY3Q6 IFJlOiBbWGVuLWRldmVsXSBbUEFUQ0ggMC8yXSBNTUlPIGVtdWxhdGlvbiBmaXhlcwo+Pj4+Pj4K Pj4+Pj4+IE9uIDEwLzA4LzE4IDEzOjQzLCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4+Pj4+Pj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4+Pj4+IEZyb206IEphbiBCZXVsaWNoIFttYWls dG86SkJldWxpY2hAc3VzZS5jb21dCj4+Pj4+Pj4+IFNlbnQ6IDEwIEF1Z3VzdCAyMDE4IDEzOjM3 Cj4+Pj4+Pj4+IFRvOiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPgo+Pj4+ Pj4+PiBDYzogeGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc+Cj4+Pj4+ Pj4+IFN1YmplY3Q6IFJFOiBbWGVuLWRldmVsXSBbUEFUQ0ggMC8yXSBNTUlPIGVtdWxhdGlvbiBm aXhlcwo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBPbiAxMC4wOC4xOCBhdCAxNDoyMiwgPFBhdWwuRHVy cmFudEBjaXRyaXguY29tPiB3cm90ZToKPj4+Pj4+Pj4+PiAgLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0KPj4+Pj4+Pj4+PiBGcm9tOiBKYW4gQmV1bGljaCBbbWFpbHRvOkpCZXVsaWNoQHN1c2Uu Y29tXQo+Pj4+Pj4+Pj4+IFNlbnQ6IDEwIEF1Z3VzdCAyMDE4IDEzOjEzCj4+Pj4+Pj4+Pj4gVG86 IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4+Pj4+Pj4+Pj4gQ2M6IHhl bi1kZXZlbCA8eGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnPgo+Pj4+Pj4+Pj4+IFN1Ympl Y3Q6IFJFOiBbWGVuLWRldmVsXSBbUEFUQ0ggMC8yXSBNTUlPIGVtdWxhdGlvbiBmaXhlcwo+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gT24gMTAuMDguMTggYXQgMTQ6MDgsIDxQYXVsLkR1cnJhbnRA Y2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4+Pj4+Pj4+PiAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0KPj4+Pj4+Pj4+Pj4+IEZyb206IEphbiBCZXVsaWNoIFttYWlsdG86SkJldWxpY2hAc3VzZS5j b21dCj4+Pj4+Pj4+Pj4+PiBTZW50OiAxMCBBdWd1c3QgMjAxOCAxMzowMgo+Pj4+Pj4+Pj4+Pj4g VG86IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4+Pj4+Pj4+Pj4+PiBD YzogeGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc+Cj4+Pj4+Pj4+Pj4+ PiBTdWJqZWN0OiBSZTogW1hlbi1kZXZlbF0gW1BBVENIIDAvMl0gTU1JTyBlbXVsYXRpb24gZml4 ZXMKPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+PiBPbiAxMC4wOC4xOCBhdCAxMjozNywgPHBh dWwuZHVycmFudEBjaXRyaXguY29tPiB3cm90ZToKPj4+Pj4+Pj4+Pj4+PiBUaGVzZSBhcmUgcHJv YmFibHkgYm90aCBjYW5kaWRhdGVzIGZvciBiYWNrLXBvcnQuCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4+Pj4+PiBQYXVsIER1cnJhbnQgKDIpOgo+Pj4+Pj4+Pj4+Pj4+ICAgeDg2L2h2bS9pb3JlcTog TU1JTyByYW5nZSBjaGVja2luZyBjb21wbGV0ZWx5IGlnbm9yZXMKPj4+Pj4+IGRpcmVjdGlvbgo+ Pj4+Pj4+PiBmbGFnCj4+Pj4+Pj4+Pj4+Pj4gICB4ODYvaHZtL2VtdWxhdGU6IG1ha2Ugc3VyZSBy ZXAgSS9PIGVtdWxhdGlvbiBkb2VzIG5vdCBjcm9zcwo+Pj4+Pj4gR0ZOCj4+Pj4+Pj4+Pj4+Pj4g ICAgIGJvdW5kYXJpZXMKPj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+ICB4ZW4vYXJjaC94ODYv aHZtL2VtdWxhdGUuYyB8IDE3ICsrKysrKysrKysrKysrKystCj4+Pj4+Pj4+Pj4+Pj4gIHhlbi9h cmNoL3g4Ni9odm0vaW9yZXEuYyAgIHwgMTUgKysrKysrKysrKy0tLS0tCj4+Pj4+Pj4+Pj4+Pj4g IDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4+Pj4+ Pj4+Pj4+IEkgdGFrZSBpdCB0aGlzIGlzbid0IHlldCB3aGF0IHdlJ3ZlIHRhbGtlZCBhYm91dCB5 ZXN0ZXJkYXkgb24gaXJjPwo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gVGhpcyBpcyB0aGUgYmFu ZC1haWQgZml4LiBJIGNhbiBub3cgc2hvdyBjb3JyZWN0IGhhbmRsaW5nIG9mIGEgcmVwCj4+Pj4g bW92Cj4+Pj4+Pj4+Pj4+IHdhbGtpbmcgb2ZmIE1NSU8gaW50byBSQU0uCj4+Pj4+Pj4+Pj4gQnV0 IHRoYXQncyBub3QgdGhlIHByb2JsZW0gd2UncmUgaGF2aW5nLiBJbiBvdXIgY2FzZSB0aGUgYmFk Cj4+Pj4gYmVoYXZpb3IKPj4+Pj4+Pj4+PiBpcyB3aXRoIGEgc2luZ2xlIE1PVi4gVGhhdCdzIHdo eSBJIGhhZCBhc3N1bWVkIHRoYXQgeW91ciBwbGFuIHRvCj4+Pj4gZmlkZGxlCj4+Pj4+Pj4+Pj4g d2l0aCBudWxsX2hhbmRsZXIgd291bGQgaGVscCBpbiBvdXIgY2FzZSBhcyB3ZWxsLCB3aGlsZSB0 aGlzIHNlcmllcwo+Pj4+Pj4gY2xlYXJseQo+Pj4+Pj4+Pj4+IHdvbid0IChhZmFpY3QpLgo+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+PiBPaCwgSSBzZWUuIEEgc2luZ2xlIE1PViBzcGFubmluZyBNTUlPIGFu ZCBSQU0gaGFzIHVuZGVmaW5lZAo+Pj4+Pj4gYmVoYXZpb3VyCj4+Pj4+Pj4+IHRob3VnaAo+Pj4+ Pj4+Pj4gYXMgSSB1bmRlcnN0YW5kIGl0LiBBbSBJIGluY29ycmVjdD8KPj4+Pj4+Pj4gSSdtIG5v dCBhd2FyZSBvZiBTRE0gb3IgUE0gc2F5aW5nIGFueXRoaW5nIGxpa2UgdGhpcy4gQW55d2F5LCB0 aGUKPj4+Pj4+Pj4gc3BlY2lmaWMgY2FzZSB3aGVyZSB0aGlzIGlzIGJlaW5nIG9ic2VydmVkIGFz IGFuIGlzc3VlIGlzIHdoZW4KPj4+Pj4+Pj4gYWNjZXNzaW5nIHRoZSBsYXN0IGZldyBieXRlcyBv ZiBhIG5vcm1hbCBSQU0gcGFnZSBmb2xsb3dlZCBieSBhCj4+Pj4+Pj4+IGJhbGxvb25lZCBvdXQg b25lLiBUaGUgYmFsbG9vbiBkcml2ZXIgZG9lc24ndCByZW1vdmUgdGhlIHZpcnR1YWwKPj4+Pj4+ Pj4gbWFwcGluZyBvZiBzdWNoIHBhZ2VzIChwcmVzdW1hYmx5IGluIG9yZGVyIHRvIG5vdCBzaGF0 dGVyIHN1cGVyCj4+Pj4+Pj4+IHBhZ2VzKTsgb2JzZXJ2YXRpb24gaXMgd2l0aCB0aGUgb2xkIFhl bm9MaW51eCBvbmUsIGJ1dCBmcm9tIGNvZGUKPj4+Pj4+Pj4gaW5zcGVjdGlvbiB0aGUgdXBzdHJl YW0gb25lIGJlaGF2ZXMgdGhlIHNhbWUuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFVubGVzcyB3ZSB3YW50 IHRvIGNoYW5nZSB0aGUgYmFsbG9vbiBkcml2ZXIncyBiZWhhdmlvciwgYXQgbGVhc3QKPj4+Pj4+ Pj4gdGhpcyBzcGVjaWZpYyBjYXNlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgaGF2aW5nIGRlZmlu ZWQgYmVoYXZpb3IsCj4+Pj4+Pj4+IEkgdGhpbmsuCj4+Pj4+Pj4+Cj4+Pj4+Pj4gT2suIEknbGwg c2VlIHdoYXQgSSBjYW4gZG8uCj4+Pj4+PiBJdCBpcyBhIHNvZnR3YXJlIGVycm9yIHRvIHRyeSBh bmQgY3Jvc3MgYm91bmRhcmllcy4gIE1vZGVybiBwcm9jZXNzb3JzCj4+Pj4+PiBkbyB0aGVpciBi ZXN0IHRvIHRyeSBhbmQgY2F1c2UgdGhlIGNvcnJlY3QgYmVoYXZpb3VyIHRvIG9jY3VyLCBhbGJl aXQKPj4+Pj4+IHdpdGggYSBtYXNzaXZlIGRpc2NsYWltZXIgYWJvdXQgdGhlIHBlcmZvcm1hbmNl IGhpdC4gIE9sZGVyIHByb2Nlc3NvcnMKPj4+Pj4+IGRpZG4ndCBjb3BlLgo+Pj4+Pj4KPj4+Pj4+ IEFzIGZhciBhcyBJJ20gY29uY2VybmVkLCBpdHMgZmluZSB0byB0ZXJtaW5hdGUgYSBlbXVsYXRp b24gd2hpY2ggY3Jvc3Nlcwo+Pj4+Pj4gYSBib3VuZGFyeSB3aXRoIHRoZSBudWxsIG9wcy4KPj4+ Pj4gQWxhcyB3ZSBuZXZlciBldmVuIGdldCBhcyBmYXIgYXMgdGhlIEkvTyBoYW5kbGVycyBpbiBz b21lIGNpcmN1bXN0YW5jZXMuLi4KPj4+Pj4KPj4+Pj4gSSBqdXN0IHNldCB1cCBhIHZhcmlhbnQg b2YgYW4gWFRGIHRlc3QgZG9pbmcgYSBiYWNrd2FyZHMgcmVwIG1vdnNkIGludG8gYQo+Pj4+PiB3 ZWxsIGFsaWduZWQgc3RhY2sgYnVmZmVyIHdoZXJlIHNvdXJjZSBidWZmZXIgc3RhcnRzIDEgYnl0 ZSBiZWZvcmUgYQo+Pj4+IGJvdW5kYXJ5Cj4+Pj4+IGJldHdlZW4gUkFNIGFuZCBNTUlPLiBUaGUg Y29kZSBpbiBodm1lbXVsX3JlcF9tb3ZzKCkgKHJpZ2h0bHkpCj4+Pj4gZGV0ZWN0cyB0aGF0Cj4+ Pj4+IGJvdGggdGhlIHNvdXJjZSBhbmQgZGVzdCBvZiB0aGUgaW5pdGlhbCByZXAgYXJlIFJBTSwg c2tpcHMgb3ZlciB0aGUgSS9PCj4+Pj4+IGVtdWxhdGlvbiBjYWxscywgYW5kIHRoZW4gZmFpbHMg d2hlbiB0aGUgaHZtX2NvcHlfZnJvbV9ndWVzdF9waHlzKCkKPj4+Pj4gKHVuc3VycHJpc2luZ2x5 KSBmYWlscyB0byBncmFiIHRoZSA4IGJ5dGVzIGZvciB0aGUgaW5pdGlhbCByZXAuCj4+Pj4+IFNv LCBhbnkgbG9naWMgd2UgYWRkIHRvIGRlYWwgd2l0aCBoYW5kbGluZyBwYWdlIHNwYW5uaW5nIG9w cyBpcyBnb2luZyB0bwo+Pj4+PiBoYXZlIHRvIGdvIGluIGF0IHRoZSB0b3AgbGV2ZWwgb2YgaW5z dHJ1Y3Rpb24gZW11bGF0aW9uLi4uIHdoaWNoIEkgZmVhciBpcwo+Pj4+PiBnb2luZyB0byBiZSBx dWl0ZSBhIG1ham9yIGNoYW5nZSBhbmQgbm90IHNvbWV0aGluZyB0aGF0J3MgZ29pbmcgdG8gYmUg ZWFzeQo+Pj4+IHRvCj4+Pj4+IGJhY2stcG9ydC4KPj4+PiBXZWxsLCB3YXNuJ3QgaXQgY2xlYXIg ZnJvbSB0aGUgYmVnaW5uaW5nIHRoYXQgYSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvbwo+Pj4+IGlu dmFzaXZlIHRvIGJhY2twb3J0PyBBbmQgd2Fzbid0IGl0IGZvciB0aGF0IHJlYXNvbiB0aGF0IHlv dSBpbnRlbmRlZAo+Pj4+IHRvIGFkZCBhIHNtYWxsIGhhY2sgZmlyc3QsIHRvIGRlYWwgd2l0aCBq dXN0IHRoZSBjYXNlKHMpIHRoYXQgd2UgY3VycmVudGx5Cj4+Pj4gaGF2ZSBpc3N1ZXMgd2l0aD8K Pj4+IFdlbGwsIGdpdmVuIHRoYXQgSSBtaXN0YWtlbmx5IHVuZGVyc3Rvb2QgeW91IHdlcmUgaGl0 dGluZyB0aGUgc2FtZSByZXAgaXNzdWUgCj4+PiB0aGF0IEkgd2FzLCBJIHRob3VnaHQgSSBjb3Vs ZCBkZWFsIHdpdGggaXQgaW4gYSByZWFzb25hYmx5IHN0cmFpZ2h0Zm9yd2FyZCAKPj4+IHdheS4g TWF5YmUgSSBjYW4gc3RpbGwgZG8gYSBwb2ludCBmaXggZm9yIHdoYXQgeW91IGFyZSBoaXR0aW5n IHRob3VnaC4gV2hhdCAKPj4+IHByZWNpc2VseSBhcmUgeW91IGhpdHRpbmc/IEFsd2F5cyBhIHNp bmdsZSBNT1Y/IEFuZCBhbHdheXMgZnJvbSBhIHBhZ2UgCj4+PiBzcGFubmluZyBzb3VyY2UgdG8g YSB3ZWxsIGFsaWduZWQgZGVzdD8gT3IgbW9yZSBjb21iaW5hdGlvbnMgdGhhbiB0aGF0Pwo+PiBB bHdheXMgYSBzaW5nbGUsIG1pc2FsaWduZWQgTU9WIHNwYW5uaW5nIHRoZSBib3VuZGFyeSBmcm9t IGEgdmFsaWQKPj4gUkFNIHBhZ2UgdG8gYSBiYWxsb29uZWQgb3V0IG9uZSAoTGludXgnZXMgbG9h ZF91bmFsaWduZWRfemVyb3BhZCgpKS4KPj4gSSBtZWFud2hpbGUgd29uZGVyIHRob3VnaCB3aGV0 aGVyIGl0IG1pZ2h0IG5vdCBiZSBiZXR0ZXIgdG8gYWRkcmVzcwo+PiB0aGlzIGF0IHRoZSBwMm0g bGV2ZWwsIGJ5IGluc2VydGluZyBhIHIvbyBtYXBwaW5nIG9mIGFuIGFsbC16ZXJvcyBwYWdlLgo+ PiBHZW9yZ2UsIGRvIHlvdSBoYXZlIGFueSBvcGluaW9uIG9uZSB3YXkgb3IgdGhlIG90aGVyPwo+ IFNvcnJ5LCB3aGF0IGV4YWN0bHkgaXMgdGhlIGlzc3VlIGhlcmU/ICBMaW51eCBoYXMgYSBmdW5j dGlvbiBjYWxsZWQKPiBsb2FkX3VuYWxpZ25lZF96ZXJvcGFkKCkgd2hpY2ggaXMgcmVhZGluZyBp bnRvIGEgYmFsbG9vbmVkIHJlZ2lvbj8KPgo+IEZ1bmRhbWVudGFsbHksIGEgYmFsbG9vbmVkIHBh Z2UgaXMgb25lIHdoaWNoIGhhcyBiZWVuIGFsbG9jYXRlZCB0byBhCj4gZGV2aWNlIGRyaXZlci4g IEknbSBoYXZpbmcgYSBoYXJkIHRpbWUgY29taW5nIHVwIHdpdGggYSBqdXN0aWZpY2F0aW9uCj4g Zm9yIGhhdmluZyBjb2RlIHdoaWNoIHJlYWRzIG1lbW9yeSBvd25lZCBieSBCIGluIHRoZSBwcm9j ZXNzIG9mIHJlYWRpbmcKPiBtZW1vcnkgb3duZWQgYnkgQS4gIE9yIGlzIHRoZXJlIHNvbWUgd2Vp cmQgYXJjaGl0ZWN0dXJhbCByZWFzb24gdGhhdCBJJ20KPiBub3QgYXdhcmUgb2Y/CgpUaGUgdW5k ZXJseWluZyBpc3N1ZSBpcyB0aGF0IHRoZSBlbXVsYXRvciBjYW4ndCBjb3BlIHdpdGggYSBzaW5n bGUKbWlzYWxpZ25lZCBhY2Nlc3Mgd2hpY2ggY3Jvc3NlcyBSQU0gYW5kIE1NSU8uwqAgSXQgZ2l2 ZXMgdXAgYW5kCnByZXN1bWFibHkgdGhyb3dzICNVRCBiYWNrLgoKT25lIGxvbmdzdGFuZGluZyBY ZW4gYnVnIGlzIHRoYXQgc2ltcGx5IGJhbGxvb25pbmcgYSBwYWdlIG91dCBzaG91bGRuJ3QKYmUg YWJsZSB0byB0cmlnZ2VyIE1NSU8gZW11bGF0aW9uIHRvIGJlZ2luIHdpdGguwqAgSXQgaXMgYSBz aWRlIGVmZmVjdCBvZgptaXhlZCBwMm0gdHlwZXMsIGFuZCB0aGUgZml4IGZvciB0aGlzIHRvIGhh dmUgWGVuIHVuZGVyc3RhbmQgdGhlIGd1ZXN0CnBoeXNtYXAgbGF5b3V0LgoKSG93ZXZlciwgdGhl IHJlYWwgYnVnIGlzIExpbnV4IG1ha2luZyBzdWNoIGEgbWlzYWxpZ25lZCBhY2Nlc3MgaW50byBh CmJhbGxvb25lZCBvdXQgcGFnZSBpbiB0aGUgZmlyc3QgcGxhY2UuwqAgVGhpcyBpcyBhIExpbnV4 IGtlcm5lbCBidWcgd2hpY2gKKHByZXN1bWFibHkpIG1hbmlmZXN0cyBpbiBhIHZlcnkgb2J2aW91 cyB3YXkgZHVlIHRvIHNob3J0Y29taW5ncyBpbgpYZW4ncyBlbXVsYXRpb24gaGFuZGxpbmcuCgp+ QW5kcmV3CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs