From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/8] drm: Add drm_for_each_connector_encoder_ids() Date: Thu, 28 Jun 2018 08:04:10 +0200 Message-ID: <20180628060410.GK13978@phenom.ffwll.local> References: <20180626174714.32012-1-ville.syrjala@linux.intel.com> <20180626174714.32012-4-ville.syrjala@linux.intel.com> <20180627090848.GG13978@phenom.ffwll.local> <20180627091157.GH13978@phenom.ffwll.local> <20180627150739.GF20518@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 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 6EA546EB9F for ; Thu, 28 Jun 2018 06:04:14 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id g12-v6so4413052edi.9 for ; Wed, 27 Jun 2018 23:04:14 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180627150739.GF20518@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdW4gMjcsIDIwMTggYXQgMDY6MDc6MzlQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgSnVuIDI3LCAyMDE4IGF0IDExOjExOjU3QU0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBXZWQsIEp1biAyNywgMjAxOCBhdCAxMTowODo0OEFNICsw MjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUdWUsIEp1biAyNiwgMjAxOCBhdCAw ODo0NzowOVBNICswMzAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ID4gPiA+IEZyb206IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gCj4gPiA+ ID4gQWRkIGEgY29udmVuaWVuY2UgbWFjcm8gZm9yIGl0ZXJhdGluZyBjb25uZWN0b3ItPmVuY29k ZXJfaWRzW10uCj4gPiA+ID4gSXNvbGF0ZXMgdGhlIHVzZXJzIGZyb20gdGhlIGltcGxlbWVudGF0 aW9uIGRldGFpbHMuCj4gPiA+ID4gCj4gPiA+ID4gQWxzbyB1c2UgQVJSQVlfU0laRSgpIHdoZW4g cG9wdWxhdGluZyB0aGUgYXJyYXkgdG8gYXZvaWQgc3ByZWFkaW5nCj4gPiA+ID4ga25vd2xlZGdl IGFib3V0IHRoZSBhcnJheSBzaXplIGFsbCBvdmVyLgo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1v ZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g PiA+ID4gLS0tCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgICAgfCAy MiArKysrKysrKysrLS0tLS0tLS0tLS0tCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMgICAgfCAgNiArKystLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9wcm9i ZV9oZWxwZXIuYyB8ICA5ICsrKysrLS0tLQo+ID4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY29ubmVj dG9yLmggICAgICAgIHwgMTEgKysrKysrKysrKysKPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAy OSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKPiA+ID4gPiAKPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fY29ubmVjdG9yLmMKPiA+ID4gPiBpbmRleCAyZjllYmRkZDE3OGUuLmM0MzY0NmNiODE0NSAx MDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ID4gPiA+IEBAIC0zMjEs NyArMzIxLDcgQEAgaW50IGRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ICAJaWYgKFdBUk5fT04oY29ubmVjdG9y LT5lbmNvZGVyKSkKPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiAgCj4gPiA+ID4g LQlmb3IgKGkgPSAwOyBpIDwgRFJNX0NPTk5FQ1RPUl9NQVhfRU5DT0RFUjsgaSsrKSB7Cj4gPiA+ ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb25uZWN0b3ItPmVuY29kZXJfaWRzKTsg aSsrKSB7Cj4gPiA+ID4gIAkJaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbaV0gPT0gMCkgewo+ ID4gPiA+ICAJCQljb25uZWN0b3ItPmVuY29kZXJfaWRzW2ldID0gZW5jb2Rlci0+YmFzZS5pZDsK PiA+ID4gPiAgCQkJcmV0dXJuIDA7Cj4gPiA+ID4gQEAgLTE2OTMsNiArMTY5Myw3IEBAIGludCBk cm1fbW9kZV9nZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiA+ID4gPiAgCWludCBlbmNvZGVyc19jb3VudCA9IDA7Cj4gPiA+ID4gIAlpbnQgcmV0ID0gMDsK PiA+ID4gPiAgCWludCBjb3BpZWQgPSAwOwo+ID4gPiA+ICsJdTMyIGVuY29kZXJfaWQ7Cj4gPiA+ ID4gIAlpbnQgaTsKPiA+ID4gPiAgCXN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyB1X21vZGU7Cj4g PiA+ID4gIAlzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gX191c2VyICptb2RlX3B0cjsKPiA+ID4g PiBAQCAtMTcwOCwyMiArMTcwOSwxOSBAQCBpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9yKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gPiA+ID4gIAlpZiAoIWNvbm5lY3RvcikK PiA+ID4gPiAgCQlyZXR1cm4gLUVOT0VOVDsKPiA+ID4gPiAgCj4gPiA+ID4gLQlmb3IgKGkgPSAw OyBpIDwgRFJNX0NPTk5FQ1RPUl9NQVhfRU5DT0RFUjsgaSsrKQo+ID4gPiA+IC0JCWlmIChjb25u ZWN0b3ItPmVuY29kZXJfaWRzW2ldICE9IDApCj4gPiA+ID4gLQkJCWVuY29kZXJzX2NvdW50Kys7 Cj4gPiA+ID4gKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2VuY29kZXJfaWRzKGNvbm5lY3Rvciwg ZW5jb2Rlcl9pZCwgaSkKPiA+ID4gPiArCQllbmNvZGVyc19jb3VudCsrOwo+ID4gPiA+ICAKPiA+ ID4gPiAgCWlmICgob3V0X3Jlc3AtPmNvdW50X2VuY29kZXJzID49IGVuY29kZXJzX2NvdW50KSAm JiBlbmNvZGVyc19jb3VudCkgewo+ID4gPiA+ICAJCWNvcGllZCA9IDA7Cj4gPiA+ID4gIAkJZW5j b2Rlcl9wdHIgPSAodWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpKG91dF9yZXNwLT5l bmNvZGVyc19wdHIpOwo+ID4gPiA+IC0JCWZvciAoaSA9IDA7IGkgPCBEUk1fQ09OTkVDVE9SX01B WF9FTkNPREVSOyBpKyspIHsKPiA+ID4gPiAtCQkJaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNb aV0gIT0gMCkgewo+ID4gPiA+IC0JCQkJaWYgKHB1dF91c2VyKGNvbm5lY3Rvci0+ZW5jb2Rlcl9p ZHNbaV0sCj4gPiA+ID4gLQkJCQkJICAgICBlbmNvZGVyX3B0ciArIGNvcGllZCkpIHsKPiA+ID4g PiAtCQkJCQlyZXQgPSAtRUZBVUxUOwo+ID4gPiA+IC0JCQkJCWdvdG8gb3V0Owo+ID4gPiA+IC0J CQkJfQo+ID4gPiA+IC0JCQkJY29waWVkKys7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCWRybV9mb3Jf ZWFjaF9jb25uZWN0b3JfZW5jb2Rlcl9pZHMoY29ubmVjdG9yLCBlbmNvZGVyX2lkLCBpKSB7Cj4g PiA+ID4gKwkJCWlmIChwdXRfdXNlcihlbmNvZGVyX2lkLCBlbmNvZGVyX3B0ciArIGNvcGllZCkp IHsKPiA+ID4gPiArCQkJCXJldCA9IC1FRkFVTFQ7Cj4gPiA+ID4gKwkJCQlnb3RvIG91dDsKPiA+ ID4gPiAgCQkJfQo+ID4gPiA+ICsJCQljb3BpZWQrKzsKPiA+ID4gPiAgCQl9Cj4gPiA+ID4gIAl9 Cj4gPiA+ID4gIAlvdXRfcmVzcC0+Y291bnRfZW5jb2RlcnMgPSBlbmNvZGVyc19jb3VudDsKPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiA+ID4gPiBpbmRleCA2MWMzOWNkNzVhMjcuLmUw ODZiMDg3NDhmNCAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hl bHBlci5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4g PiA+IEBAIC0yMzI2LDEyICsyMzI2LDEyIEBAIHN0YXRpYyBib29sIGRybV90YXJnZXRfcHJlZmVy cmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gPiA+ID4gIHN0YXRpYyBib29s IGNvbm5lY3Rvcl9jcnRjX29rKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ ID4gIAkJCSAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ID4gPiAgewo+ID4gPiA+ICsJ dTMyIGVuY29kZXJfaWQ7Cj4gPiA+ID4gIAlpbnQgaTsKPiA+ID4gPiAgCj4gPiA+ID4gLQlmb3Ig KGkgPSAwOyBpIDwgRFJNX0NPTk5FQ1RPUl9NQVhfRU5DT0RFUjsgaSsrKSB7Cj4gPiA+ID4gKwlk cm1fZm9yX2VhY2hfY29ubmVjdG9yX2VuY29kZXJfaWRzKGNvbm5lY3RvciwgZW5jb2Rlcl9pZCwg aSkgewo+ID4gPiA+ICAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9Cj4gPiA+ID4gLQkJ CWRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsCj4gPiA+ID4gLQkJCQkJIGNv bm5lY3Rvci0+ZW5jb2Rlcl9pZHNbaV0pOwo+ID4gPiA+ICsJCQlkcm1fZW5jb2Rlcl9maW5kKGNv bm5lY3Rvci0+ZGV2LCBOVUxMLCBlbmNvZGVyX2lkKTsKPiA+ID4gPiAgCj4gPiA+ID4gIAkJaWYg KGVuY29kZXItPnBvc3NpYmxlX2NydGNzICYgZHJtX2NydGNfbWFzayhjcnRjKSkKPiA+ID4gPiAg CQkJcmV0dXJuIHRydWU7Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJvYmVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4gPiA+ ID4gaW5kZXggNTI3NzQzMzk0MTUwLi4wMjM5Zjc2YzUyZmIgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKPiA+ID4gPiBAQCAtODgsOSArODgsOSBAQCBkcm1f bW9kZV92YWxpZGF0ZV9waXBlbGluZShzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ ID4gPiAgCQkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ID4gIHsK PiA+ID4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiA+ID4g PiAtCXVpbnQzMl90ICppZHMgPSBjb25uZWN0b3ItPmVuY29kZXJfaWRzOwo+ID4gPiA+ICAJZW51 bSBkcm1fbW9kZV9zdGF0dXMgcmV0ID0gTU9ERV9PSzsKPiA+ID4gPiAtCXVuc2lnbmVkIGludCBp Owo+ID4gPiA+ICsJdTMyIGVuY29kZXJfaWQ7Cj4gPiA+ID4gKwlpbnQgaTsKPiA+ID4gPiAgCj4g PiA+ID4gIAkvKiBTdGVwIDE6IFZhbGlkYXRlIGFnYWluc3QgY29ubmVjdG9yICovCj4gPiA+ID4g IAlyZXQgPSBkcm1fY29ubmVjdG9yX21vZGVfdmFsaWQoY29ubmVjdG9yLCBtb2RlKTsKPiA+ID4g PiBAQCAtOTgsOCArOTgsOSBAQCBkcm1fbW9kZV92YWxpZGF0ZV9waXBlbGluZShzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gPiA+ICAKPiA+ ID4gPiAgCS8qIFN0ZXAgMjogVmFsaWRhdGUgYWdhaW5zdCBlbmNvZGVycyBhbmQgY3J0Y3MgKi8K PiA+ID4gPiAtCWZvciAoaSA9IDA7IGkgPCBEUk1fQ09OTkVDVE9SX01BWF9FTkNPREVSOyBpKysp IHsKPiA+ID4gPiAtCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSBkcm1fZW5jb2Rlcl9m aW5kKGRldiwgTlVMTCwgaWRzW2ldKTsKPiA+ID4gPiArCWRybV9mb3JfZWFjaF9jb25uZWN0b3Jf ZW5jb2Rlcl9pZHMoY29ubmVjdG9yLCBlbmNvZGVyX2lkLCBpKSB7Cj4gPiA+ID4gKwkJc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyID0KPiA+ID4gPiArCQkJZHJtX2VuY29kZXJfZmluZChkZXYs IE5VTEwsIGVuY29kZXJfaWQpOwo+ID4gPiA+ICAJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ ID4gPiAgCj4gPiA+ID4gIAkJaWYgKCFlbmNvZGVyKQo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ ID4gPiBpbmRleCAxNGFiNThhZGU4N2YuLjRhMDM2M2Y3ZGQ4YyAxMDA2NDQKPiA+ID4gPiAtLS0g YS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiArKysgYi9pbmNsdWRlL2RybS9k cm1fY29ubmVjdG9yLmgKPiA+ID4gPiBAQCAtMTE5Myw0ICsxMTkzLDE1IEBAIHZvaWQgZHJtX2Nv bm5lY3Rvcl9saXN0X2l0ZXJfZW5kKHN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciAqaXRl cik7Cj4gPiA+ID4gICNkZWZpbmUgZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3Rv ciwgaXRlcikgXAo+ID4gPiA+ICAJd2hpbGUgKChjb25uZWN0b3IgPSBkcm1fY29ubmVjdG9yX2xp c3RfaXRlcl9uZXh0KGl0ZXIpKSkKPiA+ID4gPiAgCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBk cm1fZm9yX2VhY2hfY29ubmVjdG9yX2VuY29kZXJfaWRzIC0gaXRlcmF0ZSBjb25uZWN0b3IgZW5j b2Rlcl9pZHNbXQo+ID4gPiAKPiA+ID4gJmRybV9jb25uZWN0b3IuZW5jb2Rlcl9pZHMgd291bGQg Z2l2ZSB5b3UgYSAoZmFpcmx5IGRpcmVjdCkgbGluay4gSnVzdCBhCj4gPiA+IG5pdHBpY2suCj4g PiA+IAo+ID4gPiBXcnQgdGhlIGFwaTogSSB0aGluayBpbmNsdWRpbmcgdGhlIGRybV9lbmNvZGVy X2ZpbmQgd291bGQgYmUgdXNlZnVsIGhlcmUgLQo+ID4gPiBpdCdzIHdoYXQgMi8zIHVzZXJzIHdh bnQgYW55d2F5LCBhbmQgdGhlIGlvY3RsIGNhbiBlYXNpbHkgbG9vayB1cCB0aGUgaWQKPiA+ID4g YWdhaW4gYnkgZm9sbG93aW5nIGVuY29kZXItPmJhc2UuaWQuIEFuZCB0aGVuIG1heWJlIGNhbGwg dGhlIGZ1bmN0aW9uIGEKPiA+ID4gYml0IGRpZmZlcmVudGx5LCBJIHRoaW5rIHVzdWFsbHkgd2Ug Z28gd2l0aAo+ID4gPiAkcGFyZW50X29iamVjdF9mb3JfZWFjaF8kaXRlcmF0ZWRfdGhpbmcsIHNv Cj4gPiA+IGRybV9jb25uZWN0b3JfZm9yX2VhY2hfZW5jb2RlcigpLiBUaGVyZSdzIGFsc28gdGhl Cj4gPiA+IGZvcl9lYWNoXyR0aGluZ19pbl8kcGFyZW50X29iamVjdCBwYXR0ZXJuICh1c2VkIGZv ciBhdG9taWMgc3RhdGVzKSwgYnV0IEkKPiA+ID4gdGhpbmsgdGhhdCdzIGxlc3MgZml0dGluZyBo ZXJlLgo+ID4gPiAKPiA+ID4gQXBvbG9naWVzIGZvciB0aGUgaW50ZXJmYWNlIGJpa2VzaGVkZGlu ZyAuLi4KPiA+IAo+ID4gTG9va2luZyBhdCBhbGwgdGhlIHBhdGNoZXMgaXQncyAxNSBwbGFjZXMg dGhhdCB3YW50IHRoZSBkcm1fZW5jb2Rlcl9maW5kCj4gPiBpbnRlZ3JhdGVkIHZzLiA0IHRoYXQg ZG9uJ3Qgd2FudCBpdCAod2l0aG91dCBmdXJ0aGVyIHJlZmFjdG9yaW5nKS4gU28gZXZlbgo+ID4g bW9yZSByZWFzb25zIGZvciBkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX2VuY29kZXIgaW1vLgo+IAo+ IEkgaGFkIHRoYXQgc2FtZSB0aG91Z2h0IGluaXRpYWxseSwgYnV0IHRoZW4gZm9yZ290IGFib3V0 IGl0IGZvcgo+IHNvbWUgcmVhc29uLiBJdCBkb2VzIGluZGVlZCBsZWFkIHRvIGFuIGV2ZW4gbmVh dGVyIHJlc3VsdC4KPiAKPiBBbHRob3VnaCBpdCBzaG91bGQgYmUgc29tZXdoYXQgb2J2aW91cyB0 aGF0IHRoZXJlIGNhbiBvbmx5IGJlIG9uZQo+IGN1cnJlbnRseSB1c2VkIGVuY29kZXIgZm9yIGEg Y29ubmVjdG9yLCBJIHRoaW5rIHdlIG1heSB3YW50IHRvIG5hbWUKPiB0aGlzIGVnLiBkcm1fY29u bmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoKSB0byBtYWtlIGl0IHN1cGVyCj4gY2xl YXIgd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0LgoKWWVhaCwgdGhhdCBzb3VuZHMgbGlrZSBhbiBl dmVuIGJldHRlciBuYW1lLgotRGFuaWVsCgo+IAo+ID4gLURhbmllbAo+ID4gCj4gPiA+IC1EYW5p ZWwKPiA+ID4gCj4gPiA+ID4gKyAqIEBjb25uZWN0b3I6ICZzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBw b2ludGVyIHVzZWQgYXMgY3Vyc29yCj4gPiA+ID4gKyAqIEBlbmNvZGVyX2lkOiB0aGUgZW5jb2Rl ciBJRAo+ID4gPiA+ICsgKiBAX19pOiBpbnQgaXRlcmF0aW9uIGN1cnNvciwgZm9yIG1hY3JvLWlu dGVybmFsIHVzZQo+ID4gPiA+ICsgKi8KPiA+ID4gPiArI2RlZmluZSBkcm1fZm9yX2VhY2hfY29u bmVjdG9yX2VuY29kZXJfaWRzKGNvbm5lY3RvciwgZW5jb2Rlcl9pZCwgX19pKSBcCj4gPiA+ID4g Kwlmb3IgKChfX2kpID0gMDsgKF9faSkgPCBBUlJBWV9TSVpFKChjb25uZWN0b3IpLT5lbmNvZGVy X2lkcykgJiYgXAo+ID4gPiA+ICsJCSAgICAgKGNvbm5lY3RvciktPmVuY29kZXJfaWRzWyhfX2kp XSAhPSAwOyAoX19pKSsrKSBcCj4gPiA+ID4gKwkJZm9yX2VhY2hfaWYoKGVuY29kZXJfaWQpID0g KGNvbm5lY3RvciktPmVuY29kZXJfaWRzWyhfX2kpXSkKPiA+ID4gPiArCj4gPiA+ID4gICNlbmRp Zgo+ID4gPiA+IC0tIAo+ID4gPiA+IDIuMTYuNAo+ID4gPiA+IAo+ID4gPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gZHJpLWRldmVsIG1h aWxpbmcgbGlzdAo+ID4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4g PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo+ID4gPiAKPiA+ID4gLS0gCj4gPiA+IERhbmllbCBWZXR0ZXIKPiA+ID4gU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiA+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4gPiAK PiA+IC0tIAo+ID4gRGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCj4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAo+IAo+IC0tIAo+IFZpbGxlIFN5cmrD pGzDpAo+IEludGVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==