From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A93C89AB7 for ; Tue, 16 Apr 2019 08:52:12 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id y67so3898358ede.2 for ; Tue, 16 Apr 2019 01:52:12 -0700 (PDT) Date: Tue, 16 Apr 2019 10:52:07 +0200 From: Daniel Vetter Message-ID: <20190416085207.GE13337@phenom.ffwll.local> References: <20190403125450.17648-1-stanislav.lisovskiy@intel.com> <20190403125450.17648-3-stanislav.lisovskiy@intel.com> <20190403141110.GK2665@phenom.ffwll.local> <20190404125627.GT2665@phenom.ffwll.local> <56e0ecdaf47e35012af9e57962e63dde29d9e281.camel@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <56e0ecdaf47e35012af9e57962e63dde29d9e281.camel@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v4 2/2] igt/tests/kms_atomic_transition: Tolerate if can't have all planes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Lisovskiy, Stanislav" Cc: "Peres, Martin" , "igt-dev@lists.freedesktop.org" , "daniel@ffwll.ch" List-ID: T24gRnJpLCBBcHIgMDUsIDIwMTkgYXQgMDc6MjA6MTVBTSArMDAwMCwgTGlzb3Zza2l5LCBTdGFu aXNsYXYgd3JvdGU6Cj4gT24gVGh1LCAyMDE5LTA0LTA0IGF0IDE0OjU2ICswMjAwLCBEYW5pZWwg VmV0dGVyIHdyb3RlOgo+ID4gT24gVGh1LCBBcHIgMDQsIDIwMTkgYXQgMTE6NDU6MDNBTSArMDAw MCwgTGlzb3Zza2l5LCBTdGFuaXNsYXYgd3JvdGU6Cj4gPiA+IE9uIFdlZCwgMjAxOS0wNC0wMyBh dCAxNjoxMSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiBPbiBXZWQsIEFwciAw MywgMjAxOSBhdCAwMzo1NDo1MFBNICswMzAwLCBTdGFuaXNsYXYgTGlzb3Zza2l5Cj4gPiA+ID4g d3JvdGU6Cj4gPiA+ID4gPiBXaXRoIHNvbWUgdXBjb21pbmcgY2hhbmdlcyBpOTE1IG1pZ2h0IG5v dCBhbGxvdwo+ID4gPiA+ID4gYWxsIHNwcml0ZSBwbGFuZXMgZW5hYmxlZCwgZGVwZW5kaW5nIG9u IGF2YWlsYWJsZQo+ID4gPiA+ID4gYmFuZHdpZHRoIGxpbWl0YXRpb24uIFRodXMgdGhlIHRlc3Qg bmVlZCB0byBkZWNyZW1lbnQKPiA+ID4gPiA+IGFtb3VudCBvZiBwbGFuZXMgYW5kIHRyeSBhZ2Fp biwgaW5zdGVhZCBvZiBwYW5pY2tpbmcuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IHYyOiBSZW1vdmVk IGV4Y2Vzc2l2ZSBuZXN0ZWQgY29uZGl0aW9ucywgbWFraW5nIGNvZGUgYSBiaXQKPiA+ID4gPiA+ ICAgICBtb3JlIHJlYWRhYmxlKGhvcGVmdWxseSkuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IHYzOiBT dG9wcGVkIHVzaW5nIGdsb2JhbCBuX3BsYW5lcyB2YXJpYWJsZSBhcyBpdCBtaWdodCBjYXVzZQo+ ID4gPiA+ID4gICAgIHJlc291cmNlcyBiZWluZyB1bnJlbGVhc2VkLgo+ID4gPiA+ID4gICAgIFVz aW5nIG5vdyBwYXJtc1tpXS5tYXNrIGFzIGEgd2F5IHRvIGRldGVybWluZSBpZiBwbGFuZQo+ID4g PiA+ID4gICAgIGhhcyB0byBiZSBpbmNsdWRlZCBpbnRvIGNvbW1pdC4KPiA+ID4gPiA+IAo+ID4g PiA+ID4gdjQ6IFJlbW92ZWQgdW5uZWVkZWQgbl9vdmVybGF5cyBpbml0aWFsaXphdGlvbi4KPiA+ ID4gPiA+IAo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IExpc292c2tpeSA8Cj4g PiA+ID4gPiBzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiA+ID4gPiA+IC0tLQo+ID4g PiA+ID4gIHRlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jIHwgMTA3ICsrKysrKysrKysrKysr KysrLS0tLS0tLS0tCj4gPiA+ID4gPiAtLS0tCj4gPiA+ID4gPiAtLS0tCj4gPiA+ID4gPiAgMSBm aWxlIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2F0b21pY190cmFuc2l0aW9uLmMKPiA+ ID4gPiA+IGIvdGVzdHMva21zX2F0b21pY190cmFuc2l0aW9uLmMKPiA+ID4gPiA+IGluZGV4IDYz OGZlMTdlLi5hMDQyMjBmMyAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL3Rlc3RzL2ttc19hdG9taWNf dHJhbnNpdGlvbi5jCj4gPiA+ID4gPiArKysgYi90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24u Ywo+ID4gPiA+ID4gQEAgLTIxMiw5ICsyMTIsMTEgQEAgc3RhdGljIHZvaWQgc2V0dXBfcGFybXMo aWd0X2Rpc3BsYXlfdAo+ID4gPiA+ID4gKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLAo+ID4gPiA+ ID4gIAl1bnNpZ25lZCBzcHJpdGVfd2lkdGgsIHNwcml0ZV9oZWlnaHQsIHByZXZfdywgcHJldl9o Owo+ID4gPiA+ID4gIAlib29sIG1heF9zcHJpdGVfd2lkdGgsIG1heF9zcHJpdGVfaGVpZ2h0LCBh bHBoYSA9IHRydWU7Cj4gPiA+ID4gPiAgCXVpbnQzMl90IG5fcGxhbmVzID0gZGlzcGxheS0+cGlw ZXNbcGlwZV0ubl9wbGFuZXM7Cj4gPiA+ID4gPiAtCXVpbnQzMl90IG5fb3ZlcmxheXMgPSAwLCBv dmVybGF5c1tuX3BsYW5lc107Cj4gPiA+ID4gPiArCXVpbnQzMl90IG5fb3ZlcmxheXMsIG92ZXJs YXlzW25fcGxhbmVzXTsKPiA+ID4gPiA+ICAJaWd0X3BsYW5lX3QgKnBsYW5lOwo+ID4gPiA+ID4g LQl1aW50MzJfdCBpdGVyX21hc2sgPSAzOwo+ID4gPiA+ID4gKwl1aW50MzJfdCBpdGVyX21hc2s7 Cj4gPiA+ID4gPiArCWludCByZXRyaWVzID0gbl9wbGFuZXMgLSAxOwo+ID4gPiA+ID4gKwlpbnQg cmV0ID0gMDsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJZG9fb3JfZGllKGRybUdldENhcChkaXNw bGF5LT5kcm1fZmQsCj4gPiA+ID4gPiBEUk1fQ0FQX0NVUlNPUl9XSURUSCwKPiA+ID4gPiA+ICZj dXJzb3Jfd2lkdGgpKTsKPiA+ID4gPiA+ICAJaWYgKGN1cnNvcl93aWR0aCA+PSBtb2RlLT5oZGlz cGxheSkKPiA+ID4gPiA+IEBAIC0yMjQsNiArMjI2LDEwIEBAIHN0YXRpYyB2b2lkIHNldHVwX3Bh cm1zKGlndF9kaXNwbGF5X3QKPiA+ID4gPiA+ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSwKPiA+ ID4gPiA+ICAJaWYgKGN1cnNvcl9oZWlnaHQgPj0gbW9kZS0+dmRpc3BsYXkpCj4gPiA+ID4gPiAg CQljdXJzb3JfaGVpZ2h0ID0gbW9kZS0+dmRpc3BsYXk7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAr cmV0cnk6Cj4gPiA+ID4gPiArCW5fb3ZlcmxheXMgPSAwOwo+ID4gPiA+ID4gKwlpdGVyX21hc2sg PSAzOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gIAlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3Bs YXksIHBpcGUsIHBsYW5lKSB7Cj4gPiA+ID4gPiAgCQlpbnQgaSA9IHBsYW5lLT5pbmRleDsKPiA+ ID4gPiA+ICAKPiA+ID4gPiA+IEBAIC0yMzgsMTIgKzI0NCwxNiBAQCBzdGF0aWMgdm9pZCBzZXR1 cF9wYXJtcyhpZ3RfZGlzcGxheV90Cj4gPiA+ID4gPiAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUs Cj4gPiA+ID4gPiAgCQkJcGFybXNbaV0uaGVpZ2h0ID0gY3Vyc29yX2hlaWdodDsKPiA+ID4gPiA+ ICAJCQlwYXJtc1tpXS5tYXNrID0gMSA8PCAxOwo+ID4gPiA+ID4gIAkJfSBlbHNlIHsKPiA+ID4g PiA+IC0JCQlwYXJtc1tpXS5mYiA9IHNwcml0ZV9mYjsKPiA+ID4gPiA+IC0JCQlwYXJtc1tpXS5t YXNrID0gMSA8PCAyOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLQkJCWl0ZXJfbWFzayB8PSAxIDw8 IDI7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtCQkJb3ZlcmxheXNbbl9vdmVybGF5cysrXSA9IGk7 Cj4gPiA+ID4gPiArCQkJaWYgKG5fb3ZlcmxheXMgPCAobl9wbGFuZXMgLSAyKSkgewo+ID4gPiA+ ID4gKwkJCQlwYXJtc1tpXS5mYiA9IHNwcml0ZV9mYjsKPiA+ID4gPiA+ICsJCQkJcGFybXNbaV0u bWFzayA9IDEgPDwgMjsKPiA+ID4gPiA+ICsJCQkJaXRlcl9tYXNrIHw9IDEgPDwgMjsKPiA+ID4g PiA+ICsJCQkJb3ZlcmxheXNbbl9vdmVybGF5cysrXSA9IGk7Cj4gPiA+ID4gPiArCQkJfQo+ID4g PiA+ID4gKwkJCWVsc2Ugewo+ID4gPiA+ID4gKwkJCQlwYXJtc1tpXS5mYiA9IE5VTEw7Cj4gPiA+ ID4gPiArCQkJCXBhcm1zW2ldLm1hc2sgPSAwOwo+ID4gPiA+ID4gKwkJCX0KPiA+ID4gPiA+ICAJ CX0KPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gQEAgLTI3OCwxNiArMjg4LDEz IEBAIHN0YXRpYyB2b2lkIHNldHVwX3Bhcm1zKGlndF9kaXNwbGF5X3QKPiA+ID4gPiA+ICpkaXNw bGF5LCBlbnVtIHBpcGUgcGlwZSwKPiA+ID4gPiA+ICAJICogUHJlIGdlbjkgbm90IGFsbCBzaXpl cyBhcmUgc3VwcG9ydGVkLCBmaW5kIHRoZQo+ID4gPiA+ID4gYmlnZ2VzdAo+ID4gPiA+ID4gcG9z c2libGUKPiA+ID4gPiA+ICAJICogc2l6ZSB0aGF0IGNhbiBiZSBlbmFibGVkIG9uIGFsbCBzcHJp dGUgcGxhbmVzLgo+ID4gPiA+ID4gIAkgKi8KPiA+ID4gPiA+IC1yZXRyeToKPiA+ID4gPiA+ICAJ cHJldl93ID0gc3ByaXRlX3dpZHRoID0gY3Vyc29yX3dpZHRoOwo+ID4gPiA+ID4gIAlwcmV2X2gg PSBzcHJpdGVfaGVpZ2h0ID0gY3Vyc29yX2hlaWdodDsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJ bWF4X3Nwcml0ZV93aWR0aCA9IChzcHJpdGVfd2lkdGggPT0gbW9kZS0+aGRpc3BsYXkpOwo+ID4g PiA+ID4gIAltYXhfc3ByaXRlX2hlaWdodCA9IChzcHJpdGVfaGVpZ2h0ID09IG1vZGUtPnZkaXNw bGF5KTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+IC0Jd2hpbGUgKDEpIHsKPiA+ID4gPiA+IC0JCWlu dCByZXQ7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiArCXdoaWxlICghbWF4X3Nwcml0ZV93aWR0aCAm JiAhbWF4X3Nwcml0ZV9oZWlnaHQpIHsKPiA+ID4gPiA+ICAJCXNldF9zcHJpdGVfd2goZGlzcGxh eSwgcGlwZSwgcGFybXMsIHNwcml0ZV9mYiwKPiA+ID4gPiA+ICAJCQkgICAgICBhbHBoYSwgc3By aXRlX3dpZHRoLAo+ID4gPiA+ID4gc3ByaXRlX2hlaWdodCk7Cj4gPiA+ID4gPiAgCj4gPiA+ID4g PiBAQCAtMjk1LDU0ICszMDIsNDkgQEAgcmV0cnk6Cj4gPiA+ID4gPiAgCQlyZXQgPSBpZ3RfZGlz cGxheV90cnlfY29tbWl0X2F0b21pYyhkaXNwbGF5LAo+ID4gPiA+ID4gRFJNX01PREVfQVRPTUlD X1RFU1RfT05MWSB8IERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULAo+ID4gPiA+ID4gTlVM TCk7Cj4gPiA+ID4gPiAgCQlpZ3RfYXNzZXJ0KCFpc19hdG9taWNfY2hlY2tfZmFpbHVyZV9lcnJu byhyZXQpKQo+ID4gPiA+ID4gOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gLQkJaWYgKGlzX2F0b21p Y19jaGVja19wbGFuZV9zaXplX2Vycm5vKHJldCkpIHsKPiA+ID4gPiA+IC0JCQlpZiAoY3Vyc29y X3dpZHRoID09IHNwcml0ZV93aWR0aCAmJgo+ID4gPiA+ID4gLQkJCSAgICBjdXJzb3JfaGVpZ2h0 ID09IHNwcml0ZV9oZWlnaHQpIHsKPiA+ID4gPiA+IC0JCQkJaWd0X2Fzc2VydF9mKGFscGhhLAo+ ID4gPiA+ID4gLQkJCQkJICAgICAgIkNhbm5vdCBjb25maWd1cmUKPiA+ID4gPiA+IHRoZQo+ID4g PiA+ID4gdGVzdCB3aXRoIGFsbCBzcHJpdGUgcGxhbmVzIGVuYWJsZWRcbiIpOwo+ID4gPiA+ID4g LQo+ID4gPiA+ID4gLQkJCQkvKiByZXRyeSBvbmNlIHdpdGggWFJHQiBmb3JtYXQuCj4gPiA+ID4g PiAqLwo+ID4gPiA+ID4gLQkJCQlhbHBoYSA9IGZhbHNlOwo+ID4gPiA+ID4gLQkJCQlnb3RvIHJl dHJ5Owo+ID4gPiA+ID4gLQkJCX0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0JCQlzcHJpdGVfd2lk dGggPSBwcmV2X3c7Cj4gPiA+ID4gPiAtCQkJc3ByaXRlX2hlaWdodCA9IHByZXZfaDsKPiA+ID4g PiA+IC0KPiA+ID4gPiA+IC0JCQlpZiAobWF4X3Nwcml0ZV93aWR0aCAmJgo+ID4gPiA+ID4gbWF4 X3Nwcml0ZV9oZWlnaHQpIHsKPiA+ID4gPiA+IC0JCQkJc2V0X3Nwcml0ZV93aChkaXNwbGF5LCBw aXBlLAo+ID4gPiA+ID4gcGFybXMsCj4gPiA+ID4gPiBzcHJpdGVfZmIsCj4gPiA+ID4gPiAtCQkJ CQkgICAgICBhbHBoYSwKPiA+ID4gPiA+IHNwcml0ZV93aWR0aCwKPiA+ID4gPiA+IHNwcml0ZV9o ZWlnaHQpOwo+ID4gPiA+ID4gLQkJCQlicmVhazsKPiA+ID4gPiA+IC0JCQl9Cj4gPiA+ID4gPiAt Cj4gPiA+ID4gPiAtCQkJaWYgKCFtYXhfc3ByaXRlX3dpZHRoKQo+ID4gPiA+ID4gLQkJCQltYXhf c3ByaXRlX3dpZHRoID0gdHJ1ZTsKPiA+ID4gPiA+IC0JCQllbHNlCj4gPiA+ID4gPiAtCQkJCW1h eF9zcHJpdGVfaGVpZ2h0ID0gdHJ1ZTsKPiA+ID4gPiA+IC0JCX0gZWxzZSB7Cj4gPiA+ID4gPiAr CQlpZiAoIWlzX2F0b21pY19jaGVja19wbGFuZV9zaXplX2Vycm5vKHJldCkpIHsKPiA+ID4gPiA+ ICAJCQlwcmV2X3cgPSBzcHJpdGVfd2lkdGg7Cj4gPiA+ID4gPiAgCQkJcHJldl9oID0gc3ByaXRl X2hlaWdodDsKPiA+ID4gPiA+IC0JCX0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0JCWlmICghbWF4 X3Nwcml0ZV93aWR0aCkgewo+ID4gPiA+ID4gLQkJCXNwcml0ZV93aWR0aCAqPSAyOwo+ID4gPiA+ ID4gLQo+ID4gPiA+ID4gKyAgICAKPiA+ID4gPiA+ICsJCQlzcHJpdGVfd2lkdGggKj0gbWF4X3Nw cml0ZV93aWR0aCA/IDEgOgo+ID4gPiA+ID4gMjsKPiA+ID4gPiA+ICAJCQlpZiAoc3ByaXRlX3dp ZHRoID49IG1vZGUtPmhkaXNwbGF5KSB7Cj4gPiA+ID4gPiAgCQkJCW1heF9zcHJpdGVfd2lkdGgg PSB0cnVlOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gIAkJCQlzcHJpdGVfd2lkdGggPSBtb2RlLT5o ZGlzcGxheTsKPiA+ID4gPiA+ICAJCQl9Cj4gPiA+ID4gPiAtCQl9IGVsc2UgaWYgKCFtYXhfc3By aXRlX2hlaWdodCkgewo+ID4gPiA+ID4gLQkJCXNwcml0ZV9oZWlnaHQgKj0gMjsKPiA+ID4gPiA+ ICAKPiA+ID4gPiA+ICsJCQlzcHJpdGVfaGVpZ2h0ICo9IG1heF9zcHJpdGVfaGVpZ2h0ID8gMQo+ ID4gPiA+ID4gOiAyOwo+ID4gPiA+ID4gIAkJCWlmIChzcHJpdGVfaGVpZ2h0ID49IG1vZGUtPnZk aXNwbGF5KSB7Cj4gPiA+ID4gPiAgCQkJCW1heF9zcHJpdGVfaGVpZ2h0ID0gdHJ1ZTsKPiA+ID4g PiA+IC0KPiA+ID4gPiA+ICAJCQkJc3ByaXRlX2hlaWdodCA9IG1vZGUtPnZkaXNwbGF5Owo+ID4g PiA+ID4gIAkJCX0KPiA+ID4gPiA+IC0JCX0gZWxzZQo+ID4gPiA+ID4gLQkJCS8qIE1heCBzaXpl ZCBzcHJpdGVzIGZvciBhbGwhICovCj4gPiA+ID4gPiAtCQkJYnJlYWs7Cj4gPiA+ID4gPiArCQkJ Y29udGludWU7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQlpZiAoY3Vy c29yX3dpZHRoID09IHNwcml0ZV93aWR0aCAmJgo+ID4gPiA+ID4gKwkJICAgIGN1cnNvcl9oZWln aHQgPT0gc3ByaXRlX2hlaWdodCkgewo+ID4gPiA+ID4gKwkJCWlndF9hc3NlcnRfZihyZXRyaWVz ID4gMCwKPiA+ID4gPiA+ICsJCQkJICAgICAgIkNhbm5vdCBjb25maWd1cmUgdGhlCj4gPiA+ID4g PiB0ZXN0IHdpdGgKPiA+ID4gPiA+IGFsbCBzcHJpdGUgcGxhbmVzIGVuYWJsZWRcbiIpOwo+ID4g PiA+ID4gKwkJCS0tcmV0cmllczsKPiA+ID4gPiA+ICsJCQkvKiByZXRyeSBvbmNlIHdpdGggWFJH QiBmb3JtYXQuICovCj4gPiA+ID4gPiArCQkJaWYgKGFscGhhKSB7Cj4gPiA+ID4gPiArCQkJCWFs cGhhID0gZmFsc2U7Cj4gPiA+ID4gPiArCQkJCWlndF93YXJuKCJSZW1vdmVkIGFscGhhXG4iKTsK PiA+ID4gPiA+ICsJCQl9Cj4gPiA+ID4gPiArCQkJZWxzZSB7Cj4gPiA+ID4gPiArCQkJCWlndF9h c3NlcnRfZihuX3BsYW5lcyA+IDEsICJObwo+ID4gPiA+ID4gcGxhbmVzCj4gPiA+ID4gPiBsZWZ0 IHRvIHByb2NlZWQgd2l0aCEiKTsKPiA+ID4gPiA+ICsJCQkJbl9wbGFuZXMtLTsKPiA+ID4gPiAK PiA+ID4gPiBTYW1lIGNvbW1lbnQgYXMgd2l0aCBrbXNfY29uY3VycmVudCBhbmQgYWxsIHRoZSBv dGhlciBwbGFuZQo+ID4gPiA+IHRlc3RzOgo+ID4gPiA+IEp1c3QKPiA+ID4gPiBkcm9wcGluZyB0 aGUgbGFzdCBwbGFuZSByZWR1Y2VzIG91ciB0ZXN0IGNvdmVyYWdlLCB3ZSBuZWVkIHRvCj4gPiA+ ID4gcmFuZG9taXplCj4gPiA+ID4gd2hpY2ggcGxhbmUgd2UgZHJvcC4KPiA+ID4gCj4gPiA+IEkg dGhpbmsgdGhhdCBpcyBhIGdvb2QgaWRlYSwgSSdtIG5vdyB0ZXN0aW5nIGEgcGF0Y2ggd2hpY2gK PiA+ID4gcmFuZG9taXplcwo+ID4gPiB3aGljaCBvbmUgb2YgYXZhaWxhYmxlIHBsYW5lcyBpcyBn b2luZyB0byBiZSByZW1vdmVkLgo+ID4gPiAKPiA+ID4gRm9yIHRoZSBsYXR0ZXIgY2hhbmdlIEkg d291bGQgbGVhdmUgZm9yIGZ1cnRoZXIgcGF0Y2hlcyBhcwo+ID4gPiBjdXJyZW50bHkgCj4gPiA+ IGl0IGRvZXNuJ3QgbWF0dGVyIGFueXdheSwgYnV0IHdlIG5lZWQgdGhlIGlzc3VlcyByZWxhdGVk IHRvIG5ldyBidwo+ID4gPiByZXF1aXJlbWVudHMgdG8gYmUgZml4ZWQuCj4gPiAKPiA+IEp1c3Qg ZG9pbmcgc29tZSBidWcgc2NydWIgYW5kIHdlIGhhdmUgc29tZSBFSU5WQUwgZmFpbHVyZXMgbGlr ZSB0aGlzCj4gPiBhbGwKPiA+IG92ZXIgdGhlIHBsYWNlLiBTbyBJIGd1ZXNzIHRoZXJlJ3Mgc29t ZSBvdGhlciBjYXNlcyB3aGVyZSB3ZSByZWplY3QKPiA+IGNvbmZpZ3MgaW4gdGhlIGtlcm5lbCBh bmQgdGhlbiB0aGUgdGVzdCBmYWxscyBvdmVyLiBXZSdsbCBuZWVkIHRoaXMKPiA+IChpdCdzCj4g PiBob3cgYXRvbWljIGlzIG1lYW50IHRvIHdvcmsgcmVhbGx5KS4KPiA+IAo+ID4gQWxzbywgdGhl IGJ3IGJhbmQtYWlkIGZyb20gVmlsbGUgaXMgYSByZWFsbHkgYmFkIHNvbHV0aW9uLCB3ZSBuZWVk Cj4gPiBzb21ldGhpbmcgYmV0dGVyIC0gbm8gcG9pbnQgaW4gaGF2aW5nIDcgcGxhbmVzIGlmIHlv dSBjYW4ndCBldmVuIHVzZQo+ID4gdGhlbS4KPiA+IEFkZGluZyBtb3JlIHRyeV9jb21taXQgaW4g dGhlIHdyb25nIHBsYWNlIGZlZWxzIGxpa2UgYSBkZXRvdXIuCj4gPiAtRGFuaWVsCj4gCj4gVGhh dCdzIGEgdG9waWMgZm9yIG11Y2ggbGFyZ2VyIGRpc2N1c3Npb24sIEkgaGF2ZSBiZWVuIGhlYXJp bmcgYXJvdW5kCj4gZm9yIGFsbW9zdCBhIG1vbnRoIDopIAo+IEkgaGF2ZSBiZWVuIHRhbGtpbmcg d2l0aCBWaWxsZSBhbmQgTWFydGluIGEgbG90IGFib3V0IHRoaXMuCj4gQW5kIHllYWggdG8gbWUg aXQgaXMgYWxzbyBjb250cm92ZXJzaWFsLCB0aGF0IHlvdSBoYXZlIHBsYW5lcywgYnV0IHRoZXkK PiBhcmUgbm90IGFsd2F5cyB1c2FibGUsIGhvd2V2ZXIuLi4KPiBJIGNvbXBsZXRlbHkgdW5kZXJz dGFuZCBhbGwgdGhlIHByb3MgYW5kIGNvbnMsIHlvdSAKPiBhcmUgZGVzY3JpYmluZyBoZXJlLiBC dXQgdGhhdCByZWFsbHkgZ29lcyBmYXIgYmV5b25kIHRoYXQgSUdUIHBhdGNoLgo+IEknbSBqdXN0 IGRlYWxpbmcgd2l0aCByZWFsaXR5IHdoYXQgd2UgaGF2ZSBjdXJyZW50bHkgaGVyZSBhbmQgdHJ5 aW5nIHRvCj4gbWFrZSBpdCBub3QgdG8gZmFpbCBtaXNlcmFibHkgYXQgbGVhc3QuIE9uY2Ugd2Ug d2lsbCBoYXZlICJzb21ldGhpbmcKPiBiZXR0ZXIiIHRoYXQgeW91IGRlc2NyaWJlLCBJIHdvdWxk IGJlIGhhcHB5IHRvIGltcGxlbWVudCBhCj4gY29ycmVzcG9uZGVudCBjaGFuZ2VzLiAKCldlIF9k b18gaGF2ZSB0aGlzICJzb21ldGhpbmcgYmV0dGVyIiwgc2luY2UgZGF5IDEgb2YgYXRvbWljLiBJ dCdzIGNhbGxlZAp0cnlfY29tbWl0LgoKQW5kIHllcyAic29tZSBwbGFuZXMgc29tZXRpbWVzIGRv bid0IHdvcmsgZm9yIHJlYXNvbnMgb25seSBjbGVhciB0byB0aGUKa2VybmVsIGRyaXZlciIgaGFz IGFsc28gYmVlbiBwYXJ0IG9mIGF0b21pYyBzaW5jZSBkYXkgb25lLgoKUGxlYXNlIGRvbid0IG1l cmdlIGhhY2tzIHRvIGhhbmRsZSBtYW5hZ2VtZW50IHByZXNzdXJlLCBsZXQncyBkbyB0aGUgcmln aHQKdGhpbmcuIEknbSBoYXBweSB0byBoYW5kbGUgbWFuYWdlcnMgZm9yIHlvdSB3aG8gZG9uJ3Qg Z2V0IHRoaXMuIEN1dHRpbmcKY29ybmVycyBoZXJlIGRvZXNuJ3QgaGVscCBhbnlvbmUgKGFuZCB5 ZXMgdGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodAp3aGVuIHRoZSB0ZXN0IHdhcyBvcmlnaW5h bGx5IHdyaXR0ZW4sIGJ1dCB3ZWxsIGl0IHdhc250KS4KLURhbmllbAoKPiAKPiA+IAo+ID4gPiA+ IAo+ID4gPiA+IFRoZSBvdGhlciBiaXQ6IFdlIG5lZWQgdG8gcmVjb21wdXRlIGhvdyBtYW55IHBs YW5lcyB3ZSBjYW4gZW5hYmxlCj4gPiA+ID4gZm9yCj4gPiA+ID4gZXZlcnkgdHJhbnNpdGlvbi4g UmlnaHQgbm93IHRoYXQncyBub3QgdGhlIGNhc2Ugd2l0aCBWaWxsZSdzCj4gPiA+ID4gY3VycmVu dAo+ID4gPiA+IHBhdGNoCj4gPiA+ID4gc2VyaWVzLCBidXQgdGhhdCdzIGFsc28ganVzdCBhbiBp bnRlcmltIHNvbHV0aW9uLiBBY3R1YWwgYncKPiA+ID4gPiBjb25zdW1wdGlvbgo+ID4gPiA+IHZl cnkgbXVjaCBkZXBlbmRzIHVwb24gd2hlcmUgYWxsIHRoZSBwbGFuZXMgYXJlIHBsYWNlLCBob3cg YmlnCj4gPiA+ID4gdGhleQo+ID4gPiA+IGFyZQo+ID4gPiA+IGFuZCBhbGwgdGhhdCBzdHVmZi4g U28gd2UgbmVlZCB0byByZWNvbXB1dGUvcmVjaGVjayB0aGF0IGV2ZXJ5Cj4gPiA+ID4gdHJhbnNp dGlvbgo+ID4gPiA+IHdvcmtzLCBmb3IgZWFjaCBzcGVjaWZpYyB0cmFuc2l0aW9uLiBCZWNhdXNl IHRoZSBleGFjdCB0cmFuc2l0aW9uCj4gPiA+ID4gbWlnaHQKPiA+ID4gPiBhbHNvIG1hdHRlci4K PiA+ID4gPiAKPiA+ID4gPiBPciBtYXliZSBJJ20gbm90IGVudGlyZWx5IHVuZGVyc3RhbmRpbmcg aG93IHRoaXMgdGVzdCB3b3JrcyBoZXJlLgo+ID4gPiA+IC1EYW5pZWwKPiA+ID4gPiAKPiA+ID4g PiA+ICsJCQkJaWd0X3dhcm4oIlJlZHVjZWQgYXZhaWxhYmxlCj4gPiA+ID4gPiBwbGFuZXMgdG8K PiA+ID4gPiA+ICVkXG4iLCBuX3BsYW5lcyk7Cj4gPiA+ID4gPiArCQkJfQo+ID4gPiA+ID4gKwkJ CWdvdG8gcmV0cnk7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQlzcHJp dGVfd2lkdGggPSBwcmV2X3c7Cj4gPiA+ID4gPiArCQlzcHJpdGVfaGVpZ2h0ID0gcHJldl9oOwo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJaWYgKCFtYXhfc3ByaXRlX3dpZHRoKQo+ID4gPiA+ID4g KwkJCW1heF9zcHJpdGVfd2lkdGggPSB0cnVlOwo+ID4gPiA+ID4gKwkJZWxzZQo+ID4gPiA+ID4g KwkJCW1heF9zcHJpdGVfaGVpZ2h0ID0gdHJ1ZTsKPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gIAo+ ID4gPiA+ID4gIAlpZ3RfaW5mbygiUnVubmluZyB0ZXN0IG9uIHBpcGUgJXMgd2l0aCByZXNvbHV0 aW9uICVkeCVkCj4gPiA+ID4gPiBhbmQKPiA+ID4gPiA+IHNwcml0ZSBzaXplICVkeCVkIGFscGhh ICVpXG4iLAo+ID4gPiA+ID4gQEAgLTQ2Myw3ICs0NjUsNiBAQCBydW5fdHJhbnNpdGlvbl90ZXN0 KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gPiA+ID4gPiBlbnVtIHBpcGUgcGlwZSwgaWd0X291 dHB1dF90ICpvdXRwdXQKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJaWYgKGZsYWdzICYgRFJNX01P REVfQVRPTUlDX0FMTE9XX01PREVTRVQpIHsKPiA+ID4gPiA+ICAJCWlndF9vdXRwdXRfc2V0X3Bp cGUob3V0cHV0LCBQSVBFX05PTkUpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gIAkJaWd0X2Rpc3Bs YXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ ICAJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiA+ID4gPiA+IEBAIC01MjUs OCArNTI2LDEwIEBAIHJ1bl90cmFuc2l0aW9uX3Rlc3QoaWd0X2Rpc3BsYXlfdAo+ID4gPiA+ID4g KmRpc3BsYXksCj4gPiA+ID4gPiBlbnVtIHBpcGUgcGlwZSwgaWd0X291dHB1dF90ICpvdXRwdXQK PiA+ID4gPiA+ICAJCX0KPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJCS8qIGZvcmNlIHBsYW5lcyB0 byBiZSBwYXJ0IG9mIGNvbW1pdCAqLwo+ID4gPiA+ID4gLQkJZm9yX2VhY2hfcGxhbmVfb25fcGlw ZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkKPiA+ID4gPiA+IC0JCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0 aW9uKHBsYW5lLCAwLCAwKTsKPiA+ID4gPiA+ICsJCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlz cGxheSwgcGlwZSwgcGxhbmUpIHsKPiA+ID4gPiA+ICsJCQlpZiAocGFybXNbcGxhbmUtPmluZGV4 XS5tYXNrKQo+ID4gPiA+ID4gKwkJCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLAo+ID4g PiA+ID4gMCwgMCk7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgCQlpZ3Rf ZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ID4gPiA+ID4gIAo+ID4g PiA+ID4gLS0gCj4gPiA+ID4gPiAyLjE3LjEKPiA+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IAo+ ID4gCj4gPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=