From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC PATCH 18/20] lib: image-formats: Add v4l2 formats support Date: Wed, 20 Mar 2019 18:41:33 +0200 Message-ID: <20190320164133.GT3888@intel.com> References: <20190320142739.GK3888@intel.com> <20190320160939.GR3888@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 778B16E02B for ; Wed, 20 Mar 2019 16:48:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Nicolas Dufresne Cc: Thomas Petazzoni , Maxime Ripard , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Paul Kocialkowski , David Airlie , Hans Verkuil , Sean Paul , Laurent Pinchart , Sakari Ailus , Daniel Vetter , Daniel Stone , Mauro Carvalho Chehab , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMjAsIDIwMTkgYXQgMTI6MzA6MjVQTSAtMDQwMCwgTmljb2xhcyBEdWZyZXNu ZSB3cm90ZToKPiBMZSBtZXJjcmVkaSAyMCBtYXJzIDIwMTkgw6AgMTg6MDkgKzAyMDAsIFZpbGxl IFN5cmrDpGzDpCBhIMOpY3JpdCA6Cj4gPiBPbiBXZWQsIE1hciAyMCwgMjAxOSBhdCAxMTo1MTo1 OEFNIC0wNDAwLCBOaWNvbGFzIER1ZnJlc25lIHdyb3RlOgo+ID4gPiBMZSBtZXJjcmVkaSAyMCBt YXJzIDIwMTkgw6AgMTY6MjcgKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCBhIMOpY3JpdCA6Cj4gPiA+ ID4gT24gVHVlLCBNYXIgMTksIDIwMTkgYXQgMDc6Mjk6MThQTSAtMDQwMCwgTmljb2xhcyBEdWZy ZXNuZSB3cm90ZToKPiA+ID4gPiA+IExlIG1hcmRpIDE5IG1hcnMgMjAxOSDDoCAyMjo1NyArMDEw MCwgTWF4aW1lIFJpcGFyZCBhIMOpY3JpdCA6Cj4gPiA+ID4gPiA+IFY0TDIgdXNlcyBkaWZmZXJl bnQgZm91cmNjJ3MgdGhhbiBEUk0sIGFuZCBoYXMgYSBkaWZmZXJlbnQgc2V0IG9mIGZvcm1hdHMu Cj4gPiA+ID4gPiA+IEZvciBub3csIGxldCdzIGFkZCB0aGUgdjRsMiBmb3VyY2MncyBmb3IgdGhl IGFscmVhZHkgZXhpc3RpbmcgZm9ybWF0cy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IE1heGltZSBSaXBhcmQgPG1heGltZS5yaXBhcmRAYm9vdGxpbi5jb20+Cj4gPiA+ ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiAgaW5jbHVkZS9saW51eC9pbWFnZS1mb3JtYXRzLmggfCAg OSArKysrKy0KPiA+ID4gPiA+ID4gIGxpYi9pbWFnZS1mb3JtYXRzLmMgICAgICAgICAgIHwgNjcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gPiA+ID4gPiAgMiBmaWxl cyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbWFnZS1mb3JtYXRzLmggYi9pbmNsdWRlL2xpbnV4L2lt YWdlLWZvcm1hdHMuaAo+ID4gPiA+ID4gPiBpbmRleCA1M2ZkNzNhNzFiM2QuLmZiYzNhNDUwMWVi ZCAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9pbWFnZS1mb3JtYXRzLmgK PiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9pbWFnZS1mb3JtYXRzLmgKPiA+ID4gPiA+ ID4gQEAgLTI2LDYgKzI2LDEzIEBAIHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyB7Cj4gPiA+ID4g PiA+ICAJfTsKPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiAgCS8qKgo+ID4gPiA+ID4gPiArCSAq IEB2NGwyX2ZtdDoKPiA+ID4gPiA+ID4gKwkgKgo+ID4gPiA+ID4gPiArCSAqIFY0TDIgNENDIGZv cm1hdCBpZGVudGlmaWVyIChWNEwyX1BJWF9GTVRfKikKPiA+ID4gPiA+ID4gKwkgKi8KPiA+ID4g PiA+ID4gKwl1MzIgdjRsMl9mbXQ7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkvKioKPiA+ ID4gPiA+ID4gIAkgKiBAZGVwdGg6Cj4gPiA+ID4gPiA+ICAJICoKPiA+ID4gPiA+ID4gIAkgKiBD b2xvciBkZXB0aCAobnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIGV4Y2x1ZGluZyBwYWRkaW5nIGJp dHMpLAo+ID4gPiA+ID4gPiBAQCAtMjIyLDYgKzIyOSw4IEBAIGltYWdlX2Zvcm1hdF9pbmZvX2lz X3l1dl9zYW1wbGluZ180NDQoY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbmZvKQo+ ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ICBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8g Kl9faW1hZ2VfZm9ybWF0X2RybV9sb29rdXAodTMyIGRybSk7Cj4gPiA+ID4gPiA+ICBjb25zdCBz dHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKHUzMiBkcm0p Owo+ID4gPiA+ID4gPiArY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICpfX2ltYWdlX2Zv cm1hdF92NGwyX2xvb2t1cCh1MzIgdjRsMik7Cj4gPiA+ID4gPiA+ICtjb25zdCBzdHJ1Y3QgaW1h Z2VfZm9ybWF0X2luZm8gKmltYWdlX2Zvcm1hdF92NGwyX2xvb2t1cCh1MzIgdjRsMik7Cj4gPiA+ ID4gPiA+ICB1bnNpZ25lZCBpbnQgaW1hZ2VfZm9ybWF0X3BsYW5lX2NwcChjb25zdCBzdHJ1Y3Qg aW1hZ2VfZm9ybWF0X2luZm8gKmZvcm1hdCwKPiA+ID4gPiA+ID4gIAkJCQkgICAgaW50IHBsYW5l KTsKPiA+ID4gPiA+ID4gIHVuc2lnbmVkIGludCBpbWFnZV9mb3JtYXRfcGxhbmVfd2lkdGgoaW50 IHdpZHRoLAo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2ltYWdlLWZvcm1hdHMuYyBiL2xp Yi9pbWFnZS1mb3JtYXRzLmMKPiA+ID4gPiA+ID4gaW5kZXggOWI5YTczMjIwYzVkLi4zOWYxZDM4 YWU4NjEgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2xpYi9pbWFnZS1mb3JtYXRzLmMKPiA+ID4g PiA+ID4gKysrIGIvbGliL2ltYWdlLWZvcm1hdHMuYwo+ID4gPiA+ID4gPiBAQCAtOCw2ICs4LDcg QEAKPiA+ID4gPiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9y bWF0c1tdID0gewo+ID4gPiA+ID4gPiAgCXsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1f Rk9STUFUX0M4LAo+ID4gPiA+ID4gPiArCQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRfR1JFWSwK PiA+ID4gPiA+ID4gIAkJLmRlcHRoID0gOCwKPiA+ID4gPiA+ID4gIAkJLm51bV9wbGFuZXMgPSAx LAo+ID4gPiA+ID4gPiAgCQkuY3BwID0geyAxLCAwLCAwIH0sCj4gPiA+ID4gPiA+IEBAIC0xNSw2 ICsxNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1td ID0gewo+ID4gPiA+ID4gPiAgCQkudnN1YiA9IDEsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ ID4gPiAgCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCMzMyLAo+ID4gPiA+ID4gPiArCQkudjRs Ml9mbXQgPSBWNEwyX1BJWF9GTVRfUkdCMzMyLAo+ID4gPiA+ID4gPiAgCQkuZGVwdGggPSA4LAo+ ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDEsCj4gPiA+ID4gPiA+ICAJCS5jcHAgPSB7IDEs IDAsIDAgfSwKPiA+ID4gPiA+ID4gQEAgLTI5LDYgKzMxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBpbWFnZV9mb3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7Cj4gPiA+ID4gPiA+ICAJCS52c3ViID0g MSwKPiA+ID4gPiA+ID4gIAl9LCB7Cj4gPiA+ID4gPiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1B VF9YUkdCNDQ0NCwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhfRk1UX1hSR0I0 NDQsCj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDAsCj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVz ID0gMSwKPiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gPiA+ID4gPiBAQCAt NTcsNiArNjAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1h dHNbXSA9IHsKPiA+ID4gPiA+ID4gIAkJLnZzdWIgPSAxLAo+ID4gPiA+ID4gPiAgCX0sIHsKPiA+ ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0FSR0I0NDQ0LAo+ID4gPiA+ID4gPiAr CQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRfQVJHQjQ0NCwKPiA+ID4gPiA+ID4gIAkJLmRlcHRo ID0gMCwKPiA+ID4gPiA+ID4gIAkJLm51bV9wbGFuZXMgPSAxLAo+ID4gPiA+ID4gPiAgCQkuY3Bw ID0geyAyLCAwLCAwIH0sCj4gPiA+ID4gPiA+IEBAIC04OSw2ICs5Myw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1tdID0gewo+ID4gPiA+ID4gPiAgCQku aGFzX2FscGhhID0gdHJ1ZSwKPiA+ID4gPiA+ID4gIAl9LCB7Cj4gPiA+ID4gPiA+ICAJCS5kcm1f Zm10ID0gRFJNX0ZPUk1BVF9YUkdCMTU1NSwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRM Ml9QSVhfRk1UX1hSR0I1NTUsCj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDE1LAo+ID4gPiA+ID4g PiAgCQkubnVtX3BsYW5lcyA9IDEsCj4gPiA+ID4gPiA+ICAJCS5jcHAgPSB7IDIsIDAsIDAgfSwK PiA+ID4gPiA+ID4gQEAgLTExNyw2ICsxMjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdl X2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4gIAkJLnZzdWIgPSAxLAo+ID4g PiA+ID4gPiAgCX0sIHsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0FSR0Ix NTU1LAo+ID4gPiA+ID4gPiArCQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRfQVJHQjU1NSwKPiA+ ID4gPiA+ID4gIAkJLmRlcHRoID0gMTUsCj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVzID0gMSwK PiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gPiA+ID4gPiBAQCAtMTQ5LDYg KzE1NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1td ID0gewo+ID4gPiA+ID4gPiAgCQkuaGFzX2FscGhhID0gdHJ1ZSwKPiA+ID4gPiA+ID4gIAl9LCB7 Cj4gPiA+ID4gPiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9SR0I1NjUsCj4gPiA+ID4gPiA+ ICsJCS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9SR0I1NjUsCj4gPiA+ID4gPiA+ICAJCS5kZXB0 aCA9IDE2LAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDEsCj4gPiA+ID4gPiA+ICAJCS5j cHAgPSB7IDIsIDAsIDAgfSwKPiA+ID4gPiA+ID4gQEAgLTE2Myw2ICsxNzAsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4g IAkJLnZzdWIgPSAxLAo+ID4gPiA+ID4gPiAgCX0sIHsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQg PSBEUk1fRk9STUFUX1JHQjg4OCwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhf Rk1UX1JHQjI0LAo+ID4gPiA+ID4gPiAgCQkuZGVwdGggPSAyNCwKPiA+ID4gPiA+ID4gIAkJLm51 bV9wbGFuZXMgPSAxLAo+ID4gPiA+ID4gPiAgCQkuY3BwID0geyAzLCAwLCAwIH0sCj4gPiA+ID4g PiA+IEBAIC0xNzAsNiArMTc4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRf aW5mbyBmb3JtYXRzW10gPSB7Cj4gPiA+ID4gPiA+ICAJCS52c3ViID0gMSwKPiA+ID4gPiA+ID4g IAl9LCB7Cj4gPiA+ID4gPiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1I4ODgsCj4gPiA+ ID4gPiA+ICsJCS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9CR1IyNCwKPiA+ID4gPiA+ID4gIAkJ LmRlcHRoID0gMjQsCj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVzID0gMSwKPiA+ID4gPiA+ID4g IAkJLmNwcCA9IHsgMywgMCwgMCB9LAo+ID4gPiA+ID4gPiBAQCAtMTc3LDYgKzE4Niw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1tdID0gewo+ID4gPiA+ ID4gPiAgCQkudnN1YiA9IDEsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQkuZHJt X2ZtdCA9IERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gPiA+ID4gPiA+ICsJCS52NGwyX2ZtdCA9IFY0 TDJfUElYX0ZNVF9YUkdCMzIsCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEFsbCBSR0IgbWFwcGluZyBz aG91bGQgYmUgc3Vycm91bmRlZCBieSBpZmRlZiwgYmVjYXVzZSBtYW55IChub3QgYWxsKQo+ID4g PiA+ID4gRFJNIGZvcm1hdHMgcmVwcmVzZW50IHRoZSBvcmRlciBvZiBjb21wb25lbnQgd2hlbiBw bGFjZWQgaW4gYSBDUFUKPiA+ID4gPiA+IHJlZ2lzdGVyLCB1bmxpa2UgVjRMMiB3aGljaCB1c2Vz IG1lbW9yeSBvcmRlci4gSSd2ZSBwaWNrIHRoaXMgb25lCj4gPiA+ID4gCj4gPiA+ID4gRFJNIGZv cm1hdHMgYXJlIGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBsaXR0bGUgZW5kaWFuLgo+ID4gPiAKPiA+ ID4gWWVzLCB0aGF0IG1lYW5zIHRoZSBzYW1lIHRoaW5nLiBUaGUgbWFwcGluZyBoYXMgbm90aGlu ZyB0byBkbyB3aXRoIHRoZQo+ID4gPiBidWZmZXIgYnl0ZXMgb3JkZXIsIHVubGlrZSBWNEwyIChh bmQgbW9zdCBzdHJlYW1pbmcgc3RhY2spIGRvLgo+ID4gCj4gPiBJdCBoYXMgZXZlcnl0aGluZyB0 byBkbyB3aXRoIGJ5dGUgb3JkZXIuIExpdHRsZSBlbmRpYW4gbWVhbnMgdGhlIGxlYXN0Cj4gPiBz aWduaWZpY2FudCBieXRlIGlzIHN0b3JlZCBpbiB0aGUgZmlyc3QgYnl0ZSBpbiBtZW1vcnkuCj4g PiAKPiA+IEJhc2VkIG9uIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvdjQuMTUvbWVk aWEvdWFwaS92NGwvcGl4Zm10LXBhY2tlZC1yZ2IuaHRtbAo+ID4gZHJtIFhSR0I4ODggaXMgYWN0 dWFsbHkgdjRsIFhCR1IzMiwgbm90IFhSR0IzMiBhcyBjbGFpbWVkIGJ5IHRoaXMgcGF0Y2guCj4g Cj4gVGhhdCdzIGJhc2ljYWxseSB3aGF0IEkgc2FpZCwgYXMgaXQncyBkZWZpbmUgZm9yIExpdHRs ZSBFbmRpYW4gcmF0aGVyCj4gdGhlbiBidWZmZXIgb3JkZXIsIHlvdSBoYXZlIHRvIG1ha2UgdGhl IG1hcHBpbmcgY29uZGl0aW9uYWwuIEl0Cj4gYmFzaWNhbGx5IG1lYW4gdGhhdCBpbiBtZW1vcnks IHRoZSBEUk0gZm9ybWF0IHBoeXNpY2FsbHkgZGlmZmVyCj4gZGVwZW5kaW5nIG9uIENQVSBlbmRp YW4uCgpOby4gSXQgaXMgYWx3YXlzIGxpdHRsZSBlbmRpYW4gbm8gbWF0dGVyIHdoYXQgdGhlIENQ VSBpcy4KCj4gTGFzdCB0aW1lIHdlIGhhdmUgcnVuIHRoaXMgb24gUFBDIC8gQmlnCj4gRW5kaWFu LCB0aGUgbWFwcGluZyB3YXMgWFJHQi9YUkdCLCB3ZSBjaGVja2VkIHRoYXQgdXAgbXVsdGlwbGUg dGltZQo+IHdpdGggdGhlIERSTSBtYWludGFpbmVycyBhbmQgd2FzIHRvbGQgdGhpcyBpcyBleGFj dGx5IHdoYXQgaXQncyBzdXBwb3NlCj4gdG8gZG8sIGhlbmNlIHRoaXMgZW5kaWFuIGRlcGVuZGFu dCBtYXBwaW5nIGFsbCBvdmVyIHRoZSBwbGFjZS4gSWYgeW91Cj4gbWFrZSB1cCB0aGF0IHRoaXMg aXNuJ3QgcmlnaHQsIHlvdSBhcmUgYnJlYWtpbmcgdXNlcnNwYWNlLCBhbmQgcGVvcGxlCj4gZG9u J3QgbGlrZSB0aGF0LgoKU29tZW9uZSByZWNlbnRseSBhZGRlZCB0aG9zZSBEUk1fRk9STUFUX0hP U1QgdmFyaWFudHMgdG8gYWxsb3cKdGhlIGxlZ2FjeSBhZGRmYjEgdG8gY3JlYXRlIHBpY2sgdGhl IGZvcm1hdCBiYXNlZCBvbiBob3N0CmVuZGlhbm5lc3MuIEkgdGhvdWdodCB0aGF0IHdhcyB0aGUg b25seSBjb25jbHVzaW9uIGZyb20gdGhlCmxpdHRsZSB2cy4gYmlnIGVuZGlhbiBkcm0gZm91cmNj IHdhcnMuCgo+IAo+IFNvIHRoZSBtYXBwaW5nIHNob3VsZCBiZToKPiBMaXR0bGU6IERSTSBYUkdC IC8gVjRMMiBYQkdSCj4gQmlnOiAgICBEUk0gWFJHQiAvIFY0TDIgWFJHQgo+IAo+ID4gCj4gPiA+ ID4gPiByYW5kb21seSwgYnV0IHRoaXMgb25lIG9uIG1vc3Qgc3lzdGVtLCBsaXR0bGUgZW5kaWFu LCB3aWxsIG1hdGNoCj4gPiA+ID4gPiBWNEwyX1BJWF9GTVRfWEJHUjMyLiBUaGlzIHR5cGUgb2Yg Y29tcGxleCBtYXBwaW5nIGNhbiBiZSBmb3VuZCBpbgo+ID4gPiA+ID4gbXVsdGlwbGUgcGxhY2Vz LCBub3RhYmx5IGluIEdTdHJlYW1lcjoKPiA+ID4gPiA+IAo+ID4gPiA+ID4gaHR0cHM6Ly9naXRs YWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYWQvYmxvYi9tYXN0ZXIv c3lzL2ttcy9nc3RrbXN1dGlscy5jI0w0NQo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICAJCS5kZXB0 aCA9IDI0LAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDEsCj4gPiA+ID4gPiA+ICAJCS5j cHAgPSB7IDQsIDAsIDAgfSwKPiA+ID4gPiA+ID4gQEAgLTI4MSw2ICsyOTEsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4g IAkJLmhhc19hbHBoYSA9IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQku ZHJtX2ZtdCA9IERSTV9GT1JNQVRfQVJHQjg4ODgsCj4gPiA+ID4gPiA+ICsJCS52NGwyX2ZtdCA9 IFY0TDJfUElYX0ZNVF9BUkdCMzIsCj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDMyLAo+ID4gPiA+ ID4gPiAgCQkubnVtX3BsYW5lcyA9IDEsCj4gPiA+ID4gPiA+ICAJCS5jcHAgPSB7IDQsIDAsIDAg fSwKPiA+ID4gPiA+ID4gQEAgLTM2MSw2ICszNzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlt YWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4gIAkJLmhhc19hbHBoYSA9 IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQkuZHJtX2ZtdCA9IERSTV9G T1JNQVRfWVVWNDEwLAo+ID4gPiA+ID4gPiArCQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRfWVVW NDEwLAo+ID4gPiA+ID4gPiAgCQkuZGVwdGggPSAwLAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5l cyA9IDMsCj4gPiA+ID4gPiA+ICAJCS5jcHAgPSB7IDEsIDEsIDEgfSwKPiA+ID4gPiA+ID4gQEAg LTM2OSw2ICszODEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZv cm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4gIAkJLmlzX3l1diA9IHRydWUsCj4gPiA+ID4gPiA+ICAJ fSwgewo+ID4gPiA+ID4gPiAgCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWVZVNDEwLAo+ID4gPiA+ ID4gPiArCQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRfWVZVNDEwLAo+ID4gPiA+ID4gPiAgCQku ZGVwdGggPSAwLAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDMsCj4gPiA+ID4gPiA+ICAJ CS5jcHAgPSB7IDEsIDEsIDEgfSwKPiA+ID4gPiA+ID4gQEAgLTM5Myw2ICs0MDYsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ ID4gIAkJLmlzX3l1diA9IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQku ZHJtX2ZtdCA9IERSTV9GT1JNQVRfWVVWNDIwLAo+ID4gPiA+ID4gPiArCQkudjRsMl9mbXQgPSBW NEwyX1BJWF9GTVRfWVVWNDIwTSwKPiA+ID4gPiA+ID4gIAkJLmRlcHRoID0gMCwKPiA+ID4gPiA+ ID4gIAkJLm51bV9wbGFuZXMgPSAzLAo+ID4gPiA+ID4gPiAgCQkuY3BwID0geyAxLCAxLCAxIH0s Cj4gPiA+ID4gPiA+IEBAIC00MDEsNiArNDE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbWFn ZV9mb3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7Cj4gPiA+ID4gPiA+ICAJCS5pc195dXYgPSB0cnVl LAo+ID4gPiA+ID4gPiAgCX0sIHsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1fRk9STUFU X1lWVTQyMCwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhfRk1UX1lWVTQyME0s Cj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDAsCj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVzID0g MywKPiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gPiA+ID4gPiBAQCAtNDA5 LDYgKzQyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0 c1tdID0gewo+ID4gPiA+ID4gPiAgCQkuaXNfeXV2ID0gdHJ1ZSwKPiA+ID4gPiA+ID4gIAl9LCB7 Cj4gPiA+ID4gPiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVVY0MjIsCj4gPiA+ID4gPiA+ ICsJCS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9ZVVY0MjJNLAo+ID4gPiA+ID4gPiAgCQkuZGVw dGggPSAwLAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDMsCj4gPiA+ID4gPiA+ICAJCS5j cHAgPSB7IDEsIDEsIDEgfSwKPiA+ID4gPiA+ID4gQEAgLTQxNyw2ICs0MzMsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4g IAkJLmlzX3l1diA9IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQkuZHJt X2ZtdCA9IERSTV9GT1JNQVRfWVZVNDIyLAo+ID4gPiA+ID4gPiArCQkudjRsMl9mbXQgPSBWNEwy X1BJWF9GTVRfWVZVNDIyTSwKPiA+ID4gPiA+ID4gIAkJLmRlcHRoID0gMCwKPiA+ID4gPiA+ID4g IAkJLm51bV9wbGFuZXMgPSAzLAo+ID4gPiA+ID4gPiAgCQkuY3BwID0geyAxLCAxLCAxIH0sCj4g PiA+ID4gPiA+IEBAIC00MjUsNiArNDQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbWFnZV9m b3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7Cj4gPiA+ID4gPiA+ICAJCS5pc195dXYgPSB0cnVlLAo+ ID4gPiA+ID4gPiAgCX0sIHsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1lV VjQ0NCwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhfRk1UX1lVVjQ0NE0sCj4g PiA+ID4gPiA+ICAJCS5kZXB0aCA9IDAsCj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVzID0gMywK PiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsgMSwgMSwgMSB9LAo+ID4gPiA+ID4gPiBAQCAtNDMzLDYg KzQ1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1td ID0gewo+ID4gPiA+ID4gPiAgCQkuaXNfeXV2ID0gdHJ1ZSwKPiA+ID4gPiA+ID4gIAl9LCB7Cj4g PiA+ID4gPiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVlU0NDQsCj4gPiA+ID4gPiA+ICsJ CS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9ZVlU0NDRNLAo+ID4gPiA+ID4gPiAgCQkuZGVwdGgg PSAwLAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDMsCj4gPiA+ID4gPiA+ICAJCS5jcHAg PSB7IDEsIDEsIDEgfSwKPiA+ID4gPiA+ID4gQEAgLTQ0MSw2ICs0NjAsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4gIAkJ LmlzX3l1diA9IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQkuZHJtX2Zt dCA9IERSTV9GT1JNQVRfTlYxMiwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhf Rk1UX05WMTIsCj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDAsCj4gPiA+ID4gPiA+ICAJCS5udW1f cGxhbmVzID0gMiwKPiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsgMSwgMiwgMCB9LAo+ID4gPiA+ID4g PiBAQCAtNDQ5LDYgKzQ2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2lu Zm8gZm9ybWF0c1tdID0gewo+ID4gPiA+ID4gPiAgCQkuaXNfeXV2ID0gdHJ1ZSwKPiA+ID4gPiA+ ID4gIAl9LCB7Cj4gPiA+ID4gPiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9OVjIxLAo+ID4g PiA+ID4gPiArCQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRfTlYyMSwKPiA+ID4gPiA+ID4gIAkJ LmRlcHRoID0gMCwKPiA+ID4gPiA+ID4gIAkJLm51bV9wbGFuZXMgPSAyLAo+ID4gPiA+ID4gPiAg CQkuY3BwID0geyAxLCAyLCAwIH0sCj4gPiA+ID4gPiA+IEBAIC00NTcsNiArNDc4LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7Cj4gPiA+ID4g PiA+ICAJCS5pc195dXYgPSB0cnVlLAo+ID4gPiA+ID4gPiAgCX0sIHsKPiA+ID4gPiA+ID4gIAkJ LmRybV9mbXQgPSBEUk1fRk9STUFUX05WMTYsCj4gPiA+ID4gPiA+ICsJCS52NGwyX2ZtdCA9IFY0 TDJfUElYX0ZNVF9OVjE2LAo+ID4gPiA+ID4gPiAgCQkuZGVwdGggPSAwLAo+ID4gPiA+ID4gPiAg CQkubnVtX3BsYW5lcyA9IDIsCj4gPiA+ID4gPiA+ICAJCS5jcHAgPSB7IDEsIDIsIDAgfSwKPiA+ ID4gPiA+ID4gQEAgLTQ2NSw2ICs0ODcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdlX2Zv cm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4gIAkJLmlzX3l1diA9IHRydWUsCj4g PiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfTlY2 MSwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhfRk1UX05WNjEsCj4gPiA+ID4g PiA+ICAJCS5kZXB0aCA9IDAsCj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVzID0gMiwKPiA+ID4g PiA+ID4gIAkJLmNwcCA9IHsgMSwgMiwgMCB9LAo+ID4gPiA+ID4gPiBAQCAtNDczLDYgKzQ5Niw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1tdID0gewo+ ID4gPiA+ID4gPiAgCQkuaXNfeXV2ID0gdHJ1ZSwKPiA+ID4gPiA+ID4gIAl9LCB7Cj4gPiA+ID4g PiA+ICAJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9OVjI0LAo+ID4gPiA+ID4gPiArCQkudjRsMl9m bXQgPSBWNEwyX1BJWF9GTVRfTlYyNCwKPiA+ID4gPiA+ID4gIAkJLmRlcHRoID0gMCwKPiA+ID4g PiA+ID4gIAkJLm51bV9wbGFuZXMgPSAyLAo+ID4gPiA+ID4gPiAgCQkuY3BwID0geyAxLCAyLCAw IH0sCj4gPiA+ID4gPiA+IEBAIC00ODEsNiArNTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp bWFnZV9mb3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7Cj4gPiA+ID4gPiA+ICAJCS5pc195dXYgPSB0 cnVlLAo+ID4gPiA+ID4gPiAgCX0sIHsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1fRk9S TUFUX05WNDIsCj4gPiA+ID4gPiA+ICsJCS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9OVjQyLAo+ ID4gPiA+ID4gPiAgCQkuZGVwdGggPSAwLAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDIs Cj4gPiA+ID4gPiA+ICAJCS5jcHAgPSB7IDEsIDIsIDAgfSwKPiA+ID4gPiA+ID4gQEAgLTQ4OSw2 ICs1MTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNb XSA9IHsKPiA+ID4gPiA+ID4gIAkJLmlzX3l1diA9IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ ID4gPiA+ID4gPiAgCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWVVZViwKPiA+ID4gPiA+ID4gKwkJ LnY0bDJfZm10ID0gVjRMMl9QSVhfRk1UX1lVWVYsCj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDAs Cj4gPiA+ID4gPiA+ICAJCS5udW1fcGxhbmVzID0gMSwKPiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsg MiwgMCwgMCB9LAo+ID4gPiA+ID4gPiBAQCAtNDk3LDYgKzUyMyw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gZm9ybWF0c1tdID0gewo+ID4gPiA+ID4gPiAgCQkuaXNf eXV2ID0gdHJ1ZSwKPiA+ID4gPiA+ID4gIAl9LCB7Cj4gPiA+ID4gPiA+ICAJCS5kcm1fZm10ID0g RFJNX0ZPUk1BVF9ZVllVLAo+ID4gPiA+ID4gPiArCQkudjRsMl9mbXQgPSBWNEwyX1BJWF9GTVRf WVZZVSwKPiA+ID4gPiA+ID4gIAkJLmRlcHRoID0gMCwKPiA+ID4gPiA+ID4gIAkJLm51bV9wbGFu ZXMgPSAxLAo+ID4gPiA+ID4gPiAgCQkuY3BwID0geyAyLCAwLCAwIH0sCj4gPiA+ID4gPiA+IEBA IC01MDUsNiArNTMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyBm b3JtYXRzW10gPSB7Cj4gPiA+ID4gPiA+ICAJCS5pc195dXYgPSB0cnVlLAo+ID4gPiA+ID4gPiAg CX0sIHsKPiA+ID4gPiA+ID4gIAkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1VZVlksCj4gPiA+ID4g PiA+ICsJCS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9VWVZZLAo+ID4gPiA+ID4gPiAgCQkuZGVw dGggPSAwLAo+ID4gPiA+ID4gPiAgCQkubnVtX3BsYW5lcyA9IDEsCj4gPiA+ID4gPiA+ICAJCS5j cHAgPSB7IDIsIDAsIDAgfSwKPiA+ID4gPiA+ID4gQEAgLTUxMyw2ICs1NDEsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ID4g IAkJLmlzX3l1diA9IHRydWUsCj4gPiA+ID4gPiA+ICAJfSwgewo+ID4gPiA+ID4gPiAgCQkuZHJt X2ZtdCA9IERSTV9GT1JNQVRfVllVWSwKPiA+ID4gPiA+ID4gKwkJLnY0bDJfZm10ID0gVjRMMl9Q SVhfRk1UX1ZZVVksCj4gPiA+ID4gPiA+ICAJCS5kZXB0aCA9IDAsCj4gPiA+ID4gPiA+ICAJCS5u dW1fcGxhbmVzID0gMSwKPiA+ID4gPiA+ID4gIAkJLmNwcCA9IHsgMiwgMCwgMCB9LAo+ID4gPiA+ ID4gPiBAQCAtNjMyLDYgKzY2MSw0NCBAQCBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8g KmltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKHUzMiBkcm0pCj4gPiA+ID4gPiA+ICBFWFBPUlRfU1lN Qk9MKGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKTsKPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiAg LyoqCj4gPiA+ID4gPiA+ICsgKiBfX2ltYWdlX2Zvcm1hdF92NGwyX2xvb2t1cCAtIHF1ZXJ5IGlu Zm9ybWF0aW9uIGZvciBhIGdpdmVuIGZvcm1hdAo+ID4gPiA+ID4gPiArICogQHY0bDI6IFY0TDIg Zm91cmNjIHBpeGVsIGZvcm1hdCAoVjRMMl9QSVhfRk1UXyopCj4gPiA+ID4gPiA+ICsgKgo+ID4g PiA+ID4gPiArICogVGhlIGNhbGxlciBzaG91bGQgb25seSBwYXNzIGEgc3VwcG9ydGVkIHBpeGVs IGZvcm1hdCB0byB0aGlzIGZ1bmN0aW9uLgo+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gKyAq IFJldHVybnM6Cj4gPiA+ID4gPiA+ICsgKiBUaGUgaW5zdGFuY2Ugb2Ygc3RydWN0IGltYWdlX2Zv cm1hdF9pbmZvIHRoYXQgZGVzY3JpYmVzIHRoZSBwaXhlbCBmb3JtYXQsIG9yCj4gPiA+ID4gPiA+ ICsgKiBOVUxMIGlmIHRoZSBmb3JtYXQgaXMgdW5zdXBwb3J0ZWQuCj4gPiA+ID4gPiA+ICsgKi8K PiA+ID4gPiA+ID4gK2NvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqX19pbWFnZV9mb3Jt YXRfdjRsMl9sb29rdXAodTMyIHY0bDIpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJcmV0 dXJuIF9faW1hZ2VfZm9ybWF0X2xvb2t1cCh2NGwyX2ZtdCwgdjRsMik7Cj4gPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiA+ICtFWFBPUlRfU1lNQk9MKF9faW1hZ2VfZm9ybWF0X3Y0bDJfbG9va3VwKTsK PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArLyoqCj4gPiA+ID4gPiA+ICsgKiBpbWFnZV9mb3Jt YXRfdjRsMl9sb29rdXAgLSBxdWVyeSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBmb3JtYXQKPiA+ ID4gPiA+ID4gKyAqIEB2NGwyOiBWNEwyIGZvdXJjYyBwaXhlbCBmb3JtYXQgKFY0TDJfUElYX0ZN VF8qKQo+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gKyAqIFRoZSBjYWxsZXIgc2hvdWxkIG9u bHkgcGFzcyBhIHN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgdG8gdGhpcyBmdW5jdGlvbi4KPiA+ID4g PiA+ID4gKyAqIFVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdHMgd2lsbCBnZW5lcmF0ZSBhIHdhcm5p bmcgaW4gdGhlIGtlcm5lbCBsb2cuCj4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiArICogUmV0 dXJuczoKPiA+ID4gPiA+ID4gKyAqIFRoZSBpbnN0YW5jZSBvZiBzdHJ1Y3QgaW1hZ2VfZm9ybWF0 X2luZm8gdGhhdCBkZXNjcmliZXMgdGhlIHBpeGVsIGZvcm1hdCwgb3IKPiA+ID4gPiA+ID4gKyAq IE5VTEwgaWYgdGhlIGZvcm1hdCBpcyB1bnN1cHBvcnRlZC4KPiA+ID4gPiA+ID4gKyAqLwo+ID4g PiA+ID4gPiArY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbWFnZV9mb3JtYXRfdjRs Ml9sb29rdXAodTMyIHY0bDIpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJY29uc3Qgc3Ry dWN0IGltYWdlX2Zvcm1hdF9pbmZvICpmb3JtYXQ7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g Kwlmb3JtYXQgPSBfX2ltYWdlX2Zvcm1hdF92NGwyX2xvb2t1cCh2NGwyKTsKPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiArCVdBUk5fT04oIWZvcm1hdCk7Cj4gPiA+ID4gPiA+ICsJcmV0dXJuIGZv cm1hdDsKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0woaW1hZ2VfZm9y bWF0X3Y0bDJfbG9va3VwKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArLyoqCj4gPiA+ID4g PiA+ICAgKiBpbWFnZV9mb3JtYXRfcGxhbmVfY3BwIC0gZGV0ZXJtaW5lIHRoZSBieXRlcyBwZXIg cGl4ZWwgdmFsdWUKPiA+ID4gPiA+ID4gICAqIEBmb3JtYXQ6IHBvaW50ZXIgdG8gdGhlIGltYWdl X2Zvcm1hdAo+ID4gPiA+ID4gPiAgICogQHBsYW5lOiBwbGFuZSBpbmRleAo+ID4gPiA+ID4gCj4g PiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ ID4gPiA+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gPiA+ID4gZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKPiA+IAo+ID4gCgoKCi0tIApWaWxsZSBTeXJqw6Rs w6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs