From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v4 38/41] drm/i915: Implement the HDCP2.2 support for DP Date: Wed, 20 Jun 2018 15:49:14 +0530 Message-ID: <9da3ea38-a2ef-7e00-2564-18c6b7dd9c8e@intel.com> References: <1526907240-17639-1-git-send-email-ramalingam.c@intel.com> <1526907240-17639-39-git-send-email-ramalingam.c@intel.com> <20180531072201.GN3438@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180531072201.GN3438@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, uma.shankar@intel.com, dri-devel@lists.freedesktop.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org CgpPbiBUaHVyc2RheSAzMSBNYXkgMjAxOCAxMjo1MiBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToK PiBPbiBNb24sIE1heSAyMSwgMjAxOCBhdCAwNjoyMzo1N1BNICswNTMwLCBSYW1hbGluZ2FtIEMg d3JvdGU6Cj4+IEltcGxlbWVudHMgdGhlIERQIGFkYXB0YXRpb24gc3BlY2lmaWMgSERDUDIuMiBm dW5jdGlvbnMuCj4+Cj4+IFRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5k IHdyaXRlIGZvciBjb21tdW5pY2F0aW5nIHRoZQo+PiBIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNr IGFuZCBmb3J0aC4KPj4KPj4gTm90ZTogQ2hyaXMgV2lsc29uIHN1Z2dlc3RlZCBhbHRlcm5hdGUg bWV0aG9kIGZvciB3YWl0aW5nIGZvciBDUF9JUlEsCj4+IHRoYW4gY29tcGxldGlvbnMgY29uY2Vw dC4gV0lQIHRvIHVuZGVyc3RhbmQgYW5kIGltcGxlbWVudCB0aGF0LAo+PiBpZiBuZWVkZWQuIEp1 c3QgdG8gdW5ibG9jayB0aGUgcmV2aWV3IG9mIG90aGVyIGNoYW5nZXMsIHYyIHN0aWxsCj4+IGNv bnRpbnVlcyB3aXRoIGNvbXBsZXRpb25zLgo+Pgo+PiB2MjoKPj4gICAgd2FpdCBmb3IgY3BfaXJx IGlzIG1lcmdlZCB3aXRoIHRoaXMgcGF0Y2guIFJlYmFzZWQuCj4+IHYzOgo+PiAgICB3YWl0X3F1 ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQo+PiB2NDoKPj4g ICAgU3R5bGUgZml4ZWQuCj4+ICAgICVzL1BBUklORy9QQUlSSU5HCj4+ICAgIEZldyBzdHlsZSBm aXhlcyBbVW1hXQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0u Y0BpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg ICB8IDM1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNyArCj4+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRjcC5jIHwgICA1ICsKPj4gICAzIGZpbGVzIGNoYW5nZWQsIDM3MCBpbnNl cnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBpbmRleCA1Mjg0MDdkNjA4 YzguLmVlNzFhMjZlYzIzZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+IEBAIC0z MSw2ICszMSw3IEBACj4+ICAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+ICAgI2luY2x1ZGUg PGxpbnV4L25vdGlmaWVyLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgo+PiArI2lu Y2x1ZGUgPGxpbnV4L21laV9oZGNwLmg+Cj4+ICAgI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4K Pj4gICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4gICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+Cj4+IEBAIC01MDU3LDYgKzUwNTgsMjggQEAgdm9pZCBpbnRlbF9kcF9lbmNvZGVy X3N1c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4+ICAgCXBwc191 bmxvY2soaW50ZWxfZHApOwo+PiAgIH0KPj4gICAKPj4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfaGRj cF93YWl0X2Zvcl9jcF9pcnEoc3RydWN0IGludGVsX2hkY3AgKmhkY3AsCj4+ICsJCQkJCSBpbnQg dGltZW91dCkKPj4gK3sKPj4gKwlsb25nIHJldDsKPj4gKwo+PiArCS8qIFJlaW5pdCAqLwo+PiAr CWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQsIDApOwo+PiArCj4+ICsjZGVmaW5lIEMg KGF0b21pY19yZWFkKCZoZGNwLT5jcF9pcnFfcmVjdmVkKSA+IDApCj4+ICsJcmV0ID0gd2FpdF9l dmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRjcC0+Y3BfaXJxX3F1ZXVlLCBDLAo+PiArCQkJ CQkgICAgICAgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0KSk7Cj4+ICsKPj4gKwlpZiAocmV0ID4g MCkgewo+PiArCQlhdG9taWNfc2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsKPj4gKwkJcmV0 dXJuIDA7Cj4+ICsJfSBlbHNlIGlmICghcmV0KSB7Cj4+ICsJCXJldHVybiAtRVRJTUVET1VUOwo+ PiArCX0KPj4gKwlyZXR1cm4gKGludClyZXQ7Cj4+ICt9Cj4+ICsKPj4gKwo+PiAgIHN0YXRpYwo+ PiAgIGludCBpbnRlbF9kcF9oZGNwX3dyaXRlX2FuX2Frc3Yoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ICAgCQkJCXU4ICphbikKPj4gQEAgLTUyNzUsNiArNTI5 OCwzMzUgQEAgaW50IGludGVsX2RwX2hkY3BfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiArc3Rh dGljCj4+ICtpbnQgaW50ZWxfZHBjZF9vZmZzZXRfZm9yX2hkY3AyX21zZ2lkKHVpbnQ4X3QgYnl0 ZSwgdW5zaWduZWQgaW50ICpvZmZzZXQpCj4gVWdoLCB0aGlzIGlzIGFubm95aW5nIHRoYXQgd2Ug aGF2ZSB0byBtYXAgdGhpbmdzIGFyb3VuZCBsaWtlIHRoYXQuIEJ1dAo+IGxvb2tpbmcgYXQgdGhl IG51bWJlcnMgdGhlIHN0YW5kYXJkcyByZWFsbHkgZG9uJ3Qgc2VlbSB0byBtYXRjaCBhdCBhbGwu ClNvcnJ5IGkgYW0gbm90IGdldHRpbmcgYWJvdXQgbm90IG1hdGNoaW5nIHBhcnQuCllvdSBtZWFu IHNvbWUgb2Zmc2V0cyBhbmQgdGltZW91dHMgYXJlIG5vdCBtYXRjaGluZyB3aXRoIHNwZWM/Cj4K PiBJbnN0ZWFkIG9mIG9wZW4tY29kaW5nIHRoaXMgSSBzdWdnZXN0ZWQgeW91IHVzZSBhIHRhYmxl IHdpdGggYSBzdHJ1Y3QKPiBsaWtlOgo+Cj4gY29uc3Qgc3RhdGljIHN0cnVjdCBoZGNwX2RwIHsK PiAJaW50IGhkY3BfbXNnOwo+IAlpbnQgZHBjZF9vZmZzZXQ7Cj4gCWludCB0aW1lb3V0Owo+IAkv KiB3aGF0ZXZlciBlbHNlIHlvdSBtaWdodCBuZWVkICovCj4gfSBoZGNwXzJfZHBfdGFibGVbXSA9 IHsKPiAJeyBIRENQXzJfMl9BS0VfSU5JVCwgRFBfSERDUF8yXzJfQUtFX0lOSVRfT0ZGU0VULCAu Li4gfSwKPiAJLi4uCj4gfTsKPgo+IFRoZW4ganVzdCBzZWFyY2ggdGhhdCB0YWJsZSBpbiB0aGUg Y29kZSBpbnN0ZWFkIG9mIHRoZSBodWdlIHN3aXRjaCB0YWJsZQo+IGJlbG93LgpTdWdnZXN0aW5n IHRoaXMgZm9yIGNwdSBvcHRpbWl6YXRpb24gb3IgZm9yIGNvZGluZyBzdHlsZT8KCj4KPj4gK3sK Pj4gKwlzd2l0Y2ggKGJ5dGUpIHsKPj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9JTklUOgo+PiArCQkq b2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX0lOSVRfT0ZGU0VUOwo+PiArCQlicmVhazsKPj4gKwlj YXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQ6Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9B S0VfU0VORF9DRVJUX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9BS0Vf Tk9fU1RPUkVEX0tNOgo+PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX05PX1NUT1JFRF9L TV9PRkZTRVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NUT1JFRF9LTToK Pj4gKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9TVE9SRURfS01fT0ZGU0VUOwo+PiArCQli cmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToKPj4gKwkJKm9mZnNldCA9 IERQX0hEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRV9PRkZTRVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNh c2UgSERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPOgo+PiArCQkqb2Zmc2V0ID0gRFBfSERD UF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2Fz ZSBIRENQXzJfMl9MQ19JTklUOgo+PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfTENfSU5JVF9P RkZTRVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfTENfU0VORF9MUFJJTUU6Cj4+ ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9MQ19TRU5EX0xQUklNRV9PRkZTRVQ7Cj4+ICsJCWJy ZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfU0tFX1NFTkRfRUtTOgo+PiArCQkqb2Zmc2V0ID0gRFBf SERDUF8yXzJfU0tFX1NFTkRfRUtTX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQ XzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKPj4gKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JF UF9TRU5EX1JFQ1ZJRF9MSVNUX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJf Ml9SRVBfU0VORF9BQ0s6Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9SRVBfU0VORF9BQ0tf T0ZGU0VUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdF Ogo+PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfUkVQX1NUUkVBTV9NQU5BR0VfT0ZGU0VUOwo+ PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFk6Cj4+ICsJCSpv ZmZzZXQgPSBEUF9IRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZX09GRlNFVDsKPj4gKwkJYnJlYWs7 Cj4+ICsJY2FzZSBIRENQXzJfMl9FUlJBVEFfRFBfU1RSRUFNX1RZUEU6Cj4+ICsJCSpvZmZzZXQg PSBEUF9IRENQXzJfMl9SRUdfU1RSRUFNX1RZUEVfT0ZGU0VUOwo+PiArCQlicmVhazsKPj4gKwlk ZWZhdWx0Ogo+PiArCQlEUk1fRVJST1IoIlVucmVjb2duaXplZCBNc2cgSURcbiIpOwo+PiArCQly ZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGlubGluZQo+PiAraW50IGludGVsX2RwX2hkY3AyX3JlYWRfcnhfc3RhdHVzKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiArCQkJCSAgdWludDhfdCAq cnhfc3RhdHVzKQo+PiArewo+PiArCXNzaXplX3QgcmV0Owo+PiArCj4+ICsJcmV0ID0gZHJtX2Rw X2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwKPj4gKwkJCSAgICAgICBEUF9IRENQ XzJfMl9SRUdfUlhTVEFUVVNfT0ZGU0VULCByeF9zdGF0dXMsCj4+ICsJCQkgICAgICAgSERDUF8y XzJfRFBfUlhTVEFUVVNfTEVOKTsKPj4gKwlpZiAocmV0ICE9IEhEQ1BfMl8yX0RQX1JYU1RBVFVT X0xFTikgewo+PiArCQlEUk1fRVJST1IoIlJlYWQgYnN0YXR1cyBmcm9tIERQL0FVWCBmYWlsZWQg KCVsZClcbiIsIHJldCk7Cj4+ICsJCXJldHVybiByZXQgPj0gMCA/IC1FSU8gOiByZXQ7Cj4+ICsJ fQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYwo+PiAraW50IGludGVs X2RwX2hkY3AyX3RpbWVvdXRfZm9yX21zZyh1aW50OF90IG1zZ19pZCwgYm9vbCBwYWlyZWQpCj4g Rm9yIHRoZSB0aW1lb3V0IGFuZCB0aGUgYXZhaWxhYmlsaXR5IGNoZWNrIGJlbG93LCBpcyB0aGF0 IG5vdCB0aGUgc2FtZSBmb3IKPiBoZG1pPyBNaWdodCBiZSBnb29kIHRvIHNldCB0aGUgdGltZW91 dC9jaGVjayB2YWx1ZXMgb25jZSwgYW5kIHBlcmhhcHMgcGFzcwo+IHRoYXQgdGhlbiBkb3duIHRv IHRoZSBkcC9oZG1pIGltcGxlbWVudGF0aW9uLCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBpdAo+IGhl cmUuCj4KPiBBbGwgdGhlc2UgZnVuY3Rpb25zIGhlcmUgbG9vayBsaWtlIGEgaHVnZSBsYXllcmlu ZyB2aW9sYXRpb24uIEltbyBhbGwgdGhpcwo+IHRpbWVvdXQgc3R1ZmYgc2hvdWxkIGJlIGhhbmRs ZWQgaGlnaGVyIHVwLCBvciBhdCBsZWFzdCBtb3JlIHRpZ2h0bHkKPiBncm91cGVkIHRvZ2V0aGVy LgpCZXR3ZWVuIEhETUkgYW5kIERQIGFkYXB0YXRpb24gZGlmZmVyZW5jZXMgYXJlIHRoZXJlIGJ1 dCB2ZXJ5IG1pbmltYWwuCk1lc3NhZ2UgYXZpYWxiaWxpdHkgY2hlY2sgaXMgY29tcGxldGVseSBk aWZmZXJlbnQgYmV0d2VlbiBIRE1JIGFuZCBEUC4gCkRQIHVzZXMgdGhlIGNwX2lycS4KQW5kIHRp bWVvdXQgYWxzbyB2YXJpZXMgZm9yIGEgRFAgSERDUCBtc2cuCgpTaW5jZSB3ZSBhcmUgYWRhcHRp bmcgdGhlIEhEQ1AxLjQgZGVzaWduIHdoZXJlIGFsbCBlbmNvZGVyIHNwZWNpZmljIApvcGVyYXRp b25zIGFyZSBwdXNoZWQgaW50byBoZGNwX3NoaW0sCkkgaGF2ZSBpbXBsZW1lbnRlZCBhbGwgSERN SSBhbmQgRFAgcmVsYXRlZCBvcGVyYXRpb24gdG8gdGhlaXIgcmVzcGVjdGl2ZSAKc2hpbXMuClNv IHRoYXQgd2UgbmVlZCBub3QgZG8gbW9yZSBpZihkcC9oZG1pKSBpbiBjb21tb24gY29kZSBpbnRl bF9oZGNwLmMgYXRsZWFzdC4KClRoZSBmaXJzdCBkZXNpZ24gSSBoYWQgc2hhcmVkIHVzaW5nIHRo ZSBkcm0gaGVscGVyIGZ1bmN0aW9ucywgZG9udCBoYXZlIApkaWZmZXJlbnQgZmxvd3MgZm9yIEhE TUkgYW5kIERQLgpXaGVyZSBldmVyIGRpZmZlcmVudCB0cmVhdG1lbnQgaXMgcmVxdWlyZWQgYmFz ZWQgb24gdGhlIGFkYXB0YXRpb24sIHRoYXQgCndhcyB0YWtlbiBjYXJlIHRoZW4gYW5kIHRoZXJl LgoKLVJhbQoKPiBSZW1hcHBpbmcgZnJvbSB0aGUgSERDUF8yXzIgZGVmaW5lcyB0byB0aGUgZHBj ZCBvZmZzZXRzIGlzIGltbyBkaWZmZXJlbnQKPiB0aGFuIGFsbCB0aGUgc3R1ZmYgYmVsb3cgaGVy ZS4KPiAtRGFuaWVsCj4KPj4gK3sKPj4gKwlpbnQgdGltZW91dDsKPj4gKwo+PiArCXN3aXRjaCAo bXNnX2lkKSB7Cj4+ICsJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9DRVJUOgo+PiArCQl0aW1lb3V0 ID0gSERDUF8yXzJfQ0VSVF9USU1FT1VUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8y X0FLRV9TRU5EX0hQUklNRToKPj4gKwkJaWYgKHBhaXJlZCkKPj4gKwkJCXRpbWVvdXQgPSBIRENQ XzJfMl9IUFJJTUVfUEFJUkVEX1RJTUVPVVQ7Cj4+ICsJCWVsc2UKPj4gKwkJCXRpbWVvdXQgPSBI RENQXzJfMl9IUFJJTUVfTk9fUEFJUkVEX1RJTUVPVVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPOgo+PiArCQl0aW1lb3V0ID0gSERDUF8yXzJf UEFJUklOR19USU1FT1VUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX0xDX1NFTkRf TFBSSU1FOgo+PiArCQl0aW1lb3V0ID0gSERDUF8yXzJfRFBfTFBSSU1FX1RJTUVPVVQ7Cj4+ICsJ CWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6Cj4+ICsJCXRp bWVvdXQgPSBIRENQXzJfMl9SRUNWSURfTElTVF9USU1FT1VUOwo+PiArCQlicmVhazsKPj4gKwlj YXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFk6Cj4+ICsJCXRpbWVvdXQgPSBIRENQXzJfMl9T VFJFQU1fUkVBRFlfVElNRU9VVDsKPj4gKwkJYnJlYWs7Cj4+ICsJZGVmYXVsdDoKPj4gKwkJdGlt ZW91dCA9IC1FSU5WQUw7Cj4+ICsJCURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgbXNnX2lkOiAlZFxu IiwgKGludCltc2dfaWQpOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiB0aW1lb3V0Owo+PiArfQo+ PiArCj4+ICtzdGF0aWMKPj4gK2ludCBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJpbGl0eShzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gKwkJCQkgIHVpbnQ4X3Qg bXNnX2lkLCBib29sICptc2dfcmVhZHkpCj4+ICt7Cj4+ICsJdWludDhfdCByeF9zdGF0dXM7Cj4+ ICsJaW50IHJldDsKPj4gKwo+PiArCSptc2dfcmVhZHkgPSBmYWxzZTsKPj4gKwlyZXQgPSBpbnRl bF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7Cj4+ ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlzd2l0Y2ggKG1zZ19p ZCkgewo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgo+PiArCQlpZiAoSERDUF8y XzJfRFBfUlhTVEFUVVNfSF9QUklNRShyeF9zdGF0dXMpKQo+PiArCQkJKm1zZ19yZWFkeSA9IHRy dWU7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZP Ogo+PiArCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUEFJUklORyhyeF9zdGF0dXMpKQo+PiAr CQkJKm1zZ19yZWFkeSA9IHRydWU7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfUkVQ X1NFTkRfUkVDVklEX0xJU1Q6Cj4+ICsJCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFEWShy eF9zdGF0dXMpKQo+PiArCQkJKm1zZ19yZWFkeSA9IHRydWU7Cj4+ICsJCWJyZWFrOwo+PiArCWRl ZmF1bHQ6Cj4+ICsJCURSTV9ERUJVR19LTVMoIlVuaWRlbnRpZmllZCBtc2dfaWQ6ICVkXG4iLCAo aW50KW1zZ19pZCk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXJldHVy biAwOwo+PiArfQo+PiArCj4+ICsKPj4gK3N0YXRpYyBzc2l6ZV90Cj4+ICtpbnRlbF9kcF9oZGNw Ml93YWl0X2Zvcl9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs Cj4+ICsJCQkgICAgdWludDhfdCBtc2dfaWQpCj4+ICt7Cj4+ICsJc3RydWN0IGludGVsX2RwICpk cCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7Cj4+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAm ZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcDsKPj4gKwlpbnQgcmV0LCB0aW1lb3V0Owo+PiAr CWJvb2wgbXNnX3JlYWR5ID0gZmFsc2U7Cj4+ICsKPj4gKwl0aW1lb3V0ID0gaW50ZWxfZHBfaGRj cDJfdGltZW91dF9mb3JfbXNnKG1zZ19pZCwgaGRjcC0+aXNfcGFpcmVkKTsKPj4gKwlzd2l0Y2gg KG1zZ19pZCkgewo+PiArCj4+ICsJLyoKPj4gKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0 IHRoZSBDRVJULCBMUFJJTUUgYW5kIFNUUkVBTV9SRUFEWQo+PiArCSAqIGF2YWlsYWJpbGl0eS4g U28gV2FpdCBmb3IgdGltZW91dCBhbmQgcmVhZCB0aGUgbXNnLgo+PiArCSAqLwo+PiArCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfQ0VSVDoKPj4gKwljYXNlIEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1F Ogo+PiArCWNhc2UgSERDUF8yXzJfUkVQX1NUUkVBTV9SRUFEWToKPj4gKwkJbWRlbGF5KHRpbWVv dXQpOwo+PiArCQlyZXQgPSAwOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9T RU5EX0hQUklNRToKPj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GTzoKPj4g KwljYXNlIEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUOgo+PiArCQlpbnRlbF9kcF9oZGNw X3dhaXRfZm9yX2NwX2lycShoZGNwLCB0aW1lb3V0KTsKPj4gKwkJcmV0ID0gaGRjcDJfZGV0ZWN0 X21zZ19hdmFpbGFiaWxpdHkoaW50ZWxfZGlnX3BvcnQsIG1zZ19pZCwKPj4gKwkJCQkJCSAgICAm bXNnX3JlYWR5KTsKPj4gKwkJaWYgKCFtc2dfcmVhZHkpCj4+ICsJCQlyZXQgPSAtRVRJTUVET1VU Owo+PiArCQlicmVhazsKPj4gKwlkZWZhdWx0Ogo+PiArCQlEUk1fREVCVUdfS01TKCJVbmlkZW50 aWZpZWQgbXNnX2lkOiAlZFxuIiwgKGludCltc2dfaWQpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsK Pj4gKwl9Cj4+ICsJaWYgKHJldCkKPj4gKwkJRFJNX0VSUk9SKCJtc2dfaWQgJWQsIHJldCAlZCwg dGltZW91dChtU2VjKTogJWRcbiIsIG1zZ19pZCwgcmV0LAo+PiArCQkJICB0aW1lb3V0KTsKPj4g Kwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYwo+PiAraW50IGludGVsX2Rw X2hkY3AyX3dyaXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPj4gKwkJCSAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPj4gK3sKPj4gKwl1bnNpZ25l ZCBpbnQgb2Zmc2V0Owo+PiArCXVpbnQ4X3QgKmJ5dGUgPSBidWY7Cj4+ICsJc3NpemVfdCByZXQs IGJ5dGVzX3RvX3dyaXRlLCBsZW47Cj4+ICsKPj4gKwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRfZm9y X2hkY3AyX21zZ2lkKCpieXRlLCAmb2Zmc2V0KSA8IDApCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+ PiArCj4+ICsJLyogTm8gbXNnX2lkIGluIERQIEhEQ1AyLjIgbXNncyAqLwo+PiArCWJ5dGVzX3Rv X3dyaXRlID0gc2l6ZSAtIDE7Cj4+ICsJYnl0ZSsrOwo+PiArCj4+ICsJd2hpbGUgKGJ5dGVzX3Rv X3dyaXRlKSB7Cj4+ICsJCWxlbiA9IGJ5dGVzX3RvX3dyaXRlID4gRFBfQVVYX01BWF9QQVlMT0FE X0JZVEVTID8KPj4gKwkJCQlEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRlc190b193cml0 ZTsKPj4gKwo+PiArCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZGlnX3BvcnQtPmRw LmF1eCwgb2Zmc2V0LAo+PiArCQkJCQkodm9pZCAqKWJ5dGUsIGxlbik7Cj4+ICsJCWlmIChyZXQg PCAwKQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwo+PiArCQlieXRlc190b193cml0ZSAtPSByZXQ7 Cj4+ICsJCWJ5dGUgKz0gcmV0Owo+PiArCQlvZmZzZXQgKz0gcmV0Owo+PiArCX0KPj4gKwo+PiAr CXJldHVybiBzaXplOwo+PiArfQo+PiArCj4+ICtzdGF0aWMKPj4gK2ludCBpbnRlbF9kcF9oZGNw Ml9yZWFkX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4g KwkJCSAgICB1aW50OF90IG1zZ19pZCwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPj4gK3sKPj4g Kwl1bnNpZ25lZCBpbnQgb2Zmc2V0LCBkZXZfY250Owo+PiArCXVpbnQ4X3QgKmJ5dGUgPSBidWY7 Cj4+ICsJdWludDhfdCByeF9pbmZvW0hEQ1BfMl8yX1JYSU5GT19MRU5dOwo+PiArCXNzaXplX3Qg cmV0LCBieXRlc190b19yZWN2LCBsZW47Cj4+ICsKPj4gKwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRf Zm9yX2hkY3AyX21zZ2lkKG1zZ19pZCwgJm9mZnNldCkgPCAwKQo+PiArCQlyZXR1cm4gLUVJTlZB TDsKPj4gKwo+PiArCXJldCA9IGludGVsX2RwX2hkY3AyX3dhaXRfZm9yX21zZyhpbnRlbF9kaWdf cG9ydCwgbXNnX2lkKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+ PiArCS8qIEZpbmRpbmcgdGhlIFJlY2VpdmVySUQgTGlzdCBzaXplICovCj4+ICsJaWYgKG1zZ19p ZCA9PSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVCkgewo+PiArCQlyZXQgPSBkcm1fZHBf ZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAo+PiArCQkJCSAgICAgICBEUF9IRENQ XzJfMl9SRUdfUlhJTkZPX09GRlNFVCwKPj4gKwkJCQkgICAgICAgKHZvaWQgKilyeF9pbmZvLCBI RENQXzJfMl9SWElORk9fTEVOKTsKPj4gKwkJaWYgKHJldCAhPSBIRENQXzJfMl9SWElORk9fTEVO KQo+PiArCQkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKPj4gKwo+PiArCQlkZXZfY250 ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZvWzBdKSA8PCA0IHwKPj4gKwkJCSAgIEhE Q1BfMl8yX0RFVl9DT1VOVF9MTyhyeF9pbmZvWzFdKSk7Cj4+ICsKPj4gKwkJaWYgKGRldl9jbnQg PiBIRENQXzJfMl9NQVhfREVWSUNFX0NPVU5UKQo+PiArCQkJZGV2X2NudCA9IEhEQ1BfMl8yX01B WF9ERVZJQ0VfQ09VTlQ7Cj4+ICsKPj4gKwkJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaGRjcDJfcmVw X3NlbmRfcmVjZWl2ZXJpZF9saXN0KSAtCj4+ICsJCSAgICAgICBIRENQXzJfMl9SRUNFSVZFUl9J RFNfTUFYX0xFTiArCj4+ICsJCSAgICAgICAoZGV2X2NudCAqIEhEQ1BfMl8yX1JFQ0VJVkVSX0lE X0xFTik7Cj4+ICsJfQo+PiArCj4+ICsJYnl0ZXNfdG9fcmVjdiA9IHNpemUgLSAxOwo+PiArCj4+ ICsJLyogVG8gc2tpcCB0aGUgbXNnX2lkLCBhcyBtc2dzIGluIERQIGFkYXB0YXRpb24gaGFzIG5v IG1zZ19pZCAqLwo+PiArCWJ5dGUrKzsKPj4gKwo+PiArCXdoaWxlIChieXRlc190b19yZWN2KSB7 Cj4+ICsJCWxlbiA9IGJ5dGVzX3RvX3JlY3YgPiBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgPwo+ PiArCQkgICAgICBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRlc190b19yZWN2Owo+PiAr Cj4+ICsJCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsIG9m ZnNldCwKPj4gKwkJCQkgICAgICAgKHZvaWQgKilieXRlLCBsZW4pOwo+PiArCQlpZiAocmV0IDwg MCkgewo+PiArCQkJRFJNX0RFQlVHX0tNUygibXNnX2lkICVkLCByZXQgJWRcbiIsIG1zZ19pZCwg KGludClyZXQpOwo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwkJfQo+PiArCj4+ICsJCWJ5dGVzX3Rv X3JlY3YgLT0gcmV0Owo+PiArCQlieXRlICs9IHJldDsKPj4gKwkJb2Zmc2V0ICs9IHJldDsKPj4g Kwl9Cj4+ICsJYnl0ZSA9IGJ1ZjsKPj4gKwkqYnl0ZSA9IG1zZ19pZDsKPj4gKwo+PiArCXJldHVy biBzaXplOwo+PiArfQo+PiArCj4+ICtzdGF0aWMKPj4gK2ludCBpbnRlbF9kcF9oZGNwMl9jb25m aWdfc3RyZWFtX3R5cGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs Cj4+ICsJCQkJICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPj4gK3sKPj4gKwlyZXR1cm4g aW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnKGludGVsX2RpZ19wb3J0LCBidWYsIHNpemUpOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMKPj4gK2ludCBpbnRlbF9kcF9oZGNwMl9jaGVja19saW5rKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+PiArewo+PiArCXVpbnQ4X3Qg cnhfc3RhdHVzOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9y ZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7Cj4+ICsJaWYgKHJldCkK Pj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFV VEhfUkVRKHJ4X3N0YXR1cykpCj4+ICsJCXJldCA9IERSTV9IRENQX1JFQVVUSF9SRVFVRVNUOwo+ PiArCWVsc2UgaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xJTktfRkFJTEVEKHJ4X3N0YXR1cykp Cj4+ICsJCXJldCA9IERSTV9IRENQX0xJTktfSU5URUdSSVRZX0ZBSUxVUkU7Cj4+ICsJZWxzZSBp ZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBRFkocnhfc3RhdHVzKSkKPj4gKwkJcmV0ID0gRFJN X0hEQ1BfVE9QT0xPR1lfQ0hBTkdFOwo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+ PiArc3RhdGljCj4+ICtpbnQgaW50ZWxfZHBfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gKwkJCSAgIGJvb2wgKmNhcGFibGUpCj4+ICt7 Cj4+ICsJdWludDhfdCByeF9jYXBzWzNdOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwkqY2FwYWJs ZSA9IGZhbHNlOwo+PiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5k cC5hdXgsCj4+ICsJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAo+PiAr CQkJICAgICAgIHJ4X2NhcHMsIEhEQ1BfMl8yX1JYQ0FQU19MRU4pOwo+PiArCWlmIChyZXQgIT0g SERDUF8yXzJfUlhDQVBTX0xFTikKPj4gKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsK Pj4gKwo+PiArCWlmIChyeF9jYXBzWzBdID09IEhEQ1BfMl8yX1JYQ0FQU19WRVJTSU9OX1ZBTCAm Jgo+PiArCSAgICBIRENQXzJfMl9EUF9IRENQX0NBUEFCTEUocnhfY2Fwc1syXSkpCj4+ICsJCSpj YXBhYmxlID0gdHJ1ZTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMK Pj4gK2VudW0gaGRjcF9wcm90b2NvbCBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCh2b2lkKQo+PiAr ewo+PiArCXJldHVybiBIRENQX1BST1RPQ09MX0RQOwo+PiArfQo+PiArCj4+ICAgc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gaW50ZWxfZHBfaGRjcF9zaGltID0gewo+PiAgIAku d3JpdGVfYW5fYWtzdiA9IGludGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdiwKPj4gICAJLnJlYWRf YmtzdiA9IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2LAo+PiBAQCAtNTI4Nyw2ICs1NjM5LDEyIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2RwX2hkY3Bfc2hpbSA9 IHsKPj4gICAJLnRvZ2dsZV9zaWduYWxsaW5nID0gaW50ZWxfZHBfaGRjcF90b2dnbGVfc2lnbmFs bGluZywKPj4gICAJLmNoZWNrX2xpbmsgPSBpbnRlbF9kcF9oZGNwX2NoZWNrX2xpbmssCj4+ICAg CS5oZGNwX2NhcGFibGUgPSBpbnRlbF9kcF9oZGNwX2NhcGFibGUsCj4+ICsJLndyaXRlXzJfMl9t c2cgPSBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2csCj4+ICsJLnJlYWRfMl8yX21zZyA9IGludGVs X2RwX2hkY3AyX3JlYWRfbXNnLAo+PiArCS5jb25maWdfc3RyZWFtX3R5cGUgPSBpbnRlbF9kcF9o ZGNwMl9jb25maWdfc3RyZWFtX3R5cGUsCj4+ICsJLmNoZWNrXzJfMl9saW5rID0gaW50ZWxfZHBf aGRjcDJfY2hlY2tfbGluaywKPj4gKwkuaGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hkY3Ay X2NhcGFibGUsCj4+ICsJLmhkY3BfcHJvdG9jb2wgPSBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCwK Pj4gICB9Owo+PiAgIAo+PiAgIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wYW5lbF92ZGRfc2FuaXRp emUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK Pj4gaW5kZXggZGVmOGUzMjU1NzQyLi4wNDk2ZWJlYzI4N2IgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4+IEBAIC00NDQsNiArNDQ0LDEzIEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsK Pj4gICAJc3RydWN0IG1laV9oZGNwX2RhdGEgbWVpX2RhdGE7Cj4+ICAgCXN0cnVjdCBub3RpZmll cl9ibG9jayBtZWlfY2xkZXZfbmI7Cj4+ICAgCXN0cnVjdCBkZWxheWVkX3dvcmsgaGRjcDJfY2hl Y2tfd29yazsKPj4gKwo+PiArCS8qCj4+ICsJICogV29yayBxdWV1ZSB0byBzaWduYWwgdGhlIENQ X0lSUS4gVXNlZCBmb3IgdGhlIHdhaXRlcnMgdG8gcmVhZCB0aGUKPj4gKwkgKiBhdmFpbGFibGUg aW5mb3JtYXRpb24gZnJvbSBIRENQIERQIHNpbmsuCj4+ICsJICovCj4+ICsJd2FpdF9xdWV1ZV9o ZWFkX3QgY3BfaXJxX3F1ZXVlOwo+PiArCWF0b21pY190IGNwX2lycV9yZWN2ZWQ7Cj4+ICAgfTsK Pj4gICAKPj4gICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYwo+PiBpbmRleCBkMDYwZDdmMmUxM2IuLmQ1MDJiZGIzODBkMiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+PiBAQCAtODcwLDYgKzg3MCw4IEBAIGludCBpbnRlbF9o ZGNwX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgIAlpZiAoaGRj cDJfc3VwcG9ydGVkKQo+PiAgIAkJaW50ZWxfaGRjcDJfaW5pdChjb25uZWN0b3IpOwo+PiAgIAo+ PiArCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhkY3AtPmNwX2lycV9xdWV1ZSk7Cj4+ICsJYXRvbWlj X3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7Cj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4g ICAKPj4gQEAgLTE4NDksNCArMTg1MSw3IEBAIHZvaWQgaW50ZWxfaGRjcF9oYW5kbGVfY3BfaXJx KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAJCWludGVsX2hkY3BfY2hl Y2tfbGluayhjb25uZWN0b3IpOwo+PiAgIAllbHNlIGlmIChpbnRlbF9oZGNwMl9pbl9mb3JjZShj b25uZWN0b3IpKQo+PiAgIAkJaW50ZWxfaGRjcDJfY2hlY2tfbGluayhjb25uZWN0b3IpOwo+PiAr Cj4+ICsJYXRvbWljX3NldCgmY29ubmVjdG9yLT5oZGNwLmNwX2lycV9yZWN2ZWQsIDEpOwo+PiAr CXdha2VfdXBfYWxsKCZjb25uZWN0b3ItPmhkY3AuY3BfaXJxX3F1ZXVlKTsKPj4gICB9Cj4+IC0t IAo+PiAyLjcuNAo+PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==