From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 33E96C31E5B for ; Mon, 17 Jun 2019 16:07:01 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EE02C208C0 for ; Mon, 17 Jun 2019 16:07:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EE02C208C0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hcu9U-0003EC-5C; Mon, 17 Jun 2019 16:06:36 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hcu9R-0003E7-UR for xen-devel@lists.xenproject.org; Mon, 17 Jun 2019 16:06:34 +0000 X-Inumbo-ID: ddd6dc2e-9119-11e9-a79f-d7800d6d9ef3 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id ddd6dc2e-9119-11e9-a79f-d7800d6d9ef3; Mon, 17 Jun 2019 16:06:29 +0000 (UTC) Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=Paul.Durrant@citrix.com; spf=Pass smtp.mailfrom=Paul.Durrant@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of Paul.Durrant@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="Paul.Durrant@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa3.hc3370-68.iphmx.com: domain of Paul.Durrant@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="Paul.Durrant@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: sC7ZUhepzpVykk+mRLf5lcyeiO0mx69+RZO62v7Y8jXQbU9xwwiya2FyUfSEcG2uOrpgaIvsmO n6+pwIMDpr9+Ud4RNHbjRGOwNYBFqPPNSn3SwQpzeQWbsTs1XH46BFGDA5wh3QyEB/obLMsUEO BT9lPobelbpVbK1y6DqSYq+Li+OOvOCXVczLMINjjJrWzKZOmcoGuHj4NyfGyTN5xhtbmOaQA1 eyGq3BGOFimSj30K9TVpzNsYQM8Pvef0CWtBdOX2c71QLlRJekuvq50x+6xFwk/FqqDXLg9kl4 IGk= X-SBRS: 2.7 X-MesageID: 1840333 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.63,385,1557201600"; d="scan'208";a="1840333" From: Paul Durrant To: Anthony Perard , "qemu-devel@nongnu.org" Thread-Topic: [PATCH 1/4] xen: Fix build with public headers Thread-Index: AQHVJSMY18qYmnjZGUy+qttf4SbLoaagAplQ Date: Mon, 17 Jun 2019 16:05:53 +0000 Message-ID: References: <20190617154105.32323-1-anthony.perard@citrix.com> <20190617154105.32323-2-anthony.perard@citrix.com> In-Reply-To: <20190617154105.32323-2-anthony.perard@citrix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted MIME-Version: 1.0 Subject: Re: [Xen-devel] [PATCH 1/4] xen: Fix build with public headers X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony Perard , "xen-devel@lists.xenproject.org" , Stefano Stabellini Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFudGhvbnkgUEVSQVJEIFttYWls dG86YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbV0KPiBTZW50OiAxNyBKdW5lIDIwMTkgMTY6NDEK PiBUbzogcWVtdS1kZXZlbEBub25nbnUub3JnCj4gQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZzsgQW50aG9ueSBQZXJhcmQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+OyBTdGVm YW5vIFN0YWJlbGxpbmkKPiA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz47IFBhdWwgRHVycmFudCA8 UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4gU3ViamVjdDogW1BBVENIIDEvNF0geGVuOiBGaXgg YnVpbGQgd2l0aCBwdWJsaWMgaGVhZGVycwo+IAo+IEZvbGxvd2luZyAzNzY3N2Q3ZGIzICJDbGVh biB1cCBhIGZldyBoZWFkZXIgZ3VhcmQgc3ltYm9scyIsIFFFTVUgc3RhcnQKPiB0byBmYWlsIHRv IGJ1aWxkOgo+IAo+IEluIGZpbGUgaW5jbHVkZWQgZnJvbSB+L3hlbi90b29scy8uLi90b29scy9p bmNsdWRlL3hlbi9pby9ibGtpZi5oOjMxOjAsCj4gICAgICAgICAgICAgICAgICBmcm9tIH4veGVu L3Rvb2xzL3FlbXUteGVuLWRpci9ody9ibG9jay94ZW5fYmxraWYuaDo1LAo+ICAgICAgICAgICAg ICAgICAgZnJvbSB+L3hlbi90b29scy9xZW11LXhlbi1kaXIvaHcvYmxvY2sveGVuLWJsb2NrLmM6 MjI6Cj4gfi94ZW4vdG9vbHMvLi4vdG9vbHMvaW5jbHVkZS94ZW4vaW8vcmluZy5oOjY4OjA6IGVy cm9yOiAiX19DT05TVF9SSU5HX1NJWkUiIHJlZGVmaW5lZCBbLVdlcnJvcl0KPiAgI2RlZmluZSBf X0NPTlNUX1JJTkdfU0laRShfcywgX3N6KSBcCj4gCj4gSW4gZmlsZSBpbmNsdWRlZCBmcm9tIH4v eGVuL3Rvb2xzL3FlbXUteGVuLWRpci9ody9ibG9jay94ZW5fYmxraWYuaDo0OjAsCj4gICAgICAg ICAgICAgICAgICBmcm9tIH4veGVuL3Rvb2xzL3FlbXUteGVuLWRpci9ody9ibG9jay94ZW4tYmxv Y2suYzoyMjoKPiB+L3hlbi90b29scy9xZW11LXhlbi1kaXIvaW5jbHVkZS9ody94ZW4vaW8vcmlu Zy5oOjY2OjA6IG5vdGU6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cwo+IGRl ZmluaXRpb24KPiAgI2RlZmluZSBfX0NPTlNUX1JJTkdfU0laRShfcywgX3N6KSBcCj4gCj4gVGhl IGlzc3VlIGlzIHRoYXQgc29tZSBwdWJsaWMgeGVuIGhlYWRlcnMgaGF2ZSBiZWVuIGltcG9ydGVk IChieQo+IGY2NWVhZGI2MzkgInhlbjogaW1wb3J0IHJpbmcuaCBmcm9tIHhlbiIpIGJ1dCBub3Qg YWxsLiBXaXRoIHRoZSBjaGFuZ2UKPiBpbiB0aGUgZ3VhcmRzIHN5bWJvbGUsIHRoZSByaW5nLmgg aGVhZGVyIHN0YXJ0IHRvIGJlIGltcG9ydGVkIHR3aWNlLgo+IAo+IEZpeCB0aGUgYnVpbGQgYnkg aW1wb3J0aW5nIGJsa2lmLmggYW5kIHVzYmlmLmggYW5kIHRoZXJlIGRlcGVuZGVuY2llcy4KPiBT b21lIGNsZWFudXAgaGF2ZSBiZWVuIGRvbmUgb24gdGhvc2UgZmlsZXMuCj4gCj4gU3Vic2VxdWVu dCBwYXRjaGVzIHdpbGwgaW1wb3J0IG90aGVyIFhlbiBwdWJsaWMgaGVhZGVycy4KPiAKPiByaW5n LmggaGF2ZSBiZWVuIG1vdmVkIHRvICJody94ZW4vaW50ZXJmYWNlLyIgYWxvbmcgd2l0aCBibGtp Zi5oIGFuZAo+IHVzYmlmLmggYXMgdGhvc2UgZGVzY3JpYmUgaW50ZXJmYWNlIChhbmQgd291bGQg YWxsb3cgdG8gYWxzbyBpbXBvcnQgYQo+IHhlbi5oIGhlYWRlciBpZiB0aGF0IHdhcyBuZWNlc3Nh cnkpLgo+IAo+IHhlbi1tYXBjYWNoZS5jIGRvZXNuJ3QgbmVlZHMgZ3JhbnRfdGFibGUuaC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNv bT4KClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgoK PiAtLS0KPiAgaHcvOXBmcy94ZW4tOXBmcy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQo+ICBody9ibG9jay94ZW5fYmxraWYuaCAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCj4g IGh3L3VzYi94ZW4tdXNiLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KPiAgaHcv eGVuL3hlbi1sZWdhY3ktYmFja2VuZC5jICAgICAgICAgICAgICB8ICAgMiAtCj4gIGluY2x1ZGUv aHcveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oICAgfCAgMzYgKysKPiAgaW5jbHVkZS9ody94 ZW4vaW50ZXJmYWNlL2lvL2Jsa2lmLmggICAgICB8IDcxMiArKysrKysrKysrKysrKysrKysrKysr Kwo+ICBpbmNsdWRlL2h3L3hlbi97ID0+IGludGVyZmFjZX0vaW8vcmluZy5oIHwgICAwCj4gIGlu Y2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby91c2JpZi5oICAgICAgfCAyNTQgKysrKysrKysKPiAg OCBmaWxlcyBjaGFuZ2VkLCAxMDA1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvZ3JhbnRfdGFibGUuaAo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2Jsa2lmLmgK PiAgcmVuYW1lIGluY2x1ZGUvaHcveGVuL3sgPT4gaW50ZXJmYWNlfS9pby9yaW5nLmggKDEwMCUp Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vdXNiaWYu aAo+IAo+IGRpZmYgLS1naXQgYS9ody85cGZzL3hlbi05cGZzLmggYi9ody85cGZzL3hlbi05cGZz LmgKPiBpbmRleCBmYmRlZTNkODQzLi45MmRjODdlOWUwIDEwMDY0NAo+IC0tLSBhL2h3LzlwZnMv eGVuLTlwZnMuaAo+ICsrKyBiL2h3LzlwZnMveGVuLTlwZnMuaAo+IEBAIC0xNCw3ICsxNCw3IEBA Cj4gICNkZWZpbmUgSFdfOVBGU19YRU5fOVBGU19ICj4gCj4gICNpbmNsdWRlIDx4ZW4vaW8vcHJv dG9jb2xzLmg+Cj4gLSNpbmNsdWRlICJody94ZW4vaW8vcmluZy5oIgo+ICsjaW5jbHVkZSAiaHcv eGVuL2ludGVyZmFjZS9pby9yaW5nLmgiCj4gCj4gIC8qCj4gICAqIERvIG5vdCBtZXJnZSBpbnRv IHhlbi05cC1iYWNrZW5kLmM6IGNsYW5nIGRvZXNuJ3QgYWxsb3cgdW51c2VkIHN0YXRpYwo+IGRp ZmYgLS1naXQgYS9ody9ibG9jay94ZW5fYmxraWYuaCBiL2h3L2Jsb2NrL3hlbl9ibGtpZi5oCj4g aW5kZXggYTM1MzY5M2VhMC4uNWExMDk0ZDc5MyAxMDA2NDQKPiAtLS0gYS9ody9ibG9jay94ZW5f YmxraWYuaAo+ICsrKyBiL2h3L2Jsb2NrL3hlbl9ibGtpZi5oCj4gQEAgLTEsOCArMSw3IEBACj4g ICNpZm5kZWYgWEVOX0JMS0lGX0gKPiAgI2RlZmluZSBYRU5fQkxLSUZfSAo+IAo+IC0jaW5jbHVk ZSAiaHcveGVuL2lvL3JpbmcuaCIKPiAtI2luY2x1ZGUgPHhlbi9pby9ibGtpZi5oPgo+ICsjaW5j bHVkZSAiaHcveGVuL2ludGVyZmFjZS9pby9ibGtpZi5oIgo+ICAjaW5jbHVkZSA8eGVuL2lvL3By b3RvY29scy5oPgo+IAo+ICAvKgo+IGRpZmYgLS1naXQgYS9ody91c2IveGVuLXVzYi5jIGIvaHcv dXNiL3hlbi11c2IuYwo+IGluZGV4IGIyMGQwY2ZhZGYuLmRmYmI0MThlNzcgMTAwNjQ0Cj4gLS0t IGEvaHcvdXNiL3hlbi11c2IuYwo+ICsrKyBiL2h3L3VzYi94ZW4tdXNiLmMKPiBAQCAtMzIsOCAr MzIsNyBAQAo+ICAjaW5jbHVkZSAicWFwaS9xbXAvcWRpY3QuaCIKPiAgI2luY2x1ZGUgInFhcGkv cW1wL3FzdHJpbmcuaCIKPiAKPiAtI2luY2x1ZGUgImh3L3hlbi9pby9yaW5nLmgiCj4gLSNpbmNs dWRlIDx4ZW4vaW8vdXNiaWYuaD4KPiArI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8vdXNi aWYuaCIKPiAKPiAgLyoKPiAgICogQ2hlY2sgZm9yIHJlcXVpcmVkIHN1cHBvcnQgb2YgdXNiaWYu aDogVVNCSUZfU0hPUlRfTk9UX09LIHdhcyB0aGUgbGFzdAo+IGRpZmYgLS1naXQgYS9ody94ZW4v eGVuLWxlZ2FjeS1iYWNrZW5kLmMgYi9ody94ZW4veGVuLWxlZ2FjeS1iYWNrZW5kLmMKPiBpbmRl eCAzNmZkMWU5YjA5Li4zNzE1Yzk0ZmE2IDEwMDY0NAo+IC0tLSBhL2h3L3hlbi94ZW4tbGVnYWN5 LWJhY2tlbmQuYwo+ICsrKyBiL2h3L3hlbi94ZW4tbGVnYWN5LWJhY2tlbmQuYwo+IEBAIC0zNCw4 ICszNCw2IEBACj4gICNpbmNsdWRlICJody94ZW4veGVuX3B2ZGV2LmgiCj4gICNpbmNsdWRlICJt b25pdG9yL3FkZXYuaCIKPiAKPiAtI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgo+IC0KPiAg RGV2aWNlU3RhdGUgKnhlbl9zeXNkZXY7Cj4gIEJ1c1N0YXRlICp4ZW5fc3lzYnVzOwo+IAo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvZ3JhbnRfdGFibGUuaCBiL2luY2x1 ZGUvaHcveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwLi4zMDJlNDA0ODE0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2lu Y2x1ZGUvaHcveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oCj4gQEAgLTAsMCArMSwzNiBAQAo+ ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIGdyYW50X3RhYmxlLmgKPiArICoKPiArICog SW50ZXJmYWNlIGZvciBncmFudGluZyBmb3JlaWduIGFjY2VzcyB0byBwYWdlIGZyYW1lcywgYW5k IHJlY2VpdmluZwo+ICsgKiBwYWdlLW93bmVyc2hpcCB0cmFuc2ZlcnMuCj4gKyAqCj4gKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhIGNvcHkKPiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24gdGhlCj4gKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQo+ ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMDQsIEsgQSBGcmFzZXIKPiArICovCj4gKwo+ICsjaWZuZGVmIFhFTl9QVUJMSUNfR1JBTlRf VEFCTEVfSAo+ICsjZGVmaW5lIFhFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSAo+ICsKPiArLyoKPiAr ICogUmVmZXJlbmNlIHRvIGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9tYWluJ3MgZ3Jh bnQgdGFibGUuCj4gKyAqLwo+ICt0eXBlZGVmIHVpbnQzMl90IGdyYW50X3JlZl90Owo+ICsKPiAr I2VuZGlmIC8qIFhFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSCAqLwo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vYmxraWYuaCBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFj ZS9pby9ibGtpZi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi4y ZmU3NzI3MWM5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFj ZS9pby9ibGtpZi5oCj4gQEAgLTAsMCArMSw3MTIgQEAKPiArLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ICsgKiBibGtpZi5oCj4gKyAqCj4gKyAqIFVuaWZpZWQgYmxvY2stZGV2aWNlIEkvTyBpbnRl cmZhY2UgZm9yIFhlbiBndWVzdCBPU2VzLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5 Cj4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLCB0bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLCBhbmQvb3IKPiArICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh bGwgYmUgaW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF Ugo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQsIEtlaXIg RnJhc2VyCj4gKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU3BlY3RyYSBMb2dpYyBDb3Jwb3JhdGlv bgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgWEVOX1BVQkxJQ19JT19CTEtJRl9ICj4gKyNkZWZpbmUg WEVOX1BVQkxJQ19JT19CTEtJRl9ICj4gKwo+ICsjaW5jbHVkZSAicmluZy5oIgo+ICsjaW5jbHVk ZSAiLi4vZ3JhbnRfdGFibGUuaCIKPiArCj4gKy8qCj4gKyAqIEZyb250LT5iYWNrIG5vdGlmaWNh dGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcgYQo+ICsgKiBub3Rp ZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24gcmVxX2V2ZW50IChpLmUuLCB0aGUg Z2VuZXJpYwo+ICsgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFj cm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKPiArICogcmVxX2V2ZW50IGFwcHJvcHJpYXRlbHkgKGUu Zy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgo+ICsgKgo+ICsgKiBC YWNrLT5mcm9udCBub3RpZmljYXRpb25zOiBXaGVuIGVucXVldWluZyBhIG5ldyByZXNwb25zZSwg c2VuZGluZyBhCj4gKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25hbCBvbiBy c3BfZXZlbnQgKGkuZS4sIHRoZSBnZW5lcmljCj4gKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92 aWRlZCBieSB0aGUgcmluZyBtYWNyb3MpLiBGcm9udGVuZHMgbXVzdCBzZXQKPiArICogcnNwX2V2 ZW50IGFwcHJvcHJpYXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BP TlNFUygpKS4KPiArICovCj4gKwo+ICsjaWZuZGVmIGJsa2lmX3ZkZXZfdAo+ICsjZGVmaW5lIGJs a2lmX3ZkZXZfdCAgIHVpbnQxNl90Cj4gKyNlbmRpZgo+ICsjZGVmaW5lIGJsa2lmX3NlY3Rvcl90 IHVpbnQ2NF90Cj4gKwo+ICsvKgo+ICsgKiBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRp b24KPiArICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKyAqIFRoZSB0d28g aGFsdmVzIG9mIGEgWGVuIGJsb2NrIGRyaXZlciB1dGlsaXplIG5vZGVzIHdpdGhpbiB0aGUgWGVu U3RvcmUgdG8KPiArICogY29tbXVuaWNhdGUgY2FwYWJpbGl0aWVzIGFuZCB0byBuZWdvdGlhdGUg b3BlcmF0aW5nIHBhcmFtZXRlcnMuICBUaGlzCj4gKyAqIHNlY3Rpb24gZW51bWVyYXRlcyB0aGVz ZSBub2RlcyB3aGljaCByZXNpZGUgaW4gdGhlIHJlc3BlY3RpdmUgZnJvbnQgYW5kCj4gKyAqIGJh Y2tlbmQgcG9ydGlvbnMgb2YgdGhlIFhlblN0b3JlLCBmb2xsb3dpbmcgdGhlIFhlbkJ1cyBjb252 ZW50aW9uLgo+ICsgKgo+ICsgKiBBbGwgZGF0YSBpbiB0aGUgWGVuU3RvcmUgaXMgc3RvcmVkIGFz IHN0cmluZ3MuICBOb2RlcyBzcGVjaWZ5aW5nIG51bWVyaWMKPiArICogdmFsdWVzIGFyZSBlbmNv ZGVkIGluIGRlY2ltYWwuICBJbnRlZ2VyIHZhbHVlIHJhbmdlcyBsaXN0ZWQgYmVsb3cgYXJlCj4g KyAqIGV4cHJlc3NlZCBhcyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2Ygc3Rv cmluZyB0aGUgY29udmVyc2lvbgo+ICsgKiBvZiBhIHByb3Blcmx5IGZvcm1hdGVkIG5vZGUgc3Ry aW5nLCB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24uCj4gKyAqCj4gKyAqIEFueSBzcGVjaWZp ZWQgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgaWYgdGhlIGNvcnJlc3BvbmRpbmcgWGVuQnVz IG5vZGUKPiArICogaXMgbm90IHByZXNlbnQgaW4gdGhlIFhlblN0b3JlLgo+ICsgKgo+ICsgKiBY ZW5TdG9yZSBub2RlcyBpbiBzZWN0aW9ucyBtYXJrZWQgIlBSSVZBVEUiIGFyZSBzb2xlbHkgZm9y IHVzZSBieSB0aGUKPiArICogZHJpdmVyIHNpZGUgd2hvc2UgWGVuQnVzIHRyZWUgY29udGFpbnMg dGhlbS4KPiArICoKPiArICogWGVuU3RvcmUgbm9kZXMgbWFya2VkICJERVBSRUNBVEVEIiBpbiB0 aGVpciBub3RlcyBzZWN0aW9uIHNob3VsZCBvbmx5IGJlCj4gKyAqIHVzZWQgdG8gcHJvdmlkZSBp bnRlcm9wZXJhYmlsaXR5IHdpdGggbGVnYWN5IGltcGxlbWVudGF0aW9ucy4KPiArICoKPiArICog U2VlIHRoZSBYZW5CdXMgc3RhdGUgdHJhbnNpdGlvbiBkaWFncmFtIGJlbG93IGZvciBkZXRhaWxz IG9uIHdoZW4gWGVuQnVzCj4gKyAqIG5vZGVzIG11c3QgYmUgcHVibGlzaGVkIGFuZCB3aGVuIHRo ZXkgY2FuIGJlIHF1ZXJpZWQuCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1cyBOb2Rlcwo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCBEZXZp Y2UgSWRlbnRpZmljYXRpb24gKFBSSVZBVEUpIC0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsg KiBtb2RlCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgICJyIiAocmVhZCBvbmx5KSwgInciICh3 cml0YWJsZSkKPiArICoKPiArICogICAgICBUaGUgcmVhZCBvciB3cml0ZSBhY2Nlc3MgcGVybWlz c2lvbnMgdG8gdGhlIGJhY2tpbmcgc3RvcmUgdG8gYmUKPiArICogICAgICBncmFudGVkIHRvIHRo ZSBmcm9udGVuZC4KPiArICoKPiArICogcGFyYW1zCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg IHN0cmluZwo+ICsgKgo+ICsgKiAgICAgIEEgZnJlZSBmb3JtYXR0ZWQgc3RyaW5nIHByb3ZpZGlu ZyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIGZvciB0aGUKPiArICogICAgICBob3RwbHVnIHNjcmlw dCB0byBhdHRhY2ggdGhlIGRldmljZSBhbmQgcHJvdmlkZSBhIHN1aXRhYmxlCj4gKyAqICAgICAg aGFuZGxlciAoaWU6IGEgYmxvY2sgZGV2aWNlKSBmb3IgYmxrYmFjayB0byB1c2UuCj4gKyAqCj4g KyAqIHBoeXNpY2FsLWRldmljZQo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAiTUFKT1I6TUlO T1IiCj4gKyAqICAgICAgTm90ZXM6IDExCj4gKyAqCj4gKyAqICAgICAgTUFKT1IgYW5kIE1JTk9S IGFyZSB0aGUgbWFqb3IgbnVtYmVyIGFuZCBtaW5vciBudW1iZXIgb2YgdGhlCj4gKyAqICAgICAg YmFja2luZyBkZXZpY2UgcmVzcGVjdGl2ZWx5Lgo+ICsgKgo+ICsgKiBwaHlzaWNhbC1kZXZpY2Ut cGF0aAo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICBwYXRoIHN0cmluZwo+ICsgKgo+ICsgKiAg ICAgIEEgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGRpc2sg aW1hZ2UuIE9uCj4gKyAqICAgICAgTmV0QlNEIGFuZCBMaW51eCB0aGlzIGlzIGFsd2F5cyBhIGJs b2NrIGRldmljZSwgd2hpbGUgb24gRnJlZUJTRAo+ICsgKiAgICAgIGl0IGNhbiBiZSBlaXRoZXIg YSBibG9jayBkZXZpY2Ugb3IgYSByZWd1bGFyIGZpbGUuCj4gKyAqCj4gKyAqIHR5cGUKPiArICog ICAgICBWYWx1ZXM6ICAgICAgICAgImZpbGUiLCAicGh5IiwgInRhcCIKPiArICoKPiArICogICAg ICBUaGUgdHlwZSBvZiB0aGUgYmFja2luZyBkZXZpY2Uvb2JqZWN0Lgo+ICsgKgo+ICsgKgo+ICsg KiBkaXJlY3QtaW8tc2FmZQo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4p Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICoKPiArICogICAgICBUaGUgdW5kZXJs eWluZyBzdG9yYWdlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgZGlyZWN0IElPIG1lbW9yeQo+ICsg KiAgICAgIGxpZmV0aW1lIGJ1Zy4gIFNlZToKPiArICogICAgICAgIGh0dHA6Ly9saXN0cy54ZW4u b3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTItMTIvbXNnMDExNTQuaHRtbAo+ICsgKgo+ ICsgKiAgICAgIFRoZXJlZm9yZSB0aGlzIG9wdGlvbiBnaXZlcyB0aGUgYmFja2VuZCBwZXJtaXNz aW9uIHRvIHVzZQo+ICsgKiAgICAgIE9fRElSRUNULCBub3R3aXRoc3RhbmRpbmcgdGhhdCBidWcu Cj4gKyAqCj4gKyAqICAgICAgVGhhdCBpcywgaWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdXNl IG9mIE9fRElSRUNUIGlzIHNhZmUsCj4gKyAqICAgICAgaW4gY2lyY3Vtc3RhbmNlcyB3aGVyZSB3 ZSB3b3VsZCBub3JtYWxseSBoYXZlIGF2b2lkZWQgaXQgYXMgYQo+ICsgKiAgICAgIHdvcmthcm91 bmQgZm9yIHRoYXQgYnVnLiAgVGhpcyBvcHRpb24gaXMgbm90IHJlbGV2YW50IGZvciBhbGwKPiAr ICogICAgICBiYWNrZW5kcywgYW5kIGV2ZW4gbm90IG5lY2Vzc2FyaWx5IHN1cHBvcnRlZCBmb3Ig dGhvc2UgZm9yCj4gKyAqICAgICAgd2hpY2ggaXQgaXMgcmVsZXZhbnQuICBBIGJhY2tlbmQgd2hp Y2gga25vd3MgdGhhdCBpdCBpcyBub3QKPiArICogICAgICBhZmZlY3RlZCBieSB0aGUgYnVnIGNh biBpZ25vcmUgdGhpcyBvcHRpb24uCj4gKyAqCj4gKyAqICAgICAgVGhpcyBvcHRpb24gZG9lc24n dCByZXF1aXJlIGEgYmFja2VuZCB0byB1c2UgT19ESVJFQ1QsIHNvIGl0Cj4gKyAqICAgICAgc2hv dWxkIG5vdCBiZSB1c2VkIHRvIHRyeSB0byBjb250cm9sIHRoZSBjYWNoaW5nIGJlaGF2aW91ci4K PiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRmVhdHVyZXMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIGZlYXR1cmUtYmFycmll cgo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4pCj4gKyAqICAgICAgRGVm YXVsdCBWYWx1ZTogIDAKPiArICoKPiArICogICAgICBBIHZhbHVlIG9mICIxIiBpbmRpY2F0ZXMg dGhhdCB0aGUgYmFja2VuZCBjYW4gcHJvY2VzcyByZXF1ZXN0cwo+ICsgKiAgICAgIGNvbnRhaW5p bmcgdGhlIEJMS0lGX09QX1dSSVRFX0JBUlJJRVIgcmVxdWVzdCBvcGNvZGUuICBSZXF1ZXN0cwo+ ICsgKiAgICAgIG9mIHRoaXMgdHlwZSBtYXkgc3RpbGwgYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUg d2l0aCB0aGUKPiArICogICAgICBCTEtJRl9SU1BfRU9QTk9UU1VQUCByZXN1bHQgY29kZS4KPiAr ICoKPiArICogZmVhdHVyZS1mbHVzaC1jYWNoZQo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAw LzEgKGJvb2xlYW4pCj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICoKPiArICogICAg ICBBIHZhbHVlIG9mICIxIiBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFja2VuZCBjYW4gcHJvY2VzcyBy ZXF1ZXN0cwo+ICsgKiAgICAgIGNvbnRhaW5pbmcgdGhlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNI RSByZXF1ZXN0IG9wY29kZS4gIFJlcXVlc3RzCj4gKyAqICAgICAgb2YgdGhpcyB0eXBlIG1heSBz dGlsbCBiZSByZXR1cm5lZCBhdCBhbnkgdGltZSB3aXRoIHRoZQo+ICsgKiAgICAgIEJMS0lGX1JT UF9FT1BOT1RTVVBQIHJlc3VsdCBjb2RlLgo+ICsgKgo+ICsgKiBmZWF0dXJlLWRpc2NhcmQKPiAr ICogICAgICBWYWx1ZXM6ICAgICAgICAgMC8xIChib29sZWFuKQo+ICsgKiAgICAgIERlZmF1bHQg VmFsdWU6ICAwCj4gKyAqCj4gKyAqICAgICAgQSB2YWx1ZSBvZiAiMSIgaW5kaWNhdGVzIHRoYXQg dGhlIGJhY2tlbmQgY2FuIHByb2Nlc3MgcmVxdWVzdHMKPiArICogICAgICBjb250YWluaW5nIHRo ZSBCTEtJRl9PUF9ESVNDQVJEIHJlcXVlc3Qgb3Bjb2RlLiAgUmVxdWVzdHMKPiArICogICAgICBv ZiB0aGlzIHR5cGUgbWF5IHN0aWxsIGJlIHJldHVybmVkIGF0IGFueSB0aW1lIHdpdGggdGhlCj4g KyAqICAgICAgQkxLSUZfUlNQX0VPUE5PVFNVUFAgcmVzdWx0IGNvZGUuCj4gKyAqCj4gKyAqIGZl YXR1cmUtcGVyc2lzdGVudAo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4p Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICogICAgICBOb3RlczogNwo+ICsgKgo+ ICsgKiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBr ZWVwIHRoZSBncmFudHMgdXNlZAo+ICsgKiAgICAgIGJ5IHRoZSBmcm9udGVuZCBkcml2ZXIgbWFw cGVkLCBzbyB0aGUgc2FtZSBzZXQgb2YgZ3JhbnRzIHNob3VsZCBiZQo+ICsgKiAgICAgIHVzZWQg aW4gYWxsIHRyYW5zYWN0aW9ucy4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGdyYW50cyB0aGUgYmFj a2VuZAo+ICsgKiAgICAgIGNhbiBtYXAgcGVyc2lzdGVudGx5IGRlcGVuZHMgb24gdGhlIGltcGxl bWVudGF0aW9uLCBidXQgaWRlYWxseSBpdAo+ICsgKiAgICAgIHNob3VsZCBiZSBSSU5HX1NJWkUg KiBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QuIFVzaW5nIHRoaXMKPiArICogICAgICBm ZWF0dXJlIHRoZSBiYWNrZW5kIGRvZXNuJ3QgbmVlZCB0byB1bm1hcCBlYWNoIGdyYW50LCBwcmV2 ZW50aW5nCj4gKyAqICAgICAgY29zdGx5IFRMQiBmbHVzaGVzLiBUaGUgYmFja2VuZCBkcml2ZXIg c2hvdWxkIG9ubHkgbWFwIGdyYW50cwo+ICsgKiAgICAgIHBlcnNpc3RlbnRseSBpZiB0aGUgZnJv bnRlbmQgc3VwcG9ydHMgaXQuIElmIGEgYmFja2VuZCBkcml2ZXIgY2hvb3Nlcwo+ICsgKiAgICAg IHRvIHVzZSB0aGUgcGVyc2lzdGVudCBwcm90b2NvbCB3aGVuIHRoZSBmcm9udGVuZCBkb2Vzbid0 IHN1cHBvcnQgaXQsCj4gKyAqICAgICAgaXQgd2lsbCBwcm9iYWJseSBoaXQgdGhlIG1heGltdW0g bnVtYmVyIG9mIHBlcnNpc3RlbnRseSBtYXBwZWQgZ3JhbnRzCj4gKyAqICAgICAgKGR1ZSB0byB0 aGUgZmFjdCB0aGF0IHRoZSBmcm9udGVuZCB3b24ndCBiZSByZXVzaW5nIHRoZSBzYW1lIGdyYW50 cyksCj4gKyAqICAgICAgYW5kIGZhbGwgYmFjayB0byBub24tcGVyc2lzdGVudCBtb2RlLiBCYWNr ZW5kIGltcGxlbWVudGF0aW9ucyBtYXkKPiArICogICAgICBzaHJpbmsgb3IgZXhwYW5kIHRoZSBu dW1iZXIgb2YgcGVyc2lzdGVudGx5IG1hcHBlZCBncmFudHMgd2l0aG91dAo+ICsgKiAgICAgIG5v dGlmeWluZyB0aGUgZnJvbnRlbmQgZGVwZW5kaW5nIG9uIG1lbW9yeSBjb25zdHJhaW50cyAodGhp cyBtaWdodAo+ICsgKiAgICAgIGNhdXNlIGEgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24pLgo+ICsg Kgo+ICsgKiAgICAgIElmIGEgYmFja2VuZCBkcml2ZXIgd2FudHMgdG8gbGltaXQgdGhlIG1heGlt dW0gbnVtYmVyIG9mIHBlcnNpc3RlbnRseQo+ICsgKiAgICAgIG1hcHBlZCBncmFudHMgdG8gYSB2 YWx1ZSBsZXNzIHRoYW4gUklOR19TSVpFICoKPiArICogICAgICBCTEtJRl9NQVhfU0VHTUVOVFNf UEVSX1JFUVVFU1QgYSBMUlUgc3RyYXRlZ3kgc2hvdWxkIGJlIHVzZWQgdG8KPiArICogICAgICBk aXNjYXJkIHRoZSBncmFudHMgdGhhdCBhcmUgbGVzcyBjb21tb25seSB1c2VkLiBVc2luZyBhIExS VSBpbiB0aGUKPiArICogICAgICBiYWNrZW5kIGRyaXZlciBwYWlyZWQgd2l0aCBhIExJRk8gcXVl dWUgaW4gdGhlIGZyb250ZW5kIHdpbGwKPiArICogICAgICBhbGxvdyB1cyB0byBoYXZlIGJldHRl ciBwZXJmb3JtYW5jZSBpbiB0aGlzIHNjZW5hcmlvLgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gKyAqCj4gKyAqIG1heC1yaW5nLXBhZ2Utb3JkZXIKPiArICogICAgICBWYWx1ZXM6 ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCj4gKyAqICAg ICAgTm90ZXM6ICAgICAgICAgIDEsIDMKPiArICoKPiArICogICAgICBUaGUgbWF4aW11bSBzdXBw b3J0ZWQgc2l6ZSBvZiB0aGUgcmVxdWVzdCByaW5nIGJ1ZmZlciBpbiB1bml0cyBvZgo+ICsgKiAg ICAgIGxiKG1hY2hpbmUgcGFnZXMpLiAoZS5nLiAwID09IDEgcGFnZSwgIDEgPSAyIHBhZ2VzLCAy ID09IDQgcGFnZXMsCj4gKyAqICAgICAgZXRjLikuCj4gKyAqCj4gKyAqIG1heC1yaW5nLXBhZ2Vz Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KPiArICogICAgICBEZWZhdWx0 IFZhbHVlOiAgMQo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICBERVBSRUNBVEVELCAyLCAzCj4g KyAqCj4gKyAqICAgICAgVGhlIG1heGltdW0gc3VwcG9ydGVkIHNpemUgb2YgdGhlIHJlcXVlc3Qg cmluZyBidWZmZXIgaW4gdW5pdHMgb2YKPiArICogICAgICBtYWNoaW5lIHBhZ2VzLiAgVGhlIHZh bHVlIG11c3QgYmUgYSBwb3dlciBvZiAyLgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gQmFja2VuZCBEZXZpY2UgUHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gKyAqCj4gKyAqIGRpc2NhcmQtZW5hYmxlCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAv MSAoYm9vbGVhbikKPiArICogICAgICBEZWZhdWx0IFZhbHVlOiAgMQo+ICsgKgo+ICsgKiAgICAg IFRoaXMgb3B0aW9uYWwgcHJvcGVydHksIHNldCBieSB0aGUgdG9vbHN0YWNrLCBpbnN0cnVjdHMg dGhlIGJhY2tlbmQKPiArICogICAgICB0byBvZmZlciAob3Igbm90IHRvIG9mZmVyKSBkaXNjYXJk IHRvIHRoZSBmcm9udGVuZC4gSWYgdGhlIHByb3BlcnR5Cj4gKyAqICAgICAgaXMgbWlzc2luZyB0 aGUgYmFja2VuZCBzaG91bGQgb2ZmZXIgZGlzY2FyZCBpZiB0aGUgYmFja2luZyBzdG9yYWdlCj4g KyAqICAgICAgYWN0dWFsbHkgc3VwcG9ydHMgaXQuCj4gKyAqCj4gKyAqIGRpc2NhcmQtYWxpZ25t ZW50Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KPiArICogICAgICBEZWZh dWx0IFZhbHVlOiAgMAo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICA0LCA1Cj4gKyAqCj4gKyAq ICAgICAgVGhlIG9mZnNldCwgaW4gYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2aXJ0 dWFsIGJsb2NrIGRldmljZSwKPiArICogICAgICB0byB0aGUgZmlyc3QsIGFkZHJlc3NhYmxlLCBk aXNjYXJkIGV4dGVudCBvbiB0aGUgdW5kZXJseWluZyBkZXZpY2UuCj4gKyAqCj4gKyAqIGRpc2Nh cmQtZ3JhbnVsYXJpdHkKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsg KiAgICAgIERlZmF1bHQgVmFsdWU6ICA8InNlY3Rvci1zaXplIj4KPiArICogICAgICBOb3Rlczog ICAgICAgICAgNAo+ICsgKgo+ICsgKiAgICAgIFRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGlu ZGl2aWR1YWxseSBhZGRyZXNzYWJsZSBkaXNjYXJkIGV4dGVudHMKPiArICogICAgICBvZiB0aGUg dW5kZXJseWluZyBkZXZpY2UuCj4gKyAqCj4gKyAqIGRpc2NhcmQtc2VjdXJlCj4gKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikKPiArICogICAgICBEZWZhdWx0IFZhbHVlOiAg MAo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICAxMAo+ICsgKgo+ICsgKiAgICAgIEEgdmFsdWUg b2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBwcm9jZXNzIEJMS0lGX09QX0RJ U0NBUkQKPiArICogICAgICByZXF1ZXN0cyB3aXRoIHRoZSBCTEtJRl9ESVNDQVJEX1NFQ1VSRSBm bGFnIHNldC4KPiArICoKPiArICogaW5mbwo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWlu dDMyX3Q+IChiaXRtYXApCj4gKyAqCj4gKyAqICAgICAgQSBjb2xsZWN0aW9uIG9mIGJpdCBmbGFn cyBkZXNjcmliaW5nIGF0dHJpYnV0ZXMgb2YgdGhlIGJhY2tpbmcKPiArICogICAgICBkZXZpY2Uu ICBUaGUgVkRJU0tfKiBtYWNyb3MgZGVmaW5lIHRoZSBtZWFuaW5nIG9mIGVhY2ggYml0Cj4gKyAq ICAgICAgbG9jYXRpb24uCj4gKyAqCj4gKyAqIHNlY3Rvci1zaXplCj4gKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDx1aW50MzJfdD4KPiArICoKPiArICogICAgICBUaGUgbG9naWNhbCBibG9jayBz aXplLCBpbiBieXRlcywgb2YgdGhlIHVuZGVybHlpbmcgc3RvcmFnZS4gVGhpcwo+ICsgKiAgICAg IG11c3QgYmUgYSBwb3dlciBvZiB0d28gd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgNTEyLgo+ICsg Kgo+ICsgKiAgICAgIE5PVEU6IEJlY2F1c2Ugb2YgaW1wbGVtZW50YXRpb24gYnVncyBpbiBzb21l IGZyb250ZW5kcyB0aGlzIG11c3QgYmUKPiArICogICAgICAgICAgICBzZXQgdG8gNTEyLCB1bmxl c3MgdGhlIGZyb250ZW5kIGFkdmVydGl6ZXMgYSBub24temVybyB2YWx1ZQo+ICsgKiAgICAgICAg ICAgIGluIGl0cyAiZmVhdHVyZS1sYXJnZS1zZWN0b3Itc2l6ZSIgeGVuYnVzIG5vZGUuIChTZWUg YmVsb3cpLgo+ICsgKgo+ICsgKiBwaHlzaWNhbC1zZWN0b3Itc2l6ZQo+ICsgKiAgICAgIFZhbHVl czogICAgICAgICA8dWludDMyX3Q+Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDwic2VjdG9y LXNpemUiPgo+ICsgKgo+ICsgKiAgICAgIFRoZSBwaHlzaWNhbCBibG9jayBzaXplLCBpbiBieXRl cywgb2YgdGhlIGJhY2tlbmQgc3RvcmFnZS4gVGhpcwo+ICsgKiAgICAgIG11c3QgYmUgYW4gaW50 ZWdlciBtdWx0aXBsZSBvZiAic2VjdG9yLXNpemUiLgo+ICsgKgo+ICsgKiBzZWN0b3JzCj4gKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50NjRfdD4KPiArICoKPiArICogICAgICBUaGUgc2l6 ZSBvZiB0aGUgYmFja2VuZCBkZXZpY2UsIGV4cHJlc3NlZCBpbiB1bml0cyBvZiAic2VjdG9yLXNp emUiLgo+ICsgKiAgICAgIFRoZSBwcm9kdWN0IG9mICJzZWN0b3Itc2l6ZSIgYW5kICJzZWN0b3Jz IiBtdXN0IGFsc28gYmUgYW4gaW50ZWdlcgo+ICsgKiAgICAgIG11bHRpcGxlIG9mICJwaHlzaWNh bC1zZWN0b3Itc2l6ZSIsIGlmIHRoYXQgbm9kZSBpcyBwcmVzZW50Lgo+ICsgKgo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQg WGVuQnVzIE5vZGVzCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiArICoKPiArICogZXZlbnQtY2hhbm5lbAo+ICsgKiAgICAgIFZhbHVlczog ICAgICAgICA8dWludDMyX3Q+Cj4gKyAqCj4gKyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhl IFhlbiBldmVudCBjaGFubmVsIHVzZWQgdG8gc2lnbmFsIGFjdGl2aXR5Cj4gKyAqICAgICAgaW4g dGhlIHJpbmcgYnVmZmVyLgo+ICsgKgo+ICsgKiByaW5nLXJlZgo+ICsgKiAgICAgIFZhbHVlczog ICAgICAgICA8dWludDMyX3Q+Cj4gKyAqICAgICAgTm90ZXM6ICAgICAgICAgIDYKPiArICoKPiAr ICogICAgICBUaGUgWGVuIGdyYW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0 aGUgYmFja2VuZCB0byBtYXAKPiArICogICAgICB0aGUgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBh Z2Ugc2l6ZWQgcmluZyBidWZmZXIuCj4gKyAqCj4gKyAqIHJpbmctcmVmJXUKPiArICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICA2Cj4g KyAqCj4gKyAqICAgICAgRm9yIGEgZnJvbnRlbmQgcHJvdmlkaW5nIGEgbXVsdGktcGFnZSByaW5n LCBhICJudW1iZXIgb2YgcmluZyBwYWdlcyIKPiArICogICAgICBzaXplZCBsaXN0IG9mIG5vZGVz LCBlYWNoIGNvbnRhaW5pbmcgYSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nCj4gKyAqICAg ICAgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwIHRoZSBwYWdlIG9mIHRoZSByaW5n IGxvY2F0ZWQKPiArICogICAgICBhdCBwYWdlIGluZGV4ICIldSIuICBQYWdlIGluZGV4ZXMgYXJl IHplcm8gYmFzZWQuCj4gKyAqCj4gKyAqIHByb3RvY29sCj4gKyAqICAgICAgVmFsdWVzOiAgICAg ICAgIHN0cmluZyAoWEVOX0lPX1BST1RPX0FCSV8qKQo+ICsgKiAgICAgIERlZmF1bHQgVmFsdWU6 ICBYRU5fSU9fUFJPVE9fQUJJX05BVElWRQo+ICsgKgo+ICsgKiAgICAgIFRoZSBtYWNoaW5lIEFC SSBydWxlcyBnb3Zlcm5pbmcgdGhlIGZvcm1hdCBvZiBhbGwgcmluZyByZXF1ZXN0IGFuZAo+ICsg KiAgICAgIHJlc3BvbnNlIHN0cnVjdHVyZXMuCj4gKyAqCj4gKyAqIHJpbmctcGFnZS1vcmRlcgo+ ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+Cj4gKyAqICAgICAgRGVmYXVsdCBW YWx1ZTogIDAKPiArICogICAgICBNYXhpbXVtIFZhbHVlOiAgTUFYKGZmcyhtYXgtcmluZy1wYWdl cykgLSAxLCBtYXgtcmluZy1wYWdlLW9yZGVyKQo+ICsgKiAgICAgIE5vdGVzOiAgICAgICAgICAx LCAzCj4gKyAqCj4gKyAqICAgICAgVGhlIHNpemUgb2YgdGhlIGZyb250ZW5kIGFsbG9jYXRlZCBy ZXF1ZXN0IHJpbmcgYnVmZmVyIGluIHVuaXRzCj4gKyAqICAgICAgb2YgbGIobWFjaGluZSBwYWdl cykuIChlLmcuIDAgPT0gMSBwYWdlLCAxID0gMiBwYWdlcywgMiA9PSA0IHBhZ2VzLAo+ICsgKiAg ICAgIGV0Yy4pLgo+ICsgKgo+ICsgKiBudW0tcmluZy1wYWdlcwo+ICsgKiAgICAgIFZhbHVlczog ICAgICAgICA8dWludDMyX3Q+Cj4gKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDEKPiArICogICAg ICBNYXhpbXVtIFZhbHVlOiAgTUFYKG1heC1yaW5nLXBhZ2VzLCgweDEgPDwgbWF4LXJpbmctcGFn ZS1vcmRlcikpCj4gKyAqICAgICAgTm90ZXM6ICAgICAgICAgIERFUFJFQ0FURUQsIDIsIDMKPiAr ICoKPiArICogICAgICBUaGUgc2l6ZSBvZiB0aGUgZnJvbnRlbmQgYWxsb2NhdGVkIHJlcXVlc3Qg cmluZyBidWZmZXIgaW4gdW5pdHMgb2YKPiArICogICAgICBtYWNoaW5lIHBhZ2VzLiAgVGhlIHZh bHVlIG11c3QgYmUgYSBwb3dlciBvZiAyLgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBGZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiArICoKPiArICogZmVhdHVyZS1wZXJzaXN0ZW50Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDAvMSAoYm9vbGVhbikKPiArICogICAgICBEZWZhdWx0IFZhbHVlOiAgMAo+ICsgKiAgICAgIE5v dGVzOiA3LCA4LCA5Cj4gKyAqCj4gKyAqICAgICAgQSB2YWx1ZSBvZiAiMSIgaW5kaWNhdGVzIHRo YXQgdGhlIGZyb250ZW5kIHdpbGwgcmV1c2UgdGhlIHNhbWUgZ3JhbnRzCj4gKyAqICAgICAgZm9y IGFsbCB0cmFuc2FjdGlvbnMsIGFsbG93aW5nIHRoZSBiYWNrZW5kIHRvIG1hcCB0aGVtIHdpdGgg d3JpdGUKPiArICogICAgICBhY2Nlc3MgKGV2ZW4gd2hlbiBpdCBzaG91bGQgYmUgcmVhZC1vbmx5 KS4gSWYgdGhlIGZyb250ZW5kIGhpdHMgdGhlCj4gKyAqICAgICAgbWF4aW11bSBudW1iZXIgb2Yg YWxsb3dlZCBwZXJzaXN0ZW50bHkgbWFwcGVkIGdyYW50cywgaXQgY2FuIGZhbGxiYWNrCj4gKyAq ICAgICAgdG8gbm9uIHBlcnNpc3RlbnQgbW9kZS4gVGhpcyB3aWxsIGNhdXNlIGEgcGVyZm9ybWFu Y2UgZGVncmFkYXRpb24sCj4gKyAqICAgICAgc2luY2UgdGhlIHRoZSBiYWNrZW5kIGRyaXZlciB3 aWxsIHN0aWxsIHRyeSB0byBtYXAgdGhvc2UgZ3JhbnRzCj4gKyAqICAgICAgcGVyc2lzdGVudGx5 LiBTaW5jZSB0aGUgcGVyc2lzdGVudCBncmFudHMgcHJvdG9jb2wgaXMgY29tcGF0aWJsZSB3aXRo Cj4gKyAqICAgICAgdGhlIHByZXZpb3VzIHByb3RvY29sLCBhIGZyb250ZW5kIGRyaXZlciBjYW4g Y2hvb3NlIHRvIHdvcmsgaW4KPiArICogICAgICBwZXJzaXN0ZW50IG1vZGUgZXZlbiB3aGVuIHRo ZSBiYWNrZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KPiArICoKPiArICogICAgICBJdCBpcyByZWNv bW1lbmRlZCB0aGF0IHRoZSBmcm9udGVuZCBkcml2ZXIgc3RvcmVzIHRoZSBwZXJzaXN0ZW50bHkK PiArICogICAgICBtYXBwZWQgZ3JhbnRzIGluIGEgTElGTyBxdWV1ZSwgc28gYSBzdWJzZXQgb2Yg YWxsIHBlcnNpc3RlbnRseSBtYXBwZWQKPiArICogICAgICBncmFudHMgZ2V0cyB1c2VkIGNvbW1v bmx5LiBUaGlzIGlzIGRvbmUgaW4gY2FzZSB0aGUgYmFja2VuZCBkcml2ZXIKPiArICogICAgICBk ZWNpZGVzIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwZXJzaXN0ZW50bHkgbWFwcGVk IGdyYW50cwo+ICsgKiAgICAgIHRvIGEgdmFsdWUgbGVzcyB0aGFuIFJJTkdfU0laRSAqIEJMS0lG X01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVC4KPiArICoKPiArICogZmVhdHVyZS1sYXJnZS1zZWN0 b3Itc2l6ZQo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4pCj4gKyAqICAg ICAgRGVmYXVsdCBWYWx1ZTogIDAKPiArICoKPiArICogICAgICBBIHZhbHVlIG9mICIxIiBpbmRp Y2F0ZXMgdGhhdCB0aGUgZnJvbnRlbmQgd2lsbCBjb3JyZWN0bHkgc3VwcGx5IGFuZAo+ICsgKiAg ICAgIGludGVycHJldCBhbGwgc2VjdG9yLWJhc2VkIHF1YW50aXRpZXMgaW4gdGVybXMgb2YgdGhl ICJzZWN0b3Itc2l6ZSIKPiArICogICAgICB2YWx1ZSBzdXBwbGllZCBpbiB0aGUgYmFja2VuZCBp bmZvLCB3aGF0ZXZlciB0aGF0IG1heSBiZSBzZXQgdG8uCj4gKyAqICAgICAgSWYgdGhpcyBub2Rl IGlzIG5vdCBwcmVzZW50IG9yIGl0cyB2YWx1ZSBpcyAiMCIgdGhlbiBpdCBpcyBhc3N1bWVkCj4g KyAqICAgICAgdGhhdCB0aGUgZnJvbnRlbmQgcmVxdWlyZXMgdGhhdCB0aGUgbG9naWNhbCBibG9j ayBzaXplIGlzIDUxMiBhcyBpdAo+ICsgKiAgICAgIGlzIGhhcmRjb2RlZCAod2hpY2ggaXMgdGhl IGNhc2UgaW4gc29tZSBmcm9udGVuZCBpbXBsZW1lbnRhdGlvbnMpLgo+ICsgKgo+ICsgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gVmlydHVhbCBEZXZpY2UgUHJvcGVydGllcyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIGRldmljZS10eXBlCj4gKyAqICAgICAgVmFsdWVz OiAgICAgICAgICJkaXNrIiwgImNkcm9tIiwgImZsb3BweSIsIGV0Yy4KPiArICoKPiArICogdmly dHVhbC1kZXZpY2UKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ ICsgKiAgICAgIEEgdmFsdWUgaW5kaWNhdGluZyB0aGUgcGh5c2ljYWwgZGV2aWNlIHRvIHZpcnR1 YWxpemUgd2l0aGluIHRoZQo+ICsgKiAgICAgIGZyb250ZW5kJ3MgZG9tYWluLiAgKGUuZy4gIlRo ZSBmaXJzdCBBVEEgZGlzayIsICJUaGUgdGhpcmQgU0NTSQo+ICsgKiAgICAgIGRpc2siLCBldGMu KQo+ICsgKgo+ICsgKiAgICAgIFNlZSBkb2NzL21pc2MvdmJkLWludGVyZmFjZS50eHQgZm9yIGRl dGFpbHMgb24gdGhlIGZvcm1hdCBvZiB0aGlzCj4gKyAqICAgICAgdmFsdWUuCj4gKyAqCj4gKyAq IE5vdGVzCj4gKyAqIC0tLS0tCj4gKyAqICgxKSBNdWx0aS1wYWdlIHJpbmcgYnVmZmVyIHNjaGVt ZSBmaXJzdCBkZXZlbG9wZWQgaW4gdGhlIENpdHJpeCBYZW5TZXJ2ZXIKPiArICogICAgIFBWIGRy aXZlcnMuCj4gKyAqICgyKSBNdWx0aS1wYWdlIHJpbmcgYnVmZmVyIHNjaGVtZSBmaXJzdCB1c2Vk IGluIHNvbWUgUmVkSGF0IGRpc3RyaWJ1dGlvbnMKPiArICogICAgIGluY2x1ZGluZyBhIGRpc3Ry aWJ1dGlvbiBkZXBsb3llZCBvbiBjZXJ0YWluIG5vZGVzIG9mIHRoZSBBbWF6b24KPiArICogICAg IEVDMiBjbHVzdGVyLgo+ICsgKiAoMykgU3VwcG9ydCBmb3IgbXVsdGktcGFnZSByaW5nIGJ1ZmZl cnMgd2FzIGltcGxlbWVudGVkIGluZGVwZW5kZW50bHksCj4gKyAqICAgICBpbiBzbGlnaHRseSBk aWZmZXJlbnQgZm9ybXMsIGJ5IGJvdGggQ2l0cml4IGFuZCBSZWRIYXQvQW1hem9uLgo+ICsgKiAg ICAgRm9yIGZ1bGwgaW50ZXJvcGVyYWJpbGl0eSwgYmxvY2sgZnJvbnQgYW5kIGJhY2tlbmRzIHNo b3VsZCBwdWJsaXNoCj4gKyAqICAgICBpZGVudGljYWwgcmluZyBwYXJhbWV0ZXJzLCBhZGp1c3Rl ZCBmb3IgdW5pdCBkaWZmZXJlbmNlcywgdG8gdGhlCj4gKyAqICAgICBYZW5TdG9yZSBub2RlcyB1 c2VkIGluIGJvdGggc2NoZW1lcy4KPiArICogKDQpIERldmljZXMgdGhhdCBzdXBwb3J0IGRpc2Nh cmQgZnVuY3Rpb25hbGl0eSBtYXkgaW50ZXJuYWxseSBhbGxvY2F0ZSBzcGFjZQo+ICsgKiAgICAg KGRpc2NhcmRhYmxlIGV4dGVudHMpIGluIHVuaXRzIHRoYXQgYXJlIGxhcmdlciB0aGFuIHRoZSBl eHBvcnRlZCBsb2dpY2FsCj4gKyAqICAgICBibG9jayBzaXplLiBJZiB0aGUgYmFja2luZyBkZXZp Y2UgaGFzIHN1Y2ggZGlzY2FyZGFibGUgZXh0ZW50cyB0aGUKPiArICogICAgIGJhY2tlbmQgc2hv dWxkIHByb3ZpZGUgYm90aCBkaXNjYXJkLWdyYW51bGFyaXR5IGFuZCBkaXNjYXJkLWFsaWdubWVu dC4KPiArICogICAgIFByb3ZpZGluZyBqdXN0IG9uZSBvZiB0aGUgdHdvIG1heSBiZSBjb25zaWRl cmVkIGFuIGVycm9yIGJ5IHRoZSBmcm9udGVuZC4KPiArICogICAgIEJhY2tlbmRzIHN1cHBvcnRp bmcgZGlzY2FyZCBzaG91bGQgaW5jbHVkZSBkaXNjYXJkLWdyYW51bGFyaXR5IGFuZAo+ICsgKiAg ICAgZGlzY2FyZC1hbGlnbm1lbnQgZXZlbiBpZiBpdCBzdXBwb3J0cyBkaXNjYXJkaW5nIGluZGl2 aWR1YWwgc2VjdG9ycy4KPiArICogICAgIEZyb250ZW5kcyBzaG91bGQgYXNzdW1lIGRpc2NhcmQt YWxpZ25tZW50ID09IDAgYW5kIGRpc2NhcmQtZ3JhbnVsYXJpdHkKPiArICogICAgID09IHNlY3Rv ciBzaXplIGlmIHRoZXNlIGtleXMgYXJlIG1pc3NpbmcuCj4gKyAqICg1KSBUaGUgZGlzY2FyZC1h bGlnbm1lbnQgcGFyYW1ldGVyIGFsbG93cyBhIHBoeXNpY2FsIGRldmljZSB0byBiZQo+ICsgKiAg ICAgcGFydGl0aW9uZWQgaW50byB2aXJ0dWFsIGRldmljZXMgdGhhdCBkbyBub3QgbmVjZXNzYXJp bHkgYmVnaW4gb3IKPiArICogICAgIGVuZCBvbiBhIGRpc2NhcmRhYmxlIGV4dGVudCBib3VuZGFy eS4KPiArICogKDYpIFdoZW4gdGhlcmUgaXMgb25seSBhIHNpbmdsZSBwYWdlIGFsbG9jYXRlZCB0 byB0aGUgcmVxdWVzdCByaW5nLAo+ICsgKiAgICAgJ3JpbmctcmVmJyBpcyB1c2VkIHRvIGNvbW11 bmljYXRlIHRoZSBncmFudCByZWZlcmVuY2UgZm9yIHRoaXMKPiArICogICAgIHBhZ2UgdG8gdGhl IGJhY2tlbmQuICBXaGVuIHVzaW5nIGEgbXVsdGktcGFnZSByaW5nLCB0aGUgJ3JpbmctcmVmJwo+ ICsgKiAgICAgbm9kZSBpcyBub3QgY3JlYXRlZC4gIEluc3RlYWQgJ3JpbmctcmVmMCcgLSAncmlu Zy1yZWZOJyBhcmUgdXNlZC4KPiArICogKDcpIFdoZW4gdXNpbmcgcGVyc2lzdGVudCBncmFudHMg ZGF0YSBoYXMgdG8gYmUgY29waWVkIGZyb20vdG8gdGhlIHBhZ2UKPiArICogICAgIHdoZXJlIHRo ZSBncmFudCBpcyBjdXJyZW50bHkgbWFwcGVkLiBUaGUgb3ZlcmhlYWQgb2YgZG9pbmcgdGhpcyBj b3B5Cj4gKyAqICAgICBob3dldmVyIGRvZXNuJ3Qgc3VwcHJlc3MgdGhlIHNwZWVkIGltcHJvdmVt ZW50IG9mIG5vdCBoYXZpbmcgdG8gdW5tYXAKPiArICogICAgIHRoZSBncmFudHMuCj4gKyAqICg4 KSBUaGUgZnJvbnRlbmQgZHJpdmVyIGhhcyB0byBhbGxvdyB0aGUgYmFja2VuZCBkcml2ZXIgdG8g bWFwIGFsbCBncmFudHMKPiArICogICAgIHdpdGggd3JpdGUgYWNjZXNzLCBldmVuIHdoZW4gdGhl eSBzaG91bGQgYmUgbWFwcGVkIHJlYWQtb25seSwgc2luY2UKPiArICogICAgIGZ1cnRoZXIgcmVx dWVzdHMgbWF5IHJldXNlIHRoZXNlIGdyYW50cyBhbmQgcmVxdWlyZSB3cml0ZSBwZXJtaXNzaW9u cy4KPiArICogKDkpIExpbnV4IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgaGF2ZSBhIGxpbWl0IG9u IHRoZSBtYXhpbXVtIG51bWJlciBvZgo+ICsgKiAgICAgZ3JhbnRzIHRoYXQgY2FuIGJlIHBlcnNp c3RlbnRseSBtYXBwZWQgaW4gdGhlIGZyb250ZW5kIGRyaXZlciwgYnV0Cj4gKyAqICAgICBkdWUg dG8gdGhlIGZyb250ZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbiBpdCBzaG91bGQgbmV2ZXIgYmUg YmlnZ2VyCj4gKyAqICAgICB0aGFuIFJJTkdfU0laRSAqIEJMS0lGX01BWF9TRUdNRU5UU19QRVJf UkVRVUVTVC4KPiArICooMTApIFRoZSBkaXNjYXJkLXNlY3VyZSBwcm9wZXJ0eSBtYXkgYmUgcHJl c2VudCBhbmQgd2lsbCBiZSBzZXQgdG8gMSBpZiB0aGUKPiArICogICAgIGJhY2tpbmcgZGV2aWNl IHN1cHBvcnRzIHNlY3VyZSBkaXNjYXJkLgo+ICsgKigxMSkgT25seSB1c2VkIGJ5IExpbnV4IGFu ZCBOZXRCU0QuCj4gKyAqLwo+ICsKPiArLyoKPiArICogTXVsdGlwbGUgaGFyZHdhcmUgcXVldWVz L3JpbmdzOgo+ICsgKiBJZiBzdXBwb3J0ZWQsIHRoZSBiYWNrZW5kIHdpbGwgd3JpdGUgdGhlIGtl eSAibXVsdGktcXVldWUtbWF4LXF1ZXVlcyIgdG8KPiArICogdGhlIGRpcmVjdG9yeSBmb3IgdGhh dCB2YmQsIGFuZCBzZXQgaXRzIHZhbHVlIHRvIHRoZSBtYXhpbXVtIHN1cHBvcnRlZAo+ICsgKiBu dW1iZXIgb2YgcXVldWVzLgo+ICsgKiBGcm9udGVuZHMgdGhhdCBhcmUgYXdhcmUgb2YgdGhpcyBm ZWF0dXJlIGFuZCB3aXNoIHRvIHVzZSBpdCBjYW4gd3JpdGUgdGhlCj4gKyAqIGtleSAibXVsdGkt cXVldWUtbnVtLXF1ZXVlcyIgd2l0aCB0aGUgbnVtYmVyIHRoZXkgd2lzaCB0byB1c2UsIHdoaWNo IG11c3QgYmUKPiArICogZ3JlYXRlciB0aGFuIHplcm8sIGFuZCBubyBtb3JlIHRoYW4gdGhlIHZh bHVlIHJlcG9ydGVkIGJ5IHRoZSBiYWNrZW5kIGluCj4gKyAqICJtdWx0aS1xdWV1ZS1tYXgtcXVl dWVzIi4KPiArICoKPiArICogRm9yIGZyb250ZW5kcyByZXF1ZXN0aW5nIGp1c3Qgb25lIHF1ZXVl LCB0aGUgdXN1YWwgZXZlbnQtY2hhbm5lbCBhbmQKPiArICogcmluZy1yZWYga2V5cyBhcmUgd3Jp dHRlbiBhcyBiZWZvcmUsIHNpbXBsaWZ5aW5nIHRoZSBiYWNrZW5kIHByb2Nlc3NpbmcKPiArICog dG8gYXZvaWQgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBhIGZyb250ZW5kIHRoYXQgZG9lc24ndCB1 bmRlcnN0YW5kIHRoZQo+ICsgKiBtdWx0aS1xdWV1ZSBmZWF0dXJlLCBhbmQgb25lIHRoYXQgZG9l cywgYnV0IHJlcXVlc3RlZCBvbmx5IG9uZSBxdWV1ZS4KPiArICoKPiArICogRnJvbnRlbmRzIHJl cXVlc3RpbmcgdHdvIG9yIG1vcmUgcXVldWVzIG11c3Qgbm90IHdyaXRlIHRoZSB0b3BsZXZlbAo+ ICsgKiBldmVudC1jaGFubmVsIGFuZCByaW5nLXJlZiBrZXlzLCBpbnN0ZWFkIHdyaXRpbmcgdGhv c2Uga2V5cyB1bmRlciBzdWIta2V5cwo+ICsgKiBoYXZpbmcgdGhlIG5hbWUgInF1ZXVlLU4iIHdo ZXJlIE4gaXMgdGhlIGludGVnZXIgSUQgb2YgdGhlIHF1ZXVlL3JpbmcgZm9yCj4gKyAqIHdoaWNo IHRob3NlIGtleXMgYmVsb25nLiBRdWV1ZXMgYXJlIGluZGV4ZWQgZnJvbSB6ZXJvLgo+ICsgKiBG b3IgZXhhbXBsZSwgYSBmcm9udGVuZCB3aXRoIHR3byBxdWV1ZXMgbXVzdCB3cml0ZSB0aGUgZm9s bG93aW5nIHNldCBvZgo+ICsgKiBxdWV1ZS1yZWxhdGVkIGtleXM6Cj4gKyAqCj4gKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdmJkLzAvbXVsdGktcXVldWUtbnVtLXF1ZXVlcyA9ICIyIgo+ICsg KiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTAgPSAiIgo+ICsgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTAvcmluZy1yZWYgPSAiPHJpbmctcmVmIzA+Igo+ ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTAvZXZlbnQtY2hhbm5lbCA9 ICI8ZXZ0Y2huIzA+Igo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTEg PSAiIgo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTEvcmluZy1yZWYg PSAiPHJpbmctcmVmIzE+Igo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVl LTEvZXZlbnQtY2hhbm5lbCA9ICI8ZXZ0Y2huIzE+Igo+ICsgKgo+ICsgKiBJdCBpcyBhbHNvIHBv c3NpYmxlIHRvIHVzZSBtdWx0aXBsZSBxdWV1ZXMvcmluZ3MgdG9nZXRoZXIgd2l0aAo+ICsgKiBm ZWF0dXJlIG11bHRpLXBhZ2UgcmluZyBidWZmZXIuCj4gKyAqIEZvciBleGFtcGxlLCBhIGZyb250 ZW5kIHJlcXVlc3RzIHR3byBxdWV1ZXMvcmluZ3MgYW5kIHRoZSBzaXplIG9mIGVhY2ggcmluZwo+ ICsgKiBidWZmZXIgaXMgdHdvIHBhZ2VzIG11c3Qgd3JpdGUgdGhlIGZvbGxvd2luZyBzZXQgb2Yg cmVsYXRlZCBrZXlzOgo+ICsgKgo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL211 bHRpLXF1ZXVlLW51bS1xdWV1ZXMgPSAiMiIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 YmQvMC9yaW5nLXBhZ2Utb3JkZXIgPSAiMSIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 YmQvMC9xdWV1ZS0wID0gIiIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvMC9xdWV1 ZS0wL3JpbmctcmVmMCA9ICI8cmluZy1yZWYjMD4iCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZp Y2UvdmJkLzAvcXVldWUtMC9yaW5nLXJlZjEgPSAiPHJpbmctcmVmIzE+Igo+ICsgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTAvZXZlbnQtY2hhbm5lbCA9ICI8ZXZ0Y2huIzA+ Igo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTEgPSAiIgo+ICsgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTEvcmluZy1yZWYwID0gIjxyaW5nLXJl ZiMyPiIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvMC9xdWV1ZS0xL3JpbmctcmVm MSA9ICI8cmluZy1yZWYjMz4iCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmJkLzAvcXVl dWUtMS9ldmVudC1jaGFubmVsID0gIjxldnRjaG4jMT4iCj4gKyAqCj4gKyAqLwo+ICsKPiArLyoK PiArICogU1RBVEUgRElBR1JBTVMKPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICog VG9vbCBzdGFjayBjcmVhdGVzIGZyb250IGFuZCBiYWNrIG5vZGVzIHdpdGggc3RhdGUgWGVuYnVz U3RhdGVJbml0aWFsaXNpbmcuCj4gKyAqCj4gKyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCYWNrCj4gKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAg ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKyAqIFhlbmJ1c1N0YXRl SW5pdGlhbGlzaW5nICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZwo+ICsgKiAg byBRdWVyeSB2aXJ0dWFsIGRldmljZSAgICAgICAgICAgICAgIG8gUXVlcnkgYmFja2VuZCBkZXZp Y2UgaWRlbnRpZmljYXRpb24KPiArICogICAgcHJvcGVydGllcy4gICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGEuCj4gKyAqICBvIFNldHVwIE9TIGRldmljZSBpbnN0YW5jZS4gICAgICAgICAg byBPcGVuIGFuZCB2YWxpZGF0ZSBiYWNrZW5kIGRldmljZS4KPiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvIFB1Ymxpc2ggYmFja2VuZCBmZWF0dXJlcyBhbmQKPiAr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBwYXJh bWV0ZXJzLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAo+ICsgKgo+ICsgKiBvIFF1ZXJ5IGJhY2tlbmQgZmVh dHVyZXMgYW5kCj4gKyAqICAgdHJhbnNwb3J0IHBhcmFtZXRlcnMuCj4gKyAqIG8gQWxsb2NhdGUg YW5kIGluaXRpYWxpemUgdGhlCj4gKyAqICAgcmVxdWVzdCByaW5nLgo+ICsgKiBvIFB1Ymxpc2gg dHJhbnNwb3J0IHBhcmFtZXRlcnMKPiArICogICB0aGF0IHdpbGwgYmUgaW4gZWZmZWN0IGR1cmlu Zwo+ICsgKiAgIHRoaXMgY29ubmVjdGlvbi4KPiArICogICAgICAgICAgICAgIHwKPiArICogICAg ICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgIFYKPiArICogWGVuYnVzU3RhdGVJbml0aWFs aXNlZAo+ICsgKgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8g UXVlcnkgZnJvbnRlbmQgdHJhbnNwb3J0IHBhcmFtZXRlcnMuCj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbyBDb25uZWN0IHRvIHRoZSByZXF1ZXN0IHJpbmcgYW5k Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCBjaGFu bmVsLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUHVibGlz aCBiYWNrZW5kIGRldmljZSBwcm9wZXJ0aWVzLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgo+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQKPiArICoKPiAr ICogIG8gUXVlcnkgYmFja2VuZCBkZXZpY2UgcHJvcGVydGllcy4KPiArICogIG8gRmluYWxpemUg T1MgdmlydHVhbCBkZXZpY2UKPiArICogICAgaW5zdGFuY2UuCj4gKyAqICAgICAgICAgICAgICB8 Cj4gKyAqICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICBWCj4gKyAqIFhlbmJ1c1N0 YXRlQ29ubmVjdGVkCj4gKyAqCj4gKyAqIE5vdGU6IERyaXZlcnMgdGhhdCBkbyBub3Qgc3VwcG9y dCBhbnkgb3B0aW9uYWwgZmVhdHVyZXMsIG9yIHRoZSBuZWdvdGlhdGlvbgo+ICsgKiAgICAgICBv ZiB0cmFuc3BvcnQgcGFyYW1ldGVycywgY2FuIHNraXAgY2VydGFpbiBzdGF0ZXMgaW4gdGhlIHN0 YXRlIG1hY2hpbmU6Cj4gKyAqCj4gKyAqICAgICAgIG8gQSBmcm9udGVuZCBtYXkgdHJhbnNpdGlv biB0byBYZW5idXNTdGF0ZUluaXRpYWxpc2VkIHdpdGhvdXQKPiArICogICAgICAgICB3YWl0aW5n IGZvciB0aGUgYmFja2VuZCB0byBlbnRlciBYZW5idXNTdGF0ZUluaXRXYWl0LiAgSW4gdGhpcwo+ ICsgKiAgICAgICAgIGNhc2UsIGRlZmF1bHQgdHJhbnNwb3J0IHBhcmFtZXRlcnMgYXJlIGluIGVm ZmVjdCBhbmQgYW55Cj4gKyAqICAgICAgICAgdHJhbnNwb3J0IHBhcmFtZXRlcnMgcHVibGlzaGVk IGJ5IHRoZSBmcm9udGVuZCBtdXN0IGNvbnRhaW4KPiArICogICAgICAgICB0aGVpciBkZWZhdWx0 IHZhbHVlcy4KPiArICoKPiArICogICAgICAgbyBBIGJhY2tlbmQgbWF5IHRyYW5zaXRpb24gdG8g WGVuYnVzU3RhdGVJbml0aWFsaXNlZCwgYnlwYXNzaW5nCj4gKyAqICAgICAgICAgWGVuYnVzU3Rh dGVJbml0V2FpdCwgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZnJvbnRlbmQgdG8gZmlyc3QKPiAr ICogICAgICAgICBlbnRlciB0aGUgWGVuYnVzU3RhdGVJbml0aWFsaXNlZCBzdGF0ZS4gIEluIHRo aXMgY2FzZSwgZGVmYXVsdAo+ICsgKiAgICAgICAgIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGFyZSBp biBlZmZlY3QgYW5kIGFueSB0cmFuc3BvcnQgcGFyYW1ldGVycwo+ICsgKiAgICAgICAgIHB1Ymxp c2hlZCBieSB0aGUgYmFja2VuZCBtdXN0IGNvbnRhaW4gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCj4g KyAqCj4gKyAqICAgICAgIERyaXZlcnMgdGhhdCBzdXBwb3J0IG9wdGlvbmFsIGZlYXR1cmVzIGFu ZC9vciB0cmFuc3BvcnQgcGFyYW1ldGVyCj4gKyAqICAgICAgIG5lZ290aWF0aW9uIG11c3QgdG9s ZXJhdGUgdGhlc2UgYWRkaXRpb25hbCBzdGF0ZSB0cmFuc2l0aW9uIHBhdGhzLgo+ICsgKiAgICAg ICBJbiBnZW5lcmFsIHRoaXMgbWVhbnMgcGVyZm9ybWluZyB0aGUgd29yayBvZiBhbnkgc2tpcHBl ZCBzdGF0ZQo+ICsgKiAgICAgICB0cmFuc2l0aW9uLCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVl biBwZXJmb3JtZWQsIGluIGFkZGl0aW9uIHRvIHRoZQo+ICsgKiAgICAgICB3b3JrIGFzc29jaWF0 ZWQgd2l0aCBlbnRyeSBpbnRvIHRoZSBjdXJyZW50IHN0YXRlLgo+ICsgKi8KPiArCj4gKy8qCj4g KyAqIFJFUVVFU1QgQ09ERVMuCj4gKyAqLwo+ICsjZGVmaW5lIEJMS0lGX09QX1JFQUQgICAgICAg ICAgICAgIDAKPiArI2RlZmluZSBCTEtJRl9PUF9XUklURSAgICAgICAgICAgICAxCj4gKy8qCj4g KyAqIEFsbCB3cml0ZXMgaXNzdWVkIHByaW9yIHRvIGEgcmVxdWVzdCB3aXRoIHRoZSBCTEtJRl9P UF9XUklURV9CQVJSSUVSCj4gKyAqIG9wZXJhdGlvbiBjb2RlICgiYmFycmllciByZXF1ZXN0Iikg bXVzdCBiZSBjb21wbGV0ZWQgcHJpb3IgdG8gdGhlCj4gKyAqIGV4ZWN1dGlvbiBvZiB0aGUgYmFy cmllciByZXF1ZXN0LiAgQWxsIHdyaXRlcyBpc3N1ZWQgYWZ0ZXIgdGhlIGJhcnJpZXIKPiArICog cmVxdWVzdCBtdXN0IG5vdCBleGVjdXRlIHVudGlsIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIHRo ZSBiYXJyaWVyIHJlcXVlc3QuCj4gKyAqCj4gKyAqIE9wdGlvbmFsLiAgU2VlICJmZWF0dXJlLWJh cnJpZXIiIFhlbkJ1cyBub2RlIGRvY3VtZW50YXRpb24gYWJvdmUuCj4gKyAqLwo+ICsjZGVmaW5l IEJMS0lGX09QX1dSSVRFX0JBUlJJRVIgICAgIDIKPiArLyoKPiArICogQ29tbWl0IGFueSB1bmNv bW1pdHRlZCBjb250ZW50cyBvZiB0aGUgYmFja2luZyBkZXZpY2UncyB2b2xhdGlsZSBjYWNoZQo+ ICsgKiB0byBzdGFibGUgc3RvcmFnZS4KPiArICoKPiArICogT3B0aW9uYWwuICBTZWUgImZlYXR1 cmUtZmx1c2gtY2FjaGUiIFhlbkJ1cyBub2RlIGRvY3VtZW50YXRpb24gYWJvdmUuCj4gKyAqLwo+ ICsjZGVmaW5lIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRSAgIDMKPiArLyoKPiArICogVXNlZCBp biBTTEVTIHNvdXJjZXMgZm9yIGRldmljZSBzcGVjaWZpYyBjb21tYW5kIHBhY2tldAo+ICsgKiBj b250YWluZWQgd2l0aGluIHRoZSByZXF1ZXN0LiBSZXNlcnZlZCBmb3IgdGhhdCBwdXJwb3NlLgo+ ICsgKi8KPiArI2RlZmluZSBCTEtJRl9PUF9SRVNFUlZFRF8xICAgICAgICA0Cj4gKy8qCj4gKyAq IEluZGljYXRlIHRvIHRoZSBiYWNrZW5kIGRldmljZSB0aGF0IGEgcmVnaW9uIG9mIHN0b3JhZ2Ug aXMgbm8gbG9uZ2VyIGluCj4gKyAqIHVzZSwgYW5kIG1heSBiZSBkaXNjYXJkZWQgYXQgYW55IHRp bWUgd2l0aG91dCBpbXBhY3QgdG8gdGhlIGNsaWVudC4gIElmCj4gKyAqIHRoZSBCTEtJRl9ESVND QVJEX1NFQ1VSRSBmbGFnIGlzIHNldCBvbiB0aGUgcmVxdWVzdCwgYWxsIGNvcGllcyBvZiB0aGUK PiArICogZGlzY2FyZGVkIHJlZ2lvbiBvbiB0aGUgZGV2aWNlIG11c3QgYmUgcmVuZGVyZWQgdW5y ZWNvdmVyYWJsZSBiZWZvcmUgdGhlCj4gKyAqIGNvbW1hbmQgcmV0dXJucy4KPiArICoKPiArICog VGhpcyBvcGVyYXRpb24gaXMgYW5hbG9nb3VzIHRvIHBlcmZvcm1pbmcgYSB0cmltIChBVEEpIG9y IHVuYW1wIChTQ1NJKSwKPiArICogY29tbWFuZCBvbiBhIG5hdGl2ZSBkZXZpY2UuCj4gKyAqCj4g KyAqIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdHJpbS91bm1hcCBvcGVyYXRpb25zIGNhbiBiZSBm b3VuZCBhdDoKPiArICogaHR0cDovL3QxMy5vcmcvRG9jdW1lbnRzL1VwbG9hZGVkRG9jdW1lbnRz L2RvY3MyMDA4Lwo+ICsgKiAgICAgZTA3MTU0cjYtRGF0YV9TZXRfTWFuYWdlbWVudF9Qcm9wb3Nh bF9mb3JfQVRBLUFDUzIuZG9jCj4gKyAqIGh0dHA6Ly93d3cuc2VhZ2F0ZS5jb20vc3RhdGljZmls ZXMvc3VwcG9ydC9kaXNjL21hbnVhbHMvCj4gKyAqICAgICBJbnRlcmZhY2UlMjBtYW51YWxzLzEw MDI5MzA2OGMucGRmCj4gKyAqCj4gKyAqIE9wdGlvbmFsLiAgU2VlICJmZWF0dXJlLWRpc2NhcmQi LCAiZGlzY2FyZC1hbGlnbm1lbnQiLAo+ICsgKiAiZGlzY2FyZC1ncmFudWxhcml0eSIsIGFuZCAi ZGlzY2FyZC1zZWN1cmUiIGluIHRoZSBYZW5CdXMgbm9kZQo+ICsgKiBkb2N1bWVudGF0aW9uIGFi b3ZlLgo+ICsgKi8KPiArI2RlZmluZSBCTEtJRl9PUF9ESVNDQVJEICAgICAgICAgICA1Cj4gKwo+ ICsvKgo+ICsgKiBSZWNvZ25pemVkIGlmICJmZWF0dXJlLW1heC1pbmRpcmVjdC1zZWdtZW50cyIg aW4gcHJlc2VudCBpbiB0aGUgYmFja2VuZAo+ICsgKiB4ZW5idXMgaW5mby4gVGhlICJmZWF0dXJl LW1heC1pbmRpcmVjdC1zZWdtZW50cyIgbm9kZSBjb250YWlucyB0aGUgbWF4aW11bQo+ICsgKiBu dW1iZXIgb2Ygc2VnbWVudHMgYWxsb3dlZCBieSB0aGUgYmFja2VuZCBwZXIgcmVxdWVzdC4gSWYg dGhlIG5vZGUgaXMKPiArICogcHJlc2VudCwgdGhlIGZyb250ZW5kIG1pZ2h0IHVzZSBibGtpZl9y ZXF1ZXN0X2luZGlyZWN0IHN0cnVjdHMgaW4gb3JkZXIgdG8KPiArICogaXNzdWUgcmVxdWVzdHMg d2l0aCBtb3JlIHRoYW4gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICgxMSkuIFRoZQo+ ICsgKiBtYXhpbXVtIG51bWJlciBvZiBpbmRpcmVjdCBzZWdtZW50cyBpcyBmaXhlZCBieSB0aGUg YmFja2VuZCwgYnV0IHRoZQo+ICsgKiBmcm9udGVuZCBjYW4gaXNzdWUgcmVxdWVzdHMgd2l0aCBh bnkgbnVtYmVyIG9mIGluZGlyZWN0IHNlZ21lbnRzIGFzIGxvbmcgYXMKPiArICogaXQncyBsZXNz IHRoYW4gdGhlIG51bWJlciBwcm92aWRlZCBieSB0aGUgYmFja2VuZC4gVGhlIGluZGlyZWN0X2dy ZWZzIGZpZWxkCj4gKyAqIGluIGJsa2lmX3JlcXVlc3RfaW5kaXJlY3Qgc2hvdWxkIGJlIGZpbGxl ZCBieSB0aGUgZnJvbnRlbmQgd2l0aCB0aGUKPiArICogZ3JhbnQgcmVmZXJlbmNlcyBvZiB0aGUg cGFnZXMgdGhhdCBhcmUgaG9sZGluZyB0aGUgaW5kaXJlY3Qgc2VnbWVudHMuCj4gKyAqIFRoZXNl IHBhZ2VzIGFyZSBmaWxsZWQgd2l0aCBhbiBhcnJheSBvZiBibGtpZl9yZXF1ZXN0X3NlZ21lbnQg dGhhdCBob2xkIHRoZQo+ICsgKiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VnbWVudHMuIFRoZSBu dW1iZXIgb2YgaW5kaXJlY3QgcGFnZXMgdG8gdXNlIGlzCj4gKyAqIGRldGVybWluZWQgYnkgdGhl IG51bWJlciBvZiBzZWdtZW50cyBhbiBpbmRpcmVjdCByZXF1ZXN0IGNvbnRhaW5zLiBFdmVyeQo+ ICsgKiBpbmRpcmVjdCBwYWdlIGNhbiBjb250YWluIGEgbWF4aW11bSBvZgo+ICsgKiAoUEFHRV9T SVpFIC8gc2l6ZW9mKHN0cnVjdCBibGtpZl9yZXF1ZXN0X3NlZ21lbnQpKSBzZWdtZW50cywgc28g dG8KPiArICogY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgaW5kaXJlY3QgcGFnZXMgdG8gdXNlIHdl IGhhdmUgdG8gZG8KPiArICogY2VpbChpbmRpcmVjdF9zZWdtZW50cyAvIChQQUdFX1NJWkUgLyBz aXplb2Yoc3RydWN0IGJsa2lmX3JlcXVlc3Rfc2VnbWVudCkpKS4KPiArICoKPiArICogSWYgYSBi YWNrZW5kIGRvZXMgbm90IHJlY29nbml6ZSBCTEtJRl9PUF9JTkRJUkVDVCwgaXQgc2hvdWxkICpu b3QqCj4gKyAqIGNyZWF0ZSB0aGUgImZlYXR1cmUtbWF4LWluZGlyZWN0LXNlZ21lbnRzIiBub2Rl IQo+ICsgKi8KPiArI2RlZmluZSBCTEtJRl9PUF9JTkRJUkVDVCAgICAgICAgICA2Cj4gKwo+ICsv Kgo+ICsgKiBNYXhpbXVtIHNjYXR0ZXIvZ2F0aGVyIHNlZ21lbnRzIHBlciByZXF1ZXN0Lgo+ICsg KiBUaGlzIGlzIGNhcmVmdWxseSBjaG9zZW4gc28gdGhhdCBzaXplb2YoYmxraWZfcmluZ190KSA8 PSBQQUdFX1NJWkUuCj4gKyAqIE5CLiBUaGlzIGNvdWxkIGJlIDEyIGlmIHRoZSByaW5nIGluZGV4 ZXMgd2VyZW4ndCBzdG9yZWQgaW4gdGhlIHNhbWUgcGFnZS4KPiArICovCj4gKyNkZWZpbmUgQkxL SUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUIDExCj4gKwo+ICsvKgo+ICsgKiBNYXhpbXVtIG51 bWJlciBvZiBpbmRpcmVjdCBwYWdlcyB0byB1c2UgcGVyIHJlcXVlc3QuCj4gKyAqLwo+ICsjZGVm aW5lIEJMS0lGX01BWF9JTkRJUkVDVF9QQUdFU19QRVJfUkVRVUVTVCA4Cj4gKwo+ICsvKgo+ICsg KiBOQi4gJ2ZpcnN0X3NlY3QnIGFuZCAnbGFzdF9zZWN0JyBpbiBibGtpZl9yZXF1ZXN0X3NlZ21l bnQsIGFzIHdlbGwgYXMKPiArICogJ3NlY3Rvcl9udW1iZXInIGluIGJsa2lmX3JlcXVlc3QsIGJs a2lmX3JlcXVlc3RfZGlzY2FyZCBhbmQKPiArICogYmxraWZfcmVxdWVzdF9pbmRpcmVjdCBhcmUg c2VjdG9yLWJhc2VkIHF1YW50aXRpZXMuIFNlZSB0aGUgZGVzY3JpcHRpb24KPiArICogb2YgdGhl ICJmZWF0dXJlLWxhcmdlLXNlY3Rvci1zaXplIiBmcm9udGVuZCB4ZW5idXMgbm9kZSBhYm92ZSBm b3IKPiArICogbW9yZSBpbmZvcm1hdGlvbi4KPiArICovCj4gK3N0cnVjdCBibGtpZl9yZXF1ZXN0 X3NlZ21lbnQgewo+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZjsgICAgICAgIC8qIHJlZmVyZW5jZSB0 byBJL08gYnVmZmVyIGZyYW1lICAgICAgICAqLwo+ICsgICAgLyogQGZpcnN0X3NlY3Q6IGZpcnN0 IHNlY3RvciBpbiBmcmFtZSB0byB0cmFuc2ZlciAoaW5jbHVzaXZlKS4gICAqLwo+ICsgICAgLyog QGxhc3Rfc2VjdDogbGFzdCBzZWN0b3IgaW4gZnJhbWUgdG8gdHJhbnNmZXIgKGluY2x1c2l2ZSku ICAgICAqLwo+ICsgICAgdWludDhfdCAgICAgZmlyc3Rfc2VjdCwgbGFzdF9zZWN0Owo+ICt9Owo+ ICsKPiArLyoKPiArICogU3RhcnRpbmcgcmluZyBlbGVtZW50IGZvciBhbnkgSS9PIHJlcXVlc3Qu Cj4gKyAqLwo+ICtzdHJ1Y3QgYmxraWZfcmVxdWVzdCB7Cj4gKyAgICB1aW50OF90ICAgICAgICBv cGVyYXRpb247ICAgIC8qIEJMS0lGX09QXz8/PyAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ ICsgICAgdWludDhfdCAgICAgICAgbnJfc2VnbWVudHM7ICAvKiBudW1iZXIgb2Ygc2VnbWVudHMg ICAgICAgICAgICAgICAgICAgKi8KPiArICAgIGJsa2lmX3ZkZXZfdCAgIGhhbmRsZTsgICAgICAg Lyogb25seSBmb3IgcmVhZC93cml0ZSByZXF1ZXN0cyAgICAgICAgICovCj4gKyAgICB1aW50NjRf dCAgICAgICBpZDsgICAgICAgICAgIC8qIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiBy ZXNwICAqLwo+ICsgICAgYmxraWZfc2VjdG9yX3Qgc2VjdG9yX251bWJlcjsvKiBzdGFydCBzZWN0 b3IgaWR4IG9uIGRpc2sgKHIvdyBvbmx5KSAgKi8KPiArICAgIHN0cnVjdCBibGtpZl9yZXF1ZXN0 X3NlZ21lbnQgc2VnW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Cj4gK307Cj4gK3R5 cGVkZWYgc3RydWN0IGJsa2lmX3JlcXVlc3QgYmxraWZfcmVxdWVzdF90Owo+ICsKPiArLyoKPiAr ICogQ2FzdCB0byB0aGlzIHN0cnVjdHVyZSB3aGVuIGJsa2lmX3JlcXVlc3Qub3BlcmF0aW9uID09 IEJMS0lGX09QX0RJU0NBUkQKPiArICogc2l6ZW9mKHN0cnVjdCBibGtpZl9yZXF1ZXN0X2Rpc2Nh cmQpIDw9IHNpemVvZihzdHJ1Y3QgYmxraWZfcmVxdWVzdCkKPiArICovCj4gK3N0cnVjdCBibGtp Zl9yZXF1ZXN0X2Rpc2NhcmQgewo+ICsgICAgdWludDhfdCAgICAgICAgb3BlcmF0aW9uOyAgICAv KiBCTEtJRl9PUF9ESVNDQVJEICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgIHVpbnQ4X3Qg ICAgICAgIGZsYWc7ICAgICAgICAgLyogQkxLSUZfRElTQ0FSRF9TRUNVUkUgb3IgemVybyAgICAg ICAgICovCj4gKyNkZWZpbmUgQkxLSUZfRElTQ0FSRF9TRUNVUkUgKDE8PDApICAvKiBpZ25vcmVk IGlmIGRpc2NhcmQtc2VjdXJlPTAgICAgICAqLwo+ICsgICAgYmxraWZfdmRldl90ICAgaGFuZGxl OyAgICAgICAvKiBzYW1lIGFzIGZvciByZWFkL3dyaXRlIHJlcXVlc3RzICAgICAgKi8KPiArICAg IHVpbnQ2NF90ICAgICAgIGlkOyAgICAgICAgICAgLyogcHJpdmF0ZSBndWVzdCB2YWx1ZSwgZWNo b2VkIGluIHJlc3AgICovCj4gKyAgICBibGtpZl9zZWN0b3JfdCBzZWN0b3JfbnVtYmVyOy8qIHN0 YXJ0IHNlY3RvciBpZHggb24gZGlzayAgICAgICAgICAgICAqLwo+ICsgICAgdWludDY0X3QgICAg ICAgbnJfc2VjdG9yczsgICAvKiBudW1iZXIgb2YgY29udGlndW91cyBzZWN0b3JzIHRvIGRpc2Nh cmQqLwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBibGtpZl9yZXF1ZXN0X2Rpc2NhcmQgYmxraWZf cmVxdWVzdF9kaXNjYXJkX3Q7Cj4gKwo+ICtzdHJ1Y3QgYmxraWZfcmVxdWVzdF9pbmRpcmVjdCB7 Cj4gKyAgICB1aW50OF90ICAgICAgICBvcGVyYXRpb247ICAgIC8qIEJMS0lGX09QX0lORElSRUNU ICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgdWludDhfdCAgICAgICAgaW5kaXJlY3Rfb3A7 ICAvKiBCTEtJRl9PUF97UkVBRC9XUklURX0gICAgICAgICAgICAgICAgKi8KPiArICAgIHVpbnQx Nl90ICAgICAgIG5yX3NlZ21lbnRzOyAgLyogbnVtYmVyIG9mIHNlZ21lbnRzICAgICAgICAgICAg ICAgICAgICovCj4gKyAgICB1aW50NjRfdCAgICAgICBpZDsgICAgICAgICAgIC8qIHByaXZhdGUg Z3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwICAqLwo+ICsgICAgYmxraWZfc2VjdG9yX3Qgc2Vj dG9yX251bWJlcjsvKiBzdGFydCBzZWN0b3IgaWR4IG9uIGRpc2sgKHIvdyBvbmx5KSAgKi8KPiAr ICAgIGJsa2lmX3ZkZXZfdCAgIGhhbmRsZTsgICAgICAgLyogc2FtZSBhcyBmb3IgcmVhZC93cml0 ZSByZXF1ZXN0cyAgICAgICovCj4gKyAgICBncmFudF9yZWZfdCAgICBpbmRpcmVjdF9ncmVmc1tC TEtJRl9NQVhfSU5ESVJFQ1RfUEFHRVNfUEVSX1JFUVVFU1RdOwo+ICsjaWZkZWYgX19pMzg2X18K PiArICAgIHVpbnQ2NF90ICAgICAgIHBhZDsgICAgICAgICAgLyogTWFrZSBpdCA2NCBieXRlIGFs aWduZWQgb24gaTM4NiAgICAgICovCj4gKyNlbmRpZgo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCBi bGtpZl9yZXF1ZXN0X2luZGlyZWN0IGJsa2lmX3JlcXVlc3RfaW5kaXJlY3RfdDsKPiArCj4gK3N0 cnVjdCBibGtpZl9yZXNwb25zZSB7Cj4gKyAgICB1aW50NjRfdCAgICAgICAgaWQ7ICAgICAgICAg ICAgICAvKiBjb3BpZWQgZnJvbSByZXF1ZXN0ICovCj4gKyAgICB1aW50OF90ICAgICAgICAgb3Bl cmF0aW9uOyAgICAgICAvKiBjb3BpZWQgZnJvbSByZXF1ZXN0ICovCj4gKyAgICBpbnQxNl90ICAg ICAgICAgc3RhdHVzOyAgICAgICAgICAvKiBCTEtJRl9SU1BfPz8/ICAgICAgICovCj4gK307Cj4g K3R5cGVkZWYgc3RydWN0IGJsa2lmX3Jlc3BvbnNlIGJsa2lmX3Jlc3BvbnNlX3Q7Cj4gKwo+ICsv Kgo+ICsgKiBTVEFUVVMgUkVUVVJOIENPREVTLgo+ICsgKi8KPiArIC8qIE9wZXJhdGlvbiBub3Qg c3VwcG9ydGVkIChvbmx5IGhhcHBlbnMgb24gYmFycmllciB3cml0ZXMpLiAqLwo+ICsjZGVmaW5l IEJMS0lGX1JTUF9FT1BOT1RTVVBQICAtMgo+ICsgLyogT3BlcmF0aW9uIGZhaWxlZCBmb3Igc29t ZSB1bnNwZWNpZmllZCByZWFzb24gKC1FSU8pLiAqLwo+ICsjZGVmaW5lIEJMS0lGX1JTUF9FUlJP UiAgICAgICAtMQo+ICsgLyogT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuICovCj4g KyNkZWZpbmUgQkxLSUZfUlNQX09LQVkgICAgICAgICAwCj4gKwo+ICsvKgo+ICsgKiBHZW5lcmF0 ZSBibGtpZiByaW5nIHN0cnVjdHVyZXMgYW5kIHR5cGVzLgo+ICsgKi8KPiArREVGSU5FX1JJTkdf VFlQRVMoYmxraWYsIHN0cnVjdCBibGtpZl9yZXF1ZXN0LCBzdHJ1Y3QgYmxraWZfcmVzcG9uc2Up Owo+ICsKPiArI2RlZmluZSBWRElTS19DRFJPTSAgICAgICAgMHgxCj4gKyNkZWZpbmUgVkRJU0tf UkVNT1ZBQkxFICAgIDB4Mgo+ICsjZGVmaW5lIFZESVNLX1JFQURPTkxZICAgICAweDQKPiArCj4g KyNlbmRpZiAvKiBYRU5fUFVCTElDX0lPX0JMS0lGX0ggKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9ody94ZW4vaW8vcmluZy5oIGIvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL3JpbmcuaAo+ IHNpbWlsYXJpdHkgaW5kZXggMTAwJQo+IHJlbmFtZSBmcm9tIGluY2x1ZGUvaHcveGVuL2lvL3Jp bmcuaAo+IHJlbmFtZSB0byBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vcmluZy5oCj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby91c2JpZi5oIGIvaW5jbHVkZS9o dy94ZW4vaW50ZXJmYWNlL2lvL3VzYmlmLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAuLmFlM2RjNzIwZmEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9o dy94ZW4vaW50ZXJmYWNlL2lvL3VzYmlmLmgKPiBAQCAtMCwwICsxLDI1NCBAQAo+ICsvKgo+ICsg KiB1c2JpZi5oCj4gKyAqCj4gKyAqIFVTQiBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nl cy4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDA5LCBGVUpJVFNVIExBQk9SQVRPUklFUyBM VEQuCj4gKyAqIEF1dGhvcjogTm9ib3J1IEl3YW1hdHN1IDxuX2l3YW1hdHN1QGpwLmZ1aml0c3Uu Y29tPgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0 bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiArICog c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiAr ICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4g KyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO TyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO Rwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICov Cj4gKwo+ICsjaWZuZGVmIFhFTl9QVUJMSUNfSU9fVVNCSUZfSAo+ICsjZGVmaW5lIFhFTl9QVUJM SUNfSU9fVVNCSUZfSAo+ICsKPiArI2luY2x1ZGUgInJpbmcuaCIKPiArI2luY2x1ZGUgIi4uL2dy YW50X3RhYmxlLmgiCj4gKwo+ICsvKgo+ICsgKiBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3Rp YXRpb24KPiArICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKyAqIFRoZSB0 d28gaGFsdmVzIG9mIGEgWGVuIHB2VVNCIGRyaXZlciB1dGlsaXplIG5vZGVzIHdpdGhpbiB0aGUg WGVuU3RvcmUgdG8KPiArICogY29tbXVuaWNhdGUgY2FwYWJpbGl0aWVzIGFuZCB0byBuZWdvdGlh dGUgb3BlcmF0aW5nIHBhcmFtZXRlcnMuIFRoaXMKPiArICogc2VjdGlvbiBlbnVtZXJhdGVzIHRo ZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKPiArICog YmFja2VuZCBwb3J0aW9ucyBvZiB0aGUgWGVuU3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNv bnZlbnRpb24uCj4gKyAqCj4gKyAqIEFueSBzcGVjaWZpZWQgZGVmYXVsdCB2YWx1ZSBpcyBpbiBl ZmZlY3QgaWYgdGhlIGNvcnJlc3BvbmRpbmcgWGVuQnVzIG5vZGUKPiArICogaXMgbm90IHByZXNl bnQgaW4gdGhlIFhlblN0b3JlLgo+ICsgKgo+ICsgKiBYZW5TdG9yZSBub2RlcyBpbiBzZWN0aW9u cyBtYXJrZWQgIlBSSVZBVEUiIGFyZSBzb2xlbHkgZm9yIHVzZSBieSB0aGUKPiArICogZHJpdmVy IHNpZGUgd2hvc2UgWGVuQnVzIHRyZWUgY29udGFpbnMgdGhlbS4KPiArICoKPiArICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgWGVu QnVzIE5vZGVzCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0t LS0tLS0tLSBCYWNrZW5kIERldmljZSBJZGVudGlmaWNhdGlvbiAoUFJJVkFURSkgLS0tLS0tLS0t LS0tLS0tLS0tCj4gKyAqCj4gKyAqIG51bS1wb3J0cwo+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICB1bnNpZ25lZCBbMS4uLjMxXQo+ICsgKgo+ICsgKiAgICAgIE51bWJlciBvZiBwb3J0cyBmb3Ig dGhpcyAodmlydHVhbCkgVVNCIGhvc3QgY29ubmVjdG9yLgo+ICsgKgo+ICsgKiB1c2ItdmVyCj4g KyAqICAgICAgVmFsdWVzOiAgICAgICAgIHVuc2lnbmVkIFsxLi4uMl0KPiArICoKPiArICogICAg ICBVU0IgdmVyc2lvbiBvZiB0aGlzIGhvc3QgY29ubmVjdG9yOiAxID0gVVNCIDEuMSwgMiA9IFVT QiAyLjAuCj4gKyAqCj4gKyAqIHBvcnQvWzEuLi4zMV0KPiArICogICAgICBWYWx1ZXM6ICAgICAg ICAgc3RyaW5nCj4gKyAqCj4gKyAqICAgICAgUGh5c2ljYWwgVVNCIGRldmljZSBjb25uZWN0ZWQg dG8gdGhlIGdpdmVuIHBvcnQsIGUuZy4gIjMtMS41Ii4KPiArICoKPiArICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhlbkJ1cyBO b2Rlcwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSBSZXF1ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gKyAqCj4gKyAqIGV2ZW50LWNoYW5uZWwKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAg dW5zaWduZWQKPiArICoKPiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGV2ZW50 IGNoYW5uZWwgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkKPiArICogICAgICBpbiB0aGUgcmluZyBi dWZmZXIuCj4gKyAqCj4gKyAqIHVyYi1yaW5nLXJlZgo+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICB1bnNpZ25lZAo+ICsgKgo+ICsgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50 aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcAo+ICsgKiAgICAgIHRoZSBzb2xl IHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCByaW5nIGJ1ZmZlci4gVGhpcyBpcyB0aGUgcmlu Zwo+ICsgKiAgICAgIGJ1ZmZlciBmb3IgdXJiIHJlcXVlc3RzLgo+ICsgKgo+ICsgKiBjb25uLXJp bmctcmVmCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIHVuc2lnbmVkCj4gKyAqCj4gKyAqICAg ICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJh Y2tlbmQgdG8gbWFwCj4gKyAqICAgICAgdGhlIHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNp emVkIHJpbmcgYnVmZmVyLiBUaGlzIGlzIHRoZSByaW5nCj4gKyAqICAgICAgYnVmZmVyIGZvciBj b25uZWN0aW9uL2Rpc2Nvbm5lY3Rpb24gcmVxdWVzdHMuCj4gKyAqCj4gKyAqIHByb3RvY29sCj4g KyAqICAgICAgVmFsdWVzOiAgICAgICAgIHN0cmluZyAoWEVOX0lPX1BST1RPX0FCSV8qKQo+ICsg KiAgICAgIERlZmF1bHQgVmFsdWU6ICBYRU5fSU9fUFJPVE9fQUJJX05BVElWRQo+ICsgKgo+ICsg KiAgICAgIFRoZSBtYWNoaW5lIEFCSSBydWxlcyBnb3Zlcm5pbmcgdGhlIGZvcm1hdCBvZiBhbGwg cmluZyByZXF1ZXN0IGFuZAo+ICsgKiAgICAgIHJlc3BvbnNlIHN0cnVjdHVyZXMuCj4gKyAqCj4g KyAqLwo+ICsKPiArZW51bSB1c2Jfc3BlY192ZXJzaW9uIHsKPiArCVVTQl9WRVJfVU5LTk9XTiA9 IDAsCj4gKwlVU0JfVkVSX1VTQjExLAo+ICsJVVNCX1ZFUl9VU0IyMCwKPiArCVVTQl9WRVJfVVNC MzAsCS8qIG5vdCBzdXBwb3J0ZWQgeWV0ICovCj4gK307Cj4gKwo+ICsvKgo+ICsgKiAgVVNCIHBp cGUgaW4gdXNiaWZfcmVxdWVzdAo+ICsgKgo+ICsgKiAgLSBwb3J0IG51bWJlcjoJYml0cyAwLTQK PiArICoJCQkJKFVTQl9NQVhDSElMRFJFTiBpcyAzMSkKPiArICoKPiArICogIC0gb3BlcmF0aW9u IGZsYWc6CWJpdCA1Cj4gKyAqCQkJCSgwID0gc3VibWl0IHVyYiwKPiArICoJCQkJIDEgPSB1bmxp bmsgdXJiKQo+ICsgKgo+ICsgKiAgLSBkaXJlY3Rpb246CQliaXQgNwo+ICsgKgkJCQkoMCA9IEhv c3QtdG8tRGV2aWNlIFtPdXRdCj4gKyAqCQkJCSAxID0gRGV2aWNlLXRvLUhvc3QgW0luXSkKPiAr ICoKPiArICogIC0gZGV2aWNlIGFkZHJlc3M6CWJpdHMgOC0xNAo+ICsgKgo+ICsgKiAgLSBlbmRw b2ludDoJCWJpdHMgMTUtMTgKPiArICoKPiArICogIC0gcGlwZSB0eXBlOgliaXRzIDMwLTMxCj4g KyAqCQkJCSgwMCA9IGlzb2Nocm9ub3VzLCAwMSA9IGludGVycnVwdCwKPiArICoJCQkJIDEwID0g Y29udHJvbCwgMTEgPSBidWxrKQo+ICsgKi8KPiArCj4gKyNkZWZpbmUgVVNCSUZfUElQRV9QT1JU X01BU0sJMHgwMDAwMDAxZgo+ICsjZGVmaW5lIFVTQklGX1BJUEVfVU5MSU5LCTB4MDAwMDAwMjAK PiArI2RlZmluZSBVU0JJRl9QSVBFX0RJUgkJMHgwMDAwMDA4MAo+ICsjZGVmaW5lIFVTQklGX1BJ UEVfREVWX01BU0sJMHgwMDAwMDA3Zgo+ICsjZGVmaW5lIFVTQklGX1BJUEVfREVWX1NISUZUCTgK PiArI2RlZmluZSBVU0JJRl9QSVBFX0VQX01BU0sJMHgwMDAwMDAwZgo+ICsjZGVmaW5lIFVTQklG X1BJUEVfRVBfU0hJRlQJMTUKPiArI2RlZmluZSBVU0JJRl9QSVBFX1RZUEVfTUFTSwkweDAwMDAw MDAzCj4gKyNkZWZpbmUgVVNCSUZfUElQRV9UWVBFX1NISUZUCTMwCj4gKyNkZWZpbmUgVVNCSUZf UElQRV9UWVBFX0lTT0MJMAo+ICsjZGVmaW5lIFVTQklGX1BJUEVfVFlQRV9JTlQJMQo+ICsjZGVm aW5lIFVTQklGX1BJUEVfVFlQRV9DVFJMCTIKPiArI2RlZmluZSBVU0JJRl9QSVBFX1RZUEVfQlVM SwkzCj4gKwo+ICsjZGVmaW5lIHVzYmlmX3BpcGVwb3J0bnVtKHBpcGUpCQkJKChwaXBlKSAmIFVT QklGX1BJUEVfUE9SVF9NQVNLKQo+ICsjZGVmaW5lIHVzYmlmX3NldHBvcnRudW1fcGlwZShwaXBl LCBwb3J0bnVtKQkoKHBpcGUpIHwgKHBvcnRudW0pKQo+ICsKPiArI2RlZmluZSB1c2JpZl9waXBl dW5saW5rKHBpcGUpCQkJKChwaXBlKSAmIFVTQklGX1BJUEVfVU5MSU5LKQo+ICsjZGVmaW5lIHVz YmlmX3BpcGVzdWJtaXQocGlwZSkJCQkoIXVzYmlmX3BpcGV1bmxpbmsocGlwZSkpCj4gKyNkZWZp bmUgdXNiaWZfc2V0dW5saW5rX3BpcGUocGlwZSkJCSgocGlwZSkgfCBVU0JJRl9QSVBFX1VOTElO SykKPiArCj4gKyNkZWZpbmUgdXNiaWZfcGlwZWluKHBpcGUpCQkJKChwaXBlKSAmIFVTQklGX1BJ UEVfRElSKQo+ICsjZGVmaW5lIHVzYmlmX3BpcGVvdXQocGlwZSkJCQkoIXVzYmlmX3BpcGVpbihw aXBlKSkKPiArCj4gKyNkZWZpbmUgdXNiaWZfcGlwZWRldmljZShwaXBlKQkJCVwKPiArCQkoKChw aXBlKSA+PiBVU0JJRl9QSVBFX0RFVl9TSElGVCkgJiBVU0JJRl9QSVBFX0RFVl9NQVNLKQo+ICsK PiArI2RlZmluZSB1c2JpZl9waXBlZW5kcG9pbnQocGlwZSkJCVwKPiArCQkoKChwaXBlKSA+PiBV U0JJRl9QSVBFX0VQX1NISUZUKSAmIFVTQklGX1BJUEVfRVBfTUFTSykKPiArCj4gKyNkZWZpbmUg dXNiaWZfcGlwZXR5cGUocGlwZSkJCQlcCj4gKwkJKCgocGlwZSkgPj4gVVNCSUZfUElQRV9UWVBF X1NISUZUKSAmIFVTQklGX1BJUEVfVFlQRV9NQVNLKQo+ICsjZGVmaW5lIHVzYmlmX3BpcGVpc29j KHBpcGUpCSh1c2JpZl9waXBldHlwZShwaXBlKSA9PSBVU0JJRl9QSVBFX1RZUEVfSVNPQykKPiAr I2RlZmluZSB1c2JpZl9waXBlaW50KHBpcGUpCSh1c2JpZl9waXBldHlwZShwaXBlKSA9PSBVU0JJ Rl9QSVBFX1RZUEVfSU5UKQo+ICsjZGVmaW5lIHVzYmlmX3BpcGVjdHJsKHBpcGUpCSh1c2JpZl9w aXBldHlwZShwaXBlKSA9PSBVU0JJRl9QSVBFX1RZUEVfQ1RSTCkKPiArI2RlZmluZSB1c2JpZl9w aXBlYnVsayhwaXBlKQkodXNiaWZfcGlwZXR5cGUocGlwZSkgPT0gVVNCSUZfUElQRV9UWVBFX0JV TEspCj4gKwo+ICsjZGVmaW5lIFVTQklGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCAoMTYpCj4g KyNkZWZpbmUgVVNCSUZfTUFYX1BPUlROUgkzMQo+ICsjZGVmaW5lIFVTQklGX1JJTkdfU0laRQk0 MDk2Cj4gKwo+ICsvKgo+ICsgKiBSSU5HIGZvciB0cmFuc2ZlcnJpbmcgdXJicy4KPiArICovCj4g K3N0cnVjdCB1c2JpZl9yZXF1ZXN0X3NlZ21lbnQgewo+ICsJZ3JhbnRfcmVmX3QgZ3JlZjsKPiAr CXVpbnQxNl90IG9mZnNldDsKPiArCXVpbnQxNl90IGxlbmd0aDsKPiArfTsKPiArCj4gK3N0cnVj dCB1c2JpZl91cmJfcmVxdWVzdCB7Cj4gKwl1aW50MTZfdCBpZDsgLyogcmVxdWVzdCBpZCAqLwo+ ICsJdWludDE2X3QgbnJfYnVmZmVyX3NlZ3M7IC8qIG51bWJlciBvZiB1cmItPnRyYW5zZmVyX2J1 ZmZlciBzZWdtZW50cyAqLwo+ICsKPiArCS8qIGJhc2ljIHVyYiBwYXJhbWV0ZXIgKi8KPiArCXVp bnQzMl90IHBpcGU7Cj4gKwl1aW50MTZfdCB0cmFuc2Zlcl9mbGFnczsKPiArI2RlZmluZSBVU0JJ Rl9TSE9SVF9OT1RfT0sJMHgwMDAxCj4gKwl1aW50MTZfdCBidWZmZXJfbGVuZ3RoOwo+ICsJdW5p b24gewo+ICsJCXVpbnQ4X3QgY3RybFs4XTsgLyogc2V0dXBfcGFja2V0IChDdHJsKSAqLwo+ICsK PiArCQlzdHJ1Y3Qgewo+ICsJCQl1aW50MTZfdCBpbnRlcnZhbDsgLyogbWF4aW11bSAoMTAyNCo4 KSBpbiB1c2IgY29yZSAqLwo+ICsJCQl1aW50MTZfdCBzdGFydF9mcmFtZTsgLyogc3RhcnQgZnJh bWUgKi8KPiArCQkJdWludDE2X3QgbnVtYmVyX29mX3BhY2tldHM7IC8qIG51bWJlciBvZiBJU08g cGFja2V0ICovCj4gKwkJCXVpbnQxNl90IG5yX2ZyYW1lX2Rlc2Nfc2VnczsgLyogbnVtYmVyIG9m IGlzb19mcmFtZV9kZXNjIHNlZ21lbnRzICovCj4gKwkJfSBpc29jOwo+ICsKPiArCQlzdHJ1Y3Qg ewo+ICsJCQl1aW50MTZfdCBpbnRlcnZhbDsgLyogbWF4aW11bSAoMTAyNCo4KSBpbiB1c2IgY29y ZSAqLwo+ICsJCQl1aW50MTZfdCBwYWRbM107Cj4gKwkJfSBpbnRyOwo+ICsKPiArCQlzdHJ1Y3Qg ewo+ICsJCQl1aW50MTZfdCB1bmxpbmtfaWQ7IC8qIHVubGluayByZXF1ZXN0IGlkICovCj4gKwkJ CXVpbnQxNl90IHBhZFszXTsKPiArCQl9IHVubGluazsKPiArCj4gKwl9IHU7Cj4gKwo+ICsJLyog dXJiIGRhdGEgc2VnbWVudHMgKi8KPiArCXN0cnVjdCB1c2JpZl9yZXF1ZXN0X3NlZ21lbnQgc2Vn W1VTQklGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0 IHVzYmlmX3VyYl9yZXF1ZXN0IHVzYmlmX3VyYl9yZXF1ZXN0X3Q7Cj4gKwo+ICtzdHJ1Y3QgdXNi aWZfdXJiX3Jlc3BvbnNlIHsKPiArCXVpbnQxNl90IGlkOyAvKiByZXF1ZXN0IGlkICovCj4gKwl1 aW50MTZfdCBzdGFydF9mcmFtZTsgIC8qIHN0YXJ0IGZyYW1lIChJU08pICovCj4gKwlpbnQzMl90 IHN0YXR1czsgLyogc3RhdHVzIChub24tSVNPKSAqLwo+ICsJaW50MzJfdCBhY3R1YWxfbGVuZ3Ro OyAvKiBhY3R1YWwgdHJhbnNmZXIgbGVuZ3RoICovCj4gKwlpbnQzMl90IGVycm9yX2NvdW50OyAv KiBudW1iZXIgb2YgSVNPIGVycm9ycyAqLwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVjdCB1c2JpZl91 cmJfcmVzcG9uc2UgdXNiaWZfdXJiX3Jlc3BvbnNlX3Q7Cj4gKwo+ICtERUZJTkVfUklOR19UWVBF Uyh1c2JpZl91cmIsIHN0cnVjdCB1c2JpZl91cmJfcmVxdWVzdCwgc3RydWN0IHVzYmlmX3VyYl9y ZXNwb25zZSk7Cj4gKyNkZWZpbmUgVVNCX1VSQl9SSU5HX1NJWkUgX19DT05TVF9SSU5HX1NJWkUo dXNiaWZfdXJiLCBVU0JJRl9SSU5HX1NJWkUpCj4gKwo+ICsvKgo+ICsgKiBSSU5HIGZvciBub3Rp ZnlpbmcgY29ubmVjdC9kaXNjb25uZWN0IGV2ZW50cyB0byBmcm9udGVuZAo+ICsgKi8KPiArc3Ry dWN0IHVzYmlmX2Nvbm5fcmVxdWVzdCB7Cj4gKwl1aW50MTZfdCBpZDsKPiArfTsKPiArdHlwZWRl ZiBzdHJ1Y3QgdXNiaWZfY29ubl9yZXF1ZXN0IHVzYmlmX2Nvbm5fcmVxdWVzdF90Owo+ICsKPiAr c3RydWN0IHVzYmlmX2Nvbm5fcmVzcG9uc2Ugewo+ICsJdWludDE2X3QgaWQ7IC8qIHJlcXVlc3Qg aWQgKi8KPiArCXVpbnQ4X3QgcG9ydG51bTsgLyogcG9ydCBudW1iZXIgKi8KPiArCXVpbnQ4X3Qg c3BlZWQ7IC8qIHVzYl9kZXZpY2Vfc3BlZWQgKi8KPiArI2RlZmluZSBVU0JJRl9TUEVFRF9OT05F CTAKPiArI2RlZmluZSBVU0JJRl9TUEVFRF9MT1cJCTEKPiArI2RlZmluZSBVU0JJRl9TUEVFRF9G VUxMCTIKPiArI2RlZmluZSBVU0JJRl9TUEVFRF9ISUdICTMKPiArfTsKPiArdHlwZWRlZiBzdHJ1 Y3QgdXNiaWZfY29ubl9yZXNwb25zZSB1c2JpZl9jb25uX3Jlc3BvbnNlX3Q7Cj4gKwo+ICtERUZJ TkVfUklOR19UWVBFUyh1c2JpZl9jb25uLCBzdHJ1Y3QgdXNiaWZfY29ubl9yZXF1ZXN0LCBzdHJ1 Y3QgdXNiaWZfY29ubl9yZXNwb25zZSk7Cj4gKyNkZWZpbmUgVVNCX0NPTk5fUklOR19TSVpFIF9f Q09OU1RfUklOR19TSVpFKHVzYmlmX2Nvbm4sIFVTQklGX1JJTkdfU0laRSkKPiArCj4gKyNlbmRp ZiAvKiBYRU5fUFVCTElDX0lPX1VTQklGX0ggKi8KPiAtLQo+IEFudGhvbnkgUEVSQVJECgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==