From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/7] drm/i915/gen11: Link nv12 Y and UV planes in the atomic state, v3. Date: Tue, 25 Sep 2018 21:34:29 +0300 Message-ID: <20180925183429.GM9144@intel.com> References: <20180921173945.6276-1-maarten.lankhorst@linux.intel.com> <20180921173945.6276-3-maarten.lankhorst@linux.intel.com> <20180921183552.GH5565@intel.com> <20180921193122.GL5565@intel.com> <83d03c1c-1c2c-1fdf-4a60-f681e253a1ce@linux.intel.com> <20180924131810.GP5565@intel.com> <20180925180132.GF28364@mdroper-desk.amr.corp.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 01ADE89FF7 for ; Tue, 25 Sep 2018 18:34:33 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180925180132.GF28364@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBTZXAgMjUsIDIwMTggYXQgMTE6MDE6MzJBTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBNb24sIFNlcCAyNCwgMjAxOCBhdCAwNDoxODoxMFBNICswMzAwLCBWaWxsZSBTeXJq w6Rsw6Qgd3JvdGU6Cj4gPiBPbiBNb24sIFNlcCAyNCwgMjAxOCBhdCAwMjozNToxM1BNICswMjAw LCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiA+ID4gT3AgMjEtMDktMTggb20gMjE6MzEgc2No cmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gPiA+ID4gT24gRnJpLCBTZXAgMjEsIDIwMTggYXQgMDk6 MzU6NTJQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+PiBPbiBGcmksIFNl cCAyMSwgMjAxOCBhdCAwNzozOTo0MFBNICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToK PiA+ID4gPj4+IFRvIG1ha2UgTlYxMiB3b3JraW5nIG9uIGljbCwgd2UgbmVlZCB0byB1cGRhdGUg MiBwbGFuZXMgc2ltdWx0YW5lb3VzbHkuCj4gPiA+ID4+PiBJJ3ZlIGNob3NlbiB0byBkbyB0aGlz IGluIHRoZSBDUlRDIHN0ZXAgYWZ0ZXIgcGxhbmUgdmFsaWRhdGlvbiBpcyBkb25lLAo+ID4gPiA+ Pj4gc28gd2Uga25vdyB3aGF0IHBsYW5lcyBhcmUgKGluKXZpc2libGUuIFRoZSBsaW5rZWQgWSBw bGFuZSB3aWxsIGdldAo+ID4gPiA+Pj4gdXBkYXRlZCBpbiBpbnRlbF9wbGFuZV91cGRhdGVfcGxh bmVzX29uX2NydGMoKSwgYnkgdGhlIGNhbGwgdG8KPiA+ID4gPj4+IHVwZGF0ZV9zbGF2ZSwgd2hp Y2ggZ2V0cyB0aGUgbWFzdGVyJ3MgcGxhbmVfc3RhdGUgYXMgYXJndW1lbnQuCj4gPiA+ID4+Pgo+ ID4gPiA+Pj4gVGhlIGxpbmsgcmVxdWlyZXMgYm90aCBwbGFuZXMgZm9yIGF0b21pY191cGRhdGUg dG8gd29yaywKPiA+ID4gPj4+IHNvIG1ha2Ugc3VyZSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFu ZXMoKSBhZGRzIGJvdGggc3RhdGVzLgo+ID4gPiA+Pj4KPiA+ID4gPj4+IENoYW5nZXMgc2luY2Ug djE6Cj4gPiA+ID4+PiAtIEludHJvZHVjZSBpY2xfaXNfbnYxMl95X3BsYW5lKCksIGluc3RlYWQg b2YgaGFyZGNvZGluZyBzcHJpdGUgbnVtYmVycy4KPiA+ID4gPj4+IC0gUHV0IGFsbCB0aGUgc3Rh dGUgdXBkYXRpbmcgbG9naW4gaW4gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUo KS4KPiA+ID4gPj4+IC0gQ2xlYW4gdXAgY2hhbmdlcyBpbiBpbnRlbF9wbGFuZV9hdG9taWNfY2hl Y2soKS4KPiA+ID4gPj4+IENoYW5nZXMgc2luY2UgdjI6Cj4gPiA+ID4+PiAtIEZpeCBpbnRlbF9h dG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZSgpIHRvIGFjdHVhbGx5IHJldHVybiBvbGQgc3RhdGUu Cj4gPiA+ID4+PiAtIE1vdmUgdmlzaWJpbGl0eSBjaGFuZ2VzIHRvIHByZXBhcmF0aW9uIHBhdGNo Lgo+ID4gPiA+Pj4gLSBPbmx5IHRyeSB0byBmaW5kIGEgWSBwbGFuZSBvbiBnZW4xMSwgZWFybGll ciBwbGF0Zm9ybXMgb25seSByZXF1aXJlIGEgc2luZ2xlIHBsYW5lLgo+ID4gPiA+Pj4KPiA+ID4g Pj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Cj4gPiA+ID4+Pgo+ID4gPiA+Pj4gZml4dXAgWS9VViBMaW5rYWdlCj4g PiA+ID4+Pgo+ID4gPiA+Pj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPj4+IC0tLQo+ID4gPiA+Pj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIHwgMTA2ICsrKysrKysrKysr KysrKysrKy0tLS0KPiA+ID4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgICAgICB8ICA1NyArKysrKysrKysrKysKPiA+ID4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICA1MyArKysrKysrKysrKwo+ID4gPiA+Pj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgIHwgIDEyICsrLQo+ID4gPiA+Pj4g IDQgZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+ID4g PiA+Pj4KPiA+ID4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j Cj4gPiA+ID4+PiBpbmRleCA5ODRiYzFmMjY2MjUuLjUyMjY5OTA4NWE1OSAxMDA2NDQKPiA+ID4g Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gPiA+ ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ID4g PiA+Pj4gQEAgLTEyMSw3ICsxMjEsMTEgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193 aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPiA+ID4g Pj4+ICAJY3J0Y19zdGF0ZS0+bnYxMl9wbGFuZXMgJj0gfkJJVChpbnRlbF9wbGFuZS0+aWQpOwo+ ID4gPiA+Pj4gIAlpbnRlbF9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7Cj4gPiA+ID4+PiAg Cj4gPiA+ID4+PiAtCS8qIElmIHRoaXMgaXMgYSBjdXJzb3IgcGxhbmUsIG5vIGZ1cnRoZXIgY2hl Y2tzIGFyZSBuZWVkZWQuICovCj4gPiA+ID4+PiArCS8qIERlc3Ryb3kgdGhlIGxpbmsgKi8KPiA+ ID4gPj4+ICsJaW50ZWxfc3RhdGUtPmxpbmtlZF9wbGFuZSA9IE5VTEw7Cj4gPiA+ID4+PiArCWlu dGVsX3N0YXRlLT5zbGF2ZSA9IGZhbHNlOwo+ID4gPiA+Pj4gKwo+ID4gPiA+Pj4gKwkvKiBJZiB0 aGlzIGlzIGEgY3Vyc29yIG9yIFkgcGxhbmUsIG5vIGZ1cnRoZXIgY2hlY2tzIGFyZSBuZWVkZWQu ICovCj4gPiA+ID4+PiAgCWlmICghaW50ZWxfc3RhdGUtPmJhc2UuY3J0YyAmJiAhb2xkX3BsYW5l X3N0YXRlLT5iYXNlLmNydGMpCj4gPiA+ID4+PiAgCQlyZXR1cm4gMDsKPiA+ID4gPj4+ICAKPiA+ ID4gPj4+IEBAIC0xNDIsMjcgKzE0Niw3NiBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ID4g PiA+Pj4gIAkJCQkJICAgICAgIHN0YXRlKTsKPiA+ID4gPj4+ICB9Cj4gPiA+ID4+PiAgCj4gPiA+ ID4+PiAtc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gPiA+ID4+PiAtCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdf cGxhbmVfc3RhdGUpCj4gPiA+ID4+PiArc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hl Y2soc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+ID4gPiA+Pj4gKwkJCQkgICAgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqbmV3X2RybV9wbGFuZV9zdGF0ZSkKPiA+ID4gPj4+ICB7Cj4gPiA+ ID4+PiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG5ld19wbGFuZV9zdGF0ZS0+ c3RhdGU7Cj4gPiA+ID4+PiAtCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFu ZV9zdGF0ZSA9Cj4gPiA+ID4+PiAtCQlkcm1fYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUoc3Rh dGUsIHBsYW5lKTsKPiA+ID4gPj4+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gbmV3X3BsYW5l X3N0YXRlLT5jcnRjID86IG9sZF9wbGFuZV9zdGF0ZS0+Y3J0YzsKPiA+ID4gPj4+IC0JY29uc3Qg c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiA+ID4gPj4+IC0Jc3RydWN0 IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiA+ID4gPj4+IC0KPiA+ID4gPj4+IC0J bmV3X3BsYW5lX3N0YXRlLT52aXNpYmxlID0gZmFsc2U7Cj4gPiA+ID4+PiArCXN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlID0KPiA+ID4gPj4+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0 ZShuZXdfZHJtX3BsYW5lX3N0YXRlLT5zdGF0ZSk7Cj4gPiA+ID4+PiArCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShkcm1fcGxhbmUpOwo+ID4gPiA+Pj4gKwljb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9Cj4gPiA+ID4+PiAr CQlpbnRlbF9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+ID4gPiA+ Pj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSA9Cj4gPiA+ID4+ PiArCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfZHJtX3BsYW5lX3N0YXRlKTsKPiA+ID4gPj4+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKAo+ID4gPiA+Pj4gKwkJ bmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGMgPzoKPiA+ID4gPj4+ICsJCW9sZF9wbGFuZV9zdGF0 ZS0+YmFzZS5jcnRjKTsKPiA+ID4gPj4+ICsJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlOwo+ID4gPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGU7Cj4gPiA+ID4+PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0gb2xk X3BsYW5lX3N0YXRlLT5saW5rZWRfcGxhbmU7Cj4gPiA+ID4+PiArCWludCByZXQ7Cj4gPiA+ID4+ PiArCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX2xpbmtlZF9zdGF0ZTsKPiA+ ID4gPj4+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfbGlua2VkX3N0YXRlID0gTlVM TDsKPiA+ID4gPj4+ICsKPiA+ID4gPj4+ICsJaWYgKGxpbmtlZCkgewo+ID4gPiA+Pj4gKwkJLyoK PiA+ID4gPj4+ICsJCSogTWFrZSBzdXJlIGEgcHJldmlvdXNseSBsaW5rZWQgcGxhbmUgKGFuZCBp bXBsaWNpdGx5LCB0aGUgQ1JUQykKPiA+ID4gPj4+ICsJCSogaXMgcGFydCBvZiB0aGUgYXRvbWlj IGNvbW1pdC4KPiA+ID4gPj4+ICsJCSovCj4gPiA+ID4+PiArCQlpZiAoIWludGVsX2F0b21pY19n ZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBsaW5rZWQpKSB7Cj4gPiA+ID4+PiArCQkJbmV3X2xp bmtlZF9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIGxpbmtlZCk7 Cj4gPiA+ID4+PiArCQkJaWYgKElTX0VSUihuZXdfbGlua2VkX3N0YXRlKSkKPiA+ID4gPj4+ICsJ CQkJcmV0dXJuIFBUUl9FUlIobmV3X2xpbmtlZF9zdGF0ZSk7Cj4gPiA+ID4+PiArCQl9Cj4gPiA+ ID4+PiArCj4gPiA+ID4+PiArCQlvbGRfbGlua2VkX3N0YXRlID0KPiA+ID4gPj4+ICsJCQlpbnRl bF9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgbGlua2VkKTsKPiA+ID4gPj4+ICsK PiA+ID4gPj4+ICsJCS8qCj4gPiA+ID4+PiArCQkgKiBUaGlzIHdpbGwgaGFwcGVuIHdoZW4gd2Un cmUgdGhlIFkgcGxhbmUuIEluIHdoaWNoIGNhc2UKPiA+ID4gPj4+ICsJCSAqIG9sZC9uZXdfc3Rh dGUtPmNydGMgYXJlIGJvdGggTlVMTC4gV2Ugc3RpbGwgbmVlZCB0byBwZXJmb3JtCj4gPiA+ID4+ PiArCQkgKiB1cGRhdGVzIG9uIHRoZSBsaW5rZWQgcGxhbmUuCj4gPiA+ID4+PiArCQkgKi8KPiA+ ID4gPj4+ICsJCWlmICghY3J0YykKPiA+ID4gPj4+ICsJCQljcnRjID0gdG9faW50ZWxfY3J0Yyhv bGRfbGlua2VkX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4gPiA+Pj4gKwo+ID4gPiA+Pj4gKwkJV0FS Tl9PTighY3J0Yyk7Cj4gPiA+ID4+PiArCX0KPiA+ID4gPj4+ICsKPiA+ID4gPj4+ICsJbmV3X3Bs YW5lX3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPiA+ID4gPj4+ICAJaWYgKCFjcnRjKQo+ ID4gPiA+Pj4gIAkJcmV0dXJuIDA7Cj4gPiA+ID4+PiAgCj4gPiA+ID4+PiAtCW9sZF9jcnRjX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ID4gPiA+ Pj4gLQluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKPiA+ID4gPj4+ICsJb2xkX2NydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X29s ZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+ID4gPj4+ICsJbmV3X2NydGNfc3RhdGUgPSBp bnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+ID4gPj4+ICsK PiA+ID4gPj4+ICsJaWYgKG5ld19saW5rZWRfc3RhdGUgJiYKPiA+ID4gPj4+ICsJICAgIGRybV9w bGFuZV9pbmRleCgmbGlua2VkLT5iYXNlKSA8IGRybV9wbGFuZV9pbmRleCgmcGxhbmUtPmJhc2Up KSB7Cj4gPiA+ID4+PiArCQkvKgo+ID4gPiA+Pj4gKwkJICogVGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgZnJvbSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZXMoKSwgd2hpY2gKPiA+ID4gPj4+ ICsJCSAqIHdpbGwgbm9ybWFsbHkgY2hlY2sgdGhlIG5ld2x5IGFkZGVkIHBsYW5lIGZvciB1cywg YnV0IHNpbmNlIHdlJ3JlCj4gPiA+ID4+PiArCQkgKiBhbHJlYWR5IGluIHRoYXQgZnVuY3Rpb24s IGl0IHdvbid0IGNoZWNrIHRoZSBwbGFuZSBpZiBvdXIgaW5kZXgKPiA+ID4gPj4+ICsJCSAqIGlz IGJpZ2dlciB0aGFuIHRoZSBsaW5rZWQgaW5kZXggYmVjYXVzZSBvZiB0aGUKPiA+ID4gPj4+ICsJ CSAqIGZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZSgpIGNhbGwuCj4gPiA+ID4+PiArCQkg Ki8KPiA+ID4gPj4+ICsJCW5ld19jcnRjX3N0YXRlLT5iYXNlLnBsYW5lc19jaGFuZ2VkID0gdHJ1 ZTsKPiA+ID4gPj4+ICsJCXJldCA9IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRl KG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwKPiA+ID4gPj4+ICsJCQkJCQkJICBvbGRf bGlua2VkX3N0YXRlLCBuZXdfbGlua2VkX3N0YXRlKTsKPiA+ID4gPj4+ICsJCWlmIChyZXQpCj4g PiA+ID4+PiArCQkJcmV0dXJuIHJldDsKPiA+ID4gPj4+ICsJfQo+ID4gPiA+PiBUaGlzIGlzIGFs bCByYXRoZXIgY29uZnVzaW5nLiBDYW4ndCB3ZSBqdXN0IGRvIGEgcHJlcHJvY2Vzc2luZyBzdGVw Cj4gPiA+ID4+IGJlZm9yZSBjaGVja19wbGFuZXMoKSB0byBhZGQgdGhlIGxpbmtlZCBwbGFuZXMg YXMgbmVlZGVkLCBhbmQgdGhlbgo+ID4gPiA+PiBsZXQgdGhlIG5vcm1hbCBjaGVja19wbGFuZXMo KSBkbyBpdHMgdGhpbmc/Cj4gPiA+ID4gQWxzbyBvbmUgdGhpbmcgdGhhdCBzbGlnaHRseSB3b3Jy aWVzIG1lIGlzIHdoYXQgaGFwcGVucyBpZiBzb21lb25lIGFkZHMKPiA+ID4gPiBtb3JlIHBsYW5l cyB0byB0aGUgc3RhdGUgYWZ0ZXIgdGhpcyBoYXMgYWxsIGJlZW4gZG9uZS4gSSBndWVzcwo+ID4g PiA+IGN1cnJlbnRseSB0aG9zZSBjYXNlcyB3b3VsZCBlaXRoZXIgY29tZSBmcm9tIHRoZSB0YWls IGVuZCBvZgo+ID4gPiA+IGludGVsX2F0b21pY19jaGVjaygpIG9yIGZyb20gaW50ZWxfY3J0Y19h dG9taWNfY2hlY2soKS4gQ3VycmVudGx5IGl0Cj4gPiA+ID4gd291bGQgYXBwZWFyIHRoYXQgd20v ZGRiIGlzIHRoZSBvbmx5IHBpZWNlIG9mIGNvZGUgdGhhdCBjYW4gZG8gdGhpcwo+ID4gPiA+IHNv cnQgb2YgdGhpbmcuCj4gPiA+IEkgdGhpbmsgdGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBhbmQgV00g aXMgc3BlY2lhbC4gVGhlIG9ubHkgdGltZSB3aGVyZSB5b3Ugd2FudCB0byBhZGQgbW9yZSBwbGFu ZXMgaXMgYmVmb3JlIGNoZWNrX3BsYW5lcygpLgo+ID4gPiBPdGhlcndpc2UgeW91IGNhbid0IHJl cnVuIGFueSB2YWxpZGF0aW9uIGFzIHJlcXVpcmVkLgo+ID4gCj4gPiBZb3Ugc2hvdWxkbid0IG5l ZWQgdmFsaWRhdGlvbiBmb3IgZWcuIGRwbXMgb24vb2ZmLiBJIGd1ZXNzIHdlIGN1cnJlbnRseQo+ ID4gZG8gdGhhdCBhbHRob3VnaCB3ZSBzaG91bGRuJ3QgaGF2ZSB0by4KPiA+IAo+ID4gPiAKPiA+ ID4gSSd2ZSBub3cgYWRkZWQgYSBmdW5jdGlvbiBpY2xfYWRkX2xpbmtlZF9wbGFuZXMgaGVscGVy IHRoYXQgaXRlcmF0ZXMgb3ZlciBhbGwgcGxhbmVzIGluCj4gPiA+IHRoZSBzdGF0ZSwgYW5kIGFk ZHMgYW55IGxpbmtlZCBwbGFuZXMgdG8gdGhlIHRyYW5zYWN0aW9uLgo+ID4gPiAKPiA+ID4gVGhp cyBpcyBydW4gcmlnaHQgYmVmb3JlIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcygpLCBz byB3ZSdyZSBzdXJlIHRoYXQgYWxsIGxpbmtlZAo+ID4gPiBwbGFuZXMgYXJlIGFkZGVkLCB3aXRo b3V0IGRvaW5nIGl0IGZyb20gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKCkKPiA+ID4gCj4gPiA+ IFdNIHdpbGwgY29udGludWUgdG8gZG8gaXRzIG93biB0aGluZywgc2luY2UgaXQncyBhIGRlc2ln biBlcnJvciBJTU8gdGhhdCBpdCBldmVuIGFkZHMKPiA+ID4gcGxhbmVzIHRvIHRoZSBzdGF0ZSB0 byBiZWdpbiB3aXRoLiA6KQo+ID4gCj4gPiBJdCBwcmV0dHkgbXVjaCBoYXMgdG8uIFRoZSBkZXNp Z24gZXJyb3Igd2UgaGF2ZSBhdCB0aGUgbW9tZW50IGlzIG5vdAo+ID4gcHJvZ3JhbW1pbmcgdGhl IHdhdGVybWFya3MgZnJvbSB0aGUgdXBkYXRlX3BsYW5lKCkvZGlzYWJsZV9wbGFuZSgpLgo+ID4g VGhhdCBvbmUgSSd2ZSBhdHRlbXB0ZWQgdG8gZml4IGluOgo+ID4gZ2l0Oi8vZ2l0aHViLmNvbS92 c3lyamFsYS9saW51eC5naXQgc2tsX3BsYW5lX3VwZGF0ZV9kZGJfc2VxdWVuY2UKPiA+IAo+ID4g QW5kIHN1cHBvc2VkbHkgdGhhdCBvbmUgZG9lcyBmaXggYnVncyByZWxhdGVkIHRvIHdhdGVybWFy a3MgdnMuCj4gPiBwbGFuZSB1cGRhdGVzLgo+IAo+IFdoZXJlIGRpZCB0aGUgYnVncyBhcmlzZT8g IFdlcmUgd2UgdW5zdWNjZXNzZnVsIGF0IGFjdHVhbGx5IGV2YWRpbmcgdGhlCj4gdmJsYW5rIChs ZWFkaW5nIHRvIHRoZSBwbGFuZXMgYW5kIHdhdGVybWFya3MgdGFraW5nIGVmZmVjdCBvbiBkaWZm ZXJlbnQKPiB2YmxhbmtzKSBvciBpcyBpdCBzb21ldGhpbmcgZWxzZT8KClRoZXJlIGFyZSBhIGZl dyBpc3N1ZXMgaGVyZToKLSB3cml0ZSB0byBhbnkgcGxhbmUgcmVnaXN0ZXJzIGFwYXJ0IGZyb20g U1VSRiB3aWxsIGNhbmNlbCBhbiBhbHJlYWR5CiAgcGVuZGluZyBwbGFuZSB1cGRhdGUuIFdlbGws IGl0J3Mgbm90IDEwMCUgY2FuY2VsbGVkIGFzIHNvbWUgcmVnaXN0ZXJzCiAgYXJlbid0IHBhcnQg b2YgdGhlIFNVUkYgYmFzZWQgYXJtaW5nIG1lY2hhbmlzbSBidXQgSUlSQyB0aGV5IHN0aWxsCiAg Y2F1c2UgYSBjYW5jZWxsYXRpb24uIFRoaXMgbWVhbnMgZG9pbmcgYSB3YXRlcm1hcmsgdXBkYXRl IGJlZm9yZSBhCiAgcGVuZGluZyBwbGFuZSB1cGRhdGUgd2FzIGxhdGNoZWQgY2FuY2VscyBtb3N0 IG9mIHRoZSBwbGFuZSB1cGRhdGUuCiAgVGhpcyBhdCBsZWFzdCBjYXVzZWQgdGhlIGN1cnNvciB0 byByZW1haW4gb24gaW4gd2hlbiBpdCBzaG91bGQgaGF2ZQogIGJlZW4gdHVybmVkIG9mZi4KLSBv dmVybGFwcGluZyBEREIgYWxsb2NhdGlvbnMgY2FuIGhhcmQgaGFuZyB0aGUgYm94LiBTbyBhbnkg dmJsYW5rIHRoYXQKICBzbmVha3MgaW4gd2hpbGUgd2UndmUgcGFydGlpYWxseSByZXByb2dyYW1t ZWQgdGhlIGRkYiBjb3VsZCBiZSBhCiAgZGVhdGggc2VudGVuY2UuIEEgc3VnZ2VzdGVkIHNvbHV0 aW9uIHdhcyB0byB0dXJuIG9mZiB0aGUgcGxhbmVzCiAgYmVmb3JlIGRkYiByZXByb2dyYW1taW5n IGJ1dCB0aGF0IGRpZG4ndCB3b3JrIG91dCBzbyB3ZWxsIHdoZW4gSQogIHRyaWVkIGl0IGR1ZSB0 byB0aGUgd2hvbGUgY2FuY2VsbGF0aW9uIHRoaW5nLgoKU28gSSBwdWxsZWQgaW4gdGhlIGRkYi93 bSBwcm9ncmFtbWluZyBpbnRvIHRoZSBub3JtYWwgcGxhbmUgdXBkYXRlLgpUaGF0IG1lYW5zIG5v IG1vcmUgYWNjaWRlbnRhbCBjYW5jZWxsYXRpb25zIGZyb20gZWxzZXdoZXJlLgoKQW5kIHRvIGF2 b2lkIGFueSBkZGIgb3ZlcmxhcHMgd2Ugc2ltcGx5IHNlcXVlbmNlIHRoZSBwbGFuZSB1cGRhdGVz CmNhcmVmdWxseS4gSXQncyBwcmV0dHkgbXVjaCB0aGUgc2FtZSBhbGdvcml0aG0gdGhhdCB3ZSB1 c2UgdG8gYXZvaWQKZGRiIG92ZXJsYXBzIGJldHdlZW4gcGlwZXMsIHdpdGggdGhlIGV4Y2VwdGlv biB0aGF0IHdlIGRvbid0IG5lZWQgdGhlCnZibGFuayB3YWl0cy4gU28gaWYgYSB2YmxhbmsgZG9l cyBzbmVhayBhdCBhbnkgcG9pbnQgZHVyaW5nIHRoZQpzZXF1ZW5jZSB3ZSBjYW4gYmUgYXNzdXJl ZCB0aGF0IHRoZSBwYXJ0aWFsbHkgbGF0Y2hlZCBzdGF0ZSBkb2VzIG5vdApoYXZlIGFueSBvdmVy bGFwcGluZyBkZGIgYWxsb2NhdGlvbnMuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=