From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH i-g-t v2 02/14] lib/igt_kms: Rework plane properties to be more atomic, v5. Date: Thu, 19 Oct 2017 12:08:34 +0300 Message-ID: <1508404114.3274.119.camel@intel.com> References: <20171012115435.18880-1-maarten.lankhorst@linux.intel.com> <20171012115435.18880-3-maarten.lankhorst@linux.intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E6106E9CB for ; Thu, 19 Oct 2017 09:10:49 +0000 (UTC) In-Reply-To: <20171012115435.18880-3-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTEwLTEyIGF0IDEzOjU0ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBJbiB0aGUgZnV0dXJlIEkgd2FudCB0byBhbGxvdyB0ZXN0cyB0byBjb21taXQgbW9yZSBw cm9wZXJ0aWVzLAo+IGJ1dCBmb3IgdGhpcyB0byB3b3JrIEkgaGF2ZSB0byBmaXggYWxsIHByb3Bl cnRpZXMgdG8gd29yayBiZXR0ZXIKPiB3aXRoIGF0b21pYyBjb21taXQuIEluc3RlYWQgb2Ygc3Bl Y2lhbCBjYXNpbmcgZWFjaAo+IHByb3BlcnR5IG1ha2UgYSBiaXRtYXNrIGZvciBhbGwgcHJvcGVy dHkgY2hhbmdlZCBmbGFncywgYW5kIHRyeSB0bwo+IGNvbW1pdCBhbGwgcHJvcGVydGllcy4KPiAK PiBDaGFuZ2VzIHNpbmNlIHYxOgo+IC0gUmVtb3ZlIHNwZWNpYWwgZHVtcGluZyBvZiBzcmMgYW5k IGNydGMgY29vcmRpbmF0ZXMuCj4gLSBEdW1wIGFsbCBtb2RpZmllZCBjb29yZGluYXRlcy4KPiBD aGFuZ2VzIHNpbmNlIHYyOgo+IC0gTW92ZSBpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZCB1cCBz bGlnaHRseS4KPiBDaGFuZ2VzIHNpbmNlIHYzOgo+IC0gRml4IHdyb25nIG9yZGVyaW5nIG9mIHNl dF9wb3NpdGlvbiBpbiBrbXNfcGxhbmVfbG93cmVzIGNhdXNpbmcgYQo+IHRlc3QgZmFpbHVyZS4K PiBDaGFuZ2VzIHNpbmNlIHY0Ogo+IC0gQmFjayBvdXQgcmVzZXR0aW5nIGNydGMgcG9zaXRpb24g aW4gaWd0X3BsYW5lX3NldF9mYigpIGFuZAo+IMKgIGRvY3VtZW50IGl0IGR1cmluZyBpbml0LiBU ZXN0cyBhcHBlYXIgdG8gcmVseSBvbiBpdCBiZWluZwo+IHByZXNlcnZlZC4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwu Y29tPgo+IC0tLQo+IMKgbGliL2lndF9rbXMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8IDI5OSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiAtLS0tLS0tLS0t LS0KPiDCoGxpYi9pZ3Rfa21zLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfMKgwqA1OSArKysrLS0tLQo+IMKgdGVzdHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMg fMKgwqAxMiArLQo+IMKgdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jwqDCoMKgwqDCoMKgwqDCoMKg fMKgwqDCoDQgKy0KPiDCoDQgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDIwOSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21z LmMKPiBpbmRleCBlNmZhOGY0YWY0NTUuLmU3N2FlNWQ2OTZkYSAxMDA2NDQKPiAtLS0gYS9saWIv aWd0X2ttcy5jCj4gKysrIGIvbGliL2lndF9rbXMuYwo+IEBAIC0xOTIsMTEgKzE5MiwxMSBAQCBj b25zdCBjaGFyCj4gKmlndF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RPUl9Q Uk9QU10gPSB7Cj4gwqAKPiDCoC8qCj4gwqAgKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3BlcmllcyBz cGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbQo+IGludG8KPiAtICogcGxhbmUt PmF0b21pY19wcm9wc19wbGFuZS4KPiArICogcGxhbmUtPnByb3BzLgo+IMKgICovCj4gwqBzdGF0 aWMgdm9pZAo+IC1pZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwgaWd0X3BsYW5lX3QKPiAqcGxhbmUsCj4gLQkJCWludCBudW1fcHJvcHMsIGNvbnN0IGNo YXIgKipwcm9wX25hbWVzKQo+ICtpZ3RfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpk aXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gKwkJwqDCoMKgwqDCoGludCBudW1fcHJvcHMs IGNvbnN0IGNoYXIgKipwcm9wX25hbWVzKQo+IMKgewo+IMKgCWRybU1vZGVPYmplY3RQcm9wZXJ0 aWVzUHRyIHByb3BzOwo+IMKgCWludCBpLCBqLCBmZDsKPiBAQCAtMjE0LDcgKzIxNCw3IEBAIGln dF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90Cj4gKmRpc3BsYXksIGlndF9w bGFuZV90ICpwbGFuZSwKPiDCoAkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwgcHJvcF9uYW1lc1tq XSkgIT0gMCkKPiDCoAkJCQljb250aW51ZTsKPiDCoAo+IC0JCQlwbGFuZS0+YXRvbWljX3Byb3Bz X3BsYW5lW2pdID0gcHJvcHMtCj4gPnByb3BzW2ldOwo+ICsJCQlwbGFuZS0+cHJvcHNbal0gPSBw cm9wcy0+cHJvcHNbaV07Cj4gwqAJCQlicmVhazsKPiDCoAkJfQo+IMKgCj4gQEAgLTE2NTksNyAr MTY1OSw2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LAo+ IGludCBkcm1fZmQpCj4gwqAJZHJtTW9kZVJlcyAqcmVzb3VyY2VzOwo+IMKgCWRybU1vZGVQbGFu ZVJlcyAqcGxhbmVfcmVzb3VyY2VzOwo+IMKgCWludCBpOwo+IC0JaW50IGlzX2F0b21pYyA9IDA7 Cj4gwqAKPiDCoAltZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9kaXNwbGF5X3QpKTsKPiDC oAo+IEBAIC0xNjc5LDcgKzE2NzgsOSBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwKPiBpbnQgZHJtX2ZkKQo+IMKgCWlndF9hc3NlcnRfZihkaXNwbGF5LT5w aXBlcywgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yCj4gJWQgcGlwZXNcbiIsIGRpc3Bs YXktPm5fcGlwZXMpOwo+IMKgCj4gwqAJZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVO VF9DQVBfVU5JVkVSU0FMX1BMQU5FUywgMSk7Cj4gLQlpc19hdG9taWMgPSBkcm1TZXRDbGllbnRD YXAoZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMsCj4gMSk7Cj4gKwlpZiAoZHJtU2V0Q2xp ZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRPTUlDLCAxKSA9PSAwKQo+ICsJCWRpc3Bs YXktPmlzX2F0b21pYyA9IDE7Cj4gKwo+IMKgCXBsYW5lX3Jlc291cmNlcyA9IGRybU1vZGVHZXRQ bGFuZVJlc291cmNlcyhkaXNwbGF5LT5kcm1fZmQpOwo+IMKgCWlndF9hc3NlcnQocGxhbmVfcmVz b3VyY2VzKTsKPiDCoAo+IEBAIC0xNzc2LDE5ICsxNzc3LDI3IEBAIHZvaWQgaWd0X2Rpc3BsYXlf aW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LAo+IGludCBkcm1fZmQpCj4gwqAJCQlwbGFuZS0+ dHlwZSA9IHR5cGU7Cj4gwqAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7Cj4gwqAJCQlwbGFuZS0+ZHJt X3BsYW5lID0gZHJtX3BsYW5lOwo+IC0JCQlwbGFuZS0+ZmVuY2VfZmQgPSAtMTsKPiArCQkJcGxh bmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdID0KPiB+MFVMTDsKPiDCoAo+IC0JCQlp ZiAoaXNfYXRvbWljID09IDApIHsKPiAtCQkJCWRpc3BsYXktPmlzX2F0b21pYyA9IDE7Cj4gLQkJ CQlpZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoZGlzcGxheSwKPiBwbGFuZSwgSUdUX05VTV9Q TEFORV9QUk9QUywgaWd0X3BsYW5lX3Byb3BfbmFtZXMpOwo+IC0JCQl9Cj4gKwkJCWlndF9maWxs X3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLAo+IElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9w bGFuZV9wcm9wX25hbWVzKTsKPiDCoAo+IMKgCQkJZ2V0X3BsYW5lX3Byb3BlcnR5KGRpc3BsYXkt PmRybV9mZCwKPiBkcm1fcGxhbmUtPnBsYW5lX2lkLAo+IMKgCQkJCQnCoMKgwqAicm90YXRpb24i LAo+IC0JCQkJCcKgwqDCoCZwbGFuZS0KPiA+cm90YXRpb25fcHJvcGVydHksCj4gLQkJCQkJwqDC oMKgJnByb3BfdmFsdWUsCj4gKwkJCQkJwqDCoMKgJnBsYW5lLQo+ID5wcm9wc1tJR1RfUExBTkVf Uk9UQVRJT05dLAo+ICsJCQkJCcKgwqDCoCZwbGFuZS0KPiA+dmFsdWVzW0lHVF9QTEFORV9ST1RB VElPTl0sCj4gwqAJCQkJCcKgwqDCoE5VTEwpOwo+IC0JCQlwbGFuZS0+cm90YXRpb24gPQo+IChp Z3Rfcm90YXRpb25fdClwcm9wX3ZhbHVlOwo+ICsKPiArCQkJLyogQ2xlYXIgYW55IHJlc2lkdWFs IGZyYW1lYnVmZmVyIGluZm8gb24KPiBmaXJzdCBjb21taXQuICovCj4gKwkJCWlndF9wbGFuZV9z ZXRfcHJvcF9jaGFuZ2VkKHBsYW5lLAo+IElHVF9QTEFORV9GQl9JRCk7Cj4gKwkJCWlndF9wbGFu ZV9zZXRfcHJvcF9jaGFuZ2VkKHBsYW5lLAo+IElHVF9QTEFORV9DUlRDX0lEKTsKPiArCj4gKwkJ CS8qCj4gKwkJCcKgKiBDUlRDX1gvWSBhcmUgbm90IGNoYW5nZWQgaW4KPiBpZ3RfcGxhbmVfc2V0 X2ZiLCBzbwo+ICsJCQnCoCogZm9yY2UgdGhlbSB0byBiZSBzYW5pdGl6ZWQgaW4gY2FzZSB0aGV5 Cj4gY29udGFpbgo+ICsJCQnCoCogZ2FyYmFnZS4KPiArCQkJwqAqLwo+ICsJCQlpZ3RfcGxhbmVf c2V0X3Byb3BfY2hhbmdlZChwbGFuZSwKPiBJR1RfUExBTkVfQ1JUQ19YKTsKPiArCQkJaWd0X3Bs YW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdUX1BMQU5FX0NSVENfWSk7Cj4gwqAJCX0K PiDCoAo+IMKgCQkvKgo+IEBAIC0xODA1LDkgKzE4MTQsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2lu aXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKPiBpbnQgZHJtX2ZkKQo+IMKgCj4gwqAJCXBpcGUt Pm5fcGxhbmVzID0gbl9wbGFuZXM7Cj4gwqAKPiAtCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRp c3BsYXksIGksIHBsYW5lKQo+IC0JCQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4gLQo+IMKg CQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+IMKgCX0KPiDCoAo+IEBAIC0yMDcwLDE4ICsy MDc2LDcgQEAgYm9vbCBpZ3RfcGlwZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdCAqcGlwZSwKPiBj b25zdCBjaGFyICpuYW1lLAo+IMKgCj4gwqBzdGF0aWMgdWludDMyX3QgaWd0X3BsYW5lX2dldF9m Yl9pZChpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gwqB7Cj4gLQlpZiAocGxhbmUtPmZiKQo+IC0JCXJl dHVybiBwbGFuZS0+ZmItPmZiX2lkOwo+IC0JZWxzZQo+IC0JCXJldHVybiAwOwo+IC19Cj4gLQo+ IC1zdGF0aWMgdWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9nZW1faGFuZGxlKGlndF9wbGFuZV90 ICpwbGFuZSkKPiAtewo+IC0JaWYgKHBsYW5lLT5mYikKPiAtCQlyZXR1cm4gcGxhbmUtPmZiLT5n ZW1faGFuZGxlOwo+IC0JZWxzZQo+IC0JCXJldHVybiAwOwo+ICsJcmV0dXJuIHBsYW5lLT52YWx1 ZXNbSUdUX1BMQU5FX0ZCX0lEXTsKPiDCoH0KPiDCoAo+IMKgI2RlZmluZSBDSEVDS19SRVRVUk4o ciwgZmFpbCkgewlcCj4gQEAgLTIwOTAsOSArMjA4NSw2IEBAIHN0YXRpYyB1aW50MzJfdAo+IGln dF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gwqAJaWd0X2Fz c2VydF9lcShyLCAwKTsJXAo+IMKgfQo+IMKgCj4gLQo+IC0KPiAtCj4gwqAvKgo+IMKgICogQWRk IHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIG9mIGEgcGxhbmUgdG8gdGhlIGF0b21pYyBwcm9wZXJ0 eSBzZXQKPiDCoCAqLwo+IEBAIC0yMTAxLDYzICsyMDkzLDMxIEBAIGlndF9hdG9taWNfcHJlcGFy ZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QKPiAqcGxhbmUsIGlndF9waXBlX3QgKnBpcGUsCj4g wqAJZHJtTW9kZUF0b21pY1JlcSAqcmVxKQo+IMKgewo+IMKgCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSBwaXBlLT5kaXNwbGF5Owo+IC0JdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7Cj4gKwlpbnQg aTsKPiDCoAo+IMKgCWlndF9hc3NlcnQocGxhbmUtPmRybV9wbGFuZSk7Cj4gwqAKPiAtCS8qIGl0 J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVuc3VwcG9ydGVkIGZlYXR1cmUgKi8KPiAtCWlndF9hc3Nl cnQoaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKHBsYW5lKSB8fAo+IC0JCQkhcGxhbmUtPnJv dGF0aW9uX2NoYW5nZWQpOwo+IC0KPiAtCWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9pZChwbGFu ZSk7Cj4gLQljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKPiAtCj4gwqAJTE9HKGRpc3BsYXksCj4g wqAJwqDCoMKgwqAicG9wdWxhdGluZyBwbGFuZSBkYXRhOiAlcy4lZCwgZmIgJXVcbiIsCj4gwqAJ wqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiDCoAnCoMKgwqDCoHBsYW5l LT5pbmRleCwKPiAtCcKgwqDCoMKgZmJfaWQpOwo+IC0KPiAtCWlmIChwbGFuZS0+ZmVuY2VfZmQg Pj0gMCkgewo+IC0JCXVpbnQ2NF90IGZlbmNlX2ZkID0gKGludDY0X3QpIHBsYW5lLT5mZW5jZV9m ZDsKPiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IElHVF9Q TEFORV9JTl9GRU5DRV9GRCwgZmVuY2VfZmQpOwo+IC0JfQo+ICsJwqDCoMKgwqBpZ3RfcGxhbmVf Z2V0X2ZiX2lkKHBsYW5lKSk7Cj4gwqAKPiAtCWlmIChwbGFuZS0+ZmJfY2hhbmdlZCkgewo+IC0J CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gSUdUX1BMQU5FX0NS VENfSUQsIGZiX2lkID8gY3J0Y19pZCA6IDApOwo+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxh bmVfcmVxKHJlcSwgcGxhbmUsCj4gSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Cj4gLQl9Cj4gLQo+ IC0JaWYgKHBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpIHsK PiAtCQl1aW50MzJfdCBzcmNfeCA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3gsIDApOyAvKgo+IHNy Y194ICovCj4gLQkJdWludDMyX3Qgc3JjX3kgPSBJR1RfRklYRUQocGxhbmUtPnNyY195LCAwKTsg LyoKPiBzcmNfeSAqLwo+IC0JCXVpbnQzMl90IHNyY193ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNf dywgMCk7IC8qCj4gc3JjX3cgKi8KPiAtCQl1aW50MzJfdCBzcmNfaCA9IElHVF9GSVhFRChwbGFu ZS0+c3JjX2gsIDApOyAvKgo+IHNyY19oICovCj4gLQkJaW50MzJfdCBjcnRjX3ggPSBwbGFuZS0+ Y3J0Y194Owo+IC0JCWludDMyX3QgY3J0Y195ID0gcGxhbmUtPmNydGNfeTsKPiAtCQl1aW50MzJf dCBjcnRjX3cgPSBwbGFuZS0+Y3J0Y193Owo+IC0JCXVpbnQzMl90IGNydGNfaCA9IHBsYW5lLT5j cnRjX2g7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgSUdUX05VTV9QTEFORV9QUk9QUzsgaSsrKSB7Cj4g KwkJaWYgKCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHBsYW5lLCBpKSkKPiArCQkJY29udGlu dWU7CkNvdWxkIHdlIGFkZCBhIG1hY3JvIGhlcmUgdG9vPyBMaWtlICdmb3JfZWFjaF9wcm9wX29u X3BsYW5lKCknIG9yCnNpbWlsYXI/Cgo+IMKgCj4gLQkJTE9HKGRpc3BsYXksCj4gLQkJInNyYyA9 ICglZCwgJWQpICV1IHggJXUgIgo+IC0JCSJkc3QgPSAoJWQsICVkKSAldSB4ICV1XG4iLAo+IC0J CXNyY194ID4+IDE2LCBzcmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LAo+IC0J CWNydGNfeCwgY3J0Y195LCBjcnRjX3csIGNydGNfaCk7Cj4gKwkJLyogaXQncyBhbiBlcnJvciB0 byB0cnkgYW4gdW5zdXBwb3J0ZWQgZmVhdHVyZSAqLwo+ICsJCWlndF9hc3NlcnQocGxhbmUtPnBy b3BzW2ldKTsKPiDCoAo+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxh bmUsCj4gSUdUX1BMQU5FX1NSQ19YLCBzcmNfeCk7Cj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9w bGFuZV9yZXEocmVxLCBwbGFuZSwKPiBJR1RfUExBTkVfU1JDX1ksIHNyY195KTsKPiAtCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IElHVF9QTEFORV9TUkNfVywg c3JjX3cpOwo+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4g SUdUX1BMQU5FX1NSQ19ILCBzcmNfaCk7Cj4gKwkJaWd0X2RlYnVnKCJwbGFuZSAlcy4lZDogU2V0 dGluZyBwcm9wZXJ0eSBcIiVzXCIgdG8KPiAweCUiUFJJeDY0Ii8lIlBSSWk2NCJcbiIsCj4gKwkJ CWttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBwbGFuZS0+aW5kZXgsIAo+IGlndF9wbGFu ZV9wcm9wX25hbWVzW2ldLAo+ICsJCQlwbGFuZS0+dmFsdWVzW2ldLCBwbGFuZS0+dmFsdWVzW2ld KTsKPiDCoAo+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4g SUdUX1BMQU5FX0NSVENfWCwgY3J0Y194KTsKPiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5l X3JlcShyZXEsIHBsYW5lLAo+IElHVF9QTEFORV9DUlRDX1ksIGNydGNfeSk7Cj4gLQkJaWd0X2F0 b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwKPiBJR1RfUExBTkVfQ1JUQ19XLCBj cnRjX3cpOwo+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4g SUdUX1BMQU5FX0NSVENfSCwgY3J0Y19oKTsKPiArCQlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVB dG9taWNBZGRQcm9wZXJ0eShyZXEsCj4gcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsCj4gKwkJ CQkJCcKgwqBwbGFuZS0+cHJvcHNbaV0sCj4gKwkJCQkJCcKgwqBwbGFuZS0KPiA+dmFsdWVzW2ld KSk7Cj4gwqAJfQo+IC0KPiAtCWlmIChwbGFuZS0+cm90YXRpb25fY2hhbmdlZCkKPiAtCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IC0JCQlJR1RfUExBTkVfUk9U QVRJT04sIHBsYW5lLT5yb3RhdGlvbik7Cj4gwqB9Cj4gwqAKPiDCoAo+IEBAIC0yMTgzLDE3ICsy MTQzLDIwIEBAIHN0YXRpYyBpbnQgaWd0X2RybV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QKPiAq cGxhbmUsCj4gwqAJaW50MzJfdCBjcnRjX3k7Cj4gwqAJdWludDMyX3QgY3J0Y193Owo+IMKgCXVp bnQzMl90IGNydGNfaDsKPiArCWJvb2wgc2V0cGxhbmUgPQo+ICsJCWlndF9wbGFuZV9pc19wcm9w X2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9GQl9JRCkgfHwKPiArCQlwbGFuZS0+Y2hhbmdlZCAm IElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01BU0s7Cj4gwqAKPiDCoAlpZ3RfYXNzZXJ0KHBsYW5l LT5kcm1fcGxhbmUpOwo+IMKgCj4gwqAJLyogaXQncyBhbiBlcnJvciB0byB0cnkgYW4gdW5zdXBw b3J0ZWQgZmVhdHVyZSAqLwo+IMKgCWlndF9hc3NlcnQoaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0 aW9uKHBsYW5lKSB8fAo+IC0JCcKgwqDCoCFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Cj4gKwkJ wqDCoMKgIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdUX1BMQU5FX1JPVEFU SU9OKSk7Cj4gwqAKPiDCoAlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOwo+IMKg CWNydGNfaWQgPSBwaXBlLT5jcnRjX2lkOwo+IMKgCj4gLQlpZiAoKHBsYW5lLT5mYl9jaGFuZ2Vk IHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpICYmIGZiX2lkID09Cj4gMCkgewo+ICsJaWYgKHNldHBs YW5lICYmIGZiX2lkID09IDApIHsKPiDCoAkJTE9HKGRpc3BsYXksCj4gwqAJCcKgwqDCoMKgIlNl dFBsYW5lIHBpcGUgJXMsIHBsYW5lICVkLCBkaXNhYmxpbmdcbiIsCj4gwqAJCcKgwqDCoMKga21z dGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCj4gQEAgLTIyMTIsMTYgKzIxNzUsMTUgQEAgc3Rh dGljIGludCBpZ3RfZHJtX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdAo+ICpwbGFuZSwKPiDCoAkJ CQnCoMKgwqDCoMKgwqBJR1RfRklYRUQoMCwwKSAvKiBzcmNfaCAqLyk7Cj4gwqAKPiDCoAkJQ0hF Q0tfUkVUVVJOKHJldCwgZmFpbF9vbl9lcnJvcik7Cj4gLQl9IGVsc2UgaWYgKHBsYW5lLT5mYl9j aGFuZ2VkIHx8IHBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkIHx8Cj4gLQkJcGxhbmUtPnNpemVfY2hh bmdlZCkgewo+IC0JCXNyY194ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfeCwwKTsgLyogc3JjX3gg Ki8KPiAtCQlzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3ksMCk7IC8qIHNyY195ICovCj4g LQkJc3JjX3cgPSBJR1RfRklYRUQocGxhbmUtPnNyY193LDApOyAvKiBzcmNfdyAqLwo+IC0JCXNy Y19oID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfaCwwKTsgLyogc3JjX2ggKi8KPiAtCQljcnRjX3gg PSBwbGFuZS0+Y3J0Y194Owo+IC0JCWNydGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gLQkJY3J0Y193 ID0gcGxhbmUtPmNydGNfdzsKPiAtCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+ICsJfSBlbHNl IGlmIChzZXRwbGFuZSkgewo+ICsJCXNyY194ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JD X1hdOwo+ICsJCXNyY195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ldOwo+ICsJCXNy Y193ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ddOwo+ICsJCXNyY19oID0gcGxhbmUt PnZhbHVlc1tJR1RfUExBTkVfU1JDX0hdOwo+ICsJCWNydGNfeCA9IHBsYW5lLT52YWx1ZXNbSUdU X1BMQU5FX0NSVENfWF07Cj4gKwkJY3J0Y195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfQ1JU Q19ZXTsKPiArCQljcnRjX3cgPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddOwo+ICsJ CWNydGNfaCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfSF07Cj4gwqAKPiDCoAkJTE9H KGRpc3BsYXksCj4gwqAJCcKgwqDCoMKgIlNldFBsYW5lICVzLiVkLCBmYiAldSwgc3JjID0gKCVk LCAlZCkgIgo+IEBAIC0yMjQ1LDkgKzIyMDcsMTAgQEAgc3RhdGljIGludCBpZ3RfZHJtX3BsYW5l X2NvbW1pdChpZ3RfcGxhbmVfdAo+ICpwbGFuZSwKPiDCoAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFp bF9vbl9lcnJvcik7Cj4gwqAJfQo+IMKgCj4gLQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQp IHsKPiAtCQlyZXQgPSBpZ3RfcGxhbmVfc2V0X3Byb3BlcnR5KHBsYW5lLCBwbGFuZS0KPiA+cm90 YXRpb25fcHJvcGVydHksCj4gLQkJCQnCoMKgwqDCoMKgwqDCoHBsYW5lLT5yb3RhdGlvbik7Cj4g KwlpZiAoaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwbGFuZSwgSUdUX1BMQU5FX1JPVEFUSU9O KSkgewo+ICsJCXJldCA9IGlndF9wbGFuZV9zZXRfcHJvcGVydHkocGxhbmUsCj4gKwkJCQkJwqDC oMKgwqDCoHBsYW5lLQo+ID5wcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dLAo+ICsJCQkJCcKgwqDC oMKgwqBwbGFuZS0KPiA+dmFsdWVzW0lHVF9QTEFORV9ST1RBVElPTl0pOwo+IMKgCj4gwqAJCUNI RUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwo+IMKgCX0KPiBAQCAtMjI2OSwzNSArMjIz MiwzMCBAQCBzdGF0aWMgaW50Cj4gaWd0X2N1cnNvcl9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90 ICpjdXJzb3IsCj4gwqAJdWludDMyX3QgY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7Cj4gwqAJaW50 IHJldDsKPiDCoAo+IC0JaWYgKGN1cnNvci0+ZmJfY2hhbmdlZCkgewo+IC0JCXVpbnQzMl90IGdl bV9oYW5kbGUgPQo+IGlndF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShjdXJzb3IpOwo+IC0KPiAt CQlpZiAoZ2VtX2hhbmRsZSkgewo+ICsJaWYgKGlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQoY3Vy c29yLCBJR1RfUExBTkVfRkJfSUQpKSB7Cj4gKwkJaWYgKGN1cnNvci0+Z2VtX2hhbmRsZSkKPiDC oAkJCUxPRyhkaXNwbGF5LAo+IMKgCQkJwqDCoMKgwqAiU2V0Q3Vyc29yIHBpcGUgJXMsIGZiICV1 ICVkeCVkXG4iLAo+IMKgCQkJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwK PiAtCQkJwqDCoMKgwqBnZW1faGFuZGxlLAo+IC0JCQnCoMKgwqDCoGN1cnNvci0+Y3J0Y193LCBj dXJzb3ItPmNydGNfaCk7Cj4gLQo+IC0JCQlyZXQgPSBkcm1Nb2RlU2V0Q3Vyc29yKGRpc3BsYXkt PmRybV9mZCwKPiBjcnRjX2lkLAo+IC0JCQkJCcKgwqDCoMKgwqDCoMKgZ2VtX2hhbmRsZSwKPiAt CQkJCQnCoMKgwqDCoMKgwqDCoGN1cnNvci0+Y3J0Y193LAo+IC0JCQkJCcKgwqDCoMKgwqDCoMKg Y3Vyc29yLT5jcnRjX2gpOwo+IC0JCX0gZWxzZSB7Cj4gKwkJCcKgwqDCoMKgY3Vyc29yLT5nZW1f aGFuZGxlLAo+ICsJCQnCoMKgwqDCoCh1bnNpZ25lZCljdXJzb3ItCj4gPnZhbHVlc1tJR1RfUExB TkVfQ1JUQ19XXSwKPiArCQkJwqDCoMKgwqAodW5zaWduZWQpY3Vyc29yLQo+ID52YWx1ZXNbSUdU X1BMQU5FX0NSVENfSF0pOwo+ICsJCWVsc2UKPiDCoAkJCUxPRyhkaXNwbGF5LAo+IMKgCQkJwqDC oMKgwqAiU2V0Q3Vyc29yIHBpcGUgJXMsIGRpc2FibGluZ1xuIiwKPiDCoAkJCcKgwqDCoMKga21z dGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSkpOwo+IMKgCj4gLQkJCXJldCA9IGRybU1vZGVTZXRD dXJzb3IoZGlzcGxheS0+ZHJtX2ZkLAo+IGNydGNfaWQsCj4gLQkJCQkJwqDCoMKgwqDCoMKgwqAw LCAwLCAwKTsKPiAtCQl9Cj4gLQo+ICsJCXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxheS0+ ZHJtX2ZkLCBjcnRjX2lkLAo+ICsJCQkJwqDCoMKgwqDCoMKgwqBjdXJzb3ItPmdlbV9oYW5kbGUs Cj4gKwkJCQnCoMKgwqDCoMKgwqDCoGN1cnNvci0KPiA+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1dd LAo+ICsJCQkJwqDCoMKgwqDCoMKgwqBjdXJzb3ItCj4gPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19I XSk7Cj4gwqAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwo+IMKgCX0KPiDCoAo+ IC0JaWYgKGN1cnNvci0+cG9zaXRpb25fY2hhbmdlZCkgewo+IC0JCWludCB4ID0gY3Vyc29yLT5j cnRjX3g7Cj4gLQkJaW50IHkgPSBjdXJzb3ItPmNydGNfeTsKPiArCWlmIChpZ3RfcGxhbmVfaXNf cHJvcF9jaGFuZ2VkKGN1cnNvciwgSUdUX1BMQU5FX0NSVENfWCkgfHwKPiArCcKgwqDCoMKgaWd0 X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChjdXJzb3IsIElHVF9QTEFORV9DUlRDX1kpKSB7Cj4gKwkJ aW50IHggPSBjdXJzb3ItPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19YXTsKPiArCQlpbnQgeSA9IGN1 cnNvci0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ldOwo+IMKgCj4gwqAJCUxPRyhkaXNwbGF5LAo+ IMKgCQnCoMKgwqDCoCJNb3ZlQ3Vyc29yIHBpcGUgJXMsICglZCwgJWQpXG4iLAo+IEBAIC0yMzI2 LDEzICsyMjg0LDE0IEBAIHN0YXRpYyBpbnQKPiBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVn YWN5KGlndF9wbGFuZV90ICpwcmltYXJ5LAo+IMKgCWludCByZXQ7Cj4gwqAKPiDCoAkvKiBQcmlt YXJ5IHBsYW5lcyBjYW4ndCBiZSB3aW5kb3dlZCB3aGVuIHVzaW5nIGEgbGVnYWN5Cj4gY29tbWl0 ICovCj4gLQlpZ3RfYXNzZXJ0KChwcmltYXJ5LT5jcnRjX3ggPT0gMCAmJiBwcmltYXJ5LT5jcnRj X3kgPT0gMCkpOwo+ICsJaWd0X2Fzc2VydCgocHJpbWFyeS0+dmFsdWVzW0lHVF9QTEFORV9DUlRD X1hdID09IDAgJiYKPiBwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV0gPT0gMCkpOwo+ IMKgCj4gwqAJLyogbm9yIHJvdGF0ZWQgKi8KPiAtCWlndF9hc3NlcnQoIXByaW1hcnktPnJvdGF0 aW9uX2NoYW5nZWQpOwo+ICsJaWd0X2Fzc2VydCghaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChw cmltYXJ5LAo+IElHVF9QTEFORV9ST1RBVElPTikpOwo+IMKgCj4gLQlpZiAoIXByaW1hcnktPmZi X2NoYW5nZWQgJiYgIXByaW1hcnktPnBvc2l0aW9uX2NoYW5nZWQgJiYKPiAtCcKgwqDCoMKgIXBy aW1hcnktPnNpemVfY2hhbmdlZCAmJiAhcHJpbWFyeS0+cGlwZS0+bW9kZV9jaGFuZ2VkKQo+ICsJ aWYgKCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9GQl9JRCkg JiYKPiArCcKgwqDCoMKgIShwcmltYXJ5LT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JEX0NIQU5H RURfTUFTSykgJiYKPiArCcKgwqDCoMKgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKPiDC oAkJcmV0dXJuIDA7Cj4gwqAKPiDCoAljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKPiBAQCAtMjM0 MywxOSArMjMwMiwyMiBAQCBzdGF0aWMgaW50Cj4gaWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0X2xl Z2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKPiDCoAkJbW9kZSA9IE5VTEw7Cj4gwqAKPiDCoAlp ZiAoZmJfaWQpIHsKPiArCQl1aW50MzJfdCBzcmNfeCA9IHByaW1hcnktPnZhbHVlc1tJR1RfUExB TkVfU1JDX1hdID4+Cj4gMTY7Cj4gKwkJdWludDMyX3Qgc3JjX3kgPSBwcmltYXJ5LT52YWx1ZXNb SUdUX1BMQU5FX1NSQ19ZXSA+Pgo+IDE2Owo+ICsKPiDCoAkJTE9HKGRpc3BsYXksCj4gwqAJCcKg wqDCoMKgIiVzOiBTZXRDcnRjIHBpcGUgJXMsIGZiICV1LCBzcmMgKCVkLCAlZCksICIKPiDCoAkJ wqDCoMKgwqAibW9kZSAlZHglZFxuIiwKPiDCoAkJwqDCoMKgwqBpZ3Rfb3V0cHV0X25hbWUob3V0 cHV0KSwKPiDCoAkJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiDCoAkJ wqDCoMKgwqBmYl9pZCwKPiAtCQnCoMKgwqDCoHByaW1hcnktPnNyY194LCBwcmltYXJ5LT5zcmNf eSwKPiArCQnCoMKgwqDCoHNyY194LCBzcmNfeSwKPiDCoAkJwqDCoMKgwqBtb2RlLT5oZGlzcGxh eSwgbW9kZS0+dmRpc3BsYXkpOwo+IMKgCj4gwqAJCXJldCA9IGRybU1vZGVTZXRDcnRjKGRpc3Bs YXktPmRybV9mZCwKPiDCoAkJCQnCoMKgwqDCoMKgY3J0Y19pZCwKPiDCoAkJCQnCoMKgwqDCoMKg ZmJfaWQsCj4gLQkJCQnCoMKgwqDCoMKgcHJpbWFyeS0+c3JjX3gsIHByaW1hcnktPnNyY195LAo+ ICsJCQkJwqDCoMKgwqDCoHNyY194LCBzcmNfeSwKPiDCoAkJCQnCoMKgwqDCoMKgJm91dHB1dC0+ aWQsCj4gwqAJCQkJwqDCoMKgwqDCoDEsCj4gwqAJCQkJwqDCoMKgwqDCoG1vZGUpOwo+IEBAIC0y NjA4LDE4ICsyNTcwLDI3IEBAIGRpc3BsYXlfY29tbWl0X2NoYW5nZWQoaWd0X2Rpc3BsYXlfdAo+ ICpkaXNwbGF5LCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKPiDCoAkJfQo+IMKgCj4gwqAJCWZv cl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKPiAtCQkJcGxhbmUt PmZiX2NoYW5nZWQgPSBmYWxzZTsKPiAtCQkJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxz ZTsKPiAtCQkJcGxhbmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOwo+ICsJCQlpZiAocyA9PSBDT01N SVRfQVRPTUlDKSB7Cj4gKwkJCQlpbnQgZmQ7Cj4gKwkJCQlwbGFuZS0+Y2hhbmdlZCA9IDA7Cj4g wqAKPiAtCQkJaWYgKHMgIT0gQ09NTUlUX0xFR0FDWSB8fAo+IC0JCQnCoMKgwqDCoCEocGxhbmUt PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWQo+IHx8Cj4gLQkJCcKgwqDCoMKgwqDCoHBs YW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikpCj4gLQkJCQlwbGFuZS0+cm90YXRp b25fY2hhbmdlZCA9IGZhbHNlOwo+ICsJCQkJZmQgPSBwbGFuZS0KPiA+dmFsdWVzW0lHVF9QTEFO RV9JTl9GRU5DRV9GRF07Cj4gKwkJCQlpZiAoZmQgIT0gLTEpCj4gKwkJCQkJY2xvc2UoZmQpOwo+ IMKgCj4gLQkJCWlmIChzID09IENPTU1JVF9BVE9NSUMpCj4gwqAJCQkJLyogcmVzZXQgZmVuY2Vf ZmQgdG8gcHJldmVudCBpdCBmcm9tCj4gYmVpbmcgc2V0IGZvciB0aGUgbmV4dCBjb21taXQgKi8K PiAtCQkJCWlndF9wbGFuZV9zZXRfZmVuY2VfZmQocGxhbmUsIC0xKTsKPiArCQkJCXBsYW5lLT52 YWx1ZXNbSUdUX1BMQU5FX0lOX0ZFTkNFX0ZEXSAKPiA9IC0xOwo+ICsJCQl9IGVsc2Ugewo+ICsJ CQkJcGxhbmUtPmNoYW5nZWQgJj0KPiB+SUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSzsKPiAr Cj4gKwkJCQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHBsYW5lLAo+IElHVF9QTEFORV9D UlRDX0lEKTsKPiArCQkJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdU X1BMQU5FX0ZCX0lEKTsKPiArCj4gKwkJCQlpZiAocyAhPSBDT01NSVRfTEVHQUNZIHx8Cj4gKwkJ CQnCoMKgwqDCoCEocGxhbmUtPnR5cGUgPT0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZIHx8Cj4g KwkJCQnCoMKgwqDCoMKgwqBwbGFuZS0+dHlwZSA9PQo+IERSTV9QTEFORV9UWVBFX0NVUlNPUikp Cj4gKwkJCQkJaWd0X3BsYW5lX2NsZWFyX3Byb3BfY2hhbmdlZAo+IChwbGFuZSwgSUdUX1BMQU5F X1JPVEFUSU9OKTsKPiArCQkJfQo+IMKgCQl9Cj4gwqAJfQo+IMKgCj4gQEAgLTI5MTMsMzAgKzI4 ODQsMjkgQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFuZSwKPiBzdHJ1 Y3QgaWd0X2ZiICpmYikKPiDCoAlMT0coZGlzcGxheSwgIiVzLiVkOiBwbGFuZV9zZXRfZmIoJWQp XG4iLAo+IGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAo+IMKgCcKgwqDCoMKgcGxhbmUt PmluZGV4LCBmYiA/IGZiLT5mYl9pZCA6IDApOwo+IMKgCj4gLQlwbGFuZS0+ZmIgPSBmYjsKPiAr CWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQsIGZiID8K PiBwaXBlLT5jcnRjX2lkIDogMCk7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUs IElHVF9QTEFORV9GQl9JRCwgZmIgPyBmYi0KPiA+ZmJfaWQgOiAwKTsKPiArCj4gKwlpZiAocGxh bmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmIGZiKQo+ICsJCXBsYW5lLT5nZW1f aGFuZGxlID0gZmItPmdlbV9oYW5kbGU7Cj4gKwllbHNlCj4gKwkJcGxhbmUtPmdlbV9oYW5kbGUg PSAwOwo+ICsKPiDCoAkvKiBoYWNrIHRvIGtlZXAgdGVzdHMgd29ya2luZyB0aGF0IGRvbid0IGNh bGwKPiBpZ3RfcGxhbmVfc2V0X3NpemUoKSAqLwo+IMKgCWlmIChmYikgewo+IMKgCQkvKiBzZXQg ZGVmYXVsdCBwbGFuZSBzaXplIGFzIGZiIHNpemUgKi8KPiAtCQlwbGFuZS0+Y3J0Y193ID0gZmIt PndpZHRoOwo+IC0JCXBsYW5lLT5jcnRjX2ggPSBmYi0+aGVpZ2h0Owo+ICsJCWlndF9wbGFuZV9z ZXRfc2l6ZShwbGFuZSwgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsKPiDCoAo+IMKgCQkvKiBzZXQg ZGVmYXVsdCBzcmMgcG9zL3NpemUgYXMgZmIgc2l6ZSAqLwo+IC0JCXBsYW5lLT5zcmNfeCA9IDA7 Cj4gLQkJcGxhbmUtPnNyY195ID0gMDsKPiAtCQlwbGFuZS0+c3JjX3cgPSBmYi0+d2lkdGg7Cj4g LQkJcGxhbmUtPnNyY19oID0gZmItPmhlaWdodDsKPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKGZi LCBwbGFuZSwgMCwgMCk7Cj4gKwkJaWd0X2ZiX3NldF9zaXplKGZiLCBwbGFuZSwgZmItPndpZHRo LCBmYi0+aGVpZ2h0KTsKPiDCoAl9IGVsc2Ugewo+IC0JCXBsYW5lLT5zcmNfeCA9IDA7Cj4gLQkJ cGxhbmUtPnNyY195ID0gMDsKPiAtCQlwbGFuZS0+c3JjX3cgPSAwOwo+IC0JCXBsYW5lLT5zcmNf aCA9IDA7Cj4gKwkJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCAwLCAwKTsKPiDCoAo+IC0JCXBs YW5lLT5jcnRjX3cgPSAwOwo+IC0JCXBsYW5lLT5jcnRjX2ggPSAwOwo+ICsJCS8qIHNldCBkZWZh dWx0IHNyYyBwb3Mvc2l6ZSBhcyBmYiBzaXplICovCj4gKwkJaWd0X2ZiX3NldF9wb3NpdGlvbihm YiwgcGxhbmUsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZShmYiwgcGxhbmUsIDAsIDApOwo+ IMKgCX0KPiAtCj4gLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4gLQlwbGFuZS0+c2l6ZV9j aGFuZ2VkID0gdHJ1ZTsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTI5NDksMTIgKzI5MTksMTkg QEAgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFuZSwKPiBzdHJ1Y3QgaWd0 X2ZiICpmYikKPiDCoCAqLwo+IMKgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZlbmNlX2ZkKGlndF9wbGFu ZV90ICpwbGFuZSwgaW50IGZlbmNlX2ZkKQo+IMKgewo+IC0JY2xvc2UocGxhbmUtPmZlbmNlX2Zk KTsKPiArCWludDY0X3QgZmQ7Cj4gwqAKPiAtCWlmIChmY250bChmZW5jZV9mZCwgRl9HRVRGRCkg IT0gLTEpCj4gLQkJcGxhbmUtPmZlbmNlX2ZkID0gZHVwKGZlbmNlX2ZkKTsKPiAtCWVsc2UKPiAt CQlwbGFuZS0+ZmVuY2VfZmQgPSAtMTsKPiArCWZkID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVf SU5fRkVOQ0VfRkRdOwo+ICsJaWYgKGZkICE9IC0xKQo+ICsJCWNsb3NlKGZkKTsKPiArCj4gKwlp ZiAoZmVuY2VfZmQgIT0gLTEpIHsKPiArCQlmZCA9IGR1cChmZW5jZV9mZCk7Cj4gKwkJaWd0X2Zh aWxfb24oZmQgPT0gLTEpOwo+ICsJfSBlbHNlCj4gKwkJZmQgPSAtMTsKPiArCj4gKwlpZ3RfcGxh bmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9JTl9GRU5DRV9GRCwgZmQpOwo+IMKg fQo+IMKgCj4gwqB2b2lkIGlndF9wbGFuZV9zZXRfcG9zaXRpb24oaWd0X3BsYW5lX3QgKnBsYW5l LCBpbnQgeCwgaW50IHkpCj4gQEAgLTI5NjUsMTAgKzI5NDIsOCBAQCB2b2lkIGlndF9wbGFuZV9z ZXRfcG9zaXRpb24oaWd0X3BsYW5lX3QKPiAqcGxhbmUsIGludCB4LCBpbnQgeSkKPiDCoAlMT0co ZGlzcGxheSwgIiVzLiVkOiBwbGFuZV9zZXRfcG9zaXRpb24oJWQsJWQpXG4iLAo+IMKgCcKgwqDC oMKga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgeCwgeSk7Cj4g wqAKPiAtCXBsYW5lLT5jcnRjX3ggPSB4Owo+IC0JcGxhbmUtPmNydGNfeSA9IHk7Cj4gLQo+IC0J cGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSB0cnVlOwo+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3Zh bHVlKHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19YLCB4KTsKPiArCWlndF9wbGFuZV9zZXRfcHJvcF92 YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgeSk7Cj4gwqB9Cj4gwqAKPiDCoC8qKgo+IEBA IC0yOTg5LDEwICsyOTY0LDggQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X3NpemUoaWd0X3BsYW5lX3Qg KnBsYW5lLAo+IGludCB3LCBpbnQgaCkKPiDCoAlMT0coZGlzcGxheSwgIiVzLiVkOiBwbGFuZV9z ZXRfc2l6ZSAoJWR4JWQpXG4iLAo+IMKgCcKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZS0+ cGlwZSksIHBsYW5lLT5pbmRleCwgdywgaCk7Cj4gwqAKPiAtCXBsYW5lLT5jcnRjX3cgPSB3Owo+ IC0JcGxhbmUtPmNydGNfaCA9IGg7Cj4gLQo+IC0JcGxhbmUtPnNpemVfY2hhbmdlZCA9IHRydWU7 Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9DUlRDX1csIHcp Owo+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCBo KTsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTMwMTQsMTAgKzI5ODcsOCBAQCB2b2lkIGlndF9m Yl9zZXRfcG9zaXRpb24oc3RydWN0IGlndF9mYiAqZmIsCj4gaWd0X3BsYW5lX3QgKnBsYW5lLAo+ IMKgCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9wb3NpdGlvbiglZCwlZClcbiIsCj4gwqAJ wqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwgcGxhbmUtPmluZGV4LCB4LCB5 KTsKPiDCoAo+IC0JcGxhbmUtPnNyY194ID0geDsKPiAtCXBsYW5lLT5zcmNfeSA9IHk7Cj4gLQo+ IC0JcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwo+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVl KHBsYW5lLCBJR1RfUExBTkVfU1JDX1gsCj4gSUdUX0ZJWEVEKHgsIDApKTsKPiArCWlndF9wbGFu ZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX1NSQ19ZLAo+IElHVF9GSVhFRCh5LCAw KSk7Cj4gwqB9Cj4gwqAKPiDCoC8qKgo+IEBAIC0zMDQwLDEwICszMDExLDggQEAgdm9pZCBpZ3Rf ZmJfc2V0X3NpemUoc3RydWN0IGlndF9mYiAqZmIsCj4gaWd0X3BsYW5lX3QgKnBsYW5lLAo+IMKg CUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9zaXplKCVkeCVkKVxuIiwKPiDCoAnCoMKgwqDC oGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBwbGFuZS0+aW5kZXgsIHcsIGgpOwo+IMKg Cj4gLQlwbGFuZS0+c3JjX3cgPSB3Owo+IC0JcGxhbmUtPnNyY19oID0gaDsKPiAtCj4gLQlwbGFu ZS0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUs IElHVF9QTEFORV9TUkNfVywKPiBJR1RfRklYRUQodywgMCkpOwo+ICsJaWd0X3BsYW5lX3NldF9w cm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX0gsCj4gSUdUX0ZJWEVEKGgsIDApKTsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IGNoYXIgKnJvdGF0aW9uX25hbWUoaWd0X3JvdGF0aW9u X3Qgcm90YXRpb24pCj4gQEAgLTMwNzEsOSArMzA0MCw3IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9y b3RhdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24pCj4g wqAJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiDCoAnCoMKgwqDCoHBs YW5lLT5pbmRleCwgcm90YXRpb25fbmFtZShyb3RhdGlvbikpOwo+IMKgCj4gLQlwbGFuZS0+cm90 YXRpb24gPSByb3RhdGlvbjsKPiAtCj4gLQlwbGFuZS0+cm90YXRpb25fY2hhbmdlZCA9IHRydWU7 Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9ST1RBVElPTiwK PiByb3RhdGlvbik7Cj4gwqB9Cj4gwqAKPiDCoC8qKgo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2tt cy5oIGIvbGliL2lndF9rbXMuaAo+IGluZGV4IDFlZjEwZTdkNTI1Yy4uZjg3ZjhiZTMxNDIxIDEw MDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmgKPiArKysgYi9saWIvaWd0X2ttcy5oCj4gQEAgLTI1 Miw2ICsyNTIsOSBAQCBlbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcyB7Cj4gwqDCoMKg wqDCoMKgwqDCoElHVF9QTEFORV9DUlRDX1csCj4gwqDCoMKgwqDCoMKgwqDCoElHVF9QTEFORV9D UlRDX0gsCj4gwqAKPiArLyogQXBwZW5kIG5ldyBwcm9wZXJ0aWVzIGFmdGVyIElHVF9QTEFORV9D T09SRF9DSEFOR0VEX01BU0sgKi8KPiArI2RlZmluZSBJR1RfUExBTkVfQ09PUkRfQ0hBTkdFRF9N QVNLIDB4ZmYKPiArCj4gwqDCoMKgwqDCoMKgwqDCoElHVF9QTEFORV9GQl9JRCwKPiDCoMKgwqDC oMKgwqDCoMKgSUdUX1BMQU5FX0NSVENfSUQsCj4gwqDCoMKgwqDCoMKgwqDCoElHVF9QTEFORV9J Tl9GRU5DRV9GRCwKPiBAQCAtMjg2LDM3ICsyODksMTkgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+IMKg CWludCBpbmRleDsKPiDCoAkvKiBjYXBhYmlsaXRpZXMgKi8KPiDCoAlpbnQgdHlwZTsKPiAtCS8q IHN0YXRlIHRyYWNraW5nICovCj4gLQl1bnNpZ25lZCBpbnQgZmJfY2hhbmdlZMKgwqDCoMKgwqDC oMKgOiAxOwo+IC0JdW5zaWduZWQgaW50IHBvc2l0aW9uX2NoYW5nZWQgOiAxOwo+IC0JdW5zaWdu ZWQgaW50IHJvdGF0aW9uX2NoYW5nZWQgOiAxOwo+IC0JdW5zaWduZWQgaW50IHNpemVfY2hhbmdl ZMKgwqDCoMKgwqA6IDE7Cj4gKwo+IMKgCS8qCj4gwqAJwqAqIGRybV9wbGFuZSBjYW4gYmUgTlVM TCBmb3IgcHJpbWFyeSBhbmQgY3Vyc29yIHBsYW5lcyAod2hlbgo+IG5vdAo+IMKgCcKgKiB1c2lu ZyB0aGUgYXRvbWljIG1vZGVzZXQgQVBJKQo+IMKgCcKgKi8KPiDCoAlkcm1Nb2RlUGxhbmUgKmRy bV9wbGFuZTsKPiAtCXN0cnVjdCBpZ3RfZmIgKmZiOwo+IC0KPiAtCXVpbnQzMl90IHJvdGF0aW9u X3Byb3BlcnR5Owo+IC0KPiAtCS8qIHBvc2l0aW9uIHdpdGhpbiBwaXBlX3NyY193IHggcGlwZV9z cmNfaCAqLwo+IC0JaW50IGNydGNfeCwgY3J0Y195Owo+IC0JLyogc2l6ZSB3aXRoaW4gcGlwZV9z cmNfdyB4IHBpcGVfc3JjX2ggKi8KPiAtCWludCBjcnRjX3csIGNydGNfaDsKPiDCoAo+IC0JLyog cG9zaXRpb24gd2l0aGluIHRoZSBmcmFtZWJ1ZmZlciAqLwo+IC0JdWludDMyX3Qgc3JjX3g7Cj4g LQl1aW50MzJfdCBzcmNfeTsKPiAtCS8qIHNpemUgd2l0aGluIHRoZSBmcmFtZWJ1ZmZlciovCj4g LQl1aW50MzJfdCBzcmNfdzsKPiAtCXVpbnQzMl90IHNyY19oOwo+ICsJLyogZ2VtIGhhbmRsZSBm b3IgZmIgKi8KPiArCXVpbnQzMl90IGdlbV9oYW5kbGU7Cj4gwqAKPiAtCWlndF9yb3RhdGlvbl90 IHJvdGF0aW9uOwo+IC0KPiAtCS8qIGluIGZlbmNlIGZkICovCj4gLQlpbnQgZmVuY2VfZmQ7Cj4g LQl1aW50MzJfdCBhdG9taWNfcHJvcHNfcGxhbmVbSUdUX05VTV9QTEFORV9QUk9QU107Cj4gKwl1 aW50NjRfdCBjaGFuZ2VkOwo+ICsJdWludDMyX3QgcHJvcHNbSUdUX05VTV9QTEFORV9QUk9QU107 Cj4gKwl1aW50NjRfdCB2YWx1ZXNbSUdUX05VTV9QTEFORV9QUk9QU107Cj4gwqB9IGlndF9wbGFu ZV90Owo+IMKgCj4gwqBzdHJ1Y3QgaWd0X3BpcGUgewo+IEBAIC00MDcsNyArMzkyLDcgQEAgYm9v bCBpZ3RfcGlwZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdCAqcGlwZSwKPiBjb25zdCBjaGFyICpu YW1lLAo+IMKgCj4gwqBzdGF0aWMgaW5saW5lIGJvb2wgaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0 aW9uKGlndF9wbGFuZV90ICpwbGFuZSkKPiDCoHsKPiAtCXJldHVybiBwbGFuZS0+cm90YXRpb25f cHJvcGVydHkgIT0gMDsKPiArCXJldHVybiBwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX1JPVEFUSU9O XSAhPSAwOwo+IMKgfQo+IMKgdm9pZCBpZ3RfcGlwZV9yZXF1ZXN0X291dF9mZW5jZShpZ3RfcGlw ZV90ICpwaXBlKTsKPiDCoHZvaWQgaWd0X3BpcGVfc2V0X2RlZ2FtbWFfbHV0KGlndF9waXBlX3Qg KnBpcGUsIHZvaWQgKnB0ciwgc2l6ZV90Cj4gbGVuZ3RoKTsKPiBAQCAtNTI3LDE2ICs1MTIsMjAg QEAgc3RhdGljIGlubGluZSBib29sCj4gaWd0X291dHB1dF9pc19jb25uZWN0ZWQoaWd0X291dHB1 dF90ICpvdXRwdXQpCj4gwqAKPiDCoCNkZWZpbmUgSUdUX0ZJWEVEKGksZikJKChpKSA8PCAxNiB8 IChmKSkKPiDCoAo+IC0vKioKPiAtICogaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXE6Cj4g LSAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCj4gLSAqIEBwbGFuZTogQSBw b2ludGVyIGlndF9wbGFuZV90Cj4gLSAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21pY19wbGFuZV9w cm9wZXJ0aWVzCj4gLSAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+IC0gKi8KPiAtI2RlZmlu ZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBwcm9wLCB2YWx1ZSkg XAo+IC0JaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBwbGFu ZS0KPiA+ZHJtX3BsYW5lLT5wbGFuZV9pZCxcCj4gLQkJCQkJCcKgwqBwbGFuZS0KPiA+YXRvbWlj X3Byb3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkpCj4gKyNkZWZpbmUgaWd0X3BsYW5lX2lzX3Byb3Bf Y2hhbmdlZChwbGFuZSwgcHJvcCkgXAo+ICsJKCEhKChwbGFuZSktPmNoYW5nZWQgJiAoMSA8PCAo cHJvcCkpKSkKPiArCj4gKyNkZWZpbmUgaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUs IHByb3ApIFwKPiArCShwbGFuZSktPmNoYW5nZWQgfD0gMSA8PCAocHJvcCkKPiArCj4gKyNkZWZp bmUgaWd0X3BsYW5lX2NsZWFyX3Byb3BfY2hhbmdlZChwbGFuZSwgcHJvcCkgXAo+ICsJKHBsYW5l KS0+Y2hhbmdlZCAmPSB+KDEgPDwgKHByb3ApKQo+ICsKPiArI2RlZmluZSBpZ3RfcGxhbmVfc2V0 X3Byb3BfdmFsdWUocGxhbmUsIHByb3AsIHZhbHVlKSBcCj4gKwlkbyB7IFwKPiArCQlwbGFuZS0+ dmFsdWVzW3Byb3BdID0gdmFsdWU7IFwKPiArCQlpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZChw bGFuZSwgcHJvcCk7IFwKPiArCX0gd2hpbGUgKDApCj4gwqAKPiDCoC8qKgo+IMKgICogaWd0X2F0 b21pY19wb3B1bGF0ZV9jcnRjX3JlcToKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2F0b21pY19p bnRlcnJ1cHRpYmxlLmMKPiBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJsZS5jCj4gaW5k ZXggZGNkYmMyNjdkM2VmLi40YTJhNTc3NDEyY2MgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX2F0 b21pY19pbnRlcnJ1cHRpYmxlLmMKPiArKysgYi90ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGli bGUuYwo+IEBAIC0xNjMsMTIgKzE2MywxMiBAQCBzdGF0aWMgdm9pZCBydW5fcGxhbmVfdGVzdChp Z3RfZGlzcGxheV90Cj4gKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QKPiDC oAkJCQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8KPiDCoAkJCQkJb3V0cHV0LQo+ID5wcm9wc1tJ R1RfQ09OTkVDVE9SX0NSVENfSURdLAo+IMKgCQkJCQkvKiBwbGFuZTogcmVtYWluZGVyIHByb3Bz ICovCj4gLQkJCQkJcGxhbmUtCj4gPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19J RF0sCj4gLQkJCQkJcGxhbmUtCj4gPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfRkJfSURd LAo+IC0JCQkJCXBsYW5lLQo+ID5hdG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5FX1NSQ19XXSwK PiAtCQkJCQlwbGFuZS0KPiA+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9TUkNfSF0sCj4g LQkJCQkJcGxhbmUtCj4gPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19XXSwKPiAt CQkJCQlwbGFuZS0KPiA+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9DUlRDX0hdCj4gKwkJ CQkJcGxhbmUtCj4gPnByb3BzW0lHVF9QTEFORV9DUlRDX0lEXSwKPiArCQkJCQlwbGFuZS0KPiA+ cHJvcHNbSUdUX1BMQU5FX0ZCX0lEXSwKPiArCQkJCQlwbGFuZS0KPiA+cHJvcHNbSUdUX1BMQU5F X1NSQ19XXSwKPiArCQkJCQlwbGFuZS0KPiA+cHJvcHNbSUdUX1BMQU5FX1NSQ19IXSwKPiArCQkJ CQlwbGFuZS0KPiA+cHJvcHNbSUdUX1BMQU5FX0NSVENfV10sCj4gKwkJCQkJcGxhbmUtCj4gPnBy b3BzW0lHVF9QTEFORV9DUlRDX0hdCj4gwqAJCQkJfTsKPiDCoAkJCQl1aW50NjRfdCBwcm9wX3Zh bHNbXSA9IHsKPiDCoAkJCQkJLyogY3J0YyAqLwo+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcm90 YXRpb25fY3JjLmMgYi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKPiBpbmRleCA1YWVjOGZhMzk2 NzEuLmI4MzI3ZGZhMGQ4MyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMK PiArKysgYi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKPiBAQCAtMTIyLDExICsxMjIsMTEgQEAg c3RhdGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwKPiBpZ3Rfb3V0cHV0X3QgKm91 dHB1dCwgZW51bSBwaXBlIHBpcGUsCj4gwqAJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0 YS0+ZmJfbW9kZXNldCk7Cj4gwqAKPiDCoAlpZiAoY29tbWl0IDwgQ09NTUlUX0FUT01JQykgewo+ IC0JCXByaW1hcnktPnJvdGF0aW9uX2NoYW5nZWQgPSBmYWxzZTsKPiArCQlpZ3RfcGxhbmVfY2xl YXJfcHJvcF9jaGFuZ2VkKHByaW1hcnksCj4gSUdUX1BMQU5FX1JPVEFUSU9OKTsKPiDCoAkJaWd0 X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOwo+IMKgCj4gwqAJCWlmIChwbGFuZS0+dHlwZSA9PSBE Uk1fUExBTkVfVFlQRV9QUklNQVJZKQo+IC0JCQlwcmltYXJ5LT5yb3RhdGlvbl9jaGFuZ2VkID0g dHJ1ZTsKPiArCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocHJpbWFyeSwKPiBJR1RfUExB TkVfUk9UQVRJT04pOwo+IMKgCX0KPiDCoAo+IMKgCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5V TEwpOwotLSAKTWlrYSBLYWhvbGEgLSBJbnRlbCBPVEMKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=