From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: [PATCH 08/12] drm/modes: parse_cmdline: Allow specifying stand-alone options Date: Sun, 10 Nov 2019 16:40:57 +0100 Message-ID: <20191110154101.26486-9-hdegoede@redhat.com> References: <20191110154101.26486-1-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 849C46E637 for ; Sun, 10 Nov 2019 15:41:26 +0000 (UTC) In-Reply-To: <20191110154101.26486-1-hdegoede@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst , Maxime Ripard , Sean Paul , Daniel Vetter , David Airlie Cc: Hans de Goede , =?UTF-8?q?Mathieu=20Alexandre-T=C3=A9treault?= , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org U29tZSBvcHRpb25zIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLCBz dWNoIGFzCm1hcmdpbl9yaWdodD0uLi4sIG1hcmdpbl9sZWZ0PS4uLiwgZXRjLiBhcmUgYXBwbGll ZCBub3Qgb25seSB0byB0aGUKc3BlY2lmaWVkIG1vZGUsIGJ1dCB0byBhbGwgbW9kZXMuIEFzIHN1 Y2ggaXQgd291bGQgYmUgbmljZSBpZiB0aGUgdXNlcgpjYW4gc2ltcGx5IHNheSBlLmcuCnZpZGVv PUhETUktMTptYXJnaW5fcmlnaHQ9MTQsbWFyZ2luX2xlZnQ9MjQsbWFyZ2luX2JvdHRvbT0zNixt YXJnaW5fdG9wPTQyCgpUaGlzIGNvbW1pdCByZWZhY3RvcnMgZHJtX21vZGVfcGFyc2VfY29tbWFu ZF9saW5lX2Zvcl9jb25uZWN0b3IoKSB0bwphZGQgc3VwcG9ydCBmb3IgdGhpcywgYW5kIGFzIGEg bmljZSBzaWRlIGVmZmVjdCBhbHNvIGNsZWFucyB1cCB0aGUKZnVuY3Rpb24gYSBiaXQuCgpTaWdu ZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9kcm1fbW9kZXMuYyAgICAgICAgICAgICAgICAgICB8IDkyICsrKysrKystLS0t LS0tLS0tLS0KIC4uLi9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1fY21kbGluZV9zZWxmdGVzdHMuaCB8 ICAyICsKIC4uLi9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX2NtZGxpbmVfcGFyc2VyLmMgICB8IDUw ICsrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9tb2Rlcy5jCmluZGV4IDcyODI4ZmE5ZmM5MS4uMmU4MjYwM2Y1ZDBhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9tb2Rlcy5jCkBAIC0xNjc3LDE3ICsxNjc3LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCBkcm1fbmFtZWRfbW9kZXNfd2hpdGVsaXN0W10gPSB7CiAJIlBBTCIsCiB9OwogCi1z dGF0aWMgYm9vbCBkcm1fbmFtZWRfbW9kZV9pc19pbl93aGl0ZWxpc3QoY29uc3QgY2hhciAqbW9k ZSwgdW5zaWduZWQgaW50IHNpemUpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShkcm1fbmFtZWRfbW9kZXNfd2hpdGVsaXN0KTsgaSsrKQotCQlpZiAoIXN0cm5jbXAo bW9kZSwgZHJtX25hbWVkX21vZGVzX3doaXRlbGlzdFtpXSwgc2l6ZSkpCi0JCQlyZXR1cm4gdHJ1 ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQogLyoqCiAgKiBkcm1fbW9kZV9wYXJzZV9jb21tYW5k X2xpbmVfZm9yX2Nvbm5lY3RvciAtIHBhcnNlIGNvbW1hbmQgbGluZSBtb2RlbGluZSBmb3IgY29u bmVjdG9yCiAgKiBAbW9kZV9vcHRpb246IG9wdGlvbmFsIHBlciBjb25uZWN0b3IgbW9kZSBvcHRp b24KQEAgLTE3MTgsNyArMTcwNyw3IEBAIGJvb2wgZHJtX21vZGVfcGFyc2VfY29tbWFuZF9saW5l X2Zvcl9jb25uZWN0b3IoY29uc3QgY2hhciAqbW9kZV9vcHRpb24sCiAJCQkJCSAgICAgICBzdHJ1 Y3QgZHJtX2NtZGxpbmVfbW9kZSAqbW9kZSkKIHsKIAljb25zdCBjaGFyICpuYW1lOwotCWJvb2wg bmFtZWRfbW9kZSA9IGZhbHNlLCBwYXJzZV9leHRyYXMgPSBmYWxzZTsKKwlib29sIGZyZWVzdGFu ZGluZyA9IGZhbHNlLCBwYXJzZV9leHRyYXMgPSBmYWxzZTsKIAl1bnNpZ25lZCBpbnQgYnBwX29m ZiA9IDAsIHJlZnJlc2hfb2ZmID0gMCwgb3B0aW9uc19vZmYgPSAwOwogCXVuc2lnbmVkIGludCBt b2RlX2VuZCA9IDA7CiAJY29uc3QgY2hhciAqYnBwX3B0ciA9IE5VTEwsICpyZWZyZXNoX3B0ciA9 IE5VTEwsICpleHRyYV9wdHIgPSBOVUxMOwpAQCAtMTczOCw0OSArMTcyNywxNCBAQCBib29sIGRy bV9tb2RlX3BhcnNlX2NvbW1hbmRfbGluZV9mb3JfY29ubmVjdG9yKGNvbnN0IGNoYXIgKm1vZGVf b3B0aW9uLAogCiAJbmFtZSA9IG1vZGVfb3B0aW9uOwogCi0JLyoKLQkgKiBUaGlzIGlzIGEgYml0 IGNvbnZvbHV0ZWQuIFRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUKLQkgKiBuYW1lZCBtb2Rl cyBhbmQgcG9vcmx5IGZvcm1hdHRlZCByZXNvbHV0aW9ucywgd2UgbmVlZCBhCi0JICogYnVuY2gg b2YgdGhpbmdzOgotCSAqICAgLSBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBj aGFyYWN0ZXIgKHdoaWNoCi0JICogICAgIHdvdWxkIGJlIG91ciByZXNvbHV0aW9uIGluIFgpIGlz IGEgZGlnaXQuCi0JICogICAtIElmIG5vdCwgdGhlbiBpdCdzIGVpdGhlciBhIG5hbWVkIG1vZGUg b3IgYSBmb3JjZSBvbi9vZmYuCi0JICogICAgIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3 bywgd2UgbmVlZCB0byBydW4gdGhlCi0JICogICAgIGV4dHJhIHBhcnNpbmcgZnVuY3Rpb24sIGFu ZCBpZiBub3QsIHRoZW4gd2UgY29uc2lkZXIgaXQKLQkgKiAgICAgYSBuYW1lZCBtb2RlLgotCSAq Ci0JICogSWYgdGhpcyBpc24ndCBlbm91Z2gsIHdlIHNob3VsZCBhZGQgbW9yZSBoZXVyaXN0aWNz IGhlcmUsCi0JICogYW5kIG1hdGNoaW5nIHVuaXQtdGVzdHMuCi0JICovCi0JaWYgKCFpc2RpZ2l0 KG5hbWVbMF0pICYmIG5hbWVbMF0gIT0gJ3gnKSB7Ci0JCXVuc2lnbmVkIGludCBuYW1lbGVuID0g c3RybGVuKG5hbWUpOwotCi0JCS8qCi0JCSAqIE9ubHkgdGhlIGZvcmNlIG9uL29mZiBvcHRpb25z IGNhbiBiZSBpbiB0aGF0IGNhc2UsCi0JCSAqIGFuZCB0aGV5IGFsbCB0YWtlIGEgc2luZ2xlIGNo YXJhY3Rlci4KLQkJICovCi0JCWlmIChuYW1lbGVuID09IDEpIHsKLQkJCXJldCA9IGRybV9tb2Rl X3BhcnNlX2NtZGxpbmVfZXh0cmEobmFtZSwgbmFtZWxlbiwgdHJ1ZSwKLQkJCQkJCQkgICBjb25u ZWN0b3IsIG1vZGUpOwotCQkJaWYgKCFyZXQpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQlu YW1lZF9tb2RlID0gdHJ1ZTsKLQl9Ci0KIAkvKiBUcnkgdG8gbG9jYXRlIHRoZSBicHAgYW5kIHJl ZnJlc2ggc3BlY2lmaWVycywgaWYgYW55ICovCiAJYnBwX3B0ciA9IHN0cmNocihuYW1lLCAnLScp OwogCWlmIChicHBfcHRyKQogCQlicHBfb2ZmID0gYnBwX3B0ciAtIG5hbWU7CiAKIAlyZWZyZXNo X3B0ciA9IHN0cmNocihuYW1lLCAnQCcpOwotCWlmIChyZWZyZXNoX3B0cikgewotCQlpZiAobmFt ZWRfbW9kZSkKLQkJCXJldHVybiBmYWxzZTsKLQorCWlmIChyZWZyZXNoX3B0cikKIAkJcmVmcmVz aF9vZmYgPSByZWZyZXNoX3B0ciAtIG5hbWU7Ci0JfQogCiAJLyogTG9jYXRlIHRoZSBzdGFydCBv ZiBuYW1lZCBvcHRpb25zICovCiAJb3B0aW9uc19wdHIgPSBzdHJjaHIobmFtZSwgJywnKTsKQEAg LTE4MDAsMjMgKzE3NTQsNDUgQEAgYm9vbCBkcm1fbW9kZV9wYXJzZV9jb21tYW5kX2xpbmVfZm9y X2Nvbm5lY3Rvcihjb25zdCBjaGFyICptb2RlX29wdGlvbiwKIAkJcGFyc2VfZXh0cmFzID0gdHJ1 ZTsKIAl9CiAKLQlpZiAobmFtZWRfbW9kZSkgewotCQlpZiAobW9kZV9lbmQgKyAxID4gRFJNX0RJ U1BMQVlfTU9ERV9MRU4pCi0JCQlyZXR1cm4gZmFsc2U7CisJLyogRmlyc3QgY2hlY2sgZm9yIGEg bmFtZWQgbW9kZSAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRybV9uYW1lZF9tb2Rl c193aGl0ZWxpc3QpOyBpKyspIHsKKwkJcmV0ID0gc3RyX2hhc19wcmVmaXgobmFtZSwgZHJtX25h bWVkX21vZGVzX3doaXRlbGlzdFtpXSk7CisJCWlmIChyZXQgPT0gbW9kZV9lbmQpIHsKKwkJCWlm IChyZWZyZXNoX3B0cikKKwkJCQlyZXR1cm4gZmFsc2U7IC8qIG5hbWVkICsgcmVmcmVzaCBpcyBp bnZhbGlkICovCiAKLQkJaWYgKCFkcm1fbmFtZWRfbW9kZV9pc19pbl93aGl0ZWxpc3QobmFtZSwg bW9kZV9lbmQpKQotCQkJcmV0dXJuIGZhbHNlOworCQkJc3RyY3B5KG1vZGUtPm5hbWUsIGRybV9u YW1lZF9tb2Rlc193aGl0ZWxpc3RbaV0pOworCQkJbW9kZS0+c3BlY2lmaWVkID0gdHJ1ZTsKKwkJ CWJyZWFrOworCQl9CisJfQogCi0JCXN0cnNjcHkobW9kZS0+bmFtZSwgbmFtZSwgbW9kZV9lbmQg KyAxKTsKLQl9IGVsc2UgeworCS8qIE5vIG5hbWVkIG1vZGU/IENoZWNrIGZvciBhIG5vcm1hbCBt b2RlIGFyZ3VtZW50LCBlLmcuIDEwMjR4NzY4ICovCisJaWYgKCFtb2RlLT5zcGVjaWZpZWQgJiYg aXNkaWdpdChuYW1lWzBdKSkgewogCQlyZXQgPSBkcm1fbW9kZV9wYXJzZV9jbWRsaW5lX3Jlc19t b2RlKG5hbWUsIG1vZGVfZW5kLAogCQkJCQkJICAgICAgcGFyc2VfZXh0cmFzLAogCQkJCQkJICAg ICAgY29ubmVjdG9yLAogCQkJCQkJICAgICAgbW9kZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4g ZmFsc2U7CisKKwkJbW9kZS0+c3BlY2lmaWVkID0gdHJ1ZTsKKwl9CisKKwkvKiBObyBtb2RlPyBD aGVjayBmb3IgZnJlZXN0YW5kaW5nIGV4dHJhcyBhbmQvb3Igb3B0aW9ucyAqLworCWlmICghbW9k ZS0+c3BlY2lmaWVkKSB7CisJCXVuc2lnbmVkIGludCBsZW4gPSBzdHJsZW4obW9kZV9vcHRpb24p OworCisJCWlmIChicHBfcHRyIHx8IHJlZnJlc2hfcHRyKQorCQkJcmV0dXJuIGZhbHNlOyAvKiBz eW50YXggZXJyb3IgKi8KKworCQlpZiAobGVuID09IDEgfHwgKGxlbiA+PSAyICYmIG1vZGVfb3B0 aW9uWzFdID09ICcsJykpCisJCQlleHRyYV9wdHIgPSBtb2RlX29wdGlvbjsKKwkJZWxzZQorCQkJ b3B0aW9uc19wdHIgPSBtb2RlX29wdGlvbiAtIDE7CisKKwkJZnJlZXN0YW5kaW5nID0gdHJ1ZTsK IAl9Ci0JbW9kZS0+c3BlY2lmaWVkID0gdHJ1ZTsKIAogCWlmIChicHBfcHRyKSB7CiAJCXJldCA9 IGRybV9tb2RlX3BhcnNlX2NtZGxpbmVfYnBwKGJwcF9wdHIsICZicHBfZW5kX3B0ciwgbW9kZSk7 CkBAIC0xODUyLDcgKzE4MjgsNyBAQCBib29sIGRybV9tb2RlX3BhcnNlX2NvbW1hbmRfbGluZV9m b3JfY29ubmVjdG9yKGNvbnN0IGNoYXIgKm1vZGVfb3B0aW9uLAogCQllbHNlCiAJCQlsZW4gPSBz dHJsZW4oZXh0cmFfcHRyKTsKIAotCQlyZXQgPSBkcm1fbW9kZV9wYXJzZV9jbWRsaW5lX2V4dHJh KGV4dHJhX3B0ciwgbGVuLCBmYWxzZSwKKwkJcmV0ID0gZHJtX21vZGVfcGFyc2VfY21kbGluZV9l eHRyYShleHRyYV9wdHIsIGxlbiwgZnJlZXN0YW5kaW5nLAogCQkJCQkJICAgY29ubmVjdG9yLCBt b2RlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiBmYWxzZTsKQEAgLTE4NjAsNyArMTgzNiw3IEBA IGJvb2wgZHJtX21vZGVfcGFyc2VfY29tbWFuZF9saW5lX2Zvcl9jb25uZWN0b3IoY29uc3QgY2hh ciAqbW9kZV9vcHRpb24sCiAKIAlpZiAob3B0aW9uc19wdHIpIHsKIAkJcmV0ID0gZHJtX21vZGVf cGFyc2VfY21kbGluZV9vcHRpb25zKG9wdGlvbnNfcHRyICsgMSwKLQkJCQkJCSAgICAgZmFsc2Us CisJCQkJCQkgICAgIGZyZWVzdGFuZGluZywKIAkJCQkJCSAgICAgY29ubmVjdG9yLCBtb2RlKTsK IAkJaWYgKHJldCkKIAkJCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9zZWxmdGVzdHMvZHJtX2NtZGxpbmVfc2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vc2Vs ZnRlc3RzL2RybV9jbWRsaW5lX3NlbGZ0ZXN0cy5oCmluZGV4IDAwM2UyYzNmZmMzOS4uYWVlOTJh YzJjYzIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9jbWRsaW5l X3NlbGZ0ZXN0cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2NtZGxpbmVf c2VsZnRlc3RzLmgKQEAgLTYyLDMgKzYyLDUgQEAgY21kbGluZV90ZXN0KGRybV9jbWRsaW5lX3Rl c3RfbXVsdGlwbGVfb3B0aW9ucykKIGNtZGxpbmVfdGVzdChkcm1fY21kbGluZV90ZXN0X2ludmFs aWRfb3B0aW9uKQogY21kbGluZV90ZXN0KGRybV9jbWRsaW5lX3Rlc3RfYnBwX2V4dHJhX2FuZF9v cHRpb24pCiBjbWRsaW5lX3Rlc3QoZHJtX2NtZGxpbmVfdGVzdF9leHRyYV9hbmRfb3B0aW9uKQor Y21kbGluZV90ZXN0KGRybV9jbWRsaW5lX3Rlc3RfZnJlZXN0YW5kaW5nX29wdGlvbnMpCitjbWRs aW5lX3Rlc3QoZHJtX2NtZGxpbmVfdGVzdF9mcmVlc3RhbmRpbmdfZm9yY2VfZV9hbmRfb3B0aW9u cykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fY21kbGlu ZV9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fY21kbGluZV9w YXJzZXIuYwppbmRleCBiYzRkYjAxN2U5OTMuLjgyNDhkNGFhNWFhYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9jbWRsaW5lX3BhcnNlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fY21kbGluZV9wYXJzZXIuYwpAQCAtMTA0 Miw2ICsxMDQyLDU2IEBAIHN0YXRpYyBpbnQgZHJtX2NtZGxpbmVfdGVzdF9leHRyYV9hbmRfb3B0 aW9uKHZvaWQgKmlnbm9yZWQpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZHJtX2NtZGxp bmVfdGVzdF9mcmVlc3RhbmRpbmdfb3B0aW9ucyh2b2lkICppZ25vcmVkKQoreworCXN0cnVjdCBk cm1fY21kbGluZV9tb2RlIG1vZGUgPSB7IH07CisKKwlGQUlMX09OKCFkcm1fbW9kZV9wYXJzZV9j b21tYW5kX2xpbmVfZm9yX2Nvbm5lY3RvcigibWFyZ2luX3JpZ2h0PTE0LG1hcmdpbl9sZWZ0PTI0 LG1hcmdpbl9ib3R0b209MzYsbWFyZ2luX3RvcD00MiIsCisJCQkJCQkJICAgJm5vX2Nvbm5lY3Rv ciwKKwkJCQkJCQkgICAmbW9kZSkpOworCUZBSUxfT04obW9kZS5zcGVjaWZpZWQpOworCUZBSUxf T04obW9kZS5yZWZyZXNoX3NwZWNpZmllZCk7CisJRkFJTF9PTihtb2RlLmJwcF9zcGVjaWZpZWQp OworCisJRkFJTF9PTihtb2RlLnR2X21hcmdpbnMucmlnaHQgIT0gMTQpOworCUZBSUxfT04obW9k ZS50dl9tYXJnaW5zLmxlZnQgIT0gMjQpOworCUZBSUxfT04obW9kZS50dl9tYXJnaW5zLmJvdHRv bSAhPSAzNik7CisJRkFJTF9PTihtb2RlLnR2X21hcmdpbnMudG9wICE9IDQyKTsKKworCUZBSUxf T04obW9kZS5yYik7CisJRkFJTF9PTihtb2RlLmN2dCk7CisJRkFJTF9PTihtb2RlLmludGVybGFj ZSk7CisJRkFJTF9PTihtb2RlLm1hcmdpbnMpOworCUZBSUxfT04obW9kZS5mb3JjZSAhPSBEUk1f Rk9SQ0VfVU5TUEVDSUZJRUQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHJtX2Nt ZGxpbmVfdGVzdF9mcmVlc3RhbmRpbmdfZm9yY2VfZV9hbmRfb3B0aW9ucyh2b2lkICppZ25vcmVk KQoreworCXN0cnVjdCBkcm1fY21kbGluZV9tb2RlIG1vZGUgPSB7IH07CisKKwlGQUlMX09OKCFk cm1fbW9kZV9wYXJzZV9jb21tYW5kX2xpbmVfZm9yX2Nvbm5lY3RvcigiZSxtYXJnaW5fcmlnaHQ9 MTQsbWFyZ2luX2xlZnQ9MjQsbWFyZ2luX2JvdHRvbT0zNixtYXJnaW5fdG9wPTQyIiwKKwkJCQkJ CQkgICAmbm9fY29ubmVjdG9yLAorCQkJCQkJCSAgICZtb2RlKSk7CisJRkFJTF9PTihtb2RlLnNw ZWNpZmllZCk7CisJRkFJTF9PTihtb2RlLnJlZnJlc2hfc3BlY2lmaWVkKTsKKwlGQUlMX09OKG1v ZGUuYnBwX3NwZWNpZmllZCk7CisKKwlGQUlMX09OKG1vZGUudHZfbWFyZ2lucy5yaWdodCAhPSAx NCk7CisJRkFJTF9PTihtb2RlLnR2X21hcmdpbnMubGVmdCAhPSAyNCk7CisJRkFJTF9PTihtb2Rl LnR2X21hcmdpbnMuYm90dG9tICE9IDM2KTsKKwlGQUlMX09OKG1vZGUudHZfbWFyZ2lucy50b3Ag IT0gNDIpOworCisJRkFJTF9PTihtb2RlLnJiKTsKKwlGQUlMX09OKG1vZGUuY3Z0KTsKKwlGQUlM X09OKG1vZGUuaW50ZXJsYWNlKTsKKwlGQUlMX09OKG1vZGUubWFyZ2lucyk7CisJRkFJTF9PTiht b2RlLmZvcmNlICE9IERSTV9GT1JDRV9PTik7CisKKwlyZXR1cm4gMDsKK30KKwogI2luY2x1ZGUg ImRybV9zZWxmdGVzdC5jIgogCiBzdGF0aWMgaW50IF9faW5pdCB0ZXN0X2RybV9jbWRsaW5lX2lu aXQodm9pZCkKLS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVs