From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH i-g-t v4 5/7] lib/igt_kms: Rework plane properties to be more atomic, v4. Date: Wed, 4 Oct 2017 09:26:08 +0200 Message-ID: <9f482bb1-b482-8221-2b09-fa5eda1cd28c@linux.intel.com> References: <20170929095937.15702-1-maarten.lankhorst@linux.intel.com> <20170929095937.15702-6-maarten.lankhorst@linux.intel.com> <1507032303.3274.32.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id BAD6C6E113 for ; Wed, 4 Oct 2017 07:26:10 +0000 (UTC) In-Reply-To: <1507032303.3274.32.camel@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: mika.kahola@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDMtMTAtMTcgb20gMTQ6MDUgc2NocmVlZiBNaWthIEthaG9sYToKPiBPbiBGcmksIDIwMTct MDktMjkgYXQgMTE6NTkgKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBJbiB0aGUg ZnV0dXJlIEkgd2FudCB0byBhbGxvdyB0ZXN0cyB0byBjb21taXQgbW9yZSBwcm9wZXJ0aWVzLAo+ PiBidXQgZm9yIHRoaXMgdG8gd29yayBJIGhhdmUgdG8gZml4IGFsbCBwcm9wZXJ0aWVzIHRvIHdv cmsgYmV0dGVyCj4+IHdpdGggYXRvbWljIGNvbW1pdC4gSW5zdGVhZCBvZiBzcGVjaWFsIGNhc2lu ZyBlYWNoCj4+IHByb3BlcnR5IG1ha2UgYSBiaXRtYXNrIGZvciBhbGwgcHJvcGVydHkgY2hhbmdl ZCBmbGFncywgYW5kIHRyeSB0bwo+PiBjb21taXQgYWxsIHByb3BlcnRpZXMuCj4+Cj4+IENoYW5n ZXMgc2luY2UgdjE6Cj4+IC0gUmVtb3ZlIHNwZWNpYWwgZHVtcGluZyBvZiBzcmMgYW5kIGNydGMg Y29vcmRpbmF0ZXMuCj4+IC0gRHVtcCBhbGwgbW9kaWZpZWQgY29vcmRpbmF0ZXMuCj4+IENoYW5n ZXMgc2luY2UgdjI6Cj4+IC0gTW92ZSBpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZCB1cCBzbGln aHRseS4KPj4gQ2hhbmdlcyBzaW5jZSB2MzoKPj4gLSBGaXggd3Jvbmcgb3JkZXJpbmcgb2Ygc2V0 X3Bvc2l0aW9uIGluIGttc19wbGFuZV9sb3dyZXMgY2F1c2luZyBhCj4+IHRlc3QgZmFpbHVyZS4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+ICBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAg ICAgICB8IDI5MyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KPj4gLS0tLS0tLS0tLS0tCj4+ ICBsaWIvaWd0X2ttcy5oICAgICAgICAgICAgICAgICAgICB8ICA1OSArKysrLS0tLQo+PiAgdGVz dHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMgfCAgMTIgKy0KPj4gIHRlc3RzL2ttc19wbGFu ZV9sb3dyZXMuYyAgICAgICAgIHwgICAyICstCj4+ICB0ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMg ICAgICAgICB8ICAgNCArLQo+PiAgNSBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwg MjEwIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9p Z3Rfa21zLmMKPj4gaW5kZXggMDdkMjA3NGMyYjFhLi42ZTAwNTJlYmU3YTcgMTAwNjQ0Cj4+IC0t LSBhL2xpYi9pZ3Rfa21zLmMKPj4gKysrIGIvbGliL2lndF9rbXMuYwo+PiBAQCAtMTkyLDExICsx OTIsMTEgQEAgY29uc3QgY2hhcgo+PiAqaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9OVU1f Q09OTkVDVE9SX1BST1BTXSA9IHsKPj4gIAo+PiAgLyoKPj4gICAqIFJldHJpZXZlIGFsbCB0aGUg cHJvcGVyaWVzIHNwZWNpZmllZCBpbiBwcm9wc19uYW1lIGFuZCBzdG9yZSB0aGVtCj4+IGludG8K Pj4gLSAqIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmUuCj4+ICsgKiBwbGFuZS0+cHJvcHMuCj4+ ICAgKi8KPj4gIHN0YXRpYyB2b2lkCj4+IC1pZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BsYW5lX3QKPj4gKnBsYW5lLAo+PiAtCQkJaW50IG51 bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3BfbmFtZXMpCj4+ICtpZ3RfZmlsbF9wbGFuZV9wcm9w cyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4+ICsJCSAgICAg aW50IG51bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3BfbmFtZXMpCj4+ICB7Cj4+ICAJZHJtTW9k ZU9iamVjdFByb3BlcnRpZXNQdHIgcHJvcHM7Cj4+ICAJaW50IGksIGosIGZkOwo+PiBAQCAtMjE0 LDcgKzIxNCw3IEBAIGlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90Cj4+ ICpkaXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4+ICAJCQlpZiAoc3RyY21wKHByb3AtPm5h bWUsIHByb3BfbmFtZXNbal0pICE9IDApCj4+ICAJCQkJY29udGludWU7Cj4+ICAKPj4gLQkJCXBs YW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbal0gPSBwcm9wcy0KPj4+IHByb3BzW2ldOwo+PiArCQkJ cGxhbmUtPnByb3BzW2pdID0gcHJvcHMtPnByb3BzW2ldOwo+PiAgCQkJYnJlYWs7Cj4+ICAJCX0K Pj4gIAo+PiBAQCAtMTY1OSw3ICsxNjU5LDYgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9k aXNwbGF5X3QgKmRpc3BsYXksCj4+IGludCBkcm1fZmQpCj4+ICAJZHJtTW9kZVJlcyAqcmVzb3Vy Y2VzOwo+PiAgCWRybU1vZGVQbGFuZVJlcyAqcGxhbmVfcmVzb3VyY2VzOwo+PiAgCWludCBpOwo+ PiAtCWludCBpc19hdG9taWMgPSAwOwo+PiAgCj4+ICAJbWVtc2V0KGRpc3BsYXksIDAsIHNpemVv ZihpZ3RfZGlzcGxheV90KSk7Cj4+ICAKPj4gQEAgLTE2NzksNyArMTY3OCw5IEBAIHZvaWQgaWd0 X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LAo+PiBpbnQgZHJtX2ZkKQo+PiAg CWlndF9hc3NlcnRfZihkaXNwbGF5LT5waXBlcywgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkg Zm9yCj4+ICVkIHBpcGVzXG4iLCBkaXNwbGF5LT5uX3BpcGVzKTsKPj4gIAo+PiAgCWRybVNldENs aWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQX1VOSVZFUlNBTF9QTEFORVMsIDEpOwo+PiAt CWlzX2F0b21pYyA9IGRybVNldENsaWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQX0FUT01J QywKPj4gMSk7Cj4+ICsJaWYgKGRybVNldENsaWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQ X0FUT01JQywgMSkgPT0gMCkKPj4gKwkJZGlzcGxheS0+aXNfYXRvbWljID0gMTsKPj4gKwo+PiAg CXBsYW5lX3Jlc291cmNlcyA9IGRybU1vZGVHZXRQbGFuZVJlc291cmNlcyhkaXNwbGF5LT5kcm1f ZmQpOwo+PiAgCWlndF9hc3NlcnQocGxhbmVfcmVzb3VyY2VzKTsKPj4gIAo+PiBAQCAtMTc3Niwx OSArMTc3NywxOSBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxh eSwKPj4gaW50IGRybV9mZCkKPj4gIAkJCXBsYW5lLT50eXBlID0gdHlwZTsKPj4gIAkJCXBsYW5l LT5waXBlID0gcGlwZTsKPj4gIAkJCXBsYW5lLT5kcm1fcGxhbmUgPSBkcm1fcGxhbmU7Cj4+IC0J CQlwbGFuZS0+ZmVuY2VfZmQgPSAtMTsKPj4gKwkJCXBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0lO X0ZFTkNFX0ZEXSA9Cj4+IH4wVUxMOwo+PiAgCj4+IC0JCQlpZiAoaXNfYXRvbWljID09IDApIHsK Pj4gLQkJCQlkaXNwbGF5LT5pc19hdG9taWMgPSAxOwo+PiAtCQkJCWlndF9hdG9taWNfZmlsbF9w bGFuZV9wcm9wcyhkaXNwbGF5LAo+PiBwbGFuZSwgSUdUX05VTV9QTEFORV9QUk9QUywgaWd0X3Bs YW5lX3Byb3BfbmFtZXMpOwo+PiAtCQkJfQo+PiArCQkJaWd0X2ZpbGxfcGxhbmVfcHJvcHMoZGlz cGxheSwgcGxhbmUsCj4+IElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVz KTsKPj4gIAo+PiAgCQkJZ2V0X3BsYW5lX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwKPj4gZHJt X3BsYW5lLT5wbGFuZV9pZCwKPj4gIAkJCQkJICAgInJvdGF0aW9uIiwKPj4gLQkJCQkJICAgJnBs YW5lLQo+Pj4gcm90YXRpb25fcHJvcGVydHksCj4+IC0JCQkJCSAgICZwcm9wX3ZhbHVlLAo+PiAr CQkJCQkgICAmcGxhbmUtCj4+PiBwcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dLAo+PiArCQkJCQkg ICAmcGxhbmUtCj4+PiB2YWx1ZXNbSUdUX1BMQU5FX1JPVEFUSU9OXSwKPj4gIAkJCQkJICAgTlVM TCk7Cj4+IC0JCQlwbGFuZS0+cm90YXRpb24gPQo+PiAoaWd0X3JvdGF0aW9uX3QpcHJvcF92YWx1 ZTsKPj4gKwo+PiArCQkJLyogQ2xlYXIgYW55IHJlc2lkdWFsIGZyYW1lYnVmZmVyIG9uIGZpcnN0 Cj4+IGNvbW1pdC4gKi8KPj4gKwkJCWlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkKHBsYW5lLAo+ PiBJR1RfUExBTkVfRkJfSUQpOwo+PiArCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxh bmUsCj4+IElHVF9QTEFORV9DUlRDX0lEKTsKPj4gIAkJfQo+PiAgCj4+ICAJCS8qCj4+IEBAIC0x ODA1LDkgKzE4MDYsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwKPj4gaW50IGRybV9mZCkKPj4gIAo+PiAgCQlwaXBlLT5uX3BsYW5lcyA9IG5fcGxhbmVz Owo+PiAgCj4+IC0JCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgaSwgcGxhbmUpCj4+ IC0JCQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4+IC0KPj4gIAkJcGlwZS0+bW9kZV9jaGFu Z2VkID0gdHJ1ZTsKPj4gIAl9Cj4+ICAKPj4gQEAgLTIwNzAsMTggKzIwNjgsNyBAQCBib29sIGln dF9waXBlX2dldF9wcm9wZXJ0eShpZ3RfcGlwZV90ICpwaXBlLAo+PiBjb25zdCBjaGFyICpuYW1l LAo+PiAgCj4+ICBzdGF0aWMgdWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9pZChpZ3RfcGxhbmVf dCAqcGxhbmUpCj4+ICB7Cj4+IC0JaWYgKHBsYW5lLT5mYikKPj4gLQkJcmV0dXJuIHBsYW5lLT5m Yi0+ZmJfaWQ7Cj4+IC0JZWxzZQo+PiAtCQlyZXR1cm4gMDsKPj4gLX0KPj4gLQo+PiAtc3RhdGlj IHVpbnQzMl90IGlndF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUp Cj4+IC17Cj4+IC0JaWYgKHBsYW5lLT5mYikKPj4gLQkJcmV0dXJuIHBsYW5lLT5mYi0+Z2VtX2hh bmRsZTsKPj4gLQllbHNlCj4+IC0JCXJldHVybiAwOwo+PiArCXJldHVybiBwbGFuZS0+dmFsdWVz W0lHVF9QTEFORV9GQl9JRF07Cj4+ICB9Cj4+ICAKPj4gICNkZWZpbmUgQ0hFQ0tfUkVUVVJOKHIs IGZhaWwpIHsJXAo+PiBAQCAtMjA5MCw5ICsyMDc3LDYgQEAgc3RhdGljIHVpbnQzMl90Cj4+IGln dF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUpCj4+ICAJaWd0X2Fz c2VydF9lcShyLCAwKTsJXAo+PiAgfQo+PiAgCj4+IC0KPj4gLQo+PiAtCj4+ICAvKgo+PiAgICog QWRkIHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIG9mIGEgcGxhbmUgdG8gdGhlIGF0b21pYyBwcm9w ZXJ0eSBzZXQKPj4gICAqLwo+PiBAQCAtMjEwMSw2MyArMjA4NSwzMSBAQCBpZ3RfYXRvbWljX3By ZXBhcmVfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90Cj4+ICpwbGFuZSwgaWd0X3BpcGVfdCAqcGlw ZSwKPj4gIAlkcm1Nb2RlQXRvbWljUmVxICpyZXEpCj4+ICB7Cj4+ICAJaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSA9IHBpcGUtPmRpc3BsYXk7Cj4+IC0JdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7Cj4+ ICsJaW50IGk7Cj4+ICAKPj4gIAlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOwo+PiAgCj4+ IC0JLyogaXQncyBhbiBlcnJvciB0byB0cnkgYW4gdW5zdXBwb3J0ZWQgZmVhdHVyZSAqLwo+PiAt CWlndF9hc3NlcnQoaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKHBsYW5lKSB8fAo+PiAtCQkJ IXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkKTsKPj4gLQo+PiAtCWZiX2lkID0gaWd0X3BsYW5lX2dl dF9mYl9pZChwbGFuZSk7Cj4+IC0JY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7Cj4+IC0KPj4gIAlM T0coZGlzcGxheSwKPj4gIAkgICAgInBvcHVsYXRpbmcgcGxhbmUgZGF0YTogJXMuJWQsIGZiICV1 XG4iLAo+PiAgCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPj4gIAkgICAgcGxh bmUtPmluZGV4LAo+PiAtCSAgICBmYl9pZCk7Cj4+IC0KPj4gLQlpZiAocGxhbmUtPmZlbmNlX2Zk ID49IDApIHsKPj4gLQkJdWludDY0X3QgZmVuY2VfZmQgPSAoaW50NjRfdCkgcGxhbmUtPmZlbmNl X2ZkOwo+PiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+PiBJ R1RfUExBTkVfSU5fRkVOQ0VfRkQsIGZlbmNlX2ZkKTsKPj4gLQl9Cj4+ICsJICAgIGlndF9wbGFu ZV9nZXRfZmJfaWQocGxhbmUpKTsKPj4gIAo+PiAtCWlmIChwbGFuZS0+ZmJfY2hhbmdlZCkgewo+ PiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+PiBJR1RfUExB TkVfQ1JUQ19JRCwgZmJfaWQgPyBjcnRjX2lkIDogMCk7Cj4+IC0JCWlndF9hdG9taWNfcG9wdWxh dGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4+IElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOwo+PiAt CX0KPj4gLQo+PiAtCWlmIChwbGFuZS0+cG9zaXRpb25fY2hhbmdlZCB8fCBwbGFuZS0+c2l6ZV9j aGFuZ2VkKSB7Cj4+IC0JCXVpbnQzMl90IHNyY194ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfeCwg MCk7IC8qCj4+IHNyY194ICovCj4+IC0JCXVpbnQzMl90IHNyY195ID0gSUdUX0ZJWEVEKHBsYW5l LT5zcmNfeSwgMCk7IC8qCj4+IHNyY195ICovCj4+IC0JCXVpbnQzMl90IHNyY193ID0gSUdUX0ZJ WEVEKHBsYW5lLT5zcmNfdywgMCk7IC8qCj4+IHNyY193ICovCj4+IC0JCXVpbnQzMl90IHNyY19o ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfaCwgMCk7IC8qCj4+IHNyY19oICovCj4+IC0JCWludDMy X3QgY3J0Y194ID0gcGxhbmUtPmNydGNfeDsKPj4gLQkJaW50MzJfdCBjcnRjX3kgPSBwbGFuZS0+ Y3J0Y195Owo+PiAtCQl1aW50MzJfdCBjcnRjX3cgPSBwbGFuZS0+Y3J0Y193Owo+PiAtCQl1aW50 MzJfdCBjcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+PiArCWZvciAoaSA9IDA7IGkgPCBJR1RfTlVN X1BMQU5FX1BST1BTOyBpKyspIHsKPj4gKwkJaWYgKCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2Vk KHBsYW5lLCBpKSkKPj4gKwkJCWNvbnRpbnVlOwo+PiAgCj4+IC0JCUxPRyhkaXNwbGF5LAo+PiAt CQkic3JjID0gKCVkLCAlZCkgJXUgeCAldSAiCj4+IC0JCSJkc3QgPSAoJWQsICVkKSAldSB4ICV1 XG4iLAo+PiAtCQlzcmNfeCA+PiAxNiwgc3JjX3kgPj4gMTYsIHNyY193ID4+IDE2LCBzcmNfaCA+ PiAxNiwKPj4gLQkJY3J0Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oKTsKPj4gKwkJLyogaXQn cyBhbiBlcnJvciB0byB0cnkgYW4gdW5zdXBwb3J0ZWQgZmVhdHVyZSAqLwo+PiArCQlpZ3RfYXNz ZXJ0KHBsYW5lLT5wcm9wc1tpXSk7Cj4+ICAKPj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwKPj4gSUdUX1BMQU5FX1NSQ19YLCBzcmNfeCk7Cj4+IC0JCWlndF9h dG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4+IElHVF9QTEFORV9TUkNfWSwg c3JjX3kpOwo+PiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+ PiBJR1RfUExBTkVfU1JDX1csIHNyY193KTsKPj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwKPj4gSUdUX1BMQU5FX1NSQ19ILCBzcmNfaCk7Cj4+ICsJCWlndF9k ZWJ1ZygicGxhbmUgJXMuJWQ6IFNldHRpbmcgcHJvcGVydHkgXCIlc1wiIHRvCj4+IDB4JSJQUkl4 NjQiLyUiUFJJaTY0IlxuIiwKPj4gKwkJCWttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBw bGFuZS0+aW5kZXgsIAo+PiBpZ3RfcGxhbmVfcHJvcF9uYW1lc1tpXSwKPj4gKwkJCXBsYW5lLT52 YWx1ZXNbaV0sIHBsYW5lLT52YWx1ZXNbaV0pOwo+PiAgCj4+IC0JCWlndF9hdG9taWNfcG9wdWxh dGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4+IElHVF9QTEFORV9DUlRDX1gsIGNydGNfeCk7Cj4+ IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4+IElHVF9QTEFO RV9DUlRDX1ksIGNydGNfeSk7Cj4+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJl cSwgcGxhbmUsCj4+IElHVF9QTEFORV9DUlRDX1csIGNydGNfdyk7Cj4+IC0JCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4+IElHVF9QTEFORV9DUlRDX0gsIGNydGNf aCk7Cj4+ICsJCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwK Pj4gcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsCj4+ICsJCQkJCQkgIHBsYW5lLT5wcm9wc1tp XSwKPj4gKwkJCQkJCSAgcGxhbmUtCj4+PiB2YWx1ZXNbaV0pKTsKPj4gIAl9Cj4+IC0KPj4gLQlp ZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpCj4+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxh bmVfcmVxKHJlcSwgcGxhbmUsCj4+IC0JCQlJR1RfUExBTkVfUk9UQVRJT04sIHBsYW5lLT5yb3Rh dGlvbik7Cj4+ICB9Cj4+ICAKPj4gIAo+PiBAQCAtMjE4MywxNyArMjEzNSwyMCBAQCBzdGF0aWMg aW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGlndF9wbGFuZV90Cj4+ICpwbGFuZSwKPj4gIAlpbnQz Ml90IGNydGNfeTsKPj4gIAl1aW50MzJfdCBjcnRjX3c7Cj4+ICAJdWludDMyX3QgY3J0Y19oOwo+ PiArCWJvb2wgc2V0cGxhbmUgPQo+PiArCQlpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHBsYW5l LCBJR1RfUExBTkVfRkJfSUQpIHx8Cj4+ICsJCXBsYW5lLT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NP T1JEX0NIQU5HRURfTUFTSzsKPj4gIAo+PiAgCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7 Cj4+ICAKPj4gIAkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJl ICovCj4+ICAJaWd0X2Fzc2VydChpZ3RfcGxhbmVfc3VwcG9ydHNfcm90YXRpb24ocGxhbmUpIHx8 Cj4+IC0JCSAgICFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Cj4+ICsJCSAgICFpZ3RfcGxhbmVf aXNfcHJvcF9jaGFuZ2VkKHBsYW5lLAo+PiBJR1RfUExBTkVfUk9UQVRJT04pKTsKPj4gIAo+PiAg CWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9pZChwbGFuZSk7Cj4+ICAJY3J0Y19pZCA9IHBpcGUt PmNydGNfaWQ7Cj4+ICAKPj4gLQlpZiAoKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXpl X2NoYW5nZWQpICYmIGZiX2lkID09Cj4+IDApIHsKPj4gKwlpZiAoc2V0cGxhbmUgJiYgZmJfaWQg PT0gMCkgewo+PiAgCQlMT0coZGlzcGxheSwKPj4gIAkJICAgICJTZXRQbGFuZSBwaXBlICVzLCBw bGFuZSAlZCwgZGlzYWJsaW5nXG4iLAo+PiAgCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+ cGlwZSksCj4+IEBAIC0yMjEyLDE2ICsyMTY3LDE1IEBAIHN0YXRpYyBpbnQgaWd0X2RybV9wbGFu ZV9jb21taXQoaWd0X3BsYW5lX3QKPj4gKnBsYW5lLAo+PiAgCQkJCSAgICAgIElHVF9GSVhFRCgw LDApIC8qIHNyY19oICovKTsKPj4gIAo+PiAgCQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vy cm9yKTsKPj4gLQl9IGVsc2UgaWYgKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5wb3NpdGlv bl9jaGFuZ2VkIHx8Cj4+IC0JCXBsYW5lLT5zaXplX2NoYW5nZWQpIHsKPj4gLQkJc3JjX3ggPSBJ R1RfRklYRUQocGxhbmUtPnNyY194LDApOyAvKiBzcmNfeCAqLwo+PiAtCQlzcmNfeSA9IElHVF9G SVhFRChwbGFuZS0+c3JjX3ksMCk7IC8qIHNyY195ICovCj4+IC0JCXNyY193ID0gSUdUX0ZJWEVE KHBsYW5lLT5zcmNfdywwKTsgLyogc3JjX3cgKi8KPj4gLQkJc3JjX2ggPSBJR1RfRklYRUQocGxh bmUtPnNyY19oLDApOyAvKiBzcmNfaCAqLwo+PiAtCQljcnRjX3ggPSBwbGFuZS0+Y3J0Y194Owo+ PiAtCQljcnRjX3kgPSBwbGFuZS0+Y3J0Y195Owo+PiAtCQljcnRjX3cgPSBwbGFuZS0+Y3J0Y193 Owo+PiAtCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+PiArCX0gZWxzZSBpZiAoc2V0cGxhbmUp IHsKPj4gKwkJc3JjX3ggPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9TUkNfWF07Cj4+ICsJCXNy Y195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ldOwo+PiArCQlzcmNfdyA9IHBsYW5l LT52YWx1ZXNbSUdUX1BMQU5FX1NSQ19XXTsKPj4gKwkJc3JjX2ggPSBwbGFuZS0+dmFsdWVzW0lH VF9QTEFORV9TUkNfSF07Cj4+ICsJCWNydGNfeCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NS VENfWF07Cj4+ICsJCWNydGNfeSA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV07Cj4+ ICsJCWNydGNfdyA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfV107Cj4+ICsJCWNydGNf aCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfSF07Cj4+ICAKPj4gIAkJTE9HKGRpc3Bs YXksCj4+ICAJCSAgICAiU2V0UGxhbmUgJXMuJWQsIGZiICV1LCBzcmMgPSAoJWQsICVkKSAiCj4+ IEBAIC0yMjQ1LDkgKzIxOTksMTAgQEAgc3RhdGljIGludCBpZ3RfZHJtX3BsYW5lX2NvbW1pdChp Z3RfcGxhbmVfdAo+PiAqcGxhbmUsCj4+ICAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJy b3IpOwo+PiAgCX0KPj4gIAo+PiAtCWlmIChwbGFuZS0+cm90YXRpb25fY2hhbmdlZCkgewo+PiAt CQlyZXQgPSBpZ3RfcGxhbmVfc2V0X3Byb3BlcnR5KHBsYW5lLCBwbGFuZS0KPj4+IHJvdGF0aW9u X3Byb3BlcnR5LAo+PiAtCQkJCSAgICAgICBwbGFuZS0+cm90YXRpb24pOwo+PiArCWlmIChpZ3Rf cGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04pKSB7Cj4+ICsJ CXJldCA9IGlndF9wbGFuZV9zZXRfcHJvcGVydHkocGxhbmUsCj4+ICsJCQkJCSAgICAgcGxhbmUt Cj4+PiBwcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dLAo+PiArCQkJCQkgICAgIHBsYW5lLQo+Pj4g dmFsdWVzW0lHVF9QTEFORV9ST1RBVElPTl0pOwo+PiAgCj4+ICAJCUNIRUNLX1JFVFVSTihyZXQs IGZhaWxfb25fZXJyb3IpOwo+PiAgCX0KPj4gQEAgLTIyNjksMzUgKzIyMjQsMzAgQEAgc3RhdGlj IGludAo+PiBpZ3RfY3Vyc29yX2NvbW1pdF9sZWdhY3koaWd0X3BsYW5lX3QgKmN1cnNvciwKPj4g IAl1aW50MzJfdCBjcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKPj4gIAlpbnQgcmV0Owo+PiAgCj4+ IC0JaWYgKGN1cnNvci0+ZmJfY2hhbmdlZCkgewo+PiAtCQl1aW50MzJfdCBnZW1faGFuZGxlID0K Pj4gaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGN1cnNvcik7Cj4+IC0KPj4gLQkJaWYgKGdl bV9oYW5kbGUpIHsKPj4gKwlpZiAoaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChjdXJzb3IsIElH VF9QTEFORV9GQl9JRCkpIHsKPj4gKwkJaWYgKGN1cnNvci0+Z2VtX2hhbmRsZSkKPj4gIAkJCUxP RyhkaXNwbGF5LAo+PiAgCQkJICAgICJTZXRDdXJzb3IgcGlwZSAlcywgZmIgJXUgJWR4JWRcbiIs Cj4+ICAJCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCj4+IC0JCQkgICAgZ2Vt X2hhbmRsZSwKPj4gLQkJCSAgICBjdXJzb3ItPmNydGNfdywgY3Vyc29yLT5jcnRjX2gpOwo+PiAt Cj4+IC0JCQlyZXQgPSBkcm1Nb2RlU2V0Q3Vyc29yKGRpc3BsYXktPmRybV9mZCwKPj4gY3J0Y19p ZCwKPj4gLQkJCQkJICAgICAgIGdlbV9oYW5kbGUsCj4+IC0JCQkJCSAgICAgICBjdXJzb3ItPmNy dGNfdywKPj4gLQkJCQkJICAgICAgIGN1cnNvci0+Y3J0Y19oKTsKPj4gLQkJfSBlbHNlIHsKPj4g KwkJCSAgICBjdXJzb3ItPmdlbV9oYW5kbGUsCj4+ICsJCQkgICAgKHVuc2lnbmVkKWN1cnNvci0K Pj4+IHZhbHVlc1tJR1RfUExBTkVfQ1JUQ19XXSwKPj4gKwkJCSAgICAodW5zaWduZWQpY3Vyc29y LQo+Pj4gdmFsdWVzW0lHVF9QTEFORV9DUlRDX0hdKTsKPj4gKwkJZWxzZQo+PiAgCQkJTE9HKGRp c3BsYXksCj4+ICAJCQkgICAgIlNldEN1cnNvciBwaXBlICVzLCBkaXNhYmxpbmdcbiIsCj4+ICAJ CQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSkpOwo+PiAgCj4+IC0JCQlyZXQgPSBk cm1Nb2RlU2V0Q3Vyc29yKGRpc3BsYXktPmRybV9mZCwKPj4gY3J0Y19pZCwKPj4gLQkJCQkJICAg ICAgIDAsIDAsIDApOwo+PiAtCQl9Cj4+IC0KPj4gKwkJcmV0ID0gZHJtTW9kZVNldEN1cnNvcihk aXNwbGF5LT5kcm1fZmQsIGNydGNfaWQsCj4+ICsJCQkJICAgICAgIGN1cnNvci0+Z2VtX2hhbmRs ZSwKPj4gKwkJCQkgICAgICAgY3Vyc29yLQo+Pj4gdmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddLAo+ PiArCQkJCSAgICAgICBjdXJzb3ItCj4+PiB2YWx1ZXNbSUdUX1BMQU5FX0NSVENfSF0pOwo+PiAg CQlDSEVDS19SRVRVUk4ocmV0LCBmYWlsX29uX2Vycm9yKTsKPj4gIAl9Cj4+ICAKPj4gLQlpZiAo Y3Vyc29yLT5wb3NpdGlvbl9jaGFuZ2VkKSB7Cj4+IC0JCWludCB4ID0gY3Vyc29yLT5jcnRjX3g7 Cj4+IC0JCWludCB5ID0gY3Vyc29yLT5jcnRjX3k7Cj4+ICsJaWYgKGlndF9wbGFuZV9pc19wcm9w X2NoYW5nZWQoY3Vyc29yLCBJR1RfUExBTkVfQ1JUQ19YKSB8fAo+PiArCSAgICBpZ3RfcGxhbmVf aXNfcHJvcF9jaGFuZ2VkKGN1cnNvciwgSUdUX1BMQU5FX0NSVENfWSkpIHsKPj4gKwkJaW50IHgg PSBjdXJzb3ItPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19YXTsKPj4gKwkJaW50IHkgPSBjdXJzb3It PnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19ZXTsKPj4gIAo+PiAgCQlMT0coZGlzcGxheSwKPj4gIAkJ ICAgICJNb3ZlQ3Vyc29yIHBpcGUgJXMsICglZCwgJWQpXG4iLAo+PiBAQCAtMjMyNiwxMyArMjI3 NiwxNCBAQCBzdGF0aWMgaW50Cj4+IGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdhY3koaWd0 X3BsYW5lX3QgKnByaW1hcnksCj4+ICAJaW50IHJldDsKPj4gIAo+PiAgCS8qIFByaW1hcnkgcGxh bmVzIGNhbid0IGJlIHdpbmRvd2VkIHdoZW4gdXNpbmcgYSBsZWdhY3kKPj4gY29tbWl0ICovCj4+ IC0JaWd0X2Fzc2VydCgocHJpbWFyeS0+Y3J0Y194ID09IDAgJiYgcHJpbWFyeS0+Y3J0Y195ID09 IDApKTsKPj4gKwlpZ3RfYXNzZXJ0KChwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWF0g PT0gMCAmJgo+PiBwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV0gPT0gMCkpOwo+PiAg Cj4+ICAJLyogbm9yIHJvdGF0ZWQgKi8KPj4gLQlpZ3RfYXNzZXJ0KCFwcmltYXJ5LT5yb3RhdGlv bl9jaGFuZ2VkKTsKPj4gKwlpZ3RfYXNzZXJ0KCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHBy aW1hcnksCj4+IElHVF9QTEFORV9ST1RBVElPTikpOwo+PiAgCj4+IC0JaWYgKCFwcmltYXJ5LT5m Yl9jaGFuZ2VkICYmICFwcmltYXJ5LT5wb3NpdGlvbl9jaGFuZ2VkICYmCj4+IC0JICAgICFwcmlt YXJ5LT5zaXplX2NoYW5nZWQgJiYgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKPj4gKwlp ZiAoIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocHJpbWFyeSwgSUdUX1BMQU5FX0ZCX0lEKSAm Jgo+PiArCSAgICAhKHByaW1hcnktPmNoYW5nZWQgJiBJR1RfUExBTkVfQ09PUkRfQ0hBTkdFRF9N QVNLKSAmJgo+PiArCSAgICAhcHJpbWFyeS0+cGlwZS0+bW9kZV9jaGFuZ2VkKQo+PiAgCQlyZXR1 cm4gMDsKPj4gIAo+PiAgCWNydGNfaWQgPSBwaXBlLT5jcnRjX2lkOwo+PiBAQCAtMjM0MywxOSAr MjI5NCwyMiBAQCBzdGF0aWMgaW50Cj4+IGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdhY3ko aWd0X3BsYW5lX3QgKnByaW1hcnksCj4+ICAJCW1vZGUgPSBOVUxMOwo+PiAgCj4+ICAJaWYgKGZi X2lkKSB7Cj4+ICsJCXVpbnQzMl90IHNyY194ID0gcHJpbWFyeS0+dmFsdWVzW0lHVF9QTEFORV9T UkNfWF0gPj4KPj4gMTY7Cj4+ICsJCXVpbnQzMl90IHNyY195ID0gcHJpbWFyeS0+dmFsdWVzW0lH VF9QTEFORV9TUkNfWV0gPj4KPj4gMTY7Cj4+ICsKPj4gIAkJTE9HKGRpc3BsYXksCj4+ICAJCSAg ICAiJXM6IFNldENydGMgcGlwZSAlcywgZmIgJXUsIHNyYyAoJWQsICVkKSwgIgo+PiAgCQkgICAg Im1vZGUgJWR4JWRcbiIsCj4+ICAJCSAgICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKPj4gIAkJ ICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAo+PiAgCQkgICAgZmJfaWQsCj4+IC0J CSAgICBwcmltYXJ5LT5zcmNfeCwgcHJpbWFyeS0+c3JjX3ksCj4+ICsJCSAgICBzcmNfeCwgc3Jj X3ksCj4+ICAJCSAgICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+PiAgCj4+ICAJ CXJldCA9IGRybU1vZGVTZXRDcnRjKGRpc3BsYXktPmRybV9mZCwKPj4gIAkJCQkgICAgIGNydGNf aWQsCj4+ICAJCQkJICAgICBmYl9pZCwKPj4gLQkJCQkgICAgIHByaW1hcnktPnNyY194LCBwcmlt YXJ5LT5zcmNfeSwKPj4gKwkJCQkgICAgIHNyY194LCBzcmNfeSwKPj4gIAkJCQkgICAgICZvdXRw dXQtPmlkLAo+PiAgCQkJCSAgICAgMSwKPj4gIAkJCQkgICAgIG1vZGUpOwo+PiBAQCAtMjYwOCwx OCArMjU2MiwyNyBAQCBkaXNwbGF5X2NvbW1pdF9jaGFuZ2VkKGlndF9kaXNwbGF5X3QKPj4gKmRp c3BsYXksIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzKQo+PiAgCQl9Cj4+ICAKPj4gIAkJZm9yX2Vh Y2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgewo+PiAtCQkJcGxhbmUtPmZi X2NoYW5nZWQgPSBmYWxzZTsKPj4gLQkJCXBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkID0gZmFsc2U7 Cj4+IC0JCQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gZmFsc2U7Cj4+ICsJCQlpZiAocyA9PSBDT01N SVRfQVRPTUlDKSB7Cj4+ICsJCQkJaW50IGZkOwo+PiArCQkJCXBsYW5lLT5jaGFuZ2VkID0gMDsK Pj4gIAo+PiAtCQkJaWYgKHMgIT0gQ09NTUlUX0xFR0FDWSB8fAo+PiAtCQkJICAgICEocGxhbmUt PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWQo+PiB8fAo+PiAtCQkJICAgICAgcGxhbmUt PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSkKPj4gLQkJCQlwbGFuZS0+cm90YXRpb25f Y2hhbmdlZCA9IGZhbHNlOwo+PiArCQkJCWZkID0gcGxhbmUtCj4+PiB2YWx1ZXNbSUdUX1BMQU5F X0lOX0ZFTkNFX0ZEXTsKPj4gKwkJCQlpZiAoZmQgIT0gLTEpCj4+ICsJCQkJCWNsb3NlKGZkKTsK Pj4gIAo+PiAtCQkJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykKPj4gIAkJCQkvKiByZXNldCBmZW5j ZV9mZCB0byBwcmV2ZW50IGl0IGZyb20KPj4gYmVpbmcgc2V0IGZvciB0aGUgbmV4dCBjb21taXQg Ki8KPj4gLQkJCQlpZ3RfcGxhbmVfc2V0X2ZlbmNlX2ZkKHBsYW5lLCAtMSk7Cj4+ICsJCQkJcGxh bmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdIAo+PiA9IC0xOwo+PiArCQkJfSBlbHNl IHsKPj4gKwkJCQlwbGFuZS0+Y2hhbmdlZCAmPQo+PiB+SUdUX1BMQU5FX0NPT1JEX0NIQU5HRURf TUFTSzsKPj4gKwo+PiArCQkJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsCj4+ IElHVF9QTEFORV9DUlRDX0lEKTsKPj4gKwkJCQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2Vk KHBsYW5lLAo+PiBJR1RfUExBTkVfRkJfSUQpOwo+PiArCj4+ICsJCQkJaWYgKHMgIT0gQ09NTUlU X0xFR0FDWSB8fAo+PiArCQkJCSAgICAhKHBsYW5lLT50eXBlID09Cj4+IERSTV9QTEFORV9UWVBF X1BSSU1BUlkgfHwKPj4gKwkJCQkgICAgICBwbGFuZS0+dHlwZSA9PQo+PiBEUk1fUExBTkVfVFlQ RV9DVVJTT1IpKQo+PiArCQkJCQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkCj4+IChwbGFu ZSwgSUdUX1BMQU5FX1JPVEFUSU9OKTsKPj4gKwkJCX0KPj4gIAkJfQo+PiAgCX0KPj4gIAo+PiBA QCAtMjkxMywzMCArMjg3NiwzMSBAQCB2b2lkIGlndF9wbGFuZV9zZXRfZmIoaWd0X3BsYW5lX3Qg KnBsYW5lLAo+PiBzdHJ1Y3QgaWd0X2ZiICpmYikKPj4gIAlMT0coZGlzcGxheSwgIiVzLiVkOiBw bGFuZV9zZXRfZmIoJWQpXG4iLAo+PiBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPj4g IAkgICAgcGxhbmUtPmluZGV4LCBmYiA/IGZiLT5mYl9pZCA6IDApOwo+PiAgCj4+IC0JcGxhbmUt PmZiID0gZmI7Cj4+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVf Q1JUQ19JRCwgZmIgPwo+PiBwaXBlLT5jcnRjX2lkIDogMCk7Cj4+ICsJaWd0X3BsYW5lX3NldF9w cm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfRkJfSUQsIGZiID8gZmItCj4+PiBmYl9pZCA6IDAp Owo+PiArCj4+ICsJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUiAmJiBm YikKPj4gKwkJcGxhbmUtPmdlbV9oYW5kbGUgPSBmYi0+Z2VtX2hhbmRsZTsKPj4gKwllbHNlCj4+ ICsJCXBsYW5lLT5nZW1faGFuZGxlID0gMDsKPj4gKwo+PiAgCS8qIGhhY2sgdG8ga2VlcCB0ZXN0 cyB3b3JraW5nIHRoYXQgZG9uJ3QgY2FsbAo+PiBpZ3RfcGxhbmVfc2V0X3NpemUoKSAqLwo+PiAg CWlmIChmYikgewo+PiAgCQkvKiBzZXQgZGVmYXVsdCBwbGFuZSBzaXplIGFzIGZiIHNpemUgKi8K Pj4gLQkJcGxhbmUtPmNydGNfdyA9IGZiLT53aWR0aDsKPj4gLQkJcGxhbmUtPmNydGNfaCA9IGZi LT5oZWlnaHQ7Cj4+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIDAsIDApOwo+PiAr CQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGZiLT53aWR0aCwgZmItPmhlaWdodCk7Cj4+ICAK Pj4gIAkJLyogc2V0IGRlZmF1bHQgc3JjIHBvcy9zaXplIGFzIGZiIHNpemUgKi8KPj4gLQkJcGxh bmUtPnNyY194ID0gMDsKPj4gLQkJcGxhbmUtPnNyY195ID0gMDsKPj4gLQkJcGxhbmUtPnNyY193 ID0gZmItPndpZHRoOwo+PiAtCQlwbGFuZS0+c3JjX2ggPSBmYi0+aGVpZ2h0Owo+PiArCQlpZ3Rf ZmJfc2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwgMCwgMCk7Cj4+ICsJCWlndF9mYl9zZXRfc2l6ZShm YiwgcGxhbmUsIGZiLT53aWR0aCwgZmItPmhlaWdodCk7Cj4+ICAJfSBlbHNlIHsKPj4gLQkJcGxh bmUtPnNyY194ID0gMDsKPj4gLQkJcGxhbmUtPnNyY195ID0gMDsKPj4gLQkJcGxhbmUtPnNyY193 ID0gMDsKPj4gLQkJcGxhbmUtPnNyY19oID0gMDsKPj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlv bihwbGFuZSwgMCwgMCk7Cj4+ICsJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgMCwgMCk7Cj4+ ICAKPj4gLQkJcGxhbmUtPmNydGNfdyA9IDA7Cj4+IC0JCXBsYW5lLT5jcnRjX2ggPSAwOwo+PiAr CQkvKiBzZXQgZGVmYXVsdCBzcmMgcG9zL3NpemUgYXMgZmIgc2l6ZSAqLwo+PiArCQlpZ3RfZmJf c2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwgMCwgMCk7Cj4+ICsJCWlndF9mYl9zZXRfc2l6ZShmYiwg cGxhbmUsIDAsIDApOwo+PiAgCX0KPj4gLQo+PiAtCXBsYW5lLT5mYl9jaGFuZ2VkID0gdHJ1ZTsK Pj4gLQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gdHJ1ZTsKPj4gIH0KPj4gIAo+PiAgLyoqCj4+IEBA IC0yOTQ5LDEyICsyOTEzLDE5IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9mYihpZ3RfcGxhbmVfdCAq cGxhbmUsCj4+IHN0cnVjdCBpZ3RfZmIgKmZiKQo+PiAgICovCj4+ICB2b2lkIGlndF9wbGFuZV9z ZXRfZmVuY2VfZmQoaWd0X3BsYW5lX3QgKnBsYW5lLCBpbnQgZmVuY2VfZmQpCj4+ICB7Cj4+IC0J Y2xvc2UocGxhbmUtPmZlbmNlX2ZkKTsKPj4gKwlpbnQ2NF90IGZkOwo+PiAgCj4+IC0JaWYgKGZj bnRsKGZlbmNlX2ZkLCBGX0dFVEZEKSAhPSAtMSkKPj4gLQkJcGxhbmUtPmZlbmNlX2ZkID0gZHVw KGZlbmNlX2ZkKTsKPj4gLQllbHNlCj4+IC0JCXBsYW5lLT5mZW5jZV9mZCA9IC0xOwo+PiArCWZk ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdOwo+PiArCWlmIChmZCAhPSAt MSkKPj4gKwkJY2xvc2UoZmQpOwo+PiArCj4+ICsJaWYgKGZlbmNlX2ZkICE9IC0xKSB7Cj4+ICsJ CWZkID0gZHVwKGZlbmNlX2ZkKTsKPj4gKwkJaWd0X2ZhaWxfb24oZmQgPT0gLTEpOwo+PiArCX0g ZWxzZQo+PiArCQlmZCA9IC0xOwo+PiArCj4+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBs YW5lLCBJR1RfUExBTkVfSU5fRkVOQ0VfRkQsIGZkKTsKPj4gIH0KPj4gIAo+PiAgdm9pZCBpZ3Rf cGxhbmVfc2V0X3Bvc2l0aW9uKGlndF9wbGFuZV90ICpwbGFuZSwgaW50IHgsIGludCB5KQo+PiBA QCAtMjk2NSwxMCArMjkzNiw4IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9wb3NpdGlvbihpZ3RfcGxh bmVfdAo+PiAqcGxhbmUsIGludCB4LCBpbnQgeSkKPj4gIAlMT0coZGlzcGxheSwgIiVzLiVkOiBw bGFuZV9zZXRfcG9zaXRpb24oJWQsJWQpXG4iLAo+PiAgCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShw aXBlLT5waXBlKSwgcGxhbmUtPmluZGV4LCB4LCB5KTsKPj4gIAo+PiAtCXBsYW5lLT5jcnRjX3gg PSB4Owo+PiAtCXBsYW5lLT5jcnRjX3kgPSB5Owo+PiAtCj4+IC0JcGxhbmUtPnBvc2l0aW9uX2No YW5nZWQgPSB0cnVlOwo+PiArCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BM QU5FX0NSVENfWCwgeCk7Cj4+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1Rf UExBTkVfQ1JUQ19ZLCB5KTsKPj4gIH0KPj4gIAo+PiAgLyoqCj4+IEBAIC0yOTg5LDEwICsyOTU4 LDggQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X3NpemUoaWd0X3BsYW5lX3QgKnBsYW5lLAo+PiBpbnQg dywgaW50IGgpCj4+ICAJTE9HKGRpc3BsYXksICIlcy4lZDogcGxhbmVfc2V0X3NpemUgKCVkeCVk KVxuIiwKPj4gIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRl eCwgdywgaCk7Cj4+ICAKPj4gLQlwbGFuZS0+Y3J0Y193ID0gdzsKPj4gLQlwbGFuZS0+Y3J0Y19o ID0gaDsKPj4gLQo+PiAtCXBsYW5lLT5zaXplX2NoYW5nZWQgPSB0cnVlOwo+PiArCWlndF9wbGFu ZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgdyk7Cj4+ICsJaWd0X3Bs YW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCBoKTsKPj4gIH0KPj4g IAo+PiAgLyoqCj4+IEBAIC0zMDE0LDEwICsyOTgxLDggQEAgdm9pZCBpZ3RfZmJfc2V0X3Bvc2l0 aW9uKHN0cnVjdCBpZ3RfZmIgKmZiLAo+PiBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4+ICAJTE9HKGRp c3BsYXksICIlcy4lZDogZmJfc2V0X3Bvc2l0aW9uKCVkLCVkKVxuIiwKPj4gIAkgICAga21zdGVz dF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgeCwgeSk7Cj4+ICAKPj4gLQlw bGFuZS0+c3JjX3ggPSB4Owo+PiAtCXBsYW5lLT5zcmNfeSA9IHk7Cj4+IC0KPj4gLQlwbGFuZS0+ ZmJfY2hhbmdlZCA9IHRydWU7Cj4+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJ R1RfUExBTkVfU1JDX1gsCj4+IElHVF9GSVhFRCh4LCAwKSk7Cj4+ICsJaWd0X3BsYW5lX3NldF9w cm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX1ksCj4+IElHVF9GSVhFRCh5LCAwKSk7Cj4+ ICB9Cj4+ICAKPj4gIC8qKgo+PiBAQCAtMzA0MCwxMCArMzAwNSw4IEBAIHZvaWQgaWd0X2ZiX3Nl dF9zaXplKHN0cnVjdCBpZ3RfZmIgKmZiLAo+PiBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4+ICAJTE9H KGRpc3BsYXksICIlcy4lZDogZmJfc2V0X3NpemUoJWR4JWQpXG4iLAo+PiAgCSAgICBrbXN0ZXN0 X3BpcGVfbmFtZShwaXBlLT5waXBlKSwgcGxhbmUtPmluZGV4LCB3LCBoKTsKPj4gIAo+PiAtCXBs YW5lLT5zcmNfdyA9IHc7Cj4+IC0JcGxhbmUtPnNyY19oID0gaDsKPj4gLQo+PiAtCXBsYW5lLT5m Yl9jaGFuZ2VkID0gdHJ1ZTsKPj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElH VF9QTEFORV9TUkNfVywKPj4gSUdUX0ZJWEVEKHcsIDApKTsKPj4gKwlpZ3RfcGxhbmVfc2V0X3By b3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9TUkNfSCwKPj4gSUdUX0ZJWEVEKGgsIDApKTsKPj4g IH0KPj4gIAo+PiAgc3RhdGljIGNvbnN0IGNoYXIgKnJvdGF0aW9uX25hbWUoaWd0X3JvdGF0aW9u X3Qgcm90YXRpb24pCj4+IEBAIC0zMDcxLDkgKzMwMzQsNyBAQCB2b2lkIGlndF9wbGFuZV9zZXRf cm90YXRpb24oaWd0X3BsYW5lX3QgKnBsYW5lLAo+PiBpZ3Rfcm90YXRpb25fdCByb3RhdGlvbikK Pj4gIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCj4+ICAJICAgIHBsYW5lLT5p bmRleCwgcm90YXRpb25fbmFtZShyb3RhdGlvbikpOwo+PiAgCj4+IC0JcGxhbmUtPnJvdGF0aW9u ID0gcm90YXRpb247Cj4+IC0KPj4gLQlwbGFuZS0+cm90YXRpb25fY2hhbmdlZCA9IHRydWU7Cj4+ ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04sCj4+ IHJvdGF0aW9uKTsKPj4gIH0KPj4gIAo+PiAgLyoqCj4+IGRpZmYgLS1naXQgYS9saWIvaWd0X2tt cy5oIGIvbGliL2lndF9rbXMuaAo+PiBpbmRleCAxZWYxMGU3ZDUyNWMuLmY4N2Y4YmUzMTQyMSAx MDA2NDQKPj4gLS0tIGEvbGliL2lndF9rbXMuaAo+PiArKysgYi9saWIvaWd0X2ttcy5oCj4+IEBA IC0yNTIsNiArMjUyLDkgQEAgZW51bSBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRpZXMgewo+PiAg ICAgICAgIElHVF9QTEFORV9DUlRDX1csCj4+ICAgICAgICAgSUdUX1BMQU5FX0NSVENfSCwKPj4g IAo+PiArLyogQXBwZW5kIG5ldyBwcm9wZXJ0aWVzIGFmdGVyIElHVF9QTEFORV9DT09SRF9DSEFO R0VEX01BU0sgKi8KPj4gKyNkZWZpbmUgSUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSyAweGZm Cj4+ICsKPj4gICAgICAgICBJR1RfUExBTkVfRkJfSUQsCj4+ICAgICAgICAgSUdUX1BMQU5FX0NS VENfSUQsCj4+ICAgICAgICAgSUdUX1BMQU5FX0lOX0ZFTkNFX0ZELAo+PiBAQCAtMjg2LDM3ICsy ODksMTkgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+PiAgCWludCBpbmRleDsKPj4gIAkvKiBjYXBhYmls aXRpZXMgKi8KPj4gIAlpbnQgdHlwZTsKPj4gLQkvKiBzdGF0ZSB0cmFja2luZyAqLwo+PiAtCXVu c2lnbmVkIGludCBmYl9jaGFuZ2VkICAgICAgIDogMTsKPj4gLQl1bnNpZ25lZCBpbnQgcG9zaXRp b25fY2hhbmdlZCA6IDE7Cj4+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uX2NoYW5nZWQgOiAxOwo+ PiAtCXVuc2lnbmVkIGludCBzaXplX2NoYW5nZWQgICAgIDogMTsKPj4gKwo+PiAgCS8qCj4+ICAJ ICogZHJtX3BsYW5lIGNhbiBiZSBOVUxMIGZvciBwcmltYXJ5IGFuZCBjdXJzb3IgcGxhbmVzICh3 aGVuCj4+IG5vdAo+PiAgCSAqIHVzaW5nIHRoZSBhdG9taWMgbW9kZXNldCBBUEkpCj4+ICAJICov Cj4+ICAJZHJtTW9kZVBsYW5lICpkcm1fcGxhbmU7Cj4+IC0Jc3RydWN0IGlndF9mYiAqZmI7Cj4+ IC0KPj4gLQl1aW50MzJfdCByb3RhdGlvbl9wcm9wZXJ0eTsKPj4gLQo+PiAtCS8qIHBvc2l0aW9u IHdpdGhpbiBwaXBlX3NyY193IHggcGlwZV9zcmNfaCAqLwo+PiAtCWludCBjcnRjX3gsIGNydGNf eTsKPj4gLQkvKiBzaXplIHdpdGhpbiBwaXBlX3NyY193IHggcGlwZV9zcmNfaCAqLwo+PiAtCWlu dCBjcnRjX3csIGNydGNfaDsKPj4gIAo+PiAtCS8qIHBvc2l0aW9uIHdpdGhpbiB0aGUgZnJhbWVi dWZmZXIgKi8KPj4gLQl1aW50MzJfdCBzcmNfeDsKPj4gLQl1aW50MzJfdCBzcmNfeTsKPj4gLQkv KiBzaXplIHdpdGhpbiB0aGUgZnJhbWVidWZmZXIqLwo+PiAtCXVpbnQzMl90IHNyY193Owo+PiAt CXVpbnQzMl90IHNyY19oOwo+PiArCS8qIGdlbSBoYW5kbGUgZm9yIGZiICovCj4+ICsJdWludDMy X3QgZ2VtX2hhbmRsZTsKPj4gIAo+PiAtCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwo+PiAtCj4+ IC0JLyogaW4gZmVuY2UgZmQgKi8KPj4gLQlpbnQgZmVuY2VfZmQ7Cj4+IC0JdWludDMyX3QgYXRv bWljX3Byb3BzX3BsYW5lW0lHVF9OVU1fUExBTkVfUFJPUFNdOwo+PiArCXVpbnQ2NF90IGNoYW5n ZWQ7Cj4+ICsJdWludDMyX3QgcHJvcHNbSUdUX05VTV9QTEFORV9QUk9QU107Cj4+ICsJdWludDY0 X3QgdmFsdWVzW0lHVF9OVU1fUExBTkVfUFJPUFNdOwo+PiAgfSBpZ3RfcGxhbmVfdDsKPj4gIAo+ PiAgc3RydWN0IGlndF9waXBlIHsKPj4gQEAgLTQwNyw3ICszOTIsNyBAQCBib29sIGlndF9waXBl X2dldF9wcm9wZXJ0eShpZ3RfcGlwZV90ICpwaXBlLAo+PiBjb25zdCBjaGFyICpuYW1lLAo+PiAg Cj4+ICBzdGF0aWMgaW5saW5lIGJvb2wgaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKGlndF9w bGFuZV90ICpwbGFuZSkKPj4gIHsKPj4gLQlyZXR1cm4gcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5 ICE9IDA7Cj4+ICsJcmV0dXJuIHBsYW5lLT5wcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dICE9IDA7 Cj4+ICB9Cj4+ICB2b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2ZlbmNlKGlndF9waXBlX3QgKnBp cGUpOwo+PiAgdm9pZCBpZ3RfcGlwZV9zZXRfZGVnYW1tYV9sdXQoaWd0X3BpcGVfdCAqcGlwZSwg dm9pZCAqcHRyLCBzaXplX3QKPj4gbGVuZ3RoKTsKPj4gQEAgLTUyNywxNiArNTEyLDIwIEBAIHN0 YXRpYyBpbmxpbmUgYm9vbAo+PiBpZ3Rfb3V0cHV0X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3Qg Km91dHB1dCkKPj4gIAo+PiAgI2RlZmluZSBJR1RfRklYRUQoaSxmKQkoKGkpIDw8IDE2IHwgKGYp KQo+PiAgCj4+IC0vKioKPj4gLSAqIGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxOgo+PiAt ICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKPj4gLSAqIEBwbGFuZTogQSBw b2ludGVyIGlndF9wbGFuZV90Cj4+IC0gKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfcGxhbmVf cHJvcGVydGllcwo+PiAtICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCj4+IC0gKi8KPj4gLSNk ZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgcHJvcCwgdmFs dWUpIFwKPj4gLQlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEs IHBsYW5lLQo+Pj4gZHJtX3BsYW5lLT5wbGFuZV9pZCxcCj4+IC0JCQkJCQkgIHBsYW5lLQo+Pj4g YXRvbWljX3Byb3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkpCj4+ICsjZGVmaW5lIGlndF9wbGFuZV9p c19wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApIFwKPj4gKwkoISEoKHBsYW5lKS0+Y2hhbmdlZCAm ICgxIDw8IChwcm9wKSkpKQo+PiArCj4+ICsjZGVmaW5lIGlndF9wbGFuZV9zZXRfcHJvcF9jaGFu Z2VkKHBsYW5lLCBwcm9wKSBcCj4+ICsJKHBsYW5lKS0+Y2hhbmdlZCB8PSAxIDw8IChwcm9wKQo+ PiArCj4+ICsjZGVmaW5lIGlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3Ap IFwKPj4gKwkocGxhbmUpLT5jaGFuZ2VkICY9IH4oMSA8PCAocHJvcCkpCj4+ICsKPj4gKyNkZWZp bmUgaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBwcm9wLCB2YWx1ZSkgXAo+PiArCWRv IHsgXAo+PiArCQlwbGFuZS0+dmFsdWVzW3Byb3BdID0gdmFsdWU7IFwKPj4gKwkJaWd0X3BsYW5l X3NldF9wcm9wX2NoYW5nZWQocGxhbmUsIHByb3ApOyBcCj4+ICsJfSB3aGlsZSAoMCkKPj4gIAo+ PiAgLyoqCj4+ICAgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxOgo+PiBkaWZmIC0tZ2l0 IGEvdGVzdHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMKPj4gYi90ZXN0cy9rbXNfYXRvbWlj X2ludGVycnVwdGlibGUuYwo+PiBpbmRleCAyZDE5ZmU5Njc4MDkuLjU1NzA4NTQzOTBlYSAxMDA2 NDQKPj4gLS0tIGEvdGVzdHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMKPj4gKysrIGIvdGVz dHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMKPj4gQEAgLTE2MSwxMiArMTYxLDEyIEBAIHN0 YXRpYyB2b2lkIHJ1bl9wbGFuZV90ZXN0KGlndF9kaXNwbGF5X3QKPj4gKmRpc3BsYXksIGVudW0g cGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKPj4gIAkJCQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8K Pj4gIAkJCQkJb3V0cHV0LQo+Pj4gcHJvcHNbSUdUX0NPTk5FQ1RPUl9DUlRDX0lEXSwKPj4gIAkJ CQkJLyogcGxhbmU6IHJlbWFpbmRlciBwcm9wcyAqLwo+PiAtCQkJCQlwbGFuZS0KPj4+IGF0b21p Y19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19JRF0sCj4+IC0JCQkJCXBsYW5lLQo+Pj4gYXRv bWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9GQl9JRF0sCj4+IC0JCQkJCXBsYW5lLQo+Pj4gYXRv bWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9TUkNfV10sCj4+IC0JCQkJCXBsYW5lLQo+Pj4gYXRv bWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9TUkNfSF0sCj4+IC0JCQkJCXBsYW5lLQo+Pj4gYXRv bWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9DUlRDX1ddLAo+PiAtCQkJCQlwbGFuZS0KPj4+IGF0 b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19IXQo+PiArCQkJCQlwbGFuZS0KPj4+IHBy b3BzW0lHVF9QTEFORV9DUlRDX0lEXSwKPj4gKwkJCQkJcGxhbmUtCj4+PiBwcm9wc1tJR1RfUExB TkVfRkJfSURdLAo+PiArCQkJCQlwbGFuZS0KPj4+IHByb3BzW0lHVF9QTEFORV9TUkNfV10sCj4+ ICsJCQkJCXBsYW5lLQo+Pj4gcHJvcHNbSUdUX1BMQU5FX1NSQ19IXSwKPj4gKwkJCQkJcGxhbmUt Cj4+PiBwcm9wc1tJR1RfUExBTkVfQ1JUQ19XXSwKPj4gKwkJCQkJcGxhbmUtCj4+PiBwcm9wc1tJ R1RfUExBTkVfQ1JUQ19IXQo+PiAgCQkJCX07Cj4+ICAJCQkJdWludDY0X3QgcHJvcF92YWxzW10g PSB7Cj4+ICAJCQkJCS8qIGNydGMgKi8KPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZV9s b3dyZXMuYyBiL3Rlc3RzL2ttc19wbGFuZV9sb3dyZXMuYwo+PiBpbmRleCBiMTZjOGNkNDMzYjIu LjYxM2Y2ODg5OTYwMSAxMDA2NDQKPj4gLS0tIGEvdGVzdHMva21zX3BsYW5lX2xvd3Jlcy5jCj4+ ICsrKyBiL3Rlc3RzL2ttc19wbGFuZV9sb3dyZXMuYwo+PiBAQCAtMjI3LDggKzIyNyw4IEBAIHRl c3Rfc2V0dXAoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgdWludDY0X3QKPj4gbW9kaWZp ZXIsIGludCBmbGFncywKPj4gIAkJCQkgICAgMS4wLCAxLjAsIDAuMCwKPj4gIAkJCQkgICAgJmRh dGEtPmZiW2ldKTsKPj4gIAo+PiAtCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGRhdGEtPnBsYW5l W2ldLCB4LCB5KTsKPj4gIAkJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wbGFuZVtpXSwgJmRhdGEt PmZiW2ldKTsKPj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkYXRhLT5wbGFuZVtpXSwgeCwg eSk7Cj4gVGhpcyBwYXJ0IGNvdWxkIGJlIHNwbGl0IGludG8gYSBzZXBhcmF0ZSBwYXRjaCBhcyBp dCBmaXhlcyBhbiBlcnJvci4KPiBCVFcgd2h5IGRvIHdlIG5lZWQgdG8gaWd0X3BsYW5lX3NldF9m YigpIGJlZm9yZQo+IGlndF9wbGFuZV9zZXRfcG9zaXRpb24oKQpJdCB3YXNuJ3QgYW4gZXJyb3Ig YmVmb3JlLCBpZ3RfcGxhbmVfc2V0X2ZiIGNsZWFyZWQgZXZlcnl0aGluZyB0byBkZWZhdWx0cyBl eGNlcHQgcG9zaXRpb24sIGJ1dCB3aXRoIHRoaXMgcGF0Y2ggSSBmZWx0IGl0IHNob3VsZCBjbGVh ciBwb3NpdGlvbiB0b28gYmVjYXVzZSB3aHkga2VlcCBpdCBzcGVjaWFsPwoKSG1tIHRob3VnaCBp dCBzZWVtcyBtdWx0aXBsZSB0ZXN0cyBhc3N1bWUgdGhhdCBwb3NpdGlvbiBpcyB1bnRvdWNoZWQg YnkgaWd0X3BsYW5lX3NldF9mYiwgSSB0aGluayBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gcmV2ZXJ0 IHRoaXMgaHVuay4gUGVyaGFwcyBjbGVhbiBpdCB1cCBsYXRlci4uCgpJJ2xsIGp1c3QgZHJvcCB0 aGlzIHBhcnQgZm9yIG5vdy4gUmVhbGl0eSBpcyBjbGFzaGluZyB3aXRoIGlkZWFscyBhZ2Fpbi4g OigKPj4gIAl9Cj4+ICAKPj4gIAlyZXR1cm4gbW9kZTsKPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2tt c19yb3RhdGlvbl9jcmMuYyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+PiBpbmRleCA0ZDJl ZjFjMTg0ZjAuLjQ5MzJhMGQ0NDQxMCAxMDA2NDQKPj4gLS0tIGEvdGVzdHMva21zX3JvdGF0aW9u X2NyYy5jCj4+ICsrKyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+PiBAQCAtMTIyLDExICsx MjIsMTEgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwKPj4gaWd0X291 dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlLAo+PiAgCWlndF9wbGFuZV9zZXRfZmIocHJp bWFyeSwgJmRhdGEtPmZiX21vZGVzZXQpOwo+PiAgCj4+ICAJaWYgKGNvbW1pdCA8IENPTU1JVF9B VE9NSUMpIHsKPj4gLQkJcHJpbWFyeS0+cm90YXRpb25fY2hhbmdlZCA9IGZhbHNlOwo+PiArCQlp Z3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHByaW1hcnksCj4+IElHVF9QTEFORV9ST1RBVElP Tik7Cj4+ICAJCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPj4gIAo+PiAgCQlpZiAocGxh bmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKPj4gLQkJCXByaW1hcnktPnJvdGF0 aW9uX2NoYW5nZWQgPSB0cnVlOwo+PiArCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocHJp bWFyeSwKPj4gSUdUX1BMQU5FX1JPVEFUSU9OKTsKPj4gIAl9Cj4+ICAKPj4gIAlpZ3RfcGxhbmVf c2V0X2ZiKHBsYW5lLCBOVUxMKTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK