From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v2] x86/mm: also flush TLB when putting writable foreign page reference Date: Fri, 5 May 2017 19:29:10 +0100 Message-ID: <5e317ab0-ace7-4c51-bbbb-906d750f09f8@citrix.com> References: <58FF2C060200007800153D45@prv-mh.provo.novell.com> <58FF2C060200007800153D45@prv-mh.provo.novell.com> <20170425105954.GB43635@deinos.phlegethon.org> <5900C5BB020000780015466A@prv-mh.provo.novell.com> <20170426142511.GC28790@deinos.phlegethon.org> <5901D4940200007800154B84@prv-mh.provo.novell.com> <20170427095116.GB26734@deinos.phlegethon.org> <59033B1802000078001551D7@prv-mh.provo.novell.com> <20170502083215.GA90479@deinos.phlegethon.org> <5908645B0200007800155A54@prv-mh.provo.novell.com> <20170502094330.GB90479@deinos.phlegethon.org> <4388f6e6-dc4c-4b24-2283-271882326edf@citrix.com> <5909A10002000078001561F9@prv-mh.provo.novell.com> <14444e2f62cc4a14916f137e2c824a7f@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6hyb-0006wW-Jx for xen-devel@lists.xenproject.org; Fri, 05 May 2017 18:29:13 +0000 In-Reply-To: <14444e2f62cc4a14916f137e2c824a7f@AMSPEX02CL03.citrite.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Marcus Granado , Jan Beulich Cc: xen-devel , Julien Grall , "Tim (Xen.org)" , Jann Horn List-Id: xen-devel@lists.xenproject.org T24gMDUvMDUvMTcgMTk6MTYsIE1hcmN1cyBHcmFuYWRvIHdyb3RlOgo+IE9uIDAzLzA1LzE3IDEw OjU2LCBBbmRyZXcgQ29vcGVyIHdyb3RlOgo+PiBPbiAwMy8wNS8xNyAwODoyMSwgSmFuIEJldWxp Y2ggd3JvdGU6Cj4+Pj4+PiBPbiAwMi4wNS4xNyBhdCAxOTozNywgPGFuZHJldy5jb29wZXIzQGNp dHJpeC5jb20+IHdyb3RlOgo+Pj4+IE9uIDAyLzA1LzE3IDEwOjQzLCBUaW0gRGVlZ2FuIHdyb3Rl Ogo+Pj4+PiBBdCAwMjo1MCAtMDYwMCBvbiAwMiBNYXkgKDE0OTM2OTM0MDMpLCBKYW4gQmV1bGlj aCB3cm90ZToKPj4+Pj4+Pj4+IE9uIDAyLjA1LjE3IGF0IDEwOjMyLCA8dGltQHhlbi5vcmc+IHdy b3RlOgo+Pj4+Pj4+IEF0IDA0OjUyIC0wNjAwIG9uIDI4IEFwciAoMTQ5MzM1NTE2MCksIEphbiBC ZXVsaWNoIHdyb3RlOgo+Pj4+Pj4+Pj4+PiBPbiAyNy4wNC4xNyBhdCAxMTo1MSwgPHRpbUB4ZW4u b3JnPiB3cm90ZToKPj4+Pj4+Pj4+IEF0IDAzOjIzIC0wNjAwIG9uIDI3IEFwciAoMTQ5MzI2MzM4 MCksIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+Pj4+Pj4+IC4uLiBpdCB3b3VsZG4ndCBiZXR0ZXIg YmUgdGhlIG90aGVyIHdheSBhcm91bmQ6IFdlIHVzZSB0aGUKPj4+Pj4+Pj4+PiBwYXRjaCBpbiBp dHMgY3VycmVudCAob3IgZXZlbiB2MSkgZm9ybSwgYW5kIHRyeSB0byBkbyBzb21ldGhpbmcKPj4+ Pj4+Pj4+PiBhYm91dCBwZXJmb3JtYW5jZSBvbmx5IGlmIHdlIHJlYWxseSBmaW5kIGEgY2FzZSB3 aGVyZSBpdAo+Pj4+Pj4+Pj4+IG1hdHRlcnMuIFRvIGJlIGhvbmVzdCwgSSdtIG5vdCBldmVuIHN1 cmUgaG93IEkgY291bGQKPj4+Pj4+Pj4+PiBtZWFuaW5nZnVsbHkgbWVhc3VyZSB0aGUgaW1wYWN0 IGhlcmU6IFNpbXBseSBjb3VudGluZyBob3cKPj4gbWFueQo+Pj4+Pj4+Pj4+IGV4dHJhIGZsdXNo ZXMgdGhlcmUgd291bGQgZW5kIHVwIGJlaW5nIHdvdWxkbid0IHNlZW0gYWxsIHRoYXQKPj4+Pj4+ Pj4+PiB1c2VmdWwsIGFuZCB3aGV0aGVyIHRoZXJlIHdvdWxkIGJlIGFueSBtZWFzdXJhYmxlIGRp ZmZlcmVuY2UgaW4KPj4+Pj4+Pj4+PiB0aGUgb3ZlcmFsbCBleGVjdXRpb24gdGltZSBvZiBlLmcu IGRvbWFpbiBjcmVhdGlvbiBJIHdvdWxkCj4+Pj4+Pj4+Pj4gaGlnaGx5IGRvdWJ0IChidXQgaWYg aXQncyB0aGF0IHdoYXQgeW91J3JlIGFmdGVyLCBJIGNvdWxkIGNlcnRhaW5seQo+PiBjb2xsZWN0 IGEgZmV3IG51bWJlcnMpLgo+Pj4+Pj4+Pj4gSSB0aGluayB0aGF0IHdvdWxkIGJlIGEgZ29vZCBp ZGVhLCBqdXN0IGFzIGEgc2FuaXR5LWNoZWNrLgo+Pj4+Pj4+PiBBcyBpdCB0dXJucyBvdXQgdGhl cmUgaXMgYSBtZWFzdXJhYmxlIGVmZmVjdDogeGNfZG9tX2Jvb3RfaW1hZ2UoKQo+Pj4+Pj4+PiBm b3IgYSA0R2IgUFYgZ3Vlc3QgdGFrZXMgYWJvdXQgNzAlIGxvbmdlciBub3cuIE90b2ggaXQgaXMg aXRzZWxmCj4+Pj4+Pj4+IHJlc3BvbnNpYmxlIGZvciBsZXNzIHRoYW4gMTAlIG9mIHRoZSBvdmVy YWxsIHRpbWUKPj4+Pj4+Pj4gbGlieGxfX2J1aWxkX2RvbSgpIHRha2VzLCBhbmQgdGhhdCBpbiB0 dXJuIGlzIG9ubHkgYSBwcmV0dHkgc21hbGwKPj4+Pj4+Pj4gcG9ydGlvbiBvZiB0aGUgb3ZlcmFs bCAieGwgY3JlYXRlIi4KPj4+Pj4+PiBEbyB5b3UgdGhpbmsgdGhhdCBzbG93ZG93biBpcyBPSz8g IEknbSBub3Qgc3VyZSAtLSBJJ2QgYmUgaW5jbGluZWQKPj4+Pj4+PiB0byBhdm9pZCBpdCwgYnV0 IGNvdWxkIGJlIHBlcnN1YWRlZCwgYW5kIGl0J3Mgbm90IG1lIGRvaW5nIHRoZQo+Pj4+Pj4+IHdv cmsuIDopCj4+Pj4+PiBXZWxsLCBpZiB0aGVyZSB3YXMgYSB3YXkgdG8gYXZvaWQgaXQgaW4gYSBj bGVhbiB3YXkgd2l0aG91dCB0b28KPj4+Pj4+IG11Y2ggY29kZSBjaHVybiwgSSdkIGJlIGFsbCBm b3IgYXZvaWRpbmcgaXQuIFRoZSBhdmVudWVzIHdlJ3ZlCj4+Pj4+PiBleHBsb3JlZCBzbyBmYXIg ZWl0aGVyIGRpZG4ndCB3b3JrICh1c2luZyBwZ19vd25lcidzIGRpcnR5IG1hc2spIG9yCj4+Pj4+ PiBkaWRuJ3QgcHJvbWlzZSB0byBhY3R1YWxseSByZWR1Y2UgdGhlIGZsdXNoIG92ZXJoZWFkIGlu IGEKPj4+Pj4+IG1lYW5pbmdmdWwgd2F5IChhZGRpbmcgYSBzZXBhcmF0ZSBtYXNrIHRvIGJlIG1l cmdlZCBpbnRvIHRoZSBtYXNrCj4+Pj4+PiB1c2VkIGZvciB0aGUgZmx1c2ggaW4gX19nZXRfcGFn ZV90eXBlKCkpLCB1bmxlc3MgLSBhcyBoYXMgYmVlbiB0aGUKPj4+Pj4+IGNhc2UgYmVmb3JlIC0g SSBkaWRuJ3QgZnVsbHkgdW5kZXJzdGFuZCB5b3VyIHRob3VnaHRzIHRoZXJlLgo+Pj4+PiBRdW90 aW5nIHlvdXIgZWFybGllciByZXNwb25zZToKPj4+Pj4KPj4+Pj4+IFdvdWxkbid0IGl0IHN1ZmZp Y2UgdG8gc2V0IGJpdHMgaW4gdGhpcyBtYXNrIGluIHB1dF9wYWdlX2Zyb21fbDFlKCkKPj4+Pj4+ IGFuZCBjb25zdW1lL2NsZWFyIHRoZW0gaW4gX19nZXRfcGFnZV90eXBlKCk/IFJpZ2h0IG5vdyBJ IGNhbid0IHNlZQo+Pj4+Pj4gaXQgYmVpbmcgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcyB0byBm aWRkbGUgd2l0aCBhbnkgb2YgdGhlIG90aGVyCj4+Pj4+PiBmbHVzaGVzIHVzaW5nIHRoZSBkb21h aW4gZGlydHkgbWFzay4KPj4+Pj4+Cj4+Pj4+PiBCdXQgdGhlbiBhZ2FpbiB0aGlzIG1heSBub3Qg YmUgbXVjaCBvZiBhIHdpbiwgdW5sZXNzIHRoZSBwdXQKPj4+Pj4+IG9wZXJhdGlvbnMgY29tZSB0 aHJvdWdoIGluIG1lYW5pbmdmdWwgYmF0Y2hlcywgbm90IGludGVybGVhdmVkIGJ5Cj4+Pj4+PiBh bnkgdHlwZSBjaGFuZ2VzICh0aGUgbGF0dGVyIG91Z2h0IHRvIGJlIGd1YXJhbnRlZWQgZHVyaW5n IGRvbWFpbgo+Pj4+Pj4gY29uc3RydWN0aW9uIGFuZCB0ZWFyZG93biBhdCBsZWFzdCwgYXMgdGhl IGd1ZXN0IGl0c2VsZiBjYW4ndCBkbwo+Pj4+Pj4gYW55dGhpbmcgYXQgdGhhdCB0aW1lIHRvIGVm ZmVjdCB0eXBlIGNoYW5nZXMpLgo+Pj4+PiBJJ20gbm90IHN1cmUgaG93IG11Y2ggYmF0Y2hpbmcg dGhlcmUgbmVlZHMgdG8gYmUuICBJIGFncmVlIHRoYXQgdGhlCj4+Pj4+IGRvbWFpbiBjcmVhdGlv biBjYXNlIHNob3VsZCB3b3JrIHdlbGwgdGhvdWdoLiAgTGV0IG1lIHRoaW5rIGFib3V0Cj4+Pj4+ IHRoZSBzY2VuYXJpb3Mgd2hlbiBkb20gQiBpcyBsaXZlOgo+Pj4+Pgo+Pj4+PiAxLiBEb20gQSBk cm9wcyBpdHMgZm9yZWlnbiBtYXAgb2YgcGFnZSBYOyBkb20gQiBpbW1lZGlhdGVseSBjaGFuZ2Vz Cj4+Pj4+IHRoZSB0eXBlIG9mIHBhZ2UgWC4gIFRoaXMgY2FzZSBpc24ndCBoZWxwZWQgYXQgYWxs LCBidXQgSSBkb24ndCBzZWUKPj4+Pj4gYW55IHdheSB0byBpbXByb3ZlIGl0IC0tIGRvbSBBJ3Mg VExCcyBuZWVkIHRvIGJlIGZsdXNoZWQgcmlnaHQgYXdheS4KPj4+Pj4KPj4+Pj4gMi4gRG9tIEEg ZHJvcHMgaXRzIGZvcmVpZ24gbWFwIG9mIHBhZ2UgWDsgZG9tIEIgaW1tZWRpYXRlbHkgY2hhbmdl cwo+Pj4+PiB0aGUgdHlwZSBvZiBwYWdlIFkuICBOb3cgZG9tIEEncyBkaXJ0eSBDUFVzIGFyZSBp biB0aGUgbmV3IG1hcCwgYnV0Cj4+Pj4+IEIgbWF5IG5vdCBuZWVkIHRvIGZsdXNoIHRoZW0gcmln aHQgYXdheS4gIEIgY2FuIGZpbHRlciBieSBwYWdlIFkncwo+Pj4+PiB0aW1lc3RhbXAsIGFuZCBm bHVzaCAoYW5kIGNsZWFyKSBvbmx5IHNvbWUgb2YgdGhlIGNwdXMgaW4gdGhlIG1hcC4KPj4+Pj4K Pj4+Pj4gU28gdGhhdCBzZWVtcyBnb29kLCBidXQgdGhlbiB0aGVyZSdzIGEgcmlzayB0aGF0IGNw dXMgbmV2ZXIgZ2V0Cj4+Pj4+IGNsZWFyZWQgZnJvbSB0aGUgbWFwLCBhbmQgX19nZXRfcGFnZV90 eXBlKCkgZW5kcyB1cCBkb2luZyBhIGxvdCBvZgo+Pj4+PiB1bm5lY2Vzc2FyeSB3b3JrIGZpbHRl cmluZyB0aW1lc3RhcHMuICBXaGVuIGlzIGl0IHNhZmUgdG8gcmVtb3ZlIGEKPj4+Pj4gQ1BVIGZy b20gdGhhdCBtYXA/Cj4+Pj4+ICAtIG9idnMgc2FmZSBpZiB3ZSBJUEkgaXQgdG8gZmx1c2ggdGhl IFRMQiAodGhvdWdoIG1heSBuZWVkIG1lbW9yeQo+Pj4+PiAgICBiYXJyaWVycyAtLSBuZWVkIHRv IHRoaW5rIGFib3V0IGEgcmFjZSB3aXRoIENQVSBDIHB1dHRpbmcgQSBfaW50b18KPj4+Pj4gICAg dGhlIG1hcCBhdCB0aGUgc2FtZSB0aW1lLi4uKQo+Pj4+PiAgLSB3ZSBjb3VsZCB0cmFjayB0aGUg dGltZXN0YW1wIG9mIHRoZSBtb3N0IHJlY2VudCBhZGRpdGlvbiB0byB0aGUKPj4+Pj4gICAgbWFw LCBhbmQgZHJvcCBhbnkgQ1BVIHdob3NlIFRMQiBoYXMgYmVlbiBmbHVzaGVkIHNpbmNlIHRoYXQs Cj4+Pj4+ICAgIGJ1dCB0aGF0IHN0aWxsIGxldHMgdW5yZWxhdGVkIHVubWFwcyBrZWVwIENQVXMg YWxpdmUgaW4gdGhlIG1hcC4uLgo+Pj4+PiAgLSB3ZSBjb3VsZCBkb3VibGUtYnVmZmVyIHRoZSBt YXA6IGFsd2F5cyBhZGQgQ1BVcyB0byB0aGUgYWN0aXZlIG1hcDsKPj4+Pj4gICAgZnJvbSB0aW1l IHRvIHRpbWUsIHN3YXAgbWFwcyBhbmQgZmx1c2ggZXZlcnl0aGluZyBpbiB0aGUgbm9uLWFjdGl2 ZQo+Pj4+PiAgICBtYXAgKGZpbHRlcmVkIGJ5IHRoZSBUTEIgdGltZXN0YW1wIHdoZW4gd2UgbGFz dCBzd2FwcGVkIG92ZXIpLgo+Pj4+Pgo+Pj4+PiBCYWgsIHRoaXMgaXMgdHVybmluZyBpbnRvIGEg dGFyIHBpdC4gIExldCdzIHN0aWNrIHRvIHRoZSB2MiBwYXRjaCBhcwo+Pj4+PiBiZWluZyAocmVs YXRpdmVseSkgc2ltcGxlIGFuZCBjb3JyZWN0LCBhbmQgcmV2aXNpdCB0aGlzIGlmIGl0IGNhdXNl cwo+Pj4+PiB0cm91YmxlLiA6KQo+Pj4+IDooCj4+Pj4KPj4+PiBBIDcwJSBwZXJmb3JtYW5jZSBo aXQgZm9yIGd1ZXN0IGNyZWF0aW9uIGlzIGNlcnRhaW5seSBnb2luZyB0byBjYXVzZQo+Pj4+IHBy b2JsZW1zLCBidXQgd2Ugb2J2aW91c2x5IG5lZWQgdG8gcHJpb3JpdGlzZSBjb3JyZWN0bmVzcyBp biB0aGlzIGNhc2UuCj4+PiBIbW0sIHlvdSBkaWQgdW5kZXJzdGFuZCB0aGF0IHRoZSA3MCUgaGl0 IGlzIG9uIGEgc3BlY2lmaWMgc3ViLXBhcnQgb2YKPj4+IHRoZSBvdmVyYWxsIHByb2Nlc3MsIG5v dCBndWVzdCBjcmVhdGlvbiBhcyBhIHdob2xlPyBBbnl3YXksIHlvdXIgcmVwbHkKPj4+IGlzIG5l aXRoZXIgYW4gYWNrIG5vciBhIG5hayBub3IgYW4gaW5kaWNhdGlvbiBvZiB3aGF0IG5lZWRzIHRv IGNoYW5nZQo+Pj4gLi4uCj4+IFllcyAtIEkgcmVhbGlzZSBpdCBpc24ndCBhbGwgb2YgZG9tYWlu IGNyZWF0aW9uLCBidXQgdGhpcyBwZXJmb3JtYW5jZSBoaXQgd2lsbCBhbHNvCj4+IGhpdCBtaWdy YXRpb24sIHFlbXUgRE1BIG1hcHBpbmdzLCBldGMuCj4+Cj4+IFhlblNlcnZlciBoYXMgc3RhcnRl ZCBhIHNpZGUtYnktc2lkZSBwZXJmb3JtYW5jZSB3b3JrLXVwIG9mIHRoaXMgY2hhbmdlLCBhcwo+ PiBwcmVzZW50ZWQgYXQgdGhlIHJvb3Qgb2YgdGhpcyB0aHJlYWQuICBXZSBzaG91bGQgaG9wZWZ1 bGx5IGhhdmUgc29tZQo+PiBudW1iZXIgaW4gdGhlIG5leHQgZGF5IG9yIHR3by4KPj4KPiBJIGRp ZCBzb21lIG1lYXN1cmVtZW50cyBvbiB0d28gYnVpbGRzIG9mIGEgcmVjZW50IHZlcnNpb24gb2Yg WGVuU2VydmVyIHVzaW5nIFhlbiB1cHN0cmVhbSA0LjkuMC0zLjAuCgpUaGUgdXBzdHJlYW0gYmFz ZSBvZiB0aGlzIFhlblNlcnZlciBidWlsZCB3YXMgYy9zIGJhMzllOWIsIG9uZSBjaGFuZ2UKcGFz dCA0LjkuMC1yYzMKCj4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYnVpbGRzIHdh cyB0aGUgcGF0Y2ggeDg2LXB1dC1sMWUtZm9yZWlnbi1mbHVzaC5wYXRjaCAgaW4gaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE3LTA0L21zZzAy OTQ1Lmh0bWwuCj4KPiBJIG9ic2VydmVkIG5vIG1lYXN1cmFibGUgZGlmZmVyZW5jZSBiZXR3ZWVu IHRoZXNlIGJ1aWxkcyB3aXRoIGEgZ3Vlc3QgUkFNIHZhbHVlIG9mIDRHLCA4RyBhbmQgMTRHIGZv ciB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnM6Cj4gLSB0aW1lIHhlIHZtLXN0YXJ0Cj4gLSB0aW1l IHhlIHZtLXNodXRkb3duCj4gLSB2bSBkb3dudGltZSBkdXJpbmcgInhlIHZtLW1pZ3JhdGlvbiIg KGFzIG1lYXN1cmVkIGJ5IHBpbmdpbmcgdGhlIHZtIGR1cmluZyBtaWdyYXRpb24gYW5kIHZlcmlm eWluZyBmb3IgaG93IGxvbmcgcGluZ3Mgd291bGQgZmFpbCB3aGVuIGJvdGggZG9tYWlucyBhcmUg cGF1c2VkKQo+IC0gdGltZSB4ZSB2bS1taWdyYXRlICMgZm9yIEhWTSBndWVzdHMgKGVnLiB3aW43 IGFuZCB3aW4xMCkKPgo+IEJ1dCBJIG9ic2VydmVkIGEgZGlmZmVyZW5jZSBmb3IgdGhlIGR1cmF0 aW9uIG9mICJ0aW1lIHhlIHZtLW1pZ3JhdGUiIGZvciBQViBndWVzdHMgKGVnLiBjZW50b3M2OCwg ZGViaWFuNzAsIHVidW50dTEyMDQpLiBGb3IgY2VudG9zNjgsIGZvciBpbnN0YW5jZSwgSSBvYnRh aW5lZCB0aGUgZm9sbG93aW5nIHZhbHVlcyBvbiBhIG1hY2hpbmUgd2l0aCBhIEludGVsIEUzLTEy ODF2MyAzLjdHaHogQ1BVLCBhdmVyYWdlZCBvdmVyIDEwIHJ1bnMgZm9yIGVhY2ggZGF0YSBwb2lu dDoKPiB8ICAgR3Vlc3QgUkFNICAgfCAgbm8gcGF0Y2ggIHwgd2l0aCBwYXRjaCB8IGRpZmZlcmVu Y2UgfCAgZGlmZi9SQU0gfCAKPiB8ICAgMTRHQiAgICAgICAgfCAgIDEwLjQ0cyAgIHwgICAxMy40 NnMgICB8ICAgIDMuMDJzICAgfCAgICAwLjIycy9HQiAgICB8Cj4gfCAgICA4R0IgICAgICAgIHwg ICAgNi40NnMgICB8ICAgIDguMjhzICAgfCAgICAxLjgycyAgIHwgICAgMC4yM3MvR0IgICAgfAo+ IHwgICAgNEdCICAgICAgICB8ICAgIDMuODVzICAgfCAgICA0Ljc0cyAgIHwgICAgMC44OXMgICB8 ICAgIDAuMjJzL0dCICAgIHwKPgo+IEZyb20gdGhlc2UgbnVtYmVycywgaWYgdGhlIHBhdGNoIGlz IHByZXNlbnQsIGl0IGxvb2tzIGxpa2UgVk0gbWlncmF0aW9uIG9mIGEgUFYgZ3Vlc3Qgd291bGQg dGFrZSBhbiBleHRyYSAxcyBmb3IgZWFjaCBleHRyYSA1R0Igb2YgZ3Vlc3QgUkFNLiBUaGUgVk1z IGFyZSBtb3N0bHkgaWRsZSBkdXJpbmcgbWlncmF0aW9uLiBBdCB0aGlzIHBvaW50LCBpdCdzIG5v dCBjbGVhciB0byBtZSB3aHkgdGhpcyBkaWZmZXJlbmNlIGlzIG9ubHkgdmlzaWJsZSBvbiBWTSBt aWdyYXRpb24gKGFzIG9wcG9zZWQgdG8gVk0gc3RhcnQgZm9yIGV4YW1wbGUpLCBhbmQgb25seSBv biBhIFBWIGd1ZXN0IChhcyBvcHBvc2VkIHRvIGFuIEhWTSkuCgpUaGUgZGlmZmVyZW5jZSBiZXR3 ZWVuIHN0YXJ0IGFuZCBtaWdyYXRlIGNhbiBiZSBleHBsYWluZWQuCgpEdXJpbmcgZG9tYWluIGNy ZWF0aW9uLCB3ZSBvbmx5IGhhdmUgdG8gZm9yZWlnbiBtYXAgdGhlIGFyZWFzIG9mIHRoZQpndWVz dCB3ZSBuZWVkIHRvIHdyaXRlIGludG8gKGd1ZXN0IGtlcm5lbC9pbml0cmQsIG9yIGh2bWxvYWRl ci9hY3BpCnRhYmxlcyksIHdoaWNoIGlzIGluZGVwZW5kZW50IG9mIHRoZSBxdWFudGl0eSBvZiBS QU0gdGhlIGd1ZXN0IGhhcy4KCkR1cmluZyBtaWdyYXRpb24sIHdlIG11c3QgZm9yZWlnbiBtYXAg YWxsIGd1ZXN0IFJBTS4gIEZ1cnRoZXJtb3JlLCB3ZQp1bm1hcCBhbmQgcG90ZW50aWFsbHkgcmVt YXAgYWdhaW4gbGF0ZXIgaWYgdGhlIFJBTSBnZXRzIGRpcnRpZWQuICAoQQo2NGJpdCB0b29sc3Rh Y2sgcHJvY2VzcyBjb3VsZCBwb3RlbnRpYWxseSBmb3JlaWduIG1hcCB0aGUgZW50aXJlIGd1ZXN0 CmFuZCByZXVzZSB0aGUgbWFwcGluZ3MuICBBIDMyYml0IHRvb2xzdGFjayBwcm9jZXNzIHZlcnkg ZGVmaW5pdGVseQpjYW4ndCwgc28gdGhlIG1pZ3JhdGlvbiBsb2dpYyB1c2VzIHRoZSBzaW1wbGVy IGFwcHJvYWNoIG9mIG5vdCByZXVzaW5nCm1hcHBpbmdzIGF0IGFsbC4pCgpJIGFtIGF0IGEgbG9z cyB0byBleHBsYWluIHdoeSB0aGUgb3ZlcmhlYWQgaXMgb25seSBvYnNlcnZlZCB3aGVuCm1pZ3Jh dGluZyBQViBndWVzdHMuICBJIHdvdWxkIGV4cGVjdCBtaWdyYXRpbmcgSFZNIGd1ZXN0cyB0byBo YXZlCmlkZW50aWNhbCBwcm9wZXJ0aWVzIGluIHRoaXMgcmVnYXJkLgoKfkFuZHJldwoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==