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 C3AD26E9A2 for ; Fri, 25 Oct 2019 11:22:46 +0000 (UTC) Date: Fri, 25 Oct 2019 14:22:43 +0300 From: Petri Latvala Message-ID: <20191025112243.GE25209@platvala-desk.ger.corp.intel.com> References: <20191024123114.30474-1-arkadiusz.hiler@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191024123114.30474-1-arkadiusz.hiler@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t] lib/igt_list: Update, clean-up and document igt_list 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: Arkadiusz Hiler Cc: igt-dev@lists.freedesktop.org List-ID: T24gVGh1LCBPY3QgMjQsIDIwMTkgYXQgMDM6MzE6MTRQTSArMDMwMCwgQXJrYWRpdXN6IEhpbGVy IHdyb3RlOgo+IE91ciBsaXN0IHdhcyBzb21ldGhpbmcgYmV0d2VlbiBXYXlsYW5kIGFuZCBMaW51 eCBLZXJuZWwgbGlzdAo+IGltcGxlbWVudGF0aW9ucywgcmlnaHQgaW4gdGhlIHVuY2FubnkgdmFs bGV5Lgo+IAo+IE9uIHRvcCBvZiB0aGF0IGl0IGZhbHNlbHkgY2xhaW1lZCB0aGF0IGl0J3MgYSBz dHJhaWdodCBjb3B5IGZyb20gdGhlCj4gV2F5bGFuZCBwcm9qZWN0Lgo+IAo+IExldCdzIG1ha2Ug b3VyIGltcGwgbW9yZSBha2luIHRvIHRoZSBrZXJuZWwgb25lIHRvIGVhc2UgdGhlIGNvZ25pdGl2 ZQo+IGRpc3NvbmFuY2UgZm9yIHRoZSBkZXZlbG9wZXJzIHdvcmtpbmcgb24gYWxsIHRob3NlIHBy b2plY3RzLgo+IAo+IFRoaXMgcGF0Y2g6Cj4gICogbWltaWNzIHRoZSBjdXJyZW50IGtlcm5lbCBs aXN0IGludGVyZmFjZQo+ICAqIHNlcGFyYXRlcyBJR1QgaGVscGVycyBpbiB0aGUgc291cmNlIGZp bGVzCj4gICogYWRkcyBicmllZiBleHBsYW5hdGlvbiBhbmQgY29kZSBleGFtcGxlIGZvciBpZ3Qt ZG9jCj4gICogaW50cm9kdWNlcyBpZ3RfbGlzdC5jIGFzIHN0YXRpYyBpbmxpbmVzIGFyZSBub3Qg dmlzaWJsZSBpbiB0aGUgZG9jcwo+IAo+IHYyOiBtaW1pYyB0aGUga2VybmVsIGluc3RlYWQgb2Yg d2F5bGFuZCAoQ2hyaXMpCj4gICAgIC0gX2hlYWQgc3VmZml4IGZvciB0aGUgc2VudGluZWwvbGlu ayBzdHJ1Y3QKPiAgICAgLSBfZW50cnlfIGluIGl0ZXJhdG9yIG5hbWVzIHRoYXQgZ28gb3ZlciB0 aGUgZWxlbWVudHMKPiAKPiBDYzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5j b20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IFNpZ25l ZC1vZmYtYnk6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4KPiAt LS0KPiAgYmVuY2htYXJrcy9nZW1fd3NpbS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2 ICstCj4gIC4uLi9pZ3QtZ3B1LXRvb2xzL2lndC1ncHUtdG9vbHMtZG9jcy54bWwgICAgICB8ICAg MSArCj4gIGxpYi9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArCj4gIGxpYi9pZ3RfY2hhbWVsaXVtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg OCArLQo+ICBsaWIvaWd0X2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDggKy0KPiAgbGliL2lndF9kdW1teWxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEwICstCj4gIGxpYi9pZ3RfZHVtbXlsb2FkLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQo+ICBsaWIvaWd0X2ttb2QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTAgKy0KPiAgbGliL2lndF9rbW9kLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA0ICstCj4gIGxpYi9pZ3RfbGlzdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA2NiArKysrKysrCj4gIGxpYi9pZ3RfbGlzdC5oICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDE2NCArKysrKysrKystLS0tLS0tLS0KPiAgbGliL21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgdGVzdHMvdmM0X3B1cmdlYWJsZV9i by5jICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICstLQo+ICAxMyBmaWxlcyBjaGFuZ2VkLCAx ODkgaW5zZXJ0aW9ucygrKSwgMTIxIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg bGliL2lndF9saXN0LmMKPiAKPiBkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIv YmVuY2htYXJrcy9nZW1fd3NpbS5jCj4gaW5kZXggODdmODczYjAuLmQzYzg4NjE1IDEwMDY0NAo+ IC0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYwo+ICsrKyBiL2JlbmNobWFya3MvZ2VtX3dzaW0u Ywo+IEBAIC0xNDIsNyArMTQyLDcgQEAgc3RydWN0IHdfc3RlcAo+ICAKPiAgCS8qIEltcGxlbWVu dGF0aW9uIGRldGFpbHMgKi8KPiAgCXVuc2lnbmVkIGludCBpZHg7Cj4gLQlzdHJ1Y3QgaWd0X2xp c3QgcnFfbGluazsKPiArCXN0cnVjdCBpZ3RfbGlzdF9oZWFkIHJxX2xpbms7Cj4gIAl1bnNpZ25l ZCBpbnQgcmVxdWVzdDsKPiAgCXVuc2lnbmVkIGludCBwcmVlbXB0X3VzOwo+ICAKPiBAQCAtMjEz LDcgKzIxMyw3IEBAIHN0cnVjdCB3b3JrbG9hZAo+ICAJdW5zaWduZWQgbG9uZyBxZF9zdW1bTlVN X0VOR0lORVNdOwo+ICAJdW5zaWduZWQgbG9uZyBucl9iYltOVU1fRU5HSU5FU107Cj4gIAo+IC0J c3RydWN0IGlndF9saXN0IHJlcXVlc3RzW05VTV9FTkdJTkVTXTsKPiArCXN0cnVjdCBpZ3RfbGlz dF9oZWFkIHJlcXVlc3RzW05VTV9FTkdJTkVTXTsKPiAgCXVuc2lnbmVkIGludCBucmVxdWVzdFtO VU1fRU5HSU5FU107Cj4gIAo+ICAJc3RydWN0IHdvcmtsb2FkICpnbG9iYWxfd3JrOwo+IEBAIC0x MDYxLDcgKzEwNjEsNyBAQCBjbG9uZV93b3JrbG9hZChzdHJ1Y3Qgd29ya2xvYWQgKl93cmspCj4g IAl9Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IE5VTV9FTkdJTkVTOyBpKyspCj4gLQkJaWd0X2xp c3RfaW5pdCgmd3JrLT5yZXF1ZXN0c1tpXSk7Cj4gKwkJSUdUX0lOSVRfTElTVF9IRUFEKCZ3cmst PnJlcXVlc3RzW2ldKTsKPiAgCj4gIAlyZXR1cm4gd3JrOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2Rv Y3MvcmVmZXJlbmNlL2lndC1ncHUtdG9vbHMvaWd0LWdwdS10b29scy1kb2NzLnhtbCBiL2RvY3Mv cmVmZXJlbmNlL2lndC1ncHUtdG9vbHMvaWd0LWdwdS10b29scy1kb2NzLnhtbAo+IGluZGV4IGFj ODMyNzJmLi4zZjE0ZDdiZSAxMDA2NDQKPiAtLS0gYS9kb2NzL3JlZmVyZW5jZS9pZ3QtZ3B1LXRv b2xzL2lndC1ncHUtdG9vbHMtZG9jcy54bWwKPiArKysgYi9kb2NzL3JlZmVyZW5jZS9pZ3QtZ3B1 LXRvb2xzL2lndC1ncHUtdG9vbHMtZG9jcy54bWwKPiBAQCAtMzEsNiArMzEsNyBAQAo+ICAgICAg PHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF9ndnQueG1sIi8+Cj4gICAgICA8eGk6aW5jbHVkZSBo cmVmPSJ4bWwvaWd0X2ttb2QueG1sIi8+Cj4gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0 X2ttcy54bWwiLz4KPiArICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfbGlzdC54bWwiLz4K PiAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfcG0ueG1sIi8+Cj4gICAgICA8eGk6aW5j bHVkZSBocmVmPSJ4bWwvaWd0X3ByaW1lcy54bWwiLz4KPiAgICAgIDx4aTppbmNsdWRlIGhyZWY9 InhtbC9pZ3RfcmFuZC54bWwiLz4KPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMg Yi9saWIvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDM0ZTBjMDEyLi4xYjU4YjZkMCAxMDA2NDQK PiAtLS0gYS9saWIvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2Vz Cj4gQEAgLTQxLDYgKzQxLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCj4gIAlpZ3RfaGFsZmZs b2F0LmgJCVwKPiAgCWlndF9pbmZvZnJhbWUuYwkJXAo+ICAJaWd0X2luZm9mcmFtZS5oCQlcCj4g KwlpZ3RfbGlzdC5jCQlcCj4gKwlpZ3RfbGlzdC5oCQlcCj4gIAlpZ3RfbWF0cml4LmMJCVwKPiAg CWlndF9tYXRyaXguaAkJXAo+ICAJaWd0X3ByaW1lcy5jCQlcCj4gZGlmZiAtLWdpdCBhL2xpYi9p Z3RfY2hhbWVsaXVtLmMgYi9saWIvaWd0X2NoYW1lbGl1bS5jCj4gaW5kZXggMWIwM2ExMDMuLjk5 NzFmNTFkIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKPiArKysgYi9saWIvaWd0 X2NoYW1lbGl1bS5jCj4gQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IGNoYW1lbGl1bV9lZGlkIHsK PiAgCXN0cnVjdCBlZGlkICpiYXNlOwo+ICAJc3RydWN0IGVkaWQgKnJhd1tDSEFNRUxJVU1fTUFY X1BPUlRTXTsKPiAgCWludCBpZHNbQ0hBTUVMSVVNX01BWF9QT1JUU107Cj4gLQlzdHJ1Y3QgaWd0 X2xpc3QgbGluazsKPiArCXN0cnVjdCBpZ3RfbGlzdF9oZWFkIGxpbms7Cj4gIH07Cj4gIAo+ICBz dHJ1Y3QgY2hhbWVsaXVtX3BvcnQgewo+IEBAIC0xMjIsNyArMTIyLDcgQEAgc3RydWN0IGNoYW1l bGl1bSB7Cj4gIAo+ICAJaW50IGRybV9mZDsKPiAgCj4gLQlzdHJ1Y3QgaWd0X2xpc3QgZWRpZHM7 Cj4gKwlzdHJ1Y3QgaWd0X2xpc3RfaGVhZCBlZGlkczsKPiAgCXN0cnVjdCBjaGFtZWxpdW1fcG9y dCBwb3J0c1tDSEFNRUxJVU1fTUFYX1BPUlRTXTsKPiAgCWludCBwb3J0X2NvdW50Owo+ICB9Owo+ IEBAIC0yMzM2LDcgKzIzMzYsNyBAQCBzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW1faW5pdChp bnQgZHJtX2ZkKQo+ICAKPiAgCW1lbXNldChjaGFtZWxpdW0sIDAsIHNpemVvZigqY2hhbWVsaXVt KSk7Cj4gIAljaGFtZWxpdW0tPmRybV9mZCA9IGRybV9mZDsKPiAtCWlndF9saXN0X2luaXQoJmNo YW1lbGl1bS0+ZWRpZHMpOwo+ICsJSUdUX0lOSVRfTElTVF9IRUFEKCZjaGFtZWxpdW0tPmVkaWRz KTsKPiAgCj4gIAkvKiBTZXR1cCB0aGUgbGlieG1scnBjIGNvbnRleHQgKi8KPiAgCXhtbHJwY19l bnZfaW5pdCgmY2hhbWVsaXVtLT5lbnYpOwo+IEBAIC0yMzg4LDcgKzIzODgsNyBAQCB2b2lkIGNo YW1lbGl1bV9kZWluaXQoc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtKQo+ICAJCWNoYW1lbGl1 bV9wbHVnKGNoYW1lbGl1bSwgJmNoYW1lbGl1bS0+cG9ydHNbaV0pOwo+ICAKPiAgCS8qIERlc3Ry b3kgYW55IEVESURzIHdlIGNyZWF0ZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGxlYWsgdGhlbSAq Lwo+IC0JaWd0X2xpc3RfZm9yX2VhY2hfc2FmZShwb3MsIHRtcCwgJmNoYW1lbGl1bS0+ZWRpZHMs IGxpbmspIHsKPiArCWlndF9saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCB0bXAsICZjaGFt ZWxpdW0tPmVkaWRzLCBsaW5rKSB7Cj4gIAkJZm9yIChpID0gMDsgaSA8IENIQU1FTElVTV9NQVhf UE9SVFM7IGkrKykgewo+ICAJCQlpZiAocG9zLT5pZHNbaV0pCj4gIAkJCQljaGFtZWxpdW1fZGVz dHJveV9lZGlkKGNoYW1lbGl1bSwgcG9zLT5pZHNbaV0pOwo+IGRpZmYgLS1naXQgYS9saWIvaWd0 X2NvcmUuYyBiL2xpYi9pZ3RfY29yZS5jCj4gaW5kZXggN2JkNWFmYTUuLjg2Y2U4YWY5IDEwMDY0 NAo+IC0tLSBhL2xpYi9pZ3RfY29yZS5jCj4gKysrIGIvbGliL2lndF9jb3JlLmMKPiBAQCAtMjc4 LDEwICsyNzgsMTAgQEAgc3RhdGljIGNoYXIgX19jdXJyZW50X2Rlc2NyaXB0aW9uWzUxMl07Cj4g IAo+ICBzdHJ1Y3QgZGVzY3JpcHRpb25fbm9kZSB7Cj4gIAljaGFyIGRlc2Nbc2l6ZW9mKF9fY3Vy cmVudF9kZXNjcmlwdGlvbildOwo+IC0Jc3RydWN0IGlndF9saXN0IGxpbms7Cj4gKwlzdHJ1Y3Qg aWd0X2xpc3RfaGVhZCBsaW5rOwo+ICB9Owo+ICAKPiAtc3RhdGljIHN0cnVjdCBpZ3RfbGlzdCBz dWJncm91cF9kZXNjcmlwdGlvbnM7Cj4gK3N0YXRpYyBzdHJ1Y3QgaWd0X2xpc3RfaGVhZCBzdWJn cm91cF9kZXNjcmlwdGlvbnM7Cj4gIAo+ICAKPiAgYm9vbCBfX2lndF9wbGFpbl9vdXRwdXQgPSBm YWxzZTsKPiBAQCAtNzk3LDcgKzc5Nyw3IEBAIHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICph cmdjLCBjaGFyICoqYXJndiwKPiAgCWludCByZXQgPSAwOwo+ICAKPiAgCWNvbW1vbl9pbml0X2Vu digpOwo+IC0JaWd0X2xpc3RfaW5pdCgmc3ViZ3JvdXBfZGVzY3JpcHRpb25zKTsKPiArCUlHVF9J TklUX0xJU1RfSEVBRCgmc3ViZ3JvdXBfZGVzY3JpcHRpb25zKTsKPiAgCj4gIAljb21tYW5kX3N0 ciA9IGFyZ3ZbMF07Cj4gIAlpZiAoc3RycmNocihjb21tYW5kX3N0ciwgJy8nKSkKPiBAQCAtMTA2 OCw3ICsxMDY4LDcgQEAgc3RhdGljIHZvaWQgX19pZ3RfcHJpbnRfZGVzY3JpcHRpb24oY29uc3Qg Y2hhciAqc3VidGVzdF9uYW1lLCBjb25zdCBjaGFyICpmaWxlLAo+ICAKPiAgCXByaW50ZigiU1VC ICVzICVzOiVkOlxuIiwgc3VidGVzdF9uYW1lLCBmaWxlLCBsaW5lKTsKPiAgCj4gLQlpZ3RfbGlz dF9mb3JfZWFjaChkZXNjLCAmc3ViZ3JvdXBfZGVzY3JpcHRpb25zLCBsaW5rKSB7Cj4gKwlpZ3Rf bGlzdF9mb3JfZWFjaF9lbnRyeShkZXNjLCAmc3ViZ3JvdXBfZGVzY3JpcHRpb25zLCBsaW5rKSB7 Cj4gIAkJcHJpbnRfbGluZV93cmFwcGluZyhpbmRlbnQsIGRlc2MtPmRlc2MpOwo+ICAJCXByaW50 ZigiXG4iKTsKPiAgCQloYXNfZG9jID0gdHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1t eWxvYWQuYyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmMKPiBpbmRleCA2MDYwODc4ZC4uYjllMjM5ZGIg MTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9kdW1teWxvYWQuYwo+ICsrKyBiL2xpYi9pZ3RfZHVtbXls b2FkLmMKPiBAQCAtNjUsNyArNjUsNyBAQAo+ICBzdGF0aWMgY29uc3QgaW50IEJBVENIX1NJWkUg PSA0MDk2Owo+ICBzdGF0aWMgY29uc3QgaW50IExPT1BfU1RBUlRfT0ZGU0VUID0gNjQ7Cj4gIAo+ IC1zdGF0aWMgSUdUX0xJU1Qoc3Bpbl9saXN0KTsKPiArc3RhdGljIElHVF9MSVNUX0hFQUQoc3Bp bl9saXN0KTsKPiAgc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBsaXN0X2xvY2sgPSBQVEhSRUFEX01V VEVYX0lOSVRJQUxJWkVSOwo+ICAKPiAgc3RhdGljIGludAo+IEBAIC00NjQsNyArNDY0LDcgQEAg dm9pZCBpZ3RfdGVybWluYXRlX3NwaW5zKHZvaWQpCj4gIAlzdHJ1Y3QgaWd0X3NwaW4gKml0ZXI7 Cj4gIAo+ICAJcHRocmVhZF9tdXRleF9sb2NrKCZsaXN0X2xvY2spOwo+IC0JaWd0X2xpc3RfZm9y X2VhY2goaXRlciwgJnNwaW5fbGlzdCwgbGluaykKPiArCWlndF9saXN0X2Zvcl9lYWNoX2VudHJ5 KGl0ZXIsICZzcGluX2xpc3QsIGxpbmspCj4gIAkJaWd0X3NwaW5fZW5kKGl0ZXIpOwo+ICAJcHRo cmVhZF9tdXRleF91bmxvY2soJmxpc3RfbG9jayk7Cj4gIH0KPiBAQCAtNDc0LDkgKzQ3NCw5IEBA IHZvaWQgaWd0X3Vuc2hhcmVfc3BpbnModm9pZCkKPiAgCXN0cnVjdCBpZ3Rfc3BpbiAqaXQsICpu Owo+ICAKPiAgCS8qIERpc2FibGUgdGhlIGF1dG9tYXRpYyB0ZXJtaW5hdGlvbiBvbiBpbmhlcml0 ZWQgc3Bpbm5lcnMgKi8KPiAtCWlndF9saXN0X2Zvcl9lYWNoX3NhZmUoaXQsIG4sICZzcGluX2xp c3QsIGxpbmspCj4gLQkJaWd0X2xpc3RfaW5pdCgmaXQtPmxpbmspOwo+IC0JaWd0X2xpc3RfaW5p dCgmc3Bpbl9saXN0KTsKPiArCWlndF9saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXQsIG4sICZz cGluX2xpc3QsIGxpbmspCj4gKwkJSUdUX0lOSVRfTElTVF9IRUFEKCZpdC0+bGluayk7Cj4gKwlJ R1RfSU5JVF9MSVNUX0hFQUQoJnNwaW5fbGlzdCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB1aW50MzJf dCBwbHVnX3ZnZW1faGFuZGxlKHN0cnVjdCBpZ3RfY29yayAqY29yaywgaW50IGZkKQo+IGRpZmYg LS1naXQgYS9saWIvaWd0X2R1bW15bG9hZC5oIGIvbGliL2lndF9kdW1teWxvYWQuaAo+IGluZGV4 IDY2ODM3MDU3Li40MjFjYTE4MyAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2R1bW15bG9hZC5oCj4g KysrIGIvbGliL2lndF9kdW1teWxvYWQuaAo+IEBAIC0zNSw3ICszNSw3IEBACj4gIHR5cGVkZWYg c3RydWN0IGlndF9zcGluIHsKPiAgCXVuc2lnbmVkIGludCBoYW5kbGU7Cj4gIAl0aW1lcl90IHRp bWVyOwo+IC0Jc3RydWN0IGlndF9saXN0IGxpbms7Cj4gKwlzdHJ1Y3QgaWd0X2xpc3RfaGVhZCBs aW5rOwo+ICAKPiAgCXVpbnQzMl90ICpjb25kaXRpb247Cj4gIAl1aW50MzJfdCBjbWRfcHJlY29u ZGl0aW9uOwo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttb2QuYyBiL2xpYi9pZ3Rfa21vZC5jCj4g aW5kZXggYzNkYTQ2NjcuLmY3NTZmODBlIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21vZC5jCj4g KysrIGIvbGliL2lndF9rbW9kLmMKPiBAQCAtNDEyLDExICs0MTIsMTEgQEAgc3RhdGljIHZvaWQg a21zZ19kdW1wKGludCBmZCkKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdGVzdHNfYWRk KHN0cnVjdCBpZ3Rfa3NlbGZ0ZXN0X2xpc3QgKnRsLCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCj4g K3N0YXRpYyB2b2lkIHRlc3RzX2FkZChzdHJ1Y3QgaWd0X2tzZWxmdGVzdF9saXN0ICp0bCwgc3Ry dWN0IGlndF9saXN0X2hlYWQgKmxpc3QpCj4gIHsKPiAgCXN0cnVjdCBpZ3Rfa3NlbGZ0ZXN0X2xp c3QgKnBvczsKPiAgCj4gLQlpZ3RfbGlzdF9mb3JfZWFjaChwb3MsIGxpc3QsIGxpbmspCj4gKwlp Z3RfbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIGxpc3QsIGxpbmspCj4gIAkJaWYgKHBvcy0+bnVt YmVyID4gdGwtPm51bWJlcikKPiAgCQkJYnJlYWs7Cj4gIAo+IEBAIC00MjUsNyArNDI1LDcgQEAg c3RhdGljIHZvaWQgdGVzdHNfYWRkKHN0cnVjdCBpZ3Rfa3NlbGZ0ZXN0X2xpc3QgKnRsLCBzdHJ1 Y3QgaWd0X2xpc3QgKmxpc3QpCj4gIAo+ICB2b2lkIGlndF9rc2VsZnRlc3RfZ2V0X3Rlc3RzKHN0 cnVjdCBrbW9kX21vZHVsZSAqa21vZCwKPiAgCQkJICAgICBjb25zdCBjaGFyICpmaWx0ZXIsCj4g LQkJCSAgICAgc3RydWN0IGlndF9saXN0ICp0ZXN0cykKPiArCQkJICAgICBzdHJ1Y3QgaWd0X2xp c3RfaGVhZCAqdGVzdHMpCj4gIHsKPiAgCWNvbnN0IGNoYXIgKnBhcmFtX3ByZWZpeCA9ICJpZ3Rf XyI7Cj4gIAljb25zdCBpbnQgcHJlZml4X2xlbiA9IHN0cmxlbihwYXJhbV9wcmVmaXgpOwo+IEBA IC01NjgsNyArNTY4LDcgQEAgdm9pZCBpZ3Rfa3NlbGZ0ZXN0cyhjb25zdCBjaGFyICptb2R1bGVf bmFtZSwKPiAgCQkgICAgY29uc3QgY2hhciAqZmlsdGVyKQo+ICB7Cj4gIAlzdHJ1Y3QgaWd0X2tz ZWxmdGVzdCB0c3Q7Cj4gLQlJR1RfTElTVCh0ZXN0cyk7Cj4gKwlJR1RfTElTVF9IRUFEKHRlc3Rz KTsKPiAgCXN0cnVjdCBpZ3Rfa3NlbGZ0ZXN0X2xpc3QgKnRsLCAqdG47Cj4gIAo+ICAJaWYgKGln dF9rc2VsZnRlc3RfaW5pdCgmdHN0LCBtb2R1bGVfbmFtZSkgIT0gMCkKPiBAQCAtNTc4LDcgKzU3 OCw3IEBAIHZvaWQgaWd0X2tzZWxmdGVzdHMoY29uc3QgY2hhciAqbW9kdWxlX25hbWUsCj4gIAkJ aWd0X3JlcXVpcmUoaWd0X2tzZWxmdGVzdF9iZWdpbigmdHN0KSA9PSAwKTsKPiAgCj4gIAlpZ3Rf a3NlbGZ0ZXN0X2dldF90ZXN0cyh0c3Qua21vZCwgZmlsdGVyLCAmdGVzdHMpOwo+IC0JaWd0X2xp c3RfZm9yX2VhY2hfc2FmZSh0bCwgdG4sICZ0ZXN0cywgbGluaykgewo+ICsJaWd0X2xpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSh0bCwgdG4sICZ0ZXN0cywgbGluaykgewo+ICAJCWlndF9zdWJ0ZXN0 X2YoIiVzIiwgdGwtPm5hbWUpCj4gIAkJCWlndF9rc2VsZnRlc3RfZXhlY3V0ZSgmdHN0LCB0bCwg b3B0aW9ucywgcmVzdWx0KTsKPiAgCQlmcmVlKHRsKTsKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9r bW9kLmggYi9saWIvaWd0X2ttb2QuaAo+IGluZGV4IDg3ZDM2ZDQwLi5iMTVjZGU0NiAxMDA2NDQK PiAtLS0gYS9saWIvaWd0X2ttb2QuaAo+ICsrKyBiL2xpYi9pZ3Rfa21vZC5oCj4gQEAgLTQ5LDcg KzQ5LDcgQEAgc3RydWN0IGlndF9rc2VsZnRlc3Qgewo+ICB9Owo+ICAKPiAgc3RydWN0IGlndF9r c2VsZnRlc3RfbGlzdCB7Cj4gLQlzdHJ1Y3QgaWd0X2xpc3QgbGluazsKPiArCXN0cnVjdCBpZ3Rf bGlzdF9oZWFkIGxpbms7Cj4gIAl1bnNpZ25lZCBpbnQgbnVtYmVyOwo+ICAJY2hhciAqbmFtZTsK PiAgCWNoYXIgcGFyYW1bXTsKPiBAQCAtNjEsNyArNjEsNyBAQCBpbnQgaWd0X2tzZWxmdGVzdF9i ZWdpbihzdHJ1Y3QgaWd0X2tzZWxmdGVzdCAqdHN0KTsKPiAgCj4gIHZvaWQgaWd0X2tzZWxmdGVz dF9nZXRfdGVzdHMoc3RydWN0IGttb2RfbW9kdWxlICprbW9kLAo+ICAJCQkgICAgIGNvbnN0IGNo YXIgKmZpbHRlciwKPiAtCQkJICAgICBzdHJ1Y3QgaWd0X2xpc3QgKnRlc3RzKTsKPiArCQkJICAg ICBzdHJ1Y3QgaWd0X2xpc3RfaGVhZCAqdGVzdHMpOwo+ICBpbnQgaWd0X2tzZWxmdGVzdF9leGVj dXRlKHN0cnVjdCBpZ3Rfa3NlbGZ0ZXN0ICp0c3QsCj4gIAkJCSAgc3RydWN0IGlndF9rc2VsZnRl c3RfbGlzdCAqdGwsCj4gIAkJCSAgY29uc3QgY2hhciAqbW9kdWxlX29wdGlvbnMsCj4gZGlmZiAt LWdpdCBhL2xpYi9pZ3RfbGlzdC5jIGIvbGliL2lndF9saXN0LmMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAwLi41ZTQ1MTYxYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s aWIvaWd0X2xpc3QuYwo+IEBAIC0wLDAgKzEsNjYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKp IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiAr ICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO Rwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoK PiArICovCj4gKwo+ICsjaW5jbHVkZSAiaWd0X2xpc3QuaCIKPiArCj4gK3ZvaWQgSUdUX0lOSVRf TElTVF9IRUFEKHN0cnVjdCBpZ3RfbGlzdF9oZWFkICpsaXN0KQo+ICt7Cj4gKwlsaXN0LT5wcmV2 ID0gbGlzdDsKPiArCWxpc3QtPm5leHQgPSBsaXN0Owo+ICt9Cj4gKwo+ICt2b2lkIGlndF9saXN0 X2FkZChzdHJ1Y3QgaWd0X2xpc3RfaGVhZCAqZWxlbSwgc3RydWN0IGlndF9saXN0X2hlYWQgKmhl YWQpCj4gK3sKPiArCWVsZW0tPnByZXYgPSBoZWFkOwo+ICsJZWxlbS0+bmV4dCA9IGhlYWQtPm5l eHQ7Cj4gKwloZWFkLT5uZXh0ID0gZWxlbTsKPiArCWVsZW0tPm5leHQtPnByZXYgPSBlbGVtOwo+ ICt9Cj4gKwo+ICsKPiArdm9pZCBpZ3RfbGlzdF9kZWwoc3RydWN0IGlndF9saXN0X2hlYWQgKmVs ZW0pCj4gK3sKPiArCWVsZW0tPnByZXYtPm5leHQgPSBlbGVtLT5uZXh0Owo+ICsJZWxlbS0+bmV4 dC0+cHJldiA9IGVsZW0tPnByZXY7Cj4gKwllbGVtLT5uZXh0ID0gTlVMTDsKPiArCWVsZW0tPnBy ZXYgPSBOVUxMOwo+ICt9Cj4gKwo+ICtpbnQgaWd0X2xpc3RfbGVuZ3RoKGNvbnN0IHN0cnVjdCBp Z3RfbGlzdF9oZWFkICpoZWFkKQo+ICt7Cj4gKwlzdHJ1Y3QgIGlndF9saXN0X2hlYWQgKmUgPSBo ZWFkLT5uZXh0Owo+ICsJaW50IGNvdW50ID0gMDsKPiArCj4gKwl3aGlsZSAoZSAhPSBoZWFkKSB7 Cj4gKwkJZSA9IGUtPm5leHQ7Cj4gKwkJY291bnQrKzsKPiArCX0KPiArCj4gKwlyZXR1cm4gY291 bnQ7Cj4gK30KPiArCj4gK2Jvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGlndF9saXN0 X2hlYWQgKmhlYWQpCj4gK3sKPiArCXJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cj4gK30KPiBk aWZmIC0tZ2l0IGEvbGliL2lndF9saXN0LmggYi9saWIvaWd0X2xpc3QuaAo+IGluZGV4IGNhZGY5 ZGQzLi4zZTEzOWI4YSAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2xpc3QuaAo+ICsrKyBiL2xpYi9p Z3RfbGlzdC5oCj4gQEAgLTI4LDEwMiArMjgsMTAwIEBACj4gICNpbmNsdWRlIDxzdGRib29sLmg+ Cj4gICNpbmNsdWRlIDxzdGRkZWYuaD4KPiAgCj4gLS8qCj4gLSAqIFRoaXMgbGlzdCBkYXRhIHN0 cnVjdHVyZSBpcyBhIHZlcmJhdGltIGNvcHkgZnJvbSB3YXlsYW5kLXV0aWwuaCBmcm9tIHRoZQo+ IC0gKiBXYXlsYW5kIHByb2plY3Q7IGV4Y2VwdCB0aGF0IHdsXyBwcmVmaXggaGFzIGJlZW4gcmVt b3ZlZC4KPiArLyoqCj4gKyAqIFNFQ1RJT046aWd0X2xpc3QKPiArICogQHNob3J0X2Rlc2NyaXB0 aW9uOiBhIGxpc3QgaW1wbGVtZW50YXRpb24gaW5zcGlyZWQgYnkgdGhlIGtlcm5lbAo+ICsgKiBA dGl0bGU6IElHVCBMaXN0Cj4gKyAqIEBpbmNsdWRlOiBpZ3RfbGlzdC5oCj4gKyAqCj4gKyAqIFRo aXMgbGlzdCBkYXRhIHN0cnVjdHVyZSBtaW1pY3MgdGhlIG9uZSB3ZSBjYW4gZmluZCBpbiB0aGUg a2VybmVsLiBBIGZldwo+ICsgKiBib251cyBoZWxwZXJzIGFyZSBwcm92aWRlZC4KPiArICoKPiAr ICogaWd0X2xpc3QgaXMgYSBkb3VibHktbGlua2VkIGxpc3Qgd2hlcmUgYW4gaW5zdGFuY2Ugb2Yg aWd0X2xpc3RfaGVhZCBpcyBhCj4gKyAqIGhlYWQgc2VudGluZWwgYW5kIGhhcyB0byBiZSBpbml0 aWFsaXplZC4KPiArICoKPiArICogRXhhbXBsZSB1c2FnZToKPiArICoKPiArICogfFs8IS0tIGxh bmd1YWdlPSJDIiAtLT4KPiArICogc3RydWN0IGlndF9saXN0X2hlYWQgZm9vX2hlYWQ7Cj4gKyAq Cj4gKyAqIHN0cnVjdCBlbGVtZW50IHsKPiArICogICAgICAgICBpbnQgZm9vOwo+ICsgKiAgICAg ICAgIHN0cnVjdCBpZ3RfbGlzdF9oZWFkIGxpbms7Cj4gKyAqIH07Cj4gKyAqCj4gKyAqIHN0cnVj dCBlbGVtZW50IGUxLCBlMiwgZTM7Cj4gKyAqCj4gKyAqIElHVF9JTklUX0xJU1RfSEVBRCgmZm9v X2hlYWQpOwo+ICsgKiBpZ3RfbGlzdF9hZGQoJmUxLmxpbmssICZmb29faGVhZCk7ICAgLy8gZTEg aXMgdGhlIGZpcnN0IGVsZW1lbnQKPiArICogaWd0X2xpc3RfYWRkKCZlMi5saW5rLCAmZm9vX2hl YWQpOyAgIC8vIGUyIGlzIG5vdyB0aGUgZmlyc3QgZWxlbWVudAo+ICsgKiBpZ3RfbGlzdF9hZGQo JmUzLmxpbmssICZlMi5saW5rKTsgICAgLy8gaW5zZXJ0IGUzIGFmdGVyIGUyCj4gKyAqCj4gKyAq IHByaW50ZigibGlzdCBsZW5ndGg6ICVkXG4iLCBpZ3RfbGlzdF9sZW5ndGgoJmZvb19oZWFkKSk7 Cj4gKyAqCj4gKyAqIHN0cnVjdCBlbGVtZW50ICppdGVyOwo+ICsgKiBpZ3RfbGlzdF9mb3JfZWFj aF9lbnRyeShpdGVyLCAmZm9vX2hlYWQsIGxpbmspIHsKPiArICogCXByaW50ZigiICAlZFxuIiwg aXRlci0+Zm9vKTsKPiArICogfQo+ICsgKiBdfAo+ICAgKi8KPiAgCj4gLXN0cnVjdCBpZ3RfbGlz dCB7Cj4gLQlzdHJ1Y3QgaWd0X2xpc3QgKnByZXY7Cj4gLQlzdHJ1Y3QgaWd0X2xpc3QgKm5leHQ7 Cj4gK3N0cnVjdCBpZ3RfbGlzdF9oZWFkIHsKPiArCXN0cnVjdCBpZ3RfbGlzdF9oZWFkICpwcmV2 Owo+ICsJc3RydWN0IGlndF9saXN0X2hlYWQgKm5leHQ7Cj4gIH07Cj4gIAo+IC0jZGVmaW5lIF9f SUdUX0lOSVRfTElTVChuYW1lKSB7ICYobmFtZSksICYobmFtZSkgfQo+IC0jZGVmaW5lIElHVF9M SVNUKG5hbWUpIHN0cnVjdCBpZ3RfbGlzdCBuYW1lID0gX19JR1RfSU5JVF9MSVNUKG5hbWUpCj4g IAo+IC1zdGF0aWMgaW5saW5lIHZvaWQgaWd0X2xpc3RfaW5pdChzdHJ1Y3QgaWd0X2xpc3QgKmxp c3QpCj4gLXsKPiAtCWxpc3QtPnByZXYgPSBsaXN0Owo+IC0JbGlzdC0+bmV4dCA9IGxpc3Q7Cj4g LX0KPiArdm9pZCBJR1RfSU5JVF9MSVNUX0hFQUQoc3RydWN0IGlndF9saXN0X2hlYWQgKmhlYWQp Owo+ICt2b2lkIGlndF9saXN0X2FkZChzdHJ1Y3QgaWd0X2xpc3RfaGVhZCAqZWxlbSwgc3RydWN0 IGlndF9saXN0X2hlYWQgKmhlYWQpOwo+ICt2b2lkIGlndF9saXN0X2RlbChzdHJ1Y3QgaWd0X2xp c3RfaGVhZCAqZWxlbSk7Cj4gK2ludCBpZ3RfbGlzdF9sZW5ndGgoY29uc3Qgc3RydWN0IGlndF9s aXN0X2hlYWQgKmhlYWQpOwo+ICtib29sIGlndF9saXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBpZ3Rf bGlzdF9oZWFkICpoZWFkKTsKPiAgCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lndF9saXN0X2Fk ZChzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QsCj4gLQkJCQkgIHN0cnVjdCBpZ3RfbGlzdCAqcHJldiwK PiAtCQkJCSAgc3RydWN0IGlndF9saXN0ICpuZXh0KQo+IC17Cj4gLQluZXh0LT5wcmV2ID0gbGlz dDsKPiAtCWxpc3QtPm5leHQgPSBuZXh0Owo+IC0JbGlzdC0+cHJldiA9IHByZXY7Cj4gLQlwcmV2 LT5uZXh0ID0gbGlzdDsKPiAtfQo+ICsjZGVmaW5lIGlndF9jb250YWluZXJfb2YocHRyLCBzYW1w bGUsIG1lbWJlcikJCQkJXAo+ICsJKF9fdHlwZW9mX18oc2FtcGxlKSkoKGNoYXIgKikocHRyKSAt CQkJCVwKPiArCQkJCW9mZnNldG9mKF9fdHlwZW9mX18oKnNhbXBsZSksIG1lbWJlcikpCj4gIAo+ IC1zdGF0aWMgaW5saW5lIHZvaWQgaWd0X2xpc3RfYWRkKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLCBz dHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCj4gLXsKPiAtCV9faWd0X2xpc3RfYWRkKGVsbSwgbGlzdCwg bGlzdC0+bmV4dCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9hZGRf dGFpbChzdHJ1Y3QgaWd0X2xpc3QgKmVsbSwKPiAtCQkJCSAgICAgc3RydWN0IGlndF9saXN0ICps aXN0KQo+IC17Cj4gLQlfX2lndF9saXN0X2FkZChlbG0sIGxpc3QtPnByZXYsIGxpc3QpOwo+IC19 Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgX19pZ3RfbGlzdF9kZWwoc3RydWN0IGlndF9saXN0 ICpwcmV2LCBzdHJ1Y3QgaWd0X2xpc3QgKm5leHQpCj4gLXsKPiAtCW5leHQtPnByZXYgPSBwcmV2 Owo+IC0JcHJldi0+bmV4dCA9IG5leHQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBp Z3RfbGlzdF9kZWwoc3RydWN0IGlndF9saXN0ICplbG0pCj4gLXsKPiAtCV9faWd0X2xpc3RfZGVs KGVsbS0+cHJldiwgZWxtLT5uZXh0KTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkIGln dF9saXN0X21vdmUoc3RydWN0IGlndF9saXN0ICplbG0sIHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkK PiAtewo+IC0JaWd0X2xpc3RfZGVsKGVsbSk7Cj4gLQlpZ3RfbGlzdF9hZGQoZWxtLCBsaXN0KTsK PiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkIGlndF9saXN0X21vdmVfdGFpbChzdHJ1Y3Qg aWd0X2xpc3QgKmVsbSwKPiAtCQkJCSAgICAgIHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkKPiAtewo+ IC0JaWd0X2xpc3RfZGVsKGVsbSk7Cj4gLQlpZ3RfbGlzdF9hZGRfdGFpbChlbG0sIGxpc3QpOwo+ IC19Cj4gKyNkZWZpbmUgaWd0X2xpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBoZWFkLCBtZW1iZXIp CQkJXAo+ICsJZm9yIChwb3MgPSBpZ3RfY29udGFpbmVyX29mKChoZWFkKS0+bmV4dCwgcG9zLCBt ZW1iZXIpOwkJXAo+ICsJICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOwkJCQkJXAo+ICsJICAg ICBwb3MgPSBpZ3RfY29udGFpbmVyX29mKChwb3MpLT5tZW1iZXIubmV4dCwgcG9zLCBtZW1iZXIp KQo+ICsKPiArLyoqCj4gKyAqIGlndF9saXN0X2Zvcl9lYWNoX3NhZmUKPiArICoKPiArICogU2Fm ZSBhZ2FpbnN0IHJlbW92ZWwgb2YgdGhlICpjdXJyZW50KiBsaXN0IGVsZW1lbnQuIFRvIGFjaGl2 ZSB0aGlzIGl0CgpyZW1vdmFsCiAgICAgXgoKCj4gKyAqIHJlcXVpcmVzIGFuIGV4dHJhIGhlbHBl ciB2YXJpYWJsZSBgdG1wYCB3aXRoIHRoZSBzYW1lIHR5cGUgYXMgYHBvc2AuCj4gKyAqLwo+ICsj ZGVmaW5lIGlndF9saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCB0bXAsIGhlYWQsIG1lbWJl cikJCQlcCj4gKwlmb3IgKHBvcyA9IGlndF9jb250YWluZXJfb2YoKGhlYWQpLT5uZXh0LCBwb3Ms IG1lbWJlciksCQlcCgpUaGF0IG9uZSBcIGlzIHRyeWluZyB0byBlc2NhcGUuCgoKCk90aGVyd2lz ZSBMR1RNLiBTdHJhaWdodGZvcndhcmQgY29kZSBjaGFuZ2VzLCBhbmQgSSBkb24ndCBoYXZlIHN0 cm9uZwpmZWVsaW5ncyBhcyB0byB3aGljaCBsaXN0IGltcGxlbWVudGF0aW9uIHRvIGNoYXNlLCBi dXQgZGVmaW5pdGVseSB3ZQpzaG91bGQgY2hvb3NlIGFuZCBub3QgbGllIHdoYXQgaXQgaXMuCgoK UmV2aWV3ZWQtYnk6IFBldHJpIExhdHZhbGEgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxp bmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=