From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (EUR04-HE1-obe.outbound.protection.outlook.com [40.107.7.47]) by mx.groups.io with SMTP id smtpd.web10.2873.1624933774936257855 for ; Mon, 28 Jun 2021 19:29:35 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=0pq021ak; spf=pass (domain: arm.com, ip: 40.107.7.47, mailfrom: jianyong.wu@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vuy2ad1tDfwnCiGRwcAGEQbT5HuISOhsWVKilMN7BKY=; b=0pq021akYb+HCkjeymsjOhMn2Owz39u07NB/lXNnofXQeXwCHqsBA7dMXNrC/cwyCleZPvIjvZXjelsI6rPbfrDzU7brQOYw1DF3Ha9zH9YRvYRUuh0GjbcNWVRWN41/S7SA+t8rEhTPAxNU08jrIoxQDuTxoSoeQjv6MrM0Too= Received: from AM6P195CA0008.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:81::21) by DBBPR08MB4235.eurprd08.prod.outlook.com (2603:10a6:10:c2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Tue, 29 Jun 2021 02:29:31 +0000 Received: from AM5EUR03FT028.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:81:cafe::66) by AM6P195CA0008.outlook.office365.com (2603:10a6:209:81::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Tue, 29 Jun 2021 02:29:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT028.mail.protection.outlook.com (10.152.16.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Tue, 29 Jun 2021 02:29:30 +0000 Received: ("Tessian outbound 37244c598b85:v97"); Tue, 29 Jun 2021 02:29:30 +0000 X-CR-MTA-TID: 64aa7808 Received: from b455c2346d24.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F831DC8B-31AF-42FC-B0D9-B472E8FE9FA6.1; Tue, 29 Jun 2021 02:29:20 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b455c2346d24.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 29 Jun 2021 02:29:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kPsg9Nveeiea2Dy7Kcv1FyOq3mJ7dQYbla7KDnc33qOUrFBUWF2gXRn5nIdvS+sjytkutpfJC1JgXLdQiuvXY6bPEed350F7XdBZRpDspWc0I17Fnzk9wMwuuFQHbGPdFxifGmmr0ZXzY8lWtefmi4KwKRyKsO30bhx0UdfVxP8S/nq8BgC6FK+BH6INbEebsS0Tf8ejX5q7b8rwnJ7za5KJB45Ob3Bm8YlZAzEuUs64n0ecU3lmrdmB1HAAJAc9fqnO+ul8cmlKdbNMg55bXuQER8Wxnmj5Ocxdn78jaqw7Xr+jdQOtDSSq25m+vGRst8F/xJWJDC8P2AaqzZrm3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vuy2ad1tDfwnCiGRwcAGEQbT5HuISOhsWVKilMN7BKY=; b=F4JiDr14AIfJxY0nGYKiz+tE78F+F0dB0TwCUSdo5pa6ZYHra/cXeET2gJQDubmKwtTT+lOb6JCIsOXhXODZAL9iRplOU4JtmBunOrriprAVcs+qi7s2wd9OZuXqVxfiHnlH6Rs1FpYz6LuZoPNRUz+DP9lHXZjyal6fZpFx2CMud6RaqEenDMUWVsFRTGkkbV10cPAT0ghI5fYmMUrnfQiJsmPzAzd5qyFVMSZHoi9o78fJtts/Fz/OWCTQLqGlcXuNNMq+7mhc13Qn1XRX1UPuWXUBd1KS4y9CnHg+Xzrzn9byzEzokkxfytgJspI70IR4mCUnBKNYquWeJr5SzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vuy2ad1tDfwnCiGRwcAGEQbT5HuISOhsWVKilMN7BKY=; b=0pq021akYb+HCkjeymsjOhMn2Owz39u07NB/lXNnofXQeXwCHqsBA7dMXNrC/cwyCleZPvIjvZXjelsI6rPbfrDzU7brQOYw1DF3Ha9zH9YRvYRUuh0GjbcNWVRWN41/S7SA+t8rEhTPAxNU08jrIoxQDuTxoSoeQjv6MrM0Too= Received: from AM9PR08MB7276.eurprd08.prod.outlook.com (2603:10a6:20b:437::11) by AM9PR08MB7241.eurprd08.prod.outlook.com (2603:10a6:20b:430::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.20; Tue, 29 Jun 2021 02:29:18 +0000 Received: from AM9PR08MB7276.eurprd08.prod.outlook.com ([fe80::f943:c3e7:f1d2:a004]) by AM9PR08MB7276.eurprd08.prod.outlook.com ([fe80::f943:c3e7:f1d2:a004%4]) with mapi id 15.20.4264.026; Tue, 29 Jun 2021 02:29:18 +0000 From: "Jianyong Wu" To: Sami Mujawar , "devel@edk2.groups.io" CC: "lersek@redhat.com" , "ardb+tianocore@kernel.org" , Justin He , nd Subject: Re: [PATCH v3 2/3] Acpi: Install Acpi tables for Cloud hypervisor Thread-Topic: [PATCH v3 2/3] Acpi: Install Acpi tables for Cloud hypervisor Thread-Index: AQHXbAPEl1iqpyVkkE2/J8xp3TkghqspWGaAgADmhjA= Date: Tue, 29 Jun 2021 02:29:17 +0000 Message-ID: References: <20210628095506.36076-1-jianyong.wu@arm.com> <20210628095506.36076-3-jianyong.wu@arm.com> <5676fa17-e4b6-b243-31a0-e957e12c4966@arm.com> In-Reply-To: <5676fa17-e4b6-b243-31a0-e957e12c4966@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 9DA8B7E5CCB49D43A4B518AB4ADA0B41.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.112] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 205f47e4-476d-4901-4b7c-08d93aa5b990 x-ms-traffictypediagnostic: AM9PR08MB7241:|DBBPR08MB4235: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:3383;OLM:3383; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: YxIfxXmF4AaOoKyXdOmEqXK6jJTxt1w8ctLUe0XLGg/qoP0LEugmOYQEGpcgrp6GPjIVQkgHKyI5et+6X9eYtTkHKi5lduokPyPG6IddLOlF+IBcLFE/h3n8b0aVC9aJK5sf508rAH0R/q6nlghR51Ps8ZXV0RRyOcK6cke3fpbC5X446nduRTdtSjY46JTXyk8g3f/TxbgSYudc3Gj2uwq/mouy6JI9VZFQZqD7PU+Zj0mU3wMrnC1dx62qKtGCsp1KtwP2GGX9SQ2jUOFjdCLArhn6jdg/ilBPKha97Z2OoJkIvU9JohyXFLJNNL4U5/waCQdQGUymHXZmYe3+GNpfkylio1ss2cExwk0AXHCbjTj8U9W8vgQDrP20wLnOAI8Fra7CpXSTDXPn5ZgQZOToa8aHGGgxiIzyJEfN3mwAkQhjGtYwGDcyvrwDgkJ1U8Z6CoYWrxauUsco++JiLYo8AnvrgKtbQO93RxFhRor5W604CX/curog8Q+A1ganIOij7ciJTXkTHI+nCosRMsunvCWRXl6prHn/ratRrgY+wsrxxvd9oQuVahjnBQZP+rQ+5aBEoudWcJj4gRwVDAALRQrUddy8BuSf0SbU9Glmww/dg7yC45+6a3PUAm2lt6ure2rldshEsQklxyq2yA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB7276.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(396003)(376002)(366004)(39850400004)(136003)(26005)(86362001)(83380400001)(54906003)(38100700002)(8936002)(66946007)(9686003)(76116006)(316002)(122000001)(478600001)(110136005)(4326008)(55016002)(52536014)(5660300002)(186003)(66476007)(64756008)(71200400001)(66556008)(66446008)(7696005)(33656002)(8676002)(2906002)(53546011)(6506007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VjNFdFFpOEsrOWZVazN6dTk4Uk1aYUdxSDIyZUtZcUpIUGVFZUEvckpRTXNK?= =?utf-8?B?a1FlSjVlS0F5MGl5dmMxV2RpWE5qZVUyMzJGbStxSlpWMEtjVW45cEZINXlr?= =?utf-8?B?d0UxWjZHYzhNSTBLb2Jtc2poMm1QWDJhRWVBRjdEUlJzNXNaSmU0alRFSlc1?= =?utf-8?B?NDB2aVc5WEw4Smx3cFJqaE9BNlJnSDRIbXpKbW9SbmptcnFzM1RhZDFhYU44?= =?utf-8?B?RGoxZ0luZHNsSFBxZVlaSEtzQ05ndDJzbUJBbnk3ZmZZbE94SmVFV0lPQU03?= =?utf-8?B?bnFDamc2VXJENzBaSGh6anJqZE1YVkgvckNpcmRLcnZjZCt6NzdaaGVkTnlG?= =?utf-8?B?RFZ2ZWZZUFpuRS9FTzJMZTQyNG9RSDQrZlBTUFJSM3F5ajY2SC8veE5PdnJ3?= =?utf-8?B?bHpmdnlYM1VwNzhqL3B1RTk1NWZVbStQYzJFR29MUWREaDM3S0gyR1lNLzBS?= =?utf-8?B?TDVsRlAzOTR0dDUrQll3VjlNdi80T0xVMEd2R01uU21ZWnhkR0lTaGU0UmZT?= =?utf-8?B?U2s3ZGZybDVBSEZxTmhmWlRRS0ZDSldJYXNxTG1jZTAwekVKZVRwNkkvVkhq?= =?utf-8?B?OFRzeUlFRTBEekk3SExWeGc3QUNmL05NYTlHWjYxUkN5SVk1cTdYVVhYM0pK?= =?utf-8?B?WWVidnQ5aHNFMXpGSnhpdElyMGpjODNFWU9PdWIwb05tbXVyWHJ5NElMTkQ5?= =?utf-8?B?dkIzNSt2QTQ1SlFCNXJmSUhBUVI1elkrZWZjZ1owTFF2MXZWQUtpK2IwNDZR?= =?utf-8?B?TFUyODRYLzFHQnp2WUVnQmpKK2F0SldZOXBHWTVOUnBtWS9KUTQ2WTVrUzMx?= =?utf-8?B?SXZ4Z1FrSE9xcHVjTTF2cnBuZ2lwZnRsK2VQMzAzK1JYcXJuS2JqT0V4QmlX?= =?utf-8?B?QktQRG5XSTVVY0hwVDlwbnNnem5HUW1raVFicnFCZzliZnp5UXQ5SEFyMTRR?= =?utf-8?B?djFUMk84UTVWYnc3L2lsYi9COTRWd1I4ZUs5NDZlUXNYVEMxY2F6aGpKOERk?= =?utf-8?B?aEkvSHI1dUNxdnhKd21yNGdwQ0I4OHBDSGJKejN6RWpqYU13eTkrVHFLNGJ1?= =?utf-8?B?N0ZUUkc4NkVTazdhL05hVjdGbE5sS2xhU0ZSdTQ4V0trWVU0YjN3QjFGaUFK?= =?utf-8?B?RFcyRXBXQ2lqZmV1OTlKU2pkYTUwNmZZTGlBWEMwMkRxU2RhN1V3b1owZjU1?= =?utf-8?B?dW5Kb2hoNlA4R01KbFJrbmFvbXdzcGR1bGNXUkl1dW5mYzFRY2VVNlczRWpk?= =?utf-8?B?TU1kMXAyNUZtUlpGbUpuNDlrWmMwQlIwWnRqdCt3TUd4YVVTUWVMY2lmVlZ6?= =?utf-8?B?WmRUUnFTbUlWYWljMTRDdU9aZUE4NTFyUWdHNThzVitDcXBneXI1bWp4d2Fx?= =?utf-8?B?cy9mWkVRWHdXdHBuUU00d2wvams3QWdxMGkyL1hwQVpxODZiK2M3eTFLdGFB?= =?utf-8?B?Q09sQWR6dHNDbWRqKys2Y2ovYjhFbU94S1hJTWM3K1FKUjlLYXBJbjRzUFQv?= =?utf-8?B?SU84TTlxcExCRTRnSDFNTHNrNEZzSWltaXVTNGlvbXRvRXRVM2R5TDNNYzhE?= =?utf-8?B?UG5rdWJSYlhtVW5SdlpKOFU5V1hHaDFyVVZxZVZzNlA4cmtjZTVjOVhrcmps?= =?utf-8?B?ZElqVWFhNkUwWkFOZ2dvZHBKZk41R0k1TWZkMUZqekNPdDIzSHh5Nm1qeWlL?= =?utf-8?B?d2NEU0dIbm5USlZORVNFRS9vMjA4NklUT293RHBDT2FUemoyRjEzWGpMT3Aw?= =?utf-8?Q?McffKmqicEOmrPaQmUPeJJDM4Xt7kHgRzGYVMT7?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB7241 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Jianyong.Wu@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 64f4e783-0188-4ffe-490a-08d93aa5b208 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m/1dDTJ5BP6XuTF8ntTWZvioKIOjn19S4QJUjBdm3tyZhd1JTeOe+cDmFxApx5NeNPpL9ZEEaONaFwPNofikHdEZm8T56AOGplyrliAzCV29qYePkM4RNWaY4ybD4JVHcNOBDz416A6vkFC3/LCU6wZRSzhp3Pv4SYYjcBXQ+hbx5R20AGZU/owMFLGN78mUUAqytCZJ0n6ndKZwHJsWLVOmdJbDJ8ySA/NoOyQ36OHLQZiG1I29ajs6GLFf4Ej0J8f8Od3RLaq3eg5OwY7kR7ttucfP30Lnh6j13xUQLDVVSt5aY3gspXJTCfNxRrkrbIPYkF/154SnvMfrNdNClGpCDpzh46IjdpaHhhJLtsQBXqniVq0HEdIpouf4Y74XGo8QPFqdzeh/iVziDskhTp/k/TN+wQpfGXjzYYcgYo6E/eBNY9MkpqD+iOzWGRBtAkFMot5WhQI5TKGQ29/M++6ZHu1OFYHeWHexrnteFrFSc70N2clIEo3CeGEKqGG2xiAYCuhshcF/qDW3HwfdMpBjILR4rU0psinjvoSu258g/oWMpvfETLE7uKyuvkBoOyvTk+kls6uqal6ICRlvZKh1xA5/daVEXWNBju6XeyNcPlhQOewVP9IgAwiAi86j3rfRtcdrZsP0hAQRDdRhf1ZJYQc1JSd2uvUrHmdcIKvTBiE7L/+R/xrt3nfKXCu7L93Y5V2gOio7JPxo+RfLWQ== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(396003)(39850400004)(376002)(346002)(136003)(46966006)(36840700001)(82740400003)(81166007)(356005)(36860700001)(82310400003)(47076005)(70206006)(83380400001)(2906002)(86362001)(52536014)(30864003)(70586007)(5660300002)(316002)(54906003)(4326008)(8936002)(33656002)(7696005)(6506007)(53546011)(8676002)(478600001)(110136005)(336012)(26005)(9686003)(55016002)(186003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2021 02:29:30.6062 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 205f47e4-476d-4901-4b7c-08d93aa5b990 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4235 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU2FtaSwNCg0KQWxsIGNvbW1lbnRzIGFyZSBhY2NlcHRlZC4gVGhhbmtzIGZvciB5b3VyIGVs YWJvcmF0ZSByZXZpZXcgd29yayENCg0KQlINCkppYW55b25nDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogU2FtaSBNdWphd2FyIDxTYW1pLk11amF3YXJAYXJtLmNvbT4N Cj4gU2VudDogTW9uZGF5LCBKdW5lIDI4LCAyMDIxIDg6MjIgUE0NCj4gVG86IEppYW55b25nIFd1 IDxKaWFueW9uZy5XdUBhcm0uY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IGxlcnNl a0ByZWRoYXQuY29tOyBhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnOyBKdXN0aW4gSGUNCj4gPEp1 c3Rpbi5IZUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djMgMi8zXSBBY3BpOiBJbnN0YWxsIEFjcGkgdGFibGVzIGZvciBDbG91ZCBoeXBlcnZpc29yDQo+ IA0KPiBIaSBKaWFueW9uZywNCj4gDQo+IFBsZWFzZSBmaW5kIG15IHJlc3BvbnNlIGlubGluZSBt YXJrZWQgW1NBTUldLg0KPiANCj4gUmVnYXJkcywNCj4gDQo+IFNhbWkgTXVqYXdhcg0KPiANCj4g T24gMjgvMDYvMjAyMSAxMDo1NSBBTSwgSmlhbnlvbmcgV3Ugd3JvdGU6DQo+ID4gVGhlcmUgaXMg bm8gZGV2aWNlIGxpa2UgRnctY2ZnIGluIFFlbXUgaW4gQ2xvdWQgSHlwZXJ2aXNvciwgc28gYQ0K PiA+IHNwZWNpZmljIEFjcGkgaGFuZGxlciBpcyBpbnRyb2R1Y2VkIGhlcmUuDQo+ID4NCj4gPiBU aGUgaGFuZGxlciBpbXBsZW1lbnRlZCBoZXJlIGlzIGluIGEgdmVyeSBzaW1wbGUgd2F5Og0KPiA+ IDEuIGFjcXVpcmUgdGhlIFJTRFAgZnJvbSB0aGUgUENEIHZhcmlhYmxlIGluIHRoZSB0b3AgIi5k c2MiOyAyLiBnZXQNCj4gPiB0aGUgWFNEVCBhZGRyZXNzIGZyb20gUlNEUCBzdHJ1Y3R1cmU7IDMu IGdldCB0aGUgQUNQSSB0YWJsZXMgZm9sbG93aW5nDQo+ID4gdGhlIFhTRFQgc3RydWN0dXJlIGFu ZCBpbnN0YWxsIHRoZW0gb25lIGJ5IG9uZTsgNC4gZ2V0IERTRFQgYWRkcmVzcw0KPiA+IGZyb20g RkFEVCBhbmQgaW5zdGFsbCBEU0RUIHRhYmxlLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmlh bnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+DQo+ID4gLS0tDQo+ID4gICBBcm1WaXJ0UGtn L0FybVZpcnRQa2cuZGVjICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KPiA+ICAgLi4uL0Ns b3VkSHZBY3BpUGxhdGZvcm1EeGUuaW5mICAgICAgICAgICAgICAgIHwgIDQ3ICsrKysrKw0KPiA+ ICAgLi4uL0Nsb3VkSHZBY3BpUGxhdGZvcm1EeGUvQ2xvdWRIdkFjcGkuYyAgICAgIHwgMTQxDQo+ ICsrKysrKysrKysrKysrKysrKw0KPiA+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9u cygrKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IEFybVZpcnRQa2cvQ2xvdWRIdkFjcGlQ bGF0Zm9ybUR4ZS9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlLmluZg0KPiA+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IEFybVZpcnRQa2cvQ2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS9DbG91ZEh2QWNwaS5jDQo+ ID4NCj4gPiBkaWZmIC0tZ2l0IGEvQXJtVmlydFBrZy9Bcm1WaXJ0UGtnLmRlYyBiL0FybVZpcnRQ a2cvQXJtVmlydFBrZy5kZWMNCj4gPiBpbmRleCBiZjgyZjdmMWYzZjIuLjRlNGQ3NTgwMTViYyAx MDA2NDQNCj4gPiAtLS0gYS9Bcm1WaXJ0UGtnL0FybVZpcnRQa2cuZGVjDQo+ID4gKysrIGIvQXJt VmlydFBrZy9Bcm1WaXJ0UGtnLmRlYw0KPiA+IEBAIC02Niw2ICs2NiwxMiBAQCBbUGNkc0ZpeGVk QXRCdWlsZCwgUGNkc1BhdGNoYWJsZUluTW9kdWxlXQ0KPiA+ICAgICAjDQo+ID4gICAgIGdBcm1W aXJ0VG9rZW5TcGFjZUd1aWQuUGNkVGVybWluYWxUeXBlR3VpZEJ1ZmZlcnx7MHg2NSwgMHg2MCwN Cj4gPiAweEE2LCAweERGLCAweDE5LCAweEI0LCAweEQzLCAweDExLCAweDlBLCAweDJELCAweDAw LCAweDkwLCAweDI3LA0KPiA+IDB4M0YsIDB4QzEsIDB4NER9fFZPSUQqfDB4MDAwMDAwMDcNCj4g Pg0KPiA+ICsgICMjDQo+ID4gKyAgIyBUaGlzIGlzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIFJz ZHAgd2hpY2ggaXMgdGhlIGNvcmUgc3RydWN0IG9mIEFjcGkuDQo+ID4gKyAgIyBDbG91ZCBIeXBl cnZpc29yIGhhcyBubyBvdGhlciB3YXkgdG8gcGFzcyBSc2RwIGFkZHJlc3MgdG8gdGhlIGd1ZXN0 DQo+IGV4Y2VwdCB1c2UgYSBQQ0QuDQo+ID4gKyAgIw0KPiA+ICsNCj4gPiArDQo+IGdBcm1WaXJ0 VG9rZW5TcGFjZUd1aWQuUGNkQ2xvdWRIdkFjcGlSc2RwQmFzZUFkZHJlc3N8MHgwfFVJTlQ2NHww DQo+IHgwMA0KPiA+ICsgMDAwMDA1DQo+ID4gKw0KPiA+ICAgW1BjZHNEeW5hbWljXQ0KPiA+ICAg ICAjDQo+ID4gICAgICMgV2hldGhlciB0byBmb3JjZSBkaXNhYmxlIEFDUEksIHJlZ2FyZGxlc3Mg b2YgdGhlIGZ3X2NmZyBzZXR0aW5ncw0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL0FybVZpcnRQa2cv Q2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlLmluZg0KPiA+IGIv QXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlL0Nsb3VkSHZBY3BpUGxhdGZvcm1EeGUu aW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjAx ZGU3NjQ4NjY4Ng0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9Bcm1WaXJ0UGtnL0Nsb3Vk SHZBY3BpUGxhdGZvcm1EeGUvQ2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS5pbmYNCj4gPiBAQCAtMCww ICsxLDQ3IEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyMgIEFDUEkgUGxhdGZvcm0gRHJpdmVyIGZv ciBDbG91ZCBIeXBlcnZpc29yICMgIyAgQ29weXJpZ2h0IChjKSAyMDIxLA0KPiA+ICtBUk0gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ICMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy Og0KPiA+ICtCU0QtMi1DbGF1c2UtUGF0ZW50ICMgIyMNCj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0K PiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gPiAr ICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBDbG91ZEh2Z0FjcGlQbGF0Zm9ybQ0K PiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDZjNzZlNDA3LTczZjItZGMx Yy05MzhmLTVkNmM0NjkxZWE5Mw0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAg ICA9IERYRV9EUklWRVINCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAx LjANCj4gPiArICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBDbG91ZEh2QWNwaVBs YXRmb3JtRW50cnlQb2ludA0KPiA+ICsNCj4gPiArIw0KPiA+ICsjIFRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlDQo+ IGJ1aWxkIHRvb2xzLg0KPiA+ICsjDQo+ID4gKyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAg ICAgPSBBQVJDSDY0DQo+ID4gKyMNCj4gPiArDQo+ID4gK1tTb3VyY2VzXQ0KPiA+ICsgIENsb3Vk SHZBY3BpLmMNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRl Yw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgT3ZtZlBrZy9P dm1mUGtnLmRlYw0KPiA+ICsgIEFybVZpcnRQa2cvQXJtVmlydFBrZy5kZWMNCj4gPiArDQo+ID4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiArICBCYXNlTGliDQo+ID4gKyAgRGVidWdMaWINCj4gPiAr ICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4gKyAgT3JkZXJlZENvbGxlY3Rpb25MaWINCj4gPiAr ICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiArICBVZWZpRHJpdmVyRW50cnlQb2ludA0K PiA+ICsNCj4gPiArW1Byb3RvY29sc10NCj4gPiArICBnRWZpQWNwaVRhYmxlUHJvdG9jb2xHdWlk ICAgICAgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBBTFdBWVNfQ09OU1VNRUQNCj4gPiArDQo+ ID4gK1tQY2RdDQo+ID4gKyAgZ0FybVZpcnRUb2tlblNwYWNlR3VpZC5QY2RDbG91ZEh2QWNwaVJz ZHBCYXNlQWRkcmVzcw0KPiA+ICsNCj4gPiArW0RlcGV4XQ0KPiA+ICsgIGdFZmlBY3BpVGFibGVQ cm90b2NvbEd1aWQNCj4gPiBkaWZmIC0tZ2l0IGEvQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRm b3JtRHhlL0Nsb3VkSHZBY3BpLmMNCj4gPiBiL0FybVZpcnRQa2cvQ2xvdWRIdkFjcGlQbGF0Zm9y bUR4ZS9DbG91ZEh2QWNwaS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw MDAwMDAwMDAwMDAuLjBmMWE1MGQ2M2NkNg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9B cm1WaXJ0UGtnL0Nsb3VkSHZBY3BpUGxhdGZvcm1EeGUvQ2xvdWRIdkFjcGkuYw0KPiA+IEBAIC0w LDAgKzEsMTQxIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluc3RhbGwgQWNwaSB0YWJsZXMg Zm9yIENsb3VkIEh5cGVydmlzb3INCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIxLCBB cm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICoqLw0KPiA+ICsNCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1v cnlBbGxvY2F0aW9uTGliLmg+ICNpbmNsdWRlDQo+ID4gKzxJbmR1c3RyeVN0YW5kYXJkL0FjcGk2 My5oPiAjaW5jbHVkZSA8UHJvdG9jb2wvQWNwaVRhYmxlLmg+ICNpbmNsdWRlDQo+ID4gKzxMaWJy YXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpRHJpdmVyRW50cnlQb2ludC5oPiAjaW5jbHVkZQ0KPiA+ICs8TGlicmFyeS9EZWJ1Z0xpYi5o Pg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgIEZpbmQgQWNwaSB0YWJsZSBQcm90b2NvbCBhbmQg cmV0dXJuIGl0DQo+IFtTQU1JXVBsZWFzZSBhZGQgZGVzY3JpcHRpb24gb2YgdmFsdWUgcmV0dXJu ZWQgYnkgdGhpcyBmdW5jdGlvbi4NCj4gWy9TQU1JXQ0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ ID4gK0VGSV9BQ1BJX1RBQkxFX1BST1RPQ09MICoNCj4gPiArRmluZEFjcGlUYWJsZVByb3RvY29s ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9BQ1BJX1RBQkxFX1BST1RPQ09MICpBY3BpVGFi bGU7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2wgKA0KPiA+ICsg ICAgICAgICAgICAgICAgICAmZ0VmaUFjcGlUYWJsZVByb3RvY29sR3VpZCwNCj4gPiArICAgICAg ICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQqKikmQWNwaVRh YmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gPiArICByZXR1cm4gQWNwaVRhYmxlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiogSW5zdGFsbCBBY3BpIHRhYmxlcyBmb3IgQ2xvdWQgSHlwZXJ2aXNvcg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gW2luXSAgQWNwaVByb3RvY29sICBBY3BpIFByb3RvY29sIHdoaWNoIGlzIHVzZWQg dG8gaW5zdGFsbA0KPiA+ICsgQWNwaSB0YWxibGVzDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gRUZJ X1NVQ0NFU1MgICAgICAgICAgICBUaGUgdGFibGUgd2FzIHN1Y2Nlc3NmdWxseSBpbnNlcnRlZC4N Cj4gPiArICBAcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRWl0aGVyIEFjcGlUYWJsZUJ1 ZmZlciBpcyBOVUxMLA0KPiBUYWJsZUtleSBpcyBOVUxMLCBvciBBY3BpVGFibGVCdWZmZXJTaXpl DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgc2l6ZSBmaWVs ZCBlbWJlZGRlZCBpbiB0aGUgQUNQSSB0YWJsZSBwb2ludGVkIHRvDQo+IGJ5IEFjcGlUYWJsZUJ1 ZmZlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IGluIHN5 bmMuDQo+ID4gKyAgQHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUyAgIEluc3VmZmljaWVudCBy ZXNvdXJjZXMgZXhpc3QgdG8NCj4gY29tcGxldGUgdGhlIHJlcXVlc3QuDQo+ID4gKyAgQHJldHZh bCBFRklfQUNDRVNTX0RFTklFRCAgICAgIFRoZSB0YWJsZSBzaWduYXR1cmUgbWF0Y2hlcyBhIHRh YmxlDQo+IGFscmVhZHkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl c2VudCBpbiB0aGUgc3lzdGVtIGFuZCBwbGF0Zm9ybSBwb2xpY3kNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgYWxsb3cgZHVwbGljYXRlIHRhYmxlcyBvZiB0 aGlzIHR5cGUuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtJ bnN0YWxsQ2xvdWRIdkFjcGlUYWJsZXMgKA0KPiA+ICsgSU4gICAgIEVGSV9BQ1BJX1RBQkxFX1BS T1RPQ09MICAgICAgICpBY3BpUHJvdG9jb2wNCj4gPiArICkNCj4gPiArew0KPiA+ICsgIFVJTlRO IEluc3RhbGxlZEtleSwgVGFibGVTaXplLCBBY3BpVGFibGVMZW5ndGg7DQo+IFtTQU1JXSBEZWZp bmUgZWFjaCBsb2NhbCB2YXJpYWJsZSBzZXBhcmF0ZWx5IG9uIGEgbmV3IGxpbmUuDQo+ID4gKyAg VUlOVDY0IFJzZHBQdHIsIFhzZHRQdHIsIFRhYmxlT2Zmc2V0LCBBY3BpVGFibGVQdHIsIERzZHRQ dHIgPSB+MDsNCj4gW1NBTUldIEkgdGhpbmsgRHNkdFB0ciBjYW4gYmUgVUlOVDY0IHBvaW50ZXIg YW5kIGluaXRpYWxpc2VkIHRvIE5VTEwgYmVmb3JlDQo+IGZpcnN0IHVzZS4NCj4gPiArICBFRklf U1RBVFVTIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ICsgIEJPT0xFQU4gR290RmFjcCA9IEZB TFNFOw0KPiBbU0FNSV0gSSB0aGluayBHb3RGYWNwIGNvdWxkIHByb2JhYmx5IGJlIGF2b2lkZWQs IHNlZSBjb21tZW50cyBiZWxvdy4NCj4gPiArDQo+ID4gKyAgUnNkcFB0ciA9IFBjZEdldDY0IChQ Y2RDbG91ZEh2QWNwaVJzZHBCYXNlQWRkcmVzcyk7ICBYc2R0UHRyID0NCj4gPiArICgoRUZJX0FD UElfNl8zX1JPT1RfU1lTVEVNX0RFU0NSSVBUSU9OX1BPSU5URVIgKikNCj4gPiArIFJzZHBQdHIp LT5Yc2R0QWRkcmVzczsNCj4gW1NBTUldIE5vIHNwYWNlIGJldHdlZW4gdHlwZWNhc3QgYW5kIHRo ZWlyIG9iamVjdC4gU2FtZSBjb21tZW50IGZvcg0KPiBzaW1pbGFyIGluc3RhbmNlcyBpbiB0aGlz IHBhdGNoIHNlcmllcy4NCj4gPiArICBBY3BpVGFibGVMZW5ndGggPSAoKEVGSV9BQ1BJX0NPTU1P Tl9IRUFERVIgKikgWHNkdFB0ciktPkxlbmd0aDsNCj4gPiArIFRhYmxlT2Zmc2V0ID0gc2l6ZW9m IChFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIpOw0KPiA+ICsNCj4gW1NBTUldIFNldCBEc2R0 UHRyID0gTlVMTCwgaGVyZS4NCj4gPiArICB3aGlsZSAoIUVGSV9FUlJPUihTdGF0dXMpDQo+ID4g KyAgICAmJiAoVGFibGVPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpKSAgew0KPiBbU0FNSV0gU3Rh cnRpbmcgY3VybHkgYnJhY2UgYXQgdGhlIGVuZCBvZiBwcmV2aW91cyBsaW5lLCBwbGVhc2UuDQo+ ID4gKyAgICBBY3BpVGFibGVQdHIgPSAqKFVJTlQ2NCAqKSAoWHNkdFB0ciArIFRhYmxlT2Zmc2V0 KTsNCj4gPiArICAgIFRhYmxlU2l6ZSA9ICgoRUZJX0FDUElfQ09NTU9OX0hFQURFUiAqKSBBY3Bp VGFibGVQdHIpLT5MZW5ndGg7DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEluc3Rh bGwgQUNQSSB0YWJsZXMgZnJvbSBYU0RUDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0g QWNwaVByb3RvY29sLT5JbnN0YWxsQWNwaVRhYmxlICgNCj4gW1NBTUldIEFjcGlQcm90b2NvbCBw b2ludGVyIG5vdCBjaGVja2VkIGJlZm9yZSB1c2UuIEluIHJlbGVhc2UgYnVpbGRzIHRoZQ0KPiBB U1NFUlRzIGluIEZpbmRBY3BpVGFibGVQcm90b2NvbCgpIHdvdWxkIHZhbmlzaCBhbmQgYSBmYWls dXJlIHRvIGdldCB0aGUNCj4gcHJvdG9jb2wgd291bGQgcmVzdWx0IGluIGEgY3Jhc2ggd2hlbiBk ZXJlZmVyZW5jaW5nIHRoZSBwb2ludGVyIGhlcmUuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQWNwaVByb3RvY29sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChWT0lEICopKFVJTlQ2NClBY3BpVGFibGVQdHIsDQo+IFtTQU1JXSBDYW4geW91IGNoZWNrIGlm IHR5cGVjYXN0IHRvIFVJTlQ2NCBpcyBuZWVkZWQgaGVyZSwgcGxlYXNlPw0KPiBTaW1pbGFybHks IGFsc28gY2hlY2sgYXQgb3RoZXIgcGxhY2VzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRhYmxlU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmSW5z dGFsbGVkS2V5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gW1NBTUld IFBsZWFzZSByZWNvbnNpZGVyIGVycm9yIGhhbmRsaW5nIGluIHRoaXMgZnVuY3Rpb24uIFByb2Jh Ymx5IGJlc3QgY2hlY2sNCj4gYW5kIHJldHVybiBmYWlsdXJlIGZyb20gaGVyZS4gVGhpcyB3b3Vs ZCBtZWFuIHRoZSBzdGF0dXMgd291bGQgbm90IG5lZWQgdG8NCj4gYmUgY2hlY2tlZCBpbiB0aGUg d2hpbGUgKCkgc3RhdGVtZW50IGFuZCBjb3JyZXNwb25kaW5nbHkgdGhlcmUgaXMgbm8gbmVlZCB0 bw0KPiBpbml0aWFsaXNlIFN0YXR1cyB0byBFRklfU1VDQ0VTUyBhdCB0aGUgYmVnaW5pbmcgb2Yg dGhpcyBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAgICBUYWJsZU9mZnNldCArPSBzaXplb2YgKFVJ TlQ2NCk7DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEdldCBEU0RUIGZyb20gRkFE VA0KPiA+ICsgICAgLy8NCj4gPiArICAgIGlmICghR290RmFjcA0KPiA+ICsgICAgICAmJiAhQXNj aWlTdHJuQ21wICgoQ0hBUjggKikgJigoRUZJX0FDUElfQ09NTU9OX0hFQURFUiAqKQ0KPiBBY3Bp VGFibGVQdHIpLT5TaWduYXR1cmUsICJGQUNQIiwgNCkpDQo+ID4gKyAgICB7DQo+IFtTQU1JXSBD dXJseSBicmFjZSBvbiBwcmV2aW91cyBsaW5lLCBwbGVhc2UuICchR290RmFjcCcgY291bGQgYmUg cmVwbGFjZWQNCj4gd2l0aCAoRHNkdFB0ciAhPSBOVUxMKS4NCj4gPiArICAgICAgRHNkdFB0ciA9 ICgoRUZJX0FDUElfNl8zX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEUgKikNCj4gQWNwaVRh YmxlUHRyKS0+WERzZHQ7DQo+ID4gKyAgICAgIEdvdEZhY3AgPSBUUlVFOw0KPiA+ICsgICAgfQ0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKERzZHRQdHIgPT0gfjApIHsNCj4gW1NBTUldIFBs ZWFzZSBjaGFuZ2UgdG8nIElmIChEc2R0UHRyID09IE5VTEwpJy4NCj4gPiArICAgIERFQlVHICgo REVCVUdfRVJST1IsICIlYTogbm8gRFNEVCBmb3VuZFxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4g KyAgICBBU1NFUlQgKEZBTFNFKTsNCj4gPiArICAgIENwdURlYWRMb29wICgpOw0KPiBbU0FNSV0g SSB0aGluayBFRklfTk9UX0ZPVU5EIGNvdWxkIGJlIHJldHVybmVkIGhlcmUsIGFuZCB0aGUNCj4g Q3B1RGVhZExvb3ANCj4gKCkgY291bGQgYmUgbW92ZWQgdG8gQ2xvdWRIdkFjcGlQbGF0Zm9ybUVu dHJ5UG9pbnQoKS4NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSW5zdGFs bCBEU0RUIHRhYmxlDQo+ID4gKyAgLy8NCj4gPiArICBUYWJsZVNpemUgPSAoKEVGSV9BQ1BJX0NP TU1PTl9IRUFERVIgKikgRHNkdFB0ciktPkxlbmd0aDsgIFN0YXR1cw0KPiA9DQo+ID4gKyBBY3Bp UHJvdG9jb2wtPkluc3RhbGxBY3BpVGFibGUgKA0KPiA+ICsgICAgICAgICAgICAgQWNwaVByb3Rv Y29sLA0KPiA+ICsgICAgICAgICAgICAgKFZPSUQgKikoVUlOVDY0KSBEc2R0UHRyLA0KPiA+ICsg ICAgICAgICAgICAgVGFibGVTaXplLA0KPiA+ICsgICAgICAgICAgICAgJkluc3RhbGxlZEtleQ0K PiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqIEVudHJ5IHBvaW50IGZvciBDbG91ZCBIeXBlcnZpc29yIFBsYXRm b3JtIER4ZQ0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIEhhbmRsZSBm b3IgdGhpcyBpbWFnZS4NCj4gPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIg dG8gdGhlIEVGSSBzeXN0ZW0gdGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gRUZJX1NVQ0NF U1MgICAgICAgICAgICBUaGUgdGFibGUgd2FzIHN1Y2Nlc3NmdWxseSBpbnNlcnRlZC4NCj4gPiAr ICBAcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRWl0aGVyIEFjcGlUYWJsZUJ1ZmZlciBp cyBOVUxMLA0KPiBUYWJsZUtleSBpcyBOVUxMLCBvciBBY3BpVGFibGVCdWZmZXJTaXplDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgc2l6ZSBmaWVsZCBlbWJl ZGRlZCBpbiB0aGUgQUNQSSB0YWJsZSBwb2ludGVkIHRvDQo+IGJ5IEFjcGlUYWJsZUJ1ZmZlcg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IGluIHN5bmMuDQo+ ID4gKyAgQHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUyAgIEluc3VmZmljaWVudCByZXNvdXJj ZXMgZXhpc3QgdG8NCj4gY29tcGxldGUgdGhlIHJlcXVlc3QuDQo+ID4gKyAgQHJldHZhbCBFRklf QUNDRVNTX0RFTklFRCAgICAgIFRoZSB0YWJsZSBzaWduYXR1cmUgbWF0Y2hlcyBhIHRhYmxlDQo+ IGFscmVhZHkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCBp biB0aGUgc3lzdGVtIGFuZCBwbGF0Zm9ybSBwb2xpY3kNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9lcyBub3QgYWxsb3cgZHVwbGljYXRlIHRhYmxlcyBvZiB0aGlzIHR5 cGUuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtDbG91ZEh2 QWNwaVBsYXRmb3JtRW50cnlQb2ludCAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgIElt YWdlSGFuZGxlLA0KPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICAqU3lzdGVtVGFibGUNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gSW5zdGFsbENsb3VkSHZBY3BpVGFibGVz IChGaW5kQWNwaVRhYmxlUHJvdG9jb2wgKCkpOw0KPiBbU0FNSV0gQ2hlY2sgc3RhdHVzIGNvZGUg aGVyZSBhbmQgb24gZmFpbHVyZSBleGVjdXRlIENwdURlYWRMb29wICgpLg0KPiA+ICsgIHJldHVy biBTdGF0dXM7DQo+ID4gK30NCg0K