From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 7A57C78003C for ; Fri, 15 Dec 2023 06:41:29 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=KLHeXiE6OYpaYCLktfMZliDpjI4x5FvpnWuS2LyFKac=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1702622488; v=1; b=Kc3PK5Fj1OREhFe+/oALzBC2J3XK1PQAsA5Av0kE2EcLJXfTdtkCyb2iKi2cv5HPr6LnqH+e NgATEt0Y+YLEkkvr6jN1I0Bke48esTz2iKLX5TGRQAHtx4sol8gBhiwLFryWfiCTqTLOMqgprf0 sXq4aRUIl3SGB7U1AEbvlJzg= X-Received: by 127.0.0.2 with SMTP id voaSYY7687511xvMoDQ3BFPi; Thu, 14 Dec 2023 22:41:28 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.55385.1702622486337278191 for ; Thu, 14 Dec 2023 22:41:27 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10924"; a="398026395" X-IronPort-AV: E=Sophos;i="6.04,277,1695711600"; d="scan'208";a="398026395" X-Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2023 22:41:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10924"; a="808862659" X-IronPort-AV: E=Sophos;i="6.04,277,1695711600"; d="scan'208";a="808862659" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga001.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 Dec 2023 22:41:25 -0800 X-Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 14 Dec 2023 22:41:24 -0800 X-Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 14 Dec 2023 22:41:24 -0800 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 14 Dec 2023 22:41:23 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ci4FlHmi9T+VhhPOBU3KtHootpHYl9RlIctJlvio5wOHNBfSZc39hK0oL2askoyhph4jzeXnHeGJ4NtbWYMo35eXYXRwhfmX0+X2FL/Xjddr8xvWh+O0etHOv8sF1dWS2UOh9cX+EBzqexDW0No4QqytbKw3jtgmd2SJSHq/AVmlKARo5hJP5PblKk9rlODgcrzA7nNfEmvyroM08hTMbJOgC0aYEUuVStVDl6a9wF8zKywAznD463BzOaoIzJQ5g6tVFmz10ibZBZcNOn35cp7CtPSbhbQdZ5ijG4QrAwSy51QL+kisNMkzZdJxXQ0fFMyPJRIWJIU/edPp5/Rm1w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jslqzOA6lX4KIYBcUq4OfUn0AibE0QJsojx4y2R0ljo=; b=hmAtsd74Dt5xW+VD6f/jsGMEKRI8elIC91s1h3wd1plsZEdDTN3x9S2H1B3/796nHshiwJhcfXcyoCbLrn66kCpO2h5kxGkBy9eV8iR7vos2p9p8YP03iRosiKOw6PWdDN5OLS4suFT1LStQQAZfWDH4KaQNqMdU028lWZM8/rqlv1m2rpaQi5ENfNFOvRKfZEqIuumzsngkNPmQFTO79i+Uavce9jkHvh1pub2HcVXon0ZBR2AOqEXamoIsLDO4ZDkkV4uHvIScVHdVRtJeNmoxyGuTPuHfjSUukhrGbXcVcj80QSRYG3tryr+V6eJvI/9qsaAupdQQghRnFn1P2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from MN0PR11MB6158.namprd11.prod.outlook.com (2603:10b6:208:3ca::18) by CY8PR11MB7394.namprd11.prod.outlook.com (2603:10b6:930:85::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.31; Fri, 15 Dec 2023 06:41:16 +0000 X-Received: from MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::864d:d91a:4674:e0f7]) by MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::864d:d91a:4674:e0f7%7]) with mapi id 15.20.7091.028; Fri, 15 Dec 2023 06:41:15 +0000 From: "Wu, Jiaxin" To: "devel@edk2.groups.io" , "lersek@redhat.com" CC: "Dong, Eric" , "Ni, Ray" , "Zeng, Star" , Gerd Hoffmann , "Kumar, Rahul R" Subject: Re: [edk2-devel] [PATCH v3 3/6] UefiCpuPkg: Implements SmmCpuSyncLib library instance Thread-Topic: [edk2-devel] [PATCH v3 3/6] UefiCpuPkg: Implements SmmCpuSyncLib library instance Thread-Index: AQHaLdF0QsFHJxUIn0ap8zpRovEEUbCoIymQgACpswCAAAiScIABEdMw Date: Fri, 15 Dec 2023 06:41:15 +0000 Message-ID: References: <20231206100122.8028-1-jiaxin.wu@intel.com> <20231206100122.8028-4-jiaxin.wu@intel.com> <3b31f213-f102-acd4-4af6-d2b77fbde9a9@redhat.com> <4a2911fb-aa15-efb0-f2e4-1c5bac8aab8d@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN0PR11MB6158:EE_|CY8PR11MB7394:EE_ x-ms-office365-filtering-correlation-id: ea4d6620-998d-4c9e-f0ed-08dbfd38d659 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: 0w5uGnUZCqNoNF4wbBQerzlB1Yuhb2duv/13kFqovCc+sAMwS7hF8EZQRX5zRTSDImQ2U1D/o9c2zs0DmW1f2sflkTBGCmqQEt9E3bgAPN4OE2L+KZ1I7OTzCsiFgEpYWvS6Xh+gZ2MOBTkQkNBbwGjsGYxBdwUJey6jGGXzt0jiA7DqFY/LFQPr4dHO98vT/77yXoQMebnqec54XZq3QTp0XCs4XHSKmIQp33RsiHbjPNOoNyEkDQuuNKFbLJjZ6udxoiEdIy2RjCaoA48cLPCTHQ4xz0wRaGwHTelUgr3nai2Z2BNs8Nf2eqpBTBQ7vo60pTZ+Iu+jqiyO5kRk5SUdfGtg3WqsBC/Ar6SXm791Sv5KhzBYz5b/mo/KOP1KYdS9FHr3dr4lGSo3k4dOHluDeCcDLsHkllVo3Ac570P/jIln40nQtIg8MVaIf+67gQ6FiALPphFI/j8NobrqKROB8joGwv0J2c8cA4rRwikABp3qLR3HCPd5eLObi0yCTY/D7K/HmJQMUWaRvuzbkWz2oS+1tyH3kG4JDZ9Awj2j7dNI1YYMsFlpJEcm1Ffa+yek405LC4qqVUTGvXTtbNDOVnGHJaFkoo7YP6fj3o80tTKHr+JgKx3IhqzH7zPm x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OTVBZnhrWmJ2b2xheGwxS1ZXVTk0ajFORytLbVQ1SHJPY1N4NWVZVnRCNTNi?= =?utf-8?B?TkRDbCtWNGhrOWRCbkpOekJiWkZrNWllQkVNUGNycjhxb1M4YjVrSGNHYkdZ?= =?utf-8?B?bmphOVpnYnJ4NHdaQ25WaUNZKzAyMGNXc082K2JXbWhGVTFNSVBFNW9BS1hJ?= =?utf-8?B?N0xKK1J0K2ZLV3A3Q2V4N2l3WnpKMWtPZVdBZk1KQ05WVG5SYy9mejV5N1Zj?= =?utf-8?B?OXBsb0pQOXVUTUZTOFB3TEw4NWppY0ZGaVlVZS9yNUg0YzlHaWEvTEwrTE5v?= =?utf-8?B?NFNGeXdxNzRobUZJVXZpeUNETFNURkV4dFVobURSYVlXN2xXVmtXSEh2NEJX?= =?utf-8?B?L2cwTDZITUlVRDhuZ0s1VGx2eGs4VVRpNTQwd0krN2FEZy9qWDNqUTB4QjVq?= =?utf-8?B?YUVFZEM2OUE0R252a2ZLZlFBNGZFbUlXRElRSDV3c2luZTVhNnF1eWFqcTFu?= =?utf-8?B?K3hJRlNwMkZWLzJUeUpraWx3L21JNWpBNHNsVHluRkEyYUk3cXgxcUpkdlB0?= =?utf-8?B?cmxmNWRMVFNkTkRHM0JRTkpxS0xwWHpKQ3VIeXQrZ2MxUmsxL0F0UGptWWtx?= =?utf-8?B?K21vVmdJWVlWbXA4RXBHWWEwYllUYVBnVDczWFBWZU5MMVZIQWFOT3dpejR5?= =?utf-8?B?N09IYUVqWmZZQnlGUlByRXk3SWJWQm1JVkFWbnJDdDdObjBBOTlUcldhdWk5?= =?utf-8?B?alBjOFQzZXdsbW93YSsxT2F1UGpOTGlENXE0a0E4aUMrN1RDeDB5b0wxc0lr?= =?utf-8?B?RGlhdGkyeUR6eUdxU3d5TzIzZmo4NEhwcXppaE9NSGRMcWx4b0dxUUh5L3c1?= =?utf-8?B?clpJcXlEUDJsZ2RPbmF1YjJCNVJlUjJMa29oU0tGK2o4RlFPQVlZMVBqSG9q?= =?utf-8?B?WGV5clphbHc2S0pFQVZlVUY0TnJHTXhJcWZ4RXp6RUdXVFpwZXZRWkVieHpo?= =?utf-8?B?QU8wN0s3Q3dGMDYyY2lkdkorczFYS3FUTStBa1hFTFlidXIwbGd2VS9TejF4?= =?utf-8?B?ZkkxR2ZaazRqNmV3NzB6RlY5Q0JhZE0xalRKdmhJd1prbnp4QXQ3K2p2UHBk?= =?utf-8?B?Y2xmTXBQSm5vbXRkL0ZhRjJWNER6TjRKMlg0aGpPb3hCbnBTUDl6S3hGMDRY?= =?utf-8?B?VVVHM0dndGx6N29Yc1p5Zml1cnA2MmNhT1lIaXIwOUlrRitMREdtdXU0YnJ4?= =?utf-8?B?MXJNQmJIUVNHSVpZS0lWWmV5MG5LV3lEMng0K011R3R6TTlCOE5jdmJaMGt6?= =?utf-8?B?YUtrZlJMTWVMdTZSZTF1UHJSMTZZTUtLNzhOUnU4TjVFUSs5SGFIUHdsT2U1?= =?utf-8?B?WHFZZ1JMR1pXRWdVWjMzMXNweXhkaWtPMWhqVHNnellaMVczU20yMU4ydmJU?= =?utf-8?B?SUVYSzNPM0UwblpmU2VLV1RVTGVlSnZxRHQxN1V0N2JtbWQ2T09OQm9sRHZy?= =?utf-8?B?TEw0bk1lR3FCWi9vaS9oeTlXUnU3Yi81aVFjcE5WMFB1Y1g4ZUVHUk1oQm9o?= =?utf-8?B?WTdvSjF3ZGVuVmFtdG5pVVF3RkZqa1BrVjFIZE1SRFo0cFhoOU5NbStnazJu?= =?utf-8?B?MmpaS2t1K3IwVTI1a1ArWVJkNVIvaDhtQzhvVUtIUFY3SGpld1YwTDRnZUJT?= =?utf-8?B?MDRnejlhc24zUmo5TW9iMElGL3QwdVN2bTVTMFowdDVtd0FqYzQ1ZGF6STZC?= =?utf-8?B?Vm50UU9lVVZCZ2V2WGF6SG1DS29rQ3pQZmZ1OFl1RnJZZlhubWVnQ3NKMHlt?= =?utf-8?B?UmZNK0ZudmpoS1NJMXNycmpsSEx4L3JOMnNvSGxuYUI4aXZsSFMreTBaSmZL?= =?utf-8?B?bjU2T1lsMVJud1VvbDFmaFJqL255WEkwVkJ1UnJEeEtlNDZpeFV4WkNWZStB?= =?utf-8?B?MGtQczhRRTFFQ3haMVlWRFM1RFR3TVFvT2dLeTlsWnZoOGVzYXF1bHVPVGhG?= =?utf-8?B?WVVraVBYaDA2dkZpdmRWTHQ4clpZeXdDRkZBejkzSi9IUTd5Q2RMSVJxU1R2?= =?utf-8?B?RE9GUVVhTTNXdXBrNHdRUWY0ZlFVNWVEUHFTbTNGZEdMOWF0c2FtVTV4Qm5n?= =?utf-8?B?dWZKdVd4VkN1RnROVEZwODZ5RXlud01YWVcweS8zeUJmSzh2ODJlSUM3UW81?= =?utf-8?Q?lWFgR4bW86Ot/SMkKj6N3JVNu?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6158.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea4d6620-998d-4c9e-f0ed-08dbfd38d659 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Dec 2023 06:41:15.8918 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yLV32zRGiK5erILQZ0aPCsuCev0yMZHHc+3grt947CtXmJCKe6CAlBB86B9qspmhrWKO989wNeILRArj1rpxMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR11MB7394 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,jiaxin.wu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: ii5tdv5xYhn3e5fn8I07gFcNx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=Kc3PK5Fj; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SSB3aWxsIHRoZSBhbGlnbiB0aGUgUmVsZWFzZVNlbWFwaG9yZSAmIFdhaXRGb3JTZW1hcGhvcmUg YmVoYXZpb3IgYXMgYmxvdzoNCg0KUmVsZWFzZVNlbWFwaG9yZSgpIHByZXZlbnRzIGluY3JlYXNl IHRoZSBzZW1hcGhvcmUgaWYgbG9ja2VkLCBhbmQgaXQgc2hvdWxkIHJldHVybiB0aGUgbG9ja2Vk IHZhbHVlIChNQVhfVUlOVDMyKTsgIC0tPiB0aGVuIHdlIGNhbiBjaGVjayB0aGUgcmV0dXJuIHZh bHVlIGlzICBNQVhfVUlOVDMyIG9yIG5vdCBpbiBTbW1DcHVTeW5jQ2hlY2tJbkNwdSgpLCBhbmQg c2VtIGl0c2VsZiB3b24ndCBiZSBjaGFuZ2VkLg0KV2FpdEZvclNlbWFwaG9yZSgpIHByZXZlbnRz IGRlY3JlYXNlIHRoZSBzZW1hcGhvcmUgaWYgbG9ja2VkLCBhbmQgaXQgc2hvdWxkIHJldHVybiB0 aGUgbG9ja2VkIHZhbHVlIChNQVhfVUlOVDMyKTsgLS0+IHRoZW4gd2UgY2FuIGNoZWNrIHRoZSBy ZXR1cm4gdmFsdWUgaXMgIE1BWF9VSU5UMzIgb3Igbm90IGluIFNtbUNwdVN5bmNDaGVja091dENw dSAoKSwgYW5kIHNlbSBpdHNlbGYgd29uJ3RiZSBjaGFuZ2VkLg0KDQpUaGFua3MsDQpKaWF4aW4g DQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXdSwgSmlheGluDQo+ IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAxNCwgMjAyMyAxMTozNSBQTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IGxlcnNla0ByZWRoYXQuY29tDQo+IENjOiBEb25nLCBFcmljIDxlcmlj LmRvbmdAaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IFplbmcsIFN0YXIN Cj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNv bT47IEt1bWFyLCBSYWh1bCBSDQo+IDxyYWh1bC5yLmt1bWFyQGludGVsLmNvbT4NCj4gU3ViamVj dDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMy82XSBVZWZpQ3B1UGtnOiBJbXBsZW1lbnRz DQo+IFNtbUNwdVN5bmNMaWIgbGlicmFyeSBpbnN0YW5jZQ0KPiANCj4gPiA+IFRoZSBjb2RlIHdp bGwgYmUgY2hhbmdlZCB0bzoNCj4gPiA+DQo+ID4gPiAgIGlmICgoSU5UMzIpSW50ZXJuYWxXYWl0 Rm9yU2VtYXBob3JlIChDb250ZXh0LT5DcHVDb3VudCkgPCAwKSB7DQo+ID4gPiAgICAgcmV0dXJu IFJFVFVSTl9BQk9SVEVEOw0KPiA+ID4gICB9DQo+ID4NCj4gPiBJIGZpbmQgdGhpcyBxdWl0ZSB1 Z2x5LiBJbiB0aGUgInNlbWFwaG9yZSBwb3N0IiBvcGVyYXRpb24sIHdlIGFscmVhZHkNCj4gPiBo YXZlIGNvZGUgdGhhdCBwcmV2ZW50cyBpbmNyZW1lbnRpbmcgaWYgdGhlIHNlbWFwaG9yZSBpcyAi bG9ja2VkIi4gQ2FuDQo+ID4gd2UgcGVyaGFwcyBjcmVhdGUgYSAic2VtYXBob3JlIHBlbmQiIG9w ZXJhdGlvbiB0aGF0IGRvZXMgdGhlIHNhbWU/DQo+ID4NCj4gPiBIb3cgYWJvdXQgdGhpczoNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvU21tQ3B1U3luY0xpYi9TbW1D cHVTeW5jTGliLmMNCj4gPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9TbW1DcHVTeW5jTGliL1NtbUNw dVN5bmNMaWIuYw0KPiA+IGluZGV4IDNjMjgzNWY4ZGVmNi4uNWQ3ZmM1OGVmMjNmIDEwMDY0NA0K PiA+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9TbW1DcHVTeW5jTGliL1NtbUNwdVN5bmNMaWIu Yw0KPiA+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9TbW1DcHVTeW5jTGliL1NtbUNwdVN5bmNM aWIuYw0KPiA+IEBAIC05MSwzNSArOTEsMzggQEAgVUlOVDMyDQo+ID4gIEludGVybmFsV2FpdEZv clNlbWFwaG9yZSAoDQo+ID4gICAgSU4gT1VUICB2b2xhdGlsZSBVSU5UMzIgICpTZW0NCj4gPiAg ICApDQo+ID4gIHsNCj4gPiAgICBVSU5UMzIgIFZhbHVlOw0KPiA+DQo+ID4gICAgZm9yICggOyA7 KSB7DQo+ID4gICAgICBWYWx1ZSA9ICpTZW07DQo+ID4gKyAgICBpZiAoVmFsdWUgPT0gTUFYX1VJ TlQzMikgew0KPiA+ICsgICAgICByZXR1cm4gVmFsdWU7DQo+ID4gKyAgICB9DQo+ID4gICAgICBp ZiAoKFZhbHVlICE9IDApICYmDQo+ID4gICAgICAgICAgKEludGVybG9ja2VkQ29tcGFyZUV4Y2hh bmdlMzIgKA0KPiA+ICAgICAgICAgICAgIChVSU5UMzIgKilTZW0sDQo+ID4gICAgICAgICAgICAg VmFsdWUsDQo+ID4gICAgICAgICAgICAgVmFsdWUgLSAxDQo+ID4gICAgICAgICAgICAgKSA9PSBW YWx1ZSkpDQo+ID4gICAgICB7DQo+ID4gICAgICAgIGJyZWFrOw0KPiA+ICAgICAgfQ0KPiA+DQo+ ID4gICAgICBDcHVQYXVzZSAoKTsNCj4gPiAgICB9DQo+ID4NCj4gPiAgICByZXR1cm4gVmFsdWUg LSAxOw0KPiA+ICB9DQo+ID4NCj4gPiBOb3RlLCBJJ20ganVzdCBicmFpbnN0b3JtaW5nIGhlcmUs IEkndmUgbm90IHRob3VnaHQgaXQgdGhyb3VnaC4gSnVzdCB0bw0KPiA+IGlsbHVzdHJhdGUgdGhl IGRpcmVjdGlvbiBJJ20gdGhpbmtpbmcgb2YuDQo+ID4NCj4gPiBUaGlzIGNoYW5nZSBzaG91bGQg YmUgbW9zdGx5IE9LLiBJbnRlcm5hbFdhaXRGb3JTZW1hcGhvcmUoKSByZXR1cm5zIHRoZQ0KPiA+ IGRlY3JlbWVudGVkIHZhbHVlLiBTbywgZm9yIEludGVybmFsV2FpdEZvclNlbWFwaG9yZSgpIHRv IHJldHVybg0KPiA+IE1BWF9VSU5UMzIgKndpdGhvdXQqIHRoaXMgdXBkYXRlLCB0aGUgZnVuY3Rp b24gd291bGQgaGF2ZSB0byBkZWNyZW1lbnQNCj4gPiB0aGUgc2VtYXBob3JlIHdoZW4gdGhlIHNl bWFwaG9yZSBpcyB6ZXJvLiBCdXQgaW4gdGhhdCBjYXNlLCB0aGUgZnVuY3Rpb24NCj4gPiAqYmxv Y2tzKi4gVGh1cywgYSByZXR1cm4gdmFsdWUgb2YgTUFYX1VJTlQzMiBpcyBub3QgcG9zc2libGUg d2l0aG91dA0KPiA+IHRoaXMgZXh0ZW5zaW9uOyBlcmdvLCBpZiBNQVhfVUlOVDMyIGlzIHJldHVy bmVkICh3aXRoIHRoaXMgZXh0ZW5zaW9uKSwNCj4gDQo+IFllcywgdGhhdCdzIGZvciB0aGUgc2Vt YXBob3JlIHN5bmMgdXNhZ2UsIHdlIGhhdmUgdG8gYmxvY2sgdGhlIHNlbSBpZiBpdCdzIHplcm8s DQo+IGRlY3JlYXNlIGl0IHdoZW4gcmV0dXJuLiBUaGF0J3Mgd2h5IEkgc2FpZCAtIGl0J3MgbmF0 dXJhbGx5IG1ha2Ugc3VyZSB0aGUgUnVuIGlzDQo+IHJlc2V0IGFmdGVyIGFsbCByZWFkeSB0byBl eGl0LiAgVGhlbiBpdCBjYW4gYWNoaWV2ZSB0aGUgYmVsb3cgZmxvdzoNCj4gICAgIEJTUDogUmVs ZWFzZU9uZUFwICAtLT4gIEFQOiBXYWl0Rm9yQnNwDQo+ICAgICBCU1A6IFdhaXRGb3JBUHMgICAg PC0tICBBUDogUmVsZWFzZUJzcA0KPiANCj4gDQo+IEZvciBsb2NrZWQgY2FzZSwgSSBqdXN0IGNv cHkgdGhlIGV4aXN0aW5nIGxvZ2ljIGZyb20gU01NIGNwdSBkcml2ZXIgKGFzIEkNCj4gZG9jdW1l bnQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlOiBUaGUgaW5zdGFuY2UgcmVmZXJzIHRoZSBleGlzdGlu ZyBTTU0gQ1BVDQo+IGRyaXZlciAoUGlTbW1DcHVEeGVTbW0pIHN5bmMgaW1wbGVtZW50YXRpb24g YW5kIGJlaGF2aW9yKToNCj4gZXhpc3RpbmcgUmVsZWFzZVNlbWFwaG9yZSgpIHByZXZlbnRzIGlu Y3JlYXNlIHRoZSBzZW1hcGhvcmUsIGJ1dCBpdCBzdGlsbA0KPiByZXR1cm4gdGhlIG9yaWdpbmFs IHNlbWFwaG9yZSB2YWx1ZSArMTsgLS0+IHRoYXQncyB3aHkgd2UgaGF2ZSB0byBjaGVjayB0aGUN Cj4gcmV0dXJuIHZhbHVlIGlzICAwIG9yIG5vdCBpbiBTbW1DcHVTeW5jQ2hlY2tJbkNwdSgpDQo+ IGV4aXN0aW5nIFdhaXRGb3JTZW1hcGhvcmUoKSBhbGxvdyBkZWNyZWFzZSB0aGUgc2VtYXBob3Jl IGlmIGxvY2tlZCwgYW5kIGl0DQo+IGFsc28gcmV0dXJuIHRoZSBvcmlnaW5hbCBzZW1hcGhvcmUg dmFsdWUgLTE7ICAtLT4gdGhhdCdzIHdoeSB3ZSBoYXZlIHRvIGNoZWNrDQo+IHRoZSByZXR1cm4g dmFsdWUgaXMgIDwgMCBvciBub3QgaW4gU21tQ3B1U3luY0NoZWNrT3V0Q3B1KCkNCj4gDQo+IHNv LCBkbyB5b3Ugd2FudCB0byBhbGlnbiB0aGUgYmVoYXZpb3IgYXMgYmVsb3c/DQo+IA0KPiBSZWxl YXNlU2VtYXBob3JlKCkgcHJldmVudHMgaW5jcmVhc2UgdGhlIHNlbWFwaG9yZSBpZiBsb2NrZWQs IGFuZCBpdCBzaG91bGQNCj4gcmV0dXJuIHRoZSBsb2NrZWQgdmFsdWUgKE1BWF9VSU5UMzIpOyAg LS0+IHRoZW4gd2UgY2FuIGNoZWNrIHRoZSByZXR1cm4NCj4gdmFsdWUgaXMgIE1BWF9VSU5UMzIg b3Igbm90IGluIFNtbUNwdVN5bmNDaGVja0luQ3B1KCksIGFuZCBzZW0gaXRzZWxmDQo+IHdvbid0 IGJlIGNoYW5nZWQuDQo+IFdhaXRGb3JTZW1hcGhvcmUoKSBwcmV2ZW50cyBkZWNyZWFzZSB0aGUg c2VtYXBob3JlIGlmIGxvY2tlZCwgYW5kIGl0IHNob3VsZA0KPiByZXR1cm4gdGhlIGxvY2tlZCB2 YWx1ZSAoTUFYX1VJTlQzMik7IC0tPiB0aGVuIHdlIGNhbiBjaGVjayB0aGUgcmV0dXJuIHZhbHVl DQo+IGlzICBNQVhfVUlOVDMyIG9yIG5vdCBpbiBTbW1DcHVTeW5jQ2hlY2tPdXRDcHUgKCksIGFu ZCBzZW0gaXRzZWxmIHdvbid0DQo+IGJlIGNoYW5nZWQuDQo+IA0KPiBJIHRoaW5rOg0KPiBmb3Ig UmVsZWFzZVNlbWFwaG9yZSwgaXQgbXVzdCBtZWV0IGJlbG93IDIgY2FzZXMgdXNhZ2U6DQo+IDEu IGZvciBzZW1hcGhvcmUgc3luYyB1c2FnZSAoUnVuKSwgaXQgZG9lc24ndCBjYXJlIHRoZSBsb2Nr IGNhc2UsIGFuZCByZXR1cm5lZA0KPiB2YWx1ZSBpcyBub3QgY2FyZWQuIEp1c3QgY2hlY2sgdGhl IHNlbWFwaG9yZSBpdHNlbGYuDQo+IDIuIGZvciBSZW5kZXp2b3VzIGNhc2UgKENvdW50ZXIpLCBp dCBub3Qgb25seSBuZWVkcyB0byBjaGVjayBsb2NrZWQgb3Igbm90DQo+IGZyb20gcmV0dXJuIHZh bHVlLCBidXQgYWxzbyByZXF1aXJlICJvbmx5IGluY3JlYXNlIHRoZSBzZW1hcGhvcmUgaWYgbm90 DQo+IGxvY2tlZCIuDQo+IA0KPiBmb3IgV2FpdEZvclNlbWFwaG9yZSwgaXQgbXVzdCBtZWV0IGJl bG93IDIgY2FzZXMgdXNhZ2U6DQo+IDEuIGZvciBzZW1hcGhvcmUgc3luYyB1c2FnZSAoUnVuKSwg aXQgZG9lc24ndCBjYXJlIHRoZSBsb2NrIGNhc2UsIGFuZCByZXR1cm5lZA0KPiB2YWx1ZSBpcyBu b3QgY2FyZWQuIEJ1dCBmb3IgdGhlIHNlbWFwaG9yZSBpdHNlbGYsIGl0IG5lZWQgYmxvY2sgYXQg MCwgYW5kDQo+IGRlY3JlYXNlIHdoZW4gcmV0dXJuLg0KPiAyLiBmb3IgUmVuZGV6dm91cyBjYXNl IChDb3VudGVyKSwgaXQgb25seSBuZWVkcyB0byBjaGVjayBsb2NrZWQgb3Igbm90IGZyb20NCj4g cmV0dXJuIHZhbHVlLiBzZW1hcGhvcmUgaXRzZWxmIGlzIG5vdCBjYXJlZC4NCj4gDQo+IFNvLCBi YXNlZCBvbiBhYm92ZSwgSSB0aGluaywgeWVzLCB3ZSBjYW4gZG8gdGhlIGNoYW5nZSB0byBhbGln biB0aGUgbG9jaw0KPiBiZWhhdmlvcjoNCj4gDQo+IC8qKg0KPiAgIFBlcmZvcm1zIGFuIGF0b21p YyBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiB0byBnZXQgc2VtYXBob3JlLg0KPiAgIFRoZSBj b21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZl DQo+ICAgbWVjaGFuaXNtcy4NCj4gDQo+ICAgQHBhcmFtW2luLG91dF0gIFNlbSAgICBJTjogIDMy LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQ6IG9y aWdpbmFsIGludGVnZXIgLSAxIGlmIFNlbSBpcyBub3QgbG9ja2VkLg0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgT1VUOiBvcmlnaW5hbCBpbnRlZ2VyIChNQVhfVUlOVDMyKSBpZiBTZW0gaXMg bG9ja2VkLg0KPiANCj4gICBAcmV0dmFsICAgICBPcmlnaW5hbCBpbnRlZ2VyIC0gMSBpZiBTZW0g aXMgbm90IGxvY2tlZC4NCj4gICAgICAgICAgICAgICBPcmlnaW5hbCBpbnRlZ2VyIChNQVhfVUlO VDMyKSBpZiBTZW0gaXMgbG9ja2VkLg0KPiANCj4gKiovDQo+IFNUQVRJQw0KPiBVSU5UMzINCj4g SW50ZXJuYWxXYWl0Rm9yU2VtYXBob3JlICgNCj4gICBJTiBPVVQgIHZvbGF0aWxlIFVJTlQzMiAg KlNlbQ0KPiAgICkNCj4gew0KPiAgIFVJTlQzMiAgVmFsdWU7DQo+IA0KPiAgIGZvciAoIDsgOykg ew0KPiAgICAgVmFsdWUgPSAqU2VtOw0KPiAgICAgaWYgKFZhbHVlID09IE1BWF9VSU5UMzIpIHsN Cj4gICAgICAgcmV0dXJuIFZhbHVlOw0KPiAgICAgfQ0KPiANCj4gICAgIGlmICgoVmFsdWUgIT0g MCkgJiYNCj4gICAgICAgICAoSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UzMiAoDQo+ICAgICAg ICAgICAgKFVJTlQzMiAqKVNlbSwNCj4gICAgICAgICAgICBWYWx1ZSwNCj4gICAgICAgICAgICBW YWx1ZSAtIDENCj4gICAgICAgICAgICApID09IFZhbHVlKSkNCj4gICAgIHsNCj4gICAgICAgYnJl YWs7DQo+ICAgICB9DQo+IA0KPiAgICAgQ3B1UGF1c2UgKCk7DQo+ICAgfQ0KPiANCj4gICByZXR1 cm4gVmFsdWUgLSAxOw0KPiB9DQo+IA0KPiAvKioNCj4gICBQZXJmb3JtcyBhbiBhdG9taWMgY29t cGFyZSBleGNoYW5nZSBvcGVyYXRpb24gdG8gcmVsZWFzZSBzZW1hcGhvcmUuDQo+ICAgVGhlIGNv bXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUN Cj4gICBtZWNoYW5pc21zLg0KPiANCj4gICBAcGFyYW1baW4sb3V0XSAgU2VtICAgIElOOiAgMzIt Yml0IHVuc2lnbmVkIGludGVnZXINCj4gICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDogb3Jp Z2luYWwgaW50ZWdlciArIDEgaWYgU2VtIGlzIG5vdCBsb2NrZWQuDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICBPVVQ6IG9yaWdpbmFsIGludGVnZXIgKE1BWF9VSU5UMzIpIGlmIFNlbSBpcyBs b2NrZWQuDQo+IA0KPiAgIEByZXR2YWwgICAgT3JpZ2luYWwgaW50ZWdlciArIDEgaWYgU2VtIGlz IG5vdCBsb2NrZWQuDQo+ICAgICAgICAgICAgICBPcmlnaW5hbCBpbnRlZ2VyIChNQVhfVUlOVDMy KSBpZiBTZW0gaXMgbG9ja2VkLg0KPiANCj4gKiovDQo+IFNUQVRJQw0KPiBVSU5UMzINCj4gSW50 ZXJuYWxSZWxlYXNlU2VtYXBob3JlICgNCj4gICBJTiBPVVQgIHZvbGF0aWxlIFVJTlQzMiAgKlNl bQ0KPiAgICkNCj4gew0KPiAgIFVJTlQzMiAgVmFsdWU7DQo+IA0KPiAgIGRvIHsNCj4gICAgIFZh bHVlID0gKlNlbTsNCj4gICB9IHdoaWxlIChWYWx1ZSArIDEgIT0gMCAmJg0KPiAgICAgICAgICAg IEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMzIgKA0KPiAgICAgICAgICAgICAgKFVJTlQzMiAq KVNlbSwNCj4gICAgICAgICAgICAgIFZhbHVlLA0KPiAgICAgICAgICAgICAgVmFsdWUgKyAxDQo+ ICAgICAgICAgICAgICApICE9IFZhbHVlKTsNCj4gDQo+ICAgaWYgKFZhbHVlID09IE1BWF9VSU5U MzIpIHsNCj4gICAgIHJldHVybiBWYWx1ZTsNCj4gICB9DQo+IA0KPiAgIHJldHVybiBWYWx1ZSAr IDE7DQo+IH0NCj4gDQo+IEkgaGF2ZW4ndCBzZWUgYW55IGlzc3VlIHdpdGggdGhpcyBjaGFuZ2Uu DQo+IA0KPiA+IHdlIGtub3cgdGhlIGRvb3Igd2FzIGxvY2tlZCBlYXJsaWVyIChhbmQgdGhlIHNl bWFwaG9yZSBpcyBub3QgY2hhbmdlZCkuDQo+ID4NCj4gPiBBdCB0aGUgc2FtZSB0aW1lLCB3ZSBt aWdodCB3YW50IHRvIHVwZGF0ZSBJbnRlcm5hbFJlbGVhc2VTZW1hcGhvcmUoKSBhcw0KPiA+IHdl bGwsIHNvIHRoYXQgaXQgY2Fubm90IHZhbGlkbHkgaW5jcmVtZW50IHRoZSBzZW1hcGhvcmUgdmFs dWUgdG8NCj4gTUFYX1VJTlQzMi4NCj4gPg0KPiA+DQo+ID4NCj4gPiA+DQo+ID4gPg0KDQoNCgot PS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBt ZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTEyNTg1KTog aHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTEyNTg1Ck11dGUgVGhpcyBU b3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAzMDEwMTY1Lzc2ODYxNzYKR3JvdXAgT3duZXI6 IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3Jv dXBzLmlvL2cvZGV2ZWwvdW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09 LT0tPS09LQoKDQo=