From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: Allocator Nouveau driver, Mesa EXT_external_objects, and DRM metadata import interfaces Date: Wed, 7 Mar 2018 18:23:39 +0100 Message-ID: <20180307172339.GF8589@phenom.ffwll.local> References: <20171220124134.0d69513b@nvidia.com> <20180221061446.GA201748@gaspar.pdx.corp.google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: mesa-dev-bounces@lists.freedesktop.org Sender: "mesa-dev" To: Alex Deucher Cc: Rob Clark , Chad Versace , Nicolai H??hnle , Kristian H??gsberg , dri-devel , Jason Ekstrand , Kristian H??gsberg , Ben Skeggs , mesa-dev , Lyude Paul , Miguel Angel Vico List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBGZWIgMjIsIDIwMTggYXQgMDQ6MTY6NTJQTSAtMDUwMCwgQWxleCBEZXVjaGVyIHdy b3RlOgo+IE9uIFRodSwgRmViIDIyLCAyMDE4IGF0IDE6NDkgUE0sIEJhcyBOaWV1d2VuaHVpemVu Cj4gPGJhc0BiYXNuaWV1d2VuaHVpemVuLm5sPiB3cm90ZToKPiA+IE9uIFRodSwgRmViIDIyLCAy MDE4IGF0IDc6MDQgUE0sIEtyaXN0aWFuIEg/P2dzYmVyZyA8aG9lZ3NiZXJnQGdtYWlsLmNvbT4g d3JvdGU6Cj4gPj4gT24gV2VkLCBGZWIgMjEsIDIwMTggYXQgNDowMCBQTSBBbGV4IERldWNoZXIg PGFsZXhkZXVjaGVyQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPj4KPiA+Pj4gT24gV2VkLCBGZWIgMjEs IDIwMTggYXQgMToxNCBBTSwgQ2hhZCBWZXJzYWNlIDxjaGFkdmVyc2FyeUBjaHJvbWl1bS5vcmc+ Cj4gPj4gd3JvdGU6Cj4gPj4+ID4gT24gVGh1IDIxIERlYyAyMDE3LCBEYW5pZWwgVmV0dGVyIHdy b3RlOgo+ID4+PiA+PiBPbiBUaHUsIERlYyAyMSwgMjAxNyBhdCAxMjoyMiBBTSwgS3Jpc3RpYW4g S3Jpc3RlbnNlbiA8Cj4gPj4gaG9lZ3NiZXJnQGdvb2dsZS5jb20+IHdyb3RlOgo+ID4+PiA+Pj4g T24gV2VkLCBEZWMgMjAsIDIwMTcgYXQgMTI6NDEgUE0sIE1pZ3VlbCBBbmdlbCBWaWNvIDwKPiA+ PiBtdmljb21veWFAbnZpZGlhLmNvbT4gd3JvdGU6Cj4gPj4+ID4+Pj4gT24gV2VkLCAyMCBEZWMg MjAxNyAxMTo1NDoxMCAtMDgwMCBLcmlzdGlhbiBIPz9nc2JlcmcgPAo+ID4+IGhvZWdzYmVyZ0Bn bWFpbC5jb20+IHdyb3RlOgo+ID4+PiA+Pj4+PiBJJ2QgbGlrZSB0byBzZWUgY29uY3JldGUgZXhh bXBsZXMgb2YgYWN0dWFsIGRpc3BsYXkgY29udHJvbGxlcnMKPiA+Pj4gPj4+Pj4gc3VwcG9ydGlu ZyBtb3JlIGZvcm1hdCBsYXlvdXRzIHRoYW4gd2hhdCBjYW4gYmUgc3BlY2lmaWVkIHdpdGggYSA2 NAo+ID4+PiA+Pj4+PiBiaXQgbW9kaWZpZXIuCj4gPj4+ID4+Pj4KPiA+Pj4gPj4+PiBUaGUgbWFp biBwcm9ibGVtIGlzIG91ciB0aWxpbmcgYW5kIG90aGVyIG1ldGFkYXRhIHBhcmFtZXRlcnMgY2Fu J3QKPiA+Pj4gPj4+PiBnZW5lcmFsbHkgZml0IGluIGEgbW9kaWZpZXIsIHNvIHdlIGZpbmQgcGFz c2luZyBhIGJsb2Igb2YgbWV0YWRhdGEgYQo+ID4+PiA+Pj4+IG1vcmUgc3VpdGFibGUgbWVjaGFu aXNtLgo+ID4+PiA+Pj4KPiA+Pj4gPj4+IEkgdW5kZXJzdGFuZCB0aGF0IHlvdSBtYXkgaGF2ZSBu IGtub2JzIHdpdGggYSB0b3RhbCBvZiBtb3JlIHRoYW4gYQo+ID4+IHRvdGFsIG9mCj4gPj4+ID4+ PiA1NiBiaXRzIHRoYXQgY29uZmlndXJlIHlvdXIgdGlsaW5nL3N3aXp6bGluZyBmb3IgY29sb3Ig YnVmZmVycy4gV2hhdAo+ID4+IEkgZG9uJ3QKPiA+Pj4gPj4+IGJ1eSBpcyB0aGF0IHlvdSBuZWVk IGFsbCB0aG9zZSBjb21iaW5hdGlvbnMgd2hlbiBwYXNzaW5nIGJ1ZmZlcnMKPiA+PiBhcm91bmQK PiA+Pj4gPj4+IGJldHdlZW4gY29kZWNzLCBjYW1lcmFzIGFuZCBkaXNwbGF5IGNvbnRyb2xsZXJz LiBFdmVuIGlmIHlvdSdyZQo+ID4+IHNoYXJpbmcKPiA+Pj4gPj4+IGJldHdlZW4gdGhlIHNhbWUg M0QgZHJpdmVycyBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLCBJIGV4cGVjdCBqdXN0Cj4gPj4gbG9j a2luZwo+ID4+PiA+Pj4gZG93biwgc2F5LCA2NCBkaWZmZXJlbnQgY29tYmluYXRpb25zICh5b3Ug Y2FuIGFkZCBtb3JlIG92ZXIgdGltZSkgYW5kCj4gPj4+ID4+PiBhc3NpZ25pbmcgZWFjaCBhIG1v ZGlmaWVyIHdvdWxkIGJlIHN1ZmZpY2llbnQuIEkgZG91YnQgeW91J2QgZXh0cmFjdAo+ID4+PiA+ Pj4gbWVhbmluZ2Z1bCBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIGdvaW5nIGFsbCB0aGUgd2F5IHRv IGEgYmxvYi4KPiA+Pj4gPgo+ID4+PiA+IEkgYWdyZWUgd2l0aCBLcmlzdGlhbiBhYm92ZS4gSW4g bXkgb3BpbmlvbiwgY2hvb3NpbmcgdG8gZW5jb2RlIGluCj4gPj4+ID4gbW9kaWZpZXJzIGEgcHJl Y2lzZSBkZXNjcmlwdGlvbiBvZiBldmVyeSBwb3NzaWJsZSB0aWxpbmcvY29tcHJlc3Npb24KPiA+ Pj4gPiBsYXlvdXQgaXMgbm90IHRlY2huaWNhbGx5IGluY29ycmVjdCwgYnV0IEkgYmVsaWV2ZSBp dCBtaXNzZXMgdGhlIHBvaW50Lgo+ID4+PiA+IFRoZSBpbnRlbnRpb24gYmVoaW5kIG1vZGlmaWVy cyBpcyBub3QgdG8gZXhoYXVzdGl2ZWx5IGRlc2NyaWJlIGFsbAo+ID4+PiA+IHBvc3NpYmlsaXRl cy4KPiA+Pj4gPgo+ID4+PiA+IEkgc3VtbWFyaXplZCB0aGlzIG9waW5pb24gaW4gVktfRVhUX2lt YWdlX2RybV9mb3JtYXRfbW9kaWZpZXIsCj4gPj4+ID4gd2hlcmUgSSB3cm90ZSBhbiAiaW50cm9k dXRpb24gdG8gbW9kaWZpZXJzIiBzZWN0aW9uLiBIZXJlJ3MgYW4gZXhjZXJwdDoKPiA+Pj4gPgo+ ID4+PiA+ICAgICBPbmUgZ29hbCBvZiBtb2RpZmllcnMgaW4gdGhlIExpbnV4IGVjb3N5c3RlbSBp cyB0byBlbnVtZXJhdGUgZm9yCj4gPj4gZWFjaAo+ID4+PiA+ICAgICB2ZW5kb3IgYSByZWFzb25h Ymx5IHNpemVkIHNldCBvZiB0aWxpbmcgZm9ybWF0cyB0aGF0IGFyZQo+ID4+IGFwcHJvcHJpYXRl IGZvcgo+ID4+PiA+ICAgICBpbWFnZXMgc2hhcmVkIGFjcm9zcyBwcm9jZXNzZXMsIEFQSXMsIGFu ZC9vciBkZXZpY2VzLCB3aGVyZSBlYWNoCj4gPj4+ID4gICAgIHBhcnRpY2lwYXRpbmcgY29tcG9u ZW50IG1heSBwb3NzaWJseSBiZSBmcm9tIGRpZmZlcmVudCB2ZW5kb3JzLgo+ID4+PiA+ICAgICBB IG5vbi1nb2FsIGlzIHRvIGVudW1lcmF0ZSBhbGwgdGlsaW5nIGZvcm1hdHMgc3VwcG9ydGVkIGJ5 IGFsbAo+ID4+IHZlbmRvcnMuCj4gPj4+ID4gICAgIFNvbWUgdGlsaW5nIGZvcm1hdHMgdXNlZCBp bnRlcm5hbGx5IGJ5IHZlbmRvcnMgYXJlIGluYXBwcm9wcmlhdGUgZm9yCj4gPj4+ID4gICAgIHNo YXJpbmc7IG5vIG1vZGlmaWVycyBzaG91bGQgYmUgYXNzaWduZWQgdG8gc3VjaCB0aWxpbmcgZm9y bWF0cy4KPiA+Pgo+ID4+PiBXaGVyZSBpdCBnZXRzIHRyaWNreSBpcyBob3cgdG8gc2VsZWN0IHRo YXQgc3Vic2V0PyAgT3VyIHRpbGluZyBtb2RlCj4gPj4+IGFyZSBkZWZpbmVkIG1vcmUgYnkgdGhl IGFzaWMgc3BlY2lmaWMgY29uc3RyYWludHMgdGhhbiB0aGUgdGlsaW5nIG1vZGUKPiA+Pj4gaXRz ZWxmLiAgQXQgYSBoaWdoIGxldmVsIHdlIGhhdmUgYmFzaWNhbGx5IDMgdGlsaW5nIG1vZGVzIChv dXQgb2YgMTYKPiA+Pj4gcG9zc2libGUpIHRoYXQgd291bGQgYmUgdGhlIG1pbmltdW0gd2UnZCB3 YW50IHRvIGV4cG9zZSBmb3IgZ2Z4Ni04Lgo+ID4+PiBnZng5IHVzZXMgYSBjb21wbGV0ZWx5IG5l dyBzY2hlbWUuCj4gPj4+IDEuIExpbmVhciAocGVyIGFzaWMgc3RyaWRlIHJlcXVpcmVtZW50cywg bm90IHVzYWJsZSBieSBtYW55IGh3IGJsb2NrcykKPiA+Pj4gMi4gMUQgVGhpbiAoNSBsYXlvdXRz LCBkaXNwbGF5YWJsZSwgZGVwdGgsIHRoaW4sIHJvdGF0ZWQsIHRoaWNrKQo+ID4+PiAzLiAyRCBU aGluICgxRCB0aWxpbmcgY29uc3RyYWludHMsIHBsdXMgcGlwZSBjb25maWcgKDE4IHBvc3NpYmxl KSwKPiA+Pj4gdGlsZSBzcGxpdCAoNyBwb3NzaWJsZSksIHNhbXBsZSBzcGxpdCAoNCBwb3NzaWJs ZSksIG51bSBiYW5rcyAoNAo+ID4+PiBwb3NzaWJsZSksIGJhbmsgd2lkdGggKDQgcG9zc2libGUp LCBiYW5rIGhlaWdodCAoNCBwb3NzaWJsZSksIG1hY3JvCj4gPj4+IHRpbGUgYXNwZWN0ICg0IHBv c3NpYmxlKSBhbGwgb2Ygd2hpY2ggYXJlIGFzaWMgY29uZmlnIHNwZWNpZmljKQo+ID4+Cj4gPj4+ IEkgZ3Vlc3Mgd2UgY291bGQgZG8gc29tZXRoaW5nIGxpa2U6Cj4gPj4+IEFNRF9HRlg2X0xJTkVB Ul9BTElHTkVEXzY0Qgo+ID4+PiBBTURfR0ZYNl9MSU5FQVJfQUxJR05FRF8yNTZCCj4gPj4+IEFN RF9HRlg2X0xJTkVBUl9BTElHTkVEXzUxMkIKPiA+Pj4gQU1EX0dGWDZfMURfVEhJTl9ESVNQTEFZ Cj4gPj4+IEFNRF9HRlg2XzFEX1RISU5fREVQVEgKPiA+Pj4gQU1EX0dGWDZfMURfVEhJTl9ST1RB VEVECj4gPj4+IEFNRF9HRlg2XzFEX1RISU5fVEhJTgo+ID4+PiBBTURfR0ZYNl8xRF9USElOX1RI SUNLCj4gPj4KPiA+PiBBTURfR0ZYNl8yRF8xRF9USElOX0RJU1BMQVlfUElQRV9DT05GSUdfUDJf VElMRV9TUExJVF82NEJfU0FNUExFX1NQTElUXzFfTlVNX0JBTktTXzJfQkFOS19XSURUSF8xX0JB TktfSEVJR0hUXzFfTUFDUk9fVElMRV9BU1BFQ1RfMQo+ID4+Cj4gPj4gQU1EX0dGWDZfMkRfMURf VEhJTl9ERVBUSF9QSVBFX0NPTkZJR19QMl9USUxFX1NQTElUXzY0Ql9TQU1QTEVfU1BMSVRfMV9O VU1fQkFOS1NfMl9CQU5LX1dJRFRIXzFfQkFOS19IRUlHSFRfMV9NQUNST19USUxFX0FTUEVDVF8x Cj4gPj4KPiA+PiBBTURfR0ZYNl8yRF8xRF9USElOX1JPVEFURURfUElQRV9DT05GSUdfUDJfVElM RV9TUExJVF82NEJfU0FNUExFX1NQTElUXzFfTlVNX0JBTktTXzJfQkFOS19XSURUSF8xX0JBTktf SEVJR0hUXzFfTUFDUk9fVElMRV9BU1BFQ1RfMQo+ID4+Cj4gPj4gQU1EX0dGWDZfMkRfMURfVEhJ Tl9USElOX1BJUEVfQ09ORklHX1AyX1RJTEVfU1BMSVRfNjRCX1NBTVBMRV9TUExJVF8xX05VTV9C QU5LU18yX0JBTktfV0lEVEhfMV9CQU5LX0hFSUdIVF8xX01BQ1JPX1RJTEVfQVNQRUNUXzEKPiA+ Pgo+ID4+IEFNRF9HRlg2XzJEXzFEX1RISU5fVEhJQ0tfUElQRV9DT05GSUdfUDJfVElMRV9TUExJ VF82NEJfU0FNUExFX1NQTElUXzFfTlVNX0JBTktTXzJfQkFOS19XSURUSF8xX0JBTktfSEVJR0hU XzFfTUFDUk9fVElMRV9BU1BFQ1RfMQo+ID4+Cj4gPj4gQU1EX0dGWDZfMkRfMURfVEhJTl9ESVNQ TEFZX1BJUEVfQ09ORklHX1A0Xzh4MTZfVElMRV9TUExJVF82NEJfU0FNUExFX1NQTElUXzFfTlVN X0JBTktTXzJfQkFOS19XSURUSF8xX0JBTktfSEVJR0hUXzFfTUFDUk9fVElMRV9BU1BFQ1RfMQo+ ID4+Cj4gPj4gQU1EX0dGWDZfMkRfMURfVEhJTl9ERVBUSF9QSVBFX0NPTkZJR19QNF84eDE2X1RJ TEVfU1BMSVRfNjRCX1NBTVBMRV9TUExJVF8xX05VTV9CQU5LU18yX0JBTktfV0lEVEhfMV9CQU5L X0hFSUdIVF8xX01BQ1JPX1RJTEVfQVNQRUNUXzEKPiA+Pgo+ID4+IEFNRF9HRlg2XzJEXzFEX1RI SU5fUk9UQVRFRF9QSVBFX0NPTkZJR19QNF84eDE2X1RJTEVfU1BMSVRfNjRCX1NBTVBMRV9TUExJ VF8xX05VTV9CQU5LU18yX0JBTktfV0lEVEhfMV9CQU5LX0hFSUdIVF8xX01BQ1JPX1RJTEVfQVNQ RUNUXzEKPiA+Pgo+ID4+IEFNRF9HRlg2XzJEXzFEX1RISU5fVEhJTl9QSVBFX0NPTkZJR19QNF84 eDE2X1RJTEVfU1BMSVRfNjRCX1NBTVBMRV9TUExJVF8xX05VTV9CQU5LU18yX0JBTktfV0lEVEhf MV9CQU5LX0hFSUdIVF8xX01BQ1JPX1RJTEVfQVNQRUNUXzEKPiA+Pgo+ID4+IEFNRF9HRlg2XzJE XzFEX1RISU5fVEhJQ0tfUElQRV9DT05GSUdfUDRfOHgxNl9USUxFX1NQTElUXzY0Ql9TQU1QTEVf U1BMSVRfMV9OVU1fQkFOS1NfMl9CQU5LX1dJRFRIXzFfQkFOS19IRUlHSFRfMV9NQUNST19USUxF X0FTUEVDVF8xCj4gPj4+IGV0Yy4KPiA+Pgo+ID4+PiBXZSBvbmx5IHByb2JhYmx5IG5lZWQgNDAg Yml0cyB0byBlbmNvZGUgYWxsIG9mIHRoZSB0aWxpbmcgcGFyYW1ldGVycwo+ID4+PiBzbyB3ZSBj b3VsZCBkbyBmYW1pbHksIHBsdXMgdGlsaW5nIGVuY29kaW5nIHRoYXQgc3RpbGwgc2VlbXMgdW53 aWVsZHkKPiA+Pj4gdG8gZGVhbCB3aXRoIGZyb20gYW4gYXBwbGljYXRpb24gcGVyc3BlY3RpdmUu ICBBbGwgb2YgdGhlIHBhcmFtZXRlcnMKPiA+Pj4gYWZmZWN0IHRoZSBhbGlnbm1lbnQgcmVxdWly ZW1lbnRzLgo+ID4+Cj4gPj4gV2UgZGlzY3Vzc2VkIHRoaXMgZWFybGllciBpbiB0aGUgdGhyZWFk LCBoZXJlJ3Mgd2hhdCBJIHNhaWQ6Cj4gPj4KPiA+PiBBbm90aGVyIHBvaW50IGhlcmUgaXMgdGhh dCB0aGUgbW9kaWZpZXIgZG9lc24ndCBuZWVkIHRvIGVuY29kZSBhbGwgdGhlCj4gPj4gdGhpbmcg eW91IGhhdmUgdG8gY29tbXVuaWNhdGUgdG8gdGhlIEhXLiBGb3IgYSBnaXZlbiB3aWR0aCwgaGVp Z2h0LCBmb3JtYXQsCj4gPj4gY29tcHJlc3Npb24gdHlwZSBhbmQgbWF5YmUgYSBmZXcgb3RoZXIg aGlnaC1sZXZlbCBwYXJhbWV0ZXJzLCBJJ20gc2tlcHRpY2FsCj4gPj4gdGhhdCB0aGUgcmVtYWlu aW5nIHRpbGUgcGFyYW1ldGVycyBhcmVuJ3QganVzdCBtZWNoYW5pY2FsbHkgZGVyaXZhYmxlIHVz aW5nCj4gPj4gYSBmaXhlZCB0YWJsZSBvciBmb3JtdWxhLiBTbyBpbnN0ZWFkIG9mIHRoaW5raW5n IG9mIHRoZSBtb2RpZmllcnMgYXMKPiA+PiBzb21ldGhpbmcgeW91IGNhbiBqdXN0IG1lbWNweSBp bnRvIGEgc3RhdGUgcGFja2V0LCBpdCBpZGVudGlmaWVzIGEgZmFtaWx5Cj4gPj4gb2YgY29uZmln dXJhdGlvbnMgLSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5pc3RpY2FsbHkgZGVyaXZl IHRoZSBmdWxsCj4gPj4gZXhhY3QgY29uZmlndXJhdGlvbi4gVGhlIGZvcm11bGEgbWF5IGNoYW5n ZSwgZm9yIGV4YW1wbGUgZm9yIGRpZmZlcmVudAo+ID4+IGhhcmR3YXJlIG9yIGlmIGl0J3MgZGV0 ZXJtaW5lZCB0byBub3QgYmUgb3B0aW1hbCwgYW5kIGluIHRoYXQgY2FzZSwgd2UgY2FuCj4gPj4g dXNlIGEgbmV3IG1vZGlmaWVyIHRvIHJlcHJlc2VudCB0byBuZXcgZm9ybXVsYS4KPiA+Cj4gPiBJ IHRoaW5rIHRoaXMgaXMgbm90IHNvIG11Y2ggYWJvdXQgYmVpbmcgYWJsZSB0byBkdW1wIGl0IGlu IGEgc3RhdGUKPiA+IHBhY2tldCwgYnV0IGFib3V0IHNoYXJpbmcgYmV0d2VlbiBkaWZmZXJlbnQg R1BVcyBvZiBBTUQuIFdlIGhhdmUKPiA+IGJhc2ljYWxseSBvbmx5IGEgZmV3IGludGVyZXN0aW5n IHRpbGluZyBtb2RlcyBpZiB5b3UgbG9vayBhdCBhIHNpbmdsZQo+ID4gR1BVLCBidXQgY2hlY2tp bmcgaWYgdGhvc2UgYXJlIGVxdWFsIGRlcGVuZHMgb24gdGhlIG90aGVyIGJpdHMgIHdoaWNoCj4g PiBtYXkgb3IgbWF5IG5vdCBiZSBkaWZmZXJlbnQgcGVyIGNoaXAgZm9yIHRoZSBzYW1lIGNvbmNl cHR1YWwgdGlsaW5nCj4gPiBtb2RlLiBXZSBjb3VsZCBqdXN0IHB1dCBhIGNoaXAgaWRlbnRpZmll ciBpbiwgYnV0IHRoYXQgd291bGQgcHJlY2x1ZGUKPiA+IGFueSBzaGFyaW5nIHdoaWxlIEkgdGhp bmsgd2UgY2FuIGRvIHNvbWUuCj4gCj4gUmlnaHQuICBBbmQgdGhlIDJEIG9uZXMsIHdoaWxlIHRo ZXkgYXJlIHRoZSBtb3N0IGNvbXBsaWNhdGVkLCBhcmUgYWxzbwo+IHRoZSBtb3N0IGludGVyZXN0 aW5nIGZyb20gYSBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSBzbyBpZGVhbGx5IHlvdSdkCj4gZmlu ZCBhIG1hdGNoIG9uIG9uZSBvZiB0aG9zZS4gIElmIHlvdSBkb24ndCBleHBvc2UgdGhlIDJEIG1v ZGVzLAo+IHRoZXJlJ3Mgbm90IG11Y2ggcG9pbnQgaW4gc3VwcG9ydGluZyBtb2RpZmllcnMgYXQg YWxsLgoKMS4gTWFrZSBzdXJlIHlvdSBoYXZlIGEgdGVzdCBmYXJtIGNvdmVyaW5nIGFsbCB5b3Vy IHVzZSBjYXNlcyBhbmQgaHcuCgoyLiBDcmVhdGUgYSBzdHJ1Y3QgdGhhdCBlbmNvZGVzIGV2ZXJ5 dGhpbmcuIE1ha2UgaXQgYSBmZXcga2IgYmlnIGlmIGl0IGhhcwp0byBiZSwgd2hhdGV2ZXIgaXQg dGFrZXMuCgozLiBEbyBhIGxpdHRsZSBsaWJyYXJ5IHRoYXQgY29udGFpbnMgYSBodWdlIHRhYmxl IG1hcHBpbmcgbW9kaWZpZXJzIHRvCnRoZXNlIHN0cnVjdHMsIGFuZCBvbmUgZnVuY3Rpb24gdGhh dCByZXR1cm5zIHlvdSB0aGUgdW5pcXVlIG1vZGlmaWVyIGZvcgp0aGUgZ2l2ZW4gdGlsaW5nIGxh eW91dCBkZXNjcmlwdGlvbiBzdHJ1Y3QuIFdlIGNhbiBoYXZlIHRoYXQgaW4gdGhlIGtlcm5lbApz b3VyY2VzLCBvciBqdXN0IGRlbGVnYXRlIHRoZSBlbnRpcmUgQU1EIG1vZGlmaWVyIGJsb2NrIHRv IHNvbWUgdXNlcnNwYWNlCmxpYnJhcnkgeW91J3JlIG1hbmFnaW5nICh3aXRoIGp1c3QgdGhlIGZl dyBtb2RpZmllcnMgdGhlIGtlcm5lbCBuZWVkcyBpbgp0aGUgdWFwaS9kcm1fZm91cmNjLmggaGVh ZGVyKS4gSWYgdGhlIGxpYiBkb2Vzbid0IGZpbmQgdGhlIG1vZGlmaWVyLCBtYWtlCml0IGNyYXNo IHdpdGggYSBuaWNlIGxvdWQgYmFja3RyYWNlLgoKNC4gQWRkIG1vZGlmaWVycyB0byB0aGF0IGxp YiB1bnRpbCB5b3Ugc3RvcCBmYWlsaW5nIG9uIHRoZSB0ZXN0IGZhcm0uCgo1IG9wdGlvbmFsOiBN YWtlIHRoZSBsaWIgZmFzdGVyIHdpdGggaGFzaGluZy9jb21wcmVzc2luZy93aGF0ZXZlciBpZiBp dAp0dXJucyBvdXQgdG8gYmUgYSBib3R0bGVuZWNrIHNvbWV3aGVyZS4gU2luY2UgeW91J2xsIG9u bHkgZXZlciBuZWVkIGl0IG9uCmltcG9ydC9leHBvcnQsIGFkZCBhIHNtYWxsIGNhY2hlIHdpdGgg dGhlIHJlbGV2YW50IGZldyBlbnRyaWVzIGZvciB0aGUKZGV2aWNlIGluc3RhbmNlIGF0IGhhbmQg YW5kIEkgZG9uJ3QgZXhwZWN0IHRoaXMgd2lsbCBiZSBhIHByb2JsZW0sIGV2ZXIuCgpJJ20gcHJl dHR5IHN1cmUgeW91J2xsIGZpbmlzaCBzdGVwIDQgYmVmb3JlIHlvdSBydW4gb3V0IG9mIG1vZGlm aWVycy4gSWYKeW91IGRvbid0LCB0aGVuIHdlIHN1Y2sgaXQgdXAsIGFkbWl0IHNoZWVwaXNobHkg dGhhdCBtb2RpZmllcnMgdHVybmVkIG91dAp0byBiZSBhIHN0dXBpZCBpZGVhIGFuZCByZXYgdGhl IGtlcm5lbCdzIHVhcGkuIFdlIGtub3cgaG93IHRvIGRvIHRoYXQsIGJ1dApJIGFsc28gZG9uJ3Qg d2FudCB0byByZXYgdWFwaSBqdXN0IGZvciBmdW4uCgpDaGVlcnMsIERhbmllbAotLSAKRGFuaWVs IFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bWVzYS1kZXYgbWFpbGluZyBsaXN0Cm1lc2EtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL21lc2EtZGV2Cg==