From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH] lib/igt_kms: Add COMMIT_ATOMIC to igt_display_commit2() Date: Tue, 15 Mar 2016 12:33:30 +0100 Message-ID: <56E7F30A.5080101@linux.intel.com> References: <20160310133045.GA5449@mcvlad-wk.rb.intel.com> <1457684729-6669-1-git-send-email-mayuresh.s.gharpure@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 9EB4E6E217 for ; Tue, 15 Mar 2016 11:33:32 +0000 (UTC) In-Reply-To: <1457684729-6669-1-git-send-email-mayuresh.s.gharpure@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mayuresh Gharpure , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTEtMDMtMTYgb20gMDk6MjUgc2NocmVlZiBNYXl1cmVzaCBHaGFycHVyZToKPiBDby1BdXRo b3IgOiBNYXJpdXMgVmxhZCA8bWFyaXVzLmMudmxhZEBpbnRlbC5jb20+Cj4gQ28tQXV0aG9yIDog UHJhdGlrIFZpc2h3YWthcm1hIDxwcmF0aWsudmlzaHdha2FybWFAaW50ZWwuY29tPgo+Cj4gU28g ZmFyIHdlIGhhdmUgaGFkIG9ubHkgdHdvIGNvbW1pdCBzdHlsZXMsIENPTU1JVF9MRUdBQ1kKPiBh bmQgQ09NTUlUX1VOSVZFUlNBTC4gVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgY29tbWl0IHN0eWxl Cj4gQ09NTUlUX0FUT01JQyB3aGljaCBtYWtlcyB1c2Ugb2YgZHJtTW9kZUF0b21pY0NvbW1pdCgp Cj4KPiB2MjogKE1hcml1cykKPiAJaSlTZXQgQ1JUQ19JRCB0byB6ZXJvIHdoaWxlIGRpc2FibGlu ZyBwbGFuZQo+IAlpaSlNb2RpZmllZCB0aGUgbG9nIG1lc3NhZ2UgaW4gaWd0X2F0b21pY19wcmVw YXJlX3BsYW5lX2NvbW1pdAo+IAlodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0 Y2gvNzE5NDUvCj4KPiB2MzogKE1hcml1cylTZXQgRkJfSUQgdG8gemVybyB3aGlsZSBkaXNhYmxp bmcgcGxhbmUKPiAJaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcyMTc5 Lwo+Cj4gdjQ6IChNYWFydGVuKSBDb3JyZWN0ZWQgdGhlIHR5cG8gaW4gY29tbWl0IG1lc3NhZ2UK PiAJaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcyNTk4Lwo+Cj4gdjU6 IEFkZGVkIGNoZWNrIGZvciBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMgaW4gaWd0X2Rpc3BsYXlfaW5p dAo+ICAgICAoTWFyaXVzKQo+IAlpKVJlbW92ZWQgdW51c2VkIHByb3BzIGZyb20gaWd0X2Rpc3Bs YXlfaW5pdAo+IAlpaSlSZW1vdmVkIHVudXNlZCByZXQuIENoYW5nZWQgZnVuY3Rpb24gdG8gdm9p ZAo+IAlpaWkpRGVjbGFyZSB0aGUgdmFyaWFibGUgYmVmb3JlIGNoZWNraW5nIGlmIHdlIGhhdmUK PiAJRFJNX0NMSUVOVF9DQVBfQVRPTUlDLgo+IAlodHRwczovL3BhdGNod29yay5mcmVlZGVza3Rv cC5vcmcvcGF0Y2gvNzM1MDUvCj4KPiB2NjogKEphbmkpIENvcnJlY3RlZCB0eXBvIGluIGNvbW1p dCBtZXNzYWdlCj4KPiB2NzogQWRkZWQgaXNfYXRvbWljIGNoZWNrIGZvciBEUk1fQ0xJRU5UX0NB UF9BVE9NSUMgaW4KPiAJaWd0X2Rpc3BsYXlfaW5pdCBhbmQgaWd0X2F0b21pY19jb21taXQKPgo+ IHY4OiAoTWF0dGhldyBBdWxkKSBSZXBsYWNlZCBmb3IgbG9vcHMgYnkgZm9yX2VhY2hfY29ubmVj dGVkX291dHB1dCBhbmQKPiAJZm9yX2VhY2hfcGxhbmVfb25fcGlwZQo+ICAgICAoTGlvbmVsKSBQ b3B1bGF0ZSBwcm9wZXJ0aWVzIG9ubHkgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkCj4gICAgIAlS ZW1vdmUgdGhlIHJlc2V0dGluZyBvZiB2YWx1ZXMgaW4gZGlzYWJsZSBjYXNlCj4gCU5vdGUgOiBJ J3ZlIHVzZWQgTWFhcnRlbidzIGRpZmYgcGF0Y2gKPgo+IHY5OiAoTGlvbmVsKSBBZGRlZCByZXNl dHRpbmcgb2Ygcm90YXRpb24gcHJvcGVydHkKPgo+IHYxMDogKE1hcml1cykgTW9kaWZpZWQgdGhl IG1hY3JvIGRlY2xhcmF0aW9uIHRvIGF2b2lkIHNoYWRvdyBkZWNsYXJhdGlvbgo+IAl3YXJuaW5n LCBhbHNvIHJlbW92ZWQgb25lIHVudXNlZCB2YXJpYWJsZQo+Cj4gU2lnbmVkLW9mZi1ieTogTWF5 dXJlc2ggR2hhcnB1cmUgPG1heXVyZXNoLnMuZ2hhcnB1cmVAaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IFByYXRpayBWaXNod2FrYXJtYSA8cHJhdGlrLnZpc2h3YWthcm1hQGludGVsLmNvbT4K PiBTaWduZWQtb2ZmLWJ5OiBNYXl1cmVzaCBHaGFycHVyZSA8bWF5dXJlc2gucy5naGFycHVyZUBp bnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9pZ3Rfa21zLmMgfCAyODkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBsaWIvaWd0X2ttcy5o IHwgIDc2ICsrKysrKysrKysrKysrLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDM2MSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIv aWd0X2ttcy5jCj4gaW5kZXggOWYxOGFlZi4uZjlhN2JiMCAxMDA2NDQKPiAtLS0gYS9saWIvaWd0 X2ttcy5jCj4gKysrIGIvbGliL2lndF9rbXMuYwo+IEBAIC0xNDUsNiArMTQ1LDEyMCBAQCBjb25z dCB1bnNpZ25lZCBjaGFyKiBpZ3Rfa21zX2dldF9iYXNlX2VkaWQodm9pZCkKPiAgICoKPiAgICog UmV0dXJuczogYW4gYWx0ZXJuYXRlIGVkaWQgYmxvY2sKPiAgICovCj4gK3N0YXRpYyBjb25zdCBj aGFyICppZ3RfcGxhbmVfcHJvcF9uYW1lc1tJR1RfTlVNX1BMQU5FX1BST1BTXSA9IHsKPiArCSJT UkNfWCIsCj4gKwkiU1JDX1kiLAo+ICsJIlNSQ19XIiwKPiArCSJTUkNfSCIsCj4gKwkiQ1JUQ19Y IiwKPiArCSJDUlRDX1kiLAo+ICsJIkNSVENfVyIsCj4gKwkiQ1JUQ19IIiwKPiArCSJGQl9JRCIs Cj4gKwkiQ1JUQ19JRCIsCj4gKwkidHlwZSIsCj4gKwkicm90YXRpb24iCj4gK307Cj4gKwo+ICtz dGF0aWMgY29uc3QgY2hhciAqaWd0X2NydGNfcHJvcF9uYW1lc1tJR1RfTlVNX0NSVENfUFJPUFNd ID0gewo+ICsJImJhY2tncm91bmRfY29sb3IiCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hh ciAqaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXSA9IHsK PiArCSJzY2FsaW5nIG1vZGUiLAo+ICsJIkRQTVMiCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBSZXRy aWV2ZSBhbGwgdGhlIHByb3BlcmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUg dGhlbSBpbnRvCj4gKyAqIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmUuCj4gKyAqLwo+ICtzdGF0 aWMgdm9pZAo+ICtpZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwgaWd0X3BsYW5lX3QgKnBsYW5lLAo+ICsJCQlpbnQgbnVtX3Byb3BzLCBjb25zdCBjaGFy ICoqcHJvcF9uYW1lcykKPiArewo+ICsJZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHJvcHM7 Cj4gKwlpbnQgaSwgaiwgZmQ7Cj4gKwo+ICsJZmQgPSBkaXNwbGF5LT5kcm1fZmQ7Cj4gKwo+ICsJ cHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgcGxhbmUtPmRybV9wbGFuZS0+ cGxhbmVfaWQsIERSTV9NT0RFX09CSkVDVF9QTEFORSk7Cj4gKwlpZ3RfYXNzZXJ0KHByb3BzKTsK PiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsKPiArCQlk cm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9Cj4gKwkJCWRybU1vZGVHZXRQcm9wZXJ0eShmZCwgcHJv cHMtPnByb3BzW2ldKTsKPiArCj4gKwkJZm9yIChqID0gMDsgaiA8IG51bV9wcm9wczsgaisrKSB7 Cj4gKwkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwgcHJvcF9uYW1lc1tqXSkgIT0gMCkKPiArCQkJ CWNvbnRpbnVlOwo+ICsKPiArCQkJcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtqXSA9IHByb3Bz LT5wcm9wc1tpXTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlkcm1Nb2RlRnJlZVByb3Bl cnR5KHByb3ApOwo+ICsJfQo+ICsKPiArCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVydGllcyhwcm9w cyk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFJldHJpZXZlIGFsbCB0aGUgcHJvcGVyaWVzIHNwZWNp ZmllZCBpbiBwcm9wc19uYW1lIGFuZCBzdG9yZSB0aGVtIGludG8KPiArICogY29uZmlnLT5hdG9t aWNfcHJvcHNfY3J0YyBhbmQgY29uZmlnLT5hdG9taWNfcHJvcHNfY29ubmVjdG9yLgo+ICsgKi8K PiArc3RhdGljIHZvaWQKPiAraWd0X2F0b21pY19maWxsX3Byb3BzKGlndF9kaXNwbGF5X3QgKmRp c3BsYXksIGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+ICsJCQlpbnQgbnVtX2NydGNfcHJvcHMsIGNv bnN0IGNoYXIgKipjcnRjX3Byb3BfbmFtZXMsCj4gKwkJCWludCBudW1fY29ubmVjdG9yX3Byb3Bz LCBjb25zdCBjaGFyICoqY29ubl9wcm9wX25hbWVzKQo+ICt7Cj4gKwlkcm1Nb2RlT2JqZWN0UHJv cGVydGllc1B0ciBwcm9wczsKPiArCWludCBpLCBqLCBmZDsKPiArCj4gKwlmZCA9IGRpc3BsYXkt PmRybV9mZDsKPiArCj4gKwlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBv dXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ1JUQyk7Cj4gKwlp Z3RfYXNzZXJ0KHByb3BzKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3By b3BzOyBpKyspIHsKPiArCQlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9Cj4gKwkJCWRybU1vZGVH ZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnByb3BzW2ldKTsKPiArCj4gKwkJZm9yIChqID0gMDsgaiA8 IG51bV9jcnRjX3Byb3BzOyBqKyspIHsKPiArCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCBjcnRj X3Byb3BfbmFtZXNbal0pICE9IDApCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCW91dHB1dC0+ Y29uZmlnLmF0b21pY19wcm9wc19jcnRjW2pdID0gcHJvcHMtPnByb3BzW2ldOwo+ICsJCQlicmVh azsKPiArCQl9Cj4gKwo+ICsJCWRybU1vZGVGcmVlUHJvcGVydHkocHJvcCk7Cj4gKwl9Cj4gKwo+ ICsJZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKPiArCXByb3BzID0gTlVMTDsK PiArCXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29uZmln LmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9SKTsKPiAr CWlndF9hc3NlcnQocHJvcHMpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBwcm9wcy0+Y291bnRf cHJvcHM7IGkrKykgewo+ICsJCWRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wID0KPiArCQkJZHJtTW9k ZUdldFByb3BlcnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0pOwo+ICsKPiArCQlmb3IgKGogPSAwOyBq IDwgbnVtX2Nvbm5lY3Rvcl9wcm9wczsgaisrKSB7Cj4gKwkJCWlmIChzdHJjbXAocHJvcC0+bmFt ZSwgY29ubl9wcm9wX25hbWVzW2pdKSAhPSAwKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlv dXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW2pdID0gcHJvcHMtPnByb3BzW2ld Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCWRybU1vZGVGcmVlUHJvcGVydHkocHJvcCk7 Cj4gKwl9Cj4gKwo+ICsJZHJtTW9kZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKPiArCj4g K30KPiArCj4gIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlndF9rbXNfZ2V0X2FsdF9lZGlkKHZvaWQp Cj4gIHsKPiAgCXVwZGF0ZV9lZGlkX2NzdW0oYWx0X2VkaWQpOwo+IEBAIC0xMDAwLDYgKzExMTQs OCBAQCBzdGF0aWMgdm9pZCBpZ3Rfb3V0cHV0X3JlZnJlc2goaWd0X291dHB1dF90ICpvdXRwdXQp Cj4gIAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwo+ICAKPiAg CWRpc3BsYXktPnBpcGVzX2luX3VzZSB8PSAxIDw8IG91dHB1dC0+Y29uZmlnLnBpcGU7Cj4gKwlp Z3RfYXRvbWljX2ZpbGxfcHJvcHMoZGlzcGxheSwgb3V0cHV0LCBJR1RfTlVNX0NSVENfUFJPUFMs IGlndF9jcnRjX3Byb3BfbmFtZXMsCj4gKwkJSUdUX05VTV9DT05ORUNUT1JfUFJPUFMsIGlndF9j b25uZWN0b3JfcHJvcF9uYW1lcyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sCj4gQEAgLTEwNjks NiArMTE4NSw3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5 LCBpbnQgZHJtX2ZkKQo+ICAJZHJtTW9kZVJlcyAqcmVzb3VyY2VzOwo+ICAJZHJtTW9kZVBsYW5l UmVzICpwbGFuZV9yZXNvdXJjZXM7Cj4gIAlpbnQgaTsKPiArCWludCBpc19hdG9taWMgPSAwOwo+ ICAKPiAgCW1lbXNldChkaXNwbGF5LCAwLCBzaXplb2YoaWd0X2Rpc3BsYXlfdCkpOwo+ICAKPiBA QCAtMTA4Niw2ICsxMjAzLDcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3Qg KmRpc3BsYXksIGludCBkcm1fZmQpCj4gIAlkaXNwbGF5LT5uX3BpcGVzID0gcmVzb3VyY2VzLT5j b3VudF9jcnRjczsKPiAgCj4gIAlkcm1TZXRDbGllbnRDYXAoZHJtX2ZkLCBEUk1fQ0xJRU5UX0NB UF9VTklWRVJTQUxfUExBTkVTLCAxKTsKPiArCWlzX2F0b21pYyA9IGRybVNldENsaWVudENhcChk cm1fZmQsIERSTV9DTElFTlRfQ0FQX0FUT01JQywgMSk7Cj4gIAlwbGFuZV9yZXNvdXJjZXMgPSBk cm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJtX2ZkKTsKPiAgCWlndF9hc3NlcnQo cGxhbmVfcmVzb3VyY2VzKTsKPiAgCj4gQEAgLTExNDIsNiArMTI2MCwxMCBAQCB2b2lkIGlndF9k aXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKPiAgCj4gIAkJ CXBsYW5lLT5waXBlID0gcGlwZTsKPiAgCQkJcGxhbmUtPmRybV9wbGFuZSA9IGRybV9wbGFuZTsK PiArCQkJaWYgKGlzX2F0b21pYyA9PSAwKSB7Cj4gKwkJCQlkaXNwbGF5LT5pc19hdG9taWMgPSAx Owo+ICsJCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1Rf TlVNX1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Cj4gKwkJCX0KPiAgCj4gIAkJ CWdldF9wbGFuZV9wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIGRybV9wbGFuZS0+cGxhbmVfaWQs Cj4gIAkJCQkJICAgInJvdGF0aW9uIiwKPiBAQCAtMTM5Nyw2ICsxNTE5LDgwIEBAIHN0YXRpYyB1 aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQo+ ICAJaWd0X2Fzc2VydChyID09IDApOwlcCj4gIH0KPiAgCj4gKwo+ICsKPiArCj4gKy8qCj4gKyAq IEFkZCBwb3NpdGlvbiBhbmQgZmIgY2hhbmdlcyBvZiBhIHBsYW5lIHRvIHRoZSBhdG9taWMgcHJv cGVydHkgc2V0Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ICtpZ3RfYXRvbWljX3ByZXBhcmVfcGxh bmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwgaWd0X291dHB1dF90ICpvdXRwdXQsCj4gKwlk cm1Nb2RlQXRvbWljUmVxICpyZXEpCj4gK3sKPiArCj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5 ID0gb3V0cHV0LT5kaXNwbGF5Owo+ICsJdWludDMyX3QgZmJfaWQsIGNydGNfaWQ7Cj4gKwo+ICsJ aWd0X2Fzc2VydChwbGFuZS0+ZHJtX3BsYW5lKTsKPiArCj4gKwkvKiBpdCdzIGFuIGVycm9yIHRv IHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCj4gKwlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9z dXBwb3J0c19yb3RhdGlvbihwbGFuZSkgfHwKPiArCQkJIXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2Vk KTsKPiArCj4gKwlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOwo+ICsJY3J0Y19p ZCA9IG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7Cj4gKwo+ICsJTE9HKGRpc3BsYXksCj4g KwkgICAgIiVzOiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAldVxuIiwKPiArCSAg ICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKPiArCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRw dXQtPmNvbmZpZy5waXBlKSwKPiArCSAgICBwbGFuZS0+aW5kZXgsCj4gKwkgICAgZmJfaWQpOwo+ ICsKPiArCWlmIChwbGFuZS0+ZmJfY2hhbmdlZCkgewo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVf cGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0lELCBmYl9pZCA/IGNydGNfaWQg OiAwKTsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1Rf UExBTkVfRkJfSUQsIGZiX2lkKTsKPiArCX0KPiArCj4gKwlpZiAocGxhbmUtPnBvc2l0aW9uX2No YW5nZWQgfHwgcGxhbmUtPnNpemVfY2hhbmdlZCkgewo+ICsJCXVpbnQzMl90IHNyY194ID0gSUdU X0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3gsIDApOyAvKiBzcmNfeCAqLwo+ICsJCXVpbnQzMl90IHNy Y195ID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3ksIDApOyAvKiBzcmNfeSAqLwo+ICsJCXVp bnQzMl90IHNyY193ID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3csIDApOyAvKiBzcmNfdyAq Lwo+ICsJCXVpbnQzMl90IHNyY19oID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX2gsIDApOyAv KiBzcmNfaCAqLwo+ICsJCWludDMyX3QgY3J0Y194ID0gcGxhbmUtPmNydGNfeDsKPiArCQlpbnQz Ml90IGNydGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gKwkJdWludDMyX3QgY3J0Y193ID0gcGxhbmUt PmNydGNfdzsKPiArCQl1aW50MzJfdCBjcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+ICsKPiArCQlM T0coZGlzcGxheSwKPiArCQkic3JjID0gKCVkLCAlZCkgJXUgeCAldSAiCj4gKwkJImRzdCA9ICgl ZCwgJWQpICV1IHggJXVcbiIsCj4gKwkJc3JjX3ggPj4gMTYsIHNyY195ID4+IDE2LCBzcmNfdyA+ PiAxNiwgc3JjX2ggPj4gMTYsCj4gKwkJY3J0Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oKTsK PiArCj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BM QU5FX1NSQ19YLCBzcmNfeCk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ZLCBzcmNfeSk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19XLCBzcmNfdyk7Cj4gKwkJaWd0 X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ILCBz cmNfaCk7Cj4gKwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9DUlRDX1gsIGNydGNfeCk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgY3J0Y195KTsKPiArCQlpZ3RfYXRv bWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19XLCBjcnRj X3cpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9DUlRDX0gsIGNydGNfaCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKHBsYW5lLT5yb3RhdGlvbl9j aGFuZ2VkKQo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4g KwkJCUlHVF9QTEFORV9ST1RBVElPTiwgcGxhbmUtPnJvdGF0aW9uKTsKPiArCj4gKwlwbGFuZS0+ ZmJfY2hhbmdlZCA9IGZhbHNlOwo+ICsJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsK PiArCXBsYW5lLT5zaXplX2NoYW5nZWQgPSBmYWxzZTsKPiArCXBsYW5lLT5yb3RhdGlvbl9jaGFu Z2VkID0gZmFsc2U7Cj4gK30KPiArCj4gKwo+ICsKPiAgLyoKPiAgICogQ29tbWl0IHBvc2l0aW9u IGFuZCBmYiBjaGFuZ2VzIHRvIGEgRFJNIHBsYW5lIHZpYSB0aGUgU2V0UGxhbmUgaW9jdGw7IGlm IHRoZQo+ICAgKiBEUk0gY2FsbCB0byBwcm9ncmFtIHRoZSBwbGFuZSBmYWlscywgd2UnbGwgZWl0 aGVyIGZhaWwgaW1tZWRpYXRlbHkgKGZvcgo+IEBAIC0xNjQ5LDcgKzE4NDUsNyBAQCBzdGF0aWMg aW50IGlndF9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLAo+ICAJCXJldHVybiBpZ3Rf cHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KHBsYW5lLCBvdXRwdXQsCj4gIAkJCQkJCSAgICAg ICBmYWlsX29uX2Vycm9yKTsKPiAgCX0gZWxzZSB7Cj4gLQkJcmV0dXJuIGlndF9kcm1fcGxhbmVf Y29tbWl0KHBsYW5lLCBvdXRwdXQsIGZhaWxfb25fZXJyb3IpOwo+ICsJCQlyZXR1cm4gaWd0X2Ry bV9wbGFuZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7Cj4gIAl9Cj4gIH0K PiAgCj4gQEAgLTE3MDMsNiArMTg5OSw4OSBAQCBzdGF0aWMgaW50IGlndF9vdXRwdXRfY29tbWl0 KGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gKwo+ICsvKgo+ ICsgKiBBZGQgY3J0YyBwcm9wZXJ0eSBjaGFuZ2VzIHRvIHRoZSBhdG9taWMgcHJvcGVydHkgc2V0 Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBpZ3RfYXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQoaWd0 X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVBdG9taWNSZXEgKnJlcSkKPiArewo+ICsKPiArCWln dF9waXBlX3QgKnBpcGVfb2JqID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7 Cj4gKwo+ICsJaWYgKHBpcGVfb2JqLT5iYWNrZ3JvdW5kX2NoYW5nZWQpCj4gKwkJaWd0X2F0b21p Y19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1dCwgSUdUX0NSVENfQkFDS0dST1VORCwgcGlw ZV9vYmotPmJhY2tncm91bmQpOwo+ICsKPiArCS8qCj4gKwkgKglUT0RPOiBBZGQgYWxsIGNydGMg bGV2ZWwgcHJvcGVydGllcyBoZXJlCj4gKwkgKi8KPiArCj4gK30KPiArCj4gKy8qCj4gKyAqIEFk ZCBjb25uZWN0b3IgcHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAo+ ICsgKi8KPiArc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2Nvbm5lY3Rvcl9jb21taXQo aWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVBdG9taWNSZXEgKnJlcSkKPiArewo+ICsKPiAr CXN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgKmNvbmZpZyA9ICZvdXRwdXQtPmNvbmZp ZzsKPiArCj4gKwlpZiAoY29uZmlnLT5jb25uZWN0b3Jfc2NhbGluZ19tb2RlX2NoYW5nZWQpCj4g KwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ09O TkVDVE9SX1NDQUxJTkdfTU9ERSwgY29uZmlnLT5jb25uZWN0b3Jfc2NhbGluZ19tb2RlKTsKPiAr Cj4gKwlpZiAoY29uZmlnLT5jb25uZWN0b3JfZHBtc19jaGFuZ2VkKQo+ICsJCWlndF9hdG9taWNf cG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEsIG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9EUE1TLCBj b25maWctPmNvbm5lY3Rvcl9kcG1zKTsKPiArCS8qCj4gKwkgKglUT0RPOiBBZGQgYWxsIG90aGVy IGNvbm5lY3RvciBsZXZlbCBwcm9wZXJ0aWVzIGhlcmUKPiArCSAqLwo+ICsKPiArfQo+ICsKPiAr LyoKPiArICogQ29tbWl0IGFsbCB0aGUgY2hhbmdlcyBvZiBhbGwgdGhlIHBsYW5lcyxjcnRjcywg Y29ubmVjdG9ycwo+ICsgKiBhdG9taWNhbGx5IHVzaW5nIGRybU1vZGVBdG9taWNDb21taXQoKQo+ ICsgKi8KPiArc3RhdGljIGludCBpZ3RfYXRvbWljX2NvbW1pdChpZ3RfZGlzcGxheV90ICpkaXNw bGF5KQo+ICt7Cj4gKwo+ICsJaW50IHJldCA9IDA7Cj4gKwlkcm1Nb2RlQXRvbWljUmVxICpyZXE7 Cj4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiArCWlmIChkaXNwbGF5LT5pc19hdG9taWMgIT0g MSkKPiArCQlyZXR1cm4gLTE7Cj4gKwlyZXEgPSBkcm1Nb2RlQXRvbWljQWxsb2MoKTsKPiArCWRy bU1vZGVBdG9taWNTZXRDdXJzb3IocmVxLCAwKTsKPiArCj4gKwlmb3JfZWFjaF9jb25uZWN0ZWRf b3V0cHV0KGRpc3BsYXksIG91dHB1dCkgewo+ICsJCWlndF9waXBlX3QgKnBpcGVfb2JqOwo+ICsJ CWlndF9wbGFuZV90ICpwbGFuZTsKPiArCQllbnVtIHBpcGUgcGlwZTsKPiArCj4gKwkJLyoKPiAr CQkgKiBBZGQgQ1JUQyBQcm9wZXJ0aWVzIHRvIHRoZSBwcm9wZXJ0eSBzZXQKPiArCQkgKi8KPiAr CQlpZ3RfYXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQob3V0cHV0LCByZXEpOwo+ICsKPiArCQkv Kgo+ICsJCSAqIEFkZCBDb25uZWN0b3IgUHJvcGVydGllcyB0byB0aGUgcHJvcGVydHkgc2V0Cj4g KwkJICovCj4gKwkJaWd0X2F0b21pY19wcmVwYXJlX2Nvbm5lY3Rvcl9jb21taXQob3V0cHV0LCBy ZXEpOwo+ICsKPiArCj4gKwkJcGlwZV9vYmogPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUo b3V0cHV0KTsKPiArCj4gKwkJcGlwZSA9IHBpcGVfb2JqLT5waXBlOwo+ICsKPiArCQlmb3JfZWFj aF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7Cj4gKwkJCWlndF9hdG9taWNf cHJlcGFyZV9wbGFuZV9jb21taXQocGxhbmUsIG91dHB1dCwgcmVxKTsKPiArCQl9Cj4gKwo+ICsJ fQo+ICsKPiArCXJldCA9IGRybU1vZGVBdG9taWNDb21taXQoZGlzcGxheS0+ZHJtX2ZkLCByZXEs IDAsIE5VTEwpOwo+ICsJZHJtTW9kZUF0b21pY0ZyZWUocmVxKTsKPiArCXJldHVybiByZXQ7Cj4g Kwo+ICt9Cj4gIC8qCj4gICAqIENvbW1pdCBhbGwgcGxhbmUgY2hhbmdlcyBhY3Jvc3MgYWxsIG91 dHB1dHMgb2YgdGhlIGRpc3BsYXkuCj4gICAqCj4gQEAgLTE3MjIsNiArMjAwMSwxNCBAQCBzdGF0 aWMgaW50IGRvX2Rpc3BsYXlfY29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gIAo+ICAJ aWd0X2Rpc3BsYXlfcmVmcmVzaChkaXNwbGF5KTsKPiAgCj4gKwlpZiAocyA9PSBDT01NSVRfQVRP TUlDKSB7Cj4gKwo+ICsJCXJldCA9IGlndF9hdG9taWNfY29tbWl0KGRpc3BsYXkpOwo+ICsJCUNI RUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwo+ICsJCXJldHVybiAwOwo+ICsKPiArCX0K PiArCj4gIAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspIHsKPiAgCQlp Z3Rfb3V0cHV0X3QgKm91dHB1dCA9ICZkaXNwbGF5LT5vdXRwdXRzW2ldOwo+ICAKPiBkaWZmIC0t Z2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKPiBpbmRleCA1NzQ0ZWQwLi4zNDJk YjUxIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmgKPiArKysgYi9saWIvaWd0X2ttcy5oCj4g QEAgLTEwNiwxMSArMTA2LDI4IEBAIGludCBrbXN0ZXN0X2dldF9waXBlX2Zyb21fY3J0Y19pZChp bnQgZmQsIGludCBjcnRjX2lkKTsKPiAgdm9pZCBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2Rl KHZvaWQpOwo+ICB2b2lkIGttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKHZvaWQpOwo+ICAKPiArZW51 bSBpZ3RfYXRvbWljX2NydGNfcHJvcGVydGllcyB7Cj4gKyAgICAgICBJR1RfQ1JUQ19CQUNLR1JP VU5EID0gMCwKPiArICAgICAgIElHVF9OVU1fQ1JUQ19QUk9QUwo+ICt9Owo+ICsKPiArZW51bSBp Z3RfYXRvbWljX2Nvbm5lY3Rvcl9wcm9wZXJ0aWVzIHsKPiArICAgICAgIElHVF9DT05ORUNUT1Jf U0NBTElOR19NT0RFID0gMCwKPiArICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKPiArICAgICAg IElHVF9OVU1fQ09OTkVDVE9SX1BST1BTCj4gK307Cj4gKwo+ICBzdHJ1Y3Qga21zdGVzdF9jb25u ZWN0b3JfY29uZmlnIHsKPiAgCWRybU1vZGVDcnRjICpjcnRjOwo+ICAJZHJtTW9kZUNvbm5lY3Rv ciAqY29ubmVjdG9yOwo+ICAJZHJtTW9kZUVuY29kZXIgKmVuY29kZXI7Cj4gIAlkcm1Nb2RlTW9k ZUluZm8gZGVmYXVsdF9tb2RlOwo+ICsJdWludDY0X3QgY29ubmVjdG9yX3NjYWxpbmdfbW9kZTsK PiArCWJvb2wgY29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkOwo+ICsJdWludDY0X3QgY29u bmVjdG9yX2RwbXM7Cj4gKwlib29sIGNvbm5lY3Rvcl9kcG1zX2NoYW5nZWQ7Cj4gKwl1aW50MzJf dCBhdG9taWNfcHJvcHNfY3J0Y1tJR1RfTlVNX0NSVENfUFJPUFNdOwo+ICsJdWludDMyX3QgYXRv bWljX3Byb3BzX2Nvbm5lY3RvcltJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU107Cj4gIAlpbnQgY3J0 Y19pZHg7Cj4gIAlpbnQgcGlwZTsKPiAgfTsKPiBAQCAtMTYzLDkgKzE4MCwyOCBAQCB1aW50MzJf dCBrbXN0ZXN0X2ZpbmRfY3J0Y19mb3JfY29ubmVjdG9yKGludCBmZCwgZHJtTW9kZVJlcyAqcmVz LAo+ICBlbnVtIGlndF9jb21taXRfc3R5bGUgewo+ICAJQ09NTUlUX0xFR0FDWSA9IDAsCj4gIAlD T01NSVRfVU5JVkVSU0FMLAo+IC0JLyogV2UnbGwgYWRkIGF0b21pYyBoZXJlIGV2ZW50dWFsbHku ICovCj4gKwlDT01NSVRfQVRPTUlDLAo+ICB9Owo+ICAKPiArZW51bSBpZ3RfYXRvbWljX3BsYW5l X3Byb3BlcnRpZXMgewo+ICsgICAgICAgSUdUX1BMQU5FX1NSQ19YID0gMCwKPiArICAgICAgIElH VF9QTEFORV9TUkNfWSwKPiArICAgICAgIElHVF9QTEFORV9TUkNfVywKPiArICAgICAgIElHVF9Q TEFORV9TUkNfSCwKPiArCj4gKyAgICAgICBJR1RfUExBTkVfQ1JUQ19YLAo+ICsgICAgICAgSUdU X1BMQU5FX0NSVENfWSwKPiArICAgICAgIElHVF9QTEFORV9DUlRDX1csCj4gKyAgICAgICBJR1Rf UExBTkVfQ1JUQ19ILAo+ICsKPiArICAgICAgIElHVF9QTEFORV9GQl9JRCwKPiArICAgICAgIElH VF9QTEFORV9DUlRDX0lELAo+ICsgICAgICAgSUdUX1BMQU5FX1RZUEUsCj4gKyAgICAgICBJR1Rf UExBTkVfUk9UQVRJT04sCj4gKyAgICAgICBJR1RfTlVNX1BMQU5FX1BST1BTCj4gK307Cj4gKwo+ ICsKPiAgdHlwZWRlZiBzdHJ1Y3QgaWd0X2Rpc3BsYXkgaWd0X2Rpc3BsYXlfdDsKPiAgdHlwZWRl ZiBzdHJ1Y3QgaWd0X3BpcGUgaWd0X3BpcGVfdDsKPiAgdHlwZWRlZiB1aW50MzJfdCBpZ3RfZml4 ZWRfdDsJCQkvKiAxNi4xNiBmaXhlZCBwb2ludCAqLwo+IEBAIC0yMDcsNiArMjQzLDcgQEAgdHlw ZWRlZiBzdHJ1Y3Qgewo+ICAJLyogcGFubmluZyBvZmZzZXQgd2l0aGluIHRoZSBmYiAqLwo+ICAJ dW5zaWduZWQgaW50IHBhbl94LCBwYW5feTsKPiAgCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwo+ ICsJdWludDMyX3QgYXRvbWljX3Byb3BzX3BsYW5lW0lHVF9OVU1fUExBTkVfUFJPUFNdOwo+ICB9 IGlndF9wbGFuZV90Owo+ICAKPiAgc3RydWN0IGlndF9waXBlIHsKPiBAQCAtMjQyLDYgKzI3OSw3 IEBAIHN0cnVjdCBpZ3RfZGlzcGxheSB7Cj4gIAlpZ3Rfb3V0cHV0X3QgKm91dHB1dHM7Cj4gIAlp Z3RfcGlwZV90IHBpcGVzW0k5MTVfTUFYX1BJUEVTXTsKPiAgCWJvb2wgaGFzX3VuaXZlcnNhbF9w bGFuZXM7Cj4gKwlib29sIGlzX2F0b21pYzsKPiAgfTsKPiAgCj4gIHZvaWQgaWd0X2Rpc3BsYXlf aW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKTsKPiBAQCAtMjgzLDExICsz MjEsNDMgQEAgdm9pZCBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGludCBkcm1fZmQsIGVudW0gcGlwZSBw aXBlKTsKPiAgCWZvciAocGlwZSA9IDA7IHBpcGUgPCBpZ3RfZGlzcGxheV9nZXRfbl9waXBlcyhk aXNwbGF5KTsgcGlwZSsrKQlcCj4gIAo+ICAjZGVmaW5lIGZvcl9lYWNoX3BsYW5lX29uX3BpcGUo ZGlzcGxheSwgcGlwZSwgcGxhbmUpCQkJXAo+IC0JZm9yIChpbnQgaV9fID0gMDsgKHBsYW5lKSA9 ICYoZGlzcGxheSktPnBpcGVzWyhwaXBlKV0ucGxhbmVzW2lfX10sIFwKPiAtCQkgICAgIGlfXyA8 IChkaXNwbGF5KS0+cGlwZXNbKHBpcGUpXS5uX3BsYW5lczsgaV9fKyspCj4gKwlmb3IgKGludCBq X18gPSAwOyAocGxhbmUpID0gJihkaXNwbGF5KS0+cGlwZXNbKHBpcGUpXS5wbGFuZXNbal9fXSwg XAo+ICsJCSAgICAgal9fIDwgKGRpc3BsYXkpLT5waXBlc1socGlwZSldLm5fcGxhbmVzOyBqX18r KykKPiAgCj4gICNkZWZpbmUgSUdUX0ZJWEVEKGksZikJKChpKSA8PCAxNiB8IChmKSkKPiAgCj4g Ky8qKgo+ICsgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcToKPiArICogQHJlcTogQSBw b2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKPiArICogQHBsYW5lOiBBIHBvaW50ZXIgaWd0X3Bs YW5lX3QKPiArICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRpZXMKPiAr ICogQHZhbHVlOiB0aGUgdmFsdWUgdG8gYWRkCj4gKyAqLwo+ICsjZGVmaW5lIGlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIHByb3AsIHZhbHVlKSBcCj4gKwlpZ3RfYXNz ZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIHBsYW5lLT5kcm1fcGxhbmUt PnBsYW5lX2lkLFwKPiArCQkJCQkJICBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lW3Byb3BdLCB2 YWx1ZSkpCj4gKwo+ICsvKioKPiArICogaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcToKPiAr ICogQHJlcTogQSBwb2ludGVyIHRvIGRybU1vZGVBdG9taWNSZXEKPiArICogQG91dHB1dDogQSBw b2ludGVyIGlndF9vdXRwdXRfdAo+ICsgKiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfY3J0Y19w cm9wZXJ0aWVzCj4gKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+ICsgKi8KPiArI2RlZmlu ZSBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkg XAo+ICsJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRw dXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLFwKPiArCQkJCQkJICBvdXRwdXQtPmNvbmZpZy5hdG9t aWNfcHJvcHNfY3J0Y1twcm9wXSwgdmFsdWUpKQo+ICsvKioKPiArICogaWd0X2F0b21pY19wb3B1 bGF0ZV9jb25uZWN0b3JfcmVxOgo+ICsgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21p Y1JlcQo+ICsgKiBAb3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90Cj4gKyAqIEBwcm9wOiBv bmUgb2YgaWd0X2F0b21pY19jb25uZWN0b3JfcHJvcGVydGllcwo+ICsgKiBAdmFsdWU6IHRoZSB2 YWx1ZSB0byBhZGQKPiArICovCj4gKyNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0 b3JfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAo+ICsJaWd0X2Fzc2VydF9sdCgwLCBk cm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3ItPmNv bm5lY3Rvcl9pZCxcCj4gKwkJCQkJCSAgb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5l Y3Rvcltwcm9wXSwgdmFsdWUpKQo+ICsKPiAgdm9pZCBpZ3RfZW5hYmxlX2Nvbm5lY3RvcnModm9p ZCk7Cj4gIHZvaWQgaWd0X3Jlc2V0X2Nvbm5lY3RvcnModm9pZCk7Cj4gIApBcHBsaWVkLCB0aGFu a3MuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=