From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Engestrom Subject: Re: [PATCH] drm/fb-helper: Redo fb format<->fb_bitfield mapping Date: Wed, 7 Feb 2018 17:08:30 +0000 Message-ID: <20180207170830.a25suzue6jdk34ps@imgtec.com> References: <20180207152445.25563-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailapp01.imgtec.com (mailapp01.imgtec.com [195.59.15.196]) by gabe.freedesktop.org (Postfix) with ESMTP id 6F22A6E104 for ; Wed, 7 Feb 2018 17:08:33 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180207152445.25563-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville Syrjala Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkbmVzZGF5LCAyMDE4LTAyLTA3IDE3OjI0OjQ1ICswMjAwLCBWaWxsZSBTeXJqYWxhIHdy b3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gCj4gUmVwbGFjZSB0aGUgc3dpdGNoIHN0YXRlbWVudHMgdGhhdCB0cnkgdG8gbWFwIGJl dHdlZW4gdGhlIGZiIGZvcm1hdCBhbmQKPiB0aGUgZmJfYml0ZmllbGQgaW5mcm9tYXRpb24gd2l0 aCBhIHNpbmdsZSB0YWJsZS4KPiAKPiBOb3RlIHRoYXQgdGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlv dXIgb2YgZHJtX2ZiX2hlbHBlcl9jaGVja192YXIoKSB0bwo+IHJldHVybiBhbiBlcnJvciBvZiB0 aGUgcmVxdWVzdGVkIGZiX2JpdGZpZWxkcyBkb24ndCBtYXRjaCB0aGUgYWN0dWFsCj4gcGl4ZWwg Zm9ybWF0LiBQcmV2aW91c2x5IHdlIGp1c3Qgc29ydCBvZiBzZW1pLXRydXN0ZWQgc29tZSBvZiB0 aGUKPiBicHAvZGVwdGggaW5mb3JtYXRpb24gdGhlIHVzZXIgd2FzIGFza2luZyBmb3IsIGFuZCBu ZXZlciBhY3R1YWxseQo+IGNoZWNrZWQgaWYgdGhhdCBtYXRjaGVzIHRoZSBmYiBwaXhlbCBmb3Jt YXQuCj4gCj4gVGhpcyBwcmVwYXJlcyB1cyB0byB1c2UgYWxsIGRpZmZlcmVudCByZ2IgZm9ybWF0 IGNoYW5uZWwgbGF5b3V0cy4KPiBCYXNpY2FsbHkgd291bGQganVzdCBuZWVkIHNvbWUgZGVjZW50 IHdheSBmb3IgdGhlIGRyaXZlci9jbWRsaW5lCj4gdG8gc2VsZWN0IHRoZSBvbmUgeW91IHdhbnQu Cj4gCj4gSSBkaWRuJ3QgdGhpbmsgYWJvdXQgZW5kaWFubmVzcyBoZXJlIGF0IGFsbC4gTm90IHN1 cmUgaG93IGZiZGV2IGlzCj4gc3VwcG9zZWQgdG8gZGVhbCB3aXRoIHRoYXQgc3R1ZmYgYW55d2F5 LCBhbmQgSSBkb24ndCB0aGluayB3ZSBldmVyCj4gcmVhY2hlZCBhIHJlYWwgY29uY2Vuc3VzIG9u IHRoZSBkcm0gZm91cmNjIGVuZGlhbm5lc3MgZWl0aGVyLiBTbwo+IEknbGwganVzdCBwcmV0ZW5k IGV2ZXJ5dGhpbmcgaXMgbGl0dGxlIGVuZGlhbiBhbmQgaWdub3JlIGV2ZXJ5dGhpbmcKPiBlbHNl Lgo+IAo+IENjOiBMaW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+Cj4gQ2M6 IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgo+IENjOiBJbGlhIE1pcmtpbiA8 aW1pcmtpbkBhbHVtLm1pdC5lZHU+Cj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9mYl9oZWxwZXIuYyB8IDI4MCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+IGluZGV4IDAzNTc4NGRkZDEzMy4uMGM5MDZl M2E1YmIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gQEAgLTQwLDYgKzQwLDcgQEAK PiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fZm91cmNjLmg+Cj4gIAo+ICAjaW5jbHVkZSAiZHJtX2NydGNfaW50ZXJuYWwu aCIKPiAgI2luY2x1ZGUgImRybV9jcnRjX2hlbHBlcl9pbnRlcm5hbC5oIgo+IEBAIC0xNTYxLDYg KzE1NjIsMTQ3IEBAIGludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZv LCB1bnNpZ25lZCBpbnQgY21kLAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9p b2N0bCk7Cj4gIAo+ICsjZGVmaW5lIEZCX0ZPUk1BVF9DKGMpIHsgXAo+ICsJLmZvcm1hdCA9IERS TV9GT1JNQVRfQyMjYywgICAgXAo+ICsJLmJsdWUgICA9IHsgLmxlbmd0aCA9IChjKSwgfSwgXAo+ ICsJLmdyZWVuICA9IHsgLmxlbmd0aCA9IChjKSwgfSwgXAo+ICsJLnJlZCAgICA9IHsgLmxlbmd0 aCA9IChjKSwgfSwgXAo+ICt9Cj4gKyNkZWZpbmUgRkJfRk9STUFUX1JHQihyLCBnLCBiKSB7IFwK PiArCS5mb3JtYXQgPSBEUk1fRk9STUFUX1JHQiMjciMjZyMjYiwgXAo+ICsJLmJsdWUgICA9IHsg Lmxlbmd0aCA9IChiKSwgLm9mZnNldCA9IDAsIH0sIFwKPiArCS5ncmVlbiAgPSB7IC5sZW5ndGgg PSAoZyksIC5vZmZzZXQgPSAoYiksIH0sIFwKPiArCS5yZWQgICAgPSB7IC5sZW5ndGggPSAociks IC5vZmZzZXQgPSAoYikrKGcpLCB9LCBcCj4gK30KPiArI2RlZmluZSBGQl9GT1JNQVRfQkdSKGIs IGcsIHIpIHsgXAo+ICsJLmZvcm1hdCA9IERSTV9GT1JNQVRfQkdSIyNiIyNnIyNyLCBcCj4gKwku cmVkICAgID0geyAubGVuZ3RoID0gKHIpLCAub2Zmc2V0ID0gMCwgfSwgXAo+ICsJLmdyZWVuICA9 IHsgLmxlbmd0aCA9IChnKSwgLm9mZnNldCA9IChyKSwgfSwgXAo+ICsJLmJsdWUgICA9IHsgLmxl bmd0aCA9IChiKSwgLm9mZnNldCA9IChyKSsoZyksIH0sIFwKPiArfQo+ICsjZGVmaW5lIEZCX0ZP Uk1BVF9YUkdCKHgsIHIsIGcsIGIpIHsgXAo+ICsJLmZvcm1hdCA9IERSTV9GT1JNQVRfWFJHQiMj eCMjciMjZyMjYiwgXAo+ICsJLmJsdWUgICA9IHsgLmxlbmd0aCA9IChiKSwgLm9mZnNldCA9IDAs IH0sIFwKPiArCS5ncmVlbiAgPSB7IC5sZW5ndGggPSAoZyksIC5vZmZzZXQgPSAoYiksIH0sIFwK PiArCS5yZWQgICAgPSB7IC5sZW5ndGggPSAociksIC5vZmZzZXQgPSAoYikrKGcpLCB9LCBcCj4g K30KPiArI2RlZmluZSBGQl9GT1JNQVRfWEJHUih4LCBiLCBnLCByKSB7IFwKPiArCS5mb3JtYXQg PSBEUk1fRk9STUFUX1hCR1IjI3gjI2IjI2cjI3IsIFwKPiArCS5yZWQgICAgPSB7IC5sZW5ndGgg PSAociksIC5vZmZzZXQgPSAwLCB9LCBcCj4gKwkuZ3JlZW4gID0geyAubGVuZ3RoID0gKGcpLCAu b2Zmc2V0ID0gKHIpLCB9LCBcCj4gKwkuYmx1ZSAgID0geyAubGVuZ3RoID0gKGIpLCAub2Zmc2V0 ID0gKHIpKyhnKSwgfSwgXAo+ICt9Cj4gKyNkZWZpbmUgRkJfRk9STUFUX1JHQlgociwgZywgYiwg eCkgeyBcCj4gKwkuZm9ybWF0ID0gRFJNX0ZPUk1BVF9SR0JYIyNyIyNnIyNiIyN4LCBcCj4gKwku Ymx1ZSAgID0geyAubGVuZ3RoID0gKGIpLCAub2Zmc2V0ID0gKHgpLCB9LCBcCj4gKwkuZ3JlZW4g ID0geyAubGVuZ3RoID0gKGcpLCAub2Zmc2V0ID0gKHgpKyhiKSwgfSwgXAo+ICsJLnJlZCAgICA9 IHsgLmxlbmd0aCA9IChyKSwgLm9mZnNldCA9ICh4KSsoYikrKGcpLCB9LCBcCj4gK30KPiArI2Rl ZmluZSBGQl9GT1JNQVRfQkdSWChiLCBnLCByLCB4KSB7IFwKPiArCS5mb3JtYXQgPSBEUk1fRk9S TUFUX0JHUlgjI2IjI2cjI3IjI3gsIFwKPiArCS5yZWQgICAgPSB7IC5sZW5ndGggPSAociksIC5v ZmZzZXQgPSAoeCksIH0sIFwKPiArCS5ncmVlbiAgPSB7IC5sZW5ndGggPSAoZyksIC5vZmZzZXQg PSAoeCkrKHIpLCB9LCBcCj4gKwkuYmx1ZSAgID0geyAubGVuZ3RoID0gKGIpLCAub2Zmc2V0ID0g KHgpKyhyKSsoZyksIH0sIFwKPiArfQo+ICsjZGVmaW5lIEZCX0ZPUk1BVF9BUkdCKGEsIHIsIGcs IGIpIHsgXAo+ICsJLmZvcm1hdCA9IERSTV9GT1JNQVRfQVJHQiMjYSMjciMjZyMjYiwgXAo+ICsJ LmJsdWUgICA9IHsgLmxlbmd0aCA9IChiKSwgLm9mZnNldCA9IDAsIH0sIFwKPiArCS5ncmVlbiAg PSB7IC5sZW5ndGggPSAoZyksIC5vZmZzZXQgPSAoYiksIH0sIFwKPiArCS5yZWQgICAgPSB7IC5s ZW5ndGggPSAociksIC5vZmZzZXQgPSAoYikrKGcpLCB9LCBcCj4gKwkudHJhbnNwID0geyAubGVu Z3RoID0gKGEpLCAub2Zmc2V0ID0gKGIpKyhnKSsociksIH0sIFwKPiArfQo+ICsjZGVmaW5lIEZC X0ZPUk1BVF9BQkdSKGEsIGIsIGcsIHIpIHsgXAo+ICsJLmZvcm1hdCA9IERSTV9GT1JNQVRfQUJH UiMjYSMjYiMjZyMjciwgXAo+ICsJLnJlZCAgICA9IHsgLmxlbmd0aCA9IChyKSwgLm9mZnNldCA9 IDAsIH0sIFwKPiArCS5ncmVlbiAgPSB7IC5sZW5ndGggPSAoZyksIC5vZmZzZXQgPSAociksIH0s IFwKPiArCS5ibHVlICAgPSB7IC5sZW5ndGggPSAoYiksIC5vZmZzZXQgPSAocikrKGcpLCB9LFwK PiArCS50cmFuc3AgPSB7IC5sZW5ndGggPSAoYSksIC5vZmZzZXQgPSAocikrKGcpKyhiKSwgfSwg XAo+ICt9Cj4gKyNkZWZpbmUgRkJfRk9STUFUX1JHQkEociwgZywgYiwgYSkgeyBcCj4gKwkuZm9y bWF0ID0gRFJNX0ZPUk1BVF9SR0JBIyNyIyNnIyNiIyNhLCBcCj4gKwkudHJhbnNwID0geyAubGVu Z3RoID0gKGEpLCAub2Zmc2V0ID0gMCwgfSwgXAo+ICsJLmJsdWUgICA9IHsgLmxlbmd0aCA9IChi KSwgLm9mZnNldCA9IChhKSwgfSwgXAo+ICsJLmdyZWVuICA9IHsgLmxlbmd0aCA9IChnKSwgLm9m ZnNldCA9IChhKSsoYiksIH0sIFwKPiArCS5yZWQgICAgPSB7IC5sZW5ndGggPSAociksIC5vZmZz ZXQgPSAoYSkrKGIpKyhnKSwgfSwgXAo+ICt9Cj4gKyNkZWZpbmUgRkJfRk9STUFUX0JHUkEoYiwg ZywgciwgYSkgeyBcCj4gKwkuZm9ybWF0ID0gRFJNX0ZPUk1BVF9CR1JBIyNiIyNnIyNyIyNhLCBc Cj4gKwkudHJhbnNwID0geyAubGVuZ3RoID0gKGEpLCAub2Zmc2V0ID0gMCwgfSwgXAo+ICsJLnJl ZCAgICA9IHsgLmxlbmd0aCA9IChyKSwgLm9mZnNldCA9IChhKSwgfSwgXAo+ICsJLmdyZWVuICA9 IHsgLmxlbmd0aCA9IChnKSwgLm9mZnNldCA9IChhKSsociksIH0sIFwKPiArCS5ibHVlICAgPSB7 IC5sZW5ndGggPSAoYiksIC5vZmZzZXQgPSAoYSkrKHIpKyhnKSwgfSwgXAo+ICt9Cj4gKwo+ICtz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mb3JtYXQgewo+ICsJdTMyIGZvcm1hdDsKPiArCXN0cnVjdCBm Yl9iaXRmaWVsZCByZWQsIGdyZWVuLCBibHVlLCB0cmFuc3A7Cj4gK307Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZm9ybWF0IGZiX2Zvcm1hdHNbXSA9IHsKPiArCUZC X0ZPUk1BVF9DKDgpLAo+ICsKPiArCUZCX0ZPUk1BVF9YUkdCKDEsIDUsIDUsIDUpLAo+ICsJRkJf Rk9STUFUX1hCR1IoMSwgNSwgNSwgNSksCj4gKwlGQl9GT1JNQVRfUkdCWCg1LCA1LCA1LCAxKSwK PiArCUZCX0ZPUk1BVF9CR1JYKDUsIDUsIDUsIDEpLAo+ICsKPiArCUZCX0ZPUk1BVF9BUkdCKDEs IDUsIDUsIDUpLAo+ICsJRkJfRk9STUFUX0FCR1IoMSwgNSwgNSwgNSksCj4gKwlGQl9GT1JNQVRf UkdCQSg1LCA1LCA1LCAxKSwKPiArCUZCX0ZPUk1BVF9CR1JBKDUsIDUsIDUsIDEpLAo+ICsKPiAr CUZCX0ZPUk1BVF9SR0IoNSwgNiwgNSksCj4gKwlGQl9GT1JNQVRfQkdSKDUsIDYsIDUpLAo+ICsK PiArCUZCX0ZPUk1BVF9SR0IoOCwgOCwgOCksCj4gKwlGQl9GT1JNQVRfQkdSKDgsIDgsIDgpLAo+ ICsKPiArCUZCX0ZPUk1BVF9YUkdCKDgsIDgsIDgsIDgpLAo+ICsJRkJfRk9STUFUX1hCR1IoOCwg OCwgOCwgOCksCj4gKwlGQl9GT1JNQVRfUkdCWCg4LCA4LCA4LCA4KSwKPiArCUZCX0ZPUk1BVF9C R1JYKDgsIDgsIDgsIDgpLAo+ICsKPiArCUZCX0ZPUk1BVF9BUkdCKDgsIDgsIDgsIDgpLAo+ICsJ RkJfRk9STUFUX0FCR1IoOCwgOCwgOCwgOCksCj4gKwlGQl9GT1JNQVRfUkdCQSg4LCA4LCA4LCA4 KSwKPiArCUZCX0ZPUk1BVF9CR1JBKDgsIDgsIDgsIDgpLAo+ICsKPiArCUZCX0ZPUk1BVF9YUkdC KDIsIDEwLCAxMCwgMTApLAo+ICsJRkJfRk9STUFUX1hCR1IoMiwgMTAsIDEwLCAxMCksCj4gKwlG Ql9GT1JNQVRfUkdCWCgxMCwgMTAsIDEwLCAyKSwKPiArCUZCX0ZPUk1BVF9CR1JYKDEwLCAxMCwg MTAsIDIpLAo+ICsKPiArCUZCX0ZPUk1BVF9BUkdCKDIsIDEwLCAxMCwgMTApLAo+ICsJRkJfRk9S TUFUX0FCR1IoMiwgMTAsIDEwLCAxMCksCj4gKwlGQl9GT1JNQVRfUkdCQSgxMCwgMTAsIDEwLCAy KSwKPiArCUZCX0ZPUk1BVF9CR1JBKDEwLCAxMCwgMTAsIDIpLAo+ICt9Owo+ICsKPiArc3RhdGlj IGJvb2wgZmJfZm9ybWF0X21hdGNoKGNvbnN0IHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFy LAo+ICsJCQkgICAgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZm9ybWF0ICpmYl9mb3JtYXQp Cj4gK3sKPiArCXJldHVybiAhbWVtY21wKCZ2YXItPnJlZCwgJmZiX2Zvcm1hdC0+cmVkLAo+ICsJ CSAgICAgICBzaXplb2YodmFyLT5yZWQpKSAmJgo+ICsJCSFtZW1jbXAoJnZhci0+Z3JlZW4sICZm Yl9mb3JtYXQtPmdyZWVuLAo+ICsJCQlzaXplb2YodmFyLT5ncmVlbikpICYmCj4gKwkJIW1lbWNt cCgmdmFyLT5ibHVlLCAmZmJfZm9ybWF0LT5ibHVlLAo+ICsJCQlzaXplb2YodmFyLT5ibHVlKSkg JiYKPiArCQkhbWVtY21wKCZ2YXItPnRyYW5zcCwgJmZiX2Zvcm1hdC0+dHJhbnNwLAo+ICsJCQlz aXplb2YodmFyLT50cmFuc3ApKTsKClRoaXMgcmVsaWVzIG9uIHRoZSBwYWRkaW5nIGJlaW5nIGlu aXRpYWxpc2VkIHRvIDAgZXZlcnl3aGVyZSwgd2hpY2ggSSdtCm5vdCBzdXJlIGlzIHRydWUgZXZl biB3aXRoIHRoZSBzdGF0aWMgYXJyYXkgaGVyZSwgYnV0IGZlZWxzIHJhdGhlcgpmcmFnaWxlIHJl Z2FyZGxlc3MuLi4KCj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBl cl9mb3JtYXQgKmZiX2Zvcm1hdF9sb29rdXAodTMyIGZvcm1hdCkKPiArewo+ICsJaW50IGk7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmJfZm9ybWF0cyk7IGkrKykgewo+ICsJ CWlmIChmYl9mb3JtYXRzW2ldLmZvcm1hdCA9PSBmb3JtYXQpCj4gKwkJCXJldHVybiAmZmJfZm9y bWF0c1tpXTsKPiArCX0KPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAgLyoqCj4gICAq IGRybV9mYl9oZWxwZXJfY2hlY2tfdmFyIC0gaW1wbGVtZW50YXRpb24gZm9yICZmYl9vcHMuZmJf Y2hlY2tfdmFyCj4gICAqIEB2YXI6IHNjcmVlbmluZm8gdG8gY2hlY2sKPiBAQCAtMTU2OSw5ICsx NzExLDkgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2lvY3RsKTsKPiAgaW50IGRybV9m Yl9oZWxwZXJfY2hlY2tfdmFyKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAo+ICAJCQkg ICAgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIHsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZmJfaGVs cGVyX2Zvcm1hdCAqZmJfZm9ybWF0Owo+ICAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciA9IGluZm8tPnBhcjsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gZmJfaGVscGVy LT5mYjsKPiAtCWludCBkZXB0aDsKPiAgCj4gIAlpZiAodmFyLT5waXhjbG9jayAhPSAwIHx8IGlu X2RiZ19tYXN0ZXIoKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTU5MSw3MiArMTczMywy MCBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9jaGVja192YXIoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZv ICp2YXIsCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0Jc3dpdGNoICh2YXItPmJp dHNfcGVyX3BpeGVsKSB7Cj4gLQljYXNlIDE2Ogo+IC0JCWRlcHRoID0gKHZhci0+Z3JlZW4ubGVu Z3RoID09IDYpID8gMTYgOiAxNTsKPiAtCQlicmVhazsKPiAtCWNhc2UgMzI6Cj4gLQkJZGVwdGgg PSAodmFyLT50cmFuc3AubGVuZ3RoID4gMCkgPyAzMiA6IDI0Owo+IC0JCWJyZWFrOwo+IC0JZGVm YXVsdDoKPiAtCQlkZXB0aCA9IHZhci0+Yml0c19wZXJfcGl4ZWw7Cj4gLQkJYnJlYWs7Cj4gLQl9 Cj4gKwkvKgo+ICsJICogRklYTUUganVzdCBzdG9yZSB0aGUgZmJfYml0ZmllbGRzIGZvciB0aGUK PiArCSAqIGNob3NlbiBmYiBmb3JtYXQgc29tZXdoZXJlIHRvIGF2b2lkIHRoZSBsb29rdXA/Cj4g KwkgKiBPciBzb3J0IHRoZSB0YWJsZSBhbmQgdXNlIGJzZWFyY2goKT8KPiArCSAqLwo+ICsJZmJf Zm9ybWF0ID0gZmJfZm9ybWF0X2xvb2t1cChmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+ICsJaWYgKFdB Uk5fT04oIWZiX2Zvcm1hdCkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0Jc3dpdGNoIChk ZXB0aCkgewo+IC0JY2FzZSA4Ogo+IC0JCXZhci0+cmVkLm9mZnNldCA9IDA7Cj4gLQkJdmFyLT5n cmVlbi5vZmZzZXQgPSAwOwo+IC0JCXZhci0+Ymx1ZS5vZmZzZXQgPSAwOwo+IC0JCXZhci0+cmVk Lmxlbmd0aCA9IDg7Cj4gLQkJdmFyLT5ncmVlbi5sZW5ndGggPSA4Owo+IC0JCXZhci0+Ymx1ZS5s ZW5ndGggPSA4Owo+IC0JCXZhci0+dHJhbnNwLmxlbmd0aCA9IDA7Cj4gLQkJdmFyLT50cmFuc3Au b2Zmc2V0ID0gMDsKPiAtCQlicmVhazsKPiAtCWNhc2UgMTU6Cj4gLQkJdmFyLT5yZWQub2Zmc2V0 ID0gMTA7Cj4gLQkJdmFyLT5ncmVlbi5vZmZzZXQgPSA1Owo+IC0JCXZhci0+Ymx1ZS5vZmZzZXQg PSAwOwo+IC0JCXZhci0+cmVkLmxlbmd0aCA9IDU7Cj4gLQkJdmFyLT5ncmVlbi5sZW5ndGggPSA1 Owo+IC0JCXZhci0+Ymx1ZS5sZW5ndGggPSA1Owo+IC0JCXZhci0+dHJhbnNwLmxlbmd0aCA9IDE7 Cj4gLQkJdmFyLT50cmFuc3Aub2Zmc2V0ID0gMTU7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIDE2Ogo+ IC0JCXZhci0+cmVkLm9mZnNldCA9IDExOwo+IC0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gNTsKPiAt CQl2YXItPmJsdWUub2Zmc2V0ID0gMDsKPiAtCQl2YXItPnJlZC5sZW5ndGggPSA1Owo+IC0JCXZh ci0+Z3JlZW4ubGVuZ3RoID0gNjsKPiAtCQl2YXItPmJsdWUubGVuZ3RoID0gNTsKPiAtCQl2YXIt PnRyYW5zcC5sZW5ndGggPSAwOwo+IC0JCXZhci0+dHJhbnNwLm9mZnNldCA9IDA7Cj4gLQkJYnJl YWs7Cj4gLQljYXNlIDI0Ogo+IC0JCXZhci0+cmVkLm9mZnNldCA9IDE2Owo+IC0JCXZhci0+Z3Jl ZW4ub2Zmc2V0ID0gODsKPiAtCQl2YXItPmJsdWUub2Zmc2V0ID0gMDsKPiAtCQl2YXItPnJlZC5s ZW5ndGggPSA4Owo+IC0JCXZhci0+Z3JlZW4ubGVuZ3RoID0gODsKPiAtCQl2YXItPmJsdWUubGVu Z3RoID0gODsKPiAtCQl2YXItPnRyYW5zcC5sZW5ndGggPSAwOwo+IC0JCXZhci0+dHJhbnNwLm9m ZnNldCA9IDA7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIDMyOgo+IC0JCXZhci0+cmVkLm9mZnNldCA9 IDE2Owo+IC0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gODsKPiAtCQl2YXItPmJsdWUub2Zmc2V0ID0g MDsKPiAtCQl2YXItPnJlZC5sZW5ndGggPSA4Owo+IC0JCXZhci0+Z3JlZW4ubGVuZ3RoID0gODsK PiAtCQl2YXItPmJsdWUubGVuZ3RoID0gODsKPiAtCQl2YXItPnRyYW5zcC5sZW5ndGggPSA4Owo+ IC0JCXZhci0+dHJhbnNwLm9mZnNldCA9IDI0Owo+IC0JCWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAr CWlmICghZmJfZm9ybWF0X21hdGNoKHZhciwgZmJfZm9ybWF0KSkgewo+ICsJCURSTV9ERUJVR19L TVMoInZhciBzY3JlZW5pbmZvIGRvZXMgbm90IG1hdGNoIHBpeGVsIGZvcm1hdFxuIik7Cj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgRVhQT1JUX1NZ TUJPTChkcm1fZmJfaGVscGVyX2NoZWNrX3Zhcik7Cj4gQEAgLTE5NDgsNiArMjAzOCw3IEBAIEVY UE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9maWxsX2ZpeCk7Cj4gIHZvaWQgZHJtX2ZiX2hlbHBl cl9maWxsX3ZhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKPiAgCQkJICAgIHVpbnQzMl90IGZiX3dpZHRoLCB1aW50MzJfdCBmYl9oZWlnaHQp Cj4gIHsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Zvcm1hdCAqZmJfZm9ybWF0Owo+ ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBmYl9oZWxwZXItPmZiOwo+ICAKPiAgCWlu Zm8tPnBzZXVkb19wYWxldHRlID0gZmJfaGVscGVyLT5wc2V1ZG9fcGFsZXR0ZTsKPiBAQCAtMTk1 OSw1OSArMjA1MCwxNCBAQCB2b2lkIGRybV9mYl9oZWxwZXJfZmlsbF92YXIoc3RydWN0IGZiX2lu Zm8gKmluZm8sIHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZQo+ICAJaW5mby0+dmFyLnlv ZmZzZXQgPSAwOwo+ICAJaW5mby0+dmFyLmFjdGl2YXRlID0gRkJfQUNUSVZBVEVfTk9XOwo+ICAK PiAtCXN3aXRjaCAoZmItPmZvcm1hdC0+ZGVwdGgpIHsKPiAtCWNhc2UgODoKPiAtCQlpbmZvLT52 YXIucmVkLm9mZnNldCA9IDA7Cj4gLQkJaW5mby0+dmFyLmdyZWVuLm9mZnNldCA9IDA7Cj4gLQkJ aW5mby0+dmFyLmJsdWUub2Zmc2V0ID0gMDsKPiAtCQlpbmZvLT52YXIucmVkLmxlbmd0aCA9IDg7 IC8qIDhiaXQgREFDICovCj4gLQkJaW5mby0+dmFyLmdyZWVuLmxlbmd0aCA9IDg7Cj4gLQkJaW5m by0+dmFyLmJsdWUubGVuZ3RoID0gODsKPiAtCQlpbmZvLT52YXIudHJhbnNwLm9mZnNldCA9IDA7 Cj4gLQkJaW5mby0+dmFyLnRyYW5zcC5sZW5ndGggPSAwOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSAx NToKPiAtCQlpbmZvLT52YXIucmVkLm9mZnNldCA9IDEwOwo+IC0JCWluZm8tPnZhci5ncmVlbi5v ZmZzZXQgPSA1Owo+IC0JCWluZm8tPnZhci5ibHVlLm9mZnNldCA9IDA7Cj4gLQkJaW5mby0+dmFy LnJlZC5sZW5ndGggPSA1Owo+IC0JCWluZm8tPnZhci5ncmVlbi5sZW5ndGggPSA1Owo+IC0JCWlu Zm8tPnZhci5ibHVlLmxlbmd0aCA9IDU7Cj4gLQkJaW5mby0+dmFyLnRyYW5zcC5vZmZzZXQgPSAx NTsKPiAtCQlpbmZvLT52YXIudHJhbnNwLmxlbmd0aCA9IDE7Cj4gLQkJYnJlYWs7Cj4gLQljYXNl IDE2Ogo+IC0JCWluZm8tPnZhci5yZWQub2Zmc2V0ID0gMTE7Cj4gLQkJaW5mby0+dmFyLmdyZWVu Lm9mZnNldCA9IDU7Cj4gLQkJaW5mby0+dmFyLmJsdWUub2Zmc2V0ID0gMDsKPiAtCQlpbmZvLT52 YXIucmVkLmxlbmd0aCA9IDU7Cj4gLQkJaW5mby0+dmFyLmdyZWVuLmxlbmd0aCA9IDY7Cj4gLQkJ aW5mby0+dmFyLmJsdWUubGVuZ3RoID0gNTsKPiAtCQlpbmZvLT52YXIudHJhbnNwLm9mZnNldCA9 IDA7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIDI0Ogo+IC0JCWluZm8tPnZhci5yZWQub2Zmc2V0ID0g MTY7Cj4gLQkJaW5mby0+dmFyLmdyZWVuLm9mZnNldCA9IDg7Cj4gLQkJaW5mby0+dmFyLmJsdWUu b2Zmc2V0ID0gMDsKPiAtCQlpbmZvLT52YXIucmVkLmxlbmd0aCA9IDg7Cj4gLQkJaW5mby0+dmFy LmdyZWVuLmxlbmd0aCA9IDg7Cj4gLQkJaW5mby0+dmFyLmJsdWUubGVuZ3RoID0gODsKPiAtCQlp bmZvLT52YXIudHJhbnNwLm9mZnNldCA9IDA7Cj4gLQkJaW5mby0+dmFyLnRyYW5zcC5sZW5ndGgg PSAwOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSAzMjoKPiAtCQlpbmZvLT52YXIucmVkLm9mZnNldCA9 IDE2Owo+IC0JCWluZm8tPnZhci5ncmVlbi5vZmZzZXQgPSA4Owo+IC0JCWluZm8tPnZhci5ibHVl Lm9mZnNldCA9IDA7Cj4gLQkJaW5mby0+dmFyLnJlZC5sZW5ndGggPSA4Owo+IC0JCWluZm8tPnZh ci5ncmVlbi5sZW5ndGggPSA4Owo+IC0JCWluZm8tPnZhci5ibHVlLmxlbmd0aCA9IDg7Cj4gLQkJ aW5mby0+dmFyLnRyYW5zcC5vZmZzZXQgPSAyNDsKPiAtCQlpbmZvLT52YXIudHJhbnNwLmxlbmd0 aCA9IDg7Cj4gLQkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+IC0JCWJyZWFrOwo+IC0JfQo+ICsJZmJf Zm9ybWF0ID0gZmJfZm9ybWF0X2xvb2t1cChmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+ICsJaWYgKFdB Uk5fT04oIWZiX2Zvcm1hdCkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWluZm8tPnZhci5yZWQgPSBm Yl9mb3JtYXQtPnJlZDsKPiArCWluZm8tPnZhci5ncmVlbiA9IGZiX2Zvcm1hdC0+Z3JlZW47Cj4g KwlpbmZvLT52YXIuYmx1ZSA9IGZiX2Zvcm1hdC0+Ymx1ZTsKPiArCWluZm8tPnZhci50cmFuc3Ag PSBmYl9mb3JtYXQtPnRyYW5zcDsKPiAgCj4gIAlpbmZvLT52YXIueHJlcyA9IGZiX3dpZHRoOwo+ ICAJaW5mby0+dmFyLnlyZXMgPSBmYl9oZWlnaHQ7Cj4gLS0gCj4gMi4xMy42Cj4gCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFp bGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=