From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH xf86-video-intel v4 2/2] sna: Added AYUV format support for textured and sprite video adapters. Date: Fri, 12 Oct 2018 18:06:17 +0300 Message-ID: <20181012150617.GR9144@intel.com> References: <20181012150023.20100-1-stanislav.lisovskiy@intel.com> <20181012150023.20100-3-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2F076E4AF for ; Fri, 12 Oct 2018 15:06:21 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181012150023.20100-3-stanislav.lisovskiy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stanislav Lisovskiy Cc: intel-gfx@lists.freedesktop.org, ville.syrjala@intel.com, juha-pekka.heikkila@intel.com, martin.peres@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMTIsIDIwMTggYXQgMDY6MDA6MjNQTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiB2MjogUmVuYW1lZCBEUk1fRk9STUFUX1hZVVYgdG8gRFJNX0ZPUk1BVF9Y WVVWODg4OC4KPiAgICAgQWRkZWQgY29tbWVudCBhYm91dCBBWVVWIGJ5dGUgb3JkZXJpbmcgaW4g R3N0cmVhbWVyLgo+IAo+IHYzOiBSZW1vdmVkIHNuYV9jb21wb3NpdGVfb3AgZmxhZ3MgcmVsYXRl ZCBjaGFuZ2UgdG8gdGhlIHNlcGFyYXRlIHBhdGNoLgo+IAo+IHY0OiBGaXhlZCByZXZpZXcgY29t bWVudHMsIGRvbmUgY29kZSByZWZhY3RvcmluZwoKV2hpY2ggb25lcz8gV291bGQgYmUgbW9yZSBo ZWxwZnVsIHRvIGVudW1lcmF0ZSB0aGVtIGluIGEgYml0IG1vcmUKZGV0YWlscy4gQWxzbyBpbnN0 ZWFkIG9mIHJlcG9zdGluZyB0aGUgd2hvbGUgc2VyaWVzIGV2ZXJ5IHRpbWUKcGxlYXNlIGxvb2sg aW50byAtLWluLXJlcGx5LXRvLiBXb3VsZCBoZWxwIHdpdGgga2VlcGluZyB0cmFjayBvZgp0aGUg ZGlzY3Vzc2lvbi4KCj4gCj4gU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IExpc292c2tpeSA8c3Rh bmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Cj4gLS0tCj4gIHNyYy9yZW5kZXJfcHJvZ3JhbS9N YWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8ICAgMiArCj4gIC4uLi9leGFfd21fc3JjX3NhbXBs ZV9hcmdiX2F5dXYuZzhhICAgICAgICAgICB8ICA2NiArKysrKysrKysrCj4gIC4uLi9leGFfd21f c3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiICAgICAgICAgICB8ICAgNiArCj4gIHNyYy9zbmEvZ2Vu OV9yZW5kZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArKystCj4gIHNyYy9zbmEv c25hX3JlbmRlci5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCj4gIHNyYy9zbmEv c25hX3ZpZGVvLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExNyArKysrKysrKysrKysr KysrKysKPiAgc3JjL3NuYS9zbmFfdmlkZW8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIwICsrKwo+ICBzcmMvc25hL3NuYV92aWRlb19zcHJpdGUuYyAgICAgICAgICAgICAgICAgICAg fCAgMjIgKysrLQo+ICBzcmMvc25hL3NuYV92aWRlb190ZXh0dXJlZC5jICAgICAgICAgICAgICAg ICAgfCAgIDcgKysKPiAgOSBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygrKSwgNSBkZWxl dGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21f c3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhhCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcmVuZGVy X3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4Ygo+IAo+IGRpZmYgLS1naXQg YS9zcmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0gYi9zcmMvcmVuZGVyX3Byb2dyYW0vTWFr ZWZpbGUuYW0KPiBpbmRleCBkYzU4MTM4Zi4uZTM1ZmZhNTIgMTAwNjQ0Cj4gLS0tIGEvc3JjL3Jl bmRlcl9wcm9ncmFtL01ha2VmaWxlLmFtCj4gKysrIGIvc3JjL3JlbmRlcl9wcm9ncmFtL01ha2Vm aWxlLmFtCj4gQEAgLTE5Niw2ICsxOTYsNyBAQCBJTlRFTF9HN0IgPQkJCQlcCj4gIElOVEVMX0c4 QSA9CQkJCVwKPiAgCWV4YV93bV9zcmNfYWZmaW5lLmc4YSAJCVwKPiAgCWV4YV93bV9zcmNfc2Ft cGxlX2FyZ2IuZzhhIAlcCj4gKwlleGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhhIFwKPiAg CWV4YV93bV9zcmNfc2FtcGxlX252MTIuZzhhIAlcCj4gIAlleGFfd21fc3JjX3NhbXBsZV9wbGFu YXIuZzhhIAlcCj4gIAlleGFfd21fd3JpdGUuZzhhIAkJXAo+IEBAIC0yMDUsNiArMjA2LDcgQEAg SU5URUxfRzhBID0JCQkJXAo+ICAKPiAgSU5URUxfRzhCID0JCQkJXAo+ICAJZXhhX3dtX3NyY19h ZmZpbmUuZzhiIAkJXAo+ICsJZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4YiBcCj4gIAll eGFfd21fc3JjX3NhbXBsZV9hcmdiLmc4YiAJXAo+ICAJZXhhX3dtX3NyY19zYW1wbGVfbnYxMi5n OGIgCVwKPiAgCWV4YV93bV9zcmNfc2FtcGxlX3BsYW5hci5nOGIgCVwKPiBkaWZmIC0tZ2l0IGEv c3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGEgYi9zcmMv cmVuZGVyX3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4YQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjE2Y2Q1NGM2Cj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhh Cj4gQEAgLTAsMCArMSw2NiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAwNiBJbnRlbCBD b3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4 dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM Cj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBBdXRob3Jz Ogo+ICsgKiAgICBXYW5nIFpoZW55dSA8emhlbnl1Lnoud2FuZ0BpbnRlbC5jb20+Cj4gKyAqICAg IEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0aHAuY29tPgo+ICsgKi8KPiArCj4gKy8qIFNhbXBs ZSB0aGUgc3JjIHN1cmZhY2UgKi8KPiArCj4gK2luY2x1ZGUoYGV4YV93bS5nNGknKQo+ICsKPiAr dW5kZWZpbmUoYHNyY19tc2cnKQo+ICt1bmRlZmluZShgc3JjX21zZ19pbmQnKQo+ICsKPiArZGVm aW5lKGBzcmNfbXNnJywgICAgICAgYGc2NScpCj4gK2RlZmluZShgc3JjX21zZ19pbmQnLCAgIGA2 NScpCj4gKwo+ICsvKiBwcmVwYXJlIHNhbXBsZXIgcmVhZCBiYWNrIGdYIHJlZ2lzdGVyLCB3aGlj aCB3b3VsZCBiZSB3cml0dGVuIGJhY2sgdG8gb3V0cHV0ICovCj4gKwo+ICsvKiB1c2Ugc2ltZDE2 IHNhbXBsZXIsIHBhcmFtIDAgaXMgdSwgcGFyYW0gMSBpcyB2LiAqLwo+ICsvKiAncGF5bG9hZCcg bG9hZGluZywgYXNzdW1pbmcgdGV4IGNvb3JkIHN0YXJ0IGZyb20gZzQgKi8KPiArCj4gKy8qIGxv YWQgYXJnYiAqLwo+ICttb3YgKDEpIGcwLjg8MT5VRAkweDAwMDAwMDAwVUQgeyBhbGlnbjEgbWFz a19kaXNhYmxlIH07Cj4gK21vdiAoOCkgc3JjX21zZzwxPlVEIGcwPDgsOCwxPlVEIHsgYWxpZ24x IH07IC8qIGNvcHkgdG8gbXNnIHN0YXJ0IHJlZyovCj4gKwo+ICsvKiBzcmNfbXNnIHdpbGwgYmUg Y29waWVkIHdpdGggZzAsIGFzIGl0IGNvbnRhaW5zIHNlbmQgZGVzYyAqLwo+ICsvKiBlbWl0IHNh bXBsZXIgJ3NlbmQnIGNtZCAqLwo+ICtzZW5kICgxNikgc3JjX21zZ19pbmQJLyogbXNnIHJlZyBp bmRleCAqLwo+ICsJc3JjX3NhbXBsZV9iYXNlPDE+VVcgLyogcmVhZGJhY2sgKi8KPiArCW51bGwK PiArCXNhbXBsZXIgKDEsMCxGKQkvKiBzYW1wbGVyIG1lc3NhZ2UgZGVzY3JpcHRpb24sIChiaW5k aW5nX3RhYmxlLHNhbXBsZXJfaW5kZXgsZGF0YXR5cGUpCj4gKwkJCQkvKiBoZXJlKHNyYy0+ZHN0 KSB3ZSBzaG91bGQgdXNlIHNyY19zYW1wbGVyIGFuZCBzcmNfc3VyZmFjZSAqLwo+ICsJbWxlbiA1 IHJsZW4gOCB7IGFsaWduMSB9OyAgIC8qIHJlcXVpcmVkIG1lc3NhZ2UgbGVuIDUsIHJlYWRiYWNr IGxlbiA4ICovCj4gKwo+ICsKPiArLyoKPiArICogSGF2ZSB0byBjaGFuZ2UgYnl0ZXMgb3JkZXIs IGJlY2F1c2UgdGhlIG9ubHkKPiArICogcGxheWVyIHdoaWNoIHN1cHBvcnRzIEFZVVYgZm9ybWF0 IGN1cnJlbnRseSBpcwo+ICsgKiBHc3RyZWFtZXIgYW5kIGl0IHN1cHBvcnRzIGluIGJhZCB3YXks IGV2ZW4gdGhvdWdoCj4gKyAqIHNwZWMgc2F5cyBNU0I6QVlVViwgd2UgZ2V0IHRoZSBieXRlcyBv cHBvc2l0ZSB3YXkuCj4gKyAqLwo+ICttb3YgKDE2KSBzcmNfc2FtcGxlX2I8MT5VRCBzcmNfc2Ft cGxlX3I8MT5VRCAgeyBhbGlnbjEgfTsKPiArbW92ICgxNikgc3JjX3NhbXBsZV9yPDE+VUQgc3Jj X3NhbXBsZV9hPDE+VUQgIHsgYWxpZ24xIH07Cj4gK21vdiAoMTYpIHNyY19zYW1wbGVfYTwxPkYg MS4wRjsKPiArCj4gZGlmZiAtLWdpdCBhL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3Nh bXBsZV9hcmdiX2F5dXYuZzhiIGIvc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV9zcmNfc2FtcGxl X2FyZ2JfYXl1di5nOGIKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi40 ZjQzOTE0MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dt X3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4Ygo+IEBAIC0wLDAgKzEsNiBAQAo+ICsgICB7IDB4MDAw MDAwMDEsIDB4MjAwODA2MGMsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAgfSwKPiArICAgeyAweDAw NjAwMDAxLCAweDI4MjAwMjA4LCAweDAwOGQwMDAwLCAweDAwMDAwMDAwIH0sCj4gKyAgIHsgMHgw MjgwMDAzMSwgMHgyMWMwMGE0OCwgMHgwNjAwMDgyMCwgMHgwYThjMDAwMSB9LAo+ICsgICB7IDB4 MDA4MDAwMDEsIDB4MjI0MDAyMDgsIDB4MDAyMDAxYzAsIDB4MDAwMDAwMDAgfSwKPiArICAgeyAw eDAwODAwMDAxLCAweDIxYzAwMjA4LCAweDAwMjAwMjgwLCAweDAwMDAwMDAwIH0sCj4gKyAgIHsg MHgwMDgwMDAwMSwgMHgyMjgwM2VlOCwgMHgzODAwMDAwMCwgMHgzZjgwMDAwMCB9LAo+IGRpZmYg LS1naXQgYS9zcmMvc25hL2dlbjlfcmVuZGVyLmMgYi9zcmMvc25hL2dlbjlfcmVuZGVyLmMKPiBp bmRleCBlYjIyYjY0Mi4uYTRlMmRjN2IgMTAwNjQ0Cj4gLS0tIGEvc3JjL3NuYS9nZW45X3JlbmRl ci5jCj4gKysrIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCj4gQEAgLTEyOSw2ICsxMjksMjAgQEAg c3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbF9wbGFuYXJfYnQ3MDlbXVs0XSA9IHsKPiAg I2luY2x1ZGUgImV4YV93bV93cml0ZS5nOGIiCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3QgdWlu dDMyX3QgcHNfa2VybmVsX2F5dXZfYnQ2MDFbXVs0XSA9IHsKPiArI2luY2x1ZGUgImV4YV93bV9z cmNfYWZmaW5lLmc4YiIKPiArI2luY2x1ZGUgImV4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5n OGIiCj4gKyNpbmNsdWRlICJleGFfd21feXV2X3JnYl9idDYwMS5nOGIiCj4gKyNpbmNsdWRlICJl eGFfd21fd3JpdGUuZzhiIgo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2tl cm5lbF9heXV2X2J0NzA5W11bNF0gPSB7Cj4gKyNpbmNsdWRlICJleGFfd21fc3JjX2FmZmluZS5n OGIiCj4gKyNpbmNsdWRlICJleGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiIgo+ICsjaW5j bHVkZSAiZXhhX3dtX3l1dl9yZ2JfYnQ3MDkuZzhiIgo+ICsjaW5jbHVkZSAiZXhhX3dtX3dyaXRl Lmc4YiIKPiArfTsKPiArCj4gIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwc19rZXJuZWxfbnYxMl9i dDcwOVtdWzRdID0gewo+ICAjaW5jbHVkZSAiZXhhX3dtX3NyY19hZmZpbmUuZzhiIgo+ICAjaW5j bHVkZSAiZXhhX3dtX3NyY19zYW1wbGVfbnYxMi5nOGIiCj4gQEAgLTE3Nyw2ICsxOTEsOCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHdtX2tlcm5lbF9pbmZvIHsKPiAgCUtFUk5FTChWSURFT19QTEFO QVJfQlQ3MDksIHBzX2tlcm5lbF9wbGFuYXJfYnQ3MDksIDcpLAo+ICAJS0VSTkVMKFZJREVPX05W MTJfQlQ3MDksIHBzX2tlcm5lbF9udjEyX2J0NzA5LCA3KSwKPiAgCUtFUk5FTChWSURFT19QQUNL RURfQlQ3MDksIHBzX2tlcm5lbF9wYWNrZWRfYnQ3MDksIDIpLAo+ICsJS0VSTkVMKFZJREVPX0FZ VVZfQlQ2MDEsIHBzX2tlcm5lbF9heXV2X2J0NjAxLCAyKSwKPiArCUtFUk5FTChWSURFT19BWVVW X0JUNzA5LCBwc19rZXJuZWxfYXl1dl9idDcwOSwgMiksCj4gIAlLRVJORUwoVklERU9fUkdCLCBw c19rZXJuZWxfcmdiLCAyKSwKPiAgI2VuZGlmCj4gIH07Cj4gQEAgLTI1NTIsNyArMjU2OCw2IEBA IGdlbjlfcmVuZGVyX2NvbXBvc2l0ZShzdHJ1Y3Qgc25hICpzbmEsCj4gIAkJCQkJCQkgICAgIHRt cC0+bWFzay5ibyAhPSBOVUxMLAo+ICAJCQkJCQkJICAgICB0bXAtPmhhc19jb21wb25lbnRfYWxw aGEsCj4gIAkJCQkJCQkgICAgIHRtcC0+aXNfYWZmaW5lKTsKPiAtCj4gIAl0bXAtPmJsdCAgID0g Z2VuOV9yZW5kZXJfY29tcG9zaXRlX2JsdDsKPiAgCXRtcC0+Ym94ICAgPSBnZW45X3JlbmRlcl9j b21wb3NpdGVfYm94Owo+ICAJdG1wLT5ib3hlcyA9IGdlbjlfcmVuZGVyX2NvbXBvc2l0ZV9ib3hl c19fYmx0Owo+IEBAIC0zODUzLDYgKzM4NjgsOCBAQCBzdGF0aWMgdm9pZCBnZW45X2VtaXRfdmlk ZW9fc3RhdGUoc3RydWN0IHNuYSAqc25hLAo+ICAJCQlzcmNfc3VyZl9mb3JtYXRbMF0gPSBTVVJG QUNFRk9STUFUX0I4RzhSOFg4X1VOT1JNOwo+ICAJCWVsc2UgaWYgKGZyYW1lLT5pZCA9PSBGT1VS Q0NfVVlWWSkKPiAgCQkJc3JjX3N1cmZfZm9ybWF0WzBdID0gU1VSRkFDRUZPUk1BVF9ZQ1JDQl9T V0FQWTsKPiArCQllbHNlIGlmIChpc19heXV2X2ZvdXJjYyhmcmFtZS0+aWQpKQo+ICsJCQlzcmNf c3VyZl9mb3JtYXRbMF0gPSBTVVJGQUNFRk9STUFUX0I4RzhSOEE4X1VOT1JNOwo+ICAJCWVsc2UK PiAgCQkJc3JjX3N1cmZfZm9ybWF0WzBdID0gU1VSRkFDRUZPUk1BVF9ZQ1JDQl9OT1JNQUw7Cj4g IAo+IEBAIC0zOTAzLDYgKzM5MjAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIHNlbGVjdF92aWRlb19r ZXJuZWwoY29uc3Qgc3RydWN0IHNuYV92aWRlbyAqdmlkZW8sCj4gIAljYXNlIEZPVVJDQ19SR0I1 NjU6Cj4gIAkJcmV0dXJuIEdFTjlfV01fS0VSTkVMX1ZJREVPX1JHQjsKPiAgCj4gKwljYXNlIEZP VVJDQ19BWVVWOgo+ICsJCXJldHVybiB2aWRlby0+Y29sb3JzcGFjZSA/Cj4gKwkJCUdFTjlfV01f S0VSTkVMX1ZJREVPX0FZVVZfQlQ3MDkgOgo+ICsJCQlHRU45X1dNX0tFUk5FTF9WSURFT19BWVVW X0JUNjAxOwo+ICsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuIHZpZGVvLT5jb2xvcnNwYWNlID8K PiAgCQkJR0VOOV9XTV9LRVJORUxfVklERU9fUEFDS0VEX0JUNzA5IDoKPiBAQCAtNDA4MCw2ICs0 MTAyLDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9yZW5kZXJfZmluaShzdHJ1Y3Qgc25hICpzbmEpCj4g IAlrZ2VtX2JvX2Rlc3Ryb3koJnNuYS0+a2dlbSwgc25hLT5yZW5kZXJfc3RhdGUuZ2VuOS5nZW5l cmFsX2JvKTsKPiAgfQo+ICAKPiArCj4gIHN0YXRpYyBib29sIGdlbjlfcmVuZGVyX3NldHVwKHN0 cnVjdCBzbmEgKnNuYSkKPiAgewo+ICAJc3RydWN0IGdlbjlfcmVuZGVyX3N0YXRlICpzdGF0ZSA9 ICZzbmEtPnJlbmRlcl9zdGF0ZS5nZW45Owo+IGRpZmYgLS1naXQgYS9zcmMvc25hL3NuYV9yZW5k ZXIuaCBiL3NyYy9zbmEvc25hX3JlbmRlci5oCj4gaW5kZXggYTRlNWI1NmEuLjg5MWZjOTA1IDEw MDY0NAo+IC0tLSBhL3NyYy9zbmEvc25hX3JlbmRlci5oCj4gKysrIGIvc3JjL3NuYS9zbmFfcmVu ZGVyLmgKPiBAQCAtNjE3LDYgKzYxNyw5IEBAIGVudW0gewo+ICAJR0VOOV9XTV9LRVJORUxfVklE RU9fTlYxMl9CVDcwOSwKPiAgCUdFTjlfV01fS0VSTkVMX1ZJREVPX1BBQ0tFRF9CVDcwOSwKPiAg Cj4gKwlHRU45X1dNX0tFUk5FTF9WSURFT19BWVVWX0JUNjAxLAo+ICsJR0VOOV9XTV9LRVJORUxf VklERU9fQVlVVl9CVDcwOSwKPiArCj4gIAlHRU45X1dNX0tFUk5FTF9WSURFT19SR0IsCj4gIAlH RU45X1dNX0tFUk5FTF9DT1VOVAo+ICB9Owo+IGRpZmYgLS1naXQgYS9zcmMvc25hL3NuYV92aWRl by5jIGIvc3JjL3NuYS9zbmFfdmlkZW8uYwo+IGluZGV4IDU1NDA1ZjgxLi43NWJkYzdkMCAxMDA2 NDQKPiAtLS0gYS9zcmMvc25hL3NuYV92aWRlby5jCj4gKysrIGIvc3JjL3NuYS9zbmFfdmlkZW8u Ywo+IEBAIC01OSw2ICs1OSw3IEBACj4gICNpbmNsdWRlICJpbnRlbF9vcHRpb25zLmgiCj4gIAo+ ICAjaW5jbHVkZSA8eGY4Nnh2Lmg+Cj4gKyNpbmNsdWRlIDxieXRlc3dhcC5oPgo+ICAKPiAgI2lm ZGVmIFNOQV9YVk1DCj4gICNkZWZpbmUgX1NOQV9YVk1DX1NFUlZFUl8KPiBAQCAtMjgxLDYgKzI4 Miw3IEBAIHNuYV92aWRlb19mcmFtZV9zZXRfcm90YXRpb24oc3RydWN0IHNuYV92aWRlbyAqdmlk ZW8sCj4gIAl9IGVsc2Ugewo+ICAJCXN3aXRjaCAoZnJhbWUtPmlkKSB7Cj4gIAkJY2FzZSBGT1VS Q0NfUkdCODg4Ogo+ICsJCWNhc2UgRk9VUkNDX0FZVVY6Cj4gIAkJCWlmIChyb3RhdGlvbiAmIChS Ul9Sb3RhdGVfOTAgfCBSUl9Sb3RhdGVfMjcwKSkgewo+ICAJCQkJZnJhbWUtPnBpdGNoWzBdID0g QUxJR04oKGhlaWdodCA8PCAyKSwgYWxpZ24pOwo+ICAJCQkJZnJhbWUtPnNpemUgPSAoaW50KWZy YW1lLT5waXRjaFswXSAqIHdpZHRoOwo+IEBAIC01ODQsNiArNTg2LDExOCBAQCBzbmFfY29weV9w YWNrZWRfZGF0YShzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywKPiAgCX0KPiAgfQo+ICAKPiArc3Rh dGljIHZvaWQKPiArc25hX2NvcHlfYXl1dl9kYXRhKHN0cnVjdCBzbmFfdmlkZW8gKnZpZGVvLAo+ ICsJCSAgIGNvbnN0IHN0cnVjdCBzbmFfdmlkZW9fZnJhbWUgKmZyYW1lLAo+ICsJCSAgIGNvbnN0 IHVpbnQ4X3QgKmJ1ZiwKPiArCQkgICB1aW50OF90ICpkc3QpCj4gK3sKPiArCWludCBwaXRjaCA9 IGZyYW1lLT53aWR0aCA8PCAyOwo+ICsJY29uc3QgdWludDhfdCAqc3JjLCAqczsKPiArCWNvbnN0 IHVpbnQzMl90ICpzcmNfZHc7Cj4gKwl1aW50MzJfdCAqZHN0X2R3ID0gKHVpbnQzMl90ICopZHN0 Owo+ICsJaW50IHgsIHksIHcsIGg7Cj4gKwlpbnQgaSwgajsKPiArCj4gKwlpZiAodmlkZW8tPnRl eHR1cmVkKSB7Cj4gKwkJLyogWFhYIHN1cHBvcnQgY29weWluZyBjcm9wcGVkIGV4dGVudHMgKi8K PiArCQl4ID0geSA9IDA7Cj4gKwkJdyA9IGZyYW1lLT53aWR0aDsKPiArCQloID0gZnJhbWUtPmhl aWdodDsKPiArCX0gZWxzZSB7Cj4gKwkJeCA9IGZyYW1lLT5pbWFnZS54MTsKPiArCQl5ID0gZnJh bWUtPmltYWdlLnkxOwo+ICsJCXcgPSBmcmFtZS0+aW1hZ2UueDIgLSBmcmFtZS0+aW1hZ2UueDE7 Cj4gKwkJaCA9IGZyYW1lLT5pbWFnZS55MiAtIGZyYW1lLT5pbWFnZS55MTsKPiArCX0KPiArCj4g KwlzcmMgPSBidWYgKyAoeSAqIHBpdGNoKSArICh4IDw8IDIpOwo+ICsJc3JjX2R3ID0gKHVpbnQz Ml90ICopc3JjOwo+ICsJc3dpdGNoIChmcmFtZS0+cm90YXRpb24pIHsKPiArCWNhc2UgUlJfUm90 YXRlXzA6Cj4gKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewo+ICsJCQlmb3IgKGogPSAwOyBq IDwgdzsgaisrKSB7Cj4gKwkJCQl1aW50MzJfdCByZXZlcnNlX2R3LCBkdyA9IHNyY19kd1tpICog dyArIGpdOwo+ICsJCQkJaWYgKCF2aWRlby0+dGV4dHVyZWQpIHsKPiArCQkJCQkvKgo+ICsJCQkJ CSAqIEZvciB0ZXh0dXJlZCB3ZSBkbyBieXRlIHJldmVyc2luZyBpbiBzaGFkZXIuCj4gKwkJCQkJ ICogSGF2ZSB0byByZXZlcnNlIGJ5dGVzIG9yZGVyLCBiZWNhdXNlIHRoZSBvbmx5Cj4gKwkJCQkJ ICogcGxheWVyIHdoaWNoIHN1cHBvcnRzIEFZVVYgZm9ybWF0IGN1cnJlbnRseSBpcwo+ICsJCQkJ CSAqIEdzdHJlYW1lciBhbmQgaXQgc3VwcG9ydHMgaW4gYmFkIHdheSwgZXZlbiB0aG91Z2gKPiAr CQkJCQkgKiBzcGVjIHNheXMgTVNCOkFZVVYsIHdlIGdldCB0aGUgYnl0ZXMgb3Bwb3NpdGUgd2F5 Lgo+ICsJCQkJCSAqLwo+ICsJCQkJCXJldmVyc2VfZHcgPSBic3dhcF8zMihkdyk7Cj4gKwkJCQl9 Cj4gKwkJCQllbHNlCj4gKwkJCQkJcmV2ZXJzZV9kdyA9IGR3Owo+ICsJCQkJZHN0X2R3W2kgKiB3 ICsgal0gPSByZXZlcnNlX2R3Owo+ICsJCQl9Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJY2FzZSBS Ul9Sb3RhdGVfOTA6Cj4gKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewo+ICsJCQlmb3IgKGog PSAwO2ogPCB3OyBqKyspIHsKPiArCQkJCXVpbnQzMl90IHJldmVyc2VfZHcsIGR3ID0gc3JjX2R3 W2kgKiB3ICsgal07Cj4gKwkJCQlpZiAoIXZpZGVvLT50ZXh0dXJlZCkgewo+ICsJCQkJCS8qCj4g KwkJCQkJICogRm9yIHRleHR1cmVkIHdlIGRvIGJ5dGUgcmV2ZXJzaW5nIGluIHNoYWRlci4KPiAr CQkJCQkgKiBIYXZlIHRvIHJldmVyc2UgYnl0ZXMgb3JkZXIsIGJlY2F1c2UgdGhlIG9ubHkKPiAr CQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgQVlVViBmb3JtYXQgY3VycmVudGx5IGlzCj4g KwkJCQkJICogR3N0cmVhbWVyIGFuZCBpdCBzdXBwb3J0cyBpbiBiYWQgd2F5LCBldmVuIHRob3Vn aAo+ICsJCQkJCSAqIHNwZWMgc2F5cyBNU0I6QVlVViwgd2UgZ2V0IHRoZSBieXRlcyBvcHBvc2l0 ZSB3YXkuCj4gKwkJCQkJICovCj4gKwkJCQkJcmV2ZXJzZV9kdyA9IGJzd2FwXzMyKGR3KTsKPiAr CQkJCX0KPiArCQkJCWVsc2UKPiArCQkJCQlyZXZlcnNlX2R3ID0gZHc7Cj4gKwkJCQlkc3RfZHdb KHcgLSBqIC0gMSkgKiBoICsgaV0gPSByZXZlcnNlX2R3Owo+ICsJCQl9Cj4gKwkJfQo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBSUl9Sb3RhdGVfMTgwOgo+ICsJCWZvciAoaSA9IDA7IGkgPCBoOyBpKysp IHsKPiArCQkJZm9yIChqID0gMDsgaiA8IHc7IGorKykgewo+ICsJCQkJdWludDMyX3QgcmV2ZXJz ZV9kdywgZHcgPSBzcmNfZHdbaSAqIHcgKyBqXTsKPiArCQkJCS8qIENvbHVtbnMgaW4gcmV2ZXJz ZSBvcmRlciwgcm93cyBpbiByZXZlcnNlIG9yZGVyICovCj4gKwkJCQlpZiAoIXZpZGVvLT50ZXh0 dXJlZCkgewo+ICsJCQkJCS8qCj4gKwkJCQkJICogRm9yIHRleHR1cmVkIHdlIGRvIGJ5dGUgcmV2 ZXJzaW5nIGluIHNoYWRlci4KPiArCQkJCQkgKiBIYXZlIHRvIHJldmVyc2UgYnl0ZXMgb3JkZXIs IGJlY2F1c2UgdGhlIG9ubHkKPiArCQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgQVlVViBm b3JtYXQgY3VycmVudGx5IGlzCj4gKwkJCQkJICogR3N0cmVhbWVyIGFuZCBpdCBzdXBwb3J0cyBp biBiYWQgd2F5LCBldmVuIHRob3VnaAo+ICsJCQkJCSAqIHNwZWMgc2F5cyBNU0I6QVlVViwgd2Ug Z2V0IHRoZSBieXRlcyBvcHBvc2l0ZSB3YXkuCj4gKwkJCQkJICovCj4gKwkJCQkJcmV2ZXJzZV9k dyA9IGJzd2FwXzMyKGR3KTsKPiArCQkJCX0KPiArCQkJCWVsc2UKPiArCQkJCQlyZXZlcnNlX2R3 ID0gZHc7Cj4gKwkJCQlkc3RfZHdbKGggLSBpIC0gMSkgKiB3ICsgdyAtIGogLSAxXSA9IHJldmVy c2VfZHc7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFJSX1JvdGF0ZV8yNzA6 Cj4gKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewo+ICsJCQlmb3IgKGogPSAwOyBqIDwgdzsg aisrKSB7Cj4gKwkJCQl1aW50MzJfdCByZXZlcnNlX2R3LCBkdyA9IHNyY19kd1tpICogdyArIGpd OzsKPiArCQkJCWlmICghdmlkZW8tPnRleHR1cmVkKSB7Cj4gKwkJCQkJLyoKPiArCQkJCQkgKiBG b3IgdGV4dHVyZWQgd2UgZG8gYnl0ZSByZXZlcnNpbmcgaW4gc2hhZGVyLgo+ICsJCQkJCSAqIEhh dmUgdG8gcmV2ZXJzZSBieXRlcyBvcmRlciwgYmVjYXVzZSB0aGUgb25seQo+ICsJCQkJCSAqIHBs YXllciB3aGljaCBzdXBwb3J0cyBBWVVWIGZvcm1hdCBjdXJyZW50bHkgaXMKPiArCQkJCQkgKiBH c3RyZWFtZXIgYW5kIGl0IHN1cHBvcnRzIGluIGJhZCB3YXksIGV2ZW4gdGhvdWdoCj4gKwkJCQkJ ICogc3BlYyBzYXlzIE1TQjpBWVVWLCB3ZSBnZXQgdGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4KPiAr CQkJCQkgKi8KPiArCQkJCQlyZXZlcnNlX2R3ID0gYnN3YXBfMzIoZHcpOwo+ICsJCQkJfQo+ICsJ CQkJZWxzZQo+ICsJCQkJCXJldmVyc2VfZHcgPSBkdzsKPiArCQkJCWRzdF9kd1sodyAtIGogLSAx KSAqIGggKyBpXSA9IHJldmVyc2VfZHc7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4gKwl9 Cj4gK30KPiArCj4gIGJvb2wKPiAgc25hX3ZpZGVvX2NvcHlfZGF0YShzdHJ1Y3Qgc25hX3ZpZGVv ICp2aWRlbywKPiAgCQkgICAgc3RydWN0IHNuYV92aWRlb19mcmFtZSAqZnJhbWUsCj4gQEAgLTcw OSw2ICs4MjMsOSBAQCB1c2VfZ3R0OiAvKiBjb3B5IGRhdGEsIG11c3QgdXNlIEdUVCBzbyB0aGF0 IHdlIGtlZXAgdGhlIG92ZXJsYXkgdW5jYWNoZWQgKi8KPiAgCQlzbmFfY29weV9udjEyX2RhdGEo dmlkZW8sIGZyYW1lLCBidWYsIGRzdCk7Cj4gIAllbHNlIGlmIChpc19wbGFuYXJfZm91cmNjKGZy YW1lLT5pZCkpCj4gIAkJc25hX2NvcHlfcGxhbmFyX2RhdGEodmlkZW8sIGZyYW1lLCBidWYsIGRz dCk7Cj4gKwllbHNlIGlmIChpc19heXV2X2ZvdXJjYyhmcmFtZS0+aWQpKQo+ICsJCS8qIFNvbWUg aGFyZGNvZGluZyBpcyBkb25lIGluIGRlZmF1bHQgc25hX2NvcHlfcGFja2VkX2RhdGEsIHNvIGFk ZGVkIGEgc3BlY2lmaWMgZnVuY3Rpb24gKi8KPiArCQlzbmFfY29weV9heXV2X2RhdGEodmlkZW8s IGZyYW1lLCBidWYsIGRzdCk7Cj4gIAllbHNlCj4gIAkJc25hX2NvcHlfcGFja2VkX2RhdGEodmlk ZW8sIGZyYW1lLCBidWYsIGRzdCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9zcmMvc25hL3NuYV92aWRl by5oIGIvc3JjL3NuYS9zbmFfdmlkZW8uaAo+IGluZGV4IGJiZDNmMGZkLi4zZTY3NWY4NCAxMDA2 NDQKPiAtLS0gYS9zcmMvc25hL3NuYV92aWRlby5oCj4gKysrIGIvc3JjL3NuYS9zbmFfdmlkZW8u aAo+IEBAIC0zOSw2ICszOSw3IEBAIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgo+ICAjZGVmaW5lIEZPVVJDQ19SR0I1NjUgKCgxNiA8PCAyNCkgKyAoJ0InIDw8IDE2 KSArICgnRycgPDwgOCkgKyAnUicpCj4gICNkZWZpbmUgRk9VUkNDX1JHQjg4OCAoKDI0IDw8IDI0 KSArICgnQicgPDwgMTYpICsgKCdHJyA8PCA4KSArICdSJykKPiAgI2RlZmluZSBGT1VSQ0NfTlYx MiAoKCcyJyA8PCAyNCkgKyAoJzEnIDw8IDE2KSArICgnVicgPDwgOCkgKyAnTicpCj4gKyNkZWZp bmUgRk9VUkNDX0FZVVYgKCgnVicgPDwgMjQpICsgKCdVJyA8PCAxNikgKyAoJ1knIDw8IDgpICsg J0EnKQo+ICAKPiAgLyoKPiAgICogQmVsb3csIGEgZHVtbXkgcGljdHVyZSB0eXBlIHRoYXQgaXMg dXNlZCBpbiBYdlB1dEltYWdlCj4gQEAgLTc5LDYgKzgwLDE1IEBAIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICAJWHZUb3BUb0JvdHRvbSBcCj4gIH0KPiAgCj4g KyNkZWZpbmUgWFZJTUFHRV9BWVVWIHsgXAo+ICsJRk9VUkNDX0FZVVYsIFh2WVVWLCBMU0JGaXJz dCwgXAo+ICsJeydBJywgJ1knLCAnVScsICdWJywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4 MCwgMHgwMCwgMHgwMCwgMHhBQSwgMHgwMCwgMHgzOCwgMHg5QiwgMHg3MX0sIFwKPiArCTMyLCBY dlBhY2tlZCwgMSwgMCwgMCwgMCwgMCwgOCwgOCwgOCwgMSwgMiwgMiwgMSwgMiwgMiwgXAo+ICsJ eydBJywgJ1knLCAnVScsICdWJywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0sIFwKPiArCVh2 VG9wVG9Cb3R0b20gXAo+ICt9Cj4gKwo+ICsKPiAgc3RydWN0IHNuYV92aWRlbyB7Cj4gIAlzdHJ1 Y3Qgc25hICpzbmE7Cj4gIAo+IEBAIC0xODksNiArMTk5LDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50 IGlzX252MTJfZm91cmNjKGludCBpZCkKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSBp bnQgaXNfYXl1dl9mb3VyY2MoaW50IGlkKQo+ICt7Cj4gKwlzd2l0Y2ggKGlkKSB7Cj4gKwljYXNl IEZPVVJDQ19BWVVWOgo+ICsJCXJldHVybiAxOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gMDsK PiArCX0KPiArfQo+ICsKPiAgYm9vbAo+ICBzbmFfdmlkZW9fY2xpcF9oZWxwZXIoc3RydWN0IHNu YV92aWRlbyAqdmlkZW8sCj4gIAkJICAgICAgc3RydWN0IHNuYV92aWRlb19mcmFtZSAqZnJhbWUs Cj4gZGlmZiAtLWdpdCBhL3NyYy9zbmEvc25hX3ZpZGVvX3Nwcml0ZS5jIGIvc3JjL3NuYS9zbmFf dmlkZW9fc3ByaXRlLmMKPiBpbmRleCA4YjdhZThhZS4uYWU0OTNkYWEgMTAwNjQ0Cj4gLS0tIGEv c3JjL3NuYS9zbmFfdmlkZW9fc3ByaXRlLmMKPiArKysgYi9zcmMvc25hL3NuYV92aWRlb19zcHJp dGUuYwo+IEBAIC00Nyw3ICs0Nyw3IEBACj4gICNkZWZpbmUgRFJNX0ZPUk1BVF9ZVVlWICAgICAg ICAgZm91cmNjX2NvZGUoJ1knLCAnVScsICdZJywgJ1YnKSAvKiBbMzE6MF0gQ3IwOlkxOkNiMDpZ MCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KPiAgI2RlZmluZSBEUk1fRk9STUFUX1VZVlkgICAg ICAgICBmb3VyY2NfY29kZSgnVScsICdZJywgJ1YnLCAnWScpIC8qIFszMTowXSBZMTpDcjA6WTA6 Q2IwIDg6ODo4OjggbGl0dGxlIGVuZGlhbiAqLwo+ICAjZGVmaW5lIERSTV9GT1JNQVRfTlYxMiAg ICAgICAgIGZvdXJjY19jb2RlKCdOJywgJ1YnLCAnMScsICcyJykgLyogMngyIHN1YnNhbXBsZWQg Q3I6Q2IgcGxhbmUgKi8KPiAtCj4gKyNkZWZpbmUgRFJNX0ZPUk1BVF9YWVVWODg4OCAgICAgZm91 cmNjX2NvZGUoJ1gnLCAnWScsICdVJywgJ1YnKSAvKiBbMzE6MF0geDpZOlU6ViA4Ojg6ODo4IGxp dHRsZSBlbmRpYW4gKi8KPiAgI2RlZmluZSBoYXNfaHdfc2NhbGluZyhzbmEsIHZpZGVvKSAoKHNu YSktPmtnZW0uZ2VuIDwgMDcxIHx8IFwKPiAgCQkJCSAgICAoc25hKS0+a2dlbS5nZW4gPj0gMDEx MCkKPiAgCj4gQEAgLTc2LDkgKzc2LDExIEBAIHN0YXRpYyBYdkZvcm1hdFJlYyBmb3JtYXRzW10g PSB7IHsxNX0sIHsxNn0sIHsyNH0gfTsKPiAgc3RhdGljIGNvbnN0IFh2SW1hZ2VSZWMgaW1hZ2Vz W10gPSB7IFhWSU1BR0VfWVVZMiwgWFZJTUFHRV9VWVZZLAo+ICAJCQkJICAgICBYVk1DX1JHQjg4 OCB9Owo+ICBzdGF0aWMgY29uc3QgWHZJbWFnZVJlYyBpbWFnZXNfcmdiNTY1W10gPSB7IFhWSU1B R0VfWVVZMiwgWFZJTUFHRV9VWVZZLAo+IC0JCQkJCSAgICBYVk1DX1JHQjg4OCwgWFZNQ19SR0I1 NjUgfTsKPiArCQkJCQkgICAgWFZNQ19SR0I4ODgsIFhWTUNfUkdCNTY1LCBYVklNQUdFX0FZVVYg fTsKPiAgc3RhdGljIGNvbnN0IFh2SW1hZ2VSZWMgaW1hZ2VzX252MTJbXSA9IHsgWFZJTUFHRV9Z VVkyLCBYVklNQUdFX1VZVlksCj4gLQkJCQkJICBYVklNQUdFX05WMTIsIFhWTUNfUkdCODg4LCBY Vk1DX1JHQjU2NSB9Owo+ICsJCQkJCSAgWFZJTUFHRV9OVjEyLCBYVk1DX1JHQjg4OCwgWFZNQ19S R0I1NjUsIFhWSU1BR0VfQVlVViB9Owo+ICtzdGF0aWMgY29uc3QgWHZJbWFnZVJlYyBpbWFnZXNf eHl1djg4ODhbXSA9IHsgWFZJTUFHRV9ZVVkyLCBYVklNQUdFX1VZVlksCj4gKwkJCQkJICBYVklN QUdFX05WMTIsIFhWTUNfUkdCODg4LCBYVk1DX1JHQjU2NSwgWFZJTUFHRV9BWVVWIH07Cj4gIHN0 YXRpYyBjb25zdCBYdkF0dHJpYnV0ZVJlYyBhdHRyaWJzW10gPSB7Cj4gIAl7IFh2U2V0dGFibGUg fCBYdkdldHRhYmxlLCAwLCAxLCAoY2hhciAqKSJYVl9DT0xPUlNQQUNFIiB9LCAvKiBCVC42MDEs IEJULjcwOSAqLwo+ICAJeyBYdlNldHRhYmxlIHwgWHZHZXR0YWJsZSwgMCwgMHhmZmZmZmYsIChj aGFyICopIlhWX0NPTE9SS0VZIiB9LAo+IEBAIC0zNjQsNiArMzY2LDEwIEBAIHNuYV92aWRlb19z cHJpdGVfc2hvdyhzdHJ1Y3Qgc25hICpzbmEsCj4gIAkJY2FzZSBGT1VSQ0NfVVlWWToKPiAgCQkJ Zi5waXhlbF9mb3JtYXQgPSBEUk1fRk9STUFUX1VZVlk7Cj4gIAkJCWJyZWFrOwo+ICsJCWNhc2Ug Rk9VUkNDX0FZVVY6Cj4gKwkJCS8qIGk5MTUgZG9lc24ndCBzdXBwb3J0IGFscGhhLCBzbyB3ZSB1 c2UgWFlVViAqLwo+ICsJCQlmLnBpeGVsX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFlVVjg4ODg7Cj4g KwkJCWJyZWFrOwo+ICAJCWNhc2UgRk9VUkNDX1lVWTI6Cj4gIAkJZGVmYXVsdDoKPiAgCQkJZi5w aXhlbF9mb3JtYXQgPSBEUk1fRk9STUFUX1lVWVY7Cj4gQEAgLTcwNSw3ICs3MTEsMTIgQEAgc3Rh dGljIGludCBzbmFfdmlkZW9fc3ByaXRlX3F1ZXJ5KGRkUXVlcnlJbWFnZUF0dHJpYnV0ZXNfQVJH UykKPiAgCQl0bXAgKj0gKCpoID4+IDEpOwo+ICAJCXNpemUgKz0gdG1wOwo+ICAJCWJyZWFrOwo+ IC0KPiArCWNhc2UgRk9VUkNDX0FZVVY6Cj4gKwkJdG1wID0gKncgPDwgMjsKPiArCQlpZiAocGl0 Y2hlcykKPiArCQkJcGl0Y2hlc1swXSA9IHRtcDsKPiArCQlzaXplID0gKmggKiB0bXA7Cj4gKwkJ YnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCSp3ID0gKCp3ICsgMSkgJiB+MTsKPiAgCQkqaCA9ICgq aCArIDEpICYgfjE7Cj4gQEAgLTgxMSw2ICs4MjIsOSBAQCB2b2lkIHNuYV92aWRlb19zcHJpdGVf c2V0dXAoc3RydWN0IHNuYSAqc25hLCBTY3JlZW5QdHIgc2NyZWVuKQo+ICAJfSBlbHNlIGlmIChz bmFfaGFzX3Nwcml0ZV9mb3JtYXQoc25hLCBEUk1fRk9STUFUX1JHQjU2NSkpIHsKPiAgCQlhZGFw dG9yLT5wSW1hZ2VzID0gKFh2SW1hZ2VSZWMgKilpbWFnZXNfcmdiNTY1Owo+ICAJCWFkYXB0b3It Pm5JbWFnZXMgPSBBUlJBWV9TSVpFKGltYWdlc19yZ2I1NjUpOwo+ICsJfSBlbHNlIGlmIChzbmFf aGFzX3Nwcml0ZV9mb3JtYXQoc25hLCBEUk1fRk9STUFUX1hZVVY4ODg4KSkgewo+ICsJCWFkYXB0 b3ItPnBJbWFnZXMgPSAoWHZJbWFnZVJlYyAqKWltYWdlc194eXV2ODg4ODsKPiArCQlhZGFwdG9y LT5uSW1hZ2VzID0gQVJSQVlfU0laRShpbWFnZXNfeHl1djg4ODgpOwo+ICAJfSBlbHNlIHsKPiAg CQlhZGFwdG9yLT5wSW1hZ2VzID0gKFh2SW1hZ2VSZWMgKilpbWFnZXM7Cj4gIAkJYWRhcHRvci0+ bkltYWdlcyA9IEFSUkFZX1NJWkUoaW1hZ2VzKTsKPiBkaWZmIC0tZ2l0IGEvc3JjL3NuYS9zbmFf dmlkZW9fdGV4dHVyZWQuYyBiL3NyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMKPiBpbmRleCBh Nzg0ZmUyZS4uNDZjMjEzZWYgMTAwNjQ0Cj4gLS0tIGEvc3JjL3NuYS9zbmFfdmlkZW9fdGV4dHVy ZWQuYwo+ICsrKyBiL3NyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMKPiBAQCAtNjgsNiArNjgs NyBAQCBzdGF0aWMgY29uc3QgWHZJbWFnZVJlYyBnZW40X0ltYWdlc1tdID0gewo+ICAJWFZJTUFH RV9JNDIwLAo+ICAJWFZJTUFHRV9OVjEyLAo+ICAJWFZJTUFHRV9VWVZZLAo+ICsJWFZJTUFHRV9B WVVWLAo+ICAJWFZNQ19ZVVYsCj4gIH07Cj4gIAo+IEBAIC0zMzcsNiArMzM4LDEyIEBAIHNuYV92 aWRlb190ZXh0dXJlZF9xdWVyeShkZFF1ZXJ5SW1hZ2VBdHRyaWJ1dGVzX0FSR1MpCj4gIAkJCXBp dGNoZXNbMF0gPSBzaXplOwo+ICAJCXNpemUgKj0gKmg7Cj4gIAkJYnJlYWs7Cj4gKwljYXNlIEZP VVJDQ19BWVVWOgo+ICsJCXNpemUgPSAqdyA8PCAyOwo+ICsJCWlmIChwaXRjaGVzKQo+ICsJCQlw aXRjaGVzWzBdID0gc2l6ZTsKPiArCQlzaXplICo9ICpoOwo+ICsJCWJyZWFrOwo+ICAJY2FzZSBG T1VSQ0NfWFZNQzoKPiAgCQkqaCA9ICgqaCArIDEpICYgfjE7Cj4gIAkJc2l6ZSA9IHNpemVvZih1 aW50MzJfdCk7Cj4gLS0gCj4gMi4xNy4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=