From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm: Generalized NV Block Linear DRM format mod Date: Tue, 15 Oct 2019 17:42:10 +0200 Message-ID: References: <20191014221321.8163-1-jajones@nvidia.com> <20191014221321.8163-2-jajones@nvidia.com> <20191015141913.GO11828@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: James Jones Cc: David Airlie , Nouveau Dev , Ben Skeggs , dri-devel List-Id: nouveau.vger.kernel.org T24gVHVlLCBPY3QgMTUsIDIwMTkgYXQgNToxNCBQTSBKYW1lcyBKb25lcyA8amFqb25lc0Budmlk aWEuY29tPiB3cm90ZToKPgo+IE9uIDEwLzE1LzE5IDc6MTkgQU0sIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPiBPbiBNb24sIE9jdCAxNCwgMjAxOSBhdCAwMzoxMzoyMVBNIC0wNzAwLCBKYW1lcyBK b25lcyB3cm90ZToKPiA+PiBCdWlsZHMgdXBvbiB0aGUgZXhpc3RpbmcgTlZJRElBIDE2QngyIGJs b2NrIGxpbmVhcgo+ID4+IGZvcm1hdCBtb2RpZmllcnMgYnkgYWRkaW5nIG1vcmUgImZpZWxkcyIg dG8gdGhlCj4gPj4gZXhpc3RpbmcgcGFyYW1ldGVyaXplZAo+ID4+IERSTV9GT1JNQVRfTU9EX05W SURJQV8xNkJYMl9CTE9DSyBmb3JtYXQgbW9kaWZpZXIKPiA+PiBtYWNybyB0aGF0IGFsbG93IGZ1 bGx5IGRlZmluaW5nIGEgdW5pcXVlLWFjcm9zcy0KPiA+PiBhbGwtTlZJRElBLWhhcmR3YXJlIGJp dCBsYXlvdXQgdXNpbmcgYSBtaW5pbWFsCj4gPj4gc2V0IG9mIGZpZWxkcyBhbmQgdmFsdWVzLiAg VGhlIG5ldyBtb2RpZmllciBtYWNybwo+ID4+IERSTV9GT1JNQVRfTU9EX05WSURJQV9CTE9DS19M SU5FQVJfMkQgaXMKPiA+PiBlZmZlY3RpdmVseSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRo ZSBleGlzdGluZwo+ID4+IG1hY3JvLCBpbnRyb2R1Y2luZyBhIHN1cGVyc2V0IG9mIHRoZSBwcmV2 aW91c2x5Cj4gPj4gZGVmaW5hYmxlIGZvcm1hdCBtb2RpZmllcnMuCj4gPj4KPiA+PiBCYWNrd2Fy ZHMgY29tcGF0aWJpbGl0eSBoYXMgdHdvIHF1aXJrcy4gIEZpcnN0LAo+ID4+IHRoZSB6ZXJvIHZh bHVlIGZvciB0aGUgImtpbmQiIGZpZWxkLCB3aGljaCBpcwo+ID4+IGltcGxpZWQgYnkgdGhlIERS TV9GT1JNQVRfTU9EX05WSURJQV8xNkJYMl9CTE9DSwo+ID4+IG1hY3JvLCBtdXN0IGJlIHNwZWNp YWwgY2FzZWQgaW4gZHJpdmVycyBhbmQKPiA+PiBhc3N1bWVkIHRvIG1hcCB0byB0aGUgcHJlLVR1 cmluZyBnZW5lcmljIGtpbmQgb2YKPiA+PiAweGZlLCBzaW5jZSBhIGtpbmQgb2YgInplcm8iIGlz IHJlc2VydmVkIGZvcgo+ID4+IGxpbmVhciBidWZmZXIgbGF5b3V0cyBvbiBhbGwgR1BVcy4KPiA+ Pgo+ID4+IFNlY29uZCwgaXQgaXMgYXNzdW1lZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQo+ID4+ IGlzIG9ubHkgbmVlZGVkIHdoZW4gcnVubmluZyBvbiBUZWdyYSBHUFVzLCBhbmQKPiA+PiBzcGVj aWZpY2FsbHkgVGVncmEgR1BVcyBwcmlvciB0byBYYXZpZXIuICBUaGlzCj4gPj4gaXMgYmFzZWQg b24gdHdvIGFzc2VydGlvbnM6Cj4gPj4KPiA+PiAtVGVncmEgR1BVcyBwcmlvciB0byBYYXZpZXIg dXNlZCBhIHNsaWdodGx5Cj4gPj4gICBkaWZmZXJlbnQgcmF3IGJpdCBsYXlvdXQgdGhhbiBkZXNr dG9wIEdQVXMsCj4gPj4gICBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBkaXJlY3RseSBzaGFyZSBi bG9jawo+ID4+ICAgbGluZWFyIGJ1ZmZlcnMgYmV0d2VlbiB0aGUgdHdvLgo+ID4+Cj4gPj4gLVN1 cHBvcnQgZm9yIHRoZSBleGlzdGluZyBibG9jayBsaW5lYXIgbW9kaWZpZXJzCj4gPj4gICB3YXMg aW5jb21wbGV0ZSwgbWFraW5nIHRoZW0gdXNlZnVsIG9ubHkgZm9yCj4gPj4gICBleHBvcnRpbmcg YnVmZmVycyBjcmVhdGVkIGJ5IG5vdXZlYXUgYW5kCj4gPj4gICBpbXBvcnRpbmcgdGhlbSB0byBU ZWdyYSBEUk0gYXMgZnJhbWVidWZmZXJzIGZvcgo+ID4+ICAgc2NhbiBvdXQuICBUaGVyZSB3YXMg bm8gc3VwcG9ydCBmb3IgYWRkaW5nCj4gPj4gICBmcmFtZWJ1ZmZlcnMgdXNpbmcgZm9ybWF0IG1v ZGlmaWVycyBpbiBub3V2ZWF1LAo+ID4+ICAgbm9yIGltcG9ydGluZyBkbWEtYnVmL1BSSU1FIEdF TSBvYmplY3RzIGludG8KPiA+PiAgIG5vdXZlYXUgdXNlcnNwYWNlIGRyaXZlcnMgd2l0aCBtb2Rp ZmllcnMgaW4gTWVzYS4KPiA+Pgo+ID4+IEhlbmNlIGl0IGlzIGFzc3VtZWQgdGhlIHByaW9yIG1v ZGlmaWVycyB3ZXJlIG5vdAo+ID4+IGludGVuZGVkIGZvciB1c2Ugb24gZGVza3RvcCBHUFVzLCBh bmQgYXMgYQo+ID4+IGNvcnJvbGFyeSwgd2VyZSBub3QgaW50ZW5kZWQgdG8gc3VwcG9ydCBzaGFy aW5nCj4gPj4gYmxvY2sgbGluZWFyIGJ1ZmZlcnMgYWNyb3NzIHR3byBkaWZmZXJlbnQgTlZJRElB Cj4gPj4gR1BVcy4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IEphbWVzIEpvbmVzIDxqYWpvbmVz QG52aWRpYS5jb20+Cj4gPj4gLS0tCj4gPj4gICBpbmNsdWRlL3VhcGkvZHJtL2RybV9mb3VyY2Mu aCB8IDEwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gPj4gICAxIGZpbGUg Y2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL3VhcGkvZHJt L2RybV9mb3VyY2MuaAo+ID4+IGluZGV4IDNmZWVhYTNmOTg3YS4uY2M5ODUzZDQyYTI0IDEwMDY0 NAo+ID4+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX2ZvdXJjYy5oCj4gPj4gKysrIGIvaW5j bHVkZS91YXBpL2RybS9kcm1fZm91cmNjLmgKPiA+PiBAQCAtNDk3LDcgKzQ5Nyw5OSBAQCBleHRl cm4gIkMiIHsKPiA+PiAgICNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfTlZJRElBX1RFR1JBX1RJTEVE IGZvdXJjY19tb2RfY29kZShOVklESUEsIDEpCj4gPj4KPiA+PiAgIC8qCj4gPj4gLSAqIDE2Qngy IEJsb2NrIExpbmVhciBsYXlvdXQsIHVzZWQgYnkgZGVza3RvcCBHUFVzLCBhbmQgVGVncmEgSzEg YW5kIGxhdGVyCj4gPj4gKyAqIEdlbmVyYWxpemVkIEJsb2NrIExpbmVhciBsYXlvdXQsIHVzZWQg YnkgZGVza3RvcCBHUFVzIHN0YXJ0aW5nIHdpdGggTlY1MC9HODAsCj4gPj4gKyAqIGFuZCBUZWdy YSBHUFVzIHN0YXJ0aW5nIHdpdGggVGVncmEgSzEuCj4gPj4gKyAqCj4gPj4gKyAqIFBpeGVscyBh cmUgYXJyYW5nZWQgaW4gR3JvdXBzIG9mIEJ5dGVzIChHT0JzKS4gIEdPQiBzaXplIGFuZCBsYXlv dXQgdmFyaWVzCj4gPj4gKyAqIGJhc2VkIG9uIHRoZSBhcmNoaXRlY3R1cmUgZ2VuZXJhdGlvbi4g IEdPQnMgdGhlbXNlbHZlcyBhcmUgdGhlbiBhcnJhbmdlZCBpbgo+ID4+ICsgKiAzRCBibG9ja3Ms IHdpdGggdGhlIGJsb2NrIGRpbWVuc2lvbnMgKGluIHRlcm1zIG9mIEdPQnMpIGFsd2F5cyBiZWlu ZyBhIHBvd2VyCj4gPj4gKyAqIG9mIHR3bywgYW5kIGhlbmNlIGV4cHJlc3NpYmxlIGFzIHRoZWly IGxvZzIgZXF1aXZhbGVudCAoRS5nLiwgIjIiIHJlcHJlc2VudHMKPiA+PiArICogYSBibG9jayBk ZXB0aCBvciBoZWlnaHQgb2YgIjQiKS4KPiA+PiArICoKPiA+PiArICogQ2hhcHRlciAyMCAiUGl4 ZWwgTWVtb3J5IEZvcm1hdHMiIG9mIHRoZSBUZWdyYSBYMSBUUk0gZGVzY3JpYmVzIHRoaXMgZm9y bWF0Cj4gPj4gKyAqIGluIGZ1bGwgZGV0YWlsLgo+ID4+ICsgKgo+ID4+ICsgKiAgICAgICBNYWNy bwo+ID4+ICsgKiBCaXRzICBQYXJhbSBEZXNjcmlwdGlvbgo+ID4+ICsgKiAtLS0tICAtLS0tLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ID4+ICsgKgo+ID4+ICsgKiAgMzowICBoICAgICBsb2cyKGhlaWdodCkgb2YgZWFj aCBibG9jaywgaW4gR09Ccy4gIFBsYWNlZCBoZXJlIGZvcgo+ID4+ICsgKiAgICAgICAgICAgICBj b21wYXRpYmlsaXR5IHdpdGggdGhlIGV4aXN0aW5nCj4gPj4gKyAqICAgICAgICAgICAgIERSTV9G T1JNQVRfTU9EX05WSURJQV8xNkJYMl9CTE9DSygpLWJhc2VkIG1vZGlmaWVycy4KPiA+PiArICoK PiA+PiArICogIDQ6NCAgLSAgICAgTXVzdCBiZSAxLCB0byBpbmRpY2F0ZSBibG9jay1saW5lYXIg bGF5b3V0LiAgTmVjZXNzYXJ5IGZvcgo+ID4+ICsgKiAgICAgICAgICAgICBjb21wYXRpYmlsaXR5 IHdpdGggdGhlIGV4aXN0aW5nCj4gPj4gKyAqICAgICAgICAgICAgIERSTV9GT1JNQVRfTU9EX05W SURJQV8xNkJYMl9CTE9DSygpLWJhc2VkIG1vZGlmaWVycy4KPiA+PiArICoKPiA+PiArICogIDg6 NSAgLSAgICAgUmVzZXJ2ZWQgKFRvIHN1cHBvcnQgM0Qtc3VyZmFjZXMgd2l0aCB2YXJpYWJsZSBs b2cyKGRlcHRoKSBibG9jawo+ID4+ICsgKiAgICAgICAgICAgICBzaXplKS4gIE11c3QgYmUgemVy by4KPiA+PiArICoKPiA+PiArICogICAgICAgICAgICAgTm90ZSB0aGVyZSBpcyBubyBsb2cyKHdp ZHRoKSBwYXJhbWV0ZXIuICBTb21lIHBvcnRpb25zIG9mIHRoZQo+ID4+ICsgKiAgICAgICAgICAg ICBoYXJkd2FyZSBzdXBwb3J0IGEgYmxvY2sgd2lkdGggb2YgdHdvIGdvYnMsIGJ1dCBpdCBpcyBp bXByYWN0aWNhbAo+ID4+ICsgKiAgICAgICAgICAgICB0byB1c2UgZHVlIHRvIGxhY2sgb2Ygc3Vw cG9ydCBlbHNld2hlcmUsIGFuZCBoYXMgbm8ga25vd24KPiA+PiArICogICAgICAgICAgICAgYmVu ZWZpdHMuCj4gPj4gKyAqCj4gPj4gKyAqIDExOjkgIC0gICAgIFJlc2VydmVkIChUbyBzdXBwb3J0 IDJELWFycmF5IHRleHR1cmVzIHdpdGggdmFyaWFibGUgYXJyYXkgc3RyaWRlCj4gPj4gKyAqICAg ICAgICAgICAgIGluIGJsb2Nrcywgc3BlY2lmaWVkIHZpYSBsb2cyKHRpbGUgd2lkdGggaW4gYmxv Y2tzKSkuICBNdXN0IGJlCj4gPj4gKyAqICAgICAgICAgICAgIHplcm8uCj4gPj4gKyAqCj4gPj4g KyAqIDE5OjEyIGsgICAgIFBhZ2UgS2luZC4gIFRoaXMgdmFsdWUgZGlyZWN0bHkgbWFwcyB0byBh IGZpZWxkIGluIHRoZSBwYWdlCj4gPj4gKyAqICAgICAgICAgICAgIHRhYmxlcyBvZiBhbGwgR1BV cyA+PSBOVjUwLiAgSXQgYWZmZWN0cyB0aGUgZXhhY3QgbGF5b3V0IG9mIGJpdHMKPiA+PiArICog ICAgICAgICAgICAgaW4gbWVtb3J5IGFuZCBjYW4gYmUgZGVyaXZlZCBmcm9tIHRoZSB0dXBsZQo+ ID4+ICsgKgo+ID4+ICsgKiAgICAgICAgICAgICAgIChmb3JtYXQsIEdQVSBtb2RlbCwgY29tcHJl c3Npb24gdHlwZSwgc2FtcGxlcyBwZXIgcGl4ZWwpCj4gPj4gKyAqCj4gPj4gKyAqICAgICAgICAg ICAgIFdoZXJlIGNvbXByZXNzaW9uIHR5cGUgaXMgZGVmaW5lZCBiZWxvdy4gIElmIEdQVSBtb2Rl bCB3ZXJlCj4gPj4gKyAqICAgICAgICAgICAgIGltcGxpZWQgYnkgdGhlIGZvcm1hdCBtb2RpZmll ciwgZm9ybWF0LCBvciBtZW1vcnkgYnVmZmVyLCBwYWdlCj4gPj4gKyAqICAgICAgICAgICAgIGtp bmQgd291bGQgbm90IG5lZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGlmaWVyIGl0c2VsZiwg YnV0Cj4gPj4gKyAqICAgICAgICAgICAgIHNpbmNlIHRoZSBtb2RpZmllciBzaG91bGQgZGVmaW5l IHRoZSBsYXlvdXQgb2YgdGhlIGFzc29jaWF0ZWQKPiA+PiArICogICAgICAgICAgICAgbWVtb3J5 IGJ1ZmZlciBpbmRlcGVuZGVudCBmcm9tIGFueSBkZXZpY2Ugb3Igb3RoZXIgY29udGV4dCwgaXQK PiA+PiArICogICAgICAgICAgICAgbXVzdCBiZSBpbmNsdWRlZCBoZXJlLgo+ID4+ICsgKgo+ID4+ ICsgKiAgICAgICAgICAgICBUbyBncmFuZGZhdGhlciBpbiBwcmlvciBibG9jayBsaW5lYXIgZm9y bWF0IG1vZGlmaWVycyB0byB0aGlzCj4gPj4gKyAqICAgICAgICAgICAgIGxheW91dCwgdGhlIHBh Z2Uga2luZCAiMCIsIHdoaWNoIGNvcnJlc3BvbmRzIHRvICJwaXRjaC9saW5lYXIiCj4gPj4gKyAq ICAgICAgICAgICAgIGFuZCBoZW5jZSBpcyB1bnVzYWJsZSB3aXRoIGJsb2NrLWxpbmVhciBsYXlv dXRzLCBpcyByZW1hcHBlZAo+ID4+ICsgKiAgICAgICAgICAgICB3aXRoaW4gZHJpdmVycyB0byB0 aGUgdmFsdWUgMHhmZSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlCj4gPj4gKyAqICAgICAgICAg ICAgICJnZW5lcmljIiBraW5kIHVzZWQgZm9yIHNpbXBsZSBzaW5nbGUtc2FtcGxlIGNvbG9yIGZv cm1hdHMgb24KPiA+PiArICogICAgICAgICAgICAgcHJlLVR1cmluZyBHUFVzLgo+ID4KPiA+IEht LCBtYXliZSBhIHRpbnkgc3RhdGljIGlubGluZSBmdW5jdGlvbiB3aGljaCBjYW5vbml6YWxpemVz IG1vZGlmaWVycz8KPiA+IFNvbWV0aGluZyBsaWtlCj4gPgo+ID4gc3RhdGljIGlubGluZSB1NjQK PiA+IGRybV9mb3VyY2NfY2Fub25pY2FsaXplX252aWRpYV9ibG9ja19saW5lYXJfMmQodTY0IG1v ZGlmZXIsIGJvb2wKPiA+IGlzX3ByZV90dXJpbmcpCj4gPiB7Cj4gPiB9Cj4gPgo+ID4gV291bGQg dGhlbiBnaXZlIHlvdSBhIG5pY2UgcGxhY2UgdG8gc3RpY2sgdGhpcyBiYWNrd2FyZCBjb21wYXQg bm90ZSBhbmQKPiA+IG1ha2UgaXQgcmVhbGx5IGNsZWFyIHdoYXQgc2hvdWxkIGJlIGRvbmUuIEkg dGhpbmsgZXN0YWJsaXNoaW5nIHRoaXMgYXMgYQo+ID4gcGF0dGVybiB3b3VsZCBhbHNvIGJlIG5p Y2UsIHNpbmNlIEknbSBzdXJlIHdlJ2xsIGhhdmUgYSBwaWxlIG1vcmUgb2YgdGhlc2UKPiA+IGNh c2VzIHdoZXJlIG1vZGlmaWVycyB0dXJuIG91dCB0byBhc3N1bWUgYSBmZXcgdG9vIG1hbnkgdGhp bmdzIGFib3V0IHRoZQo+ID4gcGxhdGZvcm0gdGhleSdyZSB1c2VkIG9uICh3ZSBoYXZlIGEgc2lt aWxhciBjYXNlIG9uIHRoZSBpbnRlbCBzaWRlIHRvbykuCj4KPiBUbyBtYWtlIHN1cmUgSSdtIGNs ZWFyLCBpdCB3b3VsZCBiZWhhdmUgbGlrZSB0aGlzPwo+Cj4gICAgZml4ZWRfbW9kID0gY2Fub25p Y2FsaXplKG9sZF9zdHlsZV92YWxpZF9tb2QsIHRydWUpOwo+ICAgIGFzc2VydChmaXhlZF9tb2Qg PT0gb2xkX3N0eWxlX3ZhbGlkX21vZCB8ICgweGZlIDw8IDEyKSk7Cj4gICAgZml4ZWRfbW9kID0g Y2Fub25pY2FsaXplKG5ld19zdHlsZV92YWxpZF9tb2QsIFtmYWxzZSx0cnVlXSk7Cj4gICAgYXNz ZXJ0KGZpeGVkX21vZCA9PSBuZXdfc3R5bGVfdmFsaWRfbW9kKTsKPgo+IEknbSB1bmNsZWFyIHdo YXQgaXQgc2hvdWxkIGRvIGluIHRoaXMgY2FzZSB0aG91Z2g6Cj4KPiAgICBmaXhlZF9tb2QgPSBj YW5vbmljYWxpemUob2xkX3N0eWxlX3ZhbGlkX21vZCwgZmFsc2UpOwo+Cj4gU2luY2UgdGhlcmUn cyBubyBjb2RlIG91dCB0aGVyZSB1c2luZyB0aGUgb2xkIHN0eWxlIG1vZGlmaWVycyB3aXRoCj4g VHVyaW5nKyB5ZXQsIGFuZCBJIGRvbid0IHdhbnQgdG8gdHJ5IHRvIHN1cHBvcnQgc3VjaCB1c2Fn ZS4gIE1heWJlIGp1c3QKPiBkcm9wIHRoZSAiaXNfcHJlX3R1cmluZyIgcGFyYW1ldGVyIGFuZCBh bHdheXMgY2Fub25pY2FsaXplIGJ5IG1hcHBpbmcgMAo+IC0+IDB4ZmUgYXMgdGhlIGNvbW1lbnQg YWJvdmUgc3RhdGVzLCBhbmQgbm90IHRvdWNoaW5nIG90aGVyIHZhbHVlcz8gIE9yCj4gc2hvdWxk IGFueSBpbnZhbGlkIG1vZGlmaWVyLCBpbmNsdWRpbmcgdGhpcyBjYXNlLCByZXR1cm4KPiBEUk1f Rk9STUFUX01PRF9JTlZBTElEPyAgVGhpcyBsYXR0ZXIgaWRlYSBzZWVtcyByaXNreSBiZWNhdXNl IGl0IHdvdWxkCj4gY2F1c2Ugc29mdHdhcmUgY29tcGlsZWQgYWdhaW5zdCBvbGQgZHJtX2ZvdXJj Yy5oIHRvIHBvdGVudGlhbGx5IHJlamVjdAo+IGZvcm1hdCBtb2RpZmllcnMgZnJvbSBuZXdlciBr ZXJuZWxzIG9yIGxpYnJhcmllcyB3aXRoIGFuIGV4cGFuZGVkCj4gcmVwcmVzZW50YXRpb24sIGJ1 dCBtYXliZSB0aGF0J3Mgd2hhdCB3ZSB3YW50IGlmIG9ubHkgZHJpdmVyIGNvbXBvbmVudHMKPiBh cmUgc3VwcG9zZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLgoKVGhhdCdzIHdoZXJlIEknbSBzaG93 aW5nIHRoYXQgSSBoYXZlIG5vIGNsdWUgYWJvdXQgbnZpZGlhIGJ1ZmZlcgpmb3JtYXRzIEkgZ3Vl c3MgOi0pCgpJZiAwIG5ldmVyIG1ha2VzIHNlbnNlLCB0aGVuIHllYWggSSBndWVzcyB5b3UgY291 bGQganVzdAp1bmNvbmRpdGlvbmFsbHkgY2Fub25pY2FsaXplLiBNYXliZSB5b3Ugd2FudCB0byBy ZWplY3QgdGhlIG9sZC9sZWdhY3kKc3R5bGUgb24gdHVyaW5nKyBwbHVzLCBidXQgdGhhdCdzIGEg dHJhZGVvZmYgdXAgdG8geW91IGd1eXMgLSBhcyBsb25nCmFzIGl0J3MgY29uc2lzdGVudCBhY3Jv c3MgYWxsIGludm9sdmVkIGRyaXZlcnMuIE5vdCByZWplY3RpbmcgaXQgd291bGQKZXNzZW50aWFs bHkgbWFrZSAwIGFuIGFsaWFzIGZvciAweGZlIGV2ZXJ5d2hlcmUsIHBvc3QgYW5kIHByZS10dXJp bmcuCk1vcmUgcmVhc29ucyBmb3IgaGF2aW5nIGEgc2hhcmVkIGNhbm9uaWNhbGl6ZSBmdW5jdGlv biB3aGljaCBlbmZvcmNlcwp0aGUgc2FtZSBiZWhhdmlvdXIgKHdoaWNoZXZlciB5b3UgcGljaykg ZXZlcnl3aGVyZSBJIHRoaW5rLgoKQW5kIHllYWggdGhlIGNhbm9uaWNhbGl6ZSBmdW5jdGlvbiB3 b3VsZCBvbmx5IGJlIGNhbGxlZCBieSBkcml2ZXJzLApub3QgYnkgY2xpZW50cy4KLURhbmllbAoK Cj4gVGhhbmtzLAo+IC1KYW1lcwo+Cj4gPiBKdXN0IGEgZHJpdmUtYnkgaWRlYSwgZmVlbCBmcmVl IHRvIGlnbm9yZS4KPiA+Cj4gPiBDaGVlcnMsIERhbmllbAo+ID4KPiA+PiArICoKPiA+PiArICog MjE6MjAgZyAgICAgR09CIEhlaWdodCBhbmQgUGFnZSBLaW5kIEdlbmVyYXRpb24uICBUaGUgaGVp Z2h0IG9mIGEgR09CIGNoYW5nZWQKPiA+PiArICogICAgICAgICAgICAgc3RhcnRpbmcgd2l0aCBG ZXJtaSBHUFVzLiAgQWRkaXRpb25hbGx5LCB0aGUgbWFwcGluZyBiZXR3ZWVuIHBhZ2UKPiA+PiAr ICogICAgICAgICAgICAga2luZCBhbmQgYml0IGxheW91dCBoYXMgY2hhbmdlZCBhdCB2YXJpb3Vz IHBvaW50cy4KPiA+PiArICoKPiA+PiArICogICAgICAgICAgICAgICAwID0gR29iIEhlaWdodCA4 LCBGZXJtaSAtIFZvbHRhLCBUZWdyYSBLMSsgUGFnZSBLaW5kIG1hcHBpbmcKPiA+PiArICogICAg ICAgICAgICAgICAxID0gR29iIEhlaWdodCA0LCBHODAgLSBHVDJYWCBQYWdlIEtpbmQgbWFwcGlu Zwo+ID4+ICsgKiAgICAgICAgICAgICAgIDIgPSBHb2IgSGVpZ2h0IDgsIFR1cmluZysgUGFnZSBL aW5kIG1hcHBpbmcKPiA+PiArICogICAgICAgICAgICAgICAzID0gUmVzZXJ2ZWQgZm9yIGZ1dHVy ZSB1c2UuCj4gPj4gKyAqCj4gPj4gKyAqIDIyOjIyIHMgICAgIFNlY3RvciBsYXlvdXQuICBPbiBU ZWdyYSBHUFVzIHByaW9yIHRvIFhhdmllciwgdGhlcmUgaXMgYSBmdXJ0aGVyCj4gPj4gKyAqICAg ICAgICAgICAgIGJpdCByZW1hcHBpbmcgc3RlcCB0aGF0IG9jY3VycyBhdCBhbiBldmVuIGxvd2Vy IGxldmVsIHRoYW4gdGhlCj4gPj4gKyAqICAgICAgICAgICAgIHBhZ2Uga2luZCBhbmQgYmxvY2sg bGluZWFyIHN3aXp6bGVzLiAgVGhpcyBjYXVzZXMgdGhlIGxheW91dCBvZgo+ID4+ICsgKiAgICAg ICAgICAgICBzdXJmYWNlcyBtYXBwZWQgaW4gdGhvc2UgU09DJ3MgR1BVcyB0byBiZSBpbmNvbXBh dGlibGUgd2l0aCB0aGUKPiA+PiArICogICAgICAgICAgICAgZXF1aXZhbGVudCBtYXBwaW5nIG9u IG90aGVyIEdQVXMgaW4gdGhlIHNhbWUgc3lzdGVtLgo+ID4+ICsgKgo+ID4+ICsgKiAgICAgICAg ICAgICAgIDAgPSBUZWdyYSBLMSAtIFRlZ3JhIFBhcmtlci9UWDIgTGF5b3V0Lgo+ID4+ICsgKiAg ICAgICAgICAgICAgIDEgPSBEZXNrdG9wIEdQVSBhbmQgVGVncmEgWGF2aWVyKyBMYXlvdXQKPiA+ PiArICoKPiA+PiArICogMjQ6MjMgYyAgICAgTG9zc2xlc3MgRnJhbWVidWZmZXIgQ29tcHJlc3Np b24gdHlwZS4KPiA+PiArICoKPiA+PiArICogICAgICAgICAgICAgICAwID0gbm9uZQo+ID4+ICsg KiAgICAgICAgICAgICAgIDEgPSBST1AvM0QsIGFjdHVhbCBjb21wcmVzc2lvbiBpbXBsaWVkIGJ5 IHRoZSBQYWdlIEtpbmQgZmllbGQKPiA+PiArICogICAgICAgICAgICAgICAyID0gQ0RFIGhvcml6 b250YWwKPiA+PiArICogICAgICAgICAgICAgICAzID0gQ0RFIHZlcnRpY2FsCj4gPj4gKyAqCj4g Pj4gKyAqIDU1OjI1IC0gICAgIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiAgTXVzdCBiZSB6ZXJv Lgo+ID4+ICsgKi8KPiA+PiArI2RlZmluZSBEUk1fRk9STUFUX01PRF9OVklESUFfQkxPQ0tfTElO RUFSXzJEKGMsIHMsIGcsIGssIGgpIFwKPiA+PiArICAgIGZvdXJjY19tb2RfY29kZShOVklESUEs ICgweDEwIHwgXAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaCkgJiAweGYp IHwgXAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGspICYgMHhmZikgPDwg MTIpIHwgXAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGcpICYgMHgzKSA8 PCAyMCkgfCBcCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgocykgJiAweDEp IDw8IDIyKSB8IFwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChjKSAmIDB4 MykgPDwgMjMpKSkKPiA+PiArCj4gPj4gKy8qCj4gPj4gKyAqIDE2QngyIEJsb2NrIExpbmVhciBs YXlvdXQsIHVzZWQgYnkgVGVncmEgSzEgYW5kIGxhdGVyCj4gPj4gICAgKgo+ID4+ICAgICogUGl4 ZWxzIGFyZSBhcnJhbmdlZCBpbiA2NHg4IEdyb3VwcyBPZiBCeXRlcyAoR09CcykuIEdPQnMgYXJl IHRoZW4gc3RhY2tlZAo+ID4+ICAgICogdmVydGljYWxseSBieSBhIHBvd2VyIG9mIDIgKDEgdG8g MzIgR09CcykgdG8gZm9ybSBhIGJsb2NrLgo+ID4+IEBAIC01MTgsMjAgKzYxMCwyMCBAQCBleHRl cm4gIkMiIHsKPiA+PiAgICAqIGluIGZ1bGwgZGV0YWlsLgo+ID4+ICAgICovCj4gPj4gICAjZGVm aW5lIERSTV9GT1JNQVRfTU9EX05WSURJQV8xNkJYMl9CTE9DSyh2KSBcCj4gPj4gLSAgICBmb3Vy Y2NfbW9kX2NvZGUoTlZJRElBLCAweDEwIHwgKCh2KSAmIDB4ZikpCj4gPj4gKyAgICBEUk1fRk9S TUFUX01PRF9OVklESUFfQkxPQ0tfTElORUFSXzJEKDAsIDAsIDAsIDAsICh2KSkKPiA+Pgo+ID4+ ICAgI2RlZmluZSBEUk1fRk9STUFUX01PRF9OVklESUFfMTZCWDJfQkxPQ0tfT05FX0dPQiBcCj4g Pj4gLSAgICBmb3VyY2NfbW9kX2NvZGUoTlZJRElBLCAweDEwKQo+ID4+ICsgICAgRFJNX0ZPUk1B VF9NT0RfTlZJRElBXzE2QlgyX0JMT0NLKDApCj4gPj4gICAjZGVmaW5lIERSTV9GT1JNQVRfTU9E X05WSURJQV8xNkJYMl9CTE9DS19UV09fR09CIFwKPiA+PiAtICAgIGZvdXJjY19tb2RfY29kZShO VklESUEsIDB4MTEpCj4gPj4gKyAgICBEUk1fRk9STUFUX01PRF9OVklESUFfMTZCWDJfQkxPQ0so MSkKPiA+PiAgICNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfTlZJRElBXzE2QlgyX0JMT0NLX0ZPVVJf R09CIFwKPiA+PiAtICAgIGZvdXJjY19tb2RfY29kZShOVklESUEsIDB4MTIpCj4gPj4gKyAgICBE Uk1fRk9STUFUX01PRF9OVklESUFfMTZCWDJfQkxPQ0soMikKPiA+PiAgICNkZWZpbmUgRFJNX0ZP Uk1BVF9NT0RfTlZJRElBXzE2QlgyX0JMT0NLX0VJR0hUX0dPQiBcCj4gPj4gLSAgICBmb3VyY2Nf bW9kX2NvZGUoTlZJRElBLCAweDEzKQo+ID4+ICsgICAgRFJNX0ZPUk1BVF9NT0RfTlZJRElBXzE2 QlgyX0JMT0NLKDMpCj4gPj4gICAjZGVmaW5lIERSTV9GT1JNQVRfTU9EX05WSURJQV8xNkJYMl9C TE9DS19TSVhURUVOX0dPQiBcCj4gPj4gLSAgICBmb3VyY2NfbW9kX2NvZGUoTlZJRElBLCAweDE0 KQo+ID4+ICsgICAgRFJNX0ZPUk1BVF9NT0RfTlZJRElBXzE2QlgyX0JMT0NLKDQpCj4gPj4gICAj ZGVmaW5lIERSTV9GT1JNQVRfTU9EX05WSURJQV8xNkJYMl9CTE9DS19USElSVFlUV09fR09CIFwK PiA+PiAtICAgIGZvdXJjY19tb2RfY29kZShOVklESUEsIDB4MTUpCj4gPj4gKyAgICBEUk1fRk9S TUFUX01PRF9OVklESUFfMTZCWDJfQkxPQ0soNSkKPiA+Pgo+ID4+ICAgLyoKPiA+PiAgICAqIFNv bWUgQnJvYWRjb20gbW9kaWZpZXJzIHRha2UgcGFyYW1ldGVycywgZm9yIGV4YW1wbGUgdGhlIG51 bWJlciBvZgo+ID4+IC0tCj4gPj4gMi4xNy4xCj4gPj4KPiA+CgoKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgorNDEgKDApIDc5IDM2NSA1NyA0 OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v bm91dmVhdQ==