From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v2 03/12] drm/i915: Convert connector checking to atomic. Date: Tue, 28 Jul 2015 16:13:43 +0300 Message-ID: <1438089223.2727.17.camel@gmail.com> References: <1438000541-3219-1-git-send-email-maarten.lankhorst@linux.intel.com> <1438000541-3219-4-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f46.google.com (mail-pa0-f46.google.com [209.85.220.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1BCF36E584 for ; Tue, 28 Jul 2015 06:13:44 -0700 (PDT) Received: by pachj5 with SMTP id hj5so69802254pac.3 for ; Tue, 28 Jul 2015 06:13:43 -0700 (PDT) In-Reply-To: <1438000541-3219-4-git-send-email-maarten.lankhorst@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 T24gTW9uLCAyMDE1LTA3LTI3IGF0IDE0OjM1ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAg fCAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA3OSArKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oICAgICB8ICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jICAgICB8 ICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyAgICB8ICAyIC0KIDUgZmls ZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3J0LmMKaW5kZXggNWQ3OGMxZmVlYzgxLi45ZWJhM2RkNWI0MzQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NydC5jCkBAIC0yODAsOCArMjgwLDYgQEAgc3RhdGljIGludCBpbnRlbF9j cnRfZHBtcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBpbnQgbW9kZSkKIAkJaW50 ZWxfY3J0Y191cGRhdGVfZHBtcyhjcnRjKTsKIAl9CiAKLQlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0 YXRlKGNvbm5lY3Rvci0+ZGV2KTsKLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKaW5kZXggM2FiMGE4YThlNzAyLi5iYTBiNjhhNDIwOWQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTYzNjAsNDIgKzYzNjAsMzMgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZW5jb2Rlcl9kcG1zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgbW9kZSkKICAqIGludGVybmFsIGNvbnNpc3RlbmN5KS4gKi8KIHN0YXRpYyB2b2lkIGludGVs X2Nvbm5lY3Rvcl9jaGVja19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip CiB7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY29ubmVjdG9yLT5iYXNlLnN0YXRlLT5jcnRj OworCisJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCisJCSAgICAgIGNvbm5l Y3Rvci0+YmFzZS5iYXNlLmlkLAorCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSk7CisKIAlp ZiAoY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUoY29ubmVjdG9yKSkgewotCQlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsKLQkJc3RydWN0IGRybV9jcnRj ICpjcnRjOwotCQlib29sIGVuY29kZXJfZW5hYmxlZDsKLQkJZW51bSBwaXBlIHBpcGU7CisJCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZjb25uZWN0b3ItPmVuY29kZXItPmJhc2U7CisJ CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlID0gY29ubmVjdG9yLT5iYXNl LnN0YXRlOwogCi0JCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4iLAotCQkJICAg ICAgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCi0JCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFt ZSk7CisJCUk5MTVfU1RBVEVfV0FSTighY3J0YywKKwkJCSAiY29ubmVjdG9yIGVuYWJsZWQgd2l0 aG91dCBhdHRhY2hlZCBjcnRjXG4iKTsKIAotCQkvKiB0aGVyZSBpcyBubyByZWFsIGh3IHN0YXRl IGZvciBNU1QgY29ubmVjdG9ycyAqLwotCQlpZiAoY29ubmVjdG9yLT5tc3RfcG9ydCkKClNob3Vs ZCB0aGUgYWJvdmUgZGVsZXRpb24gYmUgcGFydCBvZiB0aGUgcHJldmlvdXMgcGF0Y2g/Cgo+ICsJ CWlmICghY3J0YykKIAkJCXJldHVybjsKIAotCQlJOTE1X1NUQVRFX1dBUk4oY29ubmVjdG9yLT5i YXNlLmRwbXMgPT0gRFJNX01PREVfRFBNU19PRkYsCi0JCSAgICAgIndyb25nIGNvbm5lY3RvciBk cG1zIHN0YXRlXG4iKTsKLQkJSTkxNV9TVEFURV9XQVJOKGNvbm5lY3Rvci0+YmFzZS5lbmNvZGVy ICE9ICZlbmNvZGVyLT5iYXNlLAotCQkgICAgICJhY3RpdmUgY29ubmVjdG9yIG5vdCBsaW5rZWQg dG8gZW5jb2RlclxuIik7CisJCUk5MTVfU1RBVEVfV0FSTighY3J0Yy0+c3RhdGUtPmFjdGl2ZSwK KwkJICAgICAgImNvbm5lY3RvciBpcyBhY3RpdmUsIGJ1dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4i KTsKIAotCQlpZiAoZW5jb2RlcikgewotCQkJSTkxNV9TVEFURV9XQVJOKCFlbmNvZGVyLT5jb25u ZWN0b3JzX2FjdGl2ZSwKLQkJCSAgICAgImVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlIG5vdCBz ZXRcbiIpOwoKVGhlIGNvbnZlcnRlZCB2ZXJzaW9uIGRvZXNuJ3QgY2hlY2sgY29ubmVjdG9yc19h Y3RpdmUuIEkgc2VlIGl0IGlzCmxhdGVyIHJlbW92ZWQgaW4gdGhlIHBhdGNoIHNlcmllcywgc28g SSBhc3N1bWUgaXQgaXMgbGVmdCBvdXQgb24KcHVycG9zZSwgYnV0IEkgdGhpbmsgdGhpcyBpcyB3 b3J0aCBtZW50aW9uaW5nIGluIHRoZSBjb21taXQgbWVzc2FnZS4KCj4gLQotCQkJZW5jb2Rlcl9l bmFibGVkID0gZW5jb2Rlci0+Z2V0X2h3X3N0YXRlKGVuY29kZXIsICZwaXBlKTsKLQkJCUk5MTVf U1RBVEVfV0FSTighZW5jb2Rlcl9lbmFibGVkLCAiZW5jb2RlciBub3QgZW5hYmxlZFxuIik7Ci0J CQlpZiAoSTkxNV9TVEFURV9XQVJOX09OKCFlbmNvZGVyLT5iYXNlLmNydGMpKQotCQkJCXJldHVy bjsKClRoZXNlIGFyZSBhbHNvIGxlZnQgb3V0LiBJdCBsb29rcyBsaWtlIGNoZWNrX2VuY29kZXJf c3RhdGUoKSBwZXJmb3Jtcwp0aGUgc2FtZSBjaGVjaywgYnV0IEkgdGhpbmsgdGhlIGNvbW1pdCBt ZXNzYWdlIHNob3VsZCBtZW50aW9uIHRoaXMgaWYKdGhhdCdzIHRoZSBjYXNlLgoKPiArCQlJOTE1 X1NUQVRFX1dBUk4oY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIsCisJCQkiYXRv bWljIGVuY29kZXIgZG9lc24ndCBtYXRjaCBhdHRhY2hlZCBlbmNvZGVyXG4iKTsKIAotCQkJY3J0 YyA9IGVuY29kZXItPmJhc2UuY3J0YzsKLQotCQkJSTkxNV9TVEFURV9XQVJOKCFjcnRjLT5zdGF0 ZS0+ZW5hYmxlLAotCQkJCQkiY3J0YyBub3QgZW5hYmxlZFxuIik7Ci0JCQlJOTE1X1NUQVRFX1dB Uk4oIXRvX2ludGVsX2NydGMoY3J0YyktPmFjdGl2ZSwgImNydGMgbm90IGFjdGl2ZVxuIik7Ci0J CQlJOTE1X1NUQVRFX1dBUk4ocGlwZSAhPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlLAotCQkJ ICAgICAiZW5jb2RlciBhY3RpdmUgb24gdGhlIHdyb25nIHBpcGVcbiIpOwotCQl9CisJCUk5MTVf U1RBVEVfV0FSTihjb25uX3N0YXRlLT5jcnRjICE9IGVuY29kZXItPmNydGMsCisJCQkiYXR0YWNo ZWQgZW5jb2RlciBjcnRjIGRpZmZlcnMgZnJvbSBjb25uZWN0b3IgY3J0Y1xuIik7CisJfSBlbHNl IHsKKwkJSTkxNV9TVEFURV9XQVJOKCFjcnRjICYmIGNvbm5lY3Rvci0+YmFzZS5zdGF0ZS0+YmVz dF9lbmNvZGVyLAorCQkJImJlc3QgZW5jb2RlciBzZXQgd2l0aG91dCBjcnRjIVxuIik7CiAJfQog fQogCkBAIC02NDQ0LDggKzY0MzUsNiBAQCBpbnQgaW50ZWxfY29ubmVjdG9yX2RwbXMoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IG1vZGUpCiAJaWYgKGNvbm5lY3Rvci0+ZW5j b2RlcikKIAkJaW50ZWxfZW5jb2Rlcl9kcG1zKHRvX2ludGVsX2VuY29kZXIoY29ubmVjdG9yLT5l bmNvZGVyKSwgbW9kZSk7CiAKLQlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKGNvbm5lY3Rvci0+ ZGV2KTsKLQogCXJldHVybiAwOwogfQogCkBAIC0xMjcwNSwyMCArMTI2OTQsMjIgQEAgc3RhdGlj IHZvaWQgY2hlY2tfd21fc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIH0KIAogc3RhdGlj IHZvaWQKLWNoZWNrX2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorY2hl Y2tfY29ubmVjdG9yX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKClRoaXMgaXMgY2FsbGVkIGFmdGVyIGEgc3RhdGUgc3dhcCwgc28g SSB0aGluayB0aGUgc3RhdGUgdmFyaWFibGUgc2hvdWxkCmJlIGNhbGxlZCBvbGRfc3RhdGUgZm9y IGNsYXJpdHkuCgo+ICB7Ci0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3I7CisJaW50IGk7CiAKLQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2 LCBjb25uZWN0b3IpIHsKLQkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9y LT5iYXNlLmVuY29kZXI7Ci0JCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSA9IGNv bm5lY3Rvci0+YmFzZS5zdGF0ZTsKKwlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUs IGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgeworCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7CisJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpz dGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGU7CiAKIAkJLyogVGhpcyBhbHNvIGNoZWNrcyB0aGUgZW5j b2Rlci9jb25uZWN0b3IgaHcgc3RhdGUgd2l0aCB0aGUKIAkJICogLT5nZXRfaHdfc3RhdGUgY2Fs bGJhY2tzLiAqLwotCQlpbnRlbF9jb25uZWN0b3JfY2hlY2tfc3RhdGUoY29ubmVjdG9yKTsKKwkJ aW50ZWxfY29ubmVjdG9yX2NoZWNrX3N0YXRlKHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3Ip KTsKIAogCQlJOTE1X1NUQVRFX1dBUk4oc3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyLAot CQkgICAgICJjb25uZWN0b3IncyBzdGFnZWQgZW5jb2RlciBkb2Vzbid0IG1hdGNoIGN1cnJlbnQg ZW5jb2RlclxuIik7CisJCSAgICAgImNvbm5lY3RvcidzIGF0b21pYyBlbmNvZGVyIGRvZXNuJ3Qg bWF0Y2ggbGVnYWN5IGVuY29kZXJcbiIpOwogCX0KIH0KIApAQCAtMTI5MDQsMTEgKzEyODk1LDEy IEBAIGNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJfQog fQogCi12b2lkCi1pbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCitzdGF0aWMgdm9pZAoraW50ZWxfbW9kZXNldF9jaGVja19zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCgpvbGRfc3Rh dGUgaGVyZSB0b28uCgoKPiAgewogCWNoZWNrX3dtX3N0YXRlKGRldik7Ci0JY2hlY2tfY29ubmVj dG9yX3N0YXRlKGRldik7CisJY2hlY2tfY29ubmVjdG9yX3N0YXRlKGRldiwgc3RhdGUpOwogCWNo ZWNrX2VuY29kZXJfc3RhdGUoZGV2KTsKIAljaGVja19jcnRjX3N0YXRlKGRldik7CiAJY2hlY2tf c2hhcmVkX2RwbGxfc3RhdGUoZGV2KTsKQEAgLTEzMjk0LDEwICsxMzI4NiwxMSBAQCBzdGF0aWMg aW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWRybV9h dG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0ZSk7CiAJZHJtX2F0b21pY19o ZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Ci0JZHJtX2F0b21pY19zdGF0ZV9mcmVl KHN0YXRlKTsKIAogCWlmIChhbnlfbXMpCi0JCWludGVsX21vZGVzZXRfY2hlY2tfc3RhdGUoZGV2 KTsKKwkJaW50ZWxfbW9kZXNldF9jaGVja19zdGF0ZShkZXYsIHN0YXRlKTsKKworCWRybV9hdG9t aWNfc3RhdGVfZnJlZShzdGF0ZSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKaW5kZXggMzIwYzllNmJkODQ4Li4wZGE0MjM2ZGM4NWEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCkBAIC05OTksNyArOTk5LDYgQEAgaW50IGludGVsX2Nvbm5lY3Rvcl9pbml0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKik7CiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9j b25uZWN0b3JfYWxsb2Modm9pZCk7CiBpbnQgaW50ZWxfY29ubmVjdG9yX2RwbXMoc3RydWN0IGRy bV9jb25uZWN0b3IgKiwgaW50IG1vZGUpOwogYm9vbCBpbnRlbF9jb25uZWN0b3JfZ2V0X2h3X3N0 YXRlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Ci12b2lkIGludGVsX21vZGVz ZXRfY2hlY2tfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBib29sIGlieF9kaWdpdGFs X3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpwb3J0KTsKIHZvaWQgaW50ZWxfY29ubmVjdG9yX2F0 dGFjaF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHZvLmMKaW5kZXggZmQ1ZTUyMmFiZWJiLi42MDBmN2ZiODU1ZDggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2R2by5jCkBAIC0yMzcsOCArMjM3LDYgQEAgc3RhdGljIGludCBpbnRlbF9k dm9fZHBtcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBpbnQgbW9kZSkKIAkJaW50 ZWxfY3J0Y191cGRhdGVfZHBtcyhjcnRjKTsKIAl9CiAKLQlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0 YXRlKGNvbm5lY3Rvci0+ZGV2KTsKLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zZHZvLmMKaW5kZXggMmM0MzVhNzlkNGRhLi44OTExZTBlNDE3ZWUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zZHZvLmMKQEAgLTE1NTAsOCArMTU1MCw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfc2R2 b19kcG1zKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBtb2RlKQogCQlpbnRl bF9zZHZvX3NldF9hY3RpdmVfb3V0cHV0cyhpbnRlbF9zZHZvLCBpbnRlbF9zZHZvLT5hdHRhY2hl ZF9vdXRwdXQpOwogCX0KIAotCWludGVsX21vZGVzZXRfY2hlY2tfc3RhdGUoY29ubmVjdG9yLT5k ZXYpOwotCgpIb3cgZG9lcyByZW1vdmluZyB0aGUgY2hlY2tzIGZyb20gdGhlIF9kcG1zKCkgZnVu Y3Rpb25zIHJlbGF0ZSB0bwpjb252ZXJ0aW5nIHRoZSBjb25uZWN0b3IgY2hlY2tpbmcgdG8gYXRv bWljPyBJZiBJIHVuZGVyc3Rvb2QgY29ycmVjdGx5LAp0aGUgY2hlY2tzIGFyZW4ndCBuZWNlc3Nh cnkgYW55bW9yZSBiZWNhdXNlIGludGVsX2NydGNfY29udHJvbCgpIGlzCmF0b21pYywgYW5kIHRo YXQgYWxyZWFkeSBwZXJmb3JtcyBhIGNoZWNrLiBCdXQgaWYgdGhhdCdzIHJpZ2h0IHRoaXMKc2hv dWxkIGJlIGEgc2VwYXJhdGUgcGF0Y2guIE9yIGRpZCBJIG1pc3Mgc29tZXRoaW5nPwoKQW5kZXIK Cj4gIAlyZXR1cm4gMDsKIH0KIApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=