From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH v3] virtio: force spec specified alignment on types Date: Tue, 21 Apr 2020 09:25:15 -0400 Message-ID: <20200421092418-mutt-send-email-mst@kernel.org> References: <20200420204448.377168-1-mst@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" To: Jason Wang Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org List-Id: virtualization@lists.linuxfoundation.org T24gVHVlLCBBcHIgMjEsIDIwMjAgYXQgMTA6Mzk6MTlBTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiAKPiBPbiAyMDIwLzQvMjEg5LiK5Y2INDo0NiwgTWljaGFlbCBTLiBUc2lya2luIHdyb3Rl Ogo+ID4gVGhlIHJpbmcgZWxlbWVudCBhZGRyZXNzZXMgYXJlIHBhc3NlZCBiZXR3ZWVuIGNvbXBv bmVudHMgd2l0aCBkaWZmZXJlbnQKPiA+IGFsaWdubWVudHMgYXNzdW1wdGlvbnMuIFRodXMsIGlm IGd1ZXN0L3VzZXJzcGFjZSBzZWxlY3RzIGEgcG9pbnRlciBhbmQKPiA+IGhvc3QgdGhlbiBnZXRz IGFuZCBkZXJlZmVyZW5jZXMgaXQsIHdlIG1pZ2h0IG5lZWQgdG8gZGVjcmVhc2UgdGhlCj4gPiBj b21waWxlci1zZWxlY3RlZCBhbGlnbm1lbnQgdG8gcHJldmVudCBjb21waWxlciBvbiB0aGUgaG9z dCBmcm9tCj4gPiBhc3N1bWluZyBwb2ludGVyIGlzIGFsaWduZWQuCj4gPiAKPiA+IFRoaXMgYWN0 dWFsbHkgdHJpZ2dlcnMgb24gQVJNIHdpdGggLW1hYmk9YXBjcy1nbnUgLSB3aGljaCBpcyBhCj4g PiBkZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24sIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBoYW5kbGUg dGhpcwo+ID4gZ2VuZXJhbGx5Lgo+ID4gCj4gPiBOb3RlIHRoYXQgdXNlcnNwYWNlIHRoYXQgYWxs b2NhdGVzIHRoZSBtZW1vcnkgaXMgYWN0dWFsbHkgT0sgYW5kIGRvZXMKPiA+IG5vdCBuZWVkIHRv IGJlIGZpeGVkLCBidXQgdXNlcnNwYWNlIHRoYXQgZ2V0cyBpdCBmcm9tIGd1ZXN0IG9yIGFub3Ro ZXIKPiA+IHByb2Nlc3MgZG9lcyBuZWVkIHRvIGJlIGZpeGVkLiBUaGUgbGF0ZXIgZG9lc24ndCBn ZW5lcmFsbHkgdGFsayB0byB0aGUKPiA+IGtlcm5lbCBzbyB3aGlsZSBpdCBtaWdodCBiZSBidWdn eSBpdCdzIG5vdCB0YWxraW5nIHRvIHRoZSBrZXJuZWwgaW4gdGhlCj4gPiBidWdneSB3YXkgLSBp dCdzIGp1c3QgdXNpbmcgdGhlIGhlYWRlciBpbiB0aGUgYnVnZ3kgd2F5IC0gc28gZml4aW5nCj4g PiBoZWFkZXIgYW5kIGFza2luZyB1c2Vyc3BhY2UgdG8gcmVjb21waWxlIGlzIHRoZSBiZXN0IHdl IGNhbiBkby4KPiA+IAo+ID4gSSB2ZXJpZmllZCB0aGF0IHRoZSBwcm9kdWNlZCBrZXJuZWwgYmlu YXJ5IG9uIHg4NiBpcyBleGFjdGx5IGlkZW50aWNhbAo+ID4gYmVmb3JlIGFuZCBhZnRlciB0aGUg Y2hhbmdlLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEBy ZWRoYXQuY29tPgo+ID4gLS0tCj4gPiAKPiA+IGNoYW5nZXMgZnJvbSB2MjoKPiA+IAlhZGQgdnJp bmdfdXNlZF9lbGVtX3QgdG8gZW5zdXJlIGFsaWdubWVudCBmb3Igc3Vic3RydWN0dXJlcwo+ID4g Y2hhbmdlcyBmcm9tIHYxOgo+ID4gCXN3aWN0aCBhbGwgX191c2VyIHRvIHRoZSBuZXcgdHlwZWRl ZnMKPiA+IAo+ID4gICBkcml2ZXJzL3Zob3N0L3Zob3N0LmMgICAgICAgICAgICB8ICA4ICsrKy0t LQo+ID4gICBkcml2ZXJzL3Zob3N0L3Zob3N0LmggICAgICAgICAgICB8ICA2ICsrLS0tCj4gPiAg IGRyaXZlcnMvdmhvc3QvdnJpbmdoLmMgICAgICAgICAgIHwgIDYgKystLS0KPiA+ICAgaW5jbHVk ZS9saW51eC92cmluZ2guaCAgICAgICAgICAgfCAgNiArKy0tLQo+ID4gICBpbmNsdWRlL3VhcGkv bGludXgvdmlydGlvX3JpbmcuaCB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t Cj4gPiAgIDUgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0p Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmMgYi9kcml2ZXJzL3Zo b3N0L3Zob3N0LmMKPiA+IGluZGV4IGQ0NTBlMTZjNWMyNS4uYmM3N2IwZjQ2NWZkIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jCj4gPiArKysgYi9kcml2ZXJzL3Zob3N0L3Zo b3N0LmMKPiA+IEBAIC0xMjQ0LDkgKzEyNDQsOSBAQCBzdGF0aWMgaW50IHZob3N0X2lvdGxiX21p c3Moc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHU2NCBpb3ZhLCBpbnQgYWNjZXNzKQo+ID4g ICB9Cj4gPiAgIHN0YXRpYyBib29sIHZxX2FjY2Vzc19vayhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVl ICp2cSwgdW5zaWduZWQgaW50IG51bSwKPiA+IC0JCQkgc3RydWN0IHZyaW5nX2Rlc2MgX191c2Vy ICpkZXNjLAo+ID4gLQkJCSBzdHJ1Y3QgdnJpbmdfYXZhaWwgX191c2VyICphdmFpbCwKPiA+IC0J CQkgc3RydWN0IHZyaW5nX3VzZWQgX191c2VyICp1c2VkKQo+ID4gKwkJCSB2cmluZ19kZXNjX3Qg X191c2VyICpkZXNjLAo+ID4gKwkJCSB2cmluZ19hdmFpbF90IF9fdXNlciAqYXZhaWwsCj4gPiAr CQkJIHZyaW5nX3VzZWRfdCBfX3VzZXIgKnVzZWQpCj4gPiAgIHsKPiA+ICAgCXJldHVybiBhY2Nl c3Nfb2soZGVzYywgdmhvc3RfZ2V0X2Rlc2Nfc2l6ZSh2cSwgbnVtKSkgJiYKPiA+IEBAIC0yMzAx LDcgKzIzMDEsNyBAQCBzdGF0aWMgaW50IF9fdmhvc3RfYWRkX3VzZWRfbihzdHJ1Y3Qgdmhvc3Rf dmlydHF1ZXVlICp2cSwKPiA+ICAgCQkJICAgIHN0cnVjdCB2cmluZ191c2VkX2VsZW0gKmhlYWRz LAo+ID4gICAJCQkgICAgdW5zaWduZWQgY291bnQpCj4gPiAgIHsKPiA+IC0Jc3RydWN0IHZyaW5n X3VzZWRfZWxlbSBfX3VzZXIgKnVzZWQ7Cj4gPiArCXZyaW5nX3VzZWRfZWxlbV90IF9fdXNlciAq dXNlZDsKPiA+ICAgCXUxNiBvbGQsIG5ldzsKPiA+ICAgCWludCBzdGFydDsKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmggYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmgKPiA+IGlu ZGV4IGY4NDAzYmQ0NmI4NS4uNjBjYWI0Yzc4MjI5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy92 aG9zdC92aG9zdC5oCj4gPiArKysgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmgKPiA+IEBAIC02Nyw5 ICs2Nyw5IEBAIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgewo+ID4gICAJLyogVGhlIGFjdHVhbCBy aW5nIG9mIGJ1ZmZlcnMuICovCj4gPiAgIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7Cj4gPiAgIAl1bnNp Z25lZCBpbnQgbnVtOwo+ID4gLQlzdHJ1Y3QgdnJpbmdfZGVzYyBfX3VzZXIgKmRlc2M7Cj4gPiAt CXN0cnVjdCB2cmluZ19hdmFpbCBfX3VzZXIgKmF2YWlsOwo+ID4gLQlzdHJ1Y3QgdnJpbmdfdXNl ZCBfX3VzZXIgKnVzZWQ7Cj4gPiArCXZyaW5nX2Rlc2NfdCBfX3VzZXIgKmRlc2M7Cj4gPiArCXZy aW5nX2F2YWlsX3QgX191c2VyICphdmFpbDsKPiA+ICsJdnJpbmdfdXNlZF90IF9fdXNlciAqdXNl ZDsKPiA+ICAgCWNvbnN0IHN0cnVjdCB2aG9zdF9pb3RsYl9tYXAgKm1ldGFfaW90bGJbVkhPU1Rf TlVNX0FERFJTXTsKPiA+ICAgCXN0cnVjdCBmaWxlICpraWNrOwo+ID4gICAJc3RydWN0IGV2ZW50 ZmRfY3R4ICpjYWxsX2N0eDsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3ZyaW5naC5j IGIvZHJpdmVycy92aG9zdC92cmluZ2guYwo+ID4gaW5kZXggYmE4ZTBkNmNmZDk3Li5lMDU5YTlh NDdjZGYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3Zob3N0L3ZyaW5naC5jCj4gPiArKysgYi9k cml2ZXJzL3Zob3N0L3ZyaW5naC5jCj4gPiBAQCAtNjIwLDkgKzYyMCw5IEBAIHN0YXRpYyBpbmxp bmUgaW50IHhmZXJfdG9fdXNlcihjb25zdCBzdHJ1Y3QgdnJpbmdoICp2cmgsCj4gPiAgICAqLwo+ ID4gICBpbnQgdnJpbmdoX2luaXRfdXNlcihzdHJ1Y3QgdnJpbmdoICp2cmgsIHU2NCBmZWF0dXJl cywKPiA+ICAgCQkgICAgIHVuc2lnbmVkIGludCBudW0sIGJvb2wgd2Vha19iYXJyaWVycywKPiA+ IC0JCSAgICAgc3RydWN0IHZyaW5nX2Rlc2MgX191c2VyICpkZXNjLAo+ID4gLQkJICAgICBzdHJ1 Y3QgdnJpbmdfYXZhaWwgX191c2VyICphdmFpbCwKPiA+IC0JCSAgICAgc3RydWN0IHZyaW5nX3Vz ZWQgX191c2VyICp1c2VkKQo+ID4gKwkJICAgICB2cmluZ19kZXNjX3QgX191c2VyICpkZXNjLAo+ ID4gKwkJICAgICB2cmluZ19hdmFpbF90IF9fdXNlciAqYXZhaWwsCj4gPiArCQkgICAgIHZyaW5n X3VzZWRfdCBfX3VzZXIgKnVzZWQpCj4gPiAgIHsKPiA+ICAgCS8qIFNhbmUgcG93ZXIgb2YgMiBw bGVhc2UhICovCj4gPiAgIAlpZiAoIW51bSB8fCBudW0gPiAweGZmZmYgfHwgKG51bSAmIChudW0g LSAxKSkpIHsKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZyaW5naC5oIGIvaW5jbHVk ZS9saW51eC92cmluZ2guaAo+ID4gaW5kZXggOWUyNzYzZDdjMTU5Li41OWJkNTBmOTkyOTEgMTAw NjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3ZyaW5naC5oCj4gPiArKysgYi9pbmNsdWRlL2xp bnV4L3ZyaW5naC5oCj4gPiBAQCAtMTA1LDkgKzEwNSw5IEBAIHN0cnVjdCB2cmluZ2hfa2lvdiB7 Cj4gPiAgIC8qIEhlbHBlcnMgZm9yIHVzZXJzcGFjZSB2cmluZ3MuICovCj4gPiAgIGludCB2cmlu Z2hfaW5pdF91c2VyKHN0cnVjdCB2cmluZ2ggKnZyaCwgdTY0IGZlYXR1cmVzLAo+ID4gICAJCSAg ICAgdW5zaWduZWQgaW50IG51bSwgYm9vbCB3ZWFrX2JhcnJpZXJzLAo+ID4gLQkJICAgICBzdHJ1 Y3QgdnJpbmdfZGVzYyBfX3VzZXIgKmRlc2MsCj4gPiAtCQkgICAgIHN0cnVjdCB2cmluZ19hdmFp bCBfX3VzZXIgKmF2YWlsLAo+ID4gLQkJICAgICBzdHJ1Y3QgdnJpbmdfdXNlZCBfX3VzZXIgKnVz ZWQpOwo+ID4gKwkJICAgICB2cmluZ19kZXNjX3QgX191c2VyICpkZXNjLAo+ID4gKwkJICAgICB2 cmluZ19hdmFpbF90IF9fdXNlciAqYXZhaWwsCj4gPiArCQkgICAgIHZyaW5nX3VzZWRfdCBfX3Vz ZXIgKnVzZWQpOwo+ID4gICBzdGF0aWMgaW5saW5lIHZvaWQgdnJpbmdoX2lvdl9pbml0KHN0cnVj dCB2cmluZ2hfaW92ICppb3YsCj4gPiAgIAkJCQkgICBzdHJ1Y3QgaW92ZWMgKmlvdmVjLCB1bnNp Z25lZCBudW0pCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19yaW5n LmggYi9pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3JpbmcuaAo+ID4gaW5kZXggOTIyM2MzYTVj NDZhLi5iMmMyMGY3OTQ0NzIgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdmly dGlvX3JpbmcuaAo+ID4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19yaW5nLmgKPiA+ IEBAIC04Niw2ICs4NiwxMyBAQAo+ID4gICAgKiBhdCB0aGUgZW5kIG9mIHRoZSB1c2VkIHJpbmcu IEd1ZXN0IHNob3VsZCBpZ25vcmUgdGhlIHVzZWQtPmZsYWdzIGZpZWxkLiAqLwo+ID4gICAjZGVm aW5lIFZJUlRJT19SSU5HX0ZfRVZFTlRfSURYCQkyOQo+ID4gKy8qIEFsaWdubWVudCByZXF1aXJl bWVudHMgZm9yIHZyaW5nIGVsZW1lbnRzLgo+ID4gKyAqIFdoZW4gdXNpbmcgcHJlLXZpcnRpbyAx LjAgbGF5b3V0LCB0aGVzZSBmYWxsIG91dCBuYXR1cmFsbHkuCj4gPiArICovCj4gPiArI2RlZmlu ZSBWUklOR19BVkFJTF9BTElHTl9TSVpFIDIKPiA+ICsjZGVmaW5lIFZSSU5HX1VTRURfQUxJR05f U0laRSA0Cj4gPiArI2RlZmluZSBWUklOR19ERVNDX0FMSUdOX1NJWkUgMTYKPiA+ICsKPiA+ICAg LyogVmlydGlvIHJpbmcgZGVzY3JpcHRvcnM6IDE2IGJ5dGVzLiAgVGhlc2UgY2FuIGNoYWluIHRv Z2V0aGVyIHZpYSAibmV4dCIuICovCj4gPiAgIHN0cnVjdCB2cmluZ19kZXNjIHsKPiA+ICAgCS8q IEFkZHJlc3MgKGd1ZXN0LXBoeXNpY2FsKS4gKi8KPiA+IEBAIC0xMTIsMjkgKzExOSw0MyBAQCBz dHJ1Y3QgdnJpbmdfdXNlZF9lbGVtIHsKPiA+ICAgCV9fdmlydGlvMzIgbGVuOwo+ID4gICB9Owo+ ID4gK3R5cGVkZWYgc3RydWN0IHZyaW5nX3VzZWRfZWxlbSBfX2FsaWduZWQoVlJJTkdfVVNFRF9B TElHTl9TSVpFKQo+ID4gKwl2cmluZ191c2VkX2VsZW1fdDsKPiA+ICsKPiA+ICAgc3RydWN0IHZy aW5nX3VzZWQgewo+ID4gICAJX192aXJ0aW8xNiBmbGFnczsKPiA+ICAgCV9fdmlydGlvMTYgaWR4 Owo+ID4gLQlzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVtIHJpbmdbXTsKPiA+ICsJdnJpbmdfdXNlZF9l bGVtX3QgcmluZ1tdOwo+ID4gICB9Owo+ID4gKy8qCj4gPiArICogVGhlIHJpbmcgZWxlbWVudCBh ZGRyZXNzZXMgYXJlIHBhc3NlZCBiZXR3ZWVuIGNvbXBvbmVudHMgd2l0aCBkaWZmZXJlbnQKPiA+ ICsgKiBhbGlnbm1lbnRzIGFzc3VtcHRpb25zLiBUaHVzLCB3ZSBtaWdodCBuZWVkIHRvIGRlY3Jl YXNlIHRoZSBjb21waWxlci1zZWxlY3RlZAo+ID4gKyAqIGFsaWdubWVudCwgYW5kIHNvIG11c3Qg dXNlIGEgdHlwZWRlZiB0byBtYWtlIHN1cmUgdGhlIF9fYWxpZ25lZCBhdHRyaWJ1dGUKPiA+ICsg KiBhY3R1YWxseSB0YWtlcyBob2xkOgo+ID4gKyAqCj4gPiArICogaHR0cHM6Ly9nY2MuZ251Lm9y Zy9vbmxpbmVkb2NzLy9nY2MvQ29tbW9uLVR5cGUtQXR0cmlidXRlcy5odG1sI0NvbW1vbi1UeXBl LUF0dHJpYnV0ZXMKPiA+ICsgKgo+ID4gKyAqIFdoZW4gdXNlZCBvbiBhIHN0cnVjdCwgb3Igc3Ry dWN0IG1lbWJlciwgdGhlIGFsaWduZWQgYXR0cmlidXRlIGNhbiBvbmx5Cj4gPiArICogaW5jcmVh c2UgdGhlIGFsaWdubWVudDsgaW4gb3JkZXIgdG8gZGVjcmVhc2UgaXQsIHRoZSBwYWNrZWQgYXR0 cmlidXRlIG11c3QKPiA+ICsgKiBiZSBzcGVjaWZpZWQgYXMgd2VsbC4gV2hlbiB1c2VkIGFzIHBh cnQgb2YgYSB0eXBlZGVmLCB0aGUgYWxpZ25lZCBhdHRyaWJ1dGUKPiA+ICsgKiBjYW4gYm90aCBp bmNyZWFzZSBhbmQgZGVjcmVhc2UgYWxpZ25tZW50LCBhbmQgc3BlY2lmeWluZyB0aGUgcGFja2Vk Cj4gPiArICogYXR0cmlidXRlIGdlbmVyYXRlcyBhIHdhcm5pbmcuCj4gPiArICovCj4gPiArdHlw ZWRlZiBzdHJ1Y3QgdnJpbmdfZGVzYyBfX2FsaWduZWQoVlJJTkdfREVTQ19BTElHTl9TSVpFKSB2 cmluZ19kZXNjX3Q7Cj4gPiArdHlwZWRlZiBzdHJ1Y3QgdnJpbmdfYXZhaWwgX19hbGlnbmVkKFZS SU5HX0FWQUlMX0FMSUdOX1NJWkUpIHZyaW5nX2F2YWlsX3Q7Cj4gPiArdHlwZWRlZiBzdHJ1Y3Qg dnJpbmdfdXNlZCBfX2FsaWduZWQoVlJJTkdfVVNFRF9BTElHTl9TSVpFKSB2cmluZ191c2VkX3Q7 Cj4gCj4gCj4gSSB3b25kZXIgd2hldGhlciB3ZSBjYW4gc2ltcGx5IHVzZSBfX2F0dHJpYnV0ZV9f KHBhY2tlZCkgaW5zdGVhZD8KPiAKPiBUaGFua3MKClBhY2tlZCBpcyAxIGJ5dGUgYWxpZ25tZW50 LiBBcyBzdWNoIGdlbmVyYXRlcyB2ZXJ5IGJhZCBjb2RlIGZvcgphY2Nlc3Nlcy4KCgo+IAo+ID4g Kwo+ID4gICBzdHJ1Y3QgdnJpbmcgewo+ID4gICAJdW5zaWduZWQgaW50IG51bTsKPiA+IC0Jc3Ry dWN0IHZyaW5nX2Rlc2MgKmRlc2M7Cj4gPiArCXZyaW5nX2Rlc2NfdCAqZGVzYzsKPiA+IC0Jc3Ry dWN0IHZyaW5nX2F2YWlsICphdmFpbDsKPiA+ICsJdnJpbmdfYXZhaWxfdCAqYXZhaWw7Cj4gPiAt CXN0cnVjdCB2cmluZ191c2VkICp1c2VkOwo+ID4gKwl2cmluZ191c2VkX3QgKnVzZWQ7Cj4gPiAg IH07Cj4gPiAtLyogQWxpZ25tZW50IHJlcXVpcmVtZW50cyBmb3IgdnJpbmcgZWxlbWVudHMuCj4g PiAtICogV2hlbiB1c2luZyBwcmUtdmlydGlvIDEuMCBsYXlvdXQsIHRoZXNlIGZhbGwgb3V0IG5h dHVyYWxseS4KPiA+IC0gKi8KPiA+IC0jZGVmaW5lIFZSSU5HX0FWQUlMX0FMSUdOX1NJWkUgMgo+ ID4gLSNkZWZpbmUgVlJJTkdfVVNFRF9BTElHTl9TSVpFIDQKPiA+IC0jZGVmaW5lIFZSSU5HX0RF U0NfQUxJR05fU0laRSAxNgo+ID4gLQo+ID4gICAjaWZuZGVmIFZJUlRJT19SSU5HX05PX0xFR0FD WQo+ID4gICAvKiBUaGUgc3RhbmRhcmQgbGF5b3V0IGZvciB0aGUgcmluZyBpcyBhIGNvbnRpbnVv dXMgY2h1bmsgb2YgbWVtb3J5IHdoaWNoIGxvb2tzCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVh bGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZv dW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=