From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5AD416E559 for ; Tue, 5 Feb 2019 14:31:17 +0000 (UTC) References: <20190201111544.7920-1-maarten.lankhorst@linux.intel.com> <20190201111544.7920-3-maarten.lankhorst@linux.intel.com> <8d6ab2f0-afbb-6b74-9cf5-877576974320@intel.com> From: Maarten Lankhorst Message-ID: Date: Tue, 5 Feb 2019 15:31:14 +0100 MIME-Version: 1.0 In-Reply-To: <8d6ab2f0-afbb-6b74-9cf5-877576974320@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 3/4] lib/igt_fb: Add support for Y21x formats as well. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Sharma, Swati2" , igt-dev@lists.freedesktop.org List-ID: T3AgMDUtMDItMjAxOSBvbSAxNDoxNCBzY2hyZWVmIFNoYXJtYSwgU3dhdGkyOgo+Cj4gT24gMDEt RmViLTE5IDQ6NDUgUE0sIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBUaG9zZSBmb3JtYXRz IGFyZSBwYWNrZWQgbGlrZSBZVVlWLCBidXQgb25seSAxNiBiaXRzIHBlciBjb21wb25lbnQuCj4+ Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiDCoCBpbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2Mu aCB8wqDCoCA2ICstCj4+IMKgIGxpYi9pZ3RfY29sb3JfZW5jb2RpbmcuY8KgwqDCoMKgwqAgfMKg wqAgMyArCj4+IMKgIGxpYi9pZ3RfZmIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAxNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiDCoCAzIGZpbGVz IGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Cj4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaCBiL2luY2x1ZGUvZHJtLXVhcGkvZHJt X2ZvdXJjYy5oCj4+IGluZGV4IGM5YTVlNTc4NzAzMS4uOGYxYjVmODMyYTA5IDEwMDY0NAo+PiAt LS0gYS9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaAo+PiArKysgYi9pbmNsdWRlL2RybS11 YXBpL2RybV9mb3VyY2MuaAo+PiBAQCAtMTQ5LDEwICsxNDksMTQgQEAgZXh0ZXJuICJDIiB7Cj4+ IMKgICNkZWZpbmUgRFJNX0ZPUk1BVF9ZVllVwqDCoMKgwqDCoMKgwqAgZm91cmNjX2NvZGUoJ1kn LCAnVicsICdZJywgJ1UnKSAvKiBbMzE6MF0gQ2IwOlkxOkNyMDpZMCA4Ojg6ODo4IGxpdHRsZSBl bmRpYW4gKi8KPj4gwqAgI2RlZmluZSBEUk1fRk9STUFUX1VZVlnCoMKgwqDCoMKgwqDCoCBmb3Vy Y2NfY29kZSgnVScsICdZJywgJ1YnLCAnWScpIC8qIFszMTowXSBZMTpDcjA6WTA6Q2IwIDg6ODo4 OjggbGl0dGxlIGVuZGlhbiAqLwo+PiDCoCAjZGVmaW5lIERSTV9GT1JNQVRfVllVWcKgwqDCoMKg wqDCoMKgIGZvdXJjY19jb2RlKCdWJywgJ1knLCAnVScsICdZJykgLyogWzMxOjBdIFkxOkNiMDpZ MDpDcjAgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCj4+IC0KPj4gwqAgI2RlZmluZSBEUk1fRk9S TUFUX0FZVVbCoMKgwqDCoMKgwqDCoCBmb3VyY2NfY29kZSgnQScsICdZJywgJ1UnLCAnVicpIC8q IFszMTowXSBBOlk6Q2I6Q3IgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCj4+IMKgICNkZWZpbmUg RFJNX0ZPUk1BVF9YWVVWODg4OMKgwqDCoCBmb3VyY2NfY29kZSgnWCcsICdZJywgJ1UnLCAnVicp IC8qIFszMTowXSBYOlk6Q2I6Q3IgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCj4+IMKgICsvKiBM aWtlIFlVWVYsIGJ1dCAxNiBicGMsIGxvd2VzdCBiaXRzIHVudXNlZCBsaWtlIGluIERSTV9GT1JN QVRfUDAxWCAqLwo+PiArI2RlZmluZSBEUk1fRk9STUFUX1kyMTDCoMKgwqDCoMKgwqDCoCBmb3Vy Y2NfY29kZSgnWScsICcyJywgJzEnLCAnMCcpCj4+ICsjZGVmaW5lIERSTV9GT1JNQVRfWTIxMsKg wqDCoMKgwqDCoMKgIGZvdXJjY19jb2RlKCdZJywgJzInLCAnMScsICcyJykKPj4gKyNkZWZpbmUg RFJNX0ZPUk1BVF9ZMjE2wqDCoMKgwqDCoMKgwqAgZm91cmNjX2NvZGUoJ1knLCAnMicsICcxJywg JzYnKQo+PiArCj4+IMKgIC8qCj4+IMKgwqAgKiBwYWNrZWQgWUNiQ3I0MjAgMngyIHRpbGVkIGZv cm1hdHMKPj4gwqDCoCAqIGZpcnN0IDY0IGJpdHMgd2lsbCBjb250YWluIFksQ2IsQ3IgY29tcG9u ZW50cyBmb3IgYSAyeDIgdGlsZQo+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9jb2xvcl9lbmNvZGlu Zy5jIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCj4+IGluZGV4IGI3YTEyYTFlMDdmNy4uNmY4 MmZjZWM2MmU0IDEwMDY0NAo+PiAtLS0gYS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKPj4gKysr IGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCj4+IEBAIC0xNDQsNiArMTQ0LDkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgewo+PiDCoMKgwqDCoMKgIHsgRFJN X0ZPUk1BVF9QMDEwLCA2NTQ3Mi5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwg NjE0NDAuZiB9LAo+PiDCoMKgwqDCoMKgIHsgRFJNX0ZPUk1BVF9QMDEyLCA2NTUyMC5mLCA0MDk2 LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAo+PiDCoMKgwqDCoMKgIHsg RFJNX0ZPUk1BVF9QMDE2LCA2NTUzNS5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3Njgu ZiwgNjE0NDAuZiB9LAo+PiArwqDCoMKgIHsgRFJNX0ZPUk1BVF9ZMjEwLCA2NTQ3Mi5mLCA0MDk2 LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAo+PiArwqDCoMKgIHsgRFJN X0ZPUk1BVF9ZMjEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwg NjE0NDAuZiB9LAo+PiArwqDCoMKgIHsgRFJNX0ZPUk1BVF9ZMjE2LCA2NTUzNS5mLCA0MDk2LmYs IDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAo+PiDCoCB9Owo+PiDCoCDCoCBz dGF0aWMgY29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCAqbG9va3VwX2ZvdXJjYyh1 aW50MzJfdCBmb3VyY2MpCj4+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2Zi LmMKPj4gaW5kZXggOGJkMDQyMGZjMmU0Li5jMTRjYzEwZDFiNzMgMTAwNjQ0Cj4+IC0tLSBhL2xp Yi9pZ3RfZmIuYwo+PiArKysgYi9saWIvaWd0X2ZiLmMKPj4gQEAgLTE1MSw2ICsxNTEsMTggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qgewo+PiDCoMKgwqDCoMKgwqDC oCAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCMjQsCj4+IMKgwqDCoMKgwqDCoMKgIC5udW1f cGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgMTYsIH0sCj4+IMKgwqDCoMKgwqAgfSwKPj4gK8Kg wqDCoCB7IC5uYW1lID0gIlkyMTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRf WTIxMCwKPj4gK8KgwqDCoMKgwqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKPj4g K8KgwqDCoMKgwqAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAzMiwgfSwKPj4gK8Kg wqDCoCB9LAo+PiArwqDCoMKgIHsgLm5hbWUgPSAiWTIxMiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lk ID0gRFJNX0ZPUk1BVF9ZMjEyLAo+PiArwqDCoMKgwqDCoCAuY2Fpcm9faWQgPSBDQUlST19GT1JN QVRfUkdCOTZGLAo+PiArwqDCoMKgwqDCoCAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7 IDMyLCB9LAo+PiArwqDCoMKgIH0sCj4+ICvCoMKgwqAgeyAubmFtZSA9ICJZMjE2IiwgLmRlcHRo ID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1kyMTYsCj4+ICvCoMKgwqDCoMKgIC5jYWlyb19p ZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4+ICvCoMKgwqDCoMKgIC5udW1fcGxhbmVzID0gMSwg LnBsYW5lX2JwcCA9IHsgMzIsIH0sCj4+ICvCoMKgwqAgfSwKPj4gwqDCoMKgwqDCoCB7IC5uYW1l ID0gIlAwMTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMCwKPj4gwqDC oMKgwqDCoMKgwqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKPj4gwqDCoMKgwqDC oMKgwqAgLm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKPj4gQEAgLTU1 Myw2ICs1NjUsMTMgQEAgc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKHN0cnVjdCBpZ3RfZmIg KmZiKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPm9m ZnNldHNbMV0gLyBzaXplb2Yod2NoYXJfdCkpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHdtZW1zZXQocHRyICsgZmItPm9mZnNldHNbMV0sIDB4ODAwMDgwMDAsCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBESVZfUk9VTkRfVVAoZmIt PmhlaWdodCwyKSAqIGZiLT5zdHJpZGVzWzFdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1kyMTA6Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjYXNlIERSTV9GT1JNQVRfWTIxNjoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzBdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZnVsbF9yYW5nZSA/IDB4ODAwMDAwMDAgOiAweDgwMDAxMDAwLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPnN0cmlkZXNbMF0g KiBmYi0+cGxhbmVfaGVpZ2h0WzBdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZW1fbXVubWFwKHB0ciwgZmItPnNpemUp Owo+Cj4gSGkgTWFhcnRlbiwKPgo+IFdoaWxlIHRlc3RpbmcgWTIxMCBwaXhlbCBmb3JtYXQsIElH VCBpcyBmYWlsaW5nIHdpdGggZGVidWcgbWVzc2FnZSBzaG93aW5nIGlndF9jcmVhdGVfZmIoKSBm YWlsdXJlCj4KPiAoa21zX3BsYW5lOjM5NzQpIGlndF9mYi1DUklUSUNBTDogVGVzdCBhc3NlcnRp b24gZmFpbHVyZSBmdW5jdGlvbiBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZSwgZmlsZSAuLi9s aWIvaWd0X2ZiLmM6MTA1MToKPiAoa21zX3BsYW5lOjM5NzQpIGlndF9mYi1DUklUSUNBTDogRmFp bGVkIGFzc2VydGlvbjogKF9fa21zX2FkZGZiKGZiLT5mZCwgZmItPmdlbV9oYW5kbGUsIGZiLT53 aWR0aCwgZmItPmhlaWdodCwgZmItPmRybV9mb3JtYXQsIGZiLT50aWxpbmcsIGZiLT5zdHJpZGVz LCBmYi0+b2Zmc2V0cywgZmItPm51bV9wbGFuZXMsIGZsYWdzLCAmZmItPmZiX2lkKSkgPT0gMAo+ IChrbXNfcGxhbmU6Mzk3NCkgaWd0X2ZiLUNSSVRJQ0FMOiBMYXN0IGVycm5vOiAyMiwgSW52YWxp ZCBhcmd1bWVudAo+Cj4gZG1lc2cgc2hvd2luZyBiYWQgcGl0Y2ggMTI4MDAgZm9yIFkyMTAgcGl4 ZWwgZm9ybWF0Cj4KPiBbwqAgNjM0LjA2NjYwOF0gW2RybTpkcm1faW50ZXJuYWxfZnJhbWVidWZm ZXJfY3JlYXRlXSBiYWQgcGl0Y2ggMTI4MDAgZm9yIHBsYW5lIDAKPiBbwqAgNjM0LjEwNDQ0NF0g W0lHVF0ga21zX3BsYW5lOiBleGl0aW5nLCByZXQ9OTkKPgo+IENhbiB5b3UgcGxlYXNlIGNvbmZp cm0gd2hldGhlciBjaGFuZ2VzIG5lZWRzIHRvIGJlIGRvbmUgZnJvbSBpZ3Qgb3Igc29tZSBpc3N1 ZSB3aXRoIFkyeHggZHJpdmVyIHBhdGNoZXM/Cj4KPj4gQEAgLTIxMzksNiArMjE1OCwxMjAgQEAg c3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b19wMDFYKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQp Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCB9Cj4+IMKgICsKPj4gK3N0YXRpYyB2b2lkIGNvbnZlcnRf WTIxWF90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiArewo+PiArwqDCoMKgIGlu dCBpLCBqOwo+PiArwqDCoMKgIGNvbnN0IHVpbnQxNl90ICp5dXl2Owo+PiArwqDCoMKgIHVpbnQx Nl90ICpidWY7Cj4+ICvCoMKgwqAgZmxvYXQgKnB0ciA9IGN2dC0+ZHN0LnB0cjsKPj4gK8KgwqDC oCB1bnNpZ25lZCBpbnQgZmxvYXRfc3RyaWRlID0gY3Z0LT5kc3QuZmItPnN0cmlkZXNbMF0gLyBz aXplb2YoKnB0cik7Cj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IHl1eXZfc3RyaWRlID0gY3Z0LT5z cmMuZmItPnN0cmlkZXNbMF0gLyBzaXplb2YoKnl1eXYpOwo+PiArwqDCoMKgIHN0cnVjdCBpZ3Rf bWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3Z0LT5zcmMuZmItPmNvbG9yX2VuY29kaW5n LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGN2dC0+c3JjLmZiLT5jb2xvcl9yYW5nZSk7Cj4+ICsKPj4gK8KgwqDCoCBpZ3RfYXNzZXJ0 KChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1kyMTAgfHwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9Z MjEyIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0 ID09IERSTV9GT1JNQVRfWTIxNikgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGN2dC0+ZHN0 LmZiLT5kcm1fZm9ybWF0ID09IElHVF9GT1JNQVRfRkxPQVQpOwo+PiArCj4+ICvCoMKgwqAgeXV5 diA9IGJ1ZiA9IGNvbnZlcnRfc3JjX2dldChjdnQpOwo+PiArCj4+ICvCoMKgwqAgZm9yIChpID0g MDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgZm9y IChqID0gMDsgaiA8IGN2dC0+ZHN0LmZiLT53aWR0aCAvIDI7IGorKykgewo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKiBDb252ZXJ0IDJ4MSBwaXhlbCBibG9ja3MgKi8KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGlndF92ZWM0IHl1dlsyXTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGlndF92ZWM0IHJnYlsyXTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB5dXZbMF0uZFswXSA9IHl1eXZbaiAqIDQgKyAwXTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgeXV2WzFdLmRbMF0gPSB5dXl2W2ogKiA0ICsgMl07Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHl1dlswXS5kWzFdID0geXV2WzFdLmRbMV0gPSB5dXl2W2ogKiA0ICsgMV07Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlswXS5kWzJdID0geXV2WzFdLmRbMl0gPSB5dXl2 W2ogKiA0ICsgM107Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlswXS5kWzNdID0geXV2 WzFdLmRbM10gPSAxLjBmOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJnYlswXSA9 IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzBdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmdiWzFdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbMV0pOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXRlX3JnYmYoJnB0cltqICogNiArIDBdLCAmcmdi WzBdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVfcmdiZigmcHRyW2ogKiA2ICsg M10sICZyZ2JbMV0pOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAoY3Z0LT5kc3QuZmItPndpZHRoICYgMSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgaWd0X3ZlYzQgeXV2Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg aWd0X3ZlYzQgcmdiOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1di5kWzBdID0g eXV5dltqICogNCArIDBdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5dXYuZFsxXSA9IHl1 eXZbaiAqIDQgKyAxXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeXV2LmRbMl0gPSB5dXl2 W2ogKiA0ICsgM107Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1di5kWzNdID0gMS4wZjsK Pj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZ2IgPSBpZ3RfbWF0cml4X3RyYW5zZm9y bSgmbSwgJnl1dik7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVfcmdiZigm cHRyW2ogKiA2ICsgMF0sICZyZ2IpOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoCBwdHIgKz0gZmxvYXRfc3RyaWRlOwo+PiArwqDCoMKgwqDCoMKgwqAgeXV5diAr PSB5dXl2X3N0cmlkZTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBjb252ZXJ0X3NyY19w dXQoY3Z0LCBidWYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3Rv X1kyMVgoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gK3sKPj4gK8KgwqDCoCBpbnQgaSwgajsK Pj4gK8KgwqDCoCB1aW50MTZfdCAqeXV5diA9IGN2dC0+ZHN0LnB0cjsKPj4gK8KgwqDCoCBjb25z dCBmbG9hdCAqcHRyID0gY3Z0LT5zcmMucHRyOwo+PiArwqDCoMKgIHVuc2lnbmVkIGZsb2F0X3N0 cmlkZSA9IGN2dC0+c3JjLmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwo+PiArwqDCoMKg IHVuc2lnbmVkIHl1eXZfc3RyaWRlID0gY3Z0LT5kc3QuZmItPnN0cmlkZXNbMF0gLyBzaXplb2Yo Knl1eXYpOwo+PiArwqDCoMKgIHN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9t YXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5n ZSk7Cj4+ICsKPj4gK8KgwqDCoCBpZ3RfYXNzZXJ0KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09 IElHVF9GT1JNQVRfRkxPQVQgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIChjdnQtPmRzdC5m Yi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1kyMTAgfHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZMjEyIHx8Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JN QVRfWTIxNikpOwo+PiArCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5o ZWlnaHQ7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChqID0gMDsgaiA8IGN2dC0+ZHN0 LmZiLT53aWR0aCAvIDI7IGorKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBDb252 ZXJ0IDJ4MSBwaXhlbCBibG9ja3MgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGlndF92ZWM0IHJnYlsyXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGlndF92 ZWM0IHl1dlsyXTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWFkX3JnYmYoJnJn YlswXSwgJnB0cltqICogNiArIDBdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZF9y Z2JmKCZyZ2JbMV0sICZwdHJbaiAqIDYgKyAzXSk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgeXV2WzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMF0pOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB5dXZbMV0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJn YlsxXSk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeXV5dltqICogNCArIDBdID0g eXV2WzBdLmRbMF07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1eXZbaiAqIDQgKyAyXSA9 IHl1dlsxXS5kWzBdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5dXl2W2ogKiA0ICsgMV0g PSAoeXV2WzBdLmRbMV0gKyB5dXZbMV0uZFsxXSkgLyAyLjBmOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB5dXl2W2ogKiA0ICsgM10gPSAoeXV2WzBdLmRbMl0gKyB5dXZbMV0uZFsyXSkgLyAy LjBmOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoY3Z0 LT5kc3QuZmItPndpZHRoICYgMSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg aWd0X3ZlYzQgcmdiOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaWd0X3ZlYzQg eXV2Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlYWRfcmdiZigmcmdiLCAmcHRy W2ogKiA2ICsgMF0pOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1diA9IGlndF9t YXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB5dXl2W2ogKiA0ICsgMF0gPSB5dXYuZFswXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg eXV5dltqICogNCArIDFdID0geXV2LmRbMV07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1 eXZbaiAqIDQgKyAzXSA9IHl1di5kWzJdOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqDCoMKgwqDCoCBwdHIgKz0gZmxvYXRfc3RyaWRlOwo+PiArwqDCoMKgwqDCoMKgwqAgeXV5 diArPSB5dXl2X3N0cmlkZTsKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gwqAgc3RhdGljIHZv aWQgY29udmVydF9waXhtYW4oc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gwqAgewo+PiDCoMKg wqDCoMKgIHBpeG1hbl9mb3JtYXRfY29kZV90IHNyY19waXhtYW4gPSBkcm1fZm9ybWF0X3RvX3Bp eG1hbihjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7Cj4+IEBAIC0yMjIxLDYgKzIzNTQsMTEgQEAg c3RhdGljIHZvaWQgZmJfY29udmVydChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbnZlcnRfcDAxWF90b19mbG9hdChjdnQpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfWTIxMDoK Pj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgo+PiArwqDCoMKgwqDCoMKg wqAgY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnZl cnRfWTIxWF90b19mbG9hdChjdnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgfSBlbHNlIGlmIChjdnQtPnNy Yy5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBzd2l0Y2ggKGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KSB7Cj4+IEBAIC0yMjI5LDYgKzIz NjcsMTEgQEAgc3RhdGljIHZvaWQgZmJfY29udmVydChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbnZlcnRfZmxvYXRfdG9fcDAxWChjdnQpOwo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JN QVRfWTIxMDoKPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgo+PiArwqDC oMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnZlcnRfZmxvYXRfdG9fWTIxWChjdnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm47Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCBA QCAtMjU4Myw2ICsyNzI2LDkgQEAgYm9vbCBpZ3RfZm9ybWF0X2lzX3l1dih1aW50MzJfdCBkcm1f Zm9ybWF0KQo+PiDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEwOgo+PiDCoMKgwqDCoMKg IGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDE2 Ogo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9ZMjEwOgo+PiArwqDCoMKgIGNhc2UgRFJNX0ZP Uk1BVF9ZMjEyOgo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9ZMjE2Ogo+PiDCoMKgwqDCoMKg IGNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+PiDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9ZVllV Ogo+PiDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+CkNhbiBJIGdldCB0aGUgZnVs bCBJR1QgLyBkbWVzZyBsb2dzPyBJIGNhbid0IHNlZSB3aGF0IHRoZSBmYiBkaW1lbnNpb25zIHRo ZXkgYXJlLgoKfk1hYXJ0ZW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dgo=