From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Fri, 21 Apr 2017 19:49:04 +0300 Message-ID: <20170421164904.GP30290@intel.com> References: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> <20170421111756.GI30290@intel.com> <55ddddf5-5cea-8131-7808-5a7df8e27fb2@ti.com> <20170421135203.GN30290@intel.com> <20170421145340.GA4889@e106950-lin.cambridge.arm.com> <20170421152148.GO30290@intel.com> <20170421153400.GA6088@e106950-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 63F6D6E5E9 for ; Fri, 21 Apr 2017 16:49:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170421153400.GA6088@e106950-lin.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Brian Starkey Cc: Liviu.Dudau@arm.com, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, Jyri Sarha , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMDQ6MzQ6MDBQTSArMDEwMCwgQnJpYW4gU3RhcmtleSB3 cm90ZToKPiBPbiBGcmksIEFwciAyMSwgMjAxNyBhdCAwNjoyMTo0OFBNICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPk9uIEZyaSwgQXByIDIxLCAyMDE3IGF0IDAzOjUzOjQyUE0gKzAx MDAsIEJyaWFuIFN0YXJrZXkgd3JvdGU6Cj4gPj4gSGksCj4gPj4KPiA+PiBUaGFua3MgZm9yIHBp Y2tpbmcgdGhpcyB1cCBKeXJpLgo+ID4+Cj4gPj4gT24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMDQ6 NTI6MDNQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4+ID5PbiBGcmksIEFwciAy MSwgMjAxNyBhdCAwNDozOToxNlBNICswMzAwLCBKeXJpIFNhcmhhIHdyb3RlOgo+ID4+ID4+IE9u IDA0LzIxLzE3IDE0OjE3LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPj4gPj4gPj4gK3N0YXRp YyBjaGFyICp5Y2Jjcl90b19yZ2JfbW9kZV9uYW1lW10gPSB7Cj4gPj4gPj4gPj4gKwlbRFJNX1BM QU5FX1lDQkNSX0JUNjAxX0xJTV9UT19SR0JfQlQ2MDFfRlVMTF0gPQo+ID4+ID4+ID4+ICsJCSJZ Q2JDciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAo+ID4+ ID4+ID4+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9GVUxMX1RPX1JHQl9CVDYwMV9GVUxMXSA9 Cj4gPj4gPj4gPj4gKwkJIllDYkNyIEJULjYwMSBmdWxsIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVs bCByYW5nZSIsCj4gPj4gPj4gPj4gKwlbRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0Jf QlQ3MDlfRlVMTF0gPQo+ID4+ID4+ID4+ICsJCSJZQ2JDciBCVC43MDkgbGltaXRlZCByYW5nZSBU TyBSR0IgQlQuNzA5IGZ1bGwgcmFuZ2UiLAo+ID4+ID4+ID4+ICsJW0RSTV9QTEFORV9ZQ0JDUl9C VDIwMjBfTElNX1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+ID4+ID4+ID4+ICsJCSJZQ2JDciBCVC4y MDIwIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjIwMjAgZnVsbCByYW5nZSIsCj4gPj4gPj4gPj4g KwlbRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+ID4+ID4+ ID4+ICsJCSJZQ2JDciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNzA5IGZ1bGwgcmFu Z2UiLAo+ID4+ID4+ID4gV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBjb25mbGF0ZSB0aGUgWUNi Q3ItPlJHQiBwYXJ0IHdpdGggdGhlIGNvbG9yc3BhY2UKPiA+PiA+PiA+IGNvbnZlcnNpb24gYmVj YXVzZSB0aGUgWUNiQ3ItPlJHQiBwYXJ0IHNob3VsZCBiZSBwZXJmb3JtZWQgb24gZ2FtbWEgZW5j b2RlZAo+ID4+ID4+ID4gZGF0YSBhbmQgdGhlIGNvbG9yc3BhY2UgY29udmVyc2lvbiBvbiBsaW5l YXIgZGF0YS4gU28gd2UgbmVlZCBhIGRlZ2FtbWEKPiA+PiA+PiA+IHN0YWdlIGluIGJldHdlZW4u IEF0IGxlYXN0IHRoYXQgc2VlbWVkIHRvIGJlIHRoZSBnZW5lcmFsIGNvbmNlbmN1cyBhZnRlcgo+ ID4+ID4+ID4gdGhlIGxhc3Qgcm91bmQgb2YgbWFpbHMgb24gdGhpcyB0b3BpYy4KPiA+PiA+PiA+ Cj4gPj4KPiA+PiBJIHRob3VnaHQgdGhlIGNvbmNsdXNpb24gb2YgdGhlIGxhc3Qgcm91bmQgd2Fz IHRoYXQgb24gc29tZSBoYXJkd2FyZQo+ID4+IHRoaXMgd291bGQgYmUgY29uZmxhdGVkIGFzIGEg Y29uc2Npb3VzIGNob2ljZS4gSWYgdGhlIEhXIGRvZXNuJ3QgaGF2ZQo+ID4+IHRoZSByZXF1aXJl ZCBkZWdhbW1hLT5jc2MtPmdhbW1hIHN0YWdlcywgYW5kIHRoZSBpbXBsZW1lbnRvci91c2VyCj4g Pj4gZG9lc24ndCBjYXJlIGFib3V0IGJlaW5nIGEgbGl0dGxlIGluY29ycmVjdCwgdGhlbiBpdCBj YW4gYWxsIGJlCj4gPj4gZGVzY3JpYmVkIGluIHRoaXMgc2luZ2xlIHByb3BlcnR5Lgo+ID4KPiA+ SSB3YXMgcHJvcG9zaW5nIHRoZSBzaW5nbGUgcHJvcCBhcHByb2FjaCBpbml0aWFsbHksIGJ1dCBu b3cgSSB0aGluayBpdAo+ID5taWdodCBqdXN0IGxlYWQgdG8gbW9yZSBjb25mdXNpb24uIFNvIGEg ZGVkaWNhdGVkIHByb3BlcnR5IGZvciBlYWNoIHN0YWdlCj4gPmlzIHRoZSBjbGVhcmVyIGRlc2ln biBJIHRoaW5rLiBXZSBkbyBsb3NlIHBvdGVudGlhbGx5IGEgYml0IG9mCj4gPmRpc2NvdmVyYWJp bGl0eSB3aGVuIG5vdCBhbGwgY29tYmluYXRpb25zIGFyZSBzdXBwb3J0ZWQsIGJ1dCB3ZSBoYXZl Cj4gPnRoYXQgcHJvYmxlbSBpbiBtYW55IG90aGVyIHBsYWNlcyBhcyB3ZWxsLCBzbyBub3QgYSBi aWcgZGVhbCBJIHRoaW5rLgo+ID4KPiAKPiBZZWFoIHlvdSBsb3NlIGRpc2NvdmVyYWJpbGl0eSwg YnV0IGRvIHlvdSBhbHNvIGxvc2UgdGhlIGFiaWxpdHkgdG8gZG8KPiB0aGUgbm9uLXBlcmZlY3Qs IHNpbmdsZS1zdGFnZSBjb252ZXJzaW9ucz8KCk5vdCBzdXJlIHdoeSBvbmUgdnMuIG11bHRpcGxl IHByb3BzIHNob3VsZCBtYXR0ZXIgaGVyZS4gRWl0aGVyIHlvdQphY2NlcHQgdGhlIGxlc3MgdGhh biBwZXJmZWN0IHBpcGVsaW5lIG9yIHlvdSBkb24ndC4gV2hldGhlciB5b3UgYXNrIGl0CnZpYSBv bmUgb2YgbXVsdGlwbGUgcHJvcHMgZG9lc24ndCBzZWVtIGFsbCB0aGF0IGRpZmZlcmVudCB0byBt ZS4KCj4gCj4gRm9yIEhXIHRoYXQgb25seSBoYXMgYSBtYXRyaXgsIGlzIHRoZSBkcml2ZXIgZXhw ZWN0ZWQgdG8gY29tYmluZSBhbGwKPiBvZiB0aGUgc2VwYXJhdGVkIHN0YWdlcyBkb3duIGludG8g YSBzaW5nbGUgbWF0cml4PyBPciBpdCB3b3VsZG4ndAo+IGV4cG9zZSB0aGUgb3RoZXIgcHJvcGVy dGllcywgb25seSBhIG1hdHJpeCwgYW5kIHVzZXJzcGFjZSBoYXMgdG8gY29tZQo+IHVwIHdpdGgg YSBibG9iIHRoYXQgZG9lcyB0aGUgKGFwcHJveGltYXRlKSByaWdodCB0aGluZz8KCklmIHlvdSdy ZSBub3QgaGFwcHkgd2l0aCBleHBvc2luZyBqdXN0IG9uZSBvciB0aGUgb3RoZXIsIHRoZW4gSSBn dWVzcwp5b3Ugd291bGQgZXhwb3NlIGJvdGggYnV0IGluZGljYXRlIHRoYXQgdGhlcmUncyBubyBk ZWdhbW1hIGluIGJldHdlZW4KYW5kIHVzZXJzcGFjZSBjYW4gdGhlbiBjaG9vc2Ugd2hldGhlciBp dCdzIGhhcHB5IHdpdGggdGhhdCBzb2x1dGlvbiBvcgpvciBub3QuCgo+IAo+ID4+Cj4gPj4gSWYg dGhlcmUgaXMgbW9yZSBjYXBhYmxlIGhhcmR3YXJlIHdpdGggdGhlIGFkZGl0aW9uYWwgc3RhZ2Vz LCB0aGVuCj4gPj4gdGhleSBzaG91bGQgZXhwb3NlIGFkZGl0aW9uYWwgcHJvcGVydGllcyAoaW4g cGlwZWxpbmUgb3JkZXIpOgo+ID4+Cj4gPj4gWUNCQ1JfVE9fUkdCXyo6Cj4gPj4gICAgRG9lcyBZ Q2JDci0+UkdCIGNvbnZlcnNpb24gb24gbm9uLWxpbmVhciBZQ2JDciBkYXRhLAo+ID4+ICAgIG9u bHkgdGhlIGVudW0gdmFsdWVzIHdoaWNoIGRvbid0IGhhdmUgYSBDU0MgYXJlIGV4cG9zZWQuCj4g Pgo+ID5Ob3Qgc3VyZSB3aGF0IHlvdSBtZWFuIGJ1dCB0aGF0IGxhc3QgcGFydC4KPiA+Cj4gCj4g SnVzdCB0aGF0IHRoZSBlbnVtIGxpc3Qgc2hvdWxkIG9ubHkgY29udGFpbiB0aGluZ3MgdGhhdCBh cmU6Cj4gWUNiQ3IgQlQuNjAxICAtPiBSR0IgQlQuNjAxCj4gWUNiQ3IgQlQuNzA5ICAtPiBSR0Ig QlQuNzA5Cj4gWWNiQ3IgQlQuMjAyMCAtPiBSR0IgQlQuMjAyMAo+IAo+IGFuZCBub3QgYSB0aG9z ZSBpbmNsdWRpbmcgYSBjb2xvciBzcGFjZSBjaGFuZ2UsIGUuZy46Cj4gWUNiQ3IgQlQuNjAxICAt PiBSR0IgQlQuNzA5CgpSaWdodC4gV2UgcHJvYmFibHkgc2hvdWxkbid0IGV2ZW4gaGF2ZSB0aGUg IkJULndoYXRldmVyIiBvbiBib3RoIHNpZGVzCnNpbmNlIGl0J3Mgbm90IHJlYWxseSBhIGNvbG9y c3BhY2UsIGp1c3QgdGhlIGVuY29kaW5nLCBhbmQgb25jZSB5b3UKZGVjb2RlZCB0aGUgWUNiQ3Ig aW50byBSR0IgaXQncyBqdXN0IFJHQi4gV2UgY291bGQgYWN0dWFsbHkganVzdCBkZWZpbmUKdGhl IGVudW0gdmFsdWVzIGFzICJCVC42MDEiLCJCVC43MDkiIGV0Yy4KCj4gCj4gYmVjYXVzZSBhbiBS R0IgQlQuNjAxIC0+IFJHQiBCVC43MDkgY29udmVyc2lvbiBjYW4gYmUgcGVyZm9ybWVkCj4gbGF0 ZXIgd2l0aCB0aGUgUkdCX1RPX1JHQi9DVE0vd2hhdGV2ZXIgcHJvcGVydHkuCj4gCj4gPj4KPiA+ PiBERUdBTU1BOgo+ID4+ICAgIERvZXMgdGhlIG5vbi1saW5lYXIgdG8gbGluZWFyIGNvbnZlcnNp b24gb24gdGhlIFJHQiBkYXRhIG91dHB1dCBmcm9tCj4gPj4gICAgdGhlIFlDQkNSX1RPX1JHQiBz dGFnZS4KPiA+Pgo+ID4+IFJHQl9UT19SR0JfKjoKPiA+PiAgICBTaW1pbGFyIHNldCBvZiBwcm9w ZXJ0aWVzIHRvIFlDQkNSX1RPX1JHQl8qLCBhbGxvd2luZyBSR0ItPlJHQiBDU0MKPiA+PiAgICBv biB0aGUgbGluZWFyIGRhdGEuCj4gPgo+ID5XZSBtYXkgd2FudCB0byBjYWxsIHRoaXMganVzdCBD VE0gdG8gbWF0Y2ggdGhlIG1hdGNoaW5nIGNydGMgcHJvcC4KPiA+Cj4gCj4gR29vZCBjYWxsLgo+ IAo+IC1Ccmlhbgo+IAo+ID4+Cj4gPj4gR0FNTUE6Cj4gPj4gICAgQ29udmVydCB0aGUgQ1NDJ2Qg UkdCIGRhdGEgYmFjayBpbiB0byBub24tbGluZWFyIGZvciBibGVuZGluZyAoaWYKPiA+PiAgICBi bGVuZGluZyBpcyB0byBiZSBkb25lIHdpdGggbm9uLWxpbmVhciBkYXRhKS4KPiA+Pgo+ID4+IERy aXZlcnMgY2FuIGV4cG9zZSBhcyBtYW55IG9yIGFzIGZldyBvZiB0aGUgYWJvdmUgcHJvcGVydGll cyBhcyB0aGVpcgo+ID4+IGhhcmR3YXJlIHN1cHBvcnRzLgo+ID4+Cj4gPj4gPj4KPiA+PiA+PiBJ IGRvIG5vdCByZWFsbHkgaGF2ZSB0aGUgZXhwZXJ0aXNlIHRvIGFyZ3VlIHdpdGggdGhhdC4gSSBt ZXJlbHkgY29waWVkCj4gPj4gPj4gdGhlIGlkZWEgZnJvbSB0aGUgbWFpbCB0aHJlYWQgSSByZWZl cnJlZCB0byBpbiB0aGUgY292ZXIgbGV0dGVyLgo+ID4+ID4+IEhvd2V2ZXIsIHRoZXJlIGFyZSBz ZXZlcmFsIGRpc3BsYXkgSFdzIG91dCB0aGVyZSB0aGF0IGRvIG5vdCBoYXZlIGFsbAo+ID4+ID4+ IGJvbHRzIGFuZCBrbm9icyB0byBtYWtlIHRoZSBjb2xvci1zcGFjZSBjb252ZXJzaW9uIGluIGV4 YWN0bHkgdGhlIGlkZWFsCj4gPj4gPj4gb3JkZXIsIG9tYXAgRFNTIGJlaW5nIG9uZSBvZiB0aGVt Lgo+ID4+ID4KPiA+PiA+WWVhaC4gSW50ZWwgaGFyZHdhcmUgaXMgaW4gdGhlIHNhbWUgYm9hdCBm b3IgdGhlIHRpbWUgYmVpbmcuIE9uIGN1cnJlbnQKPiA+PiA+aHcgSSB0aGluayB3ZSBjYW4gb25s eSByZWFsbHkgZXhwb3NlIHRoZSBZQ2JDci0+UkdCIGFuZCBkZWdhbW1hIHN0YWdlcy4KPiA+PiA+ Cj4gPj4gPk9uIHNvbWUgbGltaXRlZCBzZXQgb2YgcGxhdGZvcm1zIHdlIGNvdWxkIGV4cG9zZSBh IGJsb2IgYXMgd2VsbCwgYW5kIEkKPiA+PiA+c3VwcG9zZSBpdCB3b3VsZCB0aGVuIGJlIHBvc3Np YmxlIHRvIHVzZSBpdCBmb3IgY29sb3Igc3BhY2UgY29udmVyc2lvbgo+ID4+ID5pZiB5b3UgaWdu b3JlIGdhbW1hIGFuZC9vciBvbmx5IGRlYWwgd2l0aCBsaW5lYXIgUkdCIGRhdGEuIEJ1dCBpdCdz IHN1Y2gKPiA+PiA+YSBsaW1pdGVkIHN1YnNldCBvZiBoYXJkd2FyZSBmb3IgdXMgdGhhdCBJIGRv bid0IHRoaW5rIEknbSBpbnRlcmVzdGVkCj4gPj4gPmluIGV4cG9zaW5nIGl0Lgo+ID4+ID4KPiA+ Pgo+ID4+IEknbSBub3Qgc3VyZSB0aGUgY3VzdG9tIGJsb2IgaXMgd29ydGggaGF2aW5nIGVpdGhl ci4gSXQgY2FuIGVhc2lseSBiZQo+ID4+IGFkZGVkIGxhdGVyIGlmIHdlIGRlY2lkZSB3ZSB3YW50 IGl0IGFmdGVyIGFsbC4KPiA+Pgo+ID4+IFRoYW5rcywKPiA+PiAtQnJpYW4KPiA+Pgo+ID4+ID5J biB0aGUgZnV0dXJlIHdlIHNob3VsZCBiZSBnZXR0aW5nIGEgbW9yZSBmdWxseSBmbGVnZWQgcGlw ZWxpbmUuCj4gPj4gPgo+ID4+ID4+Cj4gPj4gPj4gPiBBZnRlciBzdGFyaW5nIGF0IHRoZSB2NGwg ZG9jcyBvbiB0aGlzIHN0dWZmIEkga2luZGEgbGlrZSB0aGVpcgo+ID4+ID4+ID4gImVuY29kaW5n IiB0ZXJtaW5vbG9neSB0byBkZXNjcmliZSB0aGUgWUNiQ3ItPlJHQiBwYXJ0LCBzbyBJJ20gbm93 IGEKPiA+PiA+PiA+IGxpdHRsZSBwYXJ0aWFsIHRvIGNhbGxpbmcgdGhlIHByb3Agc29tZXRoaW5n IGxpa2UgWUNCQ1JfRU5DT0RJTkcuIE9UT0gKPiA+PiA+Pgo+ID4+ID4+IEkgZ3Vlc3MgdGhpcyBw cm9wZXJ0eSBzaG91bGQgYmUgY2FsbGVkIFlDQkNSX0RFQ09ESU5HLgo+ID4+ID4KPiA+PiA+T25s eSBpZiB5b3UgdGhpbmsgb2YgaXQgYXMgYSB2ZXJiLgo+ID4+ID4KPiA+PiA+Pgo+ID4+ID4+ID4g aWYgd2Ugd2FudCB0byBleHBvc2UgdGhlIHJhdyBtYXRyaXggYXMgYSBibG9iIHRoZW4gbWF5YmUg Y2FsbGluZyBpdCBhCj4gPj4gPj4gPiBDU0MgbWlnaHQgYmUgYmV0dGVyLiBOb3Qgc3VyZSB0aGVy ZSdzIG11Y2ggcG9pbnQgaW4gZXhwb3NpbmcgaXQgdGhvdWdoLgo+ID4+ID4+Cj4gPj4gPj4gSW4g bXkgZmlyc3QgdmVyc2lvbiBpdCB3YXMgY2FsbGVkIGp1c3QgQ1NDLCBidXQgdGhlbiBJIHdhbnRl ZCB0byBtYWtlIGl0Cj4gPj4gPj4gZXhwbGljaXQgd2hhdCB0aGlzIENTQyB3YXMgdXNlZCBmb3Ig dG8gYXZvaWQgbWl4aW5nIHRoZSBZQ2JDciBkZWNvZGluZwo+ID4+ID4+IG1hdHJpeCB3aXRoIFlD YkNyIGVuY29kaW5nIG1hdHJpeC4gQXQgbGVhc3Qgb24gT01BUCBEU1Mgd2UgaGF2ZSBwaWVjZXMK PiA+PiA+PiBvZiBIVyB0aGF0IGNhbiBkbyBvbmx5IG9uZSBvciB0aGUgb3RoZXIsIGUuZy4gdGhl IG9mZnNldCBjYWxjdWxhdGlvbnMKPiA+PiA+PiBhcmUgc3VwcG9ydGVkIG9ubHkgdG8gb25lIGRp cmVjdGlvbi4KPiA+PiA+Cj4gPj4gPkFyZSB5b3UgcGxhbm5pbmcgdG8gZG8gUkdCLT5ZQ2JDciBj b252ZXJzaW9uIGluIHRoZSBwbGFuZSBhcyB3ZWxsPyBJCj4gPj4gPnRoaW5rIHdlJ2xsIGJlIG9u bHkgZG9pbmcgdGhhdCBhdCBjcnRjL2Nvbm5lY3RvciBsZXZlbC4KPiA+PiA+Cj4gPj4gPj4KPiA+ PiA+PiA+IEkgZG9uJ3QgdGhpbmsgbW9zdCBwZW9wbGUgYXJlIGluIHRoZSBoYWJpdCBpZiBjb29r aW5nIHVwIG5ldyB3YXlzIHRvCj4gPj4gPj4gPiBlbmNvZGUgdGhlaXIgcGl4ZWwgZGF0YS4KPiA+ PiA+PiA+Cj4gPj4gPj4KPiA+PiA+PiBJbiB0aGUgZW1iZWRkZWQgc2lkZSBJIGNhbiBpbWFnaW5l IHRoZXJlIGNvdWxkIGJlIHNvbWUgY3VzdG9tIGFwcGxpYW5jZXMKPiA+PiA+PiB3aGVyZSBvbmUg bWF5IHdhbnQgdG8gZG8gc29tZSBjdXN0b20gdGhpbmcgd2l0aCB0aGUgQ1NDIGFuZCBub3QgbmVl ZGluZwo+ID4+ID4+IGEgY3VzdG9tIGtlcm5lbCBmb3IgdGhhdCBjb3VsZCBtYWtlIGEgbGlmZSBl YXNpZXIuLi4gYnV0IHRoZW4gYWdhaW4gSSBhbQo+ID4+ID4+IG5vdCByZWFsbHkgYW4gZXhwZXJ0 IGluIHRoaXMgYXJlYS4KPiA+PiA+Cj4gPj4gPkkgd291bGQgYXNzdW1lIG1vc3QgY3VzdG9teSB0 aGluZ3MgeW91J2QgZG8gaW4gdGhlIGNydGMgKGVnLiBjb2xvcgo+ID4+ID5jb3JyZWN0aW9uIGFu ZCB3aGF0bm90KS4gQnV0IGNvdWxkIGJlIHRoYXQgSSBqdXN0IGxhY2sgaW1hZ2luYXRpb24uCj4g Pj4gPgo+ID4+ID4tLQo+ID4+ID5WaWxsZSBTeXJqw6Rsw6QKPiA+PiA+SW50ZWwgT1RDCj4gPgo+ ID4tLSAKPiA+VmlsbGUgU3lyasOkbMOkCj4gPkludGVsIE9UQwoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==