From mboxrd@z Thu Jan 1 00:00:00 1970 From: Norbert Manthey Subject: Re: [PATCH SpectreV1+L1TF v6 8/9] common/grant_table: block speculative out-of-bound accesses Date: Mon, 18 Feb 2019 14:49:45 +0100 Message-ID: References: <1c2b8322-1b66-ccc6-9ba9-e86eafb0227a@amazon.de> <1549633489-12724-1-git-send-email-nmanthey@amazon.de> <1549633489-12724-9-git-send-email-nmanthey@amazon.de> <5C4ED1D402000078002119E6@prv1-mh.provo.novell.com> <9C03B9BA0200004637554D14@prv1-mh.provo.novell.com> <00FAA7AF020000F8B1E090C7@prv1-mh.provo.novell.com> <0101E7AF020000F8B1E090C7@prv1-mh.provo.novell.com> <5C532AC00200007800212EA2@prv1-mh.provo.novell.com> <01CCAAAF02000039B1E090C7@prv1-mh.provo.novell.com> <01CEAAAF02000039B1E090C7@prv1-mh.provo.novell.com> <5C64048B0200007800216478@prv1-mh.provo.novell.com> <5C66959C0200007800216F11@prv1-mh.provo.novell.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] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gvjJ5-0006jZ-MT for xen-devel@lists.xenproject.org; Mon, 18 Feb 2019 13:50:03 +0000 In-Reply-To: <5C66959C0200007800216F11@prv1-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Jan Beulich Cc: Juergen Gross , Tim Deegan , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Dario Faggioli , Martin Pohlack , wipawel@amazon.de, Julien Grall , David Woodhouse , "Martin Mazein(amazein)" , xen-devel , Julian Stecklina , Bjoern Doebel List-Id: xen-devel@lists.xenproject.org T24gMi8xNS8xOSAxMTozNCwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4gT24gMTUuMDIuMTkgYXQg MTA6NTUsIDxubWFudGhleUBhbWF6b24uZGU+IHdyb3RlOgo+PiBPbiAyLzEzLzE5IDEyOjUwLCBK YW4gQmV1bGljaCB3cm90ZToKPj4+Pj4+IE9uIDA4LjAyLjE5IGF0IDE0OjQ0LCA8bm1hbnRoZXlA YW1hem9uLmRlPiB3cm90ZToKPj4+PiBHdWVzdHMgY2FuIGlzc3VlIGdyYW50IHRhYmxlIG9wZXJh dGlvbnMgYW5kIHByb3ZpZGUgZ3Vlc3QgY29udHJvbGxlZAo+Pj4+IGRhdGEgdG8gdGhlbS4gVGhp cyBkYXRhIGlzIGFsc28gdXNlZCBmb3IgbWVtb3J5IGxvYWRzLiBUbyBhdm9pZAo+Pj4+IHNwZWN1 bGF0aXZlIG91dC1vZi1ib3VuZCBhY2Nlc3Nlcywgd2UgdXNlIHRoZSBhcnJheV9pbmRleF9ub3Nw ZWMgbWFjcm8KPj4+PiB3aGVyZSBhcHBsaWNhYmxlLiBIb3dldmVyLCB0aGVyZSBhcmUgYWxzbyBt ZW1vcnkgYWNjZXNzZXMgdGhhdCBjYW5ub3QKPj4+PiBiZSBwcm90ZWN0ZWQgYnkgYSBzaW5nbGUg YXJyYXkgcHJvdGVjdGlvbiwgb3IgbXVsdGlwbGUgYWNjZXNzZXMgaW4gYQo+Pj4+IHJvdy4gVG8g cHJvdGVjdCB0aGVzZSwgYSBub3NwZWMgYmFycmllciBpcyBwbGFjZWQgYmV0d2VlbiB0aGUgYWN0 dWFsCj4+Pj4gcmFuZ2UgY2hlY2sgYW5kIHRoZSBhY2Nlc3MgdmlhIHRoZSBibG9ja19zcGVjdWxh dGlvbiBtYWNyby4KPj4+Pgo+Pj4+IEFzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBncmFudCB0YWJs ZXMgdXNlIHN0cnVjdHVyZXMgb2YgZGlmZmVyZW50IHNpemUsCj4+Pj4gYW5kIHRoZSBzdGF0dXMg aXMgZW5jb2RlZCBpbiBhbiBhcnJheSBmb3IgdmVyc2lvbiAyLCBzcGVjdWxhdGl2ZQo+Pj4+IGV4 ZWN1dGlvbiBtaWdodCB0b3VjaCB6ZXJvLWluaXRpYWxpemVkIHN0cnVjdHVyZXMgb2YgdmVyc2lv biAyIHdoaWxlCj4+Pj4gdGhlIHRhYmxlIGlzIGFjdHVhbGx5IHVzaW5nIHZlcnNpb24gMS4KPj4+ IFdoeSB6ZXJvLWluaXRpYWxpemVkPyBEaWQgSSBzdGlsbCBub3Qgc3VjY2VlZCBkZW1vbnN0cmF0 aW5nIHRvIHlvdQo+Pj4gdGhhdCBzcGVjdWxhdGlvbiBhbG9uZyBhIHYyIHBhdGggY2FuIGFjdHVh bGx5IG92ZXJydW4gdjEgYXJyYXlzLAo+Pj4gbm90IGp1c3QgYWNjZXNzIHBhcnRzIHdpdGggbWF5 IHN0aWxsIGJlIHplcm8taW5pdGlhbGl6ZWQ/Cj4+IEkgYmVsaWV2ZSBhIHNwZWN1bGF0aXZlIHYy IGFjY2VzcyBjYW4gdG91Y2ggZGF0YSB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4KPj4gYnkgdmFsaWQg djEgYWNjZXNzZXMgYmVmb3JlLCB6ZXJvIGluaXRpYWxpemVkIGRhdGEsIG9yIHRvdWNoIHRoZSBO VUxMCj4+IHBhZ2UuIEdpdmVuIHRoZSBtYWNyb3MgZm9yIHRoZSBhY2Nlc3MgSSBkbyBub3QgYmVs aWV2ZSB0aGF0IGEgdjIgYWNjZXNzCj4+IGNhbiB0b3VjaCBhIHBhZ2UgdGhhdCBpcyBsb2NhdGVk IGJlaGluZCBhIHBhZ2UgaG9sZGluZyB2YWxpZCB2MSBkYXRhLgo+IEkndmUgZ2l2ZW4gZXhhbXBs ZXMgYmVmb3JlIG9mIGhvdyBJIHNlZSB0aGlzIHRvIGJlIHBvc3NpYmxlLiBXb3VsZAo+IHlvdSBt aW5kIGdvaW5nIGJhY2sgdG8gb25lIG9mIHRoZSBpbnN0YW5jZXMsIGFuZCBleHBsYWluaW5nIHRv IG1lCj4gaG93IHlvdSBkbyBfbm90XyBzZWUgYW55IHJvb20gZm9yIGFuIG92ZXJydW4gdGhlcmU/ IEhhdmluZwo+IGdpdmVuIGV4YW1wbGVzLCBJIHNpbXBseSBkb24ndCBrbm93IGhvdyBlbHNlIEkg Y2FuIGV4cGxhaW4gdGhpcyB0bwo+IHlvdSB3aXRob3V0IGtub3dpbmcgYXQgd2hhdCBzcGVjaWZp YyBwYXJ0IG9mIHRoZSBleHBsYW5hdGlvbiB3ZQo+IGRpdmVyZ2UuIChBbmQgbm8sIEknbSBub3Qg ZXhjbHVkaW5nIHRoYXQgSSdtIG1ha2luZyB1cCBhbiBpc3N1ZQo+IHdoZXJlIHRoZXJlIGlzIG5v bmUuKQpXaGF0IHdlIHdhbnQgdG8gcmVhbCBvdXQgaXMgdGhhdCB0aGUgYWN0dWFsbHkgdXNlIHZl cnNpb24xLCB3aGlsZQpzcGVjdWxhdGlvbiBtaWdodCB1c2UgdmVyc2lvbjIsIHJpZ2h0PyBJIGhv cGUgeW91IHJlZmVyIHRvIHRoaXMgZXhhbXBsZQpvZiB5b3VyIGVhcmxpZXIgZW1haWwuCgpPbiAx LzI5LzE5IDE2OjExLCBKYW4gQmV1bGljaCB3cm90ZToKPiBMZXQncyBsb29rIGF0IGFuIGV4YW1w bGU6IGdyZWYgMjU2IHBvaW50cyBpbnRvIHRoZSBtaWRkbGUgb2YKPiB0aGUgZmlyc3QgcGFnZSB3 aGVuIHVzaW5nIHYxIGNhbGN1bGF0aW9ucywgYnV0IGF0IHRoZSBzdGFydAo+IG9mIHRoZSBzZWNv bmQgcGFnZSB3aGVuIHVzaW5nIHYyIGNhbGN1bGF0aW9ucy4gSGVuY2UsIGlmIHRoZQo+IG1heGlt dW0gbnVtYmVyIG9mIGdyYW50IGZyYW1lcyB3YXMgMSwgd2UnZCBvdmVycnVuIHRoZQo+IGFycmF5 LCBjb25zaXN0aW5nIG9mIGp1c3QgYSBzaW5nbGUgZWxlbWVudCAoMjU2IGlzIHZhbGlkIGFzIGEK PiB2MSBncmVmIGluIHRoYXQgY2FzZSwgYnV0IGp1c3Qgb3V0IG9mIGJvdW5kcyBhcyBhIHYyIG9u ZSkuCgpGcm9tIGhvdyBJIHJlYWQgeW91ciBleGFtcGxlIGFuZCBteSBleHBsYW5hdGlvbiwgdGhl IGtleSBkaWZmZXJlbmNlIGlzCmluIHRoZSBzaXplIG9mIHRoZSBzaGFyZWRfcmF3IGFycmF5LiBJ biBjYXNlIGdyZWYgMjU2IGlzIGEgdmFsaWQgdjEKaGFuZGxlLCB0aGVuIHRoZSBzaGFyZWRfcmF3 IGFycmF5IGhhcyBzcGFjZSBmb3IgYXQgbGVhc3QgMjU2IGVudHJpZXMsIGFzCnNoYXJlZF9yYXcg d2FzIGFsbG9jYXRlZCBmb3IgdGhlIG51bWJlciBvZiByZXF1ZXN0ZWQgZW50cmllcy4gVGhlIGFj Y2Vzcwp0byBzaGFyZWRfcmF3IGlzIGNvbnRyb2xsZWQgd2l0aCB0aGUgbWFjcm8gc2hhcmVkX2Vu dHJ5X3YyOgrCoDIyMiAjZGVmaW5lIFNIR05UX1BFUl9QQUdFX1YyIChQQUdFX1NJWkUgLyBzaXpl b2YoZ3JhbnRfZW50cnlfdjJfdCkpCsKgMjIzICNkZWZpbmUgc2hhcmVkX2VudHJ5X3YyKHQsIGUp IFwKwqAyMjTCoMKgwqDCoCAoKHQpLT5zaGFyZWRfdjJbKGUpL1NIR05UX1BFUl9QQUdFX1YyXVso ZSklU0hHTlRfUEVSX1BBR0VfVjJdKQpTaW5jZSB0aGUgZGlyZWN0IGFjY2VzcyB0byB0aGUgc2hh cmVkX3YyIGFycmF5IGRlcGVuZHMgb24gdGhlClNIR05UX1BFUl9QQUdFX1YyIHZhbHVlLCB0aGlz IGhhcyB0byBiZSBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhhdAphcnJheS4gSGVuY2UsIHNoYXJl ZF9yYXcgd2lsbCBub3QgYmUgb3ZlcnJ1biAobmVpdGhlciBmb3IgdmVyc2lvbiAxIG5vcgp2ZXJz aW9uIDIpLiBIb3dldmVyLCB0aGlzIGRpdmlzaW9uIG1pZ2h0IHJlc3VsdCBpbiBhY2Nlc3Npbmcg YW4gZWxlbWVudApvZiBzaGFyZWRfcmF3IHRoYXQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIGJ5 IHZlcnNpb24xIGJlZm9yZS4gSG93ZXZlciwKcmlnaHQgYWZ0ZXIgYWxsb2NhdGlvbiwgc2hhcmVk X3JhdyBpcyB6ZXJvIGluaXRpYWxpemVkLiBIZW5jZSwgdGhpcwptaWdodCByZXN1bHQgaW4gYW4g YWNjZXNzIG9mIHRoZSBOVUxMIHBhZ2UuCgpUaGUgc2Vjb25kIGFjY2VzcyBpbiB0aGUgbWFjcm8g YWxsb3dzIHRvIGFjY2VzcyBvbmx5IGEgc2luZ2xlIHBhZ2UsIGFzCnRoZSB2YWx1ZSBlIGlzIGJv dW5kIHRvIHRoZSBlbGVtZW50cyBwZXIgcGFnZSBvZiB0aGUgY29ycmVjdCB2ZXJzaW9uCih0aGUg dmVyc2lvbiAxIG1hY3JvIHVzZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBtb2R1 bG8Kb3BlcmF0aW9uKS4gRWl0aGVyLCB0aGlzIHJlZmVycyB0byB0aGUgTlVMTCBwYWdlLCBvciBp dCByZWZlcnMgdG8gYSBwYWdlCnRoYXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgYnkgdmVyc2lvbjEg KHBhcnRpYWxseSkuIEkgZG8gbm90IHNlZSBob3cgYW4Kb3V0LW9mLWJvdW5kIGFjY2VzcyB3b3Vs ZCBiZSBwb3NzaWJsZSB0aGVyZS4KCj4+Pj4gQEAgLTk2Myw5ICs5NjUsMTMgQEAgbWFwX2dyYW50 X3JlZigKPj4+PiAgICAgICAgICBQSU5fRkFJTCh1bmxvY2tfb3V0LCBHTlRTVF9iYWRfZ250cmVm LCAiQmFkIHJlZiAlI3ggZm9yIGQlZFxuIiwKPj4+PiAgICAgICAgICAgICAgICAgICBvcC0+cmVm LCByZ3QtPmRvbWFpbi0+ZG9tYWluX2lkKTsKPj4+PiAgCj4+Pj4gKyAgICAvKiBNYWtlIHN1cmUg dGhlIGFib3ZlIGNoZWNrIGlzIG5vdCBieXBhc3NlZCBzcGVjdWxhdGl2ZWx5ICovCj4+Pj4gKyAg ICBibG9ja19zcGVjdWxhdGlvbigpOwo+Pj4+ICsKPj4+PiAgICAgIGFjdCA9IGFjdGl2ZV9lbnRy eV9hY3F1aXJlKHJndCwgb3AtPnJlZik7Cj4+Pj4gICAgICBzaGFoID0gc2hhcmVkX2VudHJ5X2hl YWRlcihyZ3QsIG9wLT5yZWYpOwo+Pj4+IC0gICAgc3RhdHVzID0gcmd0LT5ndF92ZXJzaW9uID09 IDEgPyAmc2hhaC0+ZmxhZ3MgOiAmc3RhdHVzX2VudHJ5KHJndCwgb3AtPnJlZik7Cj4+Pj4gKyAg ICBzdGF0dXMgPSBldmFsdWF0ZV9ub3NwZWMocmd0LT5ndF92ZXJzaW9uID09IDEpID8gJnNoYWgt PmZsYWdzCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6ICZzdGF0dXNfZW50cnkocmd0LCBvcC0+cmVmKTsKPj4+IERpZCB5b3UgY29uc2lkZXIg Zm9sZGluZyB0aGUgdHdvIHBhaXJzIG9mIGZlbmNlcyB5b3UgZW1pdCBpbnRvCj4+PiBvbmU/IE1v dmluZyB1cCB0aGUgYXNzaWdubWVudCB0byBzdGF0dXMgb3VnaHQgdG8gYWNoaWV2ZSB0aGlzLAo+ Pj4gYXMgdGhlbiB0aGUgYmxvY2tfc3BlY3VsYXRpb24oKSBjb3VsZCBiZSBkcm9wcGVkIGFmYWlj dC4KPj4+Cj4+PiBUaGVuIGFnYWluIHlvdSBkb24ndCBhbHRlciBzaGFyZWRfZW50cnlfaGVhZGVy KCkuIElmIHRoZXJlJ3MKPj4+IGEgcmVhc29uIGZvciB5b3Ugbm90IGhhdmluZyBkb25lIHNvLCB0 aGVuIGEgc2Vjb25kIGZlbmNlCj4+PiBoZXJlIGlzIG5lZWRlZCBpbiBhbnkgZXZlbnQuCj4+IElu c3RlYWQgb2YgdGhlIGJsb2NrX3NwZWN1bGF0aW9uKCkgbWFjcm8sIEkgY2FuIGFsc28gcHJvdGVj dCB0aGUgb3AtPnJlZgo+PiB1c2FnZSBiZWZvcmUgZXZhbHVhdGVfbm9zcGVjIHZpYSB0aGUgYXJy YXlfaW5kZXhfbm9zcGVjIGZ1bmN0aW9uLgo+IFRoYXQncyBhbiBvcHRpb24gKGFzIGJlZm9yZSks IGJ1dCBkb2Vzbid0IGhlbHAgd2l0aCBzaGFyZWRfZW50cnlfaGVhZGVyKCkncwo+IGV2YWx1YXRp b24gb2YgZ3RfdmVyc2lvbi4KVGhhdCB3b3VsZCBoYXZlIHRvIGJlIHByb3RlY3RlZCBzZXBhcmF0 ZWx5IGxvY2FsbHkgaW4gdGhhdCBmdW5jdGlvbiwKc2ltaWxhcmx5IHRvIHRoZSBucl9ncmFudF9l bnRyaWVzIGZ1bmN0aW9uLgo+Cj4+PiBXaGF0IGFib3V0IHRoZSB2ZXJzaW9uIGNoZWNrIGluIG5y X2dyYW50X2VudHJpZXMoKT8gSXQgYXBwZWFycwo+Pj4gdG8gbWUgYXMgaWYgYXQgbGVhc3QgaXRz IHVzZSBpbiBncmFudF9tYXBfZXhpc3RzKCkgKHdoaWNoIHNpbXBseSBpcwo+Pj4gdGhlIGZpcnN0 IG9uZSBJJ3ZlIGZvdW5kKSBpcyBwcm9ibGVtYXRpYyB3aXRob3V0IGFuIGFkanVzdG1lbnQuCj4+ PiBFdmVuIHdvcnNlLCAuLi4KPj4+Cj4+Pj4gQEAgLTEzMjEsNyArMTMyNyw4IEBAIHVubWFwX2Nv bW1vbigKPj4+PiAgICAgICAgICBnb3RvIHVubG9ja19vdXQ7Cj4+Pj4gICAgICB9Cj4+Pj4gIAo+ Pj4+IC0gICAgYWN0ID0gYWN0aXZlX2VudHJ5X2FjcXVpcmUocmd0LCBvcC0+cmVmKTsKPj4+PiAr ICAgIGFjdCA9IGFjdGl2ZV9lbnRyeV9hY3F1aXJlKHJndCwgYXJyYXlfaW5kZXhfbm9zcGVjKG9w LT5yZWYsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKPj4gbnJfZ3JhbnRfZW50cmllcyhyZ3QpKSk7Cj4+PiAuLi4geW91IGFkZCBh IHVzZSBlLmcuIGhlcmUgdG8gX2d1YXJkXyBhZ2FpbnN0IHNwZWN1bGF0aW9uLgo+PiBUaGUgYWRq dXN0bWVudCB5b3UgcHJvcG9zZSBpcyB0byBleGNoYW5nZSB0aGUgc3dpdGNoIHN0YXRlbWVudCBp bgo+PiBucl9ncmFudF9lbnRyaWVzIHdpdGggYSBpZiggZXZhbHVhdGVfbm9zcGVjKCBndC0+Z3Rf dmVyc2lvbiA9PSAxICksIHNvCj4+IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlcyBhcmUgbm90IHNw ZWN1bGF0ZWQ/Cj4gQXQgdGhpcyBwb2ludCBJJ20gbm90IHByb3Bvc2luZyBhIHBhcnRpY3VsYXIg c29sdXRpb24uIEknbSBqdXN0Cj4gcHV0dGluZyBvbiB0aGUgdGFibGUgYW4gaXNzdWUgbGVmdCB1 bi1hZGRyZXNzZWQuIEkgY2VydGFpbmx5Cj4gd291bGRuJ3Qgd2VsY29tZSBjb252ZXJ0aW5nIHRo ZSBzd2l0Y2goKSB0byBhbiBpZigpLCBldmVuIGlmCj4gcmlnaHQgbm93IHRoZXJlJ3Mgbm8gdjMg b24gdGhlIGhvcml6b24uIChJdCdzIGFjdHVhbGx5IHF1aXRlCj4gdGhlIGludmVyc2U6IElmIHNv bWVvbmUgY2FtZSBhbmQgc3VibWl0dGVkIGEgcGF0Y2ggdG8gY2hhbmdlCj4gdGhlIHZhcmlvdXMg aWYoKS1zIG9uIGd0X3ZlcnNpb24gdG8gc3dpdGNoKCktZXMsIEknZCB3ZWxjb21lIHRoaXMuKQpJ IGFtIGhhcHB5IHRvIGFkZCBibG9ja19zcGVjdWxhdGlvbigpIG1hY3JvcyBpbnRvIGVhY2ggY2Fz ZSBvZiB0aGUKc3dpdGNoIHN0YXRlbWVudC4KPj4gQWxyZWFkeSBiZWZvcmUgdGhpcwo+PiBtb2Rp ZmljYXRpb24gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgbm90IGlubGluZWQuCj4gSG93IGRv ZXMgdGhpcyBtYXR0ZXIgd2hlbiBjb25zaWRlcmluZyBzcGVjdWxhdGlvbj8KTGlrZWx5IG5vdCBh dCBhbGwuCj4KPj4gRG8geW91IHdhbnQgbWUgdG8KPj4gY2FjaGUgdGhlIHZhbHVlIGluIGZ1bmN0 aW9ucyB0aGF0IGNhbGwgdGhpcyBtZXRob2QgcmVndWxhcmx5IHRvIGF2b2lkCj4+IHRoZSBwZW5h bHR5IG9mIHRoZSBpbnRyb2R1Y2VkIGxmZW5jZSBmb3IgZWFjaCBjYWxsPwo+IFRoYXQgd291bGQg Z28gYmFjayB0byB0aGUgcXVlc3Rpb24gb2Ygd2hhdCBnb29kIGl0IGRvZXMgdG8KPiBsYXRjaCB2 YWx1ZSBpbnRvIGEgbG9jYWwgdmFyaWFibGUgd2hlbiB5b3UgZG9uJ3Qga25vdyB3aGV0aGVyCj4g dGhlIGNvbXBpbGVyIHdpbGwgcHV0IHRoYXQgdmFyaWFibGUgaW4gYSByZWdpc3RlciBvciBpbiBt ZW1vcnkuCj4gSU9XIEknbSBhZnJhaWQgdGhhdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIHRoZXJl J3Mgbm8gd2F5Cj4gYXJvdW5kIHRoZSByZXBlYXRlZCBMRkVOQ0VzLgpUaGUgZGlmZmVyZW5jZSBo ZXJlIHdvdWxkIGJlIHRoYXQgaW4gY2FzZSB0aGUgdmFsdWUgaXMgc3RvcmVkIGludG8gYQpsb2Nh bCB2YXJpYWJsZSAoaW5kZXBlbmRlbnRseSBvZiBtZW1vcnkgb3IgcmVnaXN0ZXIpIGFuZCBhbiBs ZmVuY2Ugd2FzCmV4ZWN1dGVkLCB0aGlzIHZhbHVlIGNhbiBiZSB0cnVzdGVkIGFuZCBkb2VzIG5v dCBoYXZlIHRvIGJlIGNoZWNrZWQKYWdhaW4sIGFzIGl0J3Mgbm8gbG9uZ2VyIGd1ZXN0IGNvbnRy b2xsZWQuCj4KPj4+IEFuZCB3aGF0IGFib3V0IF9zZXRfc3RhdHVzKCksIHVubWFwX2NvbW1vbl9j b21wbGV0ZSgpLAo+Pj4gZ250dGFiX2dyb3dfdGFibGUoKSwgZ250dGFiX3NldHVwX3RhYmxlKCks Cj4+PiByZWxlYXNlX2dyYW50X2Zvcl9jb3B5KCksIHRoZSAybmQgb25lIGluIGFjcXVpcmVfZ3Jh bnRfZm9yX2NvcHkoKSwKPj4+IHNldmVyYWwgb25lcyBpbiBnbnR0YWJfc2V0X3ZlcnNpb24oKSwg Z250dGFiX3JlbGVhc2VfbWFwcGluZ3MoKSwKPj4+IHRoZSAzcmQgb25lIGluIG1lbV9zaGFyaW5n X2dyZWZfdG9fZ2ZuKCksIGdudHRhYl9tYXBfZnJhbWUoKSwKPj4+IGFuZCBnbnR0YWJfZ2V0X3N0 YXR1c19mcmFtZSgpPwo+PiBQcm90ZWN0aW5nIHRoZSBmdW5jdGlvbiBpdHNlbGYgc2hvdWxkIGFs bG93IHRvIG5vdCBtb2RpZnkgdGhlCj4+IHNwZWN1bGF0aW9uIGd1YXJkcyBpbiB0aGVzZSBmdW5j dGlvbnMuIEkgd291bGQgaGF2ZSB0byBjaGVjayBlYWNoIG9mCj4+IHRoZW0sIHdoZXRoZXIgdGhl IGd1ZXN0IGFjdHVhbGx5IGhhcyBjb250cm9sLCBhbmQgd2hldGhlciBpdCBtYWtlcyBzZW5zZQo+ PiB0byBpbnRyb2R1Y2UgYSBfbm9zcGVjIHZhcmlhbnQgb2YgdGhlIG5yX2dyYW50X2VudHJpZXMg ZnVuY3Rpb24gdG8gbm90Cj4+IHBlbmFsaXplIGV2ZXJ5d2hlcmUuIERvIHlvdSBoYXZlIGFuIG9w aW5pb24gb24gdGhpcz8KPiBBcyBwZXIgYWJvdmUsIHllcywgSSB0aGluayB0aGUgb25seSBzdWZm aWNpZW50bHkgcmVsaWFibGUgd2F5IGlzCj4gdG8gbW9kaWZ5IG5yX2dyYW50X2VudHJpZXMoKSBp dHNlbGYuIFRoZSBxdWVzdGlvbiBpcyBob3cgdG8KPiBjb3JyZWN0bHkgZG8gdGhpcyB3aXRob3V0 IHJlcGxhY2luZyB0aGUgc3dpdGNoKCkgdGhlcmUsIHRoZSBtb3JlCj4gdGhhdCB0aGUgb3RoZXIg Y2hhbmdlIG9mIHlvdXJzIGhhcyBkZWxpYmVyYXRlbHkgZm9yY2VkIHRoZQo+IGNvbXBpbGVyIGlu dG8gdXNpbmcgcm93cyBvZiBjb21wYXJlcyBpbnN0ZWFkIG9mIGp1bXAgdGFibGVzIChub3QKPiB0 aGF0IEknZCBleHBlY3QgdGhlIGNvbXBpbGVyIHRvIGhhdmUgdXNlZCBhIGp1bXAgdGFibGUgaGVy ZSwgaS5lLgo+IHRoZSByZW1hcmsgaXMganVzdCB3cnQgdGhlIGdlbmVyYWwgY2FzZSkuCgpBcyBl eHBsYWluZWQgYWJvdmUsIHVzaW5nIHRoZSBibG9ja19zcGVjdWxhdGlvbigpIG1hY3JvIGluIGVh Y2ggY2FzZQpzdGF0ZW1lbnQgc2hvdWxkIHJlc3VsdCBpbiBzaW1pbGFyIGNvZGUgdGhhbiBjb252 ZXJ0aW5nIHRoZSBzd2l0Y2ggaW50bwphIGNoYWluIG9mIGlmIHN0YXRlbWVudHMgdGhhdCBhcmUg cHJvdGVjdGVkIGJ5IGV2YWx1YXRlX25vc3BlYyBtYWNyb3MuCgpCZXN0LApOb3JiZXJ0CgoKCgoK QW1hem9uIERldmVsb3BtZW50IENlbnRlciBHZXJtYW55IEdtYkgKS3JhdXNlbnN0ci4gMzgKMTAx MTcgQmVybGluCkdlc2NoYWVmdHNmdWVocmVyOiBDaHJpc3RpYW4gU2NobGFlZ2VyLCBSYWxmIEhl cmJyaWNoClVzdC1JRDogREUgMjg5IDIzNyA4NzkKRWluZ2V0cmFnZW4gYW0gQW10c2dlcmljaHQg Q2hhcmxvdHRlbmJ1cmcgSFJCIDE0OTE3MyBCCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs