From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E0E6110E184 for ; Fri, 13 Jan 2023 07:55:28 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "Sharma, Swati2" Date: Fri, 13 Jan 2023 07:55:19 +0000 Message-ID: <9f14e38db280c047e134434788d19fff47741440.camel@intel.com> References: <20230112073537.27890-1-swati2.sharma@intel.com> <20230112073537.27890-3-swati2.sharma@intel.com> In-Reply-To: <20230112073537.27890-3-swati2.sharma@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <0E13D1D16963D0409FC50E496A6FAE51@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v4 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: SGVsbG8gU3dhdGksCgpPbmUgY29tbWVudCBpbmxpbmUgYmVsb3cuIFNvcnJ5IGZvciBtaXNzaW5n IHRoYXQgb24gZmlyc3Qgcm91bmQuCgpPbiBUaHUsIDIwMjMtMDEtMTIgYXQgMTM6MDUgKzA1MzAs IFN3YXRpIFNoYXJtYSB3cm90ZToKPiBUbyBhZGQgZHNjIGNvbmN1cnJlbnQgdGVzdHMsIHRoZXNl IHdyYXBwZXIgZnVuY3Rpb25zIGNhbiBiZQo+IHJldXNlZC4gTGV0cyBjcmVhdGUgc2VwYXJhdGUg aGVscGVyIGZpbGUgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KPiAKPiB2MjogLXVzZSBvZiBT UERYIGxpY2VuY2UgcGxhY2Vob2xkZXIKPiDCoMKgwqAgLWFkZCBtb3JlIHBhcmFtZXRlcnMgdG8g ZXhwb3J0ZWQgZnVuY3Rpb25zIChKb3VuaSkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTd2F0aSBTaGFy bWEgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPgo+IC0tLQo+IMKgdGVzdHMvaTkxNS9rbXNfZHNj LmPCoMKgwqDCoMKgwqDCoCB8IDEzMyArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gLS0KPiDCoHRlc3RzL2k5MTUva21zX2RzY19oZWxwZXIuYyB8wqAgOTkgKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gwqB0ZXN0cy9pOTE1L2ttc19kc2NfaGVscGVyLmggfMKgIDM1ICsr KysrKysrKysKPiDCoHRlc3RzL21lc29uLmJ1aWxkwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEw ICsrLQo+IMKgNCBmaWxlcyBjaGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKSwgMTI1IGRlbGV0aW9u cygtKQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUva21zX2RzY19oZWxwZXIuYwo+ IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUva21zX2RzY19oZWxwZXIuaAo+IAo+IGRp ZmYgLS1naXQgYS90ZXN0cy9pOTE1L2ttc19kc2MuYyBiL3Rlc3RzL2k5MTUva21zX2RzYy5jCj4g aW5kZXggMzMwZmMwNTBiLi4yMjIzOTEyMmMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9rbXNf ZHNjLmMKPiArKysgYi90ZXN0cy9pOTE1L2ttc19kc2MuYwo+IEBAIC0yOSwyMiArMjksOCBAQAo+ IMKgICogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiDCoCAqCj4g wqAgKi8KPiAtI2luY2x1ZGUgImlndC5oIgo+IC0jaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gLSNp bmNsdWRlIDxlcnJuby5oPgo+IC0jaW5jbHVkZSA8Z2V0b3B0Lmg+Cj4gLSNpbmNsdWRlIDxtYXRo Lmg+Cj4gLSNpbmNsdWRlIDxzdGRpbnQuaD4KPiAtI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiAtI2lu Y2x1ZGUgPHN0cmluZ3MuaD4KPiAtI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IC0jaW5jbHVkZSA8c3Rk bGliLmg+Cj4gLSNpbmNsdWRlIDxzaWduYWwuaD4KPiAtI2luY2x1ZGUgPHRpbWUuaD4KPiAtI2lu Y2x1ZGUgPGZjbnRsLmg+Cj4gLSNpbmNsdWRlIDx0ZXJtaW9zLmg+Cj4gLQo+IC0jZGVmaW5lIEhE SVNQTEFZXzVLwqDCoMKgwqA1MTIwCj4gKwo+ICsjaW5jbHVkZSAia21zX2RzY19oZWxwZXIuaCIK PiDCoAo+IMKgSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgdG8gdmFsaWRhdGUgZGlzcGxheSBz dHJlYW0gY29tcHJlc3Npb24iKTsKPiDCoAo+IEBAIC02NCw5ICs1MCw2IEBAIHR5cGVkZWYgc3Ry dWN0IHsKPiDCoMKgwqDCoMKgwqDCoMKgZW51bSBwaXBlIHBpcGU7Cj4gwqB9IGRhdGFfdDsKPiDC oAo+IC1ib29sIGZvcmNlX2RzY19lbl9vcmlnOwo+IC1pbnQgZm9yY2VfZHNjX3Jlc3RvcmVfZmQg PSAtMTsKPiAtCj4gwqBjb25zdCBzdHJ1Y3Qgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBpbnQg Zm9ybWF0Owo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyIGZvcm1hdF9zdHJbMjBdOwo+IEBA IC04NCw1NiArNjcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWFudWFsKGNvbnN0IGNoYXIgKmV4 cGVjdGVkKQo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVidWdfaW50ZXJhY3RpdmVfbW9kZV9jaGVj aygiYWxsIiwgZXhwZWN0ZWQpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGZvcmNlX2RzY19l bmFibGUoZGF0YV90ICpkYXRhKQo+IC17Cj4gLcKgwqDCoMKgwqDCoMKgaW50IHJldDsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJGb3JjaW5nIERTQyBlbmFibGUgb24gJXNcbiIsIGRh dGEtPm91dHB1dC0+bmFtZSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0ID0gaWd0X2ZvcmNlX2RzY19l bmFibGUoZGF0YS0+ZHJtX2ZkLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YS0+b3V0cHV0LT5uYW1lKTsKPiAt wqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2YocmV0ID4gMCwgImRlYnVnZnNfd3JpdGUgZmFpbGVk Iik7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGZvcmNlX2RzY19lbmFibGVfYnBjKGRhdGFfdCAq ZGF0YSkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oGlndF9kZWJ1ZygiRm9yY2luZyBpbnB1dCBEU0MgQlBDIHRvICVkIG9uICVzXG4iLAo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLT5pbnB1dF9icGMsIGRhdGEtPm91dHB1 dC0+bmFtZSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0ID0gaWd0X2ZvcmNlX2RzY19lbmFibGVfYnBj KGRhdGEtPmRybV9mZCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YS0+b3V0cHV0LT5uYW1lLAo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLT5pbnB1dF9icGMpOwo+IC3CoMKgwqDCoMKgwqDCoGln dF9hc3NlcnRfZihyZXQgPiAwLCAiZGVidWdmc193cml0ZSBmYWlsZWQiKTsKPiAtfQo+IC0KPiAt c3RhdGljIHZvaWQgc2F2ZV9mb3JjZV9kc2NfZW4oZGF0YV90ICpkYXRhKQo+IC17Cj4gLcKgwqDC oMKgwqDCoMKgZm9yY2VfZHNjX2VuX29yaWcgPQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZ3RfaXNfZm9yY2VfZHNjX2VuYWJsZWQoZGF0YS0+ZHJtX2ZkLAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGF0YS0+b3V0cHV0LT5uYW1lKTsKPiAtwqDCoMKgwqDCoMKgwqBmb3JjZV9k c2NfcmVzdG9yZV9mZCA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9nZXRf ZHNjX2RlYnVnZnNfZmQoZGF0YS0+ZHJtX2ZkLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLT5v dXRwdXQtPm5hbWUpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoZm9yY2VfZHNjX3Jlc3Rv cmVfZmQgPj0gMCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHJlc3RvcmVfZm9yY2VfZHNjX2Vu KHZvaWQpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoZm9yY2VfZHNjX3Jlc3RvcmVfZmQgPCAw KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoGlndF9kZWJ1ZygiUmVzdG9yaW5nIERTQyBlbmFibGVcbiIpOwo+IC3CoMKgwqDCoMKg wqDCoGlndF9hc3NlcnQod3JpdGUoZm9yY2VfZHNjX3Jlc3RvcmVfZmQsIGZvcmNlX2RzY19lbl9v cmlnID8KPiAiMSIgOiAiMCIsIDEpID09IDEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBjbG9zZShm b3JjZV9kc2NfcmVzdG9yZV9mZCk7Cj4gLcKgwqDCoMKgwqDCoMKgZm9yY2VfZHNjX3Jlc3RvcmVf ZmQgPSAtMTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQga21zX2RzY19leGl0X2hhbmRsZXIoaW50 IHNpZykKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJlc3RvcmVfZm9yY2VfZHNjX2VuKCk7Cj4gLX0K PiAtCj4gwqBzdGF0aWMgZHJtTW9kZU1vZGVJbmZvICpnZXRfaGlnaHJlc19tb2RlKGlndF9vdXRw dXRfdCAqb3V0cHV0KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBkcm1Nb2RlQ29ubmVjdG9yICpj b25uZWN0b3IgPSBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3I7Cj4gQEAgLTE0NiwyNiArNzksNiBA QCBzdGF0aWMgZHJtTW9kZU1vZGVJbmZvCj4gKmdldF9oaWdocmVzX21vZGUoaWd0X291dHB1dF90 ICpvdXRwdXQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBoaWdoZXN0X21vZGU7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGJvb2wgY2hlY2tfZHNjX29uX2Nvbm5lY3RvcihkYXRhX3QgKmRhdGEpCj4g LXsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1dDsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgaWYgKCFpZ3RfaXNfZHNjX3N1cHBvcnRlZChkYXRhLT5kcm1f ZmQsIG91dHB1dC0+bmFtZSkpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0 X2RlYnVnKCJEU0Mgbm90IHN1cHBvcnRlZCBvbiBjb25uZWN0b3IgJXNcbiIsCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdXRwdXQtPm5hbWUpOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7Cj4gLcKgwqDCoMKg wqDCoMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKgwqBpZiAoIW91dHB1dF9pc19pbnRlcm5hbF9wYW5l bChvdXRwdXQpICYmCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgICFpZ3RfaXNfZmVjX3N1cHBvcnRl ZChkYXRhLT5kcm1fZmQsIG91dHB1dC0+bmFtZSkpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X2RlYnVnKCJEU0MgY2Fubm90IGJlIGVuYWJsZWQgd2l0aG91dCBGRUMgb24K PiAlc1xuIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG91dHB1dC0+bmFtZSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biBmYWxzZTsKPiAtwqDCoMKgwqDCoMKgwqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiB0 cnVlOwo+IC19Cj4gLQo+IMKgc3RhdGljIGJvb2wgY2hlY2tfYmlnX2pvaW5lcl9waXBlX2NvbnN0 cmFpbnQoZGF0YV90ICpkYXRhKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3Qg Km91dHB1dCA9IGRhdGEtPm91dHB1dDsKPiBAQCAtMTgxLDM0ICs5NCw2IEBAIHN0YXRpYyBib29s Cj4gY2hlY2tfYmlnX2pvaW5lcl9waXBlX2NvbnN0cmFpbnQoZGF0YV90ICpkYXRhKQo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gdHJ1ZTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgYm9vbCBjaGVja19n ZW4xMV9kcF9jb25zdHJhaW50KGRhdGFfdCAqZGF0YSkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoGln dF9vdXRwdXRfdCAqb3V0cHV0ID0gZGF0YS0+b3V0cHV0Owo+IC3CoMKgwqDCoMKgwqDCoHVpbnQz Ml90IGRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLT5kcm1fZmQpOwo+IC3CoMKgwqDC oMKgwqDCoGRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvciA9IG91dHB1dC0+Y29uZmlnLmNvbm5l Y3RvcjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgaWYgKChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBl ID09Cj4gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KSAmJgo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoCAoZGF0YS0+cGlwZSA9PSBQSVBFX0EpICYmIElTX0dFTjExKGRldmlkKSkgewo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVidWcoIkRTQyBub3Qgc3VwcG9ydGVk IG9uIHBpcGUgQSBvbiBleHRlcm5hbCBEUAo+IGluIGdlbjExIHBsYXRmb3Jtc1xuIik7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsKPiAtwqDCoMKgwqDCoMKg wqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOwo+IC19Cj4gLQo+IC0vKiBNYXgg RFNDIElucHV0IEJQQyBmb3IgSUNMIGlzIDEwIGFuZCBmb3IgVEdMKyBpcyAxMiAqLwo+IC1zdGF0 aWMgYm9vbCBjaGVja19nZW4xMV9icGNfY29uc3RyYWludChkYXRhX3QgKmRhdGEpCj4gLXsKPiAt wqDCoMKgwqDCoMKgwqB1aW50MzJfdCBkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS0+ ZHJtX2ZkKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgaWYgKElTX0dFTjExKGRldmlkKSAmJiBkYXRh LT5pbnB1dF9icGMgPT0gMTIpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0 X2RlYnVnKCJJbnB1dCBicGMgMTIgbm90IHN1cHBvcnRlZCBvbiBnZW4xMQo+IHBsYXRmb3Jtc1xu Iik7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsKPiAtwqDC oMKgwqDCoMKgwqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOwo+IC19Cj4gLQo+ IMKgc3RhdGljIHZvaWQgdGVzdF9jbGVhbnVwKGRhdGFfdCAqZGF0YSkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQgPSBkYXRhLT5vdXRwdXQ7Cj4gQEAgLTIzNSwx MiArMTIwLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9kaXNwbGF5KGRhdGFfdCAqZGF0YSwgZW51 bQo+IGRzY190ZXN0X3R5cGUgdGVzdF90eXBlLCB1bnNpZ25lZAo+IMKgwqDCoMKgwqDCoMKgwqBp Z3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rl YnVnKCJEU0MgaXMgc3VwcG9ydGVkIG9uICVzXG4iLCBkYXRhLT5vdXRwdXQtPm5hbWUpOwo+IC3C oMKgwqDCoMKgwqDCoHNhdmVfZm9yY2VfZHNjX2VuKGRhdGEpOwo+IC3CoMKgwqDCoMKgwqDCoGZv cmNlX2RzY19lbmFibGUoZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgc2F2ZV9mb3JjZV9kc2NfZW4o ZGF0YS0+ZHJtX2ZkLCBkYXRhLT5vdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoGZvcmNlX2RzY19l bmFibGUoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5vdXRwdXQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDC oGlmICh0ZXN0X3R5cGUgPT0gVEVTVF9EU0NfQlBDKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfZGVidWcoIlRyeWluZyB0byBzZXQgaW5wdXQgQlBDIHRvICVkXG4iLCBk YXRhLQo+ID5pbnB1dF9icGMpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3Jj ZV9kc2NfZW5hYmxlX2JwYyhkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Zm9yY2VfZHNjX2VuYWJsZV9icGMoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5vdXRwdXQsCj4gZGF0YS0+ aW5wdXRfYnBjKTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGln dF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBkYXRhLT5waXBlKTsKPiBAQCAtMjc5LDcgKzE2NCw3 IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9kaXNwbGF5KGRhdGFfdCAqZGF0YSwgZW51bQo+IGRzY190 ZXN0X3R5cGUgdGVzdF90eXBlLCB1bnNpZ25lZAo+IMKgwqDCoMKgwqDCoMKgwqByZXN0b3JlX2Zv cmNlX2RzY19lbigpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVidWcoIlJlc2V0IGNvbXByZXNz aW9uIEJQQ1xuIik7Cj4gwqDCoMKgwqDCoMKgwqDCoGRhdGEtPmlucHV0X2JwYyA9IDA7Cj4gLcKg wqDCoMKgwqDCoMKgZm9yY2VfZHNjX2VuYWJsZV9icGMoZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKg Zm9yY2VfZHNjX2VuYWJsZV9icGMoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5vdXRwdXQsIGRhdGEtCj4g PmlucHV0X2JwYyk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9mKGVuYWJsZWQs Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiRGVmYXVsdCBEU0Mg ZW5hYmxlIGZhaWxlZCBvbiBjb25uZWN0b3I6ICVzCj4gcGlwZTogJXNcbiIsCj4gQEAgLTMwMiwx MyArMTg3LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZHNjKGRhdGFfdCAqZGF0YSwgZW51bQo+IGRz Y190ZXN0X3R5cGUgdGVzdF90eXBlLCBpbnQgYnBjLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGF0YS0+b3V0cHV0ID0gb3V0cHV0Owo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGF0YS0+cGlwZSA9IHBpcGU7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCFjaGVja19kc2Nfb25fY29ubmVjdG9yKGRhdGEpKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWNoZWNrX2RzY19vbl9jb25uZWN0b3IoZGF0YS0+ZHJt X2ZkLCBkYXRhLQo+ID5vdXRwdXQpKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICghY2hlY2tfZ2VuMTFfZHBfY29uc3RyYWludChkYXRhKSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjaGVja19nZW4xMV9kcF9jb25zdHJhaW50KGRhdGEt PmRybV9mZCwgZGF0YS0KPiA+b3V0cHV0LCBkYXRhLT5waXBlKSkKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiDCoAo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWNoZWNrX2dlbjExX2JwY19jb25zdHJhaW50KGRh dGEpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWNoZWNrX2dlbjExX2Jw Y19jb25zdHJhaW50KGRhdGEtPmRybV9mZCwgZGF0YS0KPiA+b3V0cHV0LCBkYXRhLT5pbnB1dF9i cGMpKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNv bnRpbnVlOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWNoZWNr X2JpZ19qb2luZXJfcGlwZV9jb25zdHJhaW50KGRhdGEpKQo+IGRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2ttc19kc2NfaGVscGVyLmMKPiBiL3Rlc3RzL2k5MTUva21zX2RzY19oZWxwZXIuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwLi4zNzM0YjM0NDQKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5jCj4gQEAgLTAsMCArMSw5 OSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCj4gKy8qCj4gKyAqIENv cHlyaWdodCDCqSAyMDIzIEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg Imttc19kc2NfaGVscGVyLmgiCj4gKwo+ICtib29sIGZvcmNlX2RzY19lbl9vcmlnOwo+ICtpbnQg Zm9yY2VfZHNjX3Jlc3RvcmVfZmQgPSAtMTsKClRoZXNlIHNob3VsZCBiZSBzdGF0aWMuCgo+ICsK PiArdm9pZCBmb3JjZV9kc2NfZW5hYmxlKGludCBkcm1mZCwgaWd0X291dHB1dF90ICpvdXRwdXQp Cj4gK3sKPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rf ZGVidWcoIkZvcmNpbmcgRFNDIGVuYWJsZSBvbiAlc1xuIiwgb3V0cHV0LT5uYW1lKTsKPiArwqDC oMKgwqDCoMKgwqByZXQgPSBpZ3RfZm9yY2VfZHNjX2VuYWJsZShkcm1mZCwgb3V0cHV0LT5uYW1l KTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2YocmV0ID4gMCwgImRlYnVnZnNfd3JpdGUg ZmFpbGVkIik7Cj4gK30KPiArCj4gK3ZvaWQgZm9yY2VfZHNjX2VuYWJsZV9icGMoaW50IGRybWZk LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaW50Cj4gaW5wdXRfYnBjKQo+ICt7Cj4gK8KgwqDCoMKg wqDCoMKgaW50IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJGb3JjaW5nIGlu cHV0IERTQyBCUEMgdG8gJWQgb24gJXNcbiIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlucHV0X2JwYywgb3V0cHV0LT5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSBp Z3RfZm9yY2VfZHNjX2VuYWJsZV9icGMoZHJtZmQsIG91dHB1dC0+bmFtZSwKPiBpbnB1dF9icGMp Owo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZihyZXQgPiAwLCAiZGVidWdmc193cml0ZSBm YWlsZWQiKTsKPiArfQo+ICsKPiArdm9pZCBzYXZlX2ZvcmNlX2RzY19lbihpbnQgZHJtZmQsIGln dF9vdXRwdXRfdCAqb3V0cHV0KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgZm9yY2VfZHNjX2VuX29y aWcgPQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfaXNfZm9yY2VfZHNjX2Vu YWJsZWQoZHJtZmQsIG91dHB1dC0+bmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgZm9yY2VfZHNjX3Jl c3RvcmVfZmQgPQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZ2V0X2RzY19k ZWJ1Z2ZzX2ZkKGRybWZkLCBvdXRwdXQtPm5hbWUpOwo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3Nl cnQoZm9yY2VfZHNjX3Jlc3RvcmVfZmQgPj0gMCk7Cj4gK30KPiArCj4gK3ZvaWQgcmVzdG9yZV9m b3JjZV9kc2NfZW4odm9pZCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlmIChmb3JjZV9kc2NfcmVz dG9yZV9mZCA8IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiAr Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJSZXN0b3JpbmcgRFNDIGVuYWJsZVxuIik7Cj4g K8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydCh3cml0ZShmb3JjZV9kc2NfcmVzdG9yZV9mZCwgZm9y Y2VfZHNjX2VuX29yaWcgPwo+ICIxIiA6ICIwIiwgMSkgPT0gMSk7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoGNsb3NlKGZvcmNlX2RzY19yZXN0b3JlX2ZkKTsKPiArwqDCoMKgwqDCoMKgwqBmb3JjZV9k c2NfcmVzdG9yZV9mZCA9IC0xOwo+ICt9Cj4gKwo+ICt2b2lkIGttc19kc2NfZXhpdF9oYW5kbGVy KGludCBzaWcpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqByZXN0b3JlX2ZvcmNlX2RzY19lbigpOwo+ ICt9Cj4gKwo+ICtib29sIGNoZWNrX2RzY19vbl9jb25uZWN0b3IoaW50IGRybWZkLCBpZ3Rfb3V0 cHV0X3QgKm91dHB1dCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlmICghaWd0X2lzX2RzY19zdXBw b3J0ZWQoZHJtZmQsIG91dHB1dC0+bmFtZSkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWd0X2RlYnVnKCJEU0Mgbm90IHN1cHBvcnRlZCBvbiBjb25uZWN0b3IgJXNcbiIsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdXRwdXQt Pm5hbWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7Cj4g K8KgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoIW91dHB1dF9pc19pbnRl cm5hbF9wYW5lbChvdXRwdXQpICYmCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICFpZ3RfaXNfZmVj X3N1cHBvcnRlZChkcm1mZCwgb3V0cHV0LT5uYW1lKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfZGVidWcoIkRTQyBjYW5ub3QgYmUgZW5hYmxlZCB3aXRob3V0IEZFQyBv bgo+ICVzXG4iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgb3V0cHV0LT5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIGZhbHNlOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IHRydWU7Cj4gK30KPiArCj4gK2Jvb2wgY2hlY2tfZ2VuMTFfZHBfY29uc3RyYWludChpbnQgZHJt ZmQsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtCj4gcGlwZSBwaXBlKQo+ICt7Cj4gK8KgwqDC oMKgwqDCoMKgdWludDMyX3QgZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRybWZkKTsKPiAr wqDCoMKgwqDCoMKgwqBkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3IgPSBvdXRwdXQtPmNvbmZp Zy5jb25uZWN0b3I7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmICgoY29ubmVjdG9yLT5jb25uZWN0 b3JfdHlwZSA9PQo+IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkgJiYKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgKHBpcGUgPT0gUElQRV9BKSAmJiBJU19HRU4xMShkZXZpZCkpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJEU0Mgbm90IHN1cHBvcnRl ZCBvbiBwaXBlIEEgb24gZXh0ZXJuYWwgRFAKPiBpbiBnZW4xMSBwbGF0Zm9ybXNcbiIpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7Cj4gK8KgwqDCoMKgwqDC oMKgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArLyogTWF4 IERTQyBJbnB1dCBCUEMgZm9yIElDTCBpcyAxMCBhbmQgZm9yIFRHTCsgaXMgMTIgKi8KPiArYm9v bCBjaGVja19nZW4xMV9icGNfY29uc3RyYWludChpbnQgZHJtZmQsIGlndF9vdXRwdXRfdCAqb3V0 cHV0LCBpbnQKPiBpbnB1dF9icGMpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBkZXZp ZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZHJtZmQpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAo SVNfR0VOMTEoZGV2aWQpICYmIGlucHV0X2JwYyA9PSAxMikgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfZGVidWcoIklucHV0IGJwYyAxMiBub3Qgc3VwcG9ydGVkIG9uIGdl bjExCj4gcGxhdGZvcm1zXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIGZhbHNlOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IHRydWU7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5oCj4g Yi90ZXN0cy9pOTE1L2ttc19kc2NfaGVscGVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMC4uZmU0NzlkYWM0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rlc3RzL2k5 MTUva21zX2RzY19oZWxwZXIuaAo+IEBAIC0wLDAgKzEsMzUgQEAKPiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVCAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAyMiBJbnRlbCBD b3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgSUdUX0tNU19EU0NfSEVMUEVSX0gKPiAr I2RlZmluZSBJR1RfS01TX0RTQ19IRUxQRVJfSAo+ICsKPiArI2luY2x1ZGUgImlndC5oIgo+ICsj aW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8 Z2V0b3B0Lmg+Cj4gKyNpbmNsdWRlIDxtYXRoLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiAr I2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiArI2luY2x1ZGUgPHN0cmluZ3MuaD4KPiArI2luY2x1ZGUg PHVuaXN0ZC5oPgo+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzaWduYWwuaD4K PiArI2luY2x1ZGUgPHRpbWUuaD4KPiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4gKyNpbmNsdWRlIDx0 ZXJtaW9zLmg+Cj4gKwo+ICsjZGVmaW5lIEhESVNQTEFZXzVLwqDCoMKgwqA1MTIwCj4gKwo+ICt2 b2lkIGZvcmNlX2RzY19lbmFibGUoaW50IGRybWZkLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCk7Cj4g K3ZvaWQgZm9yY2VfZHNjX2VuYWJsZV9icGMoaW50IGRybWZkLCBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwgaW50Cj4gaW5wdXRfYnBjKTsKPiArdm9pZCBzYXZlX2ZvcmNlX2RzY19lbihpbnQgZHJtZmQs IGlndF9vdXRwdXRfdCAqb3V0cHV0KTsKPiArdm9pZCByZXN0b3JlX2ZvcmNlX2RzY19lbih2b2lk KTsKPiArdm9pZCBrbXNfZHNjX2V4aXRfaGFuZGxlcihpbnQgc2lnKTsKPiArYm9vbCBjaGVja19k c2Nfb25fY29ubmVjdG9yKGludCBkcm1mZCwgaWd0X291dHB1dF90ICpvdXRwdXQpOwo+ICtib29s IGNoZWNrX2dlbjExX2RwX2NvbnN0cmFpbnQoaW50IGRybWZkLCBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwgZW51bQo+IHBpcGUgcGlwZSk7Cj4gK2Jvb2wgY2hlY2tfZ2VuMTFfYnBjX2NvbnN0cmFpbnQo aW50IGRybWZkLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaW50Cj4gaW5wdXRfYnBjKTsKPiArCj4g KyNlbmRpZgo+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1 aWxkCj4gaW5kZXggY2I0Mjg5OTg1Li5lNjNkNjIyNDkgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvbWVz b24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNvbi5idWlsZAo+IEBAIC0yMjEsNyArMjIxLDYgQEAg aTkxNV9wcm9ncyA9IFsKPiDCoMKgwqDCoMKgwqDCoMKgJ2ttc19jY3MnLAo+IMKgwqDCoMKgwqDC oMKgwqAna21zX2NkY2xrJywKPiDCoMKgwqDCoMKgwqDCoMKgJ2ttc19kcmF3X2NyYycsCj4gLcKg wqDCoMKgwqDCoMKgJ2ttc19kc2MnLAo+IMKgwqDCoMKgwqDCoMKgwqAna21zX2ZiY29uX2ZidCcs Cj4gwqDCoMKgwqDCoMKgwqDCoCdrbXNfZmVuY2VfcGluX2xlYWsnLAo+IMKgwqDCoMKgwqDCoMKg wqAna21zX2ZsaXBfc2NhbGVkX2NyYycsCj4gQEAgLTQyNCw2ICs0MjMsMTUgQEAgdGVzdF9leGVj dXRhYmxlcyArPSBleGVjdXRhYmxlKCdrbXNfY29sb3InLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg IGluc3RhbGwgOiB0cnVlKQo+IMKgdGVzdF9saXN0ICs9ICdrbXNfY29sb3InCj4gwqAKPiArdGVz dF9leGVjdXRhYmxlcyArPSBleGVjdXRhYmxlKCdrbXNfZHNjJywKPiArwqDCoMKgwqDCoMKgwqDC oMKgIFsgam9pbl9wYXRocygnaTkxNScsICdrbXNfZHNjLmMnKSwgam9pbl9wYXRocyAoJ2k5MTUn LAo+ICdrbXNfZHNjX2hlbHBlci5jJyldLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqAgZGVwZW5kZW5j aWVzIDogdGVzdF9kZXBzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqAgaW5zdGFsbF9kaXIgOiBsaWJl eGVjZGlyLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqAgaW5zdGFsbF9ycGF0aCA6IGxpYmV4ZWNkaXJf cnBhdGhkaXIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBpbnN0YWxsIDogdHJ1ZSkKPiArdGVzdF9s aXN0ICs9ICdrbXNfZHNjJwo+ICsKPiArCj4gwqBpZiBjaGFtZWxpdW0uZm91bmQoKQo+IMKgwqDC oMKgwqDCoMKgIHRlc3RfZXhlY3V0YWJsZXMgKz0gZXhlY3V0YWJsZSgna21zX2NvbG9yX2NoYW1l bGl1bScsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBbICdjaGFtZWxpdW0va21zX2NvbG9yX2NoYW1lbGl1bS5jJywKPiAna21zX2Nv bG9yX2hlbHBlci5jJyBdLAoK