From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iw2pV-0005gt-7l for barebox@lists.infradead.org; Mon, 27 Jan 2020 11:45:23 +0000 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= Date: Mon, 27 Jan 2020 12:44:53 +0100 Message-Id: <20200127114453.366-3-uwe@kleine-koenig.org> In-Reply-To: <20200127114453.366-1-uwe@kleine-koenig.org> References: <20200127114453.366-1-uwe@kleine-koenig.org> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 2/2] gpiolib: introduce helper functions working on gpio_info structs To: barebox@lists.infradead.org Cc: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= RnJvbTogVXdlIEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtvZW5pZ0BwZW5ndXRyb25peC5kZT4K CmdwaW9pbmZvXyooKSBhc3N1bWUgdGhlaXIgZ3Bpb19pbmZvIHBvaW50ZXIgcGFyYW1ldGVyIHRv IGJlIHZhbGlkIGFuZApkb24ndCBlbnN1cmUgdGhlIGdwaW8gdG8gYmUgcmVxdWVzdGVkLgoKVGhp cyBkcm9wcyBzZXZlcmFsIGNoZWNrcyBmb3IgYmVpbmcgcmVxdWVzdGVkIGFuZCBhbGxvd3MgZnVy dGhlcgpleHRlbnNpb25zIHRvIHdvcmsgd2l0aCB1bnJlcXVlc3RlZCBncGlvcy4KClNpZ25lZC1v ZmYtYnk6IFV3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+ Ci0tLQogZHJpdmVycy9ncGlvL2dwaW9saWIuYyB8IDEzNSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDM5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3Bpby9ncGlvbGliLmMgYi9kcml2 ZXJzL2dwaW8vZ3Bpb2xpYi5jCmluZGV4IDY3ODlmZmQyMThiOC4uNTNlN2ZiZTdkZTQ5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jCisrKyBiL2RyaXZlcnMvZ3Bpby9ncGlvbGli LmMKQEAgLTQ4LDYgKzQ4LDExIEBAIHN0YXRpYyBzdHJ1Y3QgZ3Bpb19pbmZvICpncGlvX3RvX2Rl c2ModW5zaWduZWQgZ3BpbykKIAlyZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGdw aW9pbmZvX2NoaXBfb2Zmc2V0KHN0cnVjdCBncGlvX2luZm8gKmdpKQoreworCXJldHVybiAoZ2kg LSBncGlvX2Rlc2MpIC0gZ2ktPmNoaXAtPmJhc2U7Cit9CisKIHN0YXRpYyBpbnQgZ3Bpb19hZGp1 c3RfdmFsdWUoc3RydWN0IGdwaW9faW5mbyAqZ2ksCiAJCQkgICAgIGludCB2YWx1ZSkKIHsKQEAg LTU3LDE2ICs2MiwxMCBAQCBzdGF0aWMgaW50IGdwaW9fYWRqdXN0X3ZhbHVlKHN0cnVjdCBncGlv X2luZm8gKmdpLAogCXJldHVybiAhIXZhbHVlIF4gZ2ktPmFjdGl2ZV9sb3c7CiB9CiAKLWludCBn cGlvX3JlcXVlc3QodW5zaWduZWQgZ3BpbywgY29uc3QgY2hhciAqbGFiZWwpCitzdGF0aWMgaW50 IGdwaW9pbmZvX3JlcXVlc3Qoc3RydWN0IGdwaW9faW5mbyAqZ2ksIGNvbnN0IGNoYXIgKmxhYmVs KQogewotCXN0cnVjdCBncGlvX2luZm8gKmdpID0gZ3Bpb190b19kZXNjKGdwaW8pOwogCWludCBy ZXQ7CiAKLQlpZiAoIWdpKSB7Ci0JCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8gZG9uZTsKLQl9Ci0K IAlpZiAoZ2ktPnJlcXVlc3RlZCkgewogCQlyZXQgPSAtRUJVU1k7CiAJCWdvdG8gZG9uZTsKQEAg LTc1LDcgKzc0LDggQEAgaW50IGdwaW9fcmVxdWVzdCh1bnNpZ25lZCBncGlvLCBjb25zdCBjaGFy ICpsYWJlbCkKIAlyZXQgPSAwOwogCiAJaWYgKGdpLT5jaGlwLT5vcHMtPnJlcXVlc3QpIHsKLQkJ cmV0ID0gZ2ktPmNoaXAtPm9wcy0+cmVxdWVzdChnaS0+Y2hpcCwgZ3BpbyAtIGdpLT5jaGlwLT5i YXNlKTsKKwkJcmV0ID0gZ2ktPmNoaXAtPm9wcy0+cmVxdWVzdChnaS0+Y2hpcCwKKwkJCQkJICAg ICBncGlvaW5mb19jaGlwX29mZnNldChnaSkpOwogCQlpZiAocmV0KQogCQkJZ290byBkb25lOwog CX0KQEAgLTg3LDcgKzg3LDcgQEAgaW50IGdwaW9fcmVxdWVzdCh1bnNpZ25lZCBncGlvLCBjb25z dCBjaGFyICpsYWJlbCkKIGRvbmU6CiAJaWYgKHJldCkKIAkJcHJfZXJyKCJfZ3Bpb19yZXF1ZXN0 OiBncGlvLSVkICglcykgc3RhdHVzICVkXG4iLAotCQkJIGdwaW8sIGxhYmVsID8gOiAiPyIsIHJl dCk7CisJCSAgICAgICBnaSAtIGdwaW9fZGVzYywgbGFiZWwgPyA6ICI/IiwgcmV0KTsKIAogCXJl dHVybiByZXQ7CiB9CkBAIC0xMjYsMTggKzEyNiwyNiBAQCBpbnQgZ3Bpb19maW5kX2J5X25hbWUo Y29uc3QgY2hhciAqbmFtZSkKIAlyZXR1cm4gLUVOT0VOVDsKIH0KIAotdm9pZCBncGlvX2ZyZWUo dW5zaWduZWQgZ3BpbykKK2ludCBncGlvX3JlcXVlc3QodW5zaWduZWQgZ3BpbywgY29uc3QgY2hh ciAqbGFiZWwpCiB7CiAJc3RydWN0IGdwaW9faW5mbyAqZ2kgPSBncGlvX3RvX2Rlc2MoZ3Bpbyk7 CiAKLQlpZiAoIWdpKQotCQlyZXR1cm47CisJaWYgKCFnaSkgeworCQlwcl9lcnIoIl9ncGlvX3Jl cXVlc3Q6IGdwaW8tJWQgKCVzKSBzdGF0dXMgJWRcbiIsCisJCQkgZ3BpbywgbGFiZWwgPyA6ICI/ IiwgLUVOT0RFVik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCXJldHVybiBncGlvaW5mb19y ZXF1ZXN0KGdpLCBsYWJlbCk7Cit9CiAKK3N0YXRpYyB2b2lkIGdwaW9pbmZvX2ZyZWUoc3RydWN0 IGdwaW9faW5mbyAqZ2kpCit7CiAJaWYgKCFnaS0+cmVxdWVzdGVkKQogCQlyZXR1cm47CiAKIAlp ZiAoZ2ktPmNoaXAtPm9wcy0+ZnJlZSkKLQkJZ2ktPmNoaXAtPm9wcy0+ZnJlZShnaS0+Y2hpcCwg Z3BpbyAtIGdpLT5jaGlwLT5iYXNlKTsKKwkJZ2ktPmNoaXAtPm9wcy0+ZnJlZShnaS0+Y2hpcCwg Z3Bpb2luZm9fY2hpcF9vZmZzZXQoZ2kpKTsKIAogCWdpLT5yZXF1ZXN0ZWQgPSBmYWxzZTsKIAln aS0+YWN0aXZlX2xvdyA9IGZhbHNlOwpAQCAtMTQ1LDYgKzE1MywyMiBAQCB2b2lkIGdwaW9fZnJl ZSh1bnNpZ25lZCBncGlvKQogCWdpLT5sYWJlbCA9IE5VTEw7CiB9CiAKK3ZvaWQgZ3Bpb19mcmVl KHVuc2lnbmVkIGdwaW8pCit7CisJc3RydWN0IGdwaW9faW5mbyAqZ2kgPSBncGlvX3RvX2Rlc2Mo Z3Bpbyk7CisKKwlpZiAoIWdpKQorCQlyZXR1cm47CisKKwlncGlvaW5mb19mcmVlKGdpKTsKK30K Kworc3RhdGljIHZvaWQgZ3Bpb2luZm9fc2V0X3ZhbHVlKHN0cnVjdCBncGlvX2luZm8gKmdpLCBp bnQgdmFsdWUpCit7CisJaWYgKGdpLT5jaGlwLT5vcHMtPnNldCkKKwkJZ2ktPmNoaXAtPm9wcy0+ c2V0KGdpLT5jaGlwLCBncGlvaW5mb19jaGlwX29mZnNldChnaSksIHZhbHVlKTsKK30KKwogdm9p ZCBncGlvX3NldF92YWx1ZSh1bnNpZ25lZCBncGlvLCBpbnQgdmFsdWUpCiB7CiAJc3RydWN0IGdw aW9faW5mbyAqZ2kgPSBncGlvX3RvX2Rlc2MoZ3Bpbyk7CkBAIC0xNTUsOCArMTc5LDcgQEAgdm9p ZCBncGlvX3NldF92YWx1ZSh1bnNpZ25lZCBncGlvLCBpbnQgdmFsdWUpCiAJaWYgKGdwaW9fZW5z dXJlX3JlcXVlc3RlZChnaSwgZ3BpbykpCiAJCXJldHVybjsKIAotCWlmIChnaS0+Y2hpcC0+b3Bz LT5zZXQpCi0JCWdpLT5jaGlwLT5vcHMtPnNldChnaS0+Y2hpcCwgZ3BpbyAtIGdpLT5jaGlwLT5i YXNlLCB2YWx1ZSk7CisJZ3Bpb2luZm9fc2V0X3ZhbHVlKGdpLCB2YWx1ZSk7CiB9CiBFWFBPUlRf U1lNQk9MKGdwaW9fc2V0X3ZhbHVlKTsKIApAQCAtMTcxLDYgKzE5NCwxNCBAQCB2b2lkIGdwaW9f c2V0X2FjdGl2ZSh1bnNpZ25lZCBncGlvLCBib29sIHZhbHVlKQogfQogRVhQT1JUX1NZTUJPTChn cGlvX3NldF9hY3RpdmUpOwogCitzdGF0aWMgaW50IGdwaW9pbmZvX2dldF92YWx1ZShzdHJ1Y3Qg Z3Bpb19pbmZvICpnaSkKK3sKKwlpZiAoIWdpLT5jaGlwLT5vcHMtPmdldCkKKwkJcmV0dXJuIC1F Tk9TWVM7CisKKwlyZXR1cm4gZ2ktPmNoaXAtPm9wcy0+Z2V0KGdpLT5jaGlwLCBncGlvaW5mb19j aGlwX29mZnNldChnaSkpOworfQorCiBpbnQgZ3Bpb19nZXRfdmFsdWUodW5zaWduZWQgZ3BpbykK IHsKIAlzdHJ1Y3QgZ3Bpb19pbmZvICpnaSA9IGdwaW9fdG9fZGVzYyhncGlvKTsKQEAgLTE4Myw5 ICsyMTQsNyBAQCBpbnQgZ3Bpb19nZXRfdmFsdWUodW5zaWduZWQgZ3BpbykKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCi0JaWYgKCFnaS0+Y2hpcC0+b3BzLT5nZXQpCi0JCXJldHVybiAtRU5P U1lTOwotCXJldHVybiBnaS0+Y2hpcC0+b3BzLT5nZXQoZ2ktPmNoaXAsIGdwaW8gLSBnaS0+Y2hp cC0+YmFzZSk7CisJcmV0dXJuIGdwaW9pbmZvX2dldF92YWx1ZShnaSk7CiB9CiBFWFBPUlRfU1lN Qk9MKGdwaW9fZ2V0X3ZhbHVlKTsKIApAQCAtMjAwLDYgKzIyOSwxNSBAQCBpbnQgZ3Bpb19pc19h Y3RpdmUodW5zaWduZWQgZ3BpbykKIH0KIEVYUE9SVF9TWU1CT0woZ3Bpb19pc19hY3RpdmUpOwog CitzdGF0aWMgaW50IGdwaW9pbmZvX2RpcmVjdGlvbl9vdXRwdXQoc3RydWN0IGdwaW9faW5mbyAq Z2ksIGludCB2YWx1ZSkKK3sKKwlpZiAoIWdpLT5jaGlwLT5vcHMtPmRpcmVjdGlvbl9vdXRwdXQp CisJCXJldHVybiAtRU5PU1lTOworCisJcmV0dXJuIGdpLT5jaGlwLT5vcHMtPmRpcmVjdGlvbl9v dXRwdXQoZ2ktPmNoaXAsCisJCQkJCSAgICAgICBncGlvaW5mb19jaGlwX29mZnNldChnaSksIHZh bHVlKTsKK30KKwogaW50IGdwaW9fZGlyZWN0aW9uX291dHB1dCh1bnNpZ25lZCBncGlvLCBpbnQg dmFsdWUpCiB7CiAJc3RydWN0IGdwaW9faW5mbyAqZ2kgPSBncGlvX3RvX2Rlc2MoZ3Bpbyk7CkBA IC0yMTIsMTMgKzI1MCwxNSBAQCBpbnQgZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHVuc2lnbmVkIGdw aW8sIGludCB2YWx1ZSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFnaS0+Y2hp cC0+b3BzLT5kaXJlY3Rpb25fb3V0cHV0KQotCQlyZXR1cm4gLUVOT1NZUzsKLQlyZXR1cm4gZ2kt PmNoaXAtPm9wcy0+ZGlyZWN0aW9uX291dHB1dChnaS0+Y2hpcCwgZ3BpbyAtIGdpLT5jaGlwLT5i YXNlLAotCQkJCQkgICAgICAgdmFsdWUpOworCXJldHVybiBncGlvaW5mb19kaXJlY3Rpb25fb3V0 cHV0KGdpLCB2YWx1ZSk7CiB9CiBFWFBPUlRfU1lNQk9MKGdwaW9fZGlyZWN0aW9uX291dHB1dCk7 CiAKK3N0YXRpYyBpbnQgZ3Bpb2luZm9fZGlyZWN0aW9uX2FjdGl2ZShzdHJ1Y3QgZ3Bpb19pbmZv ICpnaSwgYm9vbCB2YWx1ZSkKK3sKKwlyZXR1cm4gZ3Bpb2luZm9fZGlyZWN0aW9uX291dHB1dChn aSwgZ3Bpb19hZGp1c3RfdmFsdWUoZ2ksIHZhbHVlKSk7Cit9CisKIGludCBncGlvX2RpcmVjdGlv bl9hY3RpdmUodW5zaWduZWQgZ3BpbywgYm9vbCB2YWx1ZSkKIHsKIAlzdHJ1Y3QgZ3Bpb19pbmZv ICpnaSA9IGdwaW9fdG9fZGVzYyhncGlvKTsKQEAgLTIyNiwxMCArMjY2LDE5IEBAIGludCBncGlv X2RpcmVjdGlvbl9hY3RpdmUodW5zaWduZWQgZ3BpbywgYm9vbCB2YWx1ZSkKIAlpZiAoIWdpKQog CQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldHVybiBncGlvX2RpcmVjdGlvbl9vdXRwdXQoZ3Bpbywg Z3Bpb19hZGp1c3RfdmFsdWUoZ2ksIHZhbHVlKSk7CisJcmV0dXJuIGdwaW9pbmZvX2RpcmVjdGlv bl9hY3RpdmUoZ2ksIHZhbHVlKTsKIH0KIEVYUE9SVF9TWU1CT0woZ3Bpb19kaXJlY3Rpb25fYWN0 aXZlKTsKIAorc3RhdGljIGludCBncGlvaW5mb19kaXJlY3Rpb25faW5wdXQoc3RydWN0IGdwaW9f aW5mbyAqZ2kpCit7CisJaWYgKCFnaS0+Y2hpcC0+b3BzLT5kaXJlY3Rpb25faW5wdXQpCisJCXJl dHVybiAtRU5PU1lTOworCisJcmV0dXJuIGdpLT5jaGlwLT5vcHMtPmRpcmVjdGlvbl9pbnB1dChn aS0+Y2hpcCwKKwkJCQkJICAgICAgZ3Bpb2luZm9fY2hpcF9vZmZzZXQoZ2kpKTsKK30KKwogaW50 IGdwaW9fZGlyZWN0aW9uX2lucHV0KHVuc2lnbmVkIGdwaW8pCiB7CiAJc3RydWN0IGdwaW9faW5m byAqZ2kgPSBncGlvX3RvX2Rlc2MoZ3Bpbyk7CkBAIC0yNDIsMjIgKzI5MSwxNCBAQCBpbnQgZ3Bp b19kaXJlY3Rpb25faW5wdXQodW5zaWduZWQgZ3BpbykKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCi0JaWYgKCFnaS0+Y2hpcC0+b3BzLT5kaXJlY3Rpb25faW5wdXQpCi0JCXJldHVybiAtRU5P U1lTOwotCXJldHVybiBnaS0+Y2hpcC0+b3BzLT5kaXJlY3Rpb25faW5wdXQoZ2ktPmNoaXAsIGdw aW8gLSBnaS0+Y2hpcC0+YmFzZSk7CisJcmV0dXJuIGdwaW9pbmZvX2RpcmVjdGlvbl9pbnB1dChn aSk7CiB9CiBFWFBPUlRfU1lNQk9MKGdwaW9fZGlyZWN0aW9uX2lucHV0KTsKIAotLyoqCi0gKiBn cGlvX3JlcXVlc3Rfb25lIC0gcmVxdWVzdCBhIHNpbmdsZSBHUElPIHdpdGggaW5pdGlhbCBjb25m aWd1cmF0aW9uCi0gKiBAZ3BpbzoJdGhlIEdQSU8gbnVtYmVyCi0gKiBAZmxhZ3M6CUdQSU8gY29u ZmlndXJhdGlvbiBhcyBzcGVjaWZpZWQgYnkgR1BJT0ZfKgotICogQGxhYmVsOglhIGxpdGVyYWwg ZGVzY3JpcHRpb24gc3RyaW5nIG9mIHRoaXMgR1BJTwotICovCi1pbnQgZ3Bpb19yZXF1ZXN0X29u ZSh1bnNpZ25lZCBncGlvLCB1bnNpZ25lZCBsb25nIGZsYWdzLCBjb25zdCBjaGFyICpsYWJlbCkK K3N0YXRpYyBpbnQgZ3Bpb2luZm9fcmVxdWVzdF9vbmUoc3RydWN0IGdwaW9faW5mbyAqZ2ksIHVu c2lnbmVkIGxvbmcgZmxhZ3MsCisJCQkJY29uc3QgY2hhciAqbGFiZWwpCiB7CiAJaW50IGVycjsK LQlzdHJ1Y3QgZ3Bpb19pbmZvICpnaSA9IGdwaW9fdG9fZGVzYyhncGlvKTsKIAogCS8qCiAJICog Tm90IGFsbCBvZiB0aGUgZmxhZ3MgYmVsb3cgYXJlIG11bGl0LWJpdCwgYnV0LCBmb3IgdGhlIHNh a2UKQEAgLTI2OSwyNCArMzEwLDQwIEBAIGludCBncGlvX3JlcXVlc3Rfb25lKHVuc2lnbmVkIGdw aW8sIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IGNoYXIgKmxhYmVsKQogCWNvbnN0IGJvb2wg aW5pdF9hY3RpdmUgPSAoZmxhZ3MgJiBHUElPRl9JTklUX0FDVElWRSkgPT0gR1BJT0ZfSU5JVF9B Q1RJVkU7CiAJY29uc3QgYm9vbCBpbml0X2hpZ2ggICA9IChmbGFncyAmIEdQSU9GX0lOSVRfSElH SCkgPT0gR1BJT0ZfSU5JVF9ISUdIOwogCi0JZXJyID0gZ3Bpb19yZXF1ZXN0KGdwaW8sIGxhYmVs KTsKKwllcnIgPSBncGlvaW5mb19yZXF1ZXN0KGdpLCBsYWJlbCk7CiAJaWYgKGVycikKIAkJcmV0 dXJuIGVycjsKIAogCWdpLT5hY3RpdmVfbG93ID0gYWN0aXZlX2xvdzsKIAogCWlmIChkaXJfaW4p Ci0JCWVyciA9IGdwaW9fZGlyZWN0aW9uX2lucHV0KGdwaW8pOworCQllcnIgPSBncGlvaW5mb19k aXJlY3Rpb25faW5wdXQoZ2kpOwogCWVsc2UgaWYgKGxvZ2ljYWwpCi0JCWVyciA9IGdwaW9fZGly ZWN0aW9uX2FjdGl2ZShncGlvLCBpbml0X2FjdGl2ZSk7CisJCWVyciA9IGdwaW9pbmZvX2RpcmVj dGlvbl9hY3RpdmUoZ2ksIGluaXRfYWN0aXZlKTsKIAllbHNlCi0JCWVyciA9IGdwaW9fZGlyZWN0 aW9uX291dHB1dChncGlvLCBpbml0X2hpZ2gpOworCQllcnIgPSBncGlvaW5mb19kaXJlY3Rpb25f b3V0cHV0KGdpLCBpbml0X2hpZ2gpOwogCiAJaWYgKGVycikKLQkJZ3Bpb19mcmVlKGdwaW8pOwor CQlncGlvaW5mb19mcmVlKGdpKTsKIAogCXJldHVybiBlcnI7CiB9CisKKy8qKgorICogZ3Bpb19y ZXF1ZXN0X29uZSAtIHJlcXVlc3QgYSBzaW5nbGUgR1BJTyB3aXRoIGluaXRpYWwgY29uZmlndXJh dGlvbgorICogQGdwaW86CXRoZSBHUElPIG51bWJlcgorICogQGZsYWdzOglHUElPIGNvbmZpZ3Vy YXRpb24gYXMgc3BlY2lmaWVkIGJ5IEdQSU9GXyoKKyAqIEBsYWJlbDoJYSBsaXRlcmFsIGRlc2Ny aXB0aW9uIHN0cmluZyBvZiB0aGlzIEdQSU8KKyAqLworaW50IGdwaW9fcmVxdWVzdF9vbmUodW5z aWduZWQgZ3BpbywgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbGFiZWwpCit7CisJ c3RydWN0IGdwaW9faW5mbyAqZ2kgPSBncGlvX3RvX2Rlc2MoZ3Bpbyk7CisKKwlpZiAoIWdpKQor CQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBncGlvaW5mb19yZXF1ZXN0X29uZShnaSwgZmxh Z3MsIGxhYmVsKTsKK30KIEVYUE9SVF9TWU1CT0xfR1BMKGdwaW9fcmVxdWVzdF9vbmUpOwogCiAv KioKLS0gCjIuMjQuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK