From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Brost Subject: Re: [PATCH] drm/i915: Engine relative MMIO Date: Thu, 20 Jun 2019 00:24:45 -0700 Message-ID: <20190620072444.GA6272@sdutt> References: <20190513194552.6600-1-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B2DD96E4E6 for ; Thu, 20 Jun 2019 07:30:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190513194552.6600-1-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org, Wilson@freedesktop.org, Chris P List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMTMsIDIwMTkgYXQgMTI6NDU6NTJQTSAtMDcwMCwgSm9obi5DLkhhcnJpc29u QEludGVsLmNvbSB3cm90ZToKPkZyb206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJ bnRlbC5jb20+Cj4KPldpdGggdmlydHVhbCBlbmdpbmVzLCBpdCBpcyBubyBsb25nZXIgcG9zc2li bGUgdG8ga25vdyB3aGljaCBzcGVjaWZpYwo+cGh5c2ljYWwgZW5naW5lIGEgZ2l2ZW4gcmVxdWVz dCB3aWxsIGJlIGV4ZWN1dGVkIG9uIGF0IHRoZSB0aW1lIHRoYXQKPnJlcXVlc3QgaXMgZ2VuZXJh dGVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlcXVlc3QgaXRzZWxmIG11c3QgYmUgZW5naW5lCj5h Z25vc3RpYyAtIGFueSBkaXJlY3QgcmVnaXN0ZXIgd3JpdGVzIG11c3QgYmUgcmVsYXRpdmUgdG8g dGhlIGVuZ2luZQo+YW5kIG5vdCBhYnNvbHV0ZSBhZGRyZXNzZXMuCj4KPlRoZSBMUkkgY29tbWFu ZCBoYXMgc3VwcG9ydCBmb3IgZW5naW5lIHJlbGF0aXZlIGFkZHJlc3NpbmcuIEhvd2V2ZXIsCj50 aGUgbWVjaGFuaXNtIGlzIG5vdCB0cmFuc3BhcmVudCB0byB0aGUgZHJpdmVyLiBUaGUgc2NoZW1l IGZvciBHZW4xMQo+KE1JX0xSSV9BRERfQ1NfTU1JT19TVEFSVCkgcmVxdWlyZXMgdGhlIExSSSBh ZGRyZXNzIHRvIGhhdmUgbm8KPmFic29sdXRlIGVuZ2luZSBiYXNlIGNvbXBvbmVudC4gVGhlIGhh cmR3YXJlIHRoZW4gYWRkcyBvbiB0aGUgY29ycmVjdAo+ZW5naW5lIG9mZnNldCBhdCBleGVjdXRp b24gdGltZS4KPgo+RHVlIHRvIHRoZSBub24tdHJpdmlhbCBhbmQgZGlmZmVyaW5nIHNjaGVtZXMg b24gZGlmZmVyZW50IGhhcmR3YXJlLCBpdAo+aXMgbm90IHBvc3NpYmxlIHRvIHNpbXBseSB1cGRh dGUgdGhlIGNvZGUgdGhhdCBjcmVhdGVzIHRoZSBMUkkKPmNvbW1hbmRzIHRvIHNldCBhIHJlbWFw IGZsYWcgYW5kIGxldCB0aGUgaGFyZHdhcmUgZ2V0IG9uIHdpdGggaXQuCj5JbnN0ZWFkLCB0aGlz IHBhdGNoIGFkZHMgZnVuY3Rpb24gd3JhcHBlcnMgZm9yIGdlbmVyYXRpbmcgdGhlIExSSQo+Y29t bWFuZCBpdHNlbGYgYW5kIHRoZW4gZm9yIGNvbnN0cnVjdGluZyB0aGUgY29ycmVjdCBhZGRyZXNz IHRvIHVzZQo+d2l0aCB0aGUgTFJJLgo+Cj52MjogRml4IGJ1aWxkIGJyZWFrIGluIEdWVC4gUmVt b3ZlIGZsYWdzIHBhcmFtZXRlciBbcmV2aWV3IGZlZWRiYWNrCj5mcm9tIENocmlzIFddLgo+Cj52 MzogRml4IGJ1aWxkIGJyZWFrIGluIHNlbGZ0ZXN0LiBSZWJhc2UgdG8gbmV3ZXIgYmFzZSB0cmVl IGFuZCBmaXgKPm1lcmdlIGNvbmZsaWN0Lgo+Cj52NDogTW9yZSByZWJhc2luZy4gUm1vdmVkIHJl bGF0aXZlIGFkZHJlc3Npbmcgc3VwcG9ydCBmcm9tIEdlbjctOSBvbmx5Cj5jb2RlIHBhdGhzIFty ZXZpZXcgZmVlZGJhY2sgZnJvbSBDaHJpcyBXXS4KPgo+djU6IE1vcmUgcmViYXNpbmcgKG5ldyAn Z3QnIGRpcmVjdG9yeSkuIEZpeCB3aGl0ZSBzcGFjZSBpc3N1ZS4gVXNlCj5DT1BZIGNsYXNzIHJh dGhlciB0aGFuIEJDUzAgaWQgZm9yIGNoZWNraW5nIGFnYWluc3QgQkNTIGVuZ2luZS4KPgo+U2ln bmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPkND OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj5DQzogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPkNDOiBXaWxzb24sIENocmlzIFAg PGNocmlzLnAud2lsc29uQGludGVsLmNvbT4KCkkndmUgcmV2aWV3ZWQgdGhpcyBzZXJpZXMgYW5k IHRvIG1lIGl0IGxvb2tzIGxpa2UgYWxsIHRoZSBjb25jZXJucyBoYXZlIGJlZW4KYWRkcmVzc2Vk ICsgQ0kgaXMgcGFzc2luZy4gRG8gbm90IGZlZWwgY29tZm9ydGFibGUgZ2l2ZSBhIFItQiBidXQg dGhpcyBwYXRjaCBpcwpuZWVkZWQgZm9yIGEgc2VyaWVzIEknbSB3b3JraW5nIG9uIHNvIEknZCBs aWtlIHRvIHNlZSBpdCBtZXJnZWQuIEdlbnRsZSBwaW5nIHRvCmdldCB0aGlzIG1lcmdlZC4KClRo YW5rcywKTWF0dAoKPi0tLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5o ICAgICAgICB8ICA0ICsKPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu YyAgICAgfCAxMSArKysKPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFu ZHMuaCAgfCAgNiArLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jICAgICAg ICAgICB8IDc5ICsrKysrKysrKystLS0tLS0tLS0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9scmNfcmVnLmggICAgICAgfCAgNCArLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX21vY3MuYyAgICAgICAgICB8IDE3ICsrLS0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yaW5nYnVmZmVyLmMgICAgfCA0NSArKysrKysrKystLQo+IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgICB8ICA0ICstCj4gLi4uL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jICAgIHwgIDkgKystCj4gZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L21taW9fY29udGV4dC5jICAgICAgIHwgMTYgKysrLQo+IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfY21kX3BhcnNlci5jICAgICAgICB8ICA0ICstCj4gZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgMTIgKy0tCj4gZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgIDMgKy0KPiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAxOSArKystLQo+IDE0IGZpbGVzIGNoYW5nZWQs IDE1NCBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKPgo+ZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lLmgKPmluZGV4IDkzNTliM2E3YWQ5Yy4uMzUwNmM5OTIxODJjIDEwMDY0 NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKPisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCj5AQCAtNTQ2LDQgKzU0Niw4IEBA IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmplY3RfcHJlZW1wdF9oYW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCj4KPiAjZW5kaWYKPgo+K2Jvb2wgaTkxNV9lbmdpbmVf aGFzX3JlbGF0aXZlX2xyaShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ K3UzMiBpOTE1X2dldF9scmlfY21kKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgdTMyIHdvcmRfY291bnQpOwo+K3UzMiBpOTE1X2dldF9scmlfcmVnKGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaTkxNV9yZWdfdCByZWcpOwo+Kwo+ICNlbmRpZiAvKiBf SU5URUxfUklOR0JVRkZFUl9IXyAqLwo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX2NzLmMKPmluZGV4IDRjMzc1M2MxYjU3My4uMjMzMjk1ZDY4OWQyIDEwMDY0NAo+LS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj5AQCAtMjUzLDYgKzI1MywxNyBAQCBz dGF0aWMgdTMyIF9fZW5naW5lX21taW9fYmFzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKPiAJcmV0dXJuIGJhc2VzW2ldLmJhc2U7Cj4gfQo+Cj4rYm9vbCBpOTE1X2VuZ2luZV9oYXNf cmVsYXRpdmVfbHJpKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPit7Cj4r CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKQo+KwkJcmV0dXJuIGZhbHNlOwo+Kwo+ KwlpZiAoZW5naW5lLT5jbGFzcyA9PSBDT1BZX0VOR0lORV9DTEFTUykKPisJCXJldHVybiBmYWxz ZTsKPisKPisJcmV0dXJuIHRydWU7Cj4rfQo+Kwo+IHN0YXRpYyB2b2lkIF9fc3ByaW50X2VuZ2lu ZV9uYW1lKGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBlbmdpbmVfaW5mbyAqaW5mbykKPiB7Cj4g CVdBUk5fT04oc25wcmludGYobmFtZSwgSU5URUxfRU5HSU5FX0NTX01BWF9OQU1FLCAiJXMldSIs Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRz LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaAo+aW5kZXgg YTM0ZWNlNTNhNzcxLi5lNzc4NGIzZmI3NTkgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaAo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKPkBAIC0xMjMsOSArMTIzLDEzIEBACj4gICogICBzaW1w bHkgaWdub3JlcyB0aGUgcmVnaXN0ZXIgbG9hZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuCj4g ICogLSBPbmUgY2FuIGFjdHVhbGx5IGxvYWQgYXJiaXRyYXJ5IG1hbnkgYXJiaXRyYXJ5IHJlZ2lz dGVyczogU2ltcGx5IGlzc3VlIHgKPiAgKiAgIGFkZHJlc3MvdmFsdWUgcGFpcnMuIERvbid0IG92 ZXJkdWUgaXQsIHRob3VnaCwgeCA8PSAyXjQgbXVzdCBob2xkIQo+KyAqIC0gTmV3ZXIgaGFyZHdh cmUgc3VwcG9ydHMgZW5naW5lIHJlbGF0aXZlIGFkZHJlc3NlcyBidXQgb2xkZXIgaGFyZHdhcmUg ZG9lcwo+KyAqICAgbm90LiBTbyBuZXZlciBjYWxsIE1JX0xSSSBkaXJlY3RseSwgYWx3YXlzIHVz ZSB0aGUgaTkxNV9nZXRfbHJpX2NtZCgpCj4rICogICBhbmQgaTkxNV9nZXRfbHJpX3JlZygpIGhl bHBlciBmdW5jdGlvbnMuCj4gICovCj4tI2RlZmluZSBNSV9MT0FEX1JFR0lTVEVSX0lNTSh4KQlN SV9JTlNUUigweDIyLCAyKih4KS0xKQo+KyNkZWZpbmUgX19NSV9MT0FEX1JFR0lTVEVSX0lNTSh4 KQlNSV9JTlNUUigweDIyLCAyKih4KS0xKQo+ICNkZWZpbmUgICBNSV9MUklfRk9SQ0VfUE9TVEVE CQkoMTw8MTIpCj4rI2RlZmluZSAgIE1JX0xSSV9BRERfQ1NfTU1JT19TVEFSVF9HRU4xMQkoMTw8 MTkpCj4gI2RlZmluZSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gICAgICAgIE1JX0lOU1RSKDB4MjQs IDEpCj4gI2RlZmluZSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCAgIE1JX0lOU1RSKDB4MjQs IDIpCj4gI2RlZmluZSAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVAkJKDE8PDIyKQo+ZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfbHJjLmMKPmluZGV4IGUxODYyM2RlZjI4Mi4uNDlhOWE2NjQ4YjljIDEw MDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj5AQCAtMTM4OCwxNCArMTM4OCwxNSBA QCBzdGF0aWMgaW50IGVtaXRfcGRwcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAJCXJldHVy biBQVFJfRVJSKGNzKTsKPgo+IAkvKiBFbnN1cmUgdGhlIExSSSBoYXZlIGxhbmRlZCBiZWZvcmUg d2UgaW52YWxpZGF0ZSAmIGNvbnRpbnVlICovCj4tCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9J TU0oMiAqIEdFTjhfM0xWTF9QRFBFUykgfCBNSV9MUklfRk9SQ0VfUE9TVEVEOwo+KwkqY3MrKyA9 IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCAyICogR0VOOF8zTFZMX1BEUEVTKSB8Cj4rCQkJCSBN SV9MUklfRk9SQ0VfUE9TVEVEOwo+IAlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVM7IGktLTsgKSB7 Cj4gCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihw cGd0dCwgaSk7Cj4gCQl1MzIgYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwo+Cj4tCQkqY3MrKyA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGJhc2UsIGkpKTsKPisJCSpj cysrID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIGkp KTsKPiAJCSpjcysrID0gdXBwZXJfMzJfYml0cyhwZF9kYWRkcik7Cj4tCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfTERXKGJhc2UsIGkpKTsKPisJCSpjcysrID0g aTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIGkpKTsKPiAJ CSpjcysrID0gbG93ZXJfMzJfYml0cyhwZF9kYWRkcik7Cj4gCX0KPiAJKmNzKysgPSBNSV9OT09Q Owo+QEAgLTE0NjksNyArMTQ3MCw4IEBAIGdlbjhfZW1pdF9mbHVzaF9jb2hlcmVudGwzX3dhKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpiYXRjaCkKPiAJKmJhdGNoKysgPSBp OTE1X3NjcmF0Y2hfb2Zmc2V0KGVuZ2luZS0+aTkxNSkgKyAyNTY7Cj4gCSpiYXRjaCsrID0gMDsK Pgo+LQkqYmF0Y2grKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwo+KwkvKiBHZW44Lzkgb25s eSBzbyBubyBuZWVkIHRvIHN1cHBvcnQgcmVsYXRpdmUgb2Zmc2V0cyAqLwo+KwkqYmF0Y2grKyA9 IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Cj4gCSpiYXRjaCsrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoR0VOOF9MM1NRQ1JFRzQpOwo+IAkqYmF0Y2grKyA9IDB4NDA0MDAwMDAgfCBHRU44X0xR U0NfRkxVU0hfQ09IRVJFTlRfTElORVM7Cj4KPkBAIC0xNTQwLDEzICsxNTQyLDE0IEBAIHN0cnVj dCBscmkgewo+IAl1MzIgdmFsdWU7Cj4gfTsKPgo+LXN0YXRpYyB1MzIgKmVtaXRfbHJpKHUzMiAq YmF0Y2gsIGNvbnN0IHN0cnVjdCBscmkgKmxyaSwgdW5zaWduZWQgaW50IGNvdW50KQo+K3N0YXRp YyB1MzIgKmVtaXRfbHJpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpiYXRj aCwKPisJCSAgICAgY29uc3Qgc3RydWN0IGxyaSAqbHJpLCB1bnNpZ25lZCBpbnQgY291bnQpCj4g ewo+IAlHRU1fQlVHX09OKCFjb3VudCB8fCBjb3VudCA+IDYzKTsKPgo+LQkqYmF0Y2grKyA9IE1J X0xPQURfUkVHSVNURVJfSU1NKGNvdW50KTsKPisJKmJhdGNoKysgPSBpOTE1X2dldF9scmlfY21k KGVuZ2luZSwgY291bnQpOwo+IAlkbyB7Cj4tCQkqYmF0Y2grKyA9IGk5MTVfbW1pb19yZWdfb2Zm c2V0KGxyaS0+cmVnKTsKPisJCSpiYXRjaCsrID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIGxy aS0+cmVnKTsKPiAJCSpiYXRjaCsrID0gbHJpLT52YWx1ZTsKPiAJfSB3aGlsZSAobHJpKyssIC0t Y291bnQpOwo+IAkqYmF0Y2grKyA9IE1JX05PT1A7Cj5AQCAtMTU4NCw3ICsxNTg3LDcgQEAgc3Rh dGljIHUzMiAqZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgdTMyICpiYXRjaCkKPiAJLyogV2FGbHVzaENvaGVyZW50TDNDYWNoZUxpbmVzQXRD b250ZXh0U3dpdGNoOnNrbCxieHQsZ2xrICovCj4gCWJhdGNoID0gZ2VuOF9lbWl0X2ZsdXNoX2Nv aGVyZW50bDNfd2EoZW5naW5lLCBiYXRjaCk7Cj4KPi0JYmF0Y2ggPSBlbWl0X2xyaShiYXRjaCwg bHJpLCBBUlJBWV9TSVpFKGxyaSkpOwo+KwliYXRjaCA9IGVtaXRfbHJpKGVuZ2luZSwgYmF0Y2gs IGxyaSwgQVJSQVlfU0laRShscmkpKTsKPgo+IAkvKiBXYU1lZGlhUG9vbFN0YXRlQ21kSW5XQUJC OmJ4dCxnbGsgKi8KPiAJaWYgKEhBU19QT09MRURfRVUoZW5naW5lLT5pOTE1KSkgewo+QEAgLTI1 MzcsMTAgKzI1NDAsMTAgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHUz MiAqcmVncywKPiAJICogdmFsdWVzIChpbmNsdWRpbmcgYWxsIHRoZSBtaXNzaW5nIE1JX0xPQURf UkVHSVNURVJfSU1NIGNvbW1hbmRzIHRoYXQKPiAJICogd2UgYXJlIG5vdCBpbml0aWFsaXppbmcg aGVyZSkuCj4gCSAqLwo+LQlyZWdzW0NUWF9MUklfSEVBREVSXzBdID0gTUlfTE9BRF9SRUdJU1RF Ul9JTU0ocmNzID8gMTQgOiAxMSkgfAo+LQkJCQkgTUlfTFJJX0ZPUkNFX1BPU1RFRDsKPisJcmVn c1tDVFhfTFJJX0hFQURFUl8wXSA9IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCByY3MgPyAxNCA6 IDExKSB8Cj4rCQkJCQkJICBNSV9MUklfRk9SQ0VfUE9TVEVEOwo+Cj4tCUNUWF9SRUcocmVncywg Q1RYX0NPTlRFWFRfQ09OVFJPTCwgUklOR19DT05URVhUX0NPTlRST0woYmFzZSksCj4rCUNUWF9S RUcoZW5naW5lLCByZWdzLCBDVFhfQ09OVEVYVF9DT05UUk9MLCBSSU5HX0NPTlRFWFRfQ09OVFJP TChiYXNlKSwKPiAJCV9NQVNLRURfQklUX0RJU0FCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNU T1JFX0lOSElCSVQpIHwKPiAJCV9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9JTkhJQklUX1NZ Tl9DVFhfU1dJVENIKSk7Cj4gCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKSB7Cj5A QCAtMjU0OCwyMiArMjU1MSwyMyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdfc3Rh dGUodTMyICpyZWdzLAo+IAkJCV9NQVNLRURfQklUX0RJU0FCTEUoQ1RYX0NUUkxfRU5HSU5FX0NU WF9TQVZFX0lOSElCSVQgfAo+IAkJCQkJICAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUpOwo+IAl9 Cj4tCUNUWF9SRUcocmVncywgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKGJhc2UpLCAwKTsKPi0J Q1RYX1JFRyhyZWdzLCBDVFhfUklOR19UQUlMLCBSSU5HX1RBSUwoYmFzZSksIDApOwo+LQlDVFhf UkVHKHJlZ3MsIENUWF9SSU5HX0JVRkZFUl9TVEFSVCwgUklOR19TVEFSVChiYXNlKSwgMCk7Cj4t CUNUWF9SRUcocmVncywgQ1RYX1JJTkdfQlVGRkVSX0NPTlRST0wsIFJJTkdfQ1RMKGJhc2UpLAo+ KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKGJhc2UpLCAw KTsKPisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9SSU5HX1RBSUwsIFJJTkdfVEFJTChiYXNl KSwgMCk7Cj4rCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUklOR19CVUZGRVJfU1RBUlQsIFJJ TkdfU1RBUlQoYmFzZSksIDApOwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1JJTkdfQlVG RkVSX0NPTlRST0wsIFJJTkdfQ1RMKGJhc2UpLAo+IAkJUklOR19DVExfU0laRShyaW5nLT5zaXpl KSB8IFJJTkdfVkFMSUQpOwo+LQlDVFhfUkVHKHJlZ3MsIENUWF9CQl9IRUFEX1UsIFJJTkdfQkJB RERSX1VEVyhiYXNlKSwgMCk7Cj4tCUNUWF9SRUcocmVncywgQ1RYX0JCX0hFQURfTCwgUklOR19C QkFERFIoYmFzZSksIDApOwo+LQlDVFhfUkVHKHJlZ3MsIENUWF9CQl9TVEFURSwgUklOR19CQlNU QVRFKGJhc2UpLCBSSU5HX0JCX1BQR1RUKTsKPi0JQ1RYX1JFRyhyZWdzLCBDVFhfU0VDT05EX0JC X0hFQURfVSwgUklOR19TQkJBRERSX1VEVyhiYXNlKSwgMCk7Cj4tCUNUWF9SRUcocmVncywgQ1RY X1NFQ09ORF9CQl9IRUFEX0wsIFJJTkdfU0JCQUREUihiYXNlKSwgMCk7Cj4tCUNUWF9SRUcocmVn cywgQ1RYX1NFQ09ORF9CQl9TVEFURSwgUklOR19TQkJTVEFURShiYXNlKSwgMCk7Cj4rCUNUWF9S RUcoZW5naW5lLCByZWdzLCBDVFhfQkJfSEVBRF9VLCBSSU5HX0JCQUREUl9VRFcoYmFzZSksIDAp Owo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX0JCX0hFQURfTCwgUklOR19CQkFERFIoYmFz ZSksIDApOwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX0JCX1NUQVRFLCBSSU5HX0JCU1RB VEUoYmFzZSksIFJJTkdfQkJfUFBHVFQpOwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1NF Q09ORF9CQl9IRUFEX1UsIFJJTkdfU0JCQUREUl9VRFcoYmFzZSksIDApOwo+KwlDVFhfUkVHKGVu Z2luZSwgcmVncywgQ1RYX1NFQ09ORF9CQl9IRUFEX0wsIFJJTkdfU0JCQUREUihiYXNlKSwgMCk7 Cj4rCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfU0VDT05EX0JCX1NUQVRFLCBSSU5HX1NCQlNU QVRFKGJhc2UpLCAwKTsKPiAJaWYgKHJjcykgewo+IAkJc3RydWN0IGk5MTVfY3R4X3dvcmthcm91 bmRzICp3YV9jdHggPSAmZW5naW5lLT53YV9jdHg7Cj4KPi0JCUNUWF9SRUcocmVncywgQ1RYX1JD U19JTkRJUkVDVF9DVFgsIFJJTkdfSU5ESVJFQ1RfQ1RYKGJhc2UpLCAwKTsKPi0JCUNUWF9SRUco cmVncywgQ1RYX1JDU19JTkRJUkVDVF9DVFhfT0ZGU0VULAo+KwkJQ1RYX1JFRyhlbmdpbmUsIHJl Z3MsIENUWF9SQ1NfSU5ESVJFQ1RfQ1RYLAo+KwkJCVJJTkdfSU5ESVJFQ1RfQ1RYKGJhc2UpLCAw KTsKPisJCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUkNTX0lORElSRUNUX0NUWF9PRkZTRVQs Cj4gCQkJUklOR19JTkRJUkVDVF9DVFhfT0ZGU0VUKGJhc2UpLCAwKTsKPiAJCWlmICh3YV9jdHgt PmluZGlyZWN0X2N0eC5zaXplKSB7Cj4gCQkJdTMyIGdndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29m ZnNldCh3YV9jdHgtPnZtYSk7Cj5AQCAtMjU3Niw3ICsyNTgwLDggQEAgc3RhdGljIHZvaWQgZXhl Y2xpc3RzX2luaXRfcmVnX3N0YXRlKHUzMiAqcmVncywKPiAJCQkJaW50ZWxfbHJfaW5kaXJlY3Rf Y3R4X29mZnNldChlbmdpbmUpIDw8IDY7Cj4gCQl9Cj4KPi0JCUNUWF9SRUcocmVncywgQ1RYX0JC X1BFUl9DVFhfUFRSLCBSSU5HX0JCX1BFUl9DVFhfUFRSKGJhc2UpLCAwKTsKPisJCUNUWF9SRUco ZW5naW5lLCByZWdzLCBDVFhfQkJfUEVSX0NUWF9QVFIsCj4rCQkJUklOR19CQl9QRVJfQ1RYX1BU UihiYXNlKSwgMCk7Cj4gCQlpZiAod2FfY3R4LT5wZXJfY3R4LnNpemUpIHsKPiAJCQl1MzIgZ2d0 dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHdhX2N0eC0+dm1hKTsKPgo+QEAgLTI1ODUsMTgg KzI1OTAsMTkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHUzMiAqcmVn cywKPiAJCX0KPiAJfQo+Cj4tCXJlZ3NbQ1RYX0xSSV9IRUFERVJfMV0gPSBNSV9MT0FEX1JFR0lT VEVSX0lNTSg5KSB8IE1JX0xSSV9GT1JDRV9QT1NURUQ7Cj4rCXJlZ3NbQ1RYX0xSSV9IRUFERVJf MV0gPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgOSkgfAo+KwkJCQkJCSAgTUlfTFJJX0ZPUkNF X1BPU1RFRDsKPgo+LQlDVFhfUkVHKHJlZ3MsIENUWF9DVFhfVElNRVNUQU1QLCBSSU5HX0NUWF9U SU1FU1RBTVAoYmFzZSksIDApOwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX0NUWF9USU1F U1RBTVAsIFJJTkdfQ1RYX1RJTUVTVEFNUChiYXNlKSwgMCk7Cj4gCS8qIFBEUCB2YWx1ZXMgd2Vs bCBiZSBhc3NpZ25lZCBsYXRlciBpZiBuZWVkZWQgKi8KPi0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQ M19VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDMpLCAwKTsKPi0JQ1RYX1JFRyhyZWdzLCBD VFhfUERQM19MRFcsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDMpLCAwKTsKPi0JQ1RYX1JFRyhy ZWdzLCBDVFhfUERQMl9VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDIpLCAwKTsKPi0JQ1RY X1JFRyhyZWdzLCBDVFhfUERQMl9MRFcsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDIpLCAwKTsK Pi0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMV9VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDEp LCAwKTsKPi0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMV9MRFcsIEdFTjhfUklOR19QRFBfTERXKGJh c2UsIDEpLCAwKTsKPi0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMF9VRFcsIEdFTjhfUklOR19QRFBf VURXKGJhc2UsIDApLCAwKTsKPi0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMF9MRFcsIEdFTjhfUklO R19QRFBfTERXKGJhc2UsIDApLCAwKTsKPisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9QRFAz X1VEVywgR0VOOF9SSU5HX1BEUF9VRFcoYmFzZSwgMyksIDApOwo+KwlDVFhfUkVHKGVuZ2luZSwg cmVncywgQ1RYX1BEUDNfTERXLCBHRU44X1JJTkdfUERQX0xEVyhiYXNlLCAzKSwgMCk7Cj4rCUNU WF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQMl9VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2Us IDIpLCAwKTsKPisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9QRFAyX0xEVywgR0VOOF9SSU5H X1BEUF9MRFcoYmFzZSwgMiksIDApOwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1BEUDFf VURXLCBHRU44X1JJTkdfUERQX1VEVyhiYXNlLCAxKSwgMCk7Cj4rCUNUWF9SRUcoZW5naW5lLCBy ZWdzLCBDVFhfUERQMV9MRFcsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDEpLCAwKTsKPisJQ1RY X1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9QRFAwX1VEVywgR0VOOF9SSU5HX1BEUF9VRFcoYmFzZSwg MCksIDApOwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1BEUDBfTERXLCBHRU44X1JJTkdf UERQX0xEVyhiYXNlLCAwKSwgMCk7Cj4KPiAJaWYgKGk5MTVfdm1faXNfNGx2bCgmcHBndHQtPnZt KSkgewo+IAkJLyogNjRiIFBQR1RUICg0OGJpdCBjYW5vbmljYWwpCj5AQCAtMjYxMiw4ICsyNjE4 LDkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHUzMiAqcmVncywKPiAJ fQo+Cj4gCWlmIChyY3MpIHsKPi0JCXJlZ3NbQ1RYX0xSSV9IRUFERVJfMl0gPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSgxKTsKPi0JCUNUWF9SRUcocmVncywgQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VO OF9SX1BXUl9DTEtfU1RBVEUsIDApOwo+KwkJcmVnc1tDVFhfTFJJX0hFQURFUl8yXSA9IGk5MTVf Z2V0X2xyaV9jbWQoZW5naW5lLCAxKTsKPisJCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUl9Q V1JfQ0xLX1NUQVRFLAo+KwkJCUdFTjhfUl9QV1JfQ0xLX1NUQVRFLCAwKTsKPgo+IAkJaTkxNV9v YV9pbml0X3JlZ19zdGF0ZShlbmdpbmUsIGNlLCByZWdzKTsKPiAJfQo+ZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2xyY19yZWcuaAo+aW5kZXggNWVmOTMyZDgxMGE3Li40MGIxMTQyZDBkNzQg MTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmNfcmVnLmgKPisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaAo+QEAgLTM5LDEwICsz OSwxMCBAQAo+ICNkZWZpbmUgQ1RYX1JfUFdSX0NMS19TVEFURQkJMHg0Mgo+ICNkZWZpbmUgQ1RY X0VORAkJCQkweDQ0Cj4KPi0jZGVmaW5lIENUWF9SRUcocmVnX3N0YXRlLCBwb3MsIHJlZywgdmFs KSBkbyB7IFwKPisjZGVmaW5lIENUWF9SRUcoZW5naW5lLCByZWdfc3RhdGUsIHBvcywgcmVnLCB2 YWwpIGRvIHsgXAo+IAl1MzIgKnJlZ19zdGF0ZV9fID0gKHJlZ19zdGF0ZSk7IFwKPiAJY29uc3Qg dTMyIHBvc19fID0gKHBvcyk7IFwKPi0JKHJlZ19zdGF0ZV9fKVsocG9zX18pICsgMF0gPSBpOTE1 X21taW9fcmVnX29mZnNldChyZWcpOyBcCj4rCShyZWdfc3RhdGVfXylbKHBvc19fKSArIDBdID0g aTkxNV9nZXRfbHJpX3JlZygoZW5naW5lKSwgKHJlZykpOyBcCj4gCShyZWdfc3RhdGVfXylbKHBv c19fKSArIDFdID0gKHZhbCk7IFwKPiB9IHdoaWxlICgwKQo+Cj5kaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfbW9jcy5jCj5pbmRleCA3OWRmNjYwMjJkM2EuLjVkYWU2MzMzNDgxZCAxMDA2NDQKPi0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwo+KysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCj5AQCAtMzI0LDkgKzMyNCw2IEBAIHN0YXRpYyB1 MzIgZ2V0X2VudHJ5X2NvbnRyb2woY29uc3Qgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRh YmxlLAo+IC8qKgo+ICAqIGludGVsX21vY3NfaW5pdF9lbmdpbmUoKSAtIGVtaXQgdGhlIG1vY3Mg Y29udHJvbCB0YWJsZQo+ICAqIEBlbmdpbmU6CVRoZSBlbmdpbmUgZm9yIHdob20gdG8gZW1pdCB0 aGUgcmVnaXN0ZXJzLgo+LSAqCj4tICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgZW1pdHMgYSBNSV9M T0FEX1JFR0lTVEVSX0lNTSBjb21tYW5kIGZvciB0aGUKPi0gKiBnaXZlbiB0YWJsZSBzdGFydGlu ZyBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4KPiAgKi8KPiB2b2lkIGludGVsX21vY3NfaW5pdF9lbmdp bmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IHsKPkBAIC0zODAsMTggKzM3Nywy MCBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLAo+IAlpZiAoSVNfRVJSKGNzKSkKPiAJCXJldHVybiBQVFJfRVJSKGNzKTsKPgo+LQkq Y3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKHRhYmxlLT5uX2VudHJpZXMpOwo+KwkqY3MrKyA9 IGk5MTVfZ2V0X2xyaV9jbWQocnEtPmVuZ2luZSwgdGFibGUtPm5fZW50cmllcyk7Cj4KPiAJZm9y IChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUtPnNpemU7IGluZGV4KyspIHsKPiAJCXUzMiB2YWx1 ZSA9IGdldF9lbnRyeV9jb250cm9sKHRhYmxlLCBpbmRleCk7Cj4KPi0JCSpjcysrID0gaTkxNV9t bWlvX3JlZ19vZmZzZXQobW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7Cj4rCQkqY3MrKyA9 IGk5MTVfZ2V0X2xyaV9yZWcocnEtPmVuZ2luZSwKPisJCQkJCSBtb2NzX3JlZ2lzdGVyKGVuZ2lu ZSwgaW5kZXgpKTsKPiAJCSpjcysrID0gdmFsdWU7Cj4gCX0KPgo+IAkvKiBBbGwgcmVtYWluaW5n IGVudHJpZXMgYXJlIGFsc28gdW51c2VkICovCj4gCWZvciAoOyBpbmRleCA8IHRhYmxlLT5uX2Vu dHJpZXM7IGluZGV4KyspIHsKPi0JCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQobW9jc19y ZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7Cj4rCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcocnEt PmVuZ2luZSwKPisJCQkJCSBtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKPiAJCSpjcysr ID0gdW51c2VkX3ZhbHVlOwo+IAl9Cj4KPkBAIC00NDksNyArNDQ4LDExIEBAIHN0YXRpYyBpbnQg ZW1pdF9tb2NzX2wzY2NfdGFibGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gCWlmIChJU19F UlIoY3MpKQo+IAkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+Cj4tCSpjcysrID0gTUlfTE9BRF9SRUdJ U1RFUl9JTU0odGFibGUtPm5fZW50cmllcyAvIDIpOwo+KwkvKgo+KwkgKiBHRU45X0xOQ0ZDTU9D UyBpcyBub3QgZW5naW5lIHJlbGF0aXZlLCB0aGVyZWZvcmUgdGhlcmUgaXMgbm8KPisJICogbmVl ZCBmb3IgcmVsYXRpdmUgYWRkcmVzc2luZz8KPisJICovCj4rCSpjcysrID0gX19NSV9MT0FEX1JF R0lTVEVSX0lNTSh0YWJsZS0+bl9lbnRyaWVzIC8gMik7Cj4KPiAJZm9yIChpID0gMDsgaSA8IHRh YmxlLT5zaXplIC8gMjsgaSsrKSB7Cj4gCQl1MTYgbG93ID0gZ2V0X2VudHJ5X2wzY2ModGFibGUs IDIgKiBpKTsKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5n YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPmlu ZGV4IGYwZDYwYWZmZGJhMy4uZTk4YzJmZTcyN2E1IDEwMDY0NAo+LS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPkBAIC0xNTE2LDEyICsxNTE2LDEzIEBAIHN0YXRpYyBp bnQgbG9hZF9wZF9kaXIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gCWlmIChJU19FUlIoY3Mp KQo+IAkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+Cj4tCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSk7Cj4tCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfRENMVihl bmdpbmUtPm1taW9fYmFzZSkpOwo+KwkvKiBDYW4gdGhlc2Ugbm90IGJlIG1lcmdlZCBpbnRvIGEg c2luZ2xlIExSST8/PyAqLwo+KwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCAxKTsK PisJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgUklOR19QUF9ESVJfRENMVihlbmdp bmUtPm1taW9fYmFzZSkpOwo+IAkqY3MrKyA9IFBQX0RJUl9EQ0xWXzJHOwo+Cj4tCSpjcysrID0g TUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Cj4tCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo UklOR19QUF9ESVJfQkFTRShlbmdpbmUtPm1taW9fYmFzZSkpOwo+KwkqY3MrKyA9IGk5MTVfZ2V0 X2xyaV9jbWQoZW5naW5lLCAxKTsKPisJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwg UklOR19QUF9ESVJfQkFTRShlbmdpbmUtPm1taW9fYmFzZSkpOwo+IAkqY3MrKyA9IHBwZ3R0LT5w ZC5iYXNlLmdndHRfb2Zmc2V0IDw8IDEwOwo+Cj4gCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3Mp Owo+QEAgLTE1ODksNyArMTU5MCwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9zZXRfY29udGV4 dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQo+IAkJaWYgKG51bV9lbmdpbmVz KSB7Cj4gCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwo+Cj4tCQkJKmNzKysg PSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fZW5naW5lcyk7Cj4rCQkJLyoKPisJCQkgKiBNdXN0 IHVzZSBhYnNvbHV0ZSBlbmdpbmUgYWRkcmVzcyBhcyB0aGUgcmVnaXN0ZXIKPisJCQkgKiB3cml0 ZSBpcyB0YXJnZXRpbmcgYSBkaWZmZXJlbnQgZW5naW5lLgo+KwkJCSAqLwo+KwkJCSpjcysrID0g X19NSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fZW5naW5lcyk7Cj4gCQkJZm9yX2VhY2hfZW5naW5l KHNpZ25hbGxlciwgaTkxNSwgaWQpIHsKPiAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCj4g CQkJCQljb250aW51ZTsKPkBAIC0xNjQzLDcgKzE2NDgsMTEgQEAgc3RhdGljIGlubGluZSBpbnQg bWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBmbGFncykKPiAJCQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7Cj4gCQkJaTkxNV9yZWdfdCBsYXN0X3Jl ZyA9IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwo+Cj4tCQkJKmNzKysgPSBNSV9MT0FEX1JFR0lT VEVSX0lNTShudW1fZW5naW5lcyk7Cj4rCQkJLyoKPisJCQkgKiBNdXN0IHVzZSBhYnNvbHV0ZSBl bmdpbmUgYWRkcmVzcyBhcyB0aGUgcmVnaXN0ZXIKPisJCQkgKiB3cml0ZSBpcyB0YXJnZXRpbmcg YSBkaWZmZXJlbnQgZW5naW5lLgo+KwkJCSAqLwo+KwkJCSpjcysrID0gX19NSV9MT0FEX1JFR0lT VEVSX0lNTShudW1fZW5naW5lcyk7Cj4gCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxlciwgaTkx NSwgaWQpIHsKPiAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCj4gCQkJCQljb250aW51ZTsK PkBAIC0xNjg3LDkgKzE2OTYsOSBAQCBzdGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCBpbnQgc2xpY2UpCj4gCSAqIGhlcmUgYmVjYXVzZSBubyBvdGhlciBjb2RlIHNo b3VsZCBhY2Nlc3MgdGhlc2UgcmVnaXN0ZXJzIG90aGVyIHRoYW4KPiAJICogYXQgaW5pdGlhbGl6 YXRpb24gdGltZS4KPiAJICovCj4tCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VON19M M0xPR19TSVpFLzQpOwo+KwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQocnEtPmVuZ2luZSwgR0VO N19MM0xPR19TSVpFLzQpOwo+IAlmb3IgKGkgPSAwOyBpIDwgR0VON19MM0xPR19TSVpFLzQ7IGkr Kykgewo+LQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU43X0wzTE9HKHNsaWNlLCBp KSk7Cj4rCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcocnEtPmVuZ2luZSwgR0VON19MM0xPRyhz bGljZSwgaSkpOwo+IAkJKmNzKysgPSByZW1hcF9pbmZvW2ldOwo+IAl9Cj4gCSpjcysrID0gTUlf Tk9PUDsKPkBAIC0yMzM1LDMgKzIzNDQsMjMgQEAgaW50IGludGVsX3Jpbmdfc3VibWlzc2lvbl9p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAJaW50ZWxfZW5naW5lX2NsZWFu dXBfY29tbW9uKGVuZ2luZSk7Cj4gCXJldHVybiBlcnI7Cj4gfQo+Kwo+K3UzMiBpOTE1X2dldF9s cmlfY21kKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHdvcmRfY291 bnQpCj4rewo+Kwl1MzIgd29yZDsKPisKPisJd29yZCA9IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0o d29yZF9jb3VudCk7Cj4rCj4rCWlmIChpOTE1X2VuZ2luZV9oYXNfcmVsYXRpdmVfbHJpKGVuZ2lu ZSkpCj4rCQl3b3JkIHw9IE1JX0xSSV9BRERfQ1NfTU1JT19TVEFSVF9HRU4xMTsKPisKPisJcmV0 dXJuIHdvcmQ7Cj4rfQo+Kwo+K3UzMiBpOTE1X2dldF9scmlfcmVnKGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwgaTkxNV9yZWdfdCByZWcpCj4rewo+KwlpZiAoIWk5MTVfZW5n aW5lX2hhc19yZWxhdGl2ZV9scmkoZW5naW5lKSkKPisJCXJldHVybiBpOTE1X21taW9fcmVnX29m ZnNldChyZWcpOwo+Kwo+KwlyZXR1cm4gaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSAtIGVuZ2lu ZS0+bW1pb19iYXNlOwo+K30KPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fy b3VuZHMuYwo+aW5kZXggNDNlMjkwMzA2NTUxLi5kNWVkYzEwYzg2MGMgMTAwNjQ0Cj4tLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj4rKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj5AQCAtNjI1LDkgKzYyNSw5IEBA IGludCBpbnRlbF9lbmdpbmVfZW1pdF9jdHhfd2Eoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4g CWlmIChJU19FUlIoY3MpKQo+IAkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+Cj4tCSpjcysrID0gTUlf TE9BRF9SRUdJU1RFUl9JTU0od2FsLT5jb3VudCk7Cj4rCSpjcysrID0gaTkxNV9nZXRfbHJpX2Nt ZChycS0+ZW5naW5lLCB3YWwtPmNvdW50KTsKPiAJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7 IGkgPCB3YWwtPmNvdW50OyBpKyssIHdhKyspIHsKPi0JCSpjcysrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQod2EtPnJlZyk7Cj4rCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcocnEtPmVuZ2luZSwg d2EtPnJlZyk7Cj4gCQkqY3MrKyA9IHdhLT52YWw7Cj4gCX0KPiAJKmNzKysgPSBNSV9OT09QOwo+ ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCj5pbmRl eCA5Zjc2ODBiOTk4NGIuLmIwNTEzYzFkZTUzYyAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPkBAIC00NDIsNiArNDQyLDcgQEAgc3RhdGlj IGludCBjaGVja19kaXJ0eV93aGl0ZWxpc3Qoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK Pgo+IAlmb3IgKGkgPSAwOyBpIDwgZW5naW5lLT53aGl0ZWxpc3QuY291bnQ7IGkrKykgewo+IAkJ dTMyIHJlZyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KGVuZ2luZS0+d2hpdGVsaXN0Lmxpc3RbaV0u cmVnKTsKPisJCXUzMiByZWdMUkkgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgZW5naW5lLT53 aGl0ZWxpc3QubGlzdFtpXS5yZWcpOwo+IAkJdTY0IGFkZHIgPSBzY3JhdGNoLT5ub2RlLnN0YXJ0 Owo+IAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gCQl1MzIgc3JtLCBscm0sIHJzdmQ7Cj5A QCAtNDc0LDggKzQ3NSw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfZGlydHlfd2hpdGVsaXN0KHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gCQlpZHggPSAxOwo+IAkJZm9yICh2ID0gMDsgdiA8 IEFSUkFZX1NJWkUodmFsdWVzKTsgdisrKSB7Cj4gCQkJLyogTFJJIGdhcmJhZ2UgKi8KPi0JCQkq Y3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwo+LQkJCSpjcysrID0gcmVnOwo+KwkJCSpj cysrID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDEpOwo+KwkJCSpjcysrID0gcmVnTFJJOwo+ IAkJCSpjcysrID0gdmFsdWVzW3ZdOwo+Cj4gCQkJLyogU1JNIHJlc3VsdCAqLwo+QEAgLTQ4Nyw4 ICs0ODgsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2RpcnR5X3doaXRlbGlzdChzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAo+IAkJfQo+IAkJZm9yICh2ID0gMDsgdiA8IEFSUkFZX1NJWkUodmFs dWVzKTsgdisrKSB7Cj4gCQkJLyogTFJJIGdhcmJhZ2UgKi8KPi0JCQkqY3MrKyA9IE1JX0xPQURf UkVHSVNURVJfSU1NKDEpOwo+LQkJCSpjcysrID0gcmVnOwo+KwkJCSpjcysrID0gaTkxNV9nZXRf bHJpX2NtZChlbmdpbmUsIDEpOwo+KwkJCSpjcysrID0gcmVnTFJJOwo+IAkJCSpjcysrID0gfnZh bHVlc1t2XTsKPgo+IAkJCS8qIFNSTSByZXN1bHQgKi8KPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv bW1pb19jb250ZXh0LmMKPmluZGV4IGEyN2JkZDM5NTFmNi4uMzgwN2NlNWZlNTY0IDEwMDY0NAo+ LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5jCj4rKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKPkBAIC0yMDAsMTQgKzIwMCwxNCBA QCByZXN0b3JlX2NvbnRleHRfbW1pb19mb3JfaW5oaWJpdChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdw dSwKPiAJaWYgKElTX0VSUihjcykpCj4gCQlyZXR1cm4gUFRSX0VSUihjcyk7Cj4KPi0JKmNzKysg PSBNSV9MT0FEX1JFR0lTVEVSX0lNTShjb3VudCk7Cj4rCSpjcysrID0gaTkxNV9nZXRfbHJpX2Nt ZChyZXEtPmVuZ2luZSwgY291bnQpOwo+IAlmb3IgKG1taW8gPSBndnQtPmVuZ2luZV9tbWlvX2xp c3QubW1pbzsKPiAJICAgICBpOTE1X21taW9fcmVnX3ZhbGlkKG1taW8tPnJlZyk7IG1taW8rKykg ewo+IAkJaWYgKG1taW8tPnJpbmdfaWQgIT0gcmluZ19pZCB8fAo+IAkJICAgICFtbWlvLT5pbl9j b250ZXh0KQo+IAkJCWNvbnRpbnVlOwo+Cj4tCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KG1taW8tPnJlZyk7Cj4rCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcocmVxLT5lbmdpbmUsIG1t aW8tPnJlZyk7Cj4gCQkqY3MrKyA9IHZncHVfdnJlZ190KHZncHUsIG1taW8tPnJlZykgfAo+IAkJ CQkobW1pby0+bWFzayA8PCAxNik7Cj4gCQlndnRfZGJnX2NvcmUoImFkZCBscmkgcmVnIHBhaXIg MHgleDoweCV4IGluIGluaGliaXQgY3R4LCB2Z3B1OiVkLCByaW5kX2lkOiVkXG4iLAo+QEAgLTIz NSw3ICsyMzUsMTEgQEAgcmVzdG9yZV9yZW5kZXJfbW9jc19jb250cm9sX2Zvcl9pbmhpYml0KHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAo+IAlpZiAoSVNfRVJSKGNzKSkKPiAJCXJldHVybiBQVFJf RVJSKGNzKTsKPgo+LQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTU9DU19TSVpF KTsKPisJLyoKPisJICogR0VOOV9HRlhfTU9DUyBpcyBub3QgZW5naW5lIHJlbGF0aXZlLCB0aGVy ZWZvcmUgdGhlcmUgaXMgbm8KPisJICogbmVlZCBmb3IgcmVsYXRpdmUgYWRkcmVzc2luZy4KPisJ ICovCj4rCSpjcysrID0gX19NSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X01PQ1NfU0laRSk7Cj4K PiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgR0VOOV9NT0NTX1NJWkU7IGluZGV4KyspIHsKPiAJ CSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9HRlhfTU9DUyhpbmRleCkpOwo+QEAg LTI2Miw3ICsyNjYsMTEgQEAgcmVzdG9yZV9yZW5kZXJfbW9jc19sM2NjX2Zvcl9pbmhpYml0KHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAo+IAlpZiAoSVNfRVJSKGNzKSkKPiAJCXJldHVybiBQVFJf RVJSKGNzKTsKPgo+LQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTU9DU19TSVpF IC8gMik7Cj4rCS8qCj4rCSAqIEdFTjlfTE5DRkNNT0NTIGlzIG5vdCBlbmdpbmUgcmVsYXRpdmUs IHRoZXJlZm9yZSB0aGVyZSBpcyBubwo+KwkgKiBuZWVkIGZvciByZWxhdGl2ZSBhZGRyZXNzaW5n Lgo+KwkgKi8KPisJKmNzKysgPSBfX01JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTU9DU19TSVpF IC8gMik7Cj4KPiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgR0VOOV9NT0NTX1NJWkUgLyAyOyBp bmRleCsrKSB7Cj4gCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjlfTE5DRkNNT0NT KGluZGV4KSk7Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFy c2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+aW5kZXggZTlm YWRjYjRkNTkyLi5mZDE4M2U3MmRhY2UgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2NtZF9wYXJzZXIuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRf cGFyc2VyLmMKPkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkx NV9jbWRfZGVzY3JpcHRvciBjb21tb25fY21kc1tdID0gewo+IAlDTUQoICBNSV9TVVNQRU5EX0ZM VVNILCAgICAgICAgICAgICAgICAgU01JLCAgICBGLCAgMSwgICAgICBTICApLAo+IAlDTUQoICBN SV9TRU1BUEhPUkVfTUJPWCwgICAgICAgICAgICAgICAgU01JLCAgICFGLCAgMHhGRiwgICBSICAp LAo+IAlDTUQoICBNSV9TVE9SRV9EV09SRF9JTkRFWCwgICAgICAgICAgICAgU01JLCAgICFGLCAg MHhGRiwgICBSICApLAo+LQlDTUQoICBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSwgICAgICAgICAg U01JLCAgICFGLCAgMHhGRiwgICBXLAo+KwlDTUQoICBfX01JX0xPQURfUkVHSVNURVJfSU1NKDEp LCAgICAgICAgU01JLCAgICFGLCAgMHhGRiwgICBXLAo+IAkgICAgICAucmVnID0geyAub2Zmc2V0 ID0gMSwgLm1hc2sgPSAweDAwN0ZGRkZDLCAuc3RlcCA9IDIgfSAgICApLAo+IAlDTUQoICBNSV9T VE9SRV9SRUdJU1RFUl9NRU0sICAgICAgICAgICAgU01JLCAgICBGLCAgMywgICAgIFcgfCBCLAo+ IAkgICAgICAucmVnID0geyAub2Zmc2V0ID0gMSwgLm1hc2sgPSAweDAwN0ZGRkZDIH0sCj5AQCAt MTE4Myw3ICsxMTgzLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfY21kKGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAJCQkJCXJldHVybiBmYWxzZTsKPiAJCQkJfQo+Cj4tCQkJ CWlmIChkZXNjLT5jbWQudmFsdWUgPT0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkgJiYKPisJCQkJ aWYgKGRlc2MtPmNtZC52YWx1ZSA9PSBfX01JX0xPQURfUkVHSVNURVJfSU1NKDEpICYmCj4gCQkJ CSAgICAob2Zmc2V0ICsgMiA+IGxlbmd0aCB8fAo+IAkJCQkgICAgIChjbWRbb2Zmc2V0ICsgMV0g JiByZWctPm1hc2spICE9IHJlZy0+dmFsdWUpKSB7Cj4gCQkJCQlEUk1fREVCVUdfRFJJVkVSKCJD TUQ6IFJlamVjdGVkIExSSSB0byBtYXNrZWQgcmVnaXN0ZXIgMHglMDhYXG4iLAo+ZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+aW5kZXggNjVjZWZjNTIwZTc5Li45ODI2MGQ4 YTQ1YmUgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+QEAgLTEw MjYsMTEgKzEwMjYsMTEgQEAgc3RhdGljIGludCBlbWl0X3BwZ3R0X3VwZGF0ZShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKPiAJCWlmIChJU19FUlIoY3MpKQo+IAkJCXJldHVy biBQVFJfRVJSKGNzKTsKPgo+LQkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsKPisJ CSpjcysrID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDIpOwo+Cj4tCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDApKTsKPisJCSpjcysrID0g aTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDApKTsKPiAJ CSpjcysrID0gdXBwZXJfMzJfYml0cyhwZF9kYWRkcik7Cj4tCQkqY3MrKyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDApKTsKPisJCSpjcysrID0gaTkxNV9n ZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDApKTsKPiAJCSpjcysr ID0gbG93ZXJfMzJfYml0cyhwZF9kYWRkcik7Cj4KPiAJCSpjcysrID0gTUlfTk9PUDsKPkBAIC0x MDQwLDEzICsxMDQwLDEzIEBAIHN0YXRpYyBpbnQgZW1pdF9wcGd0dF91cGRhdGUoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEsIHZvaWQgKmRhdGEpCj4gCQlpZiAoSVNfRVJSKGNzKSkKPiAJCQlyZXR1 cm4gUFRSX0VSUihjcyk7Cj4KPi0JCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMiAqIEdF TjhfM0xWTF9QRFBFUyk7Cj4rCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCAyICog R0VOOF8zTFZMX1BEUEVTKTsKPiAJCWZvciAoaSA9IEdFTjhfM0xWTF9QRFBFUzsgaS0tOyApIHsK PiAJCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihw cGd0dCwgaSk7Cj4KPi0JCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19Q RFBfVURXKGJhc2UsIGkpKTsKPisJCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBH RU44X1JJTkdfUERQX1VEVyhiYXNlLCBpKSk7Cj4gCQkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBk X2RhZGRyKTsKPi0JCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBf TERXKGJhc2UsIGkpKTsKPisJCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBHRU44 X1JJTkdfUERQX0xEVyhiYXNlLCBpKSk7Cj4gCQkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2Rh ZGRyKTsKPiAJCX0KPiAJCSpjcysrID0gTUlfTk9PUDsKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKPmluZGV4IDY3OWY3YzE1NjFiYS4uYWM1YjA2ZDJmZmRjIDEw MDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4r KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPkBAIC0xOTYz LDcgKzE5NjMsOCBAQCBzdGF0aWMgaW50IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAJaWYgKElTX0VSUihjcykpCj4gCQlyZXR1cm4gUFRSX0VS Uihjcyk7Cj4KPi0JKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSg0KTsKPisJLyogR2VuNyBv bmx5IHNvIG5vIG5lZWQgdG8gc3VwcG9ydCByZWxhdGl2ZSBvZmZzZXRzICovCj4rCSpjcysrID0g X19NSV9MT0FEX1JFR0lTVEVSX0lNTSg0KTsKPiAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ IAkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU43X1NPX1dSSVRFX09GRlNFVChpKSk7 Cj4gCQkqY3MrKyA9IDA7Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+aW5kZXggYzQ5OTVkNWEx NmQyLi44NmZhY2JjY2RiMDIgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPkBAIC0xNjM2 LDcgKzE2MzYsOCBAQCBzdGF0aWMgdm9pZCBoc3dfZGlzYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgKiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBPQSB1 bml0IGhhcyBiZWVuIGRpc2FibGVkLgo+ICAqLwo+IHN0YXRpYyB2b2lkCj4tZ2VuOF91cGRhdGVf cmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPitnZW44X3VwZGF0 ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+KwkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gCQkJICAgICAgIHUzMiAqcmVnX3N0 YXRlLAo+IAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykK PiB7Cj5AQCAtMTY1NSw3ICsxNjU2LDEyIEBAIGdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tl ZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gCX07Cj4gCWludCBpOwo+Cj4tCUNUWF9SRUco cmVnX3N0YXRlLCBjdHhfb2FjdHhjdHJsLCBHRU44X09BQ1RYQ09OVFJPTCwKPisJLyoKPisJICog TkI6IFRoZSBMUkkgaW5zdHJ1Y3Rpb24gaXMgZ2VuZXJhdGVkIGJ5IHRoZSBoYXJkd2FyZS4KPisJ ICogU2hvdWxkIHdlIHJlYWQgaXQgaW4gYW5kIGFzc2VydCB0aGF0IHRoZSBvZmZzZXQgZmxhZyBp cyBzZXQ/Cj4rCSAqLwo+Kwo+KwlDVFhfUkVHKGVuZ2luZSwgcmVnX3N0YXRlLCBjdHhfb2FjdHhj dHJsLCBHRU44X09BQ1RYQ09OVFJPTCwKPiAJCShpOTE1LT5wZXJmLm9hLnBlcmlvZF9leHBvbmVu dCA8PCBHRU44X09BX1RJTUVSX1BFUklPRF9TSElGVCkgfAo+IAkJKGk5MTUtPnBlcmYub2EucGVy aW9kaWMgPyBHRU44X09BX1RJTUVSX0VOQUJMRSA6IDApIHwKPiAJCUdFTjhfT0FfQ09VTlRFUl9S RVNVTUUpOwo+QEAgLTE2ODIsMTAgKzE2ODgsMTAgQEAgZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3Vu bG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAJCQl9Cj4gCQl9Cj4KPi0JCUNUWF9S RUcocmVnX3N0YXRlLCBzdGF0ZV9vZmZzZXQsIGZsZXhfcmVnc1tpXSwgdmFsdWUpOwo+KwkJQ1RY X1JFRyhlbmdpbmUsIHJlZ19zdGF0ZSwgc3RhdGVfb2Zmc2V0LCBmbGV4X3JlZ3NbaV0sIHZhbHVl KTsKPiAJfQo+Cj4tCUNUWF9SRUcocmVnX3N0YXRlLAo+KwlDVFhfUkVHKGVuZ2luZSwgcmVnX3N0 YXRlLAo+IAkJQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsCj4gCQlp bnRlbF9zc2V1X21ha2VfcnBjcyhpOTE1LCAmY2UtPnNzZXUpKTsKPiB9Cj5AQCAtMTc3MCw3ICsx Nzc2LDcgQEAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IAkJCWNlLT5zdGF0ZS0+b2JqLT5tbS5kaXJ0eSA9 IHRydWU7Cj4gCQkJcmVncyArPSBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgLyBzaXplb2YoKnJl Z3MpOwo+Cj4tCQkJZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKGNlLCByZWdzLCBvYV9j b25maWcpOwo+KwkJCWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChkZXZfcHJpdi0+ZW5n aW5lW1JDUzBdLCBjZSwgcmVncywgb2FfY29uZmlnKTsKPgo+IAkJCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+IAkJfQo+QEAgLTIxNjYsNyArMjE3Miw4IEBAIHZv aWQgaTkxNV9vYV9pbml0X3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Cj4KPiAJc3RyZWFtID0gZW5naW5lLT5pOTE1LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW07Cj4g CWlmIChzdHJlYW0pCj4tCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoY2UsIHJlZ3Ms IHN0cmVhbS0+b2FfY29uZmlnKTsKPisJCWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChl bmdpbmUsIGNlLCByZWdzLAo+KwkJCQkJICAgICAgIHN0cmVhbS0+b2FfY29uZmlnKTsKPiB9Cj4K PiAvKioKPi0tIAo+Mi4yMS4wLjUuZ2FlYjU4MmE5ODMKPgo+X19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPkludGVsLWdmeCBtYWlsaW5nIGxpc3QKPkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==