From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 255696E222 for ; Mon, 1 Oct 2018 18:19:08 +0000 (UTC) Date: Mon, 1 Oct 2018 21:19:01 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20181001181901.GM9144@intel.com> References: <20181001154812.26229-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181001154812.26229-1-maarten.lankhorst@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: T24gTW9uLCBPY3QgMDEsIDIwMTggYXQgMDU6NDg6MTJQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQWRkIGEgZmV3IHRlc3RzIHRvIHRlc3QgdmFyaW91cyBibGVuZGluZyBtb2Rl cy4KPiAKPiBTb21lIG9mIHRoZSB0ZXN0cyB3aWxsIHNraXAgaWYgcGl4ZWwgbW9kZSBhbHBoYSBj YW5ub3QgYmUgZW5hYmxlZAo+IHdpdGggcGxhbmUgYWxwaGEgYXQgdGhlIHNhbWUgdGltZS4gVGhp cyBpcyBmb3IgbWFsaS1kcC4gSSBkaWRuJ3QKPiB0ZXN0IG9uIHRoYXQgcGxhdGZvcm0sIGJ1dCB0 ZXN0ZWQgd2l0aCB0aGUgc2FtZSBjaGVjayBvbiBpOTE1Lgo+IAo+IFRoZSB0ZXN0cyB3b24ndCBw YXNzIGk5MTUgb24gcHJlLWdlbjExIGh3LiBpOTE1IGhhcyBzbWFsbCByb3VuZGluZwo+IGVycm9y cyB3aXRoIDB4ZmYgYW5kIDB4MDAgYWxwaGEsIHdoaWNoIGdpdmVzIENSQyBtaXNtYXRjaGVzLgo+ IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBTZW5kIHRoZSBjb3JyZWN0IHZlcnNpb24sIHdpdGgg dGhlIHNraXBzIGZvciBtYWxpLWRwIGluIHBsYWNlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0 ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4g IGxpYi9pZ3Rfa21zLmMgICAgICAgICAgICAgICAgIHwgICAyICsKPiAgbGliL2lndF9rbXMuaCAg ICAgICAgICAgICAgICAgfCAgIDIgKwo+ICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgICB8 ICAgMSArCj4gIHRlc3RzL2ttc19wbGFuZV9hbHBoYV9ibGVuZC5jIHwgNTcxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiAgdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgICAg fCAgIDEgKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDU3NyBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCB0ZXN0cy9rbXNfcGxhbmVfYWxwaGFfYmxlbmQuYwo+IAo+IGRpZmYgLS1naXQg YS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwo+IGluZGV4IDQ1NjNiZmQ5ZDI1Yi4uZTg4 ZTk2MTQ5OTU3IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmMKPiArKysgYi9saWIvaWd0X2tt cy5jCj4gQEAgLTE3NSw2ICsxNzUsOCBAQCBjb25zdCBjaGFyICogY29uc3QgaWd0X3BsYW5lX3By b3BfbmFtZXNbSUdUX05VTV9QTEFORV9QUk9QU10gPSB7Cj4gIAlbSUdUX1BMQU5FX0lOX0ZPUk1B VFNdID0gIklOX0ZPUk1BVFMiLAo+ICAJW0lHVF9QTEFORV9DT0xPUl9FTkNPRElOR10gPSAiQ09M T1JfRU5DT0RJTkciLAo+ICAJW0lHVF9QTEFORV9DT0xPUl9SQU5HRV0gPSAiQ09MT1JfUkFOR0Ui LAo+ICsJW0lHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFXSA9ICJwaXhlbCBibGVuZCBtb2RlIiwK PiArCVtJR1RfUExBTkVfQUxQSEFdID0gImFscGhhIiwKPiAgfTsKPiAgCj4gIGNvbnN0IGNoYXIg KiBjb25zdCBpZ3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9QU10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0X2ttcy5oCj4gaW5kZXggMzg2MmVmYTI4 YmUwLi4zYWYzMzZmNDMwMjAgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9rbXMuaAo+ICsrKyBiL2xp Yi9pZ3Rfa21zLmgKPiBAQCAtMjY2LDYgKzI2Niw4IEBAIGVudW0gaWd0X2F0b21pY19wbGFuZV9w cm9wZXJ0aWVzIHsKPiAgICAgICAgIElHVF9QTEFORV9JTl9GT1JNQVRTLAo+ICAgICAgICAgSUdU X1BMQU5FX0NPTE9SX0VOQ09ESU5HLAo+ICAgICAgICAgSUdUX1BMQU5FX0NPTE9SX1JBTkdFLAo+ ICsgICAgICAgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUsCj4gKyAgICAgICBJR1RfUExBTkVf QUxQSEEsCj4gICAgICAgICBJR1RfTlVNX1BMQU5FX1BST1BTCj4gIH07Cj4gIAo+IGRpZmYgLS1n aXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IGlu ZGV4IDEwOWM1Mzk3ZGU4NS4uZTZmN2EzNjRiNGIzIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMKPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTE5NCw2ICsx OTQsNyBAQCBURVNUU19wcm9ncyA9IFwKPiAgCWttc19waXBlX2JfY19pdmIgXAo+ICAJa21zX3Bp cGVfY3JjX2Jhc2ljIFwKPiAgCWttc19wbGFuZSBcCj4gKwlrbXNfcGxhbmVfYWxwaGFfYmxlbmQg XAo+ICAJa21zX3BsYW5lX2xvd3JlcyBcCj4gIAlrbXNfcGxhbmVfbXVsdGlwbGUgXAo+ICAJa21z X3BsYW5lX3NjYWxpbmcgXAo+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcGxhbmVfYWxwaGFfYmxl bmQuYyBiL3Rlc3RzL2ttc19wbGFuZV9hbHBoYV9ibGVuZC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjgxYzhjYjkxNmE2Mwo+IC0tLSAvZGV2L251bGwKPiAr KysgYi90ZXN0cy9rbXNfcGxhbmVfYWxwaGFfYmxlbmQuYwo+IEBAIC0wLDAgKzEsNTcxIEBACj4g Ky8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJ TiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgTWFhcnRlbiBMYW5r aG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiArICovCj4gKwo+ICsj aW5jbHVkZSAiaWd0LmgiCj4gKwo+ICtJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBwbGFuZSBh bHBoYSBhbmQgYmxlbmRpbmcgbW9kZSBwcm9wZXJ0aWVzIik7Cj4gKwo+ICt0eXBlZGVmIHN0cnVj dCB7Cj4gKwlpbnQgZ2Z4X2ZkOwo+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ICsJc3RydWN0 IGlndF9mYiB4cmdiX2ZiLCBhcmdiX2ZiXzAsIGFyZ2JfZmJfY292XzAsIGFyZ2JfZmJfN2UsIGFy Z2JfZmJfY292XzdlLCBhcmdiX2ZiX2ZjLCBhcmdiX2ZiX2Nvdl9mYywgYXJnYl9mYl8xMDAsIGJs YWNrX2ZiLCBncmF5X2ZiOwo+ICsJaWd0X2NyY190IHJlZl9jcmM7Cj4gKwlpZ3RfcGlwZV9jcmNf dCAqcGlwZV9jcmM7Cj4gK30gZGF0YV90Owo+ICsKPiArc3RhdGljIHZvaWQgX19kcmF3X2dyYWRp ZW50KHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgdywgaW50IGgsIGRvdWJsZSBhLCBjYWlyb190ICpj cikKPiArewo+ICsJY2Fpcm9fcGF0dGVybl90ICpwYXQ7Cj4gKwo+ICsJcGF0ID0gY2Fpcm9fcGF0 dGVybl9jcmVhdGVfbGluZWFyKDAsIDAsIHcsIGgpOwo+ICsJY2Fpcm9fcGF0dGVybl9hZGRfY29s b3Jfc3RvcF9yZ2JhKHBhdCwgMC4wMCwgMC4wMCwgMC4wMCwgMC4wMCwgMS4pOwo+ICsJY2Fpcm9f cGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2JhKHBhdCwgMC4yNSwgMS4wMCwgMS4wMCwgMC4wMCwg MS4pOwo+ICsJY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2JhKHBhdCwgMC41MCwgMC4w MCwgMS4wMCwgMS4wMCwgMS4pOwo+ICsJY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2Jh KHBhdCwgMC43NSwgMS4wMCwgMC4wMCwgMS4wMCwgMS4pOwo+ICsJY2Fpcm9fcGF0dGVybl9hZGRf Y29sb3Jfc3RvcF9yZ2JhKHBhdCwgMS4wMCwgMS4wMCwgMS4wMCwgMS4wMCwgMS4pOwo+ICsKPiAr CWNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgdywgaCk7Cj4gKwljYWlyb19zZXRfc291cmNlKGNy LCBwYXQpOwo+ICsJY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0Up Owo+ICsJY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgYSk7Cj4gKwljYWlyb19wYXR0ZXJuX2Rl c3Ryb3kocGF0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJhd19ncmFkaWVudChzdHJ1Y3Qg aWd0X2ZiICpmYiwgaW50IHcsIGludCBoLCBkb3VibGUgYSkKPiArewo+ICsJY2Fpcm9fdCAqY3Ig PSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsKPiArCj4gKwlfX2RyYXdfZ3JhZGllbnQo ZmIsIHcsIGgsIGEsIGNyKTsKPiArCj4gKwlpZ3RfcHV0X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBj cik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRyYXdfZ3JhZGllbnRfY292ZXJhZ2Uoc3RydWN0 IGlndF9mYiAqZmIsIGludCB3LCBpbnQgaCwgdWludDhfdCBhKQo+ICt7Cj4gKwljYWlyb190ICpj ciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIpOwo+ICsJdWludDhfdCAqZGF0YSA9IGNh aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZmItPmNhaXJvX3N1cmZhY2UpOwo+ICsJdWludDMy X3Qgc3RyaWRlID0gZmItPnN0cmlkZXNbMF07Cj4gKwlpbnQgaTsKPiArCj4gKwlfX2RyYXdfZ3Jh ZGllbnQoZmIsIHcsIGgsIDEuLCBjcik7Cj4gKwo+ICsJZm9yICg7IGgtLTsgZGF0YSArPSBzdHJp ZGUpCj4gKwkJZm9yIChpID0gMDsgaSA8IHc7IGkrKykKPiArCQkJZGF0YVtpICogNCArIDNdID0g YTsKCkhybS4gSSBndWVzcyBubyB3YXkgdG8gbWFrZSBjYWlybyBwYWludCBub24tcHJlbXVsdGlw bGllZC4gSXQncyBhbHNvCmludGVyZXN0aW5nIHRoYXQgd2hlbiB5b3Ugc3BlY2lmeSBhIHNvdXJj ZS9wYXR0ZXJuIGNvbG9yIHlvdSBhcHBhcmVudGx5CmdpdmUgaW4gbm9uLXByZW11bHRpcGxpZWQg Zm9ybSBldmVuIHRob3VnaCBzdXJmYWNlIHNvdXJjZSB3b3VsZCBiZSBpbgpwcmVtdWx0aXBsaWVk IGZvcm0uIENhaXJvIHNlZW1zIGEgYml0IGluY29uc2lzdGVudCBoZXJlLgoKPiArCj4gKwlpZ3Rf cHV0X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRy YXdfc3F1YXJlcyhzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHcsIGludCBoLCBkb3VibGUgYSkKPiAr ewo+ICsJY2Fpcm9fdCAqY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsKPiArCj4g KwlpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIDAsIDAsICAgICAgICAgdyAvIDIsIGggLyAyLCAx LiwgMC4sIDAuLCBhKTsKPiArCWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgdyAvIDIsIDAsICAg ICB3IC8gMiwgaCAvIDIsIDAuLCAxLiwgMC4sIGEpOwo+ICsJaWd0X3BhaW50X2NvbG9yX2FscGhh KGNyLCAwLCBoIC8gMiwgICAgIHcgLyAyLCBoIC8gMiwgMC4sIDAuLCAxLiwgYSk7Cj4gKwlpZ3Rf cGFpbnRfY29sb3JfYWxwaGEoY3IsIHcgLyAyLCBoIC8gMiwgdyAvIDQsIGggLyAyLCAxLiwgMS4s IDEuLCBhKTsKPiArCWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgMyAqIHcgLyA0LCBoIC8gMiwg dyAvIDQsIGggLyAyLCAwLiwgMC4sIDAuLCBhKTsKPiArCj4gKwlpZ3RfcHV0X2NhaXJvX2N0eChm Yi0+ZmQsIGZiLCBjcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRyYXdfc3F1YXJlc19jb3Zl cmFnZShzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHcsIGludCBoLCB1aW50OF90IGFzKQo+ICt7Cj4g KwljYWlyb190ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIpOwo+ICsJaW50IGks IGo7Cj4gKwl1aW50MzJfdCAqZGF0YSA9ICh2b2lkICopY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf ZGF0YShmYi0+Y2Fpcm9fc3VyZmFjZSk7Cj4gKwl1aW50MzJfdCBzdHJpZGUgPSBmYi0+c3RyaWRl c1swXSAvIDQ7Cj4gKwl1aW50MzJfdCBhID0gYXMgPDwgMjQ7Cj4gKwo+ICsJZm9yIChqID0gMDsg aiA8IGggLyAyOyBqKyspIHsKPiArCQlmb3IgKGkgPSAwOyBpIDwgdyAvIDI7IGkrKykKPiArCQkJ ZGF0YVtqICogc3RyaWRlICsgaV0gPSBhIHwgMHhmZjAwMDA7Cj4gKwo+ICsJCWZvciAoOyBpIDwg dzsgaSsrKQo+ICsJCQlkYXRhW2ogKiBzdHJpZGUgKyBpXSA9IGEgfCAweGZmMDA7Cj4gKwl9Cj4g Kwo+ICsJZm9yIChqID0gaCAvIDI7IGogPCBoOyBqKyspIHsKPiArCQlmb3IgKGkgPSAwOyBpIDwg dyAvIDI7IGkrKykKPiArCQkJZGF0YVtqICogc3RyaWRlICsgaV0gPSBhIHwgMHhmZjsKPiArCj4g KwkJZm9yICg7IGkgPCAzICogdyAvIDQ7IGkrKykKPiArCQkJZGF0YVtqICogc3RyaWRlICsgaV0g PSBhIHwgMHhmZmZmZmY7Cj4gKwo+ICsJCWZvciAoOyBpIDwgdzsgaSsrKQo+ICsJCQlkYXRhW2og KiBzdHJpZGUgKyBpXSA9IGE7Cj4gKwl9Cj4gKwo+ICsJaWd0X3B1dF9jYWlyb19jdHgoZmItPmZk LCBmYiwgY3IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZXNldF9hbHBoYShpZ3RfZGlzcGxh eV90ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSkKPiArewo+ICsJaWd0X3BsYW5lX3QgKnBsYW5l Owo+ICsKPiArCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsK PiArCQlpZiAoaWd0X3BsYW5lX2hhc19wcm9wKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEpKQo+ICsJ CQlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgMHhmZmZm KTsKPiArCj4gKwkJaWYgKGlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwgSUdUX1BMQU5FX1BJWEVM X0JMRU5EX01PREUpKQo+ICsJCQlpZ3RfcGxhbmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdUX1BM QU5FX1BJWEVMX0JMRU5EX01PREUsICJQcmUtbXVsdGlwbGllZCIpOwo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgYm9vbCBoYXNfbXVsdGlwbGllZF9hbHBoYShkYXRhX3QgKmRhdGEsIGlndF9wbGFu ZV90ICpwbGFuZSkKCldoYXQncyB0aGlzICJtdWx0aXBsaWVkIGFscGhhIj8gSXMgdGhhdCB0aGUg Y29uc3RhbnQgYWxwaGEgcHJvcD8KV2h5IGNhbid0IHdlIGp1c3QgbG9vayBmb3IgdGhlIHByb3A/ Cgo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFu ZSwgSUdUX1BMQU5FX0FMUEhBLCAweDgwODApOwo+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwg JmRhdGEtPmFyZ2JfZmJfMTAwKTsKPiArCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRv bWljKCZkYXRhLT5kaXNwbGF5LAo+ICsJCURSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgfCBEUk1f TU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3Bf dmFsdWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgMHhmZmZmKTsKPiArCWlndF9wbGFuZV9zZXRf ZmIocGxhbmUsIE5VTEwpOwo+ICsKPiArCXJldHVybiByZXQgPT0gMDsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQs IGVudW0gcGlwZSBwaXBlKQo+ICt7Cj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gKwlpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gKwlpbnQgdywgaDsKPiArCWln dF9wbGFuZV90ICpwcmltYXJ5ID0gaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoJmRpc3BsYXktPnBp cGVzW3BpcGVdLCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiArCj4gKwlpZ3RfZGlzcGxheV9y ZXNldChkaXNwbGF5KTsKPiArCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiAr Cj4gKwkvKiBjcmVhdGUgdGhlIHBpcGVfY3JjIG9iamVjdCBmb3IgdGhpcyBwaXBlICovCj4gKwlp Z3RfcGlwZV9jcmNfZnJlZShkYXRhLT5waXBlX2NyYyk7Cj4gKwlkYXRhLT5waXBlX2NyYyA9IGln dF9waXBlX2NyY19uZXcoZGF0YS0+Z2Z4X2ZkLCBwaXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0Vf QVVUTyk7Cj4gKwo+ICsJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiArCXcg PSBtb2RlLT5oZGlzcGxheTsKPiArCWggPSBtb2RlLT52ZGlzcGxheTsKPiArCj4gKwkvKiByZWNy ZWF0ZSBhbGwgZmJzIGlmIGluY29tcGF0aWJsZSAqLwo+ICsJaWYgKGRhdGEtPnhyZ2JfZmIud2lk dGggIT0gdyB8fCBkYXRhLT54cmdiX2ZiLmhlaWdodCAhPSBoKSB7Cj4gKwkJY2Fpcm9fdCAqY3I7 Cj4gKwo+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+eHJnYl9mYik7Cj4g KwkJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5hcmdiX2ZiXzApOwo+ICsJCWln dF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl9jb3ZfMCk7Cj4gKwkJaWd0 X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5hcmdiX2ZiXzdlKTsKPiArCQlpZ3RfcmVt b3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJfZmMpOwo+ICsJCWlndF9yZW1vdmVf ZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl9jb3ZfN2UpOwo+ICsJCWlndF9yZW1vdmVf ZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl9jb3ZfZmMpOwo+ICsJCWlndF9yZW1vdmVf ZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl8xMDApOwo+ICsJCWlndF9yZW1vdmVfZmIo ZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YmxhY2tfZmIpOwo+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+ Z2Z4X2ZkLCAmZGF0YS0+Z3JheV9mYik7Cj4gKwo+ICsJCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4 X2ZkLCB3LCBoLAo+ICsJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9S TUFUX01PRF9OT05FLAo+ICsJCQkgICAgICAmZGF0YS0+eHJnYl9mYik7Cj4gKwkJZHJhd19ncmFk aWVudCgmZGF0YS0+eHJnYl9mYiwgdywgaCwgMS4pOwo+ICsKPiArCQlpZ3RfY3JlYXRlX2ZiKGRh dGEtPmdmeF9mZCwgdywgaCwKPiArCQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxf RFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiArCQkJICAgICAgJmRhdGEtPmFyZ2JfZmJfY292XzApOwo+ ICsJCWRyYXdfZ3JhZGllbnRfY292ZXJhZ2UoJmRhdGEtPmFyZ2JfZmJfY292XzAsIHcsIGgsIDAp Owo+ICsKPiArCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwKPiArCQkJICAgICAg RFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiArCQkJICAg ICAgJmRhdGEtPmFyZ2JfZmJfMCk7Cj4gKwo+ICsJCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0 YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl8wKTsKPiArCQlpZ3RfcGFpbnRfY29sb3JfYWxwaGEo Y3IsIDAsIDAsIHcsIGgsIDAuLCAwLiwgMC4sIDEuMCk7Cj4gKwkJaWd0X3B1dF9jYWlyb19jdHgo ZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl8wLCBjcik7Cj4gKwo+ICsJCWlndF9jcmVhdGVf ZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAo+ICsJCQkgICAgICBEUk1fRk9STUFUX0FSR0I4ODg4LCBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ICsJCQkgICAgICAmZGF0YS0+YXJnYl9mYl83ZSk7 Cj4gKwkJZHJhd19zcXVhcmVzKCZkYXRhLT5hcmdiX2ZiXzdlLCB3LCBoLCAxMjYuIC8gMjU1Lik7 Cj4gKwo+ICsJCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAo+ICsJCQkgICAgICBE Uk1fRk9STUFUX0FSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ICsJCQkgICAg ICAmZGF0YS0+YXJnYl9mYl9jb3ZfN2UpOwo+ICsJCWRyYXdfc3F1YXJlc19jb3ZlcmFnZSgmZGF0 YS0+YXJnYl9mYl9jb3ZfN2UsIHcsIGgsIDB4N2UpOwo+ICsKPiArCQlpZ3RfY3JlYXRlX2ZiKGRh dGEtPmdmeF9mZCwgdywgaCwKPiArCQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxf RFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiArCQkJICAgICAgJmRhdGEtPmFyZ2JfZmJfZmMpOwo+ICsJ CWRyYXdfc3F1YXJlcygmZGF0YS0+YXJnYl9mYl9mYywgdywgaCwgMjUyLiAvIDI1NS4pOwo+ICsK PiArCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwKPiArCQkJICAgICAgRFJNX0ZP Uk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiArCQkJICAgICAgJmRh dGEtPmFyZ2JfZmJfY292X2ZjKTsKPiArCQlkcmF3X3NxdWFyZXNfY292ZXJhZ2UoJmRhdGEtPmFy Z2JfZmJfY292X2ZjLCB3LCBoLCAweGZjKTsKPiArCj4gKwkJaWd0X2NyZWF0ZV9mYihkYXRhLT5n ZnhfZmQsIHcsIGgsCj4gKwkJCSAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RSTV9G T1JNQVRfTU9EX05PTkUsCj4gKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiXzEwMCk7Cj4gKwkJZHJh d19ncmFkaWVudCgmZGF0YS0+YXJnYl9mYl8xMDAsIHcsIGgsIDEuKTsKPiArCj4gKwkJaWd0X2Ny ZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsCj4gKwkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4 ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gKwkJCSAgICAgICZkYXRhLT5ibGFja19m Yik7Cj4gKwo+ICsJCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAo+ICsJ CQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4g KwkJCQkgICAgLjUsIC41LCAuNSwgJmRhdGEtPmdyYXlfZmIpOwo+ICsJfQo+ICsKPiArCWlndF9w bGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmJsYWNrX2ZiKTsKPiArCS8qIHJlc2V0IGFscGhh IHByb3BlcnR5IHRvIGRlZmF1bHQgKi8KPiArCXJlc2V0X2FscGhhKGRpc3BsYXksIHBpcGUpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBiYXNpY19hbHBoYShkYXRhX3QgKmRhdGEsIGVudW0gcGlw ZSBwaXBlLCBpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gK3sKPiArCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCWlndF9jcmNfdCByZWZfY3JjLCBjcmM7Cj4gKwlpbnQg aTsKPiArCj4gKwkvKiBUZXN0Y2FzZSAxOiBhbHBoYSA9IDAuMCwgcGxhbmUgc2hvdWxkIGJlIHRy YW5zcGFyYW50LiAqLwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRP TUlDKTsKPiArCWlndF9waXBlX2NyY19zdGFydChkYXRhLT5waXBlX2NyYyk7Cj4gKwlpZ3RfcGlw ZV9jcmNfZ2V0X3NpbmdsZShkYXRhLT5waXBlX2NyYywgJnJlZl9jcmMpOwo+ICsKPiArCWlndF9w bGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzApOwo+ICsKPiArCS8qIHRyYW5zcGFy YW50IGZiIHNob3VsZCBiZSB0cmFuc3BhcmFudCwgbm8gbWF0dGVyIHdoYXQuLiAqLwo+ICsJZm9y IChpID0gNzsgaSA8IDI1NjsgaSArPSA4KSB7Cj4gKwkJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVl KHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsIGkgfCAoaSA8PCA4KSk7Cj4gKwkJaWd0X2Rpc3BsYXlf Y29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCj4gKwkJaWd0X3BpcGVfY3JjX2dl dF9jdXJyZW50KGRpc3BsYXktPmRybV9mZCwgZGF0YS0+cGlwZV9jcmMsICZjcmMpOwo+ICsJCWln dF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArCX0KPiArCj4gKwkvKiBBbmQg dGVzdCBhbHBoYSA9IDAsIHNob3VsZCBnaXZlIHNhbWUgQ1JDLCBidXQgZG9lc24ndCBvbiBzb21l IGk5MTUgcGxhdGZvcm1zLiAqLwo+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJ R1RfUExBTkVfQUxQSEEsIDApOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01N SVRfQVRPTUlDKTsKPiArCj4gKwlpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGlzcGxheS0+ZHJt X2ZkLCBkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4gKwlpZ3RfcGlwZV9jcmNfc3RvcChkYXRhLT5w aXBlX2NyYyk7Cj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJmNyYyk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGFyZ2Jfb3BhcXVlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBp cGUsIGlndF9wbGFuZV90ICpwbGFuZSkKPiArewo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9 ICZkYXRhLT5kaXNwbGF5Owo+ICsJaWd0X2NyY190IHJlZl9jcmMsIGNyYzsKPiArCj4gKwkvKiBh bHBoYSA9IDEuMCwgcGxhbmUgc2hvdWxkIGJlIGZ1bGx5IG9wYXF1ZSwgdGVzdCB3aXRoIGFuIG9w YXF1ZSBmYiAqLwo+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPnhyZ2JfZmIpOwo+ ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCWlndF9w aXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJnJlZl9jcmMpOwoKQ291bGQgcHJv YmFibHkgc3BlZWQgdXAgdGhlIHRlc3QgcXVpdGUgYSBiaXQgd2l0aCBjcmNfZ2V0X2N1cnJlbnQo KT8KCj4gKwo+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfMTAwKTsK PiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gKwlpZ3Rf cGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmMpOwo+ICsKPiArCWlndF9h c3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg YXJnYl90cmFuc3BhcmFudChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpZ3RfcGxhbmVf dCAqcGxhbmUpCj4gK3sKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxh eTsKPiArCWlndF9jcmNfdCByZWZfY3JjLCBjcmM7Cj4gKwo+ICsJLyogYWxwaGEgPSAxLjAsIHBs YW5lIHNob3VsZCBiZSBmdWxseSBvcGFxdWUsIHRlc3Qgd2l0aCBhIHRyYW5zcGFyYW50IGZiICov Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKPiArCWlndF9kaXNwbGF5X2NvbW1p dDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMo ZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCAmZGF0YS0+YXJnYl9mYl8wKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09N TUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMs ICZjcmMpOwoKTWlnaHQgbWFrZSBpdCBhIGJpdCBlYXNpZXIgdG8gcGFyc2UgdGhlc2UgaWYgeW91 IGRpZG4ndCByZWx5IG9uIHRoZQpkZWZhdWx0IHN0YXRlIG9mIHRoZSBwcm9wcyBhbmQgaW5zdGVh ZCBqdXN0IHNldCB0aGVtIGV4cGxpY2l0bHkuCgpJbiBnZW5lcmFsIHRoaXMgYSBiaXQgcmVwZXRp dGl2ZS4gSSB3b25kZXIgaWYgc29tZSBraW5kIG9mIGRlY2xhcmF0aXZlCmFwcHJvYWNoIG1pZ2h0 IGluY3JlYXNlIHRoZSBzaWduYWwgdG8gbm9pc2UgcmF0aW8gYSBiaXQuCgpUbyBtZSBpdCBsb29r cyBsaWtlIHRoZSB3ZWFrIHBvaW50IG9mIHRoaXMgdGVzdCBpcyB0aGF0IGl0IG1vc3RseSByZWxp ZXMKb24gY29tcGFyaW5zIHRoZSBkaWZmZXJlbnQgYmxlbmQgbW9kZXMgd2l0aCBlYWNoIG90aGVy LiBJIGd1ZXNzIHRoZXJlCmFyZSBlbm91Z2ggd2F5cyB0byBjb21iaW5lIHRob3NlIHRvIGdldCBk ZWNlbnQgYXNzdXJhbmNlcyB0aGF0IHRoZXkKYXJlbid0IGp1c3QgbWlzYmVoYXZpbmcgaW4gd2F5 cyB0aGF0IG1ha2UgdGhlIGNyY3MgbWF0Y2ggYnkgYWNjaWRlbnQuClN0aWxsLCBjb21wYXJpbmcg YWdhaW5zdCBzb2Z0d2FyZSByZW5kZXJlZCByZXN1bHRzIHdvdWxkIHByb2JhYmx5IGJlCmhvdyBJ J2QgaGF2ZSB0cmllZCB0byBhcHByb2FjaCB0aGlzLiBUaGF0IHdvdWxkIGFsc28gZWxpbWluYXRl IHRoZQpkZXBlbmRlbmN5IG9uIGhhdmluZyBhbGwgdGhlIGJsZW5kIG1vZGVzIHN1cHBvcnRlZCBp biB0aGUgaGFyZHdhcmUuCgpMb29rcyBkZWNlbnQgZW5vdWdoIGFueXdheSwgc28KUmV2aWV3ZWQt Ynk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICsK PiArCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgY29uc3RhbnRfYWxwaGFfbWluKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUs IGlndF9wbGFuZV90ICpwbGFuZSkKPiArewo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZk YXRhLT5kaXNwbGF5Owo+ICsJaWd0X2NyY190IHJlZl9jcmMsIGNyYzsKPiArCj4gKwlpZ3RfcGxh bmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwg Q09NTUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9j cmMsICZyZWZfY3JjKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdU X1BMQU5FX1BJWEVMX0JMRU5EX01PREUsICJOb25lIik7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3Bf dmFsdWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgMCk7Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBs YW5lLCAmZGF0YS0+YXJnYl9mYl8xMDApOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBDT01NSVRfQVRPTUlDKTsKPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBl X2NyYywgJmNyYyk7Cj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJmNyYyk7Cj4g Kwo+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfMCk7Cj4gKwlpZ3Rf ZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ICsJaWd0X3BpcGVfY3Jj X2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPiArCWlndF9hc3NlcnRfY3JjX2Vx dWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29uc3RhbnRfYWxw aGFfbWlkKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGlndF9wbGFuZV90ICpwbGFuZSkK PiArewo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ICsJaWd0 X2NyY190IHJlZl9jcmMsIGNyYzsKPiArCj4gKwlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5F X1RZUEVfUFJJTUFSWSkKPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKGlndF9waXBlX2dldF9wbGFuZV90 eXBlKCZkaXNwbGF5LT5waXBlc1twaXBlXSwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSksICZkYXRh LT5ncmF5X2ZiKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdUX1BM QU5FX1BJWEVMX0JMRU5EX01PREUsICJOb25lIik7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFs dWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgMHg3ZmZmKTsKPiArCWlndF9wbGFuZV9zZXRfZmIo cGxhbmUsICZkYXRhLT54cmdiX2ZiKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwg Q09NTUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9j cmMsICZyZWZfY3JjKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+YXJn Yl9mYl9jb3ZfMCk7Cj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9N SUMpOwo+ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsK PiArCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArCj4gKwlpZ3RfcGxh bmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+YXJnYl9mYl8xMDApOwo+ICsJaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2Ny YyhkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2Ny YywgJmNyYyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNvbnN0YW50X2FscGhhX21heChkYXRh X3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gK3sKPiArCWln dF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCWlndF9jcmNfdCByZWZf Y3JjLCBjcmM7Cj4gKwo+ICsJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1B UlkpCj4gKwkJaWd0X3BsYW5lX3NldF9mYihpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZSgmZGlzcGxh eS0+cGlwZXNbcGlwZV0sIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpLCAmZGF0YS0+Z3JheV9mYik7 Cj4gKwo+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfMTAwKTsKPiAr CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlw ZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKPiArCj4gKwlpZ3Rf cGxhbmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUsICJO b25lIik7Cj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPiArCWln dF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0 X2ZiKHBsYW5lLCAmZGF0YS0+YXJnYl9mYl9jb3ZfMCk7Cj4gKwlpZ3RfZGlzcGxheV9jb21taXQy KGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRh dGEtPnBpcGVfY3JjLCAmY3JjKTsKPiArCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAm Y3JjKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+eHJnYl9mYik7Cj4g KwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ICsJaWd0X3Bp cGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPiArCWlndF9hc3NlcnRf Y3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCBOVUxMKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYWxwaGFfN2VmYyhkYXRhX3QgKmRhdGEs IGVudW0gcGlwZSBwaXBlLCBpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gK3sKPiArCWlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCWlndF9jcmNfdCByZWZfY3JjID0ge30s IGNyYyA9IHt9Owo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpCj4gKwkJaWd0X3BsYW5lX3NldF9mYihpZ3RfcGlwZV9nZXRfcGxhbmVf dHlwZSgmZGlzcGxheS0+cGlwZXNbcGlwZV0sIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpLCAmZGF0 YS0+Z3JheV9mYik7Cj4gKwo+ICsJaWd0X3BpcGVfY3JjX3N0YXJ0KGRhdGEtPnBpcGVfY3JjKTsK PiArCj4gKwkvKiBmb3IgY292ZXJhZ2UsIHBsYW5lIGFscGhhIGFuZCBmYiBhbHBoYSBzaG91bGQg YmUgc3dhcHBhYmxlLCBzbyBzd2FwIGZiIGFuZCBhbHBoYSAqLwo+ICsJZm9yIChpID0gMDsgaSA8 IDI1NjsgaSArPSA4KSB7Cj4gKwkJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1Rf UExBTkVfQUxQSEEsICgoaS8yKSA8PCA4KSB8IChpLzIpKTsKPiArCQlpZ3RfcGxhbmVfc2V0X2Zi KHBsYW5lLCAmZGF0YS0+YXJnYl9mYl9mYyk7Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNw bGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCj4gKwkJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRp c3BsYXktPmRybV9mZCwgZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKPiArCj4gKwkJaWd0X3Bs YW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsIChpIDw8IDgpIHwgaSk7 Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfN2UpOwo+ICsJCWln dF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gKwo+ICsJCWlndF9w aXBlX2NyY19nZXRfY3VycmVudChkaXNwbGF5LT5kcm1fZmQsIGRhdGEtPnBpcGVfY3JjLCAmY3Jj KTsKPiArCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJmNyYyk7Cj4gKwl9Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGNvdmVyYWdlXzdlZmMoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUg cGlwZSwgaWd0X3BsYW5lX3QgKnBsYW5lKQo+ICt7Cj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5 ID0gJmRhdGEtPmRpc3BsYXk7Cj4gKwlpZ3RfY3JjX3QgcmVmX2NyYyA9IHt9LCBjcmMgPSB7fTsK PiArCWludCBpOwo+ICsKPiArCWlndF9wbGFuZV9zZXRfcHJvcF9lbnVtKHBsYW5lLCBJR1RfUExB TkVfUElYRUxfQkxFTkRfTU9ERSwgIkNvdmVyYWdlIik7Cj4gKwlpZ3RfcGlwZV9jcmNfc3RhcnQo ZGF0YS0+cGlwZV9jcmMpOwo+ICsKPiArCS8qIGZvciBjb3ZlcmFnZSwgcGxhbmUgYWxwaGEgYW5k IGZiIGFscGhhIHNob3VsZCBiZSBzd2FwcGFibGUsIHNvIHN3YXAgZmIgYW5kIGFscGhhICovCj4g Kwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpICs9IDgpIHsKPiArCQlpZ3RfcGxhbmVfc2V0X3Byb3Bf dmFsdWUocGxhbmUsIElHVF9QTEFORV9BTFBIQSwgKChpLzIpIDw8IDgpIHwgKGkvMikpOwo+ICsJ CWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiX2Nvdl9mYyk7Cj4gKwkJaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCj4gKwkJaWd0X3Bp cGVfY3JjX2dldF9jdXJyZW50KGRpc3BsYXktPmRybV9mZCwgZGF0YS0+cGlwZV9jcmMsICZyZWZf Y3JjKTsKPiArCj4gKwkJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVf QUxQSEEsIChpIDw8IDgpIHwgaSk7Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEt PmFyZ2JfZmJfY292XzdlKTsKPiArCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1J VF9BVE9NSUMpOwo+ICsKPiArCQlpZ3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoZGlzcGxheS0+ZHJt X2ZkLCBkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4gKwkJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnJl Zl9jcmMsICZjcmMpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjb3ZlcmFnZV9wcmVt dWx0X2NvbnN0YW50KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGlndF9wbGFuZV90ICpw bGFuZSkKPiArewo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ ICsJaWd0X2NyY190IHJlZl9jcmMgPSB7fSwgY3JjID0ge307Cj4gKwo+ICsJLyogU2V0IGEgYmFj a2dyb3VuZCBjb2xvciBvbiB0aGUgcHJpbWFyeSBmYiBmb3IgdGVzdGluZyAqLwo+ICsJaWYgKHBs YW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gKwkJaWd0X3BsYW5lX3NldF9m YihpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZSgmZGlzcGxheS0+cGlwZXNbcGlwZV0sIERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpLCAmZGF0YS0+Z3JheV9mYik7Cj4gKwo+ICsJaWd0X3BsYW5lX3NldF9w cm9wX2VudW0ocGxhbmUsIElHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFLCAiQ292ZXJhZ2UiKTsK PiArCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiX2Nvdl83ZSk7Cj4gKwlp Z3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ICsJaWd0X3BpcGVf Y3JjX3N0YXJ0KGRhdGEtPnBpcGVfY3JjKTsKPiArCWlndF9waXBlX2NyY19nZXRfc2luZ2xlKGRh dGEtPnBpcGVfY3JjLCAmcmVmX2NyYyk7Cj4gKwo+ICsJaWd0X3BsYW5lX3NldF9wcm9wX2VudW0o cGxhbmUsIElHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFLCAiUHJlLW11bHRpcGxpZWQiKTsKPiAr CWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzdlKTsKPiArCWlndF9kaXNw bGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gKwlpZ3RfcGlwZV9jcmNfZ2V0 X2N1cnJlbnQoZGlzcGxheS0+ZHJtX2ZkLCBkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4gKwlpZ3Rf YXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJmNyYyk7Cj4gKwo+ICsJaWd0X3BsYW5lX3NldF9w cm9wX2VudW0ocGxhbmUsIElHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFLCAiTm9uZSIpOwo+ICsJ aWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsIDB4N2U3ZSk7 Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+YXJnYl9mYl9jb3ZfN2UpOwo+ICsJ aWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCWlndF9waXBl X2NyY19nZXRfY3VycmVudChkaXNwbGF5LT5kcm1fZmQsIGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsK PiArCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgcnVuX3Rlc3Rfb25fcGlwZV9wbGFuZXMoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUg cGlwZSwgYm9vbCBibGVuZCwKPiArCQkJCSAgICBib29sIG11c3RfbXVsdGlwbHksCj4gKwkJCQkg ICAgdm9pZCgqdGVzdCkoZGF0YV90ICosIGVudW0gcGlwZSwgaWd0X3BsYW5lX3QgKikpCj4gK3sK PiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCWlndF9vdXRw dXRfdCAqb3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9waXBlKGRpc3BsYXksIHBp cGUpOwo+ICsJaWd0X3BsYW5lX3QgKnBsYW5lOwo+ICsJYm9vbCBmb3VuZCA9IGZhbHNlOwo+ICsJ Ym9vbCBtdWx0aXBseSA9IGZhbHNlOwo+ICsKPiArCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlz cGxheSwgcGlwZSwgcGxhbmUpIHsKPiArCQlpZiAoIWlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwg SUdUX1BMQU5FX0FMUEhBKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChibGVuZCAmJiAh aWd0X3BsYW5lX2hhc19wcm9wKHBsYW5lLCBJR1RfUExBTkVfUElYRUxfQkxFTkRfTU9ERSkpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlwcmVwYXJlX2NydGMoZGF0YSwgb3V0cHV0LCBwaXBlKTsK PiArCj4gKwkJLyogcmVzZXQgcGxhbmUgYWxwaGEgcHJvcGVydGllcyBiZXR3ZWVuIGVhY2ggcGxh bmUgKi8KPiArCQlyZXNldF9hbHBoYShkaXNwbGF5LCBwaXBlKTsKPiArCj4gKwkJZm91bmQgPSB0 cnVlOwo+ICsJCWlmIChtdXN0X211bHRpcGx5ICYmICFoYXNfbXVsdGlwbGllZF9hbHBoYShkYXRh LCBwbGFuZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCW11bHRpcGx5ID0gdHJ1ZTsKPiArCj4gKwkJ aWd0X2luZm8oIlRlc3RpbmcgcGxhbmUgJXVcbiIsIHBsYW5lLT5pbmRleCk7Cj4gKwkJdGVzdChk YXRhLCBwaXBlLCBwbGFuZSk7Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Cj4g Kwl9Cj4gKwo+ICsJaWd0X3JlcXVpcmVfZihmb3VuZCwgIk5vIHBsYW5lcyB3aXRoICVzIHByb3Bl cnR5IGZvdW5kXG4iLAo+ICsJCSAgICAgIGJsZW5kID8gInBpeGVsIGJsZW5kaW5nIG1vZGUiIDog ImFscGhhIik7Cj4gKwlpZ3RfcmVxdWlyZV9mKG11bHRpcGx5LCAiTXVsdGlwbGllZCAocGxhbmUg eCBwaXhlbCkgYWxwaGEgbm90IGF2YWlsYWJsZVxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHJ1bl9zdWJ0ZXN0cyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQo+ICt7Cj4gKwlpZ3Rf Zml4dHVyZSB7Cj4gKwkJYm9vbCBmb3VuZCA9IGZhbHNlOwo+ICsJCWlndF9wbGFuZV90ICpwbGFu ZTsKPiArCj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXRfb25fcGlwZSgmZGF0YS0+ZGlz cGxheSwgcGlwZSk7Cj4gKwkJZm9yX2VhY2hfcGxhbmVfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwg cGlwZSwgcGxhbmUpIHsKPiArCQkJaWYgKCFpZ3RfcGxhbmVfaGFzX3Byb3AocGxhbmUsIElHVF9Q TEFORV9BTFBIQSkpCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCWZvdW5kID0gdHJ1ZTsKPiAr CQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlpZ3RfcmVxdWlyZV9mKGZvdW5kLCAiRm91bmQgbm8g cGxhbmUgb24gcGlwZSAlcyB3aXRoIGFscGhhIGJsZW5kaW5nIHN1cHBvcnRlZFxuIiwKPiArCQkJ ICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpOwo+ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0 X2YoInBpcGUtJXMtYWxwaGEtYmFzaWMiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiArCQly dW5fdGVzdF9vbl9waXBlX3BsYW5lcyhkYXRhLCBwaXBlLCBmYWxzZSwgdHJ1ZSwgYmFzaWNfYWxw aGEpOwo+ICsKPiArCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMtYWxwaGEtN2VmYyIsIGttc3Rlc3Rf cGlwZV9uYW1lKHBpcGUpKQo+ICsJCXJ1bl90ZXN0X29uX3BpcGVfcGxhbmVzKGRhdGEsIHBpcGUs IGZhbHNlLCB0cnVlLCBhbHBoYV83ZWZjKTsKPiArCj4gKwlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVz LWNvdmVyYWdlLTdlZmMiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiArCQlydW5fdGVzdF9v bl9waXBlX3BsYW5lcyhkYXRhLCBwaXBlLCB0cnVlLCB0cnVlLCBjb3ZlcmFnZV83ZWZjKTsKPiAr Cj4gKwlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLWNvdmVyYWdlLXZzLXByZW11bHQtdnMtY29uc3Rh bnQiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiArCQlydW5fdGVzdF9vbl9waXBlX3BsYW5l cyhkYXRhLCBwaXBlLCB0cnVlLCBmYWxzZSwgY292ZXJhZ2VfcHJlbXVsdF9jb25zdGFudCk7Cj4g Kwo+ICsJaWd0X3N1YnRlc3RfZigicGlwZS0lcy1hbHBoYS10cmFuc3BhcmFudC1mYiIsIGttc3Rl c3RfcGlwZV9uYW1lKHBpcGUpKQo+ICsJCXJ1bl90ZXN0X29uX3BpcGVfcGxhbmVzKGRhdGEsIHBp cGUsIGZhbHNlLCBmYWxzZSwgYXJnYl90cmFuc3BhcmFudCk7Cj4gKwo+ICsJaWd0X3N1YnRlc3Rf ZigicGlwZS0lcy1hbHBoYS1vcGFxdWUtZmIiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiAr CQlydW5fdGVzdF9vbl9waXBlX3BsYW5lcyhkYXRhLCBwaXBlLCBmYWxzZSwgZmFsc2UsIGFyZ2Jf b3BhcXVlKTsKPiArCj4gKwlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLWNvbnN0YW50LWFscGhhLW1p biIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQo+ICsJCXJ1bl90ZXN0X29uX3BpcGVfcGxhbmVz KGRhdGEsIHBpcGUsIHRydWUsIGZhbHNlLCBjb25zdGFudF9hbHBoYV9taW4pOwo+ICsKPiArCWln dF9zdWJ0ZXN0X2YoInBpcGUtJXMtY29uc3RhbnQtYWxwaGEtbWlkIiwga21zdGVzdF9waXBlX25h bWUocGlwZSkpCj4gKwkJcnVuX3Rlc3Rfb25fcGlwZV9wbGFuZXMoZGF0YSwgcGlwZSwgdHJ1ZSwg ZmFsc2UsIGNvbnN0YW50X2FscGhhX21pZCk7Cj4gKwo+ICsJaWd0X3N1YnRlc3RfZigicGlwZS0l cy1jb25zdGFudC1hbHBoYS1tYXgiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiArCQlydW5f dGVzdF9vbl9waXBlX3BsYW5lcyhkYXRhLCBwaXBlLCB0cnVlLCBmYWxzZSwgY29uc3RhbnRfYWxw aGFfbWF4KTsKPiArfQo+ICsKPiAraWd0X21haW4KPiArewo+ICsJZGF0YV90IGRhdGEgPSB7fTsK PiArCWVudW0gcGlwZSBwaXBlOwo+ICsKPiArCWlndF9maXh0dXJlIHsKPiArCQlpZ3Rfc2tpcF9v bl9zaW11bGF0aW9uKCk7Cj4gKwo+ICsJCWRhdGEuZ2Z4X2ZkID0gZHJtX29wZW5fZHJpdmVyKERS SVZFUl9BTlkpOwo+ICsJCWlndF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZ2Z4X2ZkKTsKPiArCQlp Z3RfZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGRhdGEuZ2Z4X2ZkKTsKPiArCQlpZ3RfcmVx dWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKPiArCX0KPiArCj4gKwlmb3JfZWFjaF9waXBl X3N0YXRpYyhwaXBlKQo+ICsJCWlndF9zdWJ0ZXN0X2dyb3VwCj4gKwkJCXJ1bl9zdWJ0ZXN0cygm ZGF0YSwgcGlwZSk7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUKPiArCQlpZ3RfZGlzcGxheV9maW5pKCZk YXRhLmRpc3BsYXkpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVz dHMvbWVzb24uYnVpbGQKPiBpbmRleCAxNDE1NDY4NjY3NmEuLjgzNjM4ZDc2ODA2OSAxMDA2NDQK PiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gQEAg LTE2OSw2ICsxNjksNyBAQCB0ZXN0X3Byb2dzID0gWwo+ICAJJ2ttc19waXBlX2JfY19pdmInLAo+ ICAJJ2ttc19waXBlX2NyY19iYXNpYycsCj4gIAkna21zX3BsYW5lJywKPiArCSdrbXNfcGxhbmVf YWxwaGFfYmxlbmQnLAo+ICAJJ2ttc19wbGFuZV9sb3dyZXMnLAo+ICAJJ2ttc19wbGFuZV9tdWx0 aXBsZScsCj4gIAkna21zX3BsYW5lX3NjYWxpbmcnLAo+IC0tIAo+IDIuMTkuMAoKLS0gClZpbGxl IFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK