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: Fri, 20 Oct 2017 11:03:58 +0300 Message-ID: <1508486638.3274.140.camel@intel.com> References: <20171012115435.18880-1-maarten.lankhorst@linux.intel.com> <20171012115435.18880-3-maarten.lankhorst@linux.intel.com> <1508404114.3274.119.camel@intel.com> <114d694a-fd87-96ef-0e2f-614cf07875a3@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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id A15E06E13D for ; Fri, 20 Oct 2017 08:08:25 +0000 (UTC) In-Reply-To: <114d694a-fd87-96ef-0e2f-614cf07875a3@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 T24gVGh1LCAyMDE3LTEwLTE5IGF0IDExOjQ0ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBPcCAxOS0xMC0xNyBvbSAxMTowOCBzY2hyZWVmIE1pa2EgS2Fob2xhOgo+ID4gCj4gPiBP biBUaHUsIDIwMTctMTAtMTIgYXQgMTM6NTQgKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3Rl Ogo+ID4gPiAKPiA+ID4gSW4gdGhlIGZ1dHVyZSBJIHdhbnQgdG8gYWxsb3cgdGVzdHMgdG8gY29t bWl0IG1vcmUgcHJvcGVydGllcywKPiA+ID4gYnV0IGZvciB0aGlzIHRvIHdvcmsgSSBoYXZlIHRv IGZpeCBhbGwgcHJvcGVydGllcyB0byB3b3JrIGJldHRlcgo+ID4gPiB3aXRoIGF0b21pYyBjb21t aXQuIEluc3RlYWQgb2Ygc3BlY2lhbCBjYXNpbmcgZWFjaAo+ID4gPiBwcm9wZXJ0eSBtYWtlIGEg Yml0bWFzayBmb3IgYWxsIHByb3BlcnR5IGNoYW5nZWQgZmxhZ3MsIGFuZCB0cnkKPiA+ID4gdG8K PiA+ID4gY29tbWl0IGFsbCBwcm9wZXJ0aWVzLgo+ID4gPiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2 MToKPiA+ID4gLSBSZW1vdmUgc3BlY2lhbCBkdW1waW5nIG9mIHNyYyBhbmQgY3J0YyBjb29yZGlu YXRlcy4KPiA+ID4gLSBEdW1wIGFsbCBtb2RpZmllZCBjb29yZGluYXRlcy4KPiA+ID4gQ2hhbmdl cyBzaW5jZSB2MjoKPiA+ID4gLSBNb3ZlIGlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkIHVwIHNs aWdodGx5Lgo+ID4gPiBDaGFuZ2VzIHNpbmNlIHYzOgo+ID4gPiAtIEZpeCB3cm9uZyBvcmRlcmlu ZyBvZiBzZXRfcG9zaXRpb24gaW4ga21zX3BsYW5lX2xvd3JlcyBjYXVzaW5nCj4gPiA+IGEKPiA+ ID4gdGVzdCBmYWlsdXJlLgo+ID4gPiBDaGFuZ2VzIHNpbmNlIHY0Ogo+ID4gPiAtIEJhY2sgb3V0 IHJlc2V0dGluZyBjcnRjIHBvc2l0aW9uIGluIGlndF9wbGFuZV9zZXRfZmIoKSBhbmQKPiA+ID4g wqAgZG9jdW1lbnQgaXQgZHVyaW5nIGluaXQuIFRlc3RzIGFwcGVhciB0byByZWx5IG9uIGl0IGJl aW5nCj4gPiA+IHByZXNlcnZlZC4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jCj4gPiA+IG9tPgo+ID4g PiAtLS0KPiA+ID4gwqBsaWIvaWd0X2ttcy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHwgMjk5ICsrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiA+IC0tLS0KPiA+ID4g LS0tLS0tLS0tLS0tCj4gPiA+IMKgbGliL2lndF9rbXMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB8wqDCoDU5ICsrKystLS0tCj4gPiA+IMKgdGVzdHMva21zX2F0b21p Y19pbnRlcnJ1cHRpYmxlLmMgfMKgwqAxMiArLQo+ID4gPiDCoHRlc3RzL2ttc19yb3RhdGlvbl9j cmMuY8KgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA0ICstCj4gPiA+IMKgNCBmaWxlcyBjaGFuZ2Vk LCAxNjUgaW5zZXJ0aW9ucygrKSwgMjA5IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAt LWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCj4gPiA+IGluZGV4IGU2ZmE4ZjRh ZjQ1NS4uZTc3YWU1ZDY5NmRhIDEwMDY0NAo+ID4gPiAtLS0gYS9saWIvaWd0X2ttcy5jCj4gPiA+ ICsrKyBiL2xpYi9pZ3Rfa21zLmMKPiA+ID4gQEAgLTE5MiwxMSArMTkyLDExIEBAIGNvbnN0IGNo YXIKPiA+ID4gKmlndF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RPUl9QUk9Q U10gPSB7Cj4gPiA+IMKgCj4gPiA+IMKgLyoKPiA+ID4gwqAgKiBSZXRyaWV2ZSBhbGwgdGhlIHBy b3BlcmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUKPiA+ID4gdGhlbQo+ID4g PiBpbnRvCj4gPiA+IC0gKiBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lLgo+ID4gPiArICogcGxh bmUtPnByb3BzLgo+ID4gPiDCoCAqLwo+ID4gPiDCoHN0YXRpYyB2b2lkCj4gPiA+IC1pZ3RfYXRv bWljX2ZpbGxfcGxhbmVfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BsYW5lX3QK PiA+ID4gKnBsYW5lLAo+ID4gPiAtCQkJaW50IG51bV9wcm9wcywgY29uc3QgY2hhciAqKnByb3Bf bmFtZXMpCj4gPiA+ICtpZ3RfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5 LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gPiA+ICsJCcKgwqDCoMKgwqBpbnQgbnVtX3Byb3BzLCBj b25zdCBjaGFyICoqcHJvcF9uYW1lcykKPiA+ID4gwqB7Cj4gPiA+IMKgCWRybU1vZGVPYmplY3RQ cm9wZXJ0aWVzUHRyIHByb3BzOwo+ID4gPiDCoAlpbnQgaSwgaiwgZmQ7Cj4gPiA+IEBAIC0yMTQs NyArMjE0LDcgQEAgaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9kaXNwbGF5X3QKPiA+ ID4gKmRpc3BsYXksIGlndF9wbGFuZV90ICpwbGFuZSwKPiA+ID4gwqAJCQlpZiAoc3RyY21wKHBy b3AtPm5hbWUsIHByb3BfbmFtZXNbal0pICE9Cj4gPiA+IDApCj4gPiA+IMKgCQkJCWNvbnRpbnVl Owo+ID4gPiDCoAo+ID4gPiAtCQkJcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtqXSA9IHByb3Bz LQo+ID4gPiA+IAo+ID4gPiA+IHByb3BzW2ldOwo+ID4gPiArCQkJcGxhbmUtPnByb3BzW2pdID0g cHJvcHMtPnByb3BzW2ldOwo+ID4gPiDCoAkJCWJyZWFrOwo+ID4gPiDCoAkJfQo+ID4gPiDCoAo+ ID4gPiBAQCAtMTY1OSw3ICsxNjU5LDYgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNw bGF5X3QKPiA+ID4gKmRpc3BsYXksCj4gPiA+IGludCBkcm1fZmQpCj4gPiA+IMKgCWRybU1vZGVS ZXMgKnJlc291cmNlczsKPiA+ID4gwqAJZHJtTW9kZVBsYW5lUmVzICpwbGFuZV9yZXNvdXJjZXM7 Cj4gPiA+IMKgCWludCBpOwo+ID4gPiAtCWludCBpc19hdG9taWMgPSAwOwo+ID4gPiDCoAo+ID4g PiDCoAltZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9kaXNwbGF5X3QpKTsKPiA+ID4gwqAK PiA+ID4gQEAgLTE2NzksNyArMTY3OCw5IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlz cGxheV90Cj4gPiA+ICpkaXNwbGF5LAo+ID4gPiBpbnQgZHJtX2ZkKQo+ID4gPiDCoAlpZ3RfYXNz ZXJ0X2YoZGlzcGxheS0+cGlwZXMsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Cj4gPiA+IGZv cgo+ID4gPiAlZCBwaXBlc1xuIiwgZGlzcGxheS0+bl9waXBlcyk7Cj4gPiA+IMKgCj4gPiA+IMKg CWRybVNldENsaWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQX1VOSVZFUlNBTF9QTEFORVMs Cj4gPiA+IDEpOwo+ID4gPiAtCWlzX2F0b21pYyA9IGRybVNldENsaWVudENhcChkcm1fZmQsCj4g PiA+IERSTV9DTElFTlRfQ0FQX0FUT01JQywKPiA+ID4gMSk7Cj4gPiA+ICsJaWYgKGRybVNldENs aWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQX0FUT01JQywgMSkgPT0KPiA+ID4gMCkKPiA+ ID4gKwkJZGlzcGxheS0+aXNfYXRvbWljID0gMTsKPiA+ID4gKwo+ID4gPiDCoAlwbGFuZV9yZXNv dXJjZXMgPSBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0KPiA+ID4gPmRybV9mZCk7 Cj4gPiA+IMKgCWlndF9hc3NlcnQocGxhbmVfcmVzb3VyY2VzKTsKPiA+ID4gwqAKPiA+ID4gQEAg LTE3NzYsMTkgKzE3NzcsMjcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QK PiA+ID4gKmRpc3BsYXksCj4gPiA+IGludCBkcm1fZmQpCj4gPiA+IMKgCQkJcGxhbmUtPnR5cGUg PSB0eXBlOwo+ID4gPiDCoAkJCXBsYW5lLT5waXBlID0gcGlwZTsKPiA+ID4gwqAJCQlwbGFuZS0+ ZHJtX3BsYW5lID0gZHJtX3BsYW5lOwo+ID4gPiAtCQkJcGxhbmUtPmZlbmNlX2ZkID0gLTE7Cj4g PiA+ICsJCQlwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9JTl9GRU5DRV9GRF0gPQo+ID4gPiB+MFVM TDsKPiA+ID4gwqAKPiA+ID4gLQkJCWlmIChpc19hdG9taWMgPT0gMCkgewo+ID4gPiAtCQkJCWRp c3BsYXktPmlzX2F0b21pYyA9IDE7Cj4gPiA+IC0JCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3By b3BzKGRpc3AKPiA+ID4gbGF5LAo+ID4gPiBwbGFuZSwgSUdUX05VTV9QTEFORV9QUk9QUywgaWd0 X3BsYW5lX3Byb3BfbmFtZXMpOwo+ID4gPiAtCQkJfQo+ID4gPiArCQkJaWd0X2ZpbGxfcGxhbmVf cHJvcHMoZGlzcGxheSwgcGxhbmUsCj4gPiA+IElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9wbGFu ZV9wcm9wX25hbWVzKTsKPiA+ID4gwqAKPiA+ID4gwqAJCQlnZXRfcGxhbmVfcHJvcGVydHkoZGlz cGxheS0+ZHJtX2ZkLAo+ID4gPiBkcm1fcGxhbmUtPnBsYW5lX2lkLAo+ID4gPiDCoAkJCQkJwqDC oMKgInJvdGF0aW9uIiwKPiA+ID4gLQkJCQkJwqDCoMKgJnBsYW5lLQo+ID4gPiA+IAo+ID4gPiA+ IHJvdGF0aW9uX3Byb3BlcnR5LAo+ID4gPiAtCQkJCQnCoMKgwqAmcHJvcF92YWx1ZSwKPiA+ID4g KwkJCQkJwqDCoMKgJnBsYW5lLQo+ID4gPiA+IAo+ID4gPiA+IHByb3BzW0lHVF9QTEFORV9ST1RB VElPTl0sCj4gPiA+ICsJCQkJCcKgwqDCoCZwbGFuZS0KPiA+ID4gPiAKPiA+ID4gPiB2YWx1ZXNb SUdUX1BMQU5FX1JPVEFUSU9OXSwKPiA+ID4gwqAJCQkJCcKgwqDCoE5VTEwpOwo+ID4gPiAtCQkJ cGxhbmUtPnJvdGF0aW9uID0KPiA+ID4gKGlndF9yb3RhdGlvbl90KXByb3BfdmFsdWU7Cj4gPiA+ ICsKPiA+ID4gKwkJCS8qIENsZWFyIGFueSByZXNpZHVhbCBmcmFtZWJ1ZmZlciBpbmZvCj4gPiA+ IG9uCj4gPiA+IGZpcnN0IGNvbW1pdC4gKi8KPiA+ID4gKwkJCWlndF9wbGFuZV9zZXRfcHJvcF9j aGFuZ2VkKHBsYW5lLAo+ID4gPiBJR1RfUExBTkVfRkJfSUQpOwo+ID4gPiArCQkJaWd0X3BsYW5l X3NldF9wcm9wX2NoYW5nZWQocGxhbmUsCj4gPiA+IElHVF9QTEFORV9DUlRDX0lEKTsKPiA+ID4g Kwo+ID4gPiArCQkJLyoKPiA+ID4gKwkJCcKgKiBDUlRDX1gvWSBhcmUgbm90IGNoYW5nZWQgaW4K PiA+ID4gaWd0X3BsYW5lX3NldF9mYiwgc28KPiA+ID4gKwkJCcKgKiBmb3JjZSB0aGVtIHRvIGJl IHNhbml0aXplZCBpbiBjYXNlCj4gPiA+IHRoZXkKPiA+ID4gY29udGFpbgo+ID4gPiArCQkJwqAq IGdhcmJhZ2UuCj4gPiA+ICsJCQnCoCovCj4gPiA+ICsJCQlpZ3RfcGxhbmVfc2V0X3Byb3BfY2hh bmdlZChwbGFuZSwKPiA+ID4gSUdUX1BMQU5FX0NSVENfWCk7Cj4gPiA+ICsJCQlpZ3RfcGxhbmVf c2V0X3Byb3BfY2hhbmdlZChwbGFuZSwKPiA+ID4gSUdUX1BMQU5FX0NSVENfWSk7Cj4gPiA+IMKg CQl9Cj4gPiA+IMKgCj4gPiA+IMKgCQkvKgo+ID4gPiBAQCAtMTgwNSw5ICsxODE0LDYgQEAgdm9p ZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QKPiA+ID4gKmRpc3BsYXksCj4gPiA+IGlu dCBkcm1fZmQpCj4gPiA+IMKgCj4gPiA+IMKgCQlwaXBlLT5uX3BsYW5lcyA9IG5fcGxhbmVzOwo+ ID4gPiDCoAo+ID4gPiAtCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIGksIHBsYW5l KQo+ID4gPiAtCQkJcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwo+ID4gPiAtCj4gPiA+IMKgCQlw aXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ID4gPiDCoAl9Cj4gPiA+IMKgCj4gPiA+IEBAIC0y MDcwLDE4ICsyMDc2LDcgQEAgYm9vbCBpZ3RfcGlwZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdAo+ ID4gPiAqcGlwZSwKPiA+ID4gY29uc3QgY2hhciAqbmFtZSwKPiA+ID4gwqAKPiA+ID4gwqBzdGF0 aWMgdWludDMyX3QgaWd0X3BsYW5lX2dldF9mYl9pZChpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gPiA+ IMKgewo+ID4gPiAtCWlmIChwbGFuZS0+ZmIpCj4gPiA+IC0JCXJldHVybiBwbGFuZS0+ZmItPmZi X2lkOwo+ID4gPiAtCWVsc2UKPiA+ID4gLQkJcmV0dXJuIDA7Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ ID4gLXN0YXRpYyB1aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5l X3QgKnBsYW5lKQo+ID4gPiAtewo+ID4gPiAtCWlmIChwbGFuZS0+ZmIpCj4gPiA+IC0JCXJldHVy biBwbGFuZS0+ZmItPmdlbV9oYW5kbGU7Cj4gPiA+IC0JZWxzZQo+ID4gPiAtCQlyZXR1cm4gMDsK PiA+ID4gKwlyZXR1cm4gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfRkJfSURdOwo+ID4gPiDCoH0K PiA+ID4gwqAKPiA+ID4gwqAjZGVmaW5lIENIRUNLX1JFVFVSTihyLCBmYWlsKSB7CVwKPiA+ID4g QEAgLTIwOTAsOSArMjA4NSw2IEBAIHN0YXRpYyB1aW50MzJfdAo+ID4gPiBpZ3RfcGxhbmVfZ2V0 X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQo+ID4gPiDCoAlpZ3RfYXNzZXJ0X2Vx KHIsIDApOwlcCj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiAtCj4gPiA+IC0KPiA+ID4gLQo+ID4g PiDCoC8qCj4gPiA+IMKgICogQWRkIHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIG9mIGEgcGxhbmUg dG8gdGhlIGF0b21pYyBwcm9wZXJ0eQo+ID4gPiBzZXQKPiA+ID4gwqAgKi8KPiA+ID4gQEAgLTIx MDEsNjMgKzIwOTMsMzEgQEAKPiA+ID4gaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1pdChp Z3RfcGxhbmVfdAo+ID4gPiAqcGxhbmUsIGlndF9waXBlX3QgKnBpcGUsCj4gPiA+IMKgCWRybU1v ZGVBdG9taWNSZXEgKnJlcSkKPiA+ID4gwqB7Cj4gPiA+IMKgCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSBwaXBlLT5kaXNwbGF5Owo+ID4gPiAtCXVpbnQzMl90IGZiX2lkLCBjcnRjX2lkOwo+ID4g PiArCWludCBpOwo+ID4gPiDCoAo+ID4gPiDCoAlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUp Owo+ID4gPiDCoAo+ID4gPiAtCS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVuc3VwcG9ydGVk IGZlYXR1cmUgKi8KPiA+ID4gLQlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlv bihwbGFuZSkgfHwKPiA+ID4gLQkJCSFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Cj4gPiA+IC0K PiA+ID4gLQlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOwo+ID4gPiAtCWNydGNf aWQgPSBwaXBlLT5jcnRjX2lkOwo+ID4gPiAtCj4gPiA+IMKgCUxPRyhkaXNwbGF5LAo+ID4gPiDC oAnCoMKgwqDCoCJwb3B1bGF0aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAldVxuIiwKPiA+ID4g wqAJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiA+ID4gwqAJwqDCoMKg wqBwbGFuZS0+aW5kZXgsCj4gPiA+IC0JwqDCoMKgwqBmYl9pZCk7Cj4gPiA+IC0KPiA+ID4gLQlp ZiAocGxhbmUtPmZlbmNlX2ZkID49IDApIHsKPiA+ID4gLQkJdWludDY0X3QgZmVuY2VfZmQgPSAo aW50NjRfdCkgcGxhbmUtPmZlbmNlX2ZkOwo+ID4gPiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3Bs YW5lX3JlcShyZXEsIHBsYW5lLAo+ID4gPiBJR1RfUExBTkVfSU5fRkVOQ0VfRkQsIGZlbmNlX2Zk KTsKPiA+ID4gLQl9Cj4gPiA+ICsJwqDCoMKgwqBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBsYW5lKSk7 Cj4gPiA+IMKgCj4gPiA+IC0JaWYgKHBsYW5lLT5mYl9jaGFuZ2VkKSB7Cj4gPiA+IC0JCWlndF9h dG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gPiA+IElHVF9QTEFORV9DUlRD X0lELCBmYl9pZCA/IGNydGNfaWQgOiAwKTsKPiA+ID4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9w bGFuZV9yZXEocmVxLCBwbGFuZSwKPiA+ID4gSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Cj4gPiA+ IC0JfQo+ID4gPiAtCj4gPiA+IC0JaWYgKHBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkIHx8IHBsYW5l LT5zaXplX2NoYW5nZWQpIHsKPiA+ID4gLQkJdWludDMyX3Qgc3JjX3ggPSBJR1RfRklYRUQocGxh bmUtPnNyY194LCAwKTsgLyoKPiA+ID4gc3JjX3ggKi8KPiA+ID4gLQkJdWludDMyX3Qgc3JjX3kg PSBJR1RfRklYRUQocGxhbmUtPnNyY195LCAwKTsgLyoKPiA+ID4gc3JjX3kgKi8KPiA+ID4gLQkJ dWludDMyX3Qgc3JjX3cgPSBJR1RfRklYRUQocGxhbmUtPnNyY193LCAwKTsgLyoKPiA+ID4gc3Jj X3cgKi8KPiA+ID4gLQkJdWludDMyX3Qgc3JjX2ggPSBJR1RfRklYRUQocGxhbmUtPnNyY19oLCAw KTsgLyoKPiA+ID4gc3JjX2ggKi8KPiA+ID4gLQkJaW50MzJfdCBjcnRjX3ggPSBwbGFuZS0+Y3J0 Y194Owo+ID4gPiAtCQlpbnQzMl90IGNydGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gPiA+IC0JCXVp bnQzMl90IGNydGNfdyA9IHBsYW5lLT5jcnRjX3c7Cj4gPiA+IC0JCXVpbnQzMl90IGNydGNfaCA9 IHBsYW5lLT5jcnRjX2g7Cj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IElHVF9OVU1fUExBTkVfUFJP UFM7IGkrKykgewo+ID4gPiArCQlpZiAoIWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUs IGkpKQo+ID4gPiArCQkJY29udGludWU7Cj4gPiBDb3VsZCB3ZSBhZGQgYSBtYWNybyBoZXJlIHRv bz8gTGlrZSAnZm9yX2VhY2hfcHJvcF9vbl9wbGFuZSgpJyBvcgo+ID4gc2ltaWxhcj8KPiBPdXRz aWRlIG9mIGNvbW1pdCBpdCBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSB0byBpdGVyYXRlIG92ZXIg dGhlCj4gcHJvcGVydGllcy4KPiBUaGUgb25seSB0ZXN0IHRoYXQgZW51bWVyYXRlcyBvdmVyIHRo ZSBhcnJheSBpcyB0aGUgcmV3b3JrZWQKPiBrbXNfYXRvbWljLCB0bwo+IHNlZSBpZiB0aGUgdmFs dWUgY29tbWl0dGVkIGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZSByZXR1cm5lZCBieQo+IGdldHBy b3AuCj4gCj4gQW5kIHRoZSBvbmx5IHJlYXNvbiB0aGUgdGVzdCBkb2VzIHNvIGlzIGJlY2F1c2Ug aXQgd2FzIGVhc2llciB0bwo+IHN0b3JlIGluIGFuCj4gYXJyYXkgdG8gbWVtY21wIHBsYW5lLT52 YWx1ZXMgYWdhaW5zdCBrZXJuZWxfdmFsdWVzLgpPay4gV2UnbGwga2VlcCBpdCBhcyBpdCBpcy4K ClJldmlld2VkLWJ5OiBNaWthIEthaG9sYSA8bWlrYS5rYWhvbGFAaW50ZWwuY29tPgoKPiAKLS0g Ck1pa2EgS2Fob2xhIC0gSW50ZWwgT1RDCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK