From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 56E50941917 for ; Sun, 8 Oct 2023 15:39:24 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=/LMiYXlXrjzhsxJavUXDExk8qWXc+gMcfdMuljELIVo=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1696779562; v=1; b=p2ABabikFN8aSWRg6xXYAI2k5BGAIgJdHD2dcTgtVxk/CJtaJss64/SzsPc2w1O9I4aqko8j LYu4Kw+1e4rhdQt7JR2EGbkQ08x7KZbSyG6+mJJB8r6T+QLS0rq+nstudzBN7a8PNaVcicqzVQT NvgaPdCW0Zf3w1FreKA1n1QM= X-Received: by 127.0.0.2 with SMTP id o0woYY7687511x1wLIEVgmDb; Sun, 08 Oct 2023 08:39:22 -0700 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web11.40261.1696779562218248116 for ; Sun, 08 Oct 2023 08:39:22 -0700 X-Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-34-6hLtT2AwPOilZ28pzZyqhQ-1; Sun, 08 Oct 2023 11:39:17 -0400 X-MC-Unique: 6hLtT2AwPOilZ28pzZyqhQ-1 X-Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5608585A5BF; Sun, 8 Oct 2023 15:39:17 +0000 (UTC) X-Received: from lacos-laptop-9.usersys.redhat.com (unknown [10.39.192.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id 39CB849BB9A; Sun, 8 Oct 2023 15:39:16 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Gerd Hoffmann , Leif Lindholm , Sami Mujawar Subject: [edk2-devel] [PATCH 1/9] ArmVirtPkg: introduce FdtSerialPortAddressLib Date: Sun, 8 Oct 2023 17:39:04 +0200 Message-Id: <20231008153912.175941-2-lersek@redhat.com> In-Reply-To: <20231008153912.175941-1-lersek@redhat.com> References: <20231008153912.175941-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lersek@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 2bkeMGoPz88mrnppaC1StdQyx7686176AA= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII"; x-default=true X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=p2ABabik; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=redhat.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SW50cm9kdWNlIGEgbmV3IGxpYnJhcnkgY2xhc3MgKyBpbnN0YW5jZSBmb3I6CgotIGNvbGxlY3Rp bmcgc2VyaWFsIHBvcnQgYmFzZSBhZGRyZXNzZXMgZnJvbSB0aGUgZGV2aWNlIHRyZWUsCgotIGNv bGxlY3RpbmcgdGhlIC9jaG9zZW4gc3Rkb3V0LXBhdGggc2VyaWFsIHBvcnQgYmFzZSBhZGRyZXNz IGZyb20gdGhlCiAgZGV2aWNlIHRyZWUuCgpUaGUgbG9naWMgaXMgbG9vc2VseSBiYXNlZCBvbiB0 aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKCi0gU2VyaWFsUG9ydEdldEJhc2VBZGRyZXNzKCkKICBb QXJtVmlydFBrZy9MaWJyYXJ5L0ZkdFBMMDExU2VyaWFsUG9ydExpYi9FYXJseUZkdFBMMDExU2Vy aWFsUG9ydExpYi5jXQoKLSBQbGF0Zm9ybVBlaW0oKSBbQXJtVmlydFBrZy9MaWJyYXJ5L1BsYXRm b3JtUGVpTGliL1BsYXRmb3JtUGVpTGliLmNdCgotIEdldFNlcmlhbENvbnNvbGVQb3J0QWRkcmVz cygpCiAgW0FybVZpcnRQa2cvTGlicmFyeS9GZHQxNjU1MFNlcmlhbFBvcnRIb29rTGliL0Vhcmx5 RmR0MTY1NTBTZXJpYWxQb3J0SG9va0xpYi5jXQoKd2hpY2ggYXJlIGdvaW5nIHRvIGJlIGNvbnZl cnRlZCB0byBjbGllbnRzIG9mIHRoZSBuZXcgbGlicmFyeSBsYXRlci4KQ29weXJpZ2h0IG5vdGlj ZXMgZnJvbSB0aG9zZSBvdGhlciBmaWxlcyBhcmUgcHJlc2VydmVkLgoKVGhlIG5ldyBsaWJyYXJ5 IGZpeGVzIHRoZSBmb2xsb3dpbmcgd2FydHMsIGZvdW5kIGJ5IHJlYWRpbmcgdGhlIGV4aXN0ZW50 CmNvZGU6CgotIE5laXRoZXIgb2YgdGhlIHRocmVlIGZ1bmN0aW9ucyBjaGVjayB3aGV0aGVyIHRo ZSAicmVnIiBwcm9wZXJ0eSBleGlzdHMuCiAgKFRoaXMgbWF5IGJlIGltcGxpY2l0bHkgY2hlY2tl ZCB3aGVuIHRoZXkgY29tcGFyZSB0aGUgcHJvcGVydHkgc2l6ZSB0bwogIDE2LikKCi0gR2V0U2Vy aWFsQ29uc29sZVBvcnRBZGRyZXNzKCkgdXNlcyBTY2FuTWVtOCgpIGZvciBsb2NhdGluZyBhIGNv bG9uICgiOiIpCiAgbm9kZSBwYXRoIHNlcGFyYXRvciBpbiAic3Rkb3V0LXBhdGgiLCB3aGVuIEFz Y2lpU3RyU3RyKCkgY291bGQgd29yayBqdXN0CiAgYXMgZmluZS4gV2hpbGUgU2Nhbk1lbTgoKSBp cyBsaWtlbHkgZmFzdGVyLCAic3Rkb3V0LXBhdGgiIGlzIHByZXN1bWFibHkKICB2ZXJ5IHNob3J0 LCBhbmQgU2Nhbk1lbTgoKSBpbnRyb2R1Y2VzIGFuIGV4dHJhIGxpYiBjbGFzcyBkZXBlbmRlbmN5 CiAgKG5hbWVseSBCYXNlTWVtb3J5TGliKS4KCi0gSWYgU2Nhbk1lbTgoKSBmYWlscyB0byBsb2Nh dGUgYSBjb2xvbiBpbiAic3Rkb3V0LXBhdGgiLCB0aGVuCiAgR2V0U2VyaWFsQ29uc29sZVBvcnRB ZGRyZXNzKCkgcmUtbWVhc3VyZXMgdGhlIGxlbmd0aCBvZiB0aGUgd2hvbGUKICAic3Rkb3V0LXBh dGgiIHByb3BlcnR5LiBUaGlzIGlzIGNvbmNlcHR1YWxseSAoaWYgbm90IHBlcmZvcm1hbmNlLXdp c2UpCiAgZGlzdHVyYmluZywgYmVjYXVzZSB3ZSBrbm93IHRoZSB3aG9sZSBzaXplIG9mIHRoZSAi c3Rkb3V0LXBhdGgiIHByb3BlcnR5CiAgZnJvbSB0aGUgcHJvcGVydHkgbG9va3VwIGp1c3QgYmVm b3JlLCBzbyB3ZSBvbmx5IG5lZWQgdG8gc3VidHJhY3QgdGhlCiAgTlVMLXRlcm1pbmF0b3IgZm9y IGxlYXJuaW5nIHRoZSBsZW5ndGguCgotIEdldFNlcmlhbENvbnNvbGVQb3J0QWRkcmVzcygpIGRv ZXMgbm90IGNoZWNrIGlmIHRoZSBmaXJzdCAob3Igb25seSkgbm9kZQogIHBhdGggaW5zaWRlIHRo ZSAic3Rkb3V0LXBhdGgiIHByb3BlcnR5IGlzIGVtcHR5LiAoTm90IGEgYmlnIGRlYWwsIHRoZQog IHN1YnNlcXVlbnQgYWxpYXMgcmVzb2x1dGlvbiBzaG91bGQgc2ltcGx5IGZhaWwuKQoKLSBHZXRT ZXJpYWxDb25zb2xlUG9ydEFkZHJlc3MoKSBkb2VzIG5vdCB2ZXJpZnkgaWYgdGhlIG5vZGUgcGF0 aCByZXRyaWV2ZWQKICAoYW5kIHBvdGVudGlhbGx5IGFsaWFzLXJlc29sdmVkKSBmcm9tICJzdGRv dXQtcGF0aCIgY2FuIGJlIGxvY2F0ZWQgaW4KICB0aGUgZGV2aWNlIHRyZWU7IGl0IGFzc3VtZXMg aXQuCgotIENvZGUgaXMgZHVwbGljYXRlZCAob2YgY291cnNlKSBiZXR3ZWVuIFNlcmlhbFBvcnRH ZXRCYXNlQWRkcmVzcygpIGFuZAogIFBsYXRmb3JtUGVpbSgpLCBidXQgbW9yZSBzdXJwcmlzaW5n bHksIGFsbCB0aHJlZSBmdW5jdGlvbnMgZW1iZWQgdGhlCiAgc2FtZSBjb2RlIGZvciB2ZXJpZnlp bmcgdGhlICJzdGF0dXMiIHByb3BlcnR5IG9mIHRoZSBzZXJpYWwgcG9ydCBub2RlLAogIGFuZCBm b3IgY2hlY2tpbmcgYW5kIHJlYWRpbmcgaXRzICJyZWciIHByb3BlcnR5LgoKQ2M6IEFyZCBCaWVz aGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPgpDYzogR2VyZCBIb2ZmbWFubiA8a3Jh eGVsQHJlZGhhdC5jb20+CkNjOiBMZWlmIExpbmRob2xtIDxxdWljX2xsaW5kaG9sQHF1aWNpbmMu Y29tPgpDYzogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNvbT4KU2lnbmVkLW9mZi1i eTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4KLS0tCiBBcm1WaXJ0UGtnL0FybVZp cnRQa2cuZGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIEFybVZpcnRQa2cvQXJtVmlydC5kc2MuaW5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogQXJtVmlydFBrZy9JbmNsdWRlL0xpYnJhcnkv RmR0U2VyaWFsUG9ydEFkZHJlc3NMaWIuaCAgICAgICAgICAgICAgICAgICB8ICA4MyArKysrKysr CiBBcm1WaXJ0UGtnL0xpYnJhcnkvRmR0U2VyaWFsUG9ydEFkZHJlc3NMaWIvRmR0U2VyaWFsUG9y dEFkZHJlc3NMaWIuaW5mIHwgIDI3ICsrKwogQXJtVmlydFBrZy9MaWJyYXJ5L0ZkdFNlcmlhbFBv cnRBZGRyZXNzTGliL0ZkdFNlcmlhbFBvcnRBZGRyZXNzTGliLmMgICB8IDI1NiArKysrKysrKysr KysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzNjggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL0FybVZpcnRQa2cvQXJtVmlydFBrZy5kZWMgYi9Bcm1WaXJ0UGtnL0FybVZpcnRQa2cuZGVj CmluZGV4IDQ2NDVjOTFhODM3NS4uMGYyZDc4NzMyNzlmIDEwMDY0NAotLS0gYS9Bcm1WaXJ0UGtn L0FybVZpcnRQa2cuZGVjCisrKyBiL0FybVZpcnRQa2cvQXJtVmlydFBrZy5kZWMKQEAgLTI3LDYg KzI3LDcgQEAgW0luY2x1ZGVzLmNvbW1vbl0KIA0KIFtMaWJyYXJ5Q2xhc3Nlc10NCiAgIEFybVZp cnRNZW1JbmZvTGlifEluY2x1ZGUvTGlicmFyeS9Bcm1WaXJ0TWVtSW5mb0xpYi5oDQorICBGZHRT ZXJpYWxQb3J0QWRkcmVzc0xpYnxJbmNsdWRlL0xpYnJhcnkvRmR0U2VyaWFsUG9ydEFkZHJlc3NM aWIuaA0KIA0KIFtHdWlkcy5jb21tb25dDQogICBnQXJtVmlydFRva2VuU3BhY2VHdWlkID0geyAw eDBCNkY1Q0E3LCAweDRGNTMsIDB4NDQ1QSwgeyAweEI3LCAweDZFLCAweDJFLCAweDM2LCAweDVC LCAweDgwLCAweDYzLCAweDY2IH0gfQ0KZGlmZiAtLWdpdCBhL0FybVZpcnRQa2cvQXJtVmlydC5k c2MuaW5jIGIvQXJtVmlydFBrZy9Bcm1WaXJ0LmRzYy5pbmMKaW5kZXggM2Y3YmFjNmJmMzNhLi4w ZDcxMTU1MjU0OTcgMTAwNjQ0Ci0tLSBhL0FybVZpcnRQa2cvQXJtVmlydC5kc2MuaW5jCisrKyBi L0FybVZpcnRQa2cvQXJtVmlydC5kc2MuaW5jCkBAIC0xMjEsNiArMTIxLDcgQEAgW0xpYnJhcnlD bGFzc2VzLmNvbW1vbl0KICAgIyBBUk0gUEwwMTEgVUFSVCBEcml2ZXINCiAgIFBMMDExVWFydExp YnxBcm1QbGF0Zm9ybVBrZy9MaWJyYXJ5L1BMMDExVWFydExpYi9QTDAxMVVhcnRMaWIuaW5mDQog ICBTZXJpYWxQb3J0TGlifEFybVZpcnRQa2cvTGlicmFyeS9GZHRQTDAxMVNlcmlhbFBvcnRMaWIv RmR0UEwwMTFTZXJpYWxQb3J0TGliLmluZg0KKyAgRmR0U2VyaWFsUG9ydEFkZHJlc3NMaWJ8QXJt VmlydFBrZy9MaWJyYXJ5L0ZkdFNlcmlhbFBvcnRBZGRyZXNzTGliL0ZkdFNlcmlhbFBvcnRBZGRy ZXNzTGliLmluZg0KIA0KICAgUGVDb2ZmRXh0cmFBY3Rpb25MaWJ8QXJtUGtnL0xpYnJhcnkvRGVi dWdQZUNvZmZFeHRyYUFjdGlvbkxpYi9EZWJ1Z1BlQ29mZkV4dHJhQWN0aW9uTGliLmluZg0KICAg I1BlQ29mZkV4dHJhQWN0aW9uTGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VQZUNvZmZFeHRyYUFjdGlv bkxpYk51bGwvQmFzZVBlQ29mZkV4dHJhQWN0aW9uTGliTnVsbC5pbmYNCmRpZmYgLS1naXQgYS9B cm1WaXJ0UGtnL0luY2x1ZGUvTGlicmFyeS9GZHRTZXJpYWxQb3J0QWRkcmVzc0xpYi5oIGIvQXJt VmlydFBrZy9JbmNsdWRlL0xpYnJhcnkvRmR0U2VyaWFsUG9ydEFkZHJlc3NMaWIuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNkNGM5MTFmNThhYQotLS0gL2Rldi9u dWxsCisrKyBiL0FybVZpcnRQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZkdFNlcmlhbFBvcnRBZGRyZXNz TGliLmgKQEAgLTAsMCArMSw4MyBAQAorLyoqIEBmaWxlDQorICBEZXRlcm1pbmUgdGhlIGJhc2Ug YWRkcmVzc2VzIG9mIHNlcmlhbCBwb3J0cyBmcm9tIHRoZSBEZXZpY2UgVHJlZS4NCisNCisgIENv cHlyaWdodCAoQykgUmVkIEhhdA0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaWZuZGVmIEZEVF9TRVJJQUxfUE9SVF9BRERSRVNT X0xJQl9IXw0KKyNkZWZpbmUgRkRUX1NFUklBTF9QT1JUX0FERFJFU1NfTElCX0hfDQorDQorI2lu Y2x1ZGUgPEJhc2UuaD4NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBVSU5UTiAgICAgTnVtYmVy T2ZQb3J0czsNCisgIFVJTlQ2NCAgICBCYXNlQWRkcmVzc1syXTsNCit9IEZEVF9TRVJJQUxfUE9S VFM7DQorDQorLyoqDQorICBDb2xsZWN0IHRoZSBmaXJzdCBBUlJBWV9TSVpFIChQb3J0cy0+QmFz ZUFkZHJlc3MpIHNlcmlhbCBwb3J0cyBpbnRvIFBvcnRzIGZyb20NCisgIERldmljZVRyZWUuDQor DQorICBAcGFyYW1baW5dIERldmljZVRyZWUgIFRoZSBmbGF0IGRldmljZSB0cmVlIChGRFQpIHRv IHNjYW4uDQorDQorICBAcGFyYW1baW5dIENvbXBhdGlibGUgIExvb2sgZm9yIENvbXBhdGlibGUg aW4gdGhlICJjb21wYXRpYmxlIiBwcm9wZXJ0eSBvZiB0aGUNCisgICAgICAgICAgICAgICAgICAg ICAgICAgc2Nhbm5lZCBub2Rlcy4NCisNCisgIEBwYXJhbVtvdXRdIFBvcnRzICAgICAgT24gc3Vj Y2Vzc2Z1bCByZXR1cm4sIFBvcnRzLT5OdW1iZXJPZlBvcnRzIGNvbnRhaW5zIHRoZQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc2VyaWFsIHBvcnRzIGZvdW5kOyBpdCBpcyAo YSkgcG9zaXRpdmUgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgIChiKSBhdCBtb3N0IEFS UkFZX1NJWkUgKFBvcnRzLT5CYXNlQWRkcmVzcykuIElmIHRoZSBGRFQNCisgICAgICAgICAgICAg ICAgICAgICAgICAgaGFkIG1vcmUgc2VyaWFsIHBvcnRzLCB0aG9zZSBhcmUgbm90IHJlcG9ydGVk LiBPbg0KKyAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgdGhlIGNvbnRlbnRzIG9mIFBv cnRzIGFyZSBpbmRldGVybWluYXRlLg0KKw0KKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIgIERldmljZVRyZWUgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBGRFQNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuDQorDQorICBAcmV0dmFsIFJFVFVS Tl9OT1RfRk9VTkQgICAgICAgICAgTm8gY29tcGF0aWJsZSBhbmQgZW5hYmxlZCBzZXJpYWwgcG9y dCBoYXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGZvdW5kLg0K Kw0KKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIEF0IGxlYXN0IG9uZSBjb21w YXRpYmxlIGFuZCBlbmFibGVkIHNlcmlhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBvcnQgaGFzIGJlZW4gZm91bmQ7IFBvcnRzIGhhcyBiZWVuIGZpbGxlZA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLg0KKyoqLw0KK1JFVFVSTl9TVEFUVVMN CitFRklBUEkNCitGZHRTZXJpYWxHZXRQb3J0cyAoDQorICBJTiAgQ09OU1QgVk9JRCAgICAgICAg KkRldmljZVRyZWUsDQorICBJTiAgQ09OU1QgQ0hBUjggICAgICAgKkNvbXBhdGlibGUsDQorICBP VVQgRkRUX1NFUklBTF9QT1JUUyAgKlBvcnRzDQorICApOw0KKw0KKy8qKg0KKyAgRmV0Y2ggdGhl IGJhc2UgYWRkcmVzcyBvZiB0aGUgc2VyaWFsIHBvcnQgaWRlbnRpZmllZCBpbiB0aGUgInN0ZG91 dC1wYXRoIg0KKyAgcHJvcGVydHkgb2YgdGhlICIvY2hvc2VuIiBub2RlIGluIERldmljZVRyZWUu DQorDQorICBAcGFyYW1baW5dIERldmljZVRyZWUgICAgVGhlIGZsYXQgZGV2aWNlIHRyZWUgKEZE VCkgdG8gc2Nhbi4NCisNCisgIEBwYXJhbVtvdXRdIEJhc2VBZGRyZXNzICBPbiBzdWNjZXNzLCB0 aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBwcmVmZXJyZWQgc2VyaWFsDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgcG9ydCAodG8gYmUgdXNlZCBhcyBjb25zb2xlKS4gT24gZXJyb3IsIEJhc2VB ZGRyZXNzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IG1vZGlmaWVkLg0KKw0K KyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIERldmljZVRyZWUgZG9lcyBub3Qg cG9pbnQgdG8gYSB2YWxpZCBGRFQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoZWFkZXIuDQorDQorICBAcmV0dmFsIFJFVFVSTl9OT1RfRk9VTkQgICAgICAgICAgTm8gZW5h YmxlZCBjb25zb2xlIHBvcnQgaGFzIGJlZW4gZm91bmQuDQorDQorICBAcmV0dmFsIFJFVFVSTl9Q Uk9UT0NPTF9FUlJPUiAgICAgVGhlIGZpcnN0IChvciBvbmx5KSBub2RlIHBhdGggaW4gdGhlDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZG91dC1wYXRoIiBwcm9wZXJ0 eSBpcyBhbiBlbXB0eSBzdHJpbmcuDQorDQorICBAcmV0dmFsIFJFVFVSTl9QUk9UT0NPTF9FUlJP UiAgICAgVGhlIGNvbnNvbGUgcG9ydCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgRkRULA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdHMgYmFzZSBhZGRyZXNzIGlzIG5v dCBjb3JyZWN0bHkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNl bnRlZC4NCisNCisgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgICAgICBCYXNlQWRkcmVz cyBoYXMgYmVlbiBwb3B1bGF0ZWQuDQorKiovDQorUkVUVVJOX1NUQVRVUw0KK0VGSUFQSQ0KK0Zk dFNlcmlhbEdldENvbnNvbGVQb3J0ICgNCisgIElOICBDT05TVCBWT0lEICAqRGV2aWNlVHJlZSwN CisgIE9VVCBVSU5UNjQgICAgICAqQmFzZUFkZHJlc3MNCisgICk7DQorDQorI2VuZGlmDQpkaWZm IC0tZ2l0IGEvQXJtVmlydFBrZy9MaWJyYXJ5L0ZkdFNlcmlhbFBvcnRBZGRyZXNzTGliL0ZkdFNl cmlhbFBvcnRBZGRyZXNzTGliLmluZiBiL0FybVZpcnRQa2cvTGlicmFyeS9GZHRTZXJpYWxQb3J0 QWRkcmVzc0xpYi9GZHRTZXJpYWxQb3J0QWRkcmVzc0xpYi5pbmYKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTZkMGQzNzRiODAKLS0tIC9kZXYvbnVsbAorKysgYi9B cm1WaXJ0UGtnL0xpYnJhcnkvRmR0U2VyaWFsUG9ydEFkZHJlc3NMaWIvRmR0U2VyaWFsUG9ydEFk ZHJlc3NMaWIuaW5mCkBAIC0wLDAgKzEsMjcgQEAKKyMjIEBmaWxlDQorIyBEZXRlcm1pbmUgdGhl IGJhc2UgYWRkcmVzc2VzIG9mIHNlcmlhbCBwb3J0cyBmcm9tIHRoZSBEZXZpY2UgVHJlZS4NCisj DQorIyBDb3B5cmlnaHQgKEMpIFJlZCBIYXQNCisjDQorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyMjDQorDQorW0RlZmluZXNdDQorICBJTkZfVkVSU0lP TiAgICA9IDEuMjcNCisgIEJBU0VfTkFNRSAgICAgID0gRmR0U2VyaWFsUG9ydEFkZHJlc3NMaWIN CisgIEZJTEVfR1VJRCAgICAgID0gQUVCRTgxM0ItMjVFQS00MEU1LTk1QzQtMkI4NjRGRTFFOTUx DQorICBNT0RVTEVfVFlQRSAgICA9IEJBU0UNCisgIFZFUlNJT05fU1RSSU5HID0gMS4wDQorICBM SUJSQVJZX0NMQVNTICA9IEZkdFNlcmlhbFBvcnRBZGRyZXNzTGliDQorDQorW1NvdXJjZXNdDQor ICBGZHRTZXJpYWxQb3J0QWRkcmVzc0xpYi5jDQorDQorW1BhY2thZ2VzXQ0KKyAgQXJtVmlydFBr Zy9Bcm1WaXJ0UGtnLmRlYw0KKyAgRW1iZWRkZWRQa2cvRW1iZWRkZWRQa2cuZGVjDQorICBNZGVQ a2cvTWRlUGtnLmRlYw0KKw0KK1tMaWJyYXJ5Q2xhc3Nlc10NCisgIEJhc2VMaWINCisgIEZkdExp Yg0KZGlmZiAtLWdpdCBhL0FybVZpcnRQa2cvTGlicmFyeS9GZHRTZXJpYWxQb3J0QWRkcmVzc0xp Yi9GZHRTZXJpYWxQb3J0QWRkcmVzc0xpYi5jIGIvQXJtVmlydFBrZy9MaWJyYXJ5L0ZkdFNlcmlh bFBvcnRBZGRyZXNzTGliL0ZkdFNlcmlhbFBvcnRBZGRyZXNzTGliLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNjUwOGUwOTg5OGEKLS0tIC9kZXYvbnVsbAorKysg Yi9Bcm1WaXJ0UGtnL0xpYnJhcnkvRmR0U2VyaWFsUG9ydEFkZHJlc3NMaWIvRmR0U2VyaWFsUG9y dEFkZHJlc3NMaWIuYwpAQCAtMCwwICsxLDI1NiBAQAorLyoqIEBmaWxlDQorICBEZXRlcm1pbmUg dGhlIGJhc2UgYWRkcmVzc2VzIG9mIHNlcmlhbCBwb3J0cyBmcm9tIHRoZSBEZXZpY2UgVHJlZS4N CisNCisgIENvcHlyaWdodCAoQykgUmVkIEhhdA0KKyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAy MywgQXJtIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorICBDb3B5cmlnaHQgKGMpIDIw MDggLSAyMDEwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKyAgQ29weXJp Z2h0IChjKSAyMDE0IC0gMjAyMCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQorICBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQorKiovDQorDQorI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KKyNpbmNsdWRl IDxMaWJyYXJ5L0ZkdFNlcmlhbFBvcnRBZGRyZXNzTGliLmg+DQorI2luY2x1ZGUgPGxpYmZkdC5o Pg0KKw0KKy8qKg0KKyAgUmVhZCB0aGUgInJlZyIgcHJvcGVydHkgb2YgTm9kZSBpbiBEZXZpY2VU cmVlIGFzIGEgVUlOVDY0IGJhc2UgYWRkcmVzcy4NCisNCisgIEBwYXJhbVtpbl0gRGV2aWNlVHJl ZSAgICBUaGUgZmxhdCBkZXZpY2UgdHJlZSAoRkRUKSB0byBzY2FuLg0KKw0KKyAgQHBhcmFtW2lu XSBOb2RlICAgICAgICAgIFRoZSBub2RlIHRvIHJlYWQgdGhlICJyZWciIHByb3BlcnR5IG9mLg0K Kw0KKyAgQHBhcmFtW291dF0gQmFzZUFkZHJlc3MgIE9uIHN1Y2Nlc3MsIHRoZSBiYXNlIGFkZHJl c3MgcmVhZCBvdXQgb2YgTm9kZSdzICJyZWciDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJvcGVydHkuIE9uIGVycm9yLCBub3QgbW9kaWZpZWQuDQorDQorICBAcmV0dmFsIFJFVFVSTl9E RVZJQ0VfRVJST1IgICAgIE5vZGUgaGFzIGEgInN0YXR1cyIgcHJvcGVydHkgd2l0aCB2YWx1ZQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgZnJvbSAib2theSIu DQorDQorICBAcmV0dmFsIFJFVFVSTl9OT1RfRk9VTkQgICAgICAgIE5vZGUgZG9lcyBub3QgaGF2 ZSBhICJyZWciIHByb3BlcnR5Lg0KKw0KKyAgQHJldHZhbCBSRVRVUk5fQkFEX0JVRkZFUl9TSVpF ICBUaGUgc2l6ZSBvZiBOb2RlJ3MgInJlZyIgcHJvcGVydHkgaXMgbm90IDE2DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLg0KKw0KKyAgQHJldHZhbCBSRVRVUk5fU1VD Q0VTUyAgICAgICAgICBCYXNlQWRkcmVzcyBoYXMgYmVlbiBwb3B1bGF0ZWQuDQorKiovDQorU1RB VElDDQorUkVUVVJOX1NUQVRVUw0KK0dldEJhc2VBZGRyZXNzICgNCisgIElOICBDT05TVCBWT0lE ICAqRGV2aWNlVHJlZSwNCisgIElOICBJTlQzMiAgICAgICBOb2RlLA0KKyAgT1VUIFVJTlQ2NCAg ICAgICpCYXNlQWRkcmVzcw0KKyAgKQ0KK3sNCisgIENPTlNUIENIQVI4ICAqTm9kZVN0YXR1czsN CisgIENPTlNUIFZPSUQgICAqUmVnUHJvcDsNCisgIElOVDMyICAgICAgICBQcm9wU2l6ZTsNCisN CisgIE5vZGVTdGF0dXMgPSBmZHRfZ2V0cHJvcCAoRGV2aWNlVHJlZSwgTm9kZSwgInN0YXR1cyIs IE5VTEwpOw0KKyAgaWYgKChOb2RlU3RhdHVzICE9IE5VTEwpICYmIChBc2NpaVN0ckNtcCAoTm9k ZVN0YXR1cywgIm9rYXkiKSAhPSAwKSkgew0KKyAgICByZXR1cm4gUkVUVVJOX0RFVklDRV9FUlJP UjsNCisgIH0NCisNCisgIFJlZ1Byb3AgPSBmZHRfZ2V0cHJvcCAoRGV2aWNlVHJlZSwgTm9kZSwg InJlZyIsICZQcm9wU2l6ZSk7DQorICBpZiAoUmVnUHJvcCA9PSBOVUxMKSB7DQorICAgIHJldHVy biBSRVRVUk5fTk9UX0ZPVU5EOw0KKyAgfQ0KKw0KKyAgaWYgKFByb3BTaXplICE9IDE2KSB7DQor ICAgIHJldHVybiBSRVRVUk5fQkFEX0JVRkZFUl9TSVpFOw0KKyAgfQ0KKw0KKyAgKkJhc2VBZGRy ZXNzID0gZmR0NjRfdG9fY3B1IChSZWFkVW5hbGlnbmVkNjQgKFJlZ1Byb3ApKTsNCisgIHJldHVy biBSRVRVUk5fU1VDQ0VTUzsNCit9DQorDQorLyoqDQorICBDb2xsZWN0IHRoZSBmaXJzdCBBUlJB WV9TSVpFIChQb3J0cy0+QmFzZUFkZHJlc3MpIHNlcmlhbCBwb3J0cyBpbnRvIFBvcnRzIGZyb20N CisgIERldmljZVRyZWUuDQorDQorICBAcGFyYW1baW5dIERldmljZVRyZWUgIFRoZSBmbGF0IGRl dmljZSB0cmVlIChGRFQpIHRvIHNjYW4uDQorDQorICBAcGFyYW1baW5dIENvbXBhdGlibGUgIExv b2sgZm9yIENvbXBhdGlibGUgaW4gdGhlICJjb21wYXRpYmxlIiBwcm9wZXJ0eSBvZiB0aGUNCisg ICAgICAgICAgICAgICAgICAgICAgICAgc2Nhbm5lZCBub2Rlcy4NCisNCisgIEBwYXJhbVtvdXRd IFBvcnRzICAgICAgT24gc3VjY2Vzc2Z1bCByZXR1cm4sIFBvcnRzLT5OdW1iZXJPZlBvcnRzIGNv bnRhaW5zIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc2VyaWFsIHBv cnRzIGZvdW5kOyBpdCBpcyAoYSkgcG9zaXRpdmUgYW5kDQorICAgICAgICAgICAgICAgICAgICAg ICAgIChiKSBhdCBtb3N0IEFSUkFZX1NJWkUgKFBvcnRzLT5CYXNlQWRkcmVzcykuIElmIHRoZSBG RFQNCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFkIG1vcmUgc2VyaWFsIHBvcnRzLCB0aG9z ZSBhcmUgbm90IHJlcG9ydGVkLiBPbg0KKyAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwg dGhlIGNvbnRlbnRzIG9mIFBvcnRzIGFyZSBpbmRldGVybWluYXRlLg0KKw0KKyAgQHJldHZhbCBS RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIERldmljZVRyZWUgZG9lcyBub3QgcG9pbnQgdG8gYSB2 YWxpZCBGRFQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuDQor DQorICBAcmV0dmFsIFJFVFVSTl9OT1RfRk9VTkQgICAgICAgICAgTm8gY29tcGF0aWJsZSBhbmQg ZW5hYmxlZCBzZXJpYWwgcG9ydCBoYXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZWVuIGZvdW5kLg0KKw0KKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAg IEF0IGxlYXN0IG9uZSBjb21wYXRpYmxlIGFuZCBlbmFibGVkIHNlcmlhbA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQgaGFzIGJlZW4gZm91bmQ7IFBvcnRzIGhhcyBi ZWVuIGZpbGxlZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLg0KKyoq Lw0KK1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitGZHRTZXJpYWxHZXRQb3J0cyAoDQorICBJTiAg Q09OU1QgVk9JRCAgICAgICAgKkRldmljZVRyZWUsDQorICBJTiAgQ09OU1QgQ0hBUjggICAgICAg KkNvbXBhdGlibGUsDQorICBPVVQgRkRUX1NFUklBTF9QT1JUUyAgKlBvcnRzDQorICApDQorew0K KyAgSU5UMzIgIE5vZGU7DQorDQorICBpZiAoZmR0X2NoZWNrX2hlYWRlciAoRGV2aWNlVHJlZSkg IT0gMCkgew0KKyAgICByZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0K KyAgUG9ydHMtPk51bWJlck9mUG9ydHMgPSAwOw0KKyAgTm9kZSAgICAgICAgICAgICAgICAgPSBm ZHRfbmV4dF9ub2RlIChEZXZpY2VUcmVlLCAwLCBOVUxMKTsNCisgIHdoaWxlICgoTm9kZSA+IDAp ICYmDQorICAgICAgICAgKFBvcnRzLT5OdW1iZXJPZlBvcnRzIDwgQVJSQVlfU0laRSAoUG9ydHMt PkJhc2VBZGRyZXNzKSkpDQorICB7DQorICAgIENPTlNUIENIQVI4ICAqQ29tcGF0UHJvcDsNCisg ICAgSU5UMzIgICAgICAgIFByb3BTaXplOw0KKw0KKyAgICBDb21wYXRQcm9wID0gZmR0X2dldHBy b3AgKERldmljZVRyZWUsIE5vZGUsICJjb21wYXRpYmxlIiwgJlByb3BTaXplKTsNCisgICAgaWYg KENvbXBhdFByb3AgIT0gTlVMTCkgew0KKyAgICAgIENPTlNUIENIQVI4ICAqQ29tcGF0SXRlbTsN CisNCisgICAgICBDb21wYXRJdGVtID0gQ29tcGF0UHJvcDsNCisgICAgICB3aGlsZSAoKENvbXBh dEl0ZW0gPCBDb21wYXRQcm9wICsgUHJvcFNpemUpICYmDQorICAgICAgICAgICAgIChBc2NpaVN0 ckNtcCAoQ29tcGF0SXRlbSwgQ29tcGF0aWJsZSkgIT0gMCkpDQorICAgICAgew0KKyAgICAgICAg Q29tcGF0SXRlbSArPSBBc2NpaVN0ckxlbiAoQ29tcGF0SXRlbSkgKyAxOw0KKyAgICAgIH0NCisN CisgICAgICBpZiAoQ29tcGF0SXRlbSA8IENvbXBhdFByb3AgKyBQcm9wU2l6ZSkgew0KKyAgICAg ICAgUkVUVVJOX1NUQVRVUyAgU3RhdHVzOw0KKyAgICAgICAgVUlOVDY0ICAgICAgICAgQmFzZUFk ZHJlc3M7DQorDQorICAgICAgICBTdGF0dXMgPSBHZXRCYXNlQWRkcmVzcyAoRGV2aWNlVHJlZSwg Tm9kZSwgJkJhc2VBZGRyZXNzKTsNCisgICAgICAgIGlmICghUkVUVVJOX0VSUk9SIChTdGF0dXMp KSB7DQorICAgICAgICAgIFBvcnRzLT5CYXNlQWRkcmVzc1tQb3J0cy0+TnVtYmVyT2ZQb3J0cysr XSA9IEJhc2VBZGRyZXNzOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBO b2RlID0gZmR0X25leHRfbm9kZSAoRGV2aWNlVHJlZSwgTm9kZSwgTlVMTCk7DQorICB9DQorDQor ICByZXR1cm4gUG9ydHMtPk51bWJlck9mUG9ydHMgPiAwID8gUkVUVVJOX1NVQ0NFU1MgOiBSRVRV Uk5fTk9UX0ZPVU5EOw0KK30NCisNCisvKioNCisgIEZldGNoIHRoZSBiYXNlIGFkZHJlc3Mgb2Yg dGhlIHNlcmlhbCBwb3J0IGlkZW50aWZpZWQgaW4gdGhlICJzdGRvdXQtcGF0aCINCisgIHByb3Bl cnR5IG9mIHRoZSAiL2Nob3NlbiIgbm9kZSBpbiBEZXZpY2VUcmVlLg0KKw0KKyAgQHBhcmFtW2lu XSBEZXZpY2VUcmVlICAgIFRoZSBmbGF0IGRldmljZSB0cmVlIChGRFQpIHRvIHNjYW4uDQorDQor ICBAcGFyYW1bb3V0XSBCYXNlQWRkcmVzcyAgT24gc3VjY2VzcywgdGhlIGJhc2UgYWRkcmVzcyBv ZiB0aGUgcHJlZmVycmVkIHNlcmlhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQg KHRvIGJlIHVzZWQgYXMgY29uc29sZSkuIE9uIGVycm9yLCBCYXNlQWRkcmVzcw0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlzIG5vdCBtb2RpZmllZC4NCisNCisgIEByZXR2YWwgUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSICBEZXZpY2VUcmVlIGRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQg RkRUDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLg0KKw0KKyAg QHJldHZhbCBSRVRVUk5fTk9UX0ZPVU5EICAgICAgICAgIE5vIGVuYWJsZWQgY29uc29sZSBwb3J0 IGhhcyBiZWVuIGZvdW5kLg0KKw0KKyAgQHJldHZhbCBSRVRVUk5fUFJPVE9DT0xfRVJST1IgICAg IFRoZSBmaXJzdCAob3Igb25seSkgbm9kZSBwYXRoIGluIHRoZQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJzdGRvdXQtcGF0aCIgcHJvcGVydHkgaXMgYW4gZW1wdHkgc3Ry aW5nLg0KKw0KKyAgQHJldHZhbCBSRVRVUk5fUFJPVE9DT0xfRVJST1IgICAgIFRoZSBjb25zb2xl IHBvcnQgaGFzIGJlZW4gZm91bmQgaW4gdGhlIEZEVCwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBidXQgaXRzIGJhc2UgYWRkcmVzcyBpcyBub3QgY29ycmVjdGx5DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQuDQorDQorICBAcmV0 dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAgQmFzZUFkZHJlc3MgaGFzIGJlZW4gcG9wdWxh dGVkLg0KKyoqLw0KK1JFVFVSTl9TVEFUVVMNCitFRklBUEkNCitGZHRTZXJpYWxHZXRDb25zb2xl UG9ydCAoDQorICBJTiAgQ09OU1QgVk9JRCAgKkRldmljZVRyZWUsDQorICBPVVQgVUlOVDY0ICAg ICAgKkJhc2VBZGRyZXNzDQorICApDQorew0KKyAgSU5UMzIgICAgICAgICAgQ2hvc2VuTm9kZTsN CisgIENPTlNUIENIQVI4ICAgICpTdGRvdXRQYXRoUHJvcDsNCisgIElOVDMyICAgICAgICAgIFBy b3BTaXplOw0KKyAgQ09OU1QgQ0hBUjggICAgKlN0ZG91dFBhdGhFbmQ7DQorICBVSU5UTiAgICAg ICAgICBTdGRvdXRQYXRoTGVuZ3RoOw0KKyAgSU5UMzIgICAgICAgICAgQ29uc29sZU5vZGU7DQor ICBSRVRVUk5fU1RBVFVTICBTdGF0dXM7DQorDQorICBpZiAoZmR0X2NoZWNrX2hlYWRlciAoRGV2 aWNlVHJlZSkgIT0gMCkgew0KKyAgICByZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0K KyAgfQ0KKw0KKyAgQ2hvc2VuTm9kZSA9IGZkdF9wYXRoX29mZnNldCAoRGV2aWNlVHJlZSwgIi9j aG9zZW4iKTsNCisgIGlmIChDaG9zZW5Ob2RlIDwgMCkgew0KKyAgICByZXR1cm4gUkVUVVJOX05P VF9GT1VORDsNCisgIH0NCisNCisgIFN0ZG91dFBhdGhQcm9wID0gZmR0X2dldHByb3AgKA0KKyAg ICAgICAgICAgICAgICAgICAgIERldmljZVRyZWUsDQorICAgICAgICAgICAgICAgICAgICAgQ2hv c2VuTm9kZSwNCisgICAgICAgICAgICAgICAgICAgICAic3Rkb3V0LXBhdGgiLA0KKyAgICAgICAg ICAgICAgICAgICAgICZQcm9wU2l6ZQ0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICBpZiAo U3Rkb3V0UGF0aFByb3AgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gUkVUVVJOX05PVF9GT1VORDsN CisgIH0NCisNCisgIC8vDQorICAvLyBJZiBTdGRvdXRQYXRoUHJvcCBjb250YWlucyBhIGNvbG9u ICgiOiIpLCB0aGVuIHRoZSBjb2xvbiB0ZXJtaW5hdGVzIHRoZQ0KKyAgLy8gcGF0aCB3ZSdyZSBp bnRlcmVzdGVkIGluLg0KKyAgLy8NCisgIFN0ZG91dFBhdGhFbmQgPSBBc2NpaVN0clN0ciAoU3Rk b3V0UGF0aFByb3AsICI6Iik7DQorICBpZiAoU3Rkb3V0UGF0aEVuZCA9PSBOVUxMKSB7DQorICAg IFN0ZG91dFBhdGhMZW5ndGggPSBQcm9wU2l6ZSAtIDE7DQorICB9IGVsc2Ugew0KKyAgICBTdGRv dXRQYXRoTGVuZ3RoID0gU3Rkb3V0UGF0aEVuZCAtIFN0ZG91dFBhdGhQcm9wOw0KKyAgfQ0KKw0K KyAgaWYgKFN0ZG91dFBhdGhMZW5ndGggPT0gMCkgew0KKyAgICByZXR1cm4gUkVUVVJOX1BST1RP Q09MX0VSUk9SOw0KKyAgfQ0KKw0KKyAgaWYgKFN0ZG91dFBhdGhQcm9wWzBdID09ICcvJykgew0K KyAgICAvLw0KKyAgICAvLyBTdGRvdXRQYXRoUHJvcCBzdGFydHMgd2l0aCBhbiBhYnNvbHV0ZSBu b2RlIHBhdGguDQorICAgIC8vDQorICAgIENvbnNvbGVOb2RlID0gZmR0X3BhdGhfb2Zmc2V0X25h bWVsZW4gKA0KKyAgICAgICAgICAgICAgICAgICAgRGV2aWNlVHJlZSwNCisgICAgICAgICAgICAg ICAgICAgIFN0ZG91dFBhdGhQcm9wLA0KKyAgICAgICAgICAgICAgICAgICAgKElOVDMyKVN0ZG91 dFBhdGhMZW5ndGgNCisgICAgICAgICAgICAgICAgICAgICk7DQorICB9IGVsc2Ugew0KKyAgICAv Lw0KKyAgICAvLyBTdGRvdXRQYXRoUHJvcCBzdGFydHMgd2l0aCBhbiBhbGlhcy4NCisgICAgLy8N CisgICAgQ09OU1QgQ0hBUjggICpSZXNvbHZlZFN0ZG91dFBhdGg7DQorDQorICAgIFJlc29sdmVk U3Rkb3V0UGF0aCA9IGZkdF9nZXRfYWxpYXNfbmFtZWxlbiAoDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGV2aWNlVHJlZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRvdXRQ YXRoUHJvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5UMzIpU3Rkb3V0UGF0aExl bmd0aA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgIGlmIChSZXNvbHZlZFN0 ZG91dFBhdGggPT0gTlVMTCkgew0KKyAgICAgIHJldHVybiBSRVRVUk5fTk9UX0ZPVU5EOw0KKyAg ICB9DQorDQorICAgIENvbnNvbGVOb2RlID0gZmR0X3BhdGhfb2Zmc2V0IChEZXZpY2VUcmVlLCBS ZXNvbHZlZFN0ZG91dFBhdGgpOw0KKyAgfQ0KKw0KKyAgaWYgKENvbnNvbGVOb2RlIDwgMCkgew0K KyAgICByZXR1cm4gUkVUVVJOX05PVF9GT1VORDsNCisgIH0NCisNCisgIFN0YXR1cyA9IEdldEJh c2VBZGRyZXNzIChEZXZpY2VUcmVlLCBDb25zb2xlTm9kZSwgQmFzZUFkZHJlc3MpOw0KKyAgc3dp dGNoIChTdGF0dXMpIHsNCisgICAgY2FzZSBSRVRVUk5fTk9UX0ZPVU5EOg0KKyAgICBjYXNlIFJF VFVSTl9CQURfQlVGRkVSX1NJWkU6DQorICAgICAgcmV0dXJuIFJFVFVSTl9QUk9UT0NPTF9FUlJP UjsNCisgICAgY2FzZSBSRVRVUk5fU1VDQ0VTUzoNCisgICAgICByZXR1cm4gUkVUVVJOX1NVQ0NF U1M7DQorICAgIGRlZmF1bHQ6DQorICAgICAgcmV0dXJuIFJFVFVSTl9OT1RfRk9VTkQ7DQorICB9 DQorfQ0KCg0KCi09LT0tPS09LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJl Y2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUg KCMxMDkzOTEpOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS8xMDkzOTEK TXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vwcy5pby9tdC8xMDE4MzQ4NzUvNzY4NjE3NgpH cm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBz Oi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9sZWF2ZS8xMjM2NzExMS83Njg2MTc2LzE5MTM0NTYy MTIveHl6enkgW3JlYmVjY2FAb3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=