From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v13 12/17] drm/i915: Upscale scaler max scale for NV12 Date: Wed, 14 Mar 2018 19:08:06 +0200 Message-ID: <20180314170806.GL5453@intel.com> References: <1520585344-10094-1-git-send-email-vidya.srinivas@intel.com> <1520585344-10094-13-git-send-email-vidya.srinivas@intel.com> <2d058367-1ec8-2401-d04e-f50decd92111@linux.intel.com> <20180314153554.GK5453@intel.com> <0f5f4851-1112-3f02-4426-a7c95462a409@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EF596E70C for ; Wed, 14 Mar 2018 17:08:12 +0000 (UTC) Content-Disposition: inline In-Reply-To: <0f5f4851-1112-3f02-4426-a7c95462a409@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: "intel-gfx@lists.freedesktop.org" , "Syrjala, Ville" , "Srinivas, Vidya" , "Lankhorst, Maarten" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMTQsIDIwMTggYXQgMDQ6NTU6MDhQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTQtMDMtMTggb20gMTY6MzUgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBXZWQsIE1hciAxNCwgMjAxOCBhdCAxMDozNjozMkFNICswMDAwLCBTcmluaXZhcywg VmlkeWEgd3JvdGU6Cj4gPj4KPiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+Pj4g RnJvbTogTWFhcnRlbiBMYW5raG9yc3QgW21haWx0bzptYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb21dCj4gPj4+IFNlbnQ6IFdlZG5lc2RheSwgTWFyY2ggMTQsIDIwMTggNDowMyBQTQo+ ID4+PiBUbzogU3Jpbml2YXMsIFZpZHlhIDx2aWR5YS5zcmluaXZhc0BpbnRlbC5jb20+OyBpbnRl bC0KPiA+Pj4gZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4+PiBDYzogU3lyamFsYSwgVmls bGUgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPjsgTGFua2hvcnN0LCBNYWFydGVuCj4gPj4+IDxt YWFydGVuLmxhbmtob3JzdEBpbnRlbC5jb20+Cj4gPj4+IFN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4 XSBbUEFUQ0ggdjEzIDEyLzE3XSBkcm0vaTkxNTogVXBzY2FsZSBzY2FsZXIgbWF4IHNjYWxlCj4g Pj4+IGZvciBOVjEyCj4gPj4+Cj4gPj4+IE9wIDE0LTAzLTE4IG9tIDExOjMxIHNjaHJlZWYgU3Jp bml2YXMsIFZpZHlhOgo+ID4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPj4+Pj4g RnJvbTogTWFhcnRlbiBMYW5raG9yc3QgW21haWx0bzptYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb21dCj4gPj4+Pj4gU2VudDogV2VkbmVzZGF5LCBNYXJjaCAxNCwgMjAxOCAzOjU1IFBN Cj4gPj4+Pj4gVG86IFNyaW5pdmFzLCBWaWR5YSA8dmlkeWEuc3Jpbml2YXNAaW50ZWwuY29tPjsg aW50ZWwtCj4gPj4+Pj4gZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4+Pj4+IENjOiBTeXJq YWxhLCBWaWxsZSA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+OyBMYW5raG9yc3QsIE1hYXJ0ZW4K PiA+Pj4+PiA8bWFhcnRlbi5sYW5raG9yc3RAaW50ZWwuY29tPgo+ID4+Pj4+IFN1YmplY3Q6IFJl OiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggdjEzIDEyLzE3XSBkcm0vaTkxNTogVXBzY2FsZSBzY2FsZXIK PiA+Pj4+PiBtYXggc2NhbGUgZm9yIE5WMTIKPiA+Pj4+Pgo+ID4+Pj4+IE9wIDE0LTAzLTE4IG9t IDEwOjUyIHNjaHJlZWYgTWFhcnRlbiBMYW5raG9yc3Q6Cj4gPj4+Pj4+IE9wIDA5LTAzLTE4IG9t IDA5OjQ4IHNjaHJlZWYgVmlkeWEgU3Jpbml2YXM6Cj4gPj4+Pj4+PiBGcm9tOiBDaGFuZHJhIEtv bmR1cnUgPGNoYW5kcmEua29uZHVydUBpbnRlbC5jb20+Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gVGhp cyBwYXRjaCB1cGRhdGVzIHNjYWxlciBtYXggbGltaXQgc3VwcG9ydCBmb3IgTlYxMgo+ID4+Pj4+ Pj4KPiA+Pj4+Pj4+IHYyOiBSZWJhc2VkIChtZSkKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiB2MzogUmVi YXNlZCAobWUpCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gdjQ6IE1pc3NlZCB0aGUgVGVzdGVkLWJ5L1Jl dmlld2VkLWJ5IGluIHRoZSBwcmV2aW91cyBzZXJpZXMgQWRkaW5nCj4gPj4+Pj4+PiB0aGUgc2Ft ZSB0byBjb21taXQgbWVzc2FnZSBpbiB0aGlzIHZlcnNpb24uCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4g djU6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZSBhbmQgcmViYXNlZAo+ID4+ Pj4+Pj4gLSBjYWxjdWxhdGlvbiBvZiBtYXhfc2NhbGUgdG8gYmUgbWFkZSBsZXNzIGNvbnZvbHV0 ZWQgYnkgc3BsaXR0aW5nCj4gPj4+Pj4+PiBpdCB1cCBhIGJpdAo+ID4+Pj4+Pj4gLSBJbmRlbnRh dGlvbiBlcnJvcnMgdG8gYmUgZml4ZWQgaW4gdGhlIHNlcmllcwo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+ IHY2OiBSZWJhc2VkIChtZSkKPiA+Pj4+Pj4+IEZpeGVkIHJldmlldyBjb21tZW50cyBmcm9tIFBh YXV3ZSwgQm9iIEogUHJldmlvdXMgdmVyc2lvbiwgd2hlcmUgYQo+ID4+Pj4+Pj4gc3BsaXQgb2Yg Y2FsY3VsYXRpb24gd2FzIGRvbmUsIHdhcyB3cm9uZy4gRml4ZWQgdGhhdCBpc3N1ZSBoZXJlLgo+ ID4+Pj4+Pj4KPiA+Pj4+Pj4+IHY3OiBSZWJhc2VkIChtZSkKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiB2 ODogUmViYXNlZCAobWUpCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gdjk6IFJlYmFzZWQgKG1lKQo+ID4+ Pj4+Pj4KPiA+Pj4+Pj4+IHYxMDogUmViYXNlZCAobWUpCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gdjEx OiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gU2hhc2hhbmsgU2hhcm1hIEFsaWdubWVu dAo+ID4+Pj4+IGlzc3Vlcwo+ID4+Pj4+Pj4gZml4ZWQuCj4gPj4+Pj4+PiBXaGVuIGNhbGwgdG8g c2tsX3VwZGF0ZV9zY2FsZXIgaXMgbWFkZSwgMCB3YXMgYmVpbmcgc2VudCBpbnN0ZWFkIG9mCj4g Pj4+Pj4+PiBwaXhlbF9mb3JtYXQuCj4gPj4+Pj4+PiBXaGVuIGNydGMgdXBkYXRlIHNjYWxlciBp cyBjYWxsZWQsIHdlIGRvbnQgaGF2ZSB0aGUgZmIgdG8gZGVyaXZlCj4gPj4+Pj4+PiB0aGUgcGl4 ZWwgZm9ybWF0LiBBZGRlZCB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyIGJvb2wKPiA+Pj4+Pj4+IHBs YW5lX3NjYWxlcl9jaGVjayB0byBhY2NvdW50IGZvciB0aGlzLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+ IHYxMjogRml4ZWQgZmFpbHVyZSBpbiBJR1QgZGVidWdmc190ZXN0Lgo+ID4+Pj4+Pj4gZmIgaXMg TlVMTCBpbiBza2xfdXBkYXRlX3NjYWxlcl9wbGFuZSBEdWUgdG8gdGhpcywgYWNjZXNzaW5nCj4g Pj4+Pj4+PiBmYi0+Zm9ybWF0IGNhdXNlZCBmYWlsdXJlLgo+ID4+Pj4+Pj4gUGF0Y2ggY2hlY2tz IGZiIGJlZm9yZSB1c2luZy4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiB2MTM6IEluIHRoZSBwcmV2aW91 cyB2ZXJzaW9uIHRoZXJlIHdhcyBhIGZsYXcuCj4gPj4+Pj4+PiBJbiBza2xfdXBkYXRlX3NjYWxl ciBkdXJpbmcgcGxhbmVfc2NhbGVyX2NoZWNrIGlmIHRoZSBmb3JtYXQgd2FzCj4gPj4+Pj4+PiBu b24tTlYxMiwgaXQgd291bGQgc2V0IG5lZWRfc2NhbGluZyB0byBmYWxzZS4gVGhpcyBjb3VsZCBy ZXNldCB0aGUKPiA+Pj4+Pj4+IHByZXZpb3VzbHkgc2V0IG5lZWRfc2NhbGluZyBmcm9tIGEgcHJl dmlvdXMgY29uZGl0aW9uIGNoZWNrLiBQYXRjaAo+ID4+Pj4+Pj4gZml4ZXMgdGhpcy4KPiA+Pj4+ Pj4+IFBhdGNoIGFsc28gYWRkcyBtaW5pbXVtIHNyYyBoZWlnaHQgZm9yIFlVViA0MjAgZm9ybWF0 cyB0byAxNiAoYXMKPiA+Pj4+Pj4+IGRlZmluZWQgaW4gQlNwZWMpIGFuZCBhZGRzIGZvciBjaGVj a2luZyB0aGlzIHJhbmdlLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFRlc3RlZC1ieTogQ2xpbnRvbiBU YXlsb3IgPGNsaW50b24uYS50YXlsb3JAaW50ZWwuY29tPgo+ID4+Pj4+Pj4gUmV2aWV3ZWQtYnk6 IENsaW50b24gVGF5bG9yIDxjbGludG9uLmEudGF5bG9yQGludGVsLmNvbT4KPiA+Pj4+Pj4+IFNp Z25lZC1vZmYtYnk6IENoYW5kcmEgS29uZHVydSA8Y2hhbmRyYS5rb25kdXJ1QGludGVsLmNvbT4K PiA+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE5hYmVuZHUgTWFpdGkgPG5hYmVuZHUuYmlrYXNoLm1h aXRpQGludGVsLmNvbT4KPiA+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEu c2hhbmthckBpbnRlbC5jb20+Cj4gPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBWaWR5YSBTcmluaXZh cyA8dmlkeWEuc3Jpbml2YXNAaW50ZWwuY29tPgo+ID4+Pj4+Pj4gLS0tCj4gPj4+Pj4+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNzgKPiA+Pj4+PiArKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiA+Pj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgfCAgNCArLQo+ID4+Pj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nwcml0ZS5jICB8ICAzICstCj4gPj4+Pj4+PiAgMyBmaWxlcyBjaGFuZ2VkLCA2MSBp bnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4+Pj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+Pj4+Pj4gaW5kZXggMzRmNzIy NS4uN2ZkODM1NCAxMDA2NDQKPiA+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gPj4+Pj4+PiBAQCAtMzQ2Niw2ICszNDY2LDggQEAgc3RhdGljIHUzMiBza2xf cGxhbmVfY3RsX2Zvcm1hdCh1aW50MzJfdAo+ID4+Pj4+IHBpeGVsX2Zvcm1hdCkKPiA+Pj4+Pj4+ ICAJCXJldHVybiBQTEFORV9DVExfRk9STUFUX1lVVjQyMiB8Cj4gPj4+Pj4gUExBTkVfQ1RMX1lV VjQyMl9VWVZZOwo+ID4+Pj4+Pj4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiA+Pj4+Pj4+ICAJ CXJldHVybiBQTEFORV9DVExfRk9STUFUX1lVVjQyMiB8Cj4gPj4+Pj4gUExBTkVfQ1RMX1lVVjQy Ml9WWVVZOwo+ID4+Pj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfTlYxMjoKPiA+Pj4+Pj4+ICsJCXJl dHVybiBQTEFORV9DVExfRk9STUFUX05WMTI7Cj4gPj4+Pj4+PiAgCWRlZmF1bHQ6Cj4gPj4+Pj4+ PiAgCQlNSVNTSU5HX0NBU0UocGl4ZWxfZm9ybWF0KTsKPiA+Pj4+Pj4+ICAJfQo+ID4+Pj4+Pj4g QEAgLTQ3MDUsNyArNDcwNyw5IEBAIHN0YXRpYyB2b2lkIGNwdF92ZXJpZnlfbW9kZXNldChzdHJ1 Y3QKPiA+Pj4+Pj4+IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpICBzdGF0aWMgaW50ICBza2xf dXBkYXRlX3NjYWxlcihzdHJ1Y3QKPiA+Pj4+Pj4+IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsIGJvb2wgZm9yY2VfZGV0YWNoLAo+ID4+Pj4+Pj4gIAkJICB1bnNpZ25lZCBpbnQgc2NhbGVy X3VzZXIsIGludCAqc2NhbGVyX2lkLAo+ID4+Pj4+Pj4gLQkJICBpbnQgc3JjX3csIGludCBzcmNf aCwgaW50IGRzdF93LCBpbnQgZHN0X2gpCj4gPj4+Pj4+PiArCQkgIGludCBzcmNfdywgaW50IHNy Y19oLCBpbnQgZHN0X3csIGludCBkc3RfaCwKPiA+Pj4+Pj4+ICsJCSAgYm9vbCBwbGFuZV9zY2Fs ZXJfY2hlY2ssCj4gPj4+Pj4+PiArCQkgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkKPiA+Pj4+Pj4+ ICB7Cj4gPj4+Pj4+PiAgCXN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0 YXRlID0KPiA+Pj4+Pj4+ICAJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGU7Cj4gPj4+Pj4+PiBA QCAtNDcyMyw2ICs0NzI3LDEwIEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlCj4gPj4+Pj4gKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNoLAo+ID4+Pj4+Pj4g IAkgKi8KPiA+Pj4+Pj4+ICAJbmVlZF9zY2FsaW5nID0gc3JjX3cgIT0gZHN0X3cgfHwgc3JjX2gg IT0gZHN0X2g7Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gKwlpZiAocGxhbmVfc2NhbGVyX2NoZWNrKQo+ ID4+Pj4+Pj4gKwkJaWYgKHBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpCj4gPj4+Pj4+ PiArCQkJbmVlZF9zY2FsaW5nID0gdHJ1ZTsKPiA+Pj4+Pj4gU2VlbXMgcmVkdW5kYW50IHRvIGFk ZCBwbGFuZV9zY2FsZXJfY2hlY2ssIGlmIHlvdSBjYW4ganVzdCBjaGVjayBmb3IKPiA+Pj4+PiBz Y2FsZXJfdXNlciAhPSBTS0xfQ1JUQ19JTkRFWC4KPiA+Pj4+Pj4gQnV0IHNpbmNlIHBpeGVsX2Zv cm1hdCBpcyBhbHdheXMgMCBmb3IgY3J0YyBpbmRleCwgeW91IGNhbiBqdXN0Cj4gPj4+Pj4+IGNo ZWNrCj4gPj4+Pj4gcGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiBkaXJlY3RseS4uCj4g Pj4+Pj4+PiAgCWlmIChjcnRjX3N0YXRlLT55Y2JjcjQyMCAmJiBzY2FsZXJfdXNlciA9PSBTS0xf Q1JUQ19JTkRFWCkKPiA+Pj4+Pj4+ICAJCW5lZWRfc2NhbGluZyA9IHRydWU7Cj4gPj4+Pj4+Pgo+ ID4+Pj4+Pj4gQEAgLTQ3NjMsMTcgKzQ3NzEsMzIgQEAgc2tsX3VwZGF0ZV9zY2FsZXIoc3RydWN0 IGludGVsX2NydGNfc3RhdGUKPiA+Pj4+PiAqY3J0Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gs Cj4gPj4+Pj4+PiAgCX0KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiAgCS8qIHJhbmdlIGNoZWNrcyAqLwo+ ID4+Pj4+Pj4gLQlpZiAoc3JjX3cgPCBTS0xfTUlOX1NSQ19XIHx8IHNyY19oIDwgU0tMX01JTl9T UkNfSCB8fAo+ID4+Pj4+Pj4gLQkJZHN0X3cgPCBTS0xfTUlOX0RTVF9XIHx8IGRzdF9oIDwgU0tM X01JTl9EU1RfSCB8fAo+ID4+Pj4+Pj4gLQo+ID4+Pj4+Pj4gLQkJc3JjX3cgPiBTS0xfTUFYX1NS Q19XIHx8IHNyY19oID4gU0tMX01BWF9TUkNfSCB8fAo+ID4+Pj4+Pj4gLQkJZHN0X3cgPiBTS0xf TUFYX0RTVF9XIHx8IGRzdF9oID4gU0tMX01BWF9EU1RfSCkgewo+ID4+Pj4+Pj4gLQkJRFJNX0RF QlVHX0tNUygic2NhbGVyX3VzZXIgaW5kZXggJXUuJXU6IHNyYyAldXgldQo+ID4+Pj4+IGRzdCAl dXgldSAiCj4gPj4+Pj4+PiAtCQkJInNpemUgaXMgb3V0IG9mIHNjYWxlciByYW5nZVxuIiwKPiA+ Pj4+Pj4+IC0JCQlpbnRlbF9jcnRjLT5waXBlLCBzY2FsZXJfdXNlciwgc3JjX3csIHNyY19oLCBk c3RfdywKPiA+Pj4+PiBkc3RfaCk7Cj4gPj4+Pj4+PiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+Pj4+ Pj4+IC0JfQo+ID4+Pj4+Pj4gLQo+ID4+Pj4+Pj4gKwlpZiAocGxhbmVfc2NhbGVyX2NoZWNrICYm IHBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpIHsKPiA+Pj4+Pj4+ICsJCWlmIChzcmNf aCA+IFNLTF9NSU5fWVVWXzQyMF9TUkNfSCkKPiA+Pj4+Pj4+ICsJCQlnb3RvIGNoZWNrX3NjYWxl cl9yYW5nZTsKPiA+Pj4+Pj4+ICsJCWVsc2UKPiA+Pj4+Pj4+ICsJCQlnb3RvIGZhaWxlZF9yYW5n ZTsKPiA+Pj4+Pj4+ICsJfSBlbHNlIHsKPiA+Pj4+Pj4+ICsJCWlmIChzcmNfaCA+PSBTS0xfTUlO X1NSQ19IKQo+ID4+Pj4+Pj4gKwkJCWdvdG8gY2hlY2tfc2NhbGVyX3JhbmdlOwo+ID4+Pj4+Pj4g KwkJZWxzZQo+ID4+Pj4+Pj4gKwkJCWdvdG8gZmFpbGVkX3JhbmdlOwo+ID4+Pj4+Pj4gKwl9Cj4g Pj4+Pj4+IFNpbmNlIG52MTIgYWx3YXlzIG5lZWRzIHNjYWxpbmcsIGNvdWxkIHdlIHJlZnVzZSB0 byBjcmVhdGUgTlYxMiBmYidzCj4gPj4+Pj4+IHdpdGgKPiA+Pj4+PiBoZWlnaHQgPCAxNiBpbiBp bnRlbF9mcmFtZWJ1ZmZlcl9pbml0Pwo+ID4+Pj4+IEhtIHdlIHNob3VsZCBwcm9iYWJseSByZWpl Y3QgdGhpcyBpbiB0aGF0IHBsYWNlIGFueXdheSwgYnV0IHNpbmNlCj4gPj4+Pj4gc3JjX2ggPj0g U0tMX01JTl9ZVVZfNDIwX1NSQ19IIGltcGxpZXMgc3JjX2ggPj0gU0tMX01JTl9TUkNfSAo+ID4+ PiB3ZQo+ID4+Pj4+IGRvbid0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgYW5kIGNhbiBqdXN0IGRv IGlmIChwaXhlbF9mb3JtYXQgPT0gTlYxMgo+ID4+Pj4+ICYmIHNyY19oID49IDE2KSByZXR1cm4g LUVJTlZBTDsgYW5kIGtlZXAgdGhlIGV4aXN0aW5nIGNoZWNrcy4KPiA+Pj4+Pgo+ID4+Pj4+IH5N YWFydGVuCj4gPj4+PiBUaGFuayB5b3UsIEkgd2lsbCBtYWtlIHRoaXMgY2hhbmdlIGFuZCBmbG9h dCB0aGUgcGF0Y2guCj4gPj4+Pgo+ID4+Pj4gUmVnYXJkcwo+ID4+Pj4gVmlkeWEKPiA+Pj4gRm9y IHRoZSBmcmFtZWJ1ZmZlciBjcmVhdGlvbiBhbHNvIHJlcXVpcmUgbWluaW11bSB3aWR0aCB0aGVu LCBzaW5jZSBpdAo+ID4+PiBuZWVkcyB0byBiZSBTS0xfTUlOX1NSQ19XIHRvby4uCj4gPj4gQXMg c3VjaCB0aGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB3aWR0aCBmb3IgWVVWIGluIEJzcGVjLiBJ dCBvbmx5IG1lbnRpb25zCj4gPj4gYWJvdXQgdGhlIGhlaWdodC4KPiA+IERvIHJlbWVtYmVyIHRv IGNvbnNpZGVyIDkwLzI3MCBkZWdyZWUgcm90YXRpb24uIFRoYXQncyBzdGlsbCBzdXBwb3J0ZWQK PiA+IHdpdGggTlYxMiBpcyBpdCBub3Q/Cj4gPgo+IFNob3VsZCB3ZSBhbHNvIGZvcmNlIGEgbWlu aW11bSB3aWR0aCBvZiAxNiB0aGVuPwoKUG9zc2libHkuIEkgdGhpbmsgdGhlIHNjYWxlciBzaG91 bGQgYmUgb3BlcmF0aW5nIG9uIHRoZSByb3RhdGVkIGRhdGEsIHNvIGZyb20KdGhlIHNjYWxlciBQ T1Ygd2UgcHJvYmFibHkgbmVlZCB0byBjb25zaWRlciB0aGUgcm90YXRlZCBjb29yZGluYXRlcyB3 aGVuCmZpZ3VyaW5nIG91dCB0aGUgd2lkdGggdnMuIGhlaWdodCBsaW1pdHMuIEJ1dCBJIGRpZG4n dCBhY3R1YWxseSBjaGVjawp0aGUgY29kZSB3aGljaCB3YXkgd2UgcHJvZ3JhbSB0aGUgc2NhbGVy IGlucHV0IHNpemUuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK