From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.groups.io with SMTP id smtpd.web12.3828.1608154233007949136 for ; Wed, 16 Dec 2020 13:30:33 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=iPu4cGvR; spf=pass (domain: redhat.com, ip: 216.205.24.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608154232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WsatyXsb+EjxF9QTxMdHEP3mLxQMDk1FyvEPL7PNbeo=; b=iPu4cGvRXBPV7VNw0dzKYMO14lNyJqqfUNR7X0+srLk2jroIRKS62HrzU9v/ZiyYUTFN6j wBa+lBN/h4mZXCSC+xd5SQ71IiVBsRN+IiAKGB5aMLGxstBFlXW01/skK5HketIjjhvHyE +ImXvfOMqV1CwoADEkWESHgjd3jtpLo= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-85-uabSQidGMeKpjSFUzRy6mg-1; Wed, 16 Dec 2020 16:30:28 -0500 X-MC-Unique: uabSQidGMeKpjSFUzRy6mg-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3C07D1926DA1; Wed, 16 Dec 2020 21:30:27 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-114-152.ams2.redhat.com [10.36.114.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id DB15E1971D; Wed, 16 Dec 2020 21:30:21 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io, virtio-fs@redhat.com, lersek@redhat.com Cc: Ard Biesheuvel , Jordan Justen , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [edk2 PATCH 09/48] OvmfPkg/VirtioFsDxe: implement the wrapper function for FUSE_OPENDIR Date: Wed, 16 Dec 2020 22:10:46 +0100 Message-Id: <20201216211125.19496-10-lersek@redhat.com> In-Reply-To: <20201216211125.19496-1-lersek@redhat.com> References: <20201216211125.19496-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 QWRkIHRoZSBWaXJ0aW9Gc0Z1c2VPcGVuRGlyKCkgZnVuY3Rpb24sIGZvciBzZW5kaW5nIHRoZSBG VVNFX09QRU5ESVIKY29tbWFuZCB0byB0aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlLgoKQ2M6 IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBhcm0uY29tPgpDYzogSm9yZGFuIEp1c3Rl biA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KQ2M6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOp IDxwaGlsbWRAcmVkaGF0LmNvbT4KUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTMwOTcKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtA cmVkaGF0LmNvbT4KLS0tCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9G cy5oIHwgIDE1ICsrKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5pbmYgICAgICAg ICB8ICAgMSArCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmggICAgICAgICAgIHwg ICA3ICsrCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VPcGVuRGlyLmMgICAgICAgICAgIHwgMTIw ICsrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMu aCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1ZpcnRpb0ZzLmgKaW5kZXggMDA2 ZTBmNWRlYmNiLi5jNDgxMDUzMjU1MTUgMTAwNjQ0Ci0tLSBhL092bWZQa2cvSW5jbHVkZS9JbmR1 c3RyeVN0YW5kYXJkL1ZpcnRpb0ZzLmgKKysrIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh bmRhcmQvVmlydGlvRnMuaApAQCAtNzYsMTYgKzc2LDE3IEBAIHR5cGVkZWYgc3RydWN0IHsKICNk ZWZpbmUgVklSVElPX0ZTX0ZVU0VfTUFKT1IgIDcNCiAjZGVmaW5lIFZJUlRJT19GU19GVVNFX01J Tk9SIDMxDQogDQogLy8NCiAvLyBGVVNFIG9wZXJhdGlvbiBjb2Rlcy4NCiAvLw0KIHR5cGVkZWYg ZW51bSB7DQogICBWaXJ0aW9Gc0Z1c2VPcEluaXQgICAgICAgID0gMjYsDQorICBWaXJ0aW9Gc0Z1 c2VPcE9wZW5EaXIgICAgID0gMjcsDQogfSBWSVJUSU9fRlNfRlVTRV9PUENPREU7DQogDQogI3By YWdtYSBwYWNrICgxKQ0KIC8vDQogLy8gUmVxdWVzdC1yZXNwb25zZSBoZWFkZXJzIGNvbW1vbiB0 byBhbGwgcmVxdWVzdCB0eXBlcy4NCiAvLw0KIHR5cGVkZWYgc3RydWN0IHsNCiAgIFVJTlQzMiBM ZW47DQpAQCAtMTIyLDExICsxMjMsMjUgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICBVSU5UMTYgTWF4 QmFja2dyb3VuZDsNCiAgIFVJTlQxNiBDb25nZXN0aW9uVGhyZXNob2xkOw0KICAgVUlOVDMyIE1h eFdyaXRlOw0KICAgVUlOVDMyIFRpbWVHcmFuOw0KICAgVUlOVDE2IE1heFBhZ2VzOw0KICAgVUlO VDE2IE1hcEFsaWdubWVudDsNCiAgIFVJTlQzMiBVbnVzZWRbOF07DQogfSBWSVJUSU9fRlNfRlVT RV9JTklUX1JFU1BPTlNFOw0KKw0KKy8vDQorLy8gSGVhZGVycyBmb3IgVmlydGlvRnNGdXNlT3BP cGVuRGlyLg0KKy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDMyIEZsYWdzOw0KKyAgVUlO VDMyIFVudXNlZDsNCit9IFZJUlRJT19GU19GVVNFX09QRU5fUkVRVUVTVDsNCisNCit0eXBlZGVm IHN0cnVjdCB7DQorICBVSU5UNjQgRmlsZUhhbmRsZTsNCisgIFVJTlQzMiBPcGVuRmxhZ3M7DQor ICBVSU5UMzIgUGFkZGluZzsNCit9IFZJUlRJT19GU19GVVNFX09QRU5fUkVTUE9OU0U7DQogI3By YWdtYSBwYWNrICgpDQogDQogI2VuZGlmIC8vIFZJUlRJT19GU19IXw0KZGlmZiAtLWdpdCBhL092 bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9W aXJ0aW9Gc0R4ZS5pbmYKaW5kZXggOGZkZGM1MDMxOGYxLi4wNTFhY2JkZDcxOTkgMTAwNjQ0Ci0t LSBhL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCisrKyBiL092bWZQa2cvVmly dGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCkBAIC03OCwxNiArNzgsMTcgQEAgW0RlZmluZXNdCiAN CiBbUGFja2FnZXNdDQogICBNZGVQa2cvTWRlUGtnLmRlYw0KICAgT3ZtZlBrZy9Pdm1mUGtnLmRl Yw0KIA0KIFtTb3VyY2VzXQ0KICAgRHJpdmVyQmluZGluZy5jDQogICBGdXNlSW5pdC5jDQorICBG dXNlT3BlbkRpci5jDQogICBIZWxwZXJzLmMNCiAgIFNpbXBsZUZzT3BlblZvbHVtZS5jDQogICBW aXJ0aW9Gc0R4ZS5oDQogDQogW0xpYnJhcnlDbGFzc2VzXQ0KICAgQmFzZUxpYg0KICAgRGVidWdM aWINCiAgIE1lbW9yeUFsbG9jYXRpb25MaWINCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRpb0Zz RHhlL1ZpcnRpb0ZzRHhlLmggYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgKaW5k ZXggYjhkNDY0MDExODQzLi45YzQ3NDU0NDM1YWUgMTAwNjQ0Ci0tLSBhL092bWZQa2cvVmlydGlv RnNEeGUvVmlydGlvRnNEeGUuaAorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhl LmgKQEAgLTE1OCwxNiArMTU4LDIzIEBAIFZpcnRpb0ZzRXJybm9Ub0VmaVN0YXR1cyAoCiAvLyBX cmFwcGVyIGZ1bmN0aW9ucyBmb3IgRlVTRSBjb21tYW5kcyAocHJpbWl0aXZlcykuDQogLy8NCiAN CiBFRklfU1RBVFVTDQogVmlydGlvRnNGdXNlSW5pdFNlc3Npb24gKA0KICAgSU4gT1VUIFZJUlRJ T19GUyAqVmlydGlvRnMNCiAgICk7DQogDQorRUZJX1NUQVRVUw0KK1ZpcnRpb0ZzRnVzZU9wZW5E aXIgKA0KKyAgSU4gT1VUIFZJUlRJT19GUyAqVmlydGlvRnMsDQorICBJTiAgICAgVUlOVDY0ICAg IE5vZGVJZCwNCisgICAgIE9VVCBVSU5UNjQgICAgKkZ1c2VIYW5kbGUNCisgICk7DQorDQogLy8N CiAvLyBFRklfU0lNUExFX0ZJTEVfU1lTVEVNX1BST1RPQ09MIG1lbWJlciBmdW5jdGlvbnMgZm9y IHRoZSBWaXJ0aW8gRmlsZXN5c3RlbQ0KIC8vIGRyaXZlci4NCiAvLw0KIA0KIEVGSV9TVEFUVVMN CiBFRklBUEkNCiBWaXJ0aW9Gc09wZW5Wb2x1bWUgKA0KZGlmZiAtLWdpdCBhL092bWZQa2cvVmly dGlvRnNEeGUvRnVzZU9wZW5EaXIuYyBiL092bWZQa2cvVmlydGlvRnNEeGUvRnVzZU9wZW5EaXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVlZjUyMjY5M2MzZgot LS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvVmlydGlvRnNEeGUvRnVzZU9wZW5EaXIuYwpAQCAt MCwwICsxLDEyMCBAQAorLyoqIEBmaWxlDQorICBGVVNFX09QRU5ESVIgd3JhcHBlciBmb3IgdGhl IFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZS4NCisNCisgIENvcHlyaWdodCAoQykgMjAyMCwgUmVk IEhhdCwgSW5jLg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCisqKi8NCisNCisjaW5jbHVkZSAiVmlydGlvRnNEeGUuaCINCisNCisvKioNCisgIFNl bmQgYSBGVVNFX09QRU5ESVIgcmVxdWVzdCB0byB0aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNl LCBmb3Igb3BlbmluZyBhDQorICBkaXJlY3RvcnkuDQorDQorICBUaGUgZnVuY3Rpb24gbWF5IG9u bHkgYmUgY2FsbGVkIGFmdGVyIFZpcnRpb0ZzRnVzZUluaXRTZXNzaW9uKCkgcmV0dXJucw0KKyAg c3VjY2Vzc2Z1bGx5IGFuZCBiZWZvcmUgVmlydGlvRnNVbmluaXQoKSBpcyBjYWxsZWQuDQorDQor ICBAcGFyYW1baW4sb3V0XSBWaXJ0aW9GcyAgVGhlIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZSB0 byBzZW5kIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZVU0VfT1BFTkRJUiByZXF1 ZXN0IHRvLiBPbiBvdXRwdXQsIHRoZSBGVVNFIHJlcXVlc3QNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb3VudGVyICJWaXJ0aW9Gcy0+UmVxdWVzdElkIiB3aWxsIGhhdmUgYmVlbg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGVkLg0KKw0KKyAgQHBhcmFtW2luXSBO b2RlSWQgICAgICAgIFRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGRpcmVjdG9yeSB0byBvcGVuLg0K Kw0KKyAgQHBhcmFtW291dF0gRnVzZUhhbmRsZSAgIFRoZSBvcGVuIGZpbGUgaGFuZGxlIHJldHVy bmVkIGJ5IHRoZSBWaXJ0aW8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc3lzdGVt IGRldmljZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIFRoZSBkaXJlY3RvcnkgaGFzIGJl ZW4gb3BlbmVkLg0KKw0KKyAgQHJldHVybiAgICAgICAgICAgICAgVGhlICJlcnJubyIgdmFsdWUg bWFwcGVkIHRvIGFuIEVGSV9TVEFUVVMgY29kZSwgaWYgdGhlDQorICAgICAgICAgICAgICAgICAg ICAgICBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UgZXhwbGljaXRseSByZXBvcnRlZCBhbiBlcnJv ci4NCisNCisgIEByZXR1cm4gICAgICAgICAgICAgIEVycm9yIGNvZGVzIHByb3BhZ2F0ZWQgZnJv bSBWaXJ0aW9Gc1NnTGlzdHNWYWxpZGF0ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgVmly dGlvRnNGdXNlTmV3UmVxdWVzdCgpLCBWaXJ0aW9Gc1NnTGlzdHNTdWJtaXQoKSwNCisgICAgICAg ICAgICAgICAgICAgICAgIFZpcnRpb0ZzRnVzZUNoZWNrUmVzcG9uc2UoKS4NCisqKi8NCitFRklf U1RBVFVTDQorVmlydGlvRnNGdXNlT3BlbkRpciAoDQorICBJTiBPVVQgVklSVElPX0ZTICpWaXJ0 aW9GcywNCisgIElOICAgICBVSU5UNjQgICAgTm9kZUlkLA0KKyAgICAgT1VUIFVJTlQ2NCAgICAq RnVzZUhhbmRsZQ0KKyAgKQ0KK3sNCisgIFZJUlRJT19GU19GVVNFX1JFUVVFU1QgICAgICAgIENv bW1vblJlcTsNCisgIFZJUlRJT19GU19GVVNFX09QRU5fUkVRVUVTVCAgIE9wZW5SZXE7DQorICBW SVJUSU9fRlNfSU9fVkVDVE9SICAgICAgICAgICBSZXFJb1ZlY1syXTsNCisgIFZJUlRJT19GU19T Q0FUVEVSX0dBVEhFUl9MSVNUIFJlcVNnTGlzdDsNCisgIFZJUlRJT19GU19GVVNFX1JFU1BPTlNF ICAgICAgIENvbW1vblJlc3A7DQorICBWSVJUSU9fRlNfRlVTRV9PUEVOX1JFU1BPTlNFICBPcGVu UmVzcDsNCisgIFZJUlRJT19GU19JT19WRUNUT1IgICAgICAgICAgIFJlc3BJb1ZlY1syXTsNCisg IFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUIFJlc3BTZ0xpc3Q7DQorICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQorDQorICAvLw0KKyAgLy8gU2V0IHVwIHRoZSBz Y2F0dGVyLWdhdGhlciBsaXN0cy4NCisgIC8vDQorICBSZXFJb1ZlY1swXS5CdWZmZXIgPSAmQ29t bW9uUmVxOw0KKyAgUmVxSW9WZWNbMF0uU2l6ZSAgID0gc2l6ZW9mIENvbW1vblJlcTsNCisgIFJl cUlvVmVjWzFdLkJ1ZmZlciA9ICZPcGVuUmVxOw0KKyAgUmVxSW9WZWNbMV0uU2l6ZSAgID0gc2l6 ZW9mIE9wZW5SZXE7DQorICBSZXFTZ0xpc3QuSW9WZWMgICAgPSBSZXFJb1ZlYzsNCisgIFJlcVNn TGlzdC5OdW1WZWMgICA9IEFSUkFZX1NJWkUgKFJlcUlvVmVjKTsNCisNCisgIFJlc3BJb1ZlY1sw XS5CdWZmZXIgPSAmQ29tbW9uUmVzcDsNCisgIFJlc3BJb1ZlY1swXS5TaXplICAgPSBzaXplb2Yg Q29tbW9uUmVzcDsNCisgIFJlc3BJb1ZlY1sxXS5CdWZmZXIgPSAmT3BlblJlc3A7DQorICBSZXNw SW9WZWNbMV0uU2l6ZSAgID0gc2l6ZW9mIE9wZW5SZXNwOw0KKyAgUmVzcFNnTGlzdC5Jb1ZlYyAg ICA9IFJlc3BJb1ZlYzsNCisgIFJlc3BTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChSZXNw SW9WZWMpOw0KKw0KKyAgLy8NCisgIC8vIFZhbGlkYXRlIHRoZSBzY2F0dGVyLWdhdGhlciBsaXN0 czsgY2FsY3VsYXRlIHRoZSB0b3RhbCB0cmFuc2ZlciBzaXplcy4NCisgIC8vDQorICBTdGF0dXMg PSBWaXJ0aW9Gc1NnTGlzdHNWYWxpZGF0ZSAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNwU2dM aXN0KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsN CisgIH0NCisNCisgIC8vDQorICAvLyBQb3B1bGF0ZSB0aGUgY29tbW9uIHJlcXVlc3QgaGVhZGVy Lg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzRnVzZU5ld1JlcXVlc3QgKFZpcnRpb0ZzLCAm Q29tbW9uUmVxLCBSZXFTZ0xpc3QuVG90YWxTaXplLA0KKyAgICAgICAgICAgICBWaXJ0aW9Gc0Z1 c2VPcE9wZW5EaXIsIE5vZGVJZCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAg IHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gUG9wdWxhdGUgdGhlIEZVU0Vf T1BFTkRJUi1zcGVjaWZpYyBmaWVsZHMuDQorICAvLw0KKyAgT3BlblJlcS5GbGFncyAgPSAwOw0K KyAgT3BlblJlcS5VbnVzZWQgPSAwOw0KKw0KKyAgLy8NCisgIC8vIFN1Ym1pdCB0aGUgcmVxdWVz dC4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc1NnTGlzdHNTdWJtaXQgKFZpcnRpb0ZzLCAm UmVxU2dMaXN0LCAmUmVzcFNnTGlzdCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQor ICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gVmVyaWZ5IHRoZSByZXNw b25zZSAoYWxsIHJlc3BvbnNlIGJ1ZmZlcnMgYXJlIGZpeGVkIHNpemUpLg0KKyAgLy8NCisgIFN0 YXR1cyA9IFZpcnRpb0ZzRnVzZUNoZWNrUmVzcG9uc2UgKCZSZXNwU2dMaXN0LCBDb21tb25SZXEu VW5pcXVlLCBOVUxMKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgaWYgKFN0 YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQorICAgICAgREVCVUcgKChERUJVR19FUlJPUiwg IiVhOiBMYWJlbD1cIiVzXCIgTm9kZUlkPSVMdSBFcnJubz0lZFxuIiwNCisgICAgICAgIF9fRlVO Q1RJT05fXywgVmlydGlvRnMtPkxhYmVsLCBOb2RlSWQsIENvbW1vblJlc3AuRXJyb3IpKTsNCisg ICAgICBTdGF0dXMgPSBWaXJ0aW9Gc0Vycm5vVG9FZmlTdGF0dXMgKENvbW1vblJlc3AuRXJyb3Ip Ow0KKyAgICB9DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gT3V0 cHV0IHRoZSBvcGVuIGZpbGUgaGFuZGxlLg0KKyAgLy8NCisgICpGdXNlSGFuZGxlID0gT3BlblJl c3AuRmlsZUhhbmRsZTsNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQotLSAKMi4xOS4xLjMu ZzMwMjQ3YWE1ZDIwMQoKCg==