From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 694816E08D for ; Tue, 2 Oct 2018 13:38:57 +0000 (UTC) Date: Tue, 2 Oct 2018 16:38:53 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20181002133853.GS9144@intel.com> References: <20181001154812.26229-1-maarten.lankhorst@linux.intel.com> <20181001181901.GM9144@intel.com> <31300301-cdb1-3a99-c9f8-3142259d6b15@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <31300301-cdb1-3a99-c9f8-3142259d6b15@linux.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t] tests: Add kms plane alpha blending test, v2. 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: Maarten Lankhorst Cc: igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBPY3QgMDIsIDIwMTggYXQgMTA6NDk6NThBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMDEtMTAtMTggb20gMjA6MTkgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBNb24sIE9jdCAwMSwgMjAxOCBhdCAwNTo0ODoxMlBNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBBZGQgYSBmZXcgdGVzdHMgdG8gdGVzdCB2YXJpb3VzIGJsZW5k aW5nIG1vZGVzLgo+ID4+Cj4gPj4gU29tZSBvZiB0aGUgdGVzdHMgd2lsbCBza2lwIGlmIHBpeGVs IG1vZGUgYWxwaGEgY2Fubm90IGJlIGVuYWJsZWQKPiA+PiB3aXRoIHBsYW5lIGFscGhhIGF0IHRo ZSBzYW1lIHRpbWUuIFRoaXMgaXMgZm9yIG1hbGktZHAuIEkgZGlkbid0Cj4gPj4gdGVzdCBvbiB0 aGF0IHBsYXRmb3JtLCBidXQgdGVzdGVkIHdpdGggdGhlIHNhbWUgY2hlY2sgb24gaTkxNS4KPiA+ Pgo+ID4+IFRoZSB0ZXN0cyB3b24ndCBwYXNzIGk5MTUgb24gcHJlLWdlbjExIGh3LiBpOTE1IGhh cyBzbWFsbCByb3VuZGluZwo+ID4+IGVycm9ycyB3aXRoIDB4ZmYgYW5kIDB4MDAgYWxwaGEsIHdo aWNoIGdpdmVzIENSQyBtaXNtYXRjaGVzLgo+ID4+Cj4gPj4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ PiAtIFNlbmQgdGhlIGNvcnJlY3QgdmVyc2lvbiwgd2l0aCB0aGUgc2tpcHMgZm9yIG1hbGktZHAg aW4gcGxhY2UuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFh cnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICBsaWIvaWd0X2tt cy5jICAgICAgICAgICAgICAgICB8ICAgMiArCj4gPj4gIGxpYi9pZ3Rfa21zLmggICAgICAgICAg ICAgICAgIHwgICAyICsKPiA+PiAgdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgICAgfCAgIDEg Kwo+ID4+ICB0ZXN0cy9rbXNfcGxhbmVfYWxwaGFfYmxlbmQuYyB8IDU3MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPj4gIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgICAg IHwgICAxICsKPiA+PiAgNSBmaWxlcyBjaGFuZ2VkLCA1NzcgaW5zZXJ0aW9ucygrKQo+ID4+ICBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3BsYW5lX2FscGhhX2JsZW5kLmMKPiA+Pgo+ID4+ IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwo+ID4+IGluZGV4IDQ1 NjNiZmQ5ZDI1Yi4uZTg4ZTk2MTQ5OTU3IDEwMDY0NAo+ID4+IC0tLSBhL2xpYi9pZ3Rfa21zLmMK PiA+PiArKysgYi9saWIvaWd0X2ttcy5jCj4gPj4gQEAgLTE3NSw2ICsxNzUsOCBAQCBjb25zdCBj aGFyICogY29uc3QgaWd0X3BsYW5lX3Byb3BfbmFtZXNbSUdUX05VTV9QTEFORV9QUk9QU10gPSB7 Cj4gPj4gIAlbSUdUX1BMQU5FX0lOX0ZPUk1BVFNdID0gIklOX0ZPUk1BVFMiLAo+ID4+ICAJW0lH VF9QTEFORV9DT0xPUl9FTkNPRElOR10gPSAiQ09MT1JfRU5DT0RJTkciLAo+ID4+ICAJW0lHVF9Q TEFORV9DT0xPUl9SQU5HRV0gPSAiQ09MT1JfUkFOR0UiLAo+ID4+ICsJW0lHVF9QTEFORV9QSVhF TF9CTEVORF9NT0RFXSA9ICJwaXhlbCBibGVuZCBtb2RlIiwKPiA+PiArCVtJR1RfUExBTkVfQUxQ SEFdID0gImFscGhhIiwKPiA+PiAgfTsKPiA+PiAgCj4gPj4gIGNvbnN0IGNoYXIgKiBjb25zdCBp Z3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9QU10gPSB7Cj4gPj4gZGlmZiAtLWdp dCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0X2ttcy5oCj4gPj4gaW5kZXggMzg2MmVmYTI4YmUw Li4zYWYzMzZmNDMwMjAgMTAwNjQ0Cj4gPj4gLS0tIGEvbGliL2lndF9rbXMuaAo+ID4+ICsrKyBi L2xpYi9pZ3Rfa21zLmgKPiA+PiBAQCAtMjY2LDYgKzI2Niw4IEBAIGVudW0gaWd0X2F0b21pY19w bGFuZV9wcm9wZXJ0aWVzIHsKPiA+PiAgICAgICAgIElHVF9QTEFORV9JTl9GT1JNQVRTLAo+ID4+ ICAgICAgICAgSUdUX1BMQU5FX0NPTE9SX0VOQ09ESU5HLAo+ID4+ICAgICAgICAgSUdUX1BMQU5F X0NPTE9SX1JBTkdFLAo+ID4+ICsgICAgICAgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUsCj4g Pj4gKyAgICAgICBJR1RfUExBTkVfQUxQSEEsCj4gPj4gICAgICAgICBJR1RfTlVNX1BMQU5FX1BS T1BTCj4gPj4gIH07Cj4gPj4gIAo+ID4+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4+IGluZGV4IDEwOWM1Mzk3ZGU4NS4uZTZm N2EzNjRiNGIzIDEwMDY0NAo+ID4+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+PiAr KysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPj4gQEAgLTE5NCw2ICsxOTQsNyBAQCBURVNU U19wcm9ncyA9IFwKPiA+PiAgCWttc19waXBlX2JfY19pdmIgXAo+ID4+ICAJa21zX3BpcGVfY3Jj X2Jhc2ljIFwKPiA+PiAgCWttc19wbGFuZSBcCj4gPj4gKwlrbXNfcGxhbmVfYWxwaGFfYmxlbmQg XAo+ID4+ICAJa21zX3BsYW5lX2xvd3JlcyBcCj4gPj4gIAlrbXNfcGxhbmVfbXVsdGlwbGUgXAo+ ID4+ICAJa21zX3BsYW5lX3NjYWxpbmcgXAo+ID4+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcGxh bmVfYWxwaGFfYmxlbmQuYyBiL3Rlc3RzL2ttc19wbGFuZV9hbHBoYV9ibGVuZC5jCj4gPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjgxYzhjYjkxNmE2Mwo+ ID4+IC0tLSAvZGV2L251bGwKPiA+PiArKysgYi90ZXN0cy9rbXNfcGxhbmVfYWxwaGFfYmxlbmQu Ywo+ID4+IEBAIC0wLDAgKzEsNTcxIEBACj4gPj4gKy8qCj4gPj4gKyAqIENvcHlyaWdodCDCqSAy MDE4IEludGVsIENvcnBvcmF0aW9uCj4gPj4gKyAqCj4gPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4g Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+PiAr ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4+ICsgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgo+ID4+ICsgKgo+ID4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKPiA+PiArICogU29mdHdhcmUuCj4gPj4gKyAqCj4gPj4gKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCj4gPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK PiA+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiA+PiAr ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ID4+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPj4gKyAq Cj4gPj4gKyAqIEF1dGhvcnM6Cj4gPj4gKyAqICAgTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+PiArICovCj4gPj4gKwo+ID4+ICsjaW5jbHVk ZSAiaWd0LmgiCj4gPj4gKwo+ID4+ICtJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBwbGFuZSBh bHBoYSBhbmQgYmxlbmRpbmcgbW9kZSBwcm9wZXJ0aWVzIik7Cj4gPj4gKwo+ID4+ICt0eXBlZGVm IHN0cnVjdCB7Cj4gPj4gKwlpbnQgZ2Z4X2ZkOwo+ID4+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5 Owo+ID4+ICsJc3RydWN0IGlndF9mYiB4cmdiX2ZiLCBhcmdiX2ZiXzAsIGFyZ2JfZmJfY292XzAs IGFyZ2JfZmJfN2UsIGFyZ2JfZmJfY292XzdlLCBhcmdiX2ZiX2ZjLCBhcmdiX2ZiX2Nvdl9mYywg YXJnYl9mYl8xMDAsIGJsYWNrX2ZiLCBncmF5X2ZiOwo+ID4+ICsJaWd0X2NyY190IHJlZl9jcmM7 Cj4gPj4gKwlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7Cj4gPj4gK30gZGF0YV90Owo+ID4+ICsK PiA+PiArc3RhdGljIHZvaWQgX19kcmF3X2dyYWRpZW50KHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQg dywgaW50IGgsIGRvdWJsZSBhLCBjYWlyb190ICpjcikKPiA+PiArewo+ID4+ICsJY2Fpcm9fcGF0 dGVybl90ICpwYXQ7Cj4gPj4gKwo+ID4+ICsJcGF0ID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfbGlu ZWFyKDAsIDAsIHcsIGgpOwo+ID4+ICsJY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2Jh KHBhdCwgMC4wMCwgMC4wMCwgMC4wMCwgMC4wMCwgMS4pOwo+ID4+ICsJY2Fpcm9fcGF0dGVybl9h ZGRfY29sb3Jfc3RvcF9yZ2JhKHBhdCwgMC4yNSwgMS4wMCwgMS4wMCwgMC4wMCwgMS4pOwo+ID4+ ICsJY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2JhKHBhdCwgMC41MCwgMC4wMCwgMS4w MCwgMS4wMCwgMS4pOwo+ID4+ICsJY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2JhKHBh dCwgMC43NSwgMS4wMCwgMC4wMCwgMS4wMCwgMS4pOwo+ID4+ICsJY2Fpcm9fcGF0dGVybl9hZGRf Y29sb3Jfc3RvcF9yZ2JhKHBhdCwgMS4wMCwgMS4wMCwgMS4wMCwgMS4wMCwgMS4pOwo+ID4+ICsK PiA+PiArCWNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgdywgaCk7Cj4gPj4gKwljYWlyb19zZXRf c291cmNlKGNyLCBwYXQpOwo+ID4+ICsJY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVS QVRPUl9TT1VSQ0UpOwo+ID4+ICsJY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgYSk7Cj4gPj4g KwljYWlyb19wYXR0ZXJuX2Rlc3Ryb3kocGF0KTsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGlj IHZvaWQgZHJhd19ncmFkaWVudChzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHcsIGludCBoLCBkb3Vi bGUgYSkKPiA+PiArewo+ID4+ICsJY2Fpcm9fdCAqY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ ZmQsIGZiKTsKPiA+PiArCj4gPj4gKwlfX2RyYXdfZ3JhZGllbnQoZmIsIHcsIGgsIGEsIGNyKTsK PiA+PiArCj4gPj4gKwlpZ3RfcHV0X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7Cj4gPj4gK30K PiA+PiArCj4gPj4gK3N0YXRpYyB2b2lkIGRyYXdfZ3JhZGllbnRfY292ZXJhZ2Uoc3RydWN0IGln dF9mYiAqZmIsIGludCB3LCBpbnQgaCwgdWludDhfdCBhKQo+ID4+ICt7Cj4gPj4gKwljYWlyb190 ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIpOwo+ID4+ICsJdWludDhfdCAqZGF0 YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZmItPmNhaXJvX3N1cmZhY2UpOwo+ID4+ ICsJdWludDMyX3Qgc3RyaWRlID0gZmItPnN0cmlkZXNbMF07Cj4gPj4gKwlpbnQgaTsKPiA+PiAr Cj4gPj4gKwlfX2RyYXdfZ3JhZGllbnQoZmIsIHcsIGgsIDEuLCBjcik7Cj4gPj4gKwo+ID4+ICsJ Zm9yICg7IGgtLTsgZGF0YSArPSBzdHJpZGUpCj4gPj4gKwkJZm9yIChpID0gMDsgaSA8IHc7IGkr KykKPiA+PiArCQkJZGF0YVtpICogNCArIDNdID0gYTsKPiA+IEhybS4gSSBndWVzcyBubyB3YXkg dG8gbWFrZSBjYWlybyBwYWludCBub24tcHJlbXVsdGlwbGllZC4gSXQncyBhbHNvCj4gPiBpbnRl cmVzdGluZyB0aGF0IHdoZW4geW91IHNwZWNpZnkgYSBzb3VyY2UvcGF0dGVybiBjb2xvciB5b3Ug YXBwYXJlbnRseQo+ID4gZ2l2ZSBpbiBub24tcHJlbXVsdGlwbGllZCBmb3JtIGV2ZW4gdGhvdWdo IHN1cmZhY2Ugc291cmNlIHdvdWxkIGJlIGluCj4gPiBwcmVtdWx0aXBsaWVkIGZvcm0uIENhaXJv IHNlZW1zIGEgYml0IGluY29uc2lzdGVudCBoZXJlLgo+ID4KPiA+PiArCj4gPj4gKwlpZ3RfcHV0 X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyB2 b2lkIGRyYXdfc3F1YXJlcyhzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHcsIGludCBoLCBkb3VibGUg YSkKPiA+PiArewo+ID4+ICsJY2Fpcm9fdCAqY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ZmQs IGZiKTsKPiA+PiArCj4gPj4gKwlpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIDAsIDAsICAgICAg ICAgdyAvIDIsIGggLyAyLCAxLiwgMC4sIDAuLCBhKTsKPiA+PiArCWlndF9wYWludF9jb2xvcl9h bHBoYShjciwgdyAvIDIsIDAsICAgICB3IC8gMiwgaCAvIDIsIDAuLCAxLiwgMC4sIGEpOwo+ID4+ ICsJaWd0X3BhaW50X2NvbG9yX2FscGhhKGNyLCAwLCBoIC8gMiwgICAgIHcgLyAyLCBoIC8gMiwg MC4sIDAuLCAxLiwgYSk7Cj4gPj4gKwlpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIHcgLyAyLCBo IC8gMiwgdyAvIDQsIGggLyAyLCAxLiwgMS4sIDEuLCBhKTsKPiA+PiArCWlndF9wYWludF9jb2xv cl9hbHBoYShjciwgMyAqIHcgLyA0LCBoIC8gMiwgdyAvIDQsIGggLyAyLCAwLiwgMC4sIDAuLCBh KTsKPiA+PiArCj4gPj4gKwlpZ3RfcHV0X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7Cj4gPj4g K30KPiA+PiArCj4gPj4gK3N0YXRpYyB2b2lkIGRyYXdfc3F1YXJlc19jb3ZlcmFnZShzdHJ1Y3Qg aWd0X2ZiICpmYiwgaW50IHcsIGludCBoLCB1aW50OF90IGFzKQo+ID4+ICt7Cj4gPj4gKwljYWly b190ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIpOwo+ID4+ICsJaW50IGksIGo7 Cj4gPj4gKwl1aW50MzJfdCAqZGF0YSA9ICh2b2lkICopY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf ZGF0YShmYi0+Y2Fpcm9fc3VyZmFjZSk7Cj4gPj4gKwl1aW50MzJfdCBzdHJpZGUgPSBmYi0+c3Ry aWRlc1swXSAvIDQ7Cj4gPj4gKwl1aW50MzJfdCBhID0gYXMgPDwgMjQ7Cj4gPj4gKwo+ID4+ICsJ Zm9yIChqID0gMDsgaiA8IGggLyAyOyBqKyspIHsKPiA+PiArCQlmb3IgKGkgPSAwOyBpIDwgdyAv IDI7IGkrKykKPiA+PiArCQkJZGF0YVtqICogc3RyaWRlICsgaV0gPSBhIHwgMHhmZjAwMDA7Cj4g Pj4gKwo+ID4+ICsJCWZvciAoOyBpIDwgdzsgaSsrKQo+ID4+ICsJCQlkYXRhW2ogKiBzdHJpZGUg KyBpXSA9IGEgfCAweGZmMDA7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJZm9yIChqID0gaCAvIDI7 IGogPCBoOyBqKyspIHsKPiA+PiArCQlmb3IgKGkgPSAwOyBpIDwgdyAvIDI7IGkrKykKPiA+PiAr CQkJZGF0YVtqICogc3RyaWRlICsgaV0gPSBhIHwgMHhmZjsKPiA+PiArCj4gPj4gKwkJZm9yICg7 IGkgPCAzICogdyAvIDQ7IGkrKykKPiA+PiArCQkJZGF0YVtqICogc3RyaWRlICsgaV0gPSBhIHwg MHhmZmZmZmY7Cj4gPj4gKwo+ID4+ICsJCWZvciAoOyBpIDwgdzsgaSsrKQo+ID4+ICsJCQlkYXRh W2ogKiBzdHJpZGUgKyBpXSA9IGE7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaWd0X3B1dF9jYWly b19jdHgoZmItPmZkLCBmYiwgY3IpOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCBy ZXNldF9hbHBoYShpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSkKPiA+PiAr ewo+ID4+ICsJaWd0X3BsYW5lX3QgKnBsYW5lOwo+ID4+ICsKPiA+PiArCWZvcl9lYWNoX3BsYW5l X29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKPiA+PiArCQlpZiAoaWd0X3BsYW5lX2hh c19wcm9wKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEpKQo+ID4+ICsJCQlpZ3RfcGxhbmVfc2V0X3By b3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgMHhmZmZmKTsKPiA+PiArCj4gPj4gKwkJ aWYgKGlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUp KQo+ID4+ICsJCQlpZ3RfcGxhbmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdUX1BMQU5FX1BJWEVM X0JMRU5EX01PREUsICJQcmUtbXVsdGlwbGllZCIpOwo+ID4+ICsJfQo+ID4+ICt9Cj4gPj4gKwo+ ID4+ICtzdGF0aWMgYm9vbCBoYXNfbXVsdGlwbGllZF9hbHBoYShkYXRhX3QgKmRhdGEsIGlndF9w bGFuZV90ICpwbGFuZSkKPiA+IFdoYXQncyB0aGlzICJtdWx0aXBsaWVkIGFscGhhIj8gSXMgdGhh dCB0aGUgY29uc3RhbnQgYWxwaGEgcHJvcD8KPiA+IFdoeSBjYW4ndCB3ZSBqdXN0IGxvb2sgZm9y IHRoZSBwcm9wPwo+ID4KPiA+PiArewo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlpZ3Rf cGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgMHg4MDgwKTsKPiA+ PiArCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzEwMCk7Cj4gPj4gKwly ZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYygmZGF0YS0+ZGlzcGxheSwKPiA+PiAr CQlEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVT RVQsIE5VTEwpOwo+ID4+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExB TkVfQUxQSEEsIDB4ZmZmZik7Cj4gPj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsK PiA+PiArCj4gPj4gKwlyZXR1cm4gcmV0ID09IDA7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRp YyB2b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBl bnVtIHBpcGUgcGlwZSkKPiA+PiArewo+ID4+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ID4+ ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ID4+ICsJaW50IHcs IGg7Cj4gPj4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeSA9IGlndF9waXBlX2dldF9wbGFuZV90eXBl KCZkaXNwbGF5LT5waXBlc1twaXBlXSwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gPj4gKwo+ ID4+ICsJaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7Cj4gPj4gKwlpZ3Rfb3V0cHV0X3NldF9w aXBlKG91dHB1dCwgcGlwZSk7Cj4gPj4gKwo+ID4+ICsJLyogY3JlYXRlIHRoZSBwaXBlX2NyYyBv YmplY3QgZm9yIHRoaXMgcGlwZSAqLwo+ID4+ICsJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlw ZV9jcmMpOwo+ID4+ICsJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmdm eF9mZCwgcGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOwo+ID4+ICsKPiA+PiArCW1v ZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gPj4gKwl3ID0gbW9kZS0+aGRpc3Bs YXk7Cj4gPj4gKwloID0gbW9kZS0+dmRpc3BsYXk7Cj4gPj4gKwo+ID4+ICsJLyogcmVjcmVhdGUg YWxsIGZicyBpZiBpbmNvbXBhdGlibGUgKi8KPiA+PiArCWlmIChkYXRhLT54cmdiX2ZiLndpZHRo ICE9IHcgfHwgZGF0YS0+eHJnYl9mYi5oZWlnaHQgIT0gaCkgewo+ID4+ICsJCWNhaXJvX3QgKmNy Owo+ID4+ICsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPnhyZ2Jf ZmIpOwo+ID4+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl8w KTsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJfY292 XzApOwo+ID4+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl83 ZSk7Cj4gPj4gKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5hcmdiX2ZiX2Zj KTsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJfY292 XzdlKTsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJf Y292X2ZjKTsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2Jf ZmJfMTAwKTsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmJsYWNr X2ZiKTsKPiA+PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmdyYXlfZmIp Owo+ID4+ICsKPiA+PiArCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwKPiA+PiAr CQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwK PiA+PiArCQkJICAgICAgJmRhdGEtPnhyZ2JfZmIpOwo+ID4+ICsJCWRyYXdfZ3JhZGllbnQoJmRh dGEtPnhyZ2JfZmIsIHcsIGgsIDEuKTsKPiA+PiArCj4gPj4gKwkJaWd0X2NyZWF0ZV9mYihkYXRh LT5nZnhfZmQsIHcsIGgsCj4gPj4gKwkJCSAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FM X0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gPj4gKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiX2Nvdl8w KTsKPiA+PiArCQlkcmF3X2dyYWRpZW50X2NvdmVyYWdlKCZkYXRhLT5hcmdiX2ZiX2Nvdl8wLCB3 LCBoLCAwKTsKPiA+PiArCj4gPj4gKwkJaWd0X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgs Cj4gPj4gKwkJCSAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9E X05PTkUsCj4gPj4gKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiXzApOwo+ID4+ICsKPiA+PiArCQlj ciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJfMCk7Cj4g Pj4gKwkJaWd0X3BhaW50X2NvbG9yX2FscGhhKGNyLCAwLCAwLCB3LCBoLCAwLiwgMC4sIDAuLCAx LjApOwo+ID4+ICsJCWlndF9wdXRfY2Fpcm9fY3R4KGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2Jf ZmJfMCwgY3IpOwo+ID4+ICsKPiA+PiArCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywg aCwKPiA+PiArCQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSwKPiA+PiArCQkJICAgICAgJmRhdGEtPmFyZ2JfZmJfN2UpOwo+ID4+ICsJCWRyYXdf c3F1YXJlcygmZGF0YS0+YXJnYl9mYl83ZSwgdywgaCwgMTI2LiAvIDI1NS4pOwo+ID4+ICsKPiA+ PiArCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwKPiA+PiArCQkJICAgICAgRFJN X0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiA+PiArCQkJICAg ICAgJmRhdGEtPmFyZ2JfZmJfY292XzdlKTsKPiA+PiArCQlkcmF3X3NxdWFyZXNfY292ZXJhZ2Uo JmRhdGEtPmFyZ2JfZmJfY292XzdlLCB3LCBoLCAweDdlKTsKPiA+PiArCj4gPj4gKwkJaWd0X2Ny ZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsCj4gPj4gKwkJCSAgICAgIERSTV9GT1JNQVRfQVJH Qjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gPj4gKwkJCSAgICAgICZkYXRhLT5h cmdiX2ZiX2ZjKTsKPiA+PiArCQlkcmF3X3NxdWFyZXMoJmRhdGEtPmFyZ2JfZmJfZmMsIHcsIGgs IDI1Mi4gLyAyNTUuKTsKPiA+PiArCj4gPj4gKwkJaWd0X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQs IHcsIGgsCj4gPj4gKwkJCSAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RSTV9GT1JN QVRfTU9EX05PTkUsCj4gPj4gKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiX2Nvdl9mYyk7Cj4gPj4g KwkJZHJhd19zcXVhcmVzX2NvdmVyYWdlKCZkYXRhLT5hcmdiX2ZiX2Nvdl9mYywgdywgaCwgMHhm Yyk7Cj4gPj4gKwo+ID4+ICsJCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAo+ID4+ ICsJCQkgICAgICBEUk1fRk9STUFUX0FSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05F LAo+ID4+ICsJCQkgICAgICAmZGF0YS0+YXJnYl9mYl8xMDApOwo+ID4+ICsJCWRyYXdfZ3JhZGll bnQoJmRhdGEtPmFyZ2JfZmJfMTAwLCB3LCBoLCAxLik7Cj4gPj4gKwo+ID4+ICsJCWlndF9jcmVh dGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAo+ID4+ICsJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4 ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ID4+ICsJCQkgICAgICAmZGF0YS0+Ymxh Y2tfZmIpOwo+ID4+ICsKPiA+PiArCQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmdmeF9mZCwg dywgaCwKPiA+PiArCQkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFU X01PRF9OT05FLAo+ID4+ICsJCQkJICAgIC41LCAuNSwgLjUsICZkYXRhLT5ncmF5X2ZiKTsKPiA+ PiArCX0KPiA+PiArCj4gPj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5ibGFj a19mYik7Cj4gPj4gKwkvKiByZXNldCBhbHBoYSBwcm9wZXJ0eSB0byBkZWZhdWx0ICovCj4gPj4g KwlyZXNldF9hbHBoYShkaXNwbGF5LCBwaXBlKTsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGlj IHZvaWQgYmFzaWNfYWxwaGEoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgaWd0X3BsYW5l X3QgKnBsYW5lKQo+ID4+ICt7Cj4gPj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEt PmRpc3BsYXk7Cj4gPj4gKwlpZ3RfY3JjX3QgcmVmX2NyYywgY3JjOwo+ID4+ICsJaW50IGk7Cj4g Pj4gKwo+ID4+ICsJLyogVGVzdGNhc2UgMTogYWxwaGEgPSAwLjAsIHBsYW5lIHNob3VsZCBiZSB0 cmFuc3BhcmFudC4gKi8KPiA+PiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlU X0FUT01JQyk7Cj4gPj4gKwlpZ3RfcGlwZV9jcmNfc3RhcnQoZGF0YS0+cGlwZV9jcmMpOwo+ID4+ ICsJaWd0X3BpcGVfY3JjX2dldF9zaW5nbGUoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKPiA+ PiArCj4gPj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+YXJnYl9mYl8wKTsKPiA+ PiArCj4gPj4gKwkvKiB0cmFuc3BhcmFudCBmYiBzaG91bGQgYmUgdHJhbnNwYXJhbnQsIG5vIG1h dHRlciB3aGF0Li4gKi8KPiA+PiArCWZvciAoaSA9IDc7IGkgPCAyNTY7IGkgKz0gOCkgewo+ID4+ ICsJCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0FMUEhBLCBpIHwg KGkgPDwgOCkpOwo+ID4+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FU T01JQyk7Cj4gPj4gKwo+ID4+ICsJCWlndF9waXBlX2NyY19nZXRfY3VycmVudChkaXNwbGF5LT5k cm1fZmQsIGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPiA+PiArCQlpZ3RfYXNzZXJ0X2NyY19lcXVh bCgmcmVmX2NyYywgJmNyYyk7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJLyogQW5kIHRlc3QgYWxw aGEgPSAwLCBzaG91bGQgZ2l2ZSBzYW1lIENSQywgYnV0IGRvZXNuJ3Qgb24gc29tZSBpOTE1IHBs YXRmb3Jtcy4gKi8KPiA+PiArCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BM QU5FX0FMUEhBLCAwKTsKPiA+PiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlU X0FUT01JQyk7Cj4gPj4gKwo+ID4+ICsJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRpc3BsYXkt PmRybV9mZCwgZGF0YS0+cGlwZV9jcmMsICZjcmMpOwo+ID4+ICsJaWd0X3BpcGVfY3JjX3N0b3Ao ZGF0YS0+cGlwZV9jcmMpOwo+ID4+ICsJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnJlZl9jcmMsICZj cmMpOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCBhcmdiX29wYXF1ZShkYXRhX3Qg KmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gPj4gK3sKPiA+PiAr CWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiA+PiArCWlndF9jcmNf dCByZWZfY3JjLCBjcmM7Cj4gPj4gKwo+ID4+ICsJLyogYWxwaGEgPSAxLjAsIHBsYW5lIHNob3Vs ZCBiZSBmdWxseSBvcGFxdWUsIHRlc3Qgd2l0aCBhbiBvcGFxdWUgZmIgKi8KPiA+PiArCWlndF9w bGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT54cmdiX2ZiKTsKPiA+PiArCWlndF9kaXNwbGF5X2Nv bW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gPj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVj dF9jcmMoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKPiA+IENvdWxkIHByb2JhYmx5IHNwZWVk IHVwIHRoZSB0ZXN0IHF1aXRlIGEgYml0IHdpdGggY3JjX2dldF9jdXJyZW50KCk/Cj4gPgo+ID4+ ICsKPiA+PiArCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzEwMCk7Cj4g Pj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ID4+ICsJ aWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPiA+PiArCj4g Pj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJmNyYyk7Cj4gPj4gK30KPiA+PiAr Cj4gPj4gK3N0YXRpYyB2b2lkIGFyZ2JfdHJhbnNwYXJhbnQoZGF0YV90ICpkYXRhLCBlbnVtIHBp cGUgcGlwZSwgaWd0X3BsYW5lX3QgKnBsYW5lKQo+ID4+ICt7Cj4gPj4gKwlpZ3RfZGlzcGxheV90 ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gPj4gKwlpZ3RfY3JjX3QgcmVmX2NyYywgY3Jj Owo+ID4+ICsKPiA+PiArCS8qIGFscGhhID0gMS4wLCBwbGFuZSBzaG91bGQgYmUgZnVsbHkgb3Bh cXVlLCB0ZXN0IHdpdGggYSB0cmFuc3BhcmFudCBmYiAqLwo+ID4+ICsJaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgTlVMTCk7Cj4gPj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1J VF9BVE9NSUMpOwo+ID4+ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3Jj LCAmcmVmX2NyYyk7Cj4gPj4gKwo+ID4+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEt PmFyZ2JfZmJfMCk7Cj4gPj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9B VE9NSUMpOwo+ID4+ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAm Y3JjKTsKPiA+IE1pZ2h0IG1ha2UgaXQgYSBiaXQgZWFzaWVyIHRvIHBhcnNlIHRoZXNlIGlmIHlv dSBkaWRuJ3QgcmVseSBvbiB0aGUKPiA+IGRlZmF1bHQgc3RhdGUgb2YgdGhlIHByb3BzIGFuZCBp bnN0ZWFkIGp1c3Qgc2V0IHRoZW0gZXhwbGljaXRseS4KPiA+Cj4gPiBJbiBnZW5lcmFsIHRoaXMg YSBiaXQgcmVwZXRpdGl2ZS4gSSB3b25kZXIgaWYgc29tZSBraW5kIG9mIGRlY2xhcmF0aXZlCj4g PiBhcHByb2FjaCBtaWdodCBpbmNyZWFzZSB0aGUgc2lnbmFsIHRvIG5vaXNlIHJhdGlvIGEgYml0 Lgo+ID4KPiA+IFRvIG1lIGl0IGxvb2tzIGxpa2UgdGhlIHdlYWsgcG9pbnQgb2YgdGhpcyB0ZXN0 IGlzIHRoYXQgaXQgbW9zdGx5IHJlbGllcwo+ID4gb24gY29tcGFyaW5zIHRoZSBkaWZmZXJlbnQg YmxlbmQgbW9kZXMgd2l0aCBlYWNoIG90aGVyLiBJIGd1ZXNzIHRoZXJlCj4gPiBhcmUgZW5vdWdo IHdheXMgdG8gY29tYmluZSB0aG9zZSB0byBnZXQgZGVjZW50IGFzc3VyYW5jZXMgdGhhdCB0aGV5 Cj4gPiBhcmVuJ3QganVzdCBtaXNiZWhhdmluZyBpbiB3YXlzIHRoYXQgbWFrZSB0aGUgY3JjcyBt YXRjaCBieSBhY2NpZGVudC4KPiA+IFN0aWxsLCBjb21wYXJpbmcgYWdhaW5zdCBzb2Z0d2FyZSBy ZW5kZXJlZCByZXN1bHRzIHdvdWxkIHByb2JhYmx5IGJlCj4gPiBob3cgSSdkIGhhdmUgdHJpZWQg dG8gYXBwcm9hY2ggdGhpcy4gVGhhdCB3b3VsZCBhbHNvIGVsaW1pbmF0ZSB0aGUKPiA+IGRlcGVu ZGVuY3kgb24gaGF2aW5nIGFsbCB0aGUgYmxlbmQgbW9kZXMgc3VwcG9ydGVkIGluIHRoZSBoYXJk d2FyZS4KPiA+Cj4gPiBMb29rcyBkZWNlbnQgZW5vdWdoIGFueXdheSwgc28KPiA+IFJldmlld2Vk LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFRo aXMgaXMgZGVsaWJlcmF0ZS4gSFcgbWlnaHQgcm91bmQgaW4gZGlmZmVyZW50IHdheXMgdGhlbiBz dy4gU28gdG8gY29tcGFyZSBodyByZW5kZXJpbmcgYWdhaW5zdCBzdywKPiB3b3VsZCBhc3N1bWUg YSBzcGVjaWZpYyB3YXkgb2Ygcm91bmRpbmcuCgpJIHdvdWxkIGV4cGVjdCB3ZSBzaG91bGQgYmUg YWJsZSB0byBnZXQgY2xvc2UgZW5vdWdoIHdpdGggY2VydGFpbiBhbHBoYQp2YWx1ZXMuIEFuZCB0 aGVyZSdzIGFsd2F5cyB0aGUgImxldCdzIHRocm93IGF3YXkgc29tZSBsb3cgYml0cyB3aXRoIHRo ZQpsdXQiIHRyaWNrLgoKPiBTb21lIHRlc3RzIGNvbXBhcmUgcHJlYmxlbmRlZCAweGZjIHZzIDB4 N2UuIFRoaXMgd2F5IGF0IGxlYXN0IHdlIGtub3cgaHcgd2lsbCBwcm9iYWJseSByb3VuZCBpbiB0 aGUKPiBzYW1lIHdheSB3aGVuIHN3IGRvZXMgdGhpbmdzIGluIGEgY2VydGFpbiB3YXkuIEV2ZW4g aWYgd2UgZG9uJ3Qga25vdyB0aGUgZXhhY3Qgcm91bmRpbmcuCj4gQmVjYXVzZSAweGZjICogMHg3 ZSBzaG91bGQgYmUgc2FtZSBhcyAweDdlICogMHhmYy4KCkFzc3VtaW5nIHRoZSBodyBleHBhbmRz IHRoZSBwZXItcGl4ZWwgYW5kIGNvbnN0YW50IGFscGhhcyB0aGUgc2FtZSB3YXkuCk5vdCBzdXJl IEknZCB3YW50IHRvIHRha2UgdGhhdCBiZXQuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFp bGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=