From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Mon, 6 May 2019 16:26:11 +0300 Message-ID: <20190506132611.GA24299@intel.com> References: <20190430152108.31814-1-shashank.sharma@intel.com> <20190430152108.31814-5-shashank.sharma@intel.com> <20190503155054.GS24299@intel.com> <20190506122522.GV24299@intel.com> <476f334d-82e1-6a1c-773f-2a1dac467125@intel.com> <20190506131109.GY24299@intel.com> <7bc81282-00a5-6e20-e7ae-10918c400416@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD6F8898B6 for ; Mon, 6 May 2019 13:26:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <7bc81282-00a5-6e20-e7ae-10918c400416@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMDYsIDIwMTkgYXQgMDY6NDQ6NDNQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiBPbiA1LzYvMjAxOSA2OjQxIFBN LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBNb24sIE1heSAwNiwgMjAxOSBhdCAwNjoy NToxOVBNICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4+IE9uIDUvNi8yMDE5IDU6 NTUgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4gT24gTW9uLCBNYXkgMDYsIDIwMTkg YXQgMDQ6MDk6MzNQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFuayB3cm90ZToKPiA+Pj4+IFJlZ2Fy ZHMKPiA+Pj4+Cj4gPj4+PiBTaGFzaGFuawo+ID4+Pj4KPiA+Pj4+IE9uIDUvMy8yMDE5IDk6MjAg UE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4+PiBPbiBUdWUsIEFwciAzMCwgMjAxOSBh dCAwODo1MTowOFBNICswNTMwLCBTaGFzaGFuayBTaGFybWEgd3JvdGU6Cj4gPj4+Pj4+IElDTCBp bnRyb2R1Y2VzIGEgbmV3IGdhbW1hIGNvcnJlY3Rpb24gbW9kZSBpbiBkaXNwbGF5IGVuZ2luZSwg Y2FsbGVkCj4gPj4+Pj4+IG11bHRpLXNlZ21lbnRlZC1nYW1tYSBtb2RlLiBUaGlzIG1vZGUgYWxs b3dzIHVzZXJzIHRvIHByb2dyYW0gdGhlCj4gPj4+Pj4+IGRhcmtlciByZWdpb24gb2YgdGhlIGdh bW1hIGN1cnZlIHdpdGggc3VlcHJmaW5lIHByZWNpc2lvbi4gQW4KPiA+Pj4+Pj4gZXhhbXBsZSB1 c2UgY2FzZSBmb3IgdGhpcyBpcyBIRFIgY3VydmVzIChsaWtlIFBRIFNULTIwODQpLgo+ID4+Pj4+ Pgo+ID4+Pj4+PiBJZiB3ZSBwbG90IGEgZ2FtbWEgY29ycmVjdGlvbiBjdXJ2ZSBmcm9tIHZhbHVl IHJhbmdlIGJldHdlZW4gMC4wIHRvIDEuMCwKPiA+Pj4+Pj4gSUNMJ3MgbXVsdGktc2VnbWVudCBo YXMgMyBkaWZmZXJlbnQgc2VjdGlvbnM6Cj4gPj4+Pj4+IC0gc3VwZXJmaW5lIHNlZ21lbnQ6IDkg dmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0gMS8oMTI4ICogMjU2KQo+ID4+Pj4+PiAtIGZpbmUg c2VnbWVudDogMjU3IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEvKDEyOCkKPiA+Pj4+Pj4g LSBjb3Jhc2Ugc2VnbWVudDogMjU3IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEKPiA+Pj4+ Pj4KPiA+Pj4+Pj4gVGhpcyBwYXRjaDoKPiA+Pj4+Pj4gLSBDaGFuZ2VzIGdhbW1hIExVVHMgc2l6 ZSBmb3IgSUNML0dFTjExIHRvIDI2MjE0NCBlbnRyaWVzICg4ICogMTI4ICogMjU2KSwKPiA+Pj4+ Pj4gICAgICBzbyB0aGF0IHVzZXJzcGFjZSBjYW4gcHJvZ3JhbSB3aXRoIGhpZ2hlc3QgcHJlY2lz aW9uIHN1cHBvcnRlZC4KPiA+Pj4+Pj4gLSBDaGFuZ2VzIGRlZmF1bHQgZ2FtbWEgbW9kZSAobm9u LWxlZ2FjeSkgdG8gbXVsdGktc2VnbWVudGVkLWdhbW1hIG1vZGUuCj4gPj4+Pj4+IC0gQWRkcyBm dW5jdGlvbnMgdG8gcHJvZ3JhbS9kZXRlY3QgbXVsdGktc2VnbWVudCBnYW1tYS4KPiA+Pj4+Pj4K PiA+Pj4+Pj4gVjI6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZQo+ID4+Pj4+ PiAgICAgICAgLSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3Igc3VwZXJmaW5lIGFuZCBmaW5lIHNlZ21l bnRzLgo+ID4+Pj4+PiAgICAgICAgLSByZW1vdmUgZW51bSBmb3Igc2VnbWVudHMuCj4gPj4+Pj4+ ICAgICAgICAtIHJldXNlIGxhc3QgZW50cnkgb2YgdGhlIExVVCBhcyBnY19tYXggdmFsdWUuCj4g Pj4+Pj4+ICAgICAgICAtIHJlcGxhY2UgaWYoKSAuLi4uY29uZCB3aXRoIHN3aXRjaC4uLmNhc2Ug aW4gaWNsX2xvYWRfbHV0cy4KPiA+Pj4+Pj4gICAgICAgIC0gYWRkIGFuIGVudHJ5IHZhcmlhYmxl LCBpbnN0ZWFkIG9mICd3b3JkJwo+ID4+Pj4+Pgo+ID4+Pj4+PiBDYzogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+Pj4gQ2M6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPj4+Pj4+IENjOiBE YW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4+Pj4+Pgo+ID4+Pj4+PiBT dWdnZXN0ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hh cm1hQGludGVsLmNvbT4KPiA+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogVW1hIFNoYW5rYXIgPHVtYS5z aGFua2FyQGludGVsLmNvbT4KPiA+Pj4+Pj4gLS0tCj4gPj4+Pj4+ICAgICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BjaS5jICAgIHwgICAzICstCj4gPj4+Pj4+ICAgICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvci5jIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKyst Cj4gPj4+Pj4+ICAgICAyIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQo+ID4+Pj4+Pgo+ID4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiA+Pj4+Pj4g aW5kZXggZmZhMmVlNzBhMDNkLi44MzY5ODk1MTc2MGIgMTAwNjQ0Cj4gPj4+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiA+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wY2kuYwo+ID4+Pj4+PiBAQCAtNzQ5LDcgKzc0OSw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2Fubm9ubGFrZV9pbmZvID0gewo+ ID4+Pj4+PiAgICAgCUdFTigxMSksIFwKPiA+Pj4+Pj4gICAgIAkuZGRiX3NpemUgPSAyMDQ4LCBc Cj4gPj4+Pj4+ICAgICAJLmhhc19sb2dpY2FsX3JpbmdfZWxzcSA9IDEsIFwKPiA+Pj4+Pj4gLQku Y29sb3IgPSB7IC5kZWdhbW1hX2x1dF9zaXplID0gMzMsIC5nYW1tYV9sdXRfc2l6ZSA9IDEwMjQg fQo+ID4+Pj4+PiArCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSAzMywgLmdhbW1hX2x1 dF9zaXplID0gMjYyMTQ0IH0KPiA+Pj4+PiBVZ2guIFRoYXRzIG9uZSBiaWcgTFVULiBCdXQgbG9v a3MgY29ycmVjdC4KPiA+Pj4+Pgo+ID4+Pj4+PiArCj4gPj4+Pj4gQm9ndXMgbmV3bGluZS4KPiA+ Pj4+IEdvdCBpdC4KPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiAgICAgc3RhdGljIGNvbnN0IHN0cnVj dCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pY2VsYWtlXzExX2luZm8gPSB7Cj4gPj4+Pj4+ICAg ICAJR0VOMTFfRkVBVFVSRVMsCj4gPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ ID4+Pj4+PiBpbmRleCA2YzM0MWJlYTUxNGMuLjQ5ODMxZThkMDJmYiAxMDA2NDQKPiA+Pj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4+Pj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPj4+Pj4+IEBAIC00MSw2ICs0MSw5 IEBACj4gPj4+Pj4+ICAgICAjZGVmaW5lIENUTV9DT0VGRl9BQlMoY29lZmYpCQkoKGNvZWZmKSAm IChDVE1fQ09FRkZfU0lHTiAtIDEpKQo+ID4+Pj4+PiAgICAgCj4gPj4+Pj4+ICAgICAjZGVmaW5l IExFR0FDWV9MVVRfTEVOR1RICQkyNTYKPiA+Pj4+Pj4gKyNkZWZpbmUgSUNMX0dBTU1BX01VTFRJ U0VHX0xVVF9MRU5HVEgJCSgyNTYgKiAxMjggKiA4KQo+ID4+Pj4+PiArI2RlZmluZSBJQ0xfR0FN TUFfU1VQRVJGSU5FX1NFR19MRU5HVEgJOQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICAgICAvKgo+ID4+ Pj4+PiAgICAgICogRXh0cmFjdCB0aGUgQ1NDIGNvZWZmaWNpZW50IGZyb20gYSBDVE0gY29lZmZp Y2llbnQgKGluIFUzMi4zMiBmaXhlZCBwb2ludAo+ID4+Pj4+PiAgICAgICogZm9ybWF0KS4gVGhp cyBtYWNybyB0YWtlcyB0aGUgY29lZmZpY2llbnQgd2Ugd2FudCB0cmFuc2Zvcm1lZCBhbmQgdGhl Cj4gPj4+Pj4+IEBAIC03NjcsNiArNzcwLDExMyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4+Pj4+PiAgICAg CX0KPiA+Pj4+Pj4gICAgIH0KPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArLyogaWxrKyAiMTIuNCIg aW50ZXJwb2xhdGVkIGZvcm1hdCAoaGlnaCAxMCBiaXRzKSAqLwo+ID4+Pj4+PiArc3RhdGljIHUz MiBpbGtfbHV0XzEycDRfbGR3KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKPiA+ Pj4+Pj4gK3sKPiA+Pj4+Pj4gKwlyZXR1cm4gKGNvbG9yLT5yZWQgPj4gNikgPDwgMjAgfCAoY29s b3ItPmdyZWVuID4+IDYpIDw8IDEwIHwKPiA+Pj4+Pj4gKwkJKGNvbG9yLT5ibHVlID4+IDYpOwo+ ID4+Pj4+PiArfQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsvKiBpbGsrICIxMi40IiBpbnRlcnBvbGF0 ZWQgZm9ybWF0IChsb3cgNiBiaXRzKSAqLwo+ID4+Pj4+PiArc3RhdGljIHUzMiBpbGtfbHV0XzEy cDRfdWR3KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKPiA+Pj4+Pj4gK3sKPiA+ Pj4+Pj4gKwlyZXR1cm4gKGNvbG9yLT5yZWQgJiAweDNmKSA8PCAyNCB8IChjb2xvci0+Z3JlZW4g JiAweDNmKSA8PCAxNCB8Cj4gPj4+Pj4+ICsJCShjb2xvci0+Ymx1ZSAmIDB4M2YpOwo+ID4+Pj4+ PiArfQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICtzdGF0aWMgdm9pZAo+ID4+Pj4+PiAraWNsX2xvYWRf Z2NtYXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4+Pj4+ ICsJCQljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnkpCj4gPj4+Pj4gSW5kZW50YXRp b24gbG9va3Mgb2ZmLiBBbHNvIHMvZW50cnkvY29sb3IvIHRvIG1hdGNoIHRoZSBvdGhlciBzaW1p bGFyaXNoCj4gPj4+Pj4gZnVuY3MgbWF5YmU/Cj4gPj4+PiBTdXJlLgo+ID4+Pj4+PiArewo+ID4+ Pj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+ID4+Pj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4+Pj4+PiArCWVudW0gcGlwZSBwaXBlID0g Y3J0Yy0+cGlwZTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCS8qIEZpeG1lOiBMVVQgZW50cmllcyBh cmUgMTYgYml0IG9ubHksIHNvIHdlIGNhbiBwcm9nIDB4RkZGRiBtYXggKi8KPiA+Pj4+Pj4gKwlJ OTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgZW50cnktPnJlZCk7Cj4gPj4+Pj4+ ICsJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksIGVudHJ5LT5ncmVlbik7Cj4g Pj4+Pj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMiksIGVudHJ5LT5ibHVl KTsKPiA+Pj4+Pj4gK30KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArc3RhdGljIHZvaWQKPiA+Pj4+Pj4g K2ljbF9wcm9ncmFtX2dhbW1hX3N1cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4+Pj4+PiArewo+ID4+Pj4+PiArCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4+ Pj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwo+ID4+Pj4+PiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxv YiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4+Pj4+PiArCWNvbnN0IHN0cnVjdCBk cm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+ID4+Pj4+PiArCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKPiA+Pj4+Pj4gKwl1MzIgaTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCWlm ICghbHV0IHx8IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iKSA8IElDTF9HQU1NQV9TVVBFUkZJTkVf U0VHX0xFTkdUSCkKPiA+Pj4+Pj4gKwkJcmV0dXJuOwo+ID4+Pj4+IFRoZXNlIGNoZWNrcyBhcmVu J3QgbmVlZGVkLiBKdXN0IGRlYWQgY29kZS4KPiA+Pj4+IFdpbGwgcmVtb3ZlIHRoaXMgYW5kIHNp bWlsYXJzLgo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsJLyoKPiA+Pj4+Pj4gKwkgKiBFdmVyeSBlbnRy eSBpbiB0aGUgbXVsdGktc2VnbWVudCBMVVQgaXMgY29ycmVzcG9uZGluZyB0byBhIHN1cGVyZmlu ZQo+ID4+Pj4+PiArCSAqIHNlZ21lbnQgc3RlcCB3aGljaCBpcyAxLyg4ICogMTI4ICogMjU2KS4K PiA+Pj4+Pj4gKwkgKgo+ID4+Pj4+PiArCSAqIFN1cGVyZmluZSBzZWdtZW50IGhhcyA5IGVudHJp ZXMsIGNvcnJlc3BvbmRpbmcgdG8gdmFsdWVzCj4gPj4+Pj4+ICsJICogMCwgMS8oOCAqIDEyOCAq IDI1NiksIDIvKDggKiAxMjggKiAyNTYpIC4uLi4gOC8oOCAqIDEyOCAqIDI1NikuCj4gPj4+Pj4+ ICsJICovCj4gPj4+Pj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlw ZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCWZvciAo aSA9IDA7IGkgPCA5OyBpKyspIHsKPiA+Pj4+Pj4gKwkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9s dXQgKmVudHJ5ID0gJmx1dFtpXTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCQlJOTE1X1dSSVRFKFBS RUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAo+ID4+Pj4+PiArCQkJICAgaWxrX2x1dF8xMnA0 X3VkdyhlbnRyeSkpOwo+ID4+Pj4+IGxkdyBzaG91bGQgY29tZSBiZWZvcmUgdWR3Lgo+ID4+Pj4g R290IGl0Lgo+ID4+Pj4+PiArCQlJOTE1X1dSSVRFKFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBp cGUpLAo+ID4+Pj4+PiArCQkJICAgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOwo+ID4+Pj4+PiAr CX0KPiA+Pj4+Pj4gK30KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArc3RhdGljIHZvaWQKPiA+Pj4+Pj4g K2ljbF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gPj4+Pj4+ICt7Cj4gPj4+Pj4+ICsJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPj4+Pj4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNl LmRldik7Cj4gPj4+Pj4+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0g Y3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4gPj4+Pj4+ICsJY29uc3Qgc3RydWN0IGRybV9j b2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7Cj4gPj4+Pj4+ICsJY29uc3Qgc3RydWN0IGRybV9j b2xvcl9sdXQgKmVudHJ5Owo+ID4+Pj4+ICdlbnRyeScgZGVjbGFyYXRpb24gY2FuIGJlIG1vdmVk IGludG8gdGhlIGxvb3BzLgo+ID4+Pj4gSXRzIGJlaW5nIHVzZWQgaW4gbXVsdGlwbGUgbG9vcHMs Cj4gPj4+IElNTyBzdGlsbCBiZXR0ZXIgdG8gbW92ZSBpbnRvIHRoZSBsb29wcy4gV2UgZG9uJ3Qg d2FudCB0byBwYXNzIGFueQo+ID4+PiBpbmZvcm1hdGlvbiBiZXR3ZWVuIHRoZSBsb29wcy4KPiA+ Pj4KPiA+Pj4+IGFsc28gYmVpbmcgdXNlZCBmb3IgR0NNYXggb3V0c2lkZSB0aGUKPiA+Pj4+IGxv b3AuCj4gPj4+IEhtbS4gVGhhdCBtaWdodCBiZSBhbiBhcmd1ZW1udCBmb3Iga2VlcGluZyBpdCBv dXQuIEJ1dCB0aGUgY3VycmVudAo+ID4+PiBnY21heCB1c2FnZSBsb29rcyBicm9rZW4uIFlvdSdy ZSBwcm9ncmFtbWluZyB0aGUgc2FtZSB2YWx1ZSBpbnRvCj4gPj4+IHRoZSBsYXN0IFBBTF9QUkVD IGluZGV4IGFuZCBHQ01BWC4KPiA+PiBJc24ndCB0aGlzIHdoYXQgeW91IHdhbnRlZCA/IElJUkMs IHlvdXIgcmVjb21tZW5kYXRpb24gd2FzIHRvIHByb2dyYW0KPiA+PiB0aGUgaGlnaGVzdCB2YWx1 ZXMgdXNlciB3YW50cyB0byBwcm9ncmFtIGluIEdDTUFYIHJlZy4gV2UgYWxzbyBoYWQgYQo+ID4+ IGRpc2N1c3Npb24gb24gaG93IHVzZXIgY2FudCBwcm9ncmFtIDEuMCwgYXMgd2UgaGF2ZSBMVVQg ZGVwdGggb24gMTYgYml0Cj4gPj4gb25seSwgYW5kIHdlIGRlY2lkZWQgdG8gdXNlIHRoZSBsYXN0 IHZhbHVlIG9mIHRoZSBMVVQgYXMgR0NNQVguIERpZCBJCj4gPj4gbWlzdW5kZXJzdGFuZCBhbnl0 aGluZyB0aGVyZSA/Cj4gPiBJdCBzaG91bGQgYmU6Cj4gPiBQQUxfUFJFQ1ttYXhdID0gbHV0W3Np emUtMl07Cj4gPiBHQ01BWCA9IGx1dFtzaXplLTFdOwo+ID4KPiA+IE9oLCB3ZSBhbHNvIG5lZWQg dG8gaW5jcmVhc2UgdGhlIExVVCBzaXplIGJ5IG9uZSB0byBtYWtlIHRoYXQKPiA+IHdvcmsgY29y cmVjdGx5Lgo+IAo+IFllcCwgdGhhdCdzIHdoeSBJIHdhcyBub3Qgc28gc3VyZSBhYm91dCB0aGlz LCBhbmQgdGhvdWdodCBwcm9ncmFtbWluZyBhIAo+IDEuMCBpcyBhIGJldHRlciBpZGVhLgo+IAo+ IFNvIG5vdyB0aGUgbmV3IHNpemUgd291bGQgYmUgMjU3ICogMjU2ICogMTI4ID0gMjYzLDE2OCBl bnRyaWVzLkkgd2lsbCBkbyAKPiBjaGFuZ2VzIGFuZCBzZW5kIFYzLgoKU2hvdWxkIGJlIGp1c3Qg MjU2KjEyOCo4KzE9MjYyMTQ1CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==