From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 9/9] drm/i915: Add render decompression support Date: Tue, 10 Jan 2017 19:04:19 +0200 Message-ID: <20170110170419.GF31595@intel.com> References: <20170104184232.23048-10-ville.syrjala@linux.intel.com> <20170105151454.12862-1-ville.syrjala@linux.intel.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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jason Ekstrand Cc: Ben Widawsky , Paulo Zanoni , intel-gfx@lists.freedesktop.org, Maling list - DRI developers , Vandana Kannan List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKYW4gMDksIDIwMTcgYXQgMTE6MjA6NTdBTSAtMDgwMCwgSmFzb24gRWtzdHJhbmQg d3JvdGU6Cj4gT24gVGh1LCBKYW4gNSwgMjAxNyBhdCA3OjE0IEFNLCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+IHdyb3RlOgo+IAo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Cj4gPiBTS0wrIGRpc3BsYXkgZW5naW5lIGNh biBzY2FuIG91dCBjZXJ0YWluIGtpbmRzIG9mIGNvbXByZXNzZWQgc3VyZmFjZXMKPiA+IHByb2R1 Y2VkIGJ5IHRoZSByZW5kZXIgZW5naW5lLiBUaGlzIGludm9sdmVkIHRlbGxpbmcgdGhlIGRpc3Bs YXkgZW5naW5lCj4gPiB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbG9yIGNvbnRyb2wgc3VyZmFlIChD Q1MpIHdoaWNoIGRlc2NyaWJlcwo+ID4gd2hpY2ggcGFydHMgb2YgdGhlIG1haW4gc3VyZmFjZSBh cmUgY29tcHJlc3NlZCBhbmQgd2hpY2ggYXJlIG5vdC4gVGhlCj4gPiBsb2NhdGlvbiBvZiBDQ1Mg aXMgcHJvdmlkZWQgYnkgdXNlcnNwYWNlIGFzIGp1c3QgYW5vdGhlciBwbGFuZSB3aXRoIGl0cwo+ ID4gb3duIG9mZnNldC4KPiA+Cj4gPiBBZGQgdGhlIHJlcXVpcmVkIHN0dWZmIHRvIHZhbGlkYXRl IHRoZSB1c2VyIHByb3ZpZGVkIEFVWCBwbGFuZSBtZXRhZGF0YQo+ID4gYW5kIGNvbnZlcnQgdGhl IHVzZXIgcHJvdmlkZWQgbGluZWFyIG9mZnNldCBpbnRvIHNvbWV0aGluZyB0aGUgaGFyZHdhcmUK PiA+IGNhbiBjb25zdW1lLgo+ID4KPiA+IER1ZSB0byBoYXJkd2FyZSBsaW1pdGF0aW9ucyB3ZSBy ZXF1aXJlIHRoYXQgdGhlIG1haW4gc3VyZmFjZSBhbmQKPiA+IHRoZSBBVVggc3VyZmFjZSAoQ0NT KSBiZSBwYXJ0IG9mIHRoZSBzYW1lIGJvLiBUaGUgaGFyZHdhcmUgYWxzbwo+ID4gbWFrZXMgbGlm ZSBoYXJkIGJ5IG5vdCBhbGxvd2luZyB5b3UgdG8gcHJvdmlkZSBzZXBhcmF0ZSB4L3kgb2Zmc2V0 cwo+ID4gZm9yIHRoZSBtYWluIGFuZCBBVVggc3VyZmFjZXMgKGV4Y3BldCB3aXRoIE5WMTIpLCBz byBmaW5kaW5nIHN1aXRhYmxlCj4gPiBvZmZzZXRzIGZvciBib3RoIHJlcXVpcmVzIGEgYml0IG9m IHdvcmsuIEFzc3VtaW5nIHdlIHN0aWxsIHdhbnQga2VlcAo+ID4gcGxheWluZyB0cmlja3Mgd2l0 aCB0aGUgb2Zmc2V0cy4gSSd2ZSBqdXN0IGdvbmUgd2l0aCBhIGR1bWIgInNlYXJjaAo+ID4gYmFj a3dhcmQgZm9yIHN1aXRhYmxlIG9mZnNldHMiIGFwcHJvYWNoLCB3aGljaCBpcyBmYXIgZnJvbSBv cHRpbWFsLAo+ID4gYnV0IGl0IHdvcmtzLgo+ID4KPiA+IEFsc28gbm90IGFsbCBwbGFuZXMgd2ls bCBiZSBjYXBhYmxlIG9mIHNjYW5uaW5nIG91dCBjb21wcmVzc2VkIHN1cmZhY2VzLAo+ID4gYW5k IGVnLiA5MC8yNzAgZGVncmVlIHJvdGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gY29tYmluYXRp b24gd2l0aAo+ID4gZGVjb21wcmVzc2lvbiBlaXRoZXIuCj4gPgo+ID4gVGhpcyBwYXRjaCBtYXkg Y29udGFpbiB3b3JrIGZyb20gYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBwZW9wbGU6Cj4gPiAqIFZh bmRhbmEgS2FubmFuIDx2YW5kYW5hLmthbm5hbkBpbnRlbC5jb20+Cj4gPiAqIERhbmllbCBWZXR0 ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+ICogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0 Pgo+ID4KPiA+IHYyOiBEZWFsIHdpdGggZGlzcGxheSB3b3JrYXJvdW5kcyAwMzkwLCAwNTMxLCAx MTI1IChQYXVsbykKPiA+Cj4gPiBDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRl bC5jb20+Cj4gPiBDYzogVmFuZGFuYSBLYW5uYW4gPHZhbmRhbmEua2FubmFuQGludGVsLmNvbT4K PiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gPiBDYzogQmVuIFdpZGF3 c2t5IDxiZW5AYndpZGF3c2submV0Pgo+ID4gQ2M6IEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVr c3RyYW5kLm5ldD4KPiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oICAgICAgfCAgMjMgKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyB8IDIzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICsrLS0t Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgIDI5ICsrKystCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICA1ICsKPiA+ICA0IGZp bGVzIGNoYW5nZWQsIDI3NCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfCj4gPiByZWcuaAo+ID4gaW5kZXggMDA5NzBhYTc3YWZhLi42ODQ5YmE5 M2YxZDkgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBAQCAtNjIwOSw2ICs2 MjA5LDI4IEBAIGVudW0gewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgX0lEKGlkLCBfUFNf RUNDX1NUQVRfMUEsIF9QU19FQ0NfU1RBVF8yQSksICAgXAo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgX0lEKGlkLCBfUFNfRUNDX1NUQVRfMUIsIF9QU19FQ0NfU1RBVF8yQikpCj4gPgo+ID4g KyNkZWZpbmUgUExBTkVfQVVYX0RJU1RfMV9BICAgICAgICAgICAgIDB4NzAxYzAKPiA+ICsjZGVm aW5lIFBMQU5FX0FVWF9ESVNUXzJfQSAgICAgICAgICAgICAweDcwMmMwCj4gPiArI2RlZmluZSBQ TEFORV9BVVhfRElTVF8xX0IgICAgICAgICAgICAgMHg3MTFjMAo+ID4gKyNkZWZpbmUgUExBTkVf QVVYX0RJU1RfMl9CICAgICAgICAgICAgIDB4NzEyYzAKPiA+ICsjZGVmaW5lIF9QTEFORV9BVVhf RElTVF8xKHBpcGUpIFwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIF9QSVBFKHBpcGUsIFBM QU5FX0FVWF9ESVNUXzFfQSwgUExBTkVfQVVYX0RJU1RfMV9CKQo+ID4gKyNkZWZpbmUgX1BMQU5F X0FVWF9ESVNUXzIocGlwZSkgXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgX1BJUEUocGlw ZSwgUExBTkVfQVVYX0RJU1RfMl9BLCBQTEFORV9BVVhfRElTVF8yX0IpCj4gPiArI2RlZmluZSBQ TEFORV9BVVhfRElTVChwaXBlLCBwbGFuZSkgICAgIFwKPiA+ICsgICAgICAgX01NSU9fUExBTkUo cGxhbmUsIF9QTEFORV9BVVhfRElTVF8xKHBpcGUpLAo+ID4gX1BMQU5FX0FVWF9ESVNUXzIocGlw ZSkpCj4gPiArCj4gPiArI2RlZmluZSBQTEFORV9BVVhfT0ZGU0VUXzFfQSAgICAgICAgICAgMHg3 MDFjNAo+ID4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVF8yX0EgICAgICAgICAgIDB4NzAyYzQK PiA+ICsjZGVmaW5lIFBMQU5FX0FVWF9PRkZTRVRfMV9CICAgICAgICAgICAweDcxMWM0Cj4gPiAr I2RlZmluZSBQTEFORV9BVVhfT0ZGU0VUXzJfQiAgICAgICAgICAgMHg3MTJjNAo+ID4gKyNkZWZp bmUgX1BMQU5FX0FVWF9PRkZTRVRfMShwaXBlKSAgICAgICBcCj4gPiArICAgICAgICAgICAgICAg X1BJUEUocGlwZSwgUExBTkVfQVVYX09GRlNFVF8xX0EsIFBMQU5FX0FVWF9PRkZTRVRfMV9CKQo+ ID4gKyNkZWZpbmUgX1BMQU5FX0FVWF9PRkZTRVRfMihwaXBlKSAgICAgICBcCj4gPiArICAgICAg ICAgICAgICAgX1BJUEUocGlwZSwgUExBTkVfQVVYX09GRlNFVF8yX0EsIFBMQU5FX0FVWF9PRkZT RVRfMl9CKQo+ID4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZSkgICBcCj4g PiArICAgICAgIF9NTUlPX1BMQU5FKHBsYW5lLCBfUExBTkVfQVVYX09GRlNFVF8xKHBpcGUpLAo+ ID4gX1BMQU5FX0FVWF9PRkZTRVRfMihwaXBlKSkKPiA+ICsKPiA+ICAvKiBsZWdhY3kgcGFsZXR0 ZSAqLwo+ID4gICNkZWZpbmUgX0xHQ19QQUxFVFRFX0EgICAgICAgICAgIDB4NGEwMDAKPiA+ICAj ZGVmaW5lIF9MR0NfUEFMRVRURV9CICAgICAgICAgICAweDRhODAwCj4gPiBAQCAtNjQzMyw2ICs2 NDU1LDcgQEAgZW51bSB7Cj4gPiAgIyBkZWZpbmUgQ0hJQ0tFTjNfREdNR19ET05FX0ZJWF9ESVNB QkxFICAgICAgICAgICAgICAgICgxIDw8IDIpCj4gPgo+ID4gICNkZWZpbmUgQ0hJQ0tFTl9QQVIx XzEgICAgICAgICBfTU1JTygweDQyMDgwKQo+ID4gKyNkZWZpbmUgIFNLTF9SQ19IQVNIX09VVFNJ REUgICAoMSA8PCAxNSkKPiA+ICAjZGVmaW5lICBEUEFfTUFTS19WQkxBTktfU1JEICAgKDEgPDwg MTUpCj4gPiAgI2RlZmluZSAgRk9SQ0VfQVJCX0lETEVfUExBTkVTICgxIDw8IDE0KQo+ID4gICNk ZWZpbmUgIFNLTF9FRFBfUFNSX0ZJWF9SRFdSQVAgICAgICAgICgxIDw8IDMpCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggMzhkZTlkZjBlYzYwLi4yMjM2 YWJlYmQ4YmMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g QEAgLTIwNjQsMTEgKzIwNjQsMTkgQEAgaW50ZWxfdGlsZV93aWR0aF9ieXRlcyhjb25zdCBzdHJ1 Y3QKPiA+IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSkKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAxMjg7Cj4gPiAgICAgICAgICAgICAgICAgZWxzZQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIDUxMjsKPiA+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9DQ1M6Cj4gPiArICAgICAgICAgICAgICAgaWYgKHBsYW5lID09IDEpCj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjQ7Cj4gPiArICAgICAgICAgICAgICAg LyogZmFsbCB0aHJvdWdoICovCj4gPiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ6Cj4gPiAgICAgICAgICAgICAgICAgaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IEhBU18xMjhf QllURV9ZX1RJTElORyhkZXZfcHJpdikpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gMTI4Owo+ID4gICAgICAgICAgICAgICAgIGVsc2UKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiA1MTI7Cj4gPiArICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE X0NDUzoKPiA+ICsgICAgICAgICAgICAgICBpZiAocGxhbmUgPT0gMSkKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiA2NDsKPiA+Cj4gCj4gSSBzdGlsbCB0aGluayBhIENDUyB0aWxl IGlzIDEyOEIgd2lkZS4gOi0pCgpUaGUgc3BlYyBraW5kYSBzdWdnZXN0cyB0aGUgc2FtZS4gQnV0 IEkgc3RpbGwgY291bGRuJ3QgZmlndXJlIG91dCB3aGVyZQp0aGF0IG5vdGlvbiByZWFsbHkgY2Ft ZSBmcm9tLCBzbyBJIGp1c3Qgd2VudCB3aXRoIHRoZSB2YWx1ZSB0aGF0IGdhdmUKbWUgdGhlIGV4 cGVjdGVkIHJlc3VsdCBvbiBteSBzY3JlZW4uIFRoYXQgaXMgd3JpdGluZyA2NCBieXRlcyBpbnRv IHRoZQp0aWxlIGlzIGV4YWN0bHkgd2hhdCdzIHJlcXVpcmVkIHRvIGZpbGwgYSBzaW5nbGUgcm93 L2NvbHVtbiwgd3JpdGluZwptb3JlIHdvdWxkIHdyYXAuCgo+IAo+IAo+ID4gKyAgICAgICAgICAg ICAgIC8qIGZhbGwgdGhyb3VnaCAqLwo+ID4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRDoKPiA+ICAgICAgICAgICAgICAgICAvKgo+ID4gICAgICAgICAgICAgICAgICAqIEJz cGVjIHNlZW1zIHRvIHN1Z2dlc3QgdGhhdCB0aGUgWWYgdGlsZSB3aWR0aCB3b3VsZAo+ID4gQEAg LTIxNTYsNyArMjE2NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1l bnQoY29uc3QKPiA+IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gICAgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGZiLT5kZXYpOwo+ID4KPiA+ ICAgICAgICAgLyogQVVYX0RJU1QgbmVlZHMgb25seSA0SyBhbGlnbm1lbnQgKi8KPiA+IC0gICAg ICAgaWYgKGZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxhbmUgPT0g MSkKPiA+ICsgICAgICAgaWYgKHBsYW5lID09IDEpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJu IDQwOTY7Cj4gPgo+ID4gICAgICAgICBzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+ID4gQEAgLTIx NjYsNiArMjE3NCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1lbnQo Y29uc3QKPiA+IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gICAgICAgICAgICAgICAg IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gMjU2ICogMTAyNDsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICsg ICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4gPiArICAgICAgIGNhc2Ug STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+ICAgICAgICAgY2FzZSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRDoKPiA+ICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6 Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDEgKiAxMDI0ICogMTAyNDsKPiA+IEBAIC0yNDcy LDYgKzI0ODIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2ZiX21vZGlmaWVyX3RvX3Rp bGluZyh1aW50NjRfdAo+ID4gZmJfbW9kaWZpZXIpCj4gPiAgICAgICAgIGNhc2UgSTkxNV9GT1JN QVRfTU9EX1hfVElMRUQ6Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIEk5MTVfVElMSU5HX1g7 Cj4gPiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gPiArICAgICAgIGNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOgo+ID4gICAgICAgICAgICAgICAgIHJldHVy biBJOTE1X1RJTElOR19ZOwo+ID4gICAgICAgICBkZWZhdWx0Ogo+ID4gICAgICAgICAgICAgICAg IHJldHVybiBJOTE1X1RJTElOR19OT05FOwo+ID4gQEAgLTI1MzYsNiArMjU0NywzNSBAQCBpbnRl bF9maWxsX2ZiX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+ Cj4gPiAgICAgICAgICAgICAgICAgaW50ZWxfZmJfb2Zmc2V0X3RvX3h5KCZ4LCAmeSwgZmIsIGkp Owo+ID4KPiA+ICsgICAgICAgICAgICAgICBpZiAoKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9DQ1MgfHwKPiA+ICsgICAgICAgICAgICAgICAgICAgIGZiLT5tb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTKSAmJiBpID09Cj4gPiAxKSB7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWFpbl94LCBtYWluX3k7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBpbnQgY2NzX3gsIGNjc195Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIEVhY2ggYnl0ZSBvZiBD Q1MgY29ycmVzcG9uZHMgdG8gYSAxNng4IGFyZWEgb2YKPiA+IHRoZSBtYWluIHN1cmZhY2UsIGFu ZAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogZWFjaCBDQ1MgdGlsZSBpcyA2NHg2NCBi eXRlcy4KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgY2NzX3ggPSAoeCAqIDE2KSAlICg2NCAqIDE2KTsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGNjc195ID0gKHkgKiA4KSAlICg2NCAqIDgpOwo+ID4KPiAKPiBUaGlzIG1ha2Vz IG1lIG5lcnZvdXMuICBXaHkgYXJlIHdlIG11bHRpcGx5aW5nIENDUyBjb29yZGluYXRlcyBieSBz b21ldGhpbmcKPiBiZWZvcmUgd2UgZG8gdGhlIG1vZHVsdXM/ICBXaHkgYXJlbid0IGNvb3JkaW5h dGVzIGluIGJvdGggc3VyZmFjZXMgaW4KPiBwaXhlbHM/CgpGb3IgY29udmVydGluZyB0aGUgbGlu ZWFyIG9mZnNldCAod2hpY2ggaXMgaW4gYnl0ZXMpIGludG8geC95IHdlIGp1c3QKY29uc2lkZXIg ZWFjaCBwaXhlbCB0byBiZSAxIGJ5dGUuIEhlbmNlIHRvIGdldCB0aGUgY29ycmVzcG9uZGluZyBw aXhlbApjb29yZGluYXRlcyB3ZSBtdWx0aXBseSB0aGUgYnl0ZSBiYXNlZCBjb29yZGluYXRlcyBi eSAxNng4LiBXZSBjYW4ndApyZWFsbHkgZGVhbCB3aXRoIDwxIGJ5dGUgcGl4ZWxzIGluIG1vc3Qg cGxhY2VzLgoKPiBTbyBsb25nIGFzIHlvdSBrZWVwIHRoaW5ncyBpbiBwaXhlc2wgYW5kIGtub3cg dGhhdCBhIENDUyB0aWxlIGlzCj4gMTAyNHg1MTJweCBhbmQgYSBjb2xvciB0aWxlIGlzIDMyeDMy IHBpeGVscywgeW91IGNhbiBzYWZlbHkgZG8gdGlsZQo+IG9mZnNldHRpbmcgYW5kIGl0IGFsbCBt YWtlcyBzZW5zZS4gIEhhdmluZyBkaWZmZXJlbnQgdW5pdHMgbG9va3MgbGlrZSBhCj4gcmVjaXBl IGZvciBzb21lIHZlcnkgY29uZnVzaW5nIGJ1Z3MuICBBbSBJIGp1c3QgY29tcGxldGVseSBtaXN1 bmRlcnN0YW5kaW5nCj4gd2hhdCdzIGdvaW5nIG9uIGhlcmU/CgpEb2luZyB0aGluZ3MgaW4gcGl4 ZWxzIHdvdWxkIGludm9sdmUgdG90YWxseSBjdXN0b20gY29kZSBmb3IgdGhlIENDUy4KQnkgdGhp bmtpbmcgb2YgQ0NTIGFzIGhhdmluZyAxIGJ5dGUgcGl4ZWxzIHdlIGNhbiBzaGFyZSB0aGUgY29k ZSBhbHJlYWR5CnVzZWQgZm9yIGV2ZXJ5dGhpbmcgZWxzZSAoYXBhcnQgZnJvbSB0aGlzIG9uZSBz cGVjaWFsIGNoZWNrIHdoaWNoIGlzCnJlYWxseSBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBI VyBpZ25vcmVzIHRoZSBBVVggeC95IG9mZnNldHMgZm9yIENDUy4KCkkgc3VwcG9zZSBpdCB3b3Vs ZCBiZSBwb3NzaWJsZSB0byByZXdyaXRlIGEgYnVuY2ggb2Ygb3RoZXIgdGhpbmdzIHRvCmFsbG93 IDwxIGJ5dGUgcGl4ZWxzIGJ1dCBJIGNvdWxkbid0IGJlIGJvdGhlcmVkIHRvIGdvIHRoZXJlLgoK LS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==