From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100]) by sourceware.org (Postfix) with ESMTPS id D44753858D28 for ; Fri, 12 Jan 2024 06:15:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D44753858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=os.amperecomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D44753858D28 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.236.100 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705040151; cv=pass; b=lbEoFiceQXOKuG1+gKBcfEz/INnX4gLfhTEDG84MkNDHS/fhJQszUyA0UwFTkvj8e5iRWdQ0txd+8R+mnQmDoGSkQj72+XdqoA3VuS/bdHlBX4nlxS1eQUjIFJ04xl+kTk5sDDC7unr6m7sfRciOi+QOyYN+kodUKHNmuiSpcd4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705040151; c=relaxed/simple; bh=5i3NvqPRSa609vfM9X8+9JCge78j+QZkq4iQ69uXu+g=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=w0a+gMdUCUm4/26D2zI37O3dcjWBwpqIwEFdsm9kaytyYOsmWnBHnSpwhGIEuv7qcy1UKXZeSaLCrt/Udw1DV781iAwRaiNEOyEt37emRvyIf7etaTk7wF73OATZJBfZaTIyX9kSQ3KiRMwgoqhws/Bp/GCJ6m8lDwsnvbMglHU= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h/vAWaNcx18DkBseRcGmrIeFhLmW0e1ZJHpamKDl75eWF32ddncxlDW2dLozZkw+wroO4ZTZPB0ErOzbAgcrOSwID29rESQ5pNa3oV6+efkHubdQWaayR/rGQ59ASEKvK2rBr5S/Jvx8fmi0WnDwmPFNzOAm/HTyNq6D2d+/ZJR8Y5N82GT1RCukDbI+O7goMqxkOeFoNuS3mEB/zizjujsuXf4/esFCqIQhPWKMJP+2c8drl/dZZ3WY1ysipw4/7l5g6Mif4LeVsODhqAGUXhpdccw7r+NC8Y/A7Be87nChNnElVIFiYlyte92YEHLaxATR4mZQ7WZ2+7f+5hs3Jg== 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=5i3NvqPRSa609vfM9X8+9JCge78j+QZkq4iQ69uXu+g=; b=eXGMbfesp5p6Sqm4n/pOEudcIEFhk5DJFZoKV+7OnM5hBdyyC0g81qHWqjQm9yKLKS/sz8YaFrvgeyH0zyMpwQHBPkHcF7rbP3/Dq3mE8TdvUDkfHyz+mnxi1g3R+WX+K/QoGqUI5vygBF0TJgQOOoHYino6ROzn+sHC6FbWL1gW0IRVza+Q/ooeyw6svax0j6iE7PXHEkG/rAMPbMN3q162bo81rEzD5izIs62mEErff7MXJAxcnMZEezmljhjjCPxxbFod1xd3sqGK5AaDX/dUI7BnMts3isAUzto8SHUS2oMj72XpQdtt4Vuyp8pGTa6tfxwGlRc1lnmtH5ldMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5i3NvqPRSa609vfM9X8+9JCge78j+QZkq4iQ69uXu+g=; b=W5zkkIaWnGkPocpDUJM4d9ZMNoT4dI5vPznqj5ci1XJNT4LxsIYDMLJsTiJ/Z1vBVwk5Mvkof7GNb8unTnpfDfKdYaBqO2tbOTT/ku8J2nfXqb/+jZmcv0qJoInZp/m+4dsRFT8GNU6KJ58stq4GVaXlhyho7Z76PcImBHtM0cM= Received: from LV2PR01MB7839.prod.exchangelabs.com (2603:10b6:408:14f::13) by PH0PR01MB7475.prod.exchangelabs.com (2603:10b6:510:f2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.18; Fri, 12 Jan 2024 06:15:42 +0000 Received: from LV2PR01MB7839.prod.exchangelabs.com ([fe80::71fb:3678:f29:7a94]) by LV2PR01MB7839.prod.exchangelabs.com ([fe80::71fb:3678:f29:7a94%4]) with mapi id 15.20.7181.015; Fri, 12 Jan 2024 06:15:42 +0000 From: Feng Xue OS To: Richard Biener , Richard Sandiford CC: "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH] Do not count unused scalar use when marking STMT_VINFO_LIVE_P [PR113091] Thread-Topic: [PATCH] Do not count unused scalar use when marking STMT_VINFO_LIVE_P [PR113091] Thread-Index: AQHaOj+7eU2CkybyGEufZnkwsqWdb7DUcYeAgAAB0gCAAVTtFg== Date: Fri, 12 Jan 2024 06:15:42 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=True;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2024-01-12T06:15:41.483Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV2PR01MB7839:EE_|PH0PR01MB7475:EE_ x-ms-office365-filtering-correlation-id: 9677cee8-0853-44e4-6c80-08dc1335e7a9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wM3/+PLxYim7+TWwJNT3961rNYePDxRv0n5fHKJAcNSBTJDFlVZ+5h3kqtpyT5Ld+72W0RuTDpZFwf0aPUFZg/+7XuBfSJBhX9aidNjUuXHOqyNP+9bWPq15WL/bjZHCJLKs/RgG0ZnYHa8UxKOrBq1BkPWIqFylOMR++y2IauMc9XiJAiTYteF5jGjQM4YR2b8IRN4g9YPDBFsx2c4W9KL+Oxtwq64njBctgQeRLWf9EMRPdPiHstRvJbQHjm7r+d3Ia4oYytk7go6Oc67nFhPMlbKqBQcjj6XavIbkONHUOpC3KVjjj9kJP0W2bywIsSzO0JuqCOUlwy7qmfU0qp7Z0IyfKByrj5rhV7fnn6RYqtNuo5vCgFEolmYsOdWt3dhQyPi8oCeOYOBDvJmhv9n0fOxXDVL9eGT4InyPQRtMoHzMQ0prPZsuuqdGf/KuzHBl6khiE1JFfhqBIoJbjazw/HnsXlyI2QHVpPbBh5fBOFKHUg888W6Pxvwl866Em/m2NCCkhKX6ZebXnE3zojKYyIwXRB6NI7bgJ8f9iVSADvQslrWsV3/Zl6ei/k/RyWKEgHzN/cXmhT6RN82f+gRKRwSLIopBRGJ96YOeowRHpfJf5ffB4Flof0gHImYUa7iXucvVyN+/UfECajogVfuaiItW0A4LlK0O2z0WV+0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV2PR01MB7839.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(396003)(136003)(346002)(376002)(39850400004)(230173577357003)(230273577357003)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(55016003)(71200400001)(38070700009)(6506007)(66946007)(7696005)(53546011)(66476007)(478600001)(26005)(9686003)(66446008)(83380400001)(86362001)(91956017)(76116006)(66556008)(110136005)(316002)(64756008)(5660300002)(33656002)(8676002)(41300700001)(30864003)(122000001)(2906002)(52536014)(8936002)(4326008)(38100700002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ekcxeEJNTUg4Q3hBcWhPb1QrTkg1aVZ2SjVnWEJaN016UmF6YTZHeWliM3lI?= =?utf-8?B?UmZpdW8rU1hURkhnVURWOVVHeXJJRmJGTEJXNit3ZUc1VEVKU05lSHVYVjBz?= =?utf-8?B?TUt2Z1d1REpWVjM1WjNhYUgxNE1vcytlNnpRRVNkbTdpc2FaZ0Nhek9xWStP?= =?utf-8?B?TWYrcFdObk9VRFcrYUkrQlZ0aDdrOS95T0o4UXp2WERMV051elNqMms3clpN?= =?utf-8?B?dHJBVHd2bWVHdWRWTnE5Mi9CZ0tKSys2ZzdmRDloaG5PWXRNUUpXSFBETzAx?= =?utf-8?B?TmJBRHpvR3k3VFdkeE9kYXdOUlR4QTF5SkI1Wko1Nmg5VzJxT0lGRVR2WDZZ?= =?utf-8?B?b3FYMEFJUFRKTDMrK0lDOGpxMCtoWkxGS0p3NXhGUTBiMTYrNVZoZUhJdFFE?= =?utf-8?B?cVJyVFdzRU9Xcmx6ckUxYmJXclBDTC9GL1BEQ1NZQWlKZDlCNHErSE5KUS9X?= =?utf-8?B?Y1hkSHkyZXlkS0tlVnJIWkg4cFFVVzhyV1o3Ymg1WklISFN3bGhNMXNZWDFZ?= =?utf-8?B?OGVWT3NlcUVRbHFLNnZOWWRoMThnZ0FzQUhTOVl2eU9uTjVVU01oVWVmQWdo?= =?utf-8?B?aFlreXFiUWZURmdRUG50TE9BWnRXbzZLcnZaK3RyK0M3Rktmc1pvUHl3MjZl?= =?utf-8?B?OUo5OVlJZzRzbXZ3TlhxaUNWdmJ2a0lKN05FVFJWdC9aQm5hcVJPbDlTNG9J?= =?utf-8?B?eDJFdEh5NE1jWnE1OHlJV3dOMG11WlVHZE4waVVsbnVkOVNTRjd3dnI4Snk2?= =?utf-8?B?Vk9DcitWbFBNaEhFdzBYVUg3RkptVGxka3czai95OG51VnBWTEFnK0pLdTJq?= =?utf-8?B?RlhGdmY3SkF6dVlyaUozdGg4N09XeUN5MXNiUzVzS2ZINUJuWk8rVkdBUjRn?= =?utf-8?B?a1dGaCtjN05mQTA0ckMyUGtyYnh1dDV1dllwb3FUS0orQm04WHdZbGxUdVNp?= =?utf-8?B?b0ZaLzlUMGkxVktOUm5DNC9vWExLRGxDRkFVYU9DWTZsMlNnZ1RGVVZ6Rnlp?= =?utf-8?B?dDF6Q091M0lKN0hTdGZxSkZzUGpkMW4zektwUUJ2akhhdVVnREZidS83UHdt?= =?utf-8?B?WGRJNHlXS2pyZlZXbFoweG1GWHFseGJMRlk4QVRqQjhJK0ZWODlQZWd2NTJR?= =?utf-8?B?amVjR0hyRXZNQVZtU3grZXd6MEJFbHlrSlc4QWpUM1dWdWhiVlVLZ3hIWWlp?= =?utf-8?B?bE5Ccnk2Rzd2eEgwTTcxaStmeGpuaEsxNHRGY0xBNFZaRGk0VlZrVFh2UFRv?= =?utf-8?B?Q2UwOUFwQWQ0MmRIYmppenprSVpXTmY4OCtPYXdWaVhpNk1oaE92eHhHSWZh?= =?utf-8?B?MndETEpQZ096YmJtYlVUaitOenFhaVo1UXE4eWZpRzFSbGxpZnF6SEVSMDRk?= =?utf-8?B?ZlBLdDlTc2ZFbWFIMzQxYjNrUExGU0QxRGZJZ3VqdEUwRFd5OEM5dHRpRmVT?= =?utf-8?B?UGF5ZHNvbDFMbENhTlhHK2owUWJuTzQ1eFZXZ1RKNmRxOEgzTWpPc01BM0Zv?= =?utf-8?B?M2c0NjFRNzRyYmdFODhmN2toT29FNyswa3FkWkZYRzRFZUtIWjdKRldhSlBR?= =?utf-8?B?ZVkvL3k1bjl5Q2xSSTNuc0ZrOHBvZFpOWjFDWmY5N29qMWFkS0c3eG1QZTlo?= =?utf-8?B?UjJiYTU4MFlXYzB1VEVoTmNERnVNUzRIdWVJb0h0UE9FR2tPaElLM2QzcGVo?= =?utf-8?B?NWxvSWlMbXMrVnpxWVlqNGE0TVJ4MERQNG9UZnA4b05LN2R4aFFydTRudDgw?= =?utf-8?B?SFlIczAxSHlFMjZHaDV6TU95cEQ3YUpqaC9XWitPQXZMQkZ2aXdTRDJ3MjFm?= =?utf-8?B?a1NYdGxLVUJ5RmxCRlMwbFVhNmREaFhmYytkR1JtREFmdDZveGxoY1ZnTHpo?= =?utf-8?B?YlVuRmM5aHFnL3RQYmQ4S1I5RlNjMldwejJNWkgzNEdQSnRDbE03aTBRSmhq?= =?utf-8?B?WHorMHF2SU8wdGRnbWVpYm9mQzd5VGFJcVRkTkYrRTc0VWVqZ2txRlJKY1lT?= =?utf-8?B?aFZMWktodFJSNzEwc0lSL1ZrUmd4UEdhTVk3VWxZRVlEeStnRzljaFlQbURG?= =?utf-8?B?QnYvMnBmUTdhaWZwbE05TUludTB5dmI4NDJFcTRtTG0rSmNRMUZDcVV2Tmlm?= =?utf-8?Q?dZYgWNORdmKwmZ+RTxgg5BifK?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV2PR01MB7839.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9677cee8-0853-44e4-6c80-08dc1335e7a9 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2024 06:15:42.0079 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: DGAVKfnDsyA5pQuFMKIcV4M3qUm8clIJpEd4v064nFKrMineOaeg1cDNCx5OipFx6Ue/KNbmgDpGOWk/a2FsZ6z3uBLvjvBZbhY5CqtSMOc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR01MB7475 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: QWRkIGEgZGVwdGggcGFyYW1ldGVyIHRvIGxpbWl0IHJlY3Vyc2lvbiBvZiB2ZWNfc2xwX2hhc19z Y2FsYXJfdXNlLg0KDQpGZW5nDQotLS0tLS0tDQoNCiAuLi4vZ2NjLnRhcmdldC9hYXJjaDY0L2Ji LXNscC1wcjExMzA5MS5jICAgICAgfCAgMjIgKysNCiBnY2MvdHJlZS12ZWN0LXNscC5jYyAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyMDcgKysrKysrKysrKysrKystLS0tDQogMiBmaWxlcyBj aGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2JiLXNscC1wcjExMzA5MS5j DQoNCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iYi1zbHAt cHIxMTMwOTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2JiLXNscC1wcjEx MzA5MS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmZmODIyZTkw YjRhDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9iYi1zbHAtcHIxMTMwOTEuYw0KQEAgLTAsMCArMSwyMiBAQA0KKy8qIHsgZGctZG8gY29tcGls ZSB9ICovDQorLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAtZmR1bXAtdHJlZS1zbHAt ZGV0YWlscyAtZnRyZWUtc2xwLXZlY3Rvcml6ZSIgfSAqLw0KKw0KK2ludCB0ZXN0KHVuc2lnbmVk IGFycmF5WzhdKTsNCisNCitpbnQgZm9vKGNoYXIgKmEsIGNoYXIgKmIpDQorew0KKyAgdW5zaWdu ZWQgYXJyYXlbOF07DQorDQorICBhcnJheVswXSA9IChhWzBdIC0gYlswXSk7DQorICBhcnJheVsx XSA9IChhWzFdIC0gYlsxXSk7DQorICBhcnJheVsyXSA9IChhWzJdIC0gYlsyXSk7DQorICBhcnJh eVszXSA9IChhWzNdIC0gYlszXSk7DQorICBhcnJheVs0XSA9IChhWzRdIC0gYls0XSk7DQorICBh cnJheVs1XSA9IChhWzVdIC0gYls1XSk7DQorICBhcnJheVs2XSA9IChhWzZdIC0gYls2XSk7DQor ICBhcnJheVs3XSA9IChhWzddIC0gYls3XSk7DQorDQorICByZXR1cm4gdGVzdChhcnJheSk7DQor fQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiQmFzaWMgYmxvY2sg d2lsbCBiZSB2ZWN0b3JpemVkIHVzaW5nIFNMUCIgMSAic2xwMiIgfSB9ICovDQpkaWZmIC0tZ2l0 IGEvZ2NjL3RyZWUtdmVjdC1zbHAuY2MgYi9nY2MvdHJlZS12ZWN0LXNscC5jYw0KaW5kZXggYjZj Y2U1NWNlOTAuLjA4NjM3N2E5YWMwIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdC1zbHAuY2MN CisrKyBiL2djYy90cmVlLXZlY3Qtc2xwLmNjDQpAQCAtNjQxOCw2ICs2NDE4LDEwMiBAQCB2ZWN0 X3NscF9hbmFseXplX25vZGVfb3BlcmF0aW9ucyAodmVjX2luZm8gKnZpbmZvLCBzbHBfdHJlZSBu b2RlLA0KICAgcmV0dXJuIHJlczsNCiB9DQoNCisvKiBHaXZlbiBhIGRlZmluaXRpb24gREVGLCBh bmFseXplIGlmIGl0IHdpbGwgaGF2ZSBhbnkgbGl2ZSBzY2FsYXIgdXNlIGFmdGVyDQorICAgcGVy Zm9ybWluZyBTTFAgdmVjdG9yaXphdGlvbiB3aG9zZSBpbmZvcm1hdGlvbiBpcyByZXByZXNlbnRl ZCBieSBCQl9WSU5GTywNCisgICBhbmQgcmVjb3JkIHJlc3VsdCBpbnRvIGhhc2ggbWFwIFNDQUxB Ul9VU0VfTUFQIGFzIGNhY2hlIGZvciBsYXRlciBmYXN0DQorICAgY2hlY2suICBJZiByZWN1cnNp b24gREVQVEggZXhjZWVkcyBhIGxpbWl0LCBzdG9wIGFuYWx5c2lzIGFuZCBtYWtlIGENCisgICBj b25zZXJ2YXRpdmUgYXNzdW1wdGlvbi4gIFJldHVybiAwIGlmIG5vIHNjYWxhciB1c2UsIDEgaWYg dGhlcmUgaXMsIC0xDQorICAgbWVhbnMgcmVjdXJzaW9uIGlzIGxpbWl0ZWQuICAqLw0KKw0KK3N0 YXRpYyBpbnQNCit2ZWNfc2xwX2hhc19zY2FsYXJfdXNlIChiYl92ZWNfaW5mbyBiYl92aW5mbywg dHJlZSBkZWYsDQorICAgICAgICAgICAgICAgICAgICAgICBoYXNoX21hcDx0cmVlLCBpbnQ+ICZz Y2FsYXJfdXNlX21hcCwNCisgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXB0aCA9IDApDQor ew0KKyAgY29uc3QgaW50IGRlcHRoX2xpbWl0ID0gMjsNCisgIGltbV91c2VfaXRlcmF0b3IgdXNl X2l0ZXI7DQorICBnaW1wbGUgKnVzZV9zdG10Ow0KKw0KKyAgaWYgKGludCAqcmVzID0gc2NhbGFy X3VzZV9tYXAuZ2V0IChkZWYpKQ0KKyAgICByZXR1cm4gKnJlczsNCisNCisgIGludCBzY2FsYXJf dXNlID0gMTsNCisNCisgIEZPUl9FQUNIX0lNTV9VU0VfU1RNVCAodXNlX3N0bXQsIHVzZV9pdGVy LCBkZWYpDQorICAgIHsNCisgICAgICBpZiAoaXNfZ2ltcGxlX2RlYnVnICh1c2Vfc3RtdCkpDQor ICAgICAgIGNvbnRpbnVlOw0KKw0KKyAgICAgIHN0bXRfdmVjX2luZm8gdXNlX3N0bXRfaW5mbyA9 IGJiX3ZpbmZvLT5sb29rdXBfc3RtdCAodXNlX3N0bXQpOw0KKw0KKyAgICAgIGlmICghdXNlX3N0 bXRfaW5mbykNCisgICAgICAgYnJlYWs7DQorDQorICAgICAgaWYgKFBVUkVfU0xQX1NUTVQgKHZl Y3Rfc3RtdF90b192ZWN0b3JpemUgKHVzZV9zdG10X2luZm8pKSkNCisgICAgICAgY29udGludWU7 DQorDQorICAgICAgLyogRG8gbm90IHN0ZXAgZm9yd2FyZCB3aGVuIGVuY291bnRlciBQSEkgc3Rh dGVtZW50LCBzaW5jZSBpdCBtYXkNCisgICAgICAgIGludm9sdmUgY3ljbGljIHJlZmVyZW5jZSBh bmQgY2F1c2UgaW5maW5pdGUgcmVjdXJzaXZlIGludm9jYXRpb24uICAqLw0KKyAgICAgIGlmIChn aW1wbGVfY29kZSAodXNlX3N0bXQpID09IEdJTVBMRV9QSEkpDQorICAgICAgIGJyZWFrOw0KKw0K KyAgICAgIC8qIFdoZW4gcGF0dGVybiByZWNvZ25pdGlvbiBpcyBpbnZvbHZlZCwgYSBzdGF0ZW1l bnQgd2hvc2UgZGVmaW5pdGlvbiBpcw0KKyAgICAgICAgY29uc3VtZWQgaW4gc29tZSBwYXR0ZXJu LCBtYXkgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCByZXBsYWNlbWVudA0KKyAgICAgICAg cGF0dGVybiBzdGF0ZW1lbnRzLCBzbyB3b3VsZCBiZSBza2lwcGVkIHdoZW4gYnVpbGRpbmcgU0xQ IGdyYXBoLg0KKw0KKyAgICAgICAgKiBPcmlnaW5hbA0KKyAgICAgICAgIGNoYXIgYV9jID0gKihj aGFyICopIGE7DQorICAgICAgICAgY2hhciBiX2MgPSAqKGNoYXIgKikgYjsNCisgICAgICAgICB1 bnNpZ25lZCBzaG9ydCBhX3MgPSAodW5zaWduZWQgc2hvcnQpIGFfYzsNCisgICAgICAgICBpbnQg YV9pID0gKGludCkgYV9zOw0KKyAgICAgICAgIGludCBiX2kgPSAoaW50KSBiX2M7DQorICAgICAg ICAgaW50IHJfaSA9IGFfaSAtIGJfaTsNCisNCisgICAgICAgICogQWZ0ZXIgcGF0dGVybiByZXBs YWNlbWVudA0KKyAgICAgICAgIGFfcyA9ICh1bnNpZ25lZCBzaG9ydCkgYV9jOw0KKyAgICAgICAg IGFfaSA9IChpbnQpIGFfczsNCisNCisgICAgICAgICBwYXR0X2JfcyA9ICh1bnNpZ25lZCBzaG9y dCkgYl9jOyAgICAvLyBiX2kgPSAoaW50KSBiX2MNCisgICAgICAgICBwYXR0X2JfaSA9IChpbnQp IHBhdHRfYl9zOyAgICAgICAgICAvLyBiX2kgPSAoaW50KSBiX2MNCisNCisgICAgICAgICBwYXR0 X3JfcyA9IHdpZGVuX21pbnVzKGFfYywgYl9jKTsgICAvLyByX2kgPSBhX2kgLSBiX2kNCisgICAg ICAgICBwYXR0X3JfaSA9IChpbnQpIHBhdHRfcl9zOyAgICAgICAgICAvLyByX2kgPSBhX2kgLSBi X2kNCisNCisgICAgICAgIFRoZSBkZWZpbml0aW9ucyBvZiBhX2kob3JpZ2luYWwgc3RhdGVtZW50 KSBhbmQgYl9pKHBhdHRlcm4gc3RhdGVtZW50KQ0KKyAgICAgICAgYXJlIHJlbGF0ZWQgdG8sIGJ1 dCBhY3R1YWxseSBub3QgcGFydCBvZiB3aWRlbl9taW51cyBwYXR0ZXJuLg0KKyAgICAgICAgVmVj dG9yaXppbmcgdGhlIHBhdHRlcm4gZG9lcyBub3QgY2F1c2UgdGhlc2UgZGVmaW5pdGlvbiBzdGF0 ZW1lbnRzIHRvDQorICAgICAgICBiZSBtYXJrZWQgYXMgUFVSRV9TTFAuICBGb3IgdGhpcyBjYXNl LCB3ZSBuZWVkIHRvIHJlY3Vyc2l2ZWx5IGNoZWNrDQorICAgICAgICB3aGV0aGVyIHRoZWlyIHVz ZXMgYXJlIGFsbCBhYnNvcmJlZCBpbnRvIHZlY3Rvcml6ZWQgY29kZS4gIEJ1dCB0aGVyZQ0KKyAg ICAgICAgaXMgYW4gZXhjZXB0aW9uIHRoYXQgc29tZSB1c2UgbWF5IHBhcnRpY2lwYXRlIGluIGFu IHZlY3Rvcml6ZWQNCisgICAgICAgIG9wZXJhdGlvbiB2aWEgYW4gZXh0ZXJuYWwgU0xQIG5vZGUg Y29udGFpbmluZyB0aGF0IHVzZSBhcyBhbiBlbGVtZW50Lg0KKyAgICAgICAgVGhlIHBhcmFtZXRl ciAic2NhbGFyX3VzZV9tYXAiIHRhZ3Mgc3VjaCBraW5kIG9mIFNTQSBhcyBoYXZpbmcgc2NhbGFy DQorICAgICAgICB1c2UgaW4gYWR2YW5jZS4gICovDQorICAgICAgdHJlZSBsaHMgPSBnaW1wbGVf Z2V0X2xocyAodXNlX3N0bXQpOw0KKw0KKyAgICAgIGlmICghbGhzIHx8IFRSRUVfQ09ERSAobGhz KSAhPSBTU0FfTkFNRSkNCisgICAgICAgYnJlYWs7DQorDQorICAgICAgaWYgKGRlcHRoX2xpbWl0 ICYmIGRlcHRoID49IGRlcHRoX2xpbWl0KQ0KKyAgICAgICByZXR1cm4gLTE7DQorDQorICAgICAg aWYgKChzY2FsYXJfdXNlID0gdmVjX3NscF9oYXNfc2NhbGFyX3VzZSAoYmJfdmluZm8sIGxocywg c2NhbGFyX3VzZV9tYXAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXB0aCArIDEpKSkNCisgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgIGlmIChl bmRfaW1tX3VzZV9zdG10X3AgKCZ1c2VfaXRlcikpDQorICAgIHNjYWxhcl91c2UgPSAwOw0KKw0K KyAgLyogSWYgcmVjdXJzaW9uIGlzIGxpbWl0ZWQsIGRvIG5vdCBjYWNoZSByZXN1bHQgZm9yIG5v bi1yb290IGRlZnMuICAqLw0KKyAgaWYgKCFkZXB0aCB8fCBzY2FsYXJfdXNlID49IDApDQorICAg IHsNCisgICAgICBib29sIGFkZGVkID0gc2NhbGFyX3VzZV9tYXAucHV0IChkZWYsIHNjYWxhcl91 c2UpOw0KKyAgICAgIGdjY19hc3NlcnQgKCFhZGRlZCk7DQorICAgIH0NCisNCisgIHJldHVybiBz Y2FsYXJfdXNlOw0KK30NCisNCiAvKiBNYXJrIGxhbmVzIG9mIE5PREUgdGhhdCBhcmUgbGl2ZSBv dXRzaWRlIG9mIHRoZSBiYXNpYy1ibG9jayB2ZWN0b3JpemVkDQogICAgcmVnaW9uIGFuZCB0aGF0 IGNhbiBiZSB2ZWN0b3JpemVkIHVzaW5nIHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlvbg0KICAg IHdpdGggU1RNVF9WSU5GT19MSVZFX1AuICBOb3QgaGFuZGxlZCBsaXZlIG9wZXJhdGlvbnMgd2ls bCBjYXVzZSB0aGUNCkBAIC02NDI3LDYgKzY1MjMsNyBAQCBzdGF0aWMgdm9pZA0KIHZlY3RfYmJf c2xwX21hcmtfbGl2ZV9zdG10cyAoYmJfdmVjX2luZm8gYmJfdmluZm8sIHNscF90cmVlIG5vZGUs DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNscF9pbnN0YW5jZSBpbnN0YW5jZSwNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF92ZWN0b3JfZm9yX2Nvc3QgKmNvc3RfdmVj LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX21hcDx0cmVlLCBpbnQ+ICZzY2Fs YXJfdXNlX21hcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9zZXQ8c3RtdF92 ZWNfaW5mbz4gJnN2aXNpdGVkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX3Nl dDxzbHBfdHJlZT4gJnZpc2l0ZWQpDQogew0KQEAgLTY0NTEsMzIgKzY1NDgsMjIgQEAgdmVjdF9i Yl9zbHBfbWFya19saXZlX3N0bXRzIChiYl92ZWNfaW5mbyBiYl92aW5mbywgc2xwX3RyZWUgbm9k ZSwNCiAgICAgICBkZWZfb3BlcmFuZF9wIGRlZl9wOw0KICAgICAgIEZPUl9FQUNIX1BISV9PUl9T VE1UX0RFRiAoZGVmX3AsIG9yaWdfc3RtdCwgb3BfaXRlciwgU1NBX09QX0RFRikNCiAgICAgICAg ew0KLSAgICAgICAgIGltbV91c2VfaXRlcmF0b3IgdXNlX2l0ZXI7DQotICAgICAgICAgZ2ltcGxl ICp1c2Vfc3RtdDsNCi0gICAgICAgICBzdG10X3ZlY19pbmZvIHVzZV9zdG10X2luZm87DQotICAg ICAgICAgRk9SX0VBQ0hfSU1NX1VTRV9TVE1UICh1c2Vfc3RtdCwgdXNlX2l0ZXIsIERFRl9GUk9N X1BUUiAoZGVmX3ApKQ0KLSAgICAgICAgICAgaWYgKCFpc19naW1wbGVfZGVidWcgKHVzZV9zdG10 KSkNCi0gICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgIHVzZV9zdG10X2luZm8gPSBiYl92 aW5mby0+bG9va3VwX3N0bXQgKHVzZV9zdG10KTsNCi0gICAgICAgICAgICAgICBpZiAoIXVzZV9z dG10X2luZm8NCi0gICAgICAgICAgICAgICAgICAgfHwgIVBVUkVfU0xQX1NUTVQgKHZlY3Rfc3Rt dF90b192ZWN0b3JpemUgKHVzZV9zdG10X2luZm8pKSkNCi0gICAgICAgICAgICAgICAgIHsNCi0g ICAgICAgICAgICAgICAgICAgU1RNVF9WSU5GT19MSVZFX1AgKHN0bXRfaW5mbykgPSB0cnVlOw0K LSAgICAgICAgICAgICAgICAgICBpZiAodmVjdG9yaXphYmxlX2xpdmVfb3BlcmF0aW9uIChiYl92 aW5mbywgc3RtdF9pbmZvLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub2RlLCBpbnN0YW5jZSwgaSwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGNvc3RfdmVjKSkNCi0gICAgICAg ICAgICAgICAgICAgICAvKiA/Pz8gIFNvIHdlIGtub3cgd2UgY2FuIHZlY3Rvcml6ZSB0aGUgbGl2 ZSBzdG10DQotICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBvbmUgU0xQIG5vZGUuICBJZiB3 ZSBjYW5ub3QgZG8gc28gZnJvbSBhbGwNCi0gICAgICAgICAgICAgICAgICAgICAgICBvciBub25l IGNvbnNpc3RlbnRseSB3ZSdkIGhhdmUgdG8gcmVjb3JkIHdoaWNoDQotICAgICAgICAgICAgICAg ICAgICAgICAgU0xQIG5vZGUgKGFuZCBsYW5lKSB3ZSB3YW50IHRvIHVzZSBmb3IgdGhlIGxpdmUN Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uICBTbyBtYWtlIHN1cmUgd2UgY2Fu IGNvZGUtZ2VuZXJhdGUNCi0gICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGFsbCBub2Rlcy4g ICovDQotICAgICAgICAgICAgICAgICAgICAgbWFya192aXNpdGVkID0gZmFsc2U7DQotICAgICAg ICAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgICAgICBTVE1UX1ZJTkZPX0xJVkVf UCAoc3RtdF9pbmZvKSA9IGZhbHNlOw0KLSAgICAgICAgICAgICAgICAgICBicmVhazsNCi0gICAg ICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgfQ0KKyAgICAgICAgIGlmICh2ZWNfc2xwX2hh c19zY2FsYXJfdXNlIChiYl92aW5mbywgREVGX0ZST01fUFRSIChkZWZfcCksDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxhcl91c2VfbWFwKSkNCisgICAgICAgICAg IHsNCisgICAgICAgICAgICAgU1RNVF9WSU5GT19MSVZFX1AgKHN0bXRfaW5mbykgPSB0cnVlOw0K KyAgICAgICAgICAgICBpZiAodmVjdG9yaXphYmxlX2xpdmVfb3BlcmF0aW9uIChiYl92aW5mbywg c3RtdF9pbmZvLCBub2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnN0YW5jZSwgaSwgZmFsc2UsIGNvc3RfdmVjKSkNCisgICAgICAgICAgICAgICAv KiA/Pz8gIFNvIHdlIGtub3cgd2UgY2FuIHZlY3Rvcml6ZSB0aGUgbGl2ZSBzdG10IGZyb20gb25l IFNMUA0KKyAgICAgICAgICAgICAgICAgIG5vZGUuICBJZiB3ZSBjYW5ub3QgZG8gc28gZnJvbSBh bGwgb3Igbm9uZSBjb25zaXN0ZW50bHkNCisgICAgICAgICAgICAgICAgICB3ZSdkIGhhdmUgdG8g cmVjb3JkIHdoaWNoIFNMUCBub2RlIChhbmQgbGFuZSkgd2Ugd2FudCB0bw0KKyAgICAgICAgICAg ICAgICAgIHVzZSBmb3IgdGhlIGxpdmUgb3BlcmF0aW9uLiAgU28gbWFrZSBzdXJlIHdlIGNhbg0K KyAgICAgICAgICAgICAgICAgIGNvZGUtZ2VuZXJhdGUgZnJvbSBhbGwgbm9kZXMuICAqLw0KKyAg ICAgICAgICAgICAgIG1hcmtfdmlzaXRlZCA9IGZhbHNlOw0KKyAgICAgICAgICAgICBlbHNlDQor ICAgICAgICAgICAgICAgU1RNVF9WSU5GT19MSVZFX1AgKHN0bXRfaW5mbykgPSBmYWxzZTsNCisg ICAgICAgICAgIH0NCisNCiAgICAgICAgICAvKiBXZSBoYXZlIHRvIHZlcmlmeSB3aGV0aGVyIHdl IGNhbiBpbnNlcnQgdGhlIGxhbmUgZXh0cmFjdA0KICAgICAgICAgICAgIGJlZm9yZSBhbGwgdXNl cy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBjb25zZXJ2YXRpdmUgYXBwcm94aW1hdGlvbi4NCiAgICAg ICAgICAgICBXZSBjYW5ub3QgcHV0IHRoaXMgaW50byB2ZWN0b3JpemFibGVfbGl2ZV9vcGVyYXRp b24gYmVjYXVzZQ0KQEAgLTY0OTUsNiArNjU4MiwxMCBAQCB2ZWN0X2JiX3NscF9tYXJrX2xpdmVf c3RtdHMgKGJiX3ZlY19pbmZvIGJiX3ZpbmZvLCBzbHBfdHJlZSBub2RlLA0KICAgICAgICAgICAg IGZyb20gdGhlIGxhdGVzdCBzdG10IGluIGEgbm9kZS4gIFNvIHdlIGNvbXBlbnNhdGUgZm9yIHRo aXMNCiAgICAgICAgICAgICBkdXJpbmcgY29kZS1nZW5lcmF0aW9uLCBzaW1wbHkgbm90IHJlcGxh Y2luZyB1c2VzIGZvciB0aG9zZQ0KICAgICAgICAgICAgIGhvcGVmdWxseSByYXJlIGNhc2VzLiAg Ki8NCisgICAgICAgICBpbW1fdXNlX2l0ZXJhdG9yIHVzZV9pdGVyOw0KKyAgICAgICAgIGdpbXBs ZSAqdXNlX3N0bXQ7DQorICAgICAgICAgc3RtdF92ZWNfaW5mbyB1c2Vfc3RtdF9pbmZvOw0KKw0K ICAgICAgICAgIGlmIChTVE1UX1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKSkNCiAgICAgICAgICAg IEZPUl9FQUNIX0lNTV9VU0VfU1RNVCAodXNlX3N0bXQsIHVzZV9pdGVyLCBERUZfRlJPTV9QVFIg KGRlZl9wKSkNCiAgICAgICAgICAgICAgaWYgKCFpc19naW1wbGVfZGVidWcgKHVzZV9zdG10KQ0K QEAgLTY1MTcsOCArNjYwOCw1NiBAQCB2ZWN0X2JiX3NscF9tYXJrX2xpdmVfc3RtdHMgKGJiX3Zl Y19pbmZvIGJiX3ZpbmZvLCBzbHBfdHJlZSBub2RlLA0KICAgc2xwX3RyZWUgY2hpbGQ7DQogICBG T1JfRUFDSF9WRUNfRUxUIChTTFBfVFJFRV9DSElMRFJFTiAobm9kZSksIGksIGNoaWxkKQ0KICAg ICBpZiAoY2hpbGQgJiYgU0xQX1RSRUVfREVGX1RZUEUgKGNoaWxkKSA9PSB2ZWN0X2ludGVybmFs X2RlZikNCi0gICAgICB2ZWN0X2JiX3NscF9tYXJrX2xpdmVfc3RtdHMgKGJiX3ZpbmZvLCBjaGls ZCwgaW5zdGFuY2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvc3RfdmVj LCBzdmlzaXRlZCwgdmlzaXRlZCk7DQorICAgICAgdmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRz IChiYl92aW5mbywgY2hpbGQsIGluc3RhbmNlLCBjb3N0X3ZlYywNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NhbGFyX3VzZV9tYXAsIHN2aXNpdGVkLCB2aXNpdGVkKTsNCit9 DQorDQorLyogVHJhdmVyc2UgYWxsIHNscCBpbnN0YW5jZXMgb2YgQkJfVklORk8sIGFuZCBtYXJr IGxhbmVzIG9mIGV2ZXJ5IG5vZGUgdGhhdA0KKyAgIGFyZSBsaXZlIG91dHNpZGUgb2YgdGhlIGJh c2ljLWJsb2NrIHZlY3Rvcml6ZWQgcmVnaW9uIGFuZCB0aGF0IGNhbiBiZQ0KKyAgIHZlY3Rvcml6 ZWQgdXNpbmcgdmVjdG9yaXphYmxlX2xpdmVfb3BlcmF0aW9uIHdpdGggU1RNVF9WSU5GT19MSVZF X1AuICAqLw0KKw0KK3N0YXRpYyB2b2lkDQordmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRzIChi Yl92ZWNfaW5mbyBiYl92aW5mbykNCit7DQorICBpZiAoYmJfdmluZm8tPnNscF9pbnN0YW5jZXMu aXNfZW1wdHkgKCkpDQorICAgIHJldHVybjsNCisNCisgIGhhc2hfc2V0PHN0bXRfdmVjX2luZm8+ IHN2aXNpdGVkOw0KKyAgaGFzaF9zZXQ8c2xwX3RyZWU+IHZpc2l0ZWQ7DQorICBoYXNoX21hcDx0 cmVlLCBpbnQ+IHNjYWxhcl91c2VfbWFwOw0KKyAgYXV0b192ZWM8c2xwX3RyZWU+IHdvcmtsaXN0 Ow0KKw0KKyAgZm9yIChzbHBfaW5zdGFuY2UgaW5zdGFuY2UgOiBiYl92aW5mby0+c2xwX2luc3Rh bmNlcykNCisgICAgaWYgKCF2aXNpdGVkLmFkZCAoU0xQX0lOU1RBTkNFX1RSRUUgKGluc3RhbmNl KSkpDQorICAgICAgd29ya2xpc3Quc2FmZV9wdXNoIChTTFBfSU5TVEFOQ0VfVFJFRSAoaW5zdGFu Y2UpKTsNCisNCisgIGRvDQorICAgIHsNCisgICAgICBzbHBfdHJlZSBub2RlID0gd29ya2xpc3Qu cG9wICgpOw0KKw0KKyAgICAgIGlmIChTTFBfVFJFRV9ERUZfVFlQRSAobm9kZSkgPT0gdmVjdF9l eHRlcm5hbF9kZWYpDQorICAgICAgIHsNCisgICAgICAgICBmb3IgKHRyZWUgb3AgOiBTTFBfVFJF RV9TQ0FMQVJfT1BTIChub2RlKSkNCisgICAgICAgICAgIGlmIChUUkVFX0NPREUgKG9wKSA9PSBT U0FfTkFNRSkNCisgICAgICAgICAgICAgc2NhbGFyX3VzZV9tYXAucHV0IChvcCwgMSk7DQorICAg ICAgIH0NCisgICAgICBlbHNlDQorICAgICAgIHsNCisgICAgICAgICBmb3IgKHNscF90cmVlIGNo aWxkIDogU0xQX1RSRUVfQ0hJTERSRU4gKG5vZGUpKQ0KKyAgICAgICAgICAgaWYgKGNoaWxkICYm ICF2aXNpdGVkLmFkZCAoY2hpbGQpKQ0KKyAgICAgICAgICAgICB3b3JrbGlzdC5zYWZlX3B1c2gg KGNoaWxkKTsNCisgICAgICAgfQ0KKyAgICB9IHdoaWxlICghd29ya2xpc3QuaXNfZW1wdHkgKCkp Ow0KKw0KKyAgdmlzaXRlZC5lbXB0eSAoKTsNCisNCisgIGZvciAoc2xwX2luc3RhbmNlIGluc3Rh bmNlIDogYmJfdmluZm8tPnNscF9pbnN0YW5jZXMpDQorICAgIHsNCisgICAgICB2ZWN0X2xvY2F0 aW9uID0gaW5zdGFuY2UtPmxvY2F0aW9uICgpOw0KKyAgICAgIHZlY3RfYmJfc2xwX21hcmtfbGl2 ZV9zdG10cyAoYmJfdmluZm8sIFNMUF9JTlNUQU5DRV9UUkVFIChpbnN0YW5jZSksDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLCAmaW5zdGFuY2UtPmNvc3RfdmVj LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYXJfdXNlX21hcCwgc3Zp c2l0ZWQsIHZpc2l0ZWQpOw0KKyAgICB9DQogfQ0KDQogLyogRGV0ZXJtaW5lIHdoZXRoZXIgd2Ug Y2FuIHZlY3Rvcml6ZSB0aGUgcmVkdWN0aW9uIGVwaWxvZ3VlIGZvciBJTlNUQU5DRS4gICovDQpA QCAtNjY4NCwxNyArNjgyMyw3IEBAIHZlY3Rfc2xwX2FuYWx5emVfb3BlcmF0aW9ucyAodmVjX2lu Zm8gKnZpbmZvKQ0KDQogICAvKiBDb21wdXRlIHZlY3Rvcml6YWJsZSBsaXZlIHN0bXRzLiAgKi8N CiAgIGlmIChiYl92ZWNfaW5mbyBiYl92aW5mbyA9IGR5bl9jYXN0IDxiYl92ZWNfaW5mbz4gKHZp bmZvKSkNCi0gICAgew0KLSAgICAgIGhhc2hfc2V0PHN0bXRfdmVjX2luZm8+IHN2aXNpdGVkOw0K LSAgICAgIGhhc2hfc2V0PHNscF90cmVlPiB2aXNpdGVkOw0KLSAgICAgIGZvciAoaSA9IDA7IHZp bmZvLT5zbHBfaW5zdGFuY2VzLml0ZXJhdGUgKGksICZpbnN0YW5jZSk7ICsraSkNCi0gICAgICAg ew0KLSAgICAgICAgIHZlY3RfbG9jYXRpb24gPSBpbnN0YW5jZS0+bG9jYXRpb24gKCk7DQotICAg ICAgICAgdmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRzIChiYl92aW5mbywgU0xQX0lOU1RBTkNF X1RSRUUgKGluc3RhbmNlKSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbmNlLCAmaW5zdGFuY2UtPmNvc3RfdmVjLCBzdmlzaXRlZCwNCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWQpOw0KLSAgICAgICB9DQotICAgIH0NCisg ICAgdmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRzIChiYl92aW5mbyk7DQoNCiAgIHJldHVybiAh dmluZm8tPnNscF9pbnN0YW5jZXMuaXNfZW1wdHkgKCk7DQogfQ0KLS0NCjIuMTcuMQ0KDQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpGcm9tOiBSaWNoYXJkIEJpZW5l ciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQpTZW50OiBUaHVyc2RheSwgSmFudWFyeSAx MSwgMjAyNCA1OjUyIFBNDQpUbzogRmVuZyBYdWUgT1M7IFJpY2hhcmQgU2FuZGlmb3JkDQpDYzog Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcNClN1YmplY3Q6IFJlOiBbUEFUQ0hdIERvIG5vdCBjb3Vu dCB1bnVzZWQgc2NhbGFyIHVzZSB3aGVuIG1hcmtpbmcgU1RNVF9WSU5GT19MSVZFX1AgW1BSMTEz MDkxXQ0KDQpPbiBUaHUsIEphbiAxMSwgMjAyNCBhdCAxMDo0NuKAr0FNIFJpY2hhcmQgQmllbmVy DQo8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPg0KPiBPbiBGcmksIERlYyAy OSwgMjAyMyBhdCAxMToyOeKAr0FNIEZlbmcgWHVlIE9TDQo+IDxmeHVlQG9zLmFtcGVyZWNvbXB1 dGluZy5jb20+IHdyb3RlOg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBpcyBtZWFudCB0byBmaXggb3Zl ci1lc3RpbWF0aW9uIGFib3V0IFNMUCB2ZWN0b3ItdG8tc2NhbGFyIGNvc3QgZm9yDQo+ID4gU1RN VF9WSU5GT19MSVZFX1Agc3RhdGVtZW50LiBXaGVuIHBhdHRlcm4gcmVjb2duaXRpb24gaXMgaW52 b2x2ZWQsIGENCj4gPiBzdGF0ZW1lbnQgd2hvc2UgZGVmaW5pdGlvbiBpcyBjb25zdW1lZCBpbiBz b21lIHBhdHRlcm4sIG1heSBub3QgYmUNCj4gPiBpbmNsdWRlZCBpbiB0aGUgZmluYWwgcmVwbGFj ZW1lbnQgcGF0dGVybiBzdGF0ZW1lbnRzLCBhbmQgd291bGQgYmUgc2tpcHBlZA0KPiA+IHdoZW4g YnVpbGRpbmcgU0xQIGdyYXBoLg0KPiA+DQo+ID4gICAgICAqIE9yaWdpbmFsDQo+ID4gICAgICAg Y2hhciBhX2MgPSAqKGNoYXIgKikgYTsNCj4gPiAgICAgICBjaGFyIGJfYyA9ICooY2hhciAqKSBi Ow0KPiA+ICAgICAgIHVuc2lnbmVkIHNob3J0IGFfcyA9ICh1bnNpZ25lZCBzaG9ydCkgYV9jOw0K PiA+ICAgICAgIGludCBhX2kgPSAoaW50KSBhX3M7DQo+ID4gICAgICAgaW50IGJfaSA9IChpbnQp IGJfYzsNCj4gPiAgICAgICBpbnQgcl9pID0gYV9pIC0gYl9pOw0KPiA+DQo+ID4gICAgICAqIEFm dGVyIHBhdHRlcm4gcmVwbGFjZW1lbnQNCj4gPiAgICAgICBhX3MgPSAodW5zaWduZWQgc2hvcnQp IGFfYzsNCj4gPiAgICAgICBhX2kgPSAoaW50KSBhX3M7DQo+ID4NCj4gPiAgICAgICBwYXR0X2Jf cyA9ICh1bnNpZ25lZCBzaG9ydCkgYl9jOyAgICAvLyBiX2kgPSAoaW50KSBiX2MNCj4gPiAgICAg ICBwYXR0X2JfaSA9IChpbnQpIHBhdHRfYl9zOyAgICAgICAgICAvLyBiX2kgPSAoaW50KSBiX2MN Cj4gPg0KPiA+ICAgICAgIHBhdHRfcl9zID0gd2lkZW5fbWludXMoYV9jLCBiX2MpOyAgIC8vIHJf aSA9IGFfaSAtIGJfaQ0KPiA+ICAgICAgIHBhdHRfcl9pID0gKGludCkgcGF0dF9yX3M7ICAgICAg ICAgIC8vIHJfaSA9IGFfaSAtIGJfaQ0KPiA+DQo+ID4gVGhlIGRlZmluaXRpb25zIG9mIGFfaShv cmlnaW5hbCBzdGF0ZW1lbnQpIGFuZCBiX2kocGF0dGVybiBzdGF0ZW1lbnQpDQo+ID4gYXJlIHJl bGF0ZWQgdG8sIGJ1dCBhY3R1YWxseSBub3QgcGFydCBvZiB3aWRlbl9taW51cyBwYXR0ZXJuLg0K PiA+IFZlY3Rvcml6aW5nIHRoZSBwYXR0ZXJuIGRvZXMgbm90IGNhdXNlIHRoZXNlIGRlZmluaXRp b24gc3RhdGVtZW50cyB0bw0KPiA+IGJlIG1hcmtlZCBhcyBQVVJFX1NMUC4gIEZvciB0aGlzIGNh c2UsIHdlIG5lZWQgdG8gcmVjdXJzaXZlbHkgY2hlY2sNCj4gPiB3aGV0aGVyIHRoZWlyIHVzZXMg YXJlIGFsbCBhYnNvcmJlZCBpbnRvIHZlY3Rvcml6ZWQgY29kZS4gIEJ1dCB0aGVyZQ0KPiA+IGlz IGFuIGV4Y2VwdGlvbiB0aGF0IHNvbWUgdXNlIG1heSBwYXJ0aWNpcGF0ZSBpbiBhbiB2ZWN0b3Jp emVkDQo+ID4gb3BlcmF0aW9uIHZpYSBhbiBleHRlcm5hbCBTTFAgbm9kZSBjb250YWluaW5nIHRo YXQgdXNlIGFzIGFuIGVsZW1lbnQuDQo+ID4NCj4gPiBGZW5nDQo+ID4NCj4gPiAtLS0NCj4gPiAg Li4uL2djYy50YXJnZXQvYWFyY2g2NC9iYi1zbHAtcHIxMTMwOTEuYyAgICAgIHwgIDIyICsrDQo+ ID4gIGdjYy90cmVlLXZlY3Qtc2xwLmNjICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4OSAr KysrKysrKysrKysrKy0tLS0NCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNzIgaW5zZXJ0aW9ucygr KSwgMzkgZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9iYi1zbHAtcHIxMTMwOTEuYw0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2JiLXNscC1wcjExMzA5MS5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYmItc2xwLXByMTEzMDkxLmMNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwLi5mZjgyMmU5MGI0YQ0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9iYi1zbHAtcHIxMTMwOTEuYw0KPiA+IEBAIC0wLDAgKzEsMjIgQEANCj4gPiArLyogeyBk Zy1kbyBjb21waWxlIH0gKi8NCj4gPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAt ZmR1bXAtdHJlZS1zbHAtZGV0YWlscyAtZnRyZWUtc2xwLXZlY3Rvcml6ZSIgfSAqLw0KPiA+ICsN Cj4gPiAraW50IHRlc3QodW5zaWduZWQgYXJyYXlbOF0pOw0KPiA+ICsNCj4gPiAraW50IGZvbyhj aGFyICphLCBjaGFyICpiKQ0KPiA+ICt7DQo+ID4gKyAgdW5zaWduZWQgYXJyYXlbOF07DQo+ID4g Kw0KPiA+ICsgIGFycmF5WzBdID0gKGFbMF0gLSBiWzBdKTsNCj4gPiArICBhcnJheVsxXSA9IChh WzFdIC0gYlsxXSk7DQo+ID4gKyAgYXJyYXlbMl0gPSAoYVsyXSAtIGJbMl0pOw0KPiA+ICsgIGFy cmF5WzNdID0gKGFbM10gLSBiWzNdKTsNCj4gPiArICBhcnJheVs0XSA9IChhWzRdIC0gYls0XSk7 DQo+ID4gKyAgYXJyYXlbNV0gPSAoYVs1XSAtIGJbNV0pOw0KPiA+ICsgIGFycmF5WzZdID0gKGFb Nl0gLSBiWzZdKTsNCj4gPiArICBhcnJheVs3XSA9IChhWzddIC0gYls3XSk7DQo+ID4gKw0KPiA+ ICsgIHJldHVybiB0ZXN0KGFycmF5KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJCYXNpYyBibG9jayB3aWxsIGJlIHZlY3Rvcml6ZWQg dXNpbmcgU0xQIiAxICJzbHAyIiB9IH0gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVj dC1zbHAuY2MgYi9nY2MvdHJlZS12ZWN0LXNscC5jYw0KPiA+IGluZGV4IGE4MmZjYTQ1MTYxLi5k MzZmZjM3MTE0ZSAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXNscC5jYw0KPiA+ICsr KyBiL2djYy90cmVlLXZlY3Qtc2xwLmNjDQo+ID4gQEAgLTY0MTgsNiArNjQxOCw4NCBAQCB2ZWN0 X3NscF9hbmFseXplX25vZGVfb3BlcmF0aW9ucyAodmVjX2luZm8gKnZpbmZvLCBzbHBfdHJlZSBu b2RlLA0KPiA+ICAgIHJldHVybiByZXM7DQo+ID4gIH0NCj4gPg0KPiA+ICsvKiBHaXZlbiBhIGRl ZmluaXRpb24gREVGLCBhbmFseXplIGlmIGl0IHdpbGwgaGF2ZSBhbnkgbGl2ZSBzY2FsYXIgdXNl IGFmdGVyDQo+ID4gKyAgIHBlcmZvcm1pbmcgU0xQIHZlY3Rvcml6YXRpb24gd2hvc2UgaW5mb3Jt YXRpb24gaXMgcmVwcmVzZW50ZWQgYnkgQkJfVklORk8sDQo+ID4gKyAgIGFuZCByZWNvcmQgcmVz dWx0IGludG8gaGFzaCBtYXAgU0NBTEFSX1VTRV9NQVAgYXMgY2FjaGUgZm9yIGxhdGVyIGZhc3QN Cj4gPiArICAgY2hlY2suICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGJvb2wNCj4gPiArdmVjX3Ns cF9oYXNfc2NhbGFyX3VzZSAoYmJfdmVjX2luZm8gYmJfdmluZm8sIHRyZWUgZGVmLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGhhc2hfbWFwPHRyZWUsIGJvb2w+ICZzY2FsYXJfdXNlX21h cCkNCj4gPiArew0KPiA+ICsgIGltbV91c2VfaXRlcmF0b3IgdXNlX2l0ZXI7DQo+ID4gKyAgZ2lt cGxlICp1c2Vfc3RtdDsNCj4gPiArDQo+ID4gKyAgaWYgKGJvb2wgKnJlcyA9IHNjYWxhcl91c2Vf bWFwLmdldCAoZGVmKSkNCj4gPiArICAgIHJldHVybiAqcmVzOw0KPiA+ICsNCj4gPiArICBGT1Jf RUFDSF9JTU1fVVNFX1NUTVQgKHVzZV9zdG10LCB1c2VfaXRlciwgZGVmKQ0KPiA+ICsgICAgew0K PiA+ICsgICAgICBpZiAoaXNfZ2ltcGxlX2RlYnVnICh1c2Vfc3RtdCkpDQo+ID4gKyAgICAgICBj b250aW51ZTsNCj4gPiArDQo+ID4gKyAgICAgIHN0bXRfdmVjX2luZm8gdXNlX3N0bXRfaW5mbyA9 IGJiX3ZpbmZvLT5sb29rdXBfc3RtdCAodXNlX3N0bXQpOw0KPiA+ICsNCj4gPiArICAgICAgaWYg KCF1c2Vfc3RtdF9pbmZvKQ0KPiA+ICsgICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgICAgICBp ZiAoUFVSRV9TTFBfU1RNVCAodmVjdF9zdG10X3RvX3ZlY3Rvcml6ZSAodXNlX3N0bXRfaW5mbykp KQ0KPiA+ICsgICAgICAgY29udGludWU7DQo+ID4gKw0KPiA+ICsgICAgICAvKiBEbyBub3Qgc3Rl cCBmb3J3YXJkIHdoZW4gZW5jb3VudGVyIFBISSBzdGF0ZW1lbnQsIHNpbmNlIGl0IG1heQ0KPiA+ ICsgICAgICAgIGludm9sdmUgY3ljbGljIHJlZmVyZW5jZSBhbmQgY2F1c2UgaW5maW5pdGUgcmVj dXJzaXZlIGludm9jYXRpb24uICAqLw0KPiA+ICsgICAgICBpZiAoZ2ltcGxlX2NvZGUgKHVzZV9z dG10KSA9PSBHSU1QTEVfUEhJKQ0KPiA+ICsgICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgICAg ICAvKiBXaGVuIHBhdHRlcm4gcmVjb2duaXRpb24gaXMgaW52b2x2ZWQsIGEgc3RhdGVtZW50IHdo b3NlIGRlZmluaXRpb24gaXMNCj4gPiArICAgICAgICBjb25zdW1lZCBpbiBzb21lIHBhdHRlcm4s IG1heSBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHJlcGxhY2VtZW50DQo+ID4gKyAgICAg ICAgcGF0dGVybiBzdGF0ZW1lbnRzLCBzbyB3b3VsZCBiZSBza2lwcGVkIHdoZW4gYnVpbGRpbmcg U0xQIGdyYXBoLg0KPiA+ICsNCj4gPiArICAgICAgICAqIE9yaWdpbmFsDQo+ID4gKyAgICAgICAg IGNoYXIgYV9jID0gKihjaGFyICopIGE7DQo+ID4gKyAgICAgICAgIGNoYXIgYl9jID0gKihjaGFy ICopIGI7DQo+ID4gKyAgICAgICAgIHVuc2lnbmVkIHNob3J0IGFfcyA9ICh1bnNpZ25lZCBzaG9y dCkgYV9jOw0KPiA+ICsgICAgICAgICBpbnQgYV9pID0gKGludCkgYV9zOw0KPiA+ICsgICAgICAg ICBpbnQgYl9pID0gKGludCkgYl9jOw0KPiA+ICsgICAgICAgICBpbnQgcl9pID0gYV9pIC0gYl9p Ow0KPiA+ICsNCj4gPiArICAgICAgICAqIEFmdGVyIHBhdHRlcm4gcmVwbGFjZW1lbnQNCj4gPiAr ICAgICAgICAgYV9zID0gKHVuc2lnbmVkIHNob3J0KSBhX2M7DQo+ID4gKyAgICAgICAgIGFfaSA9 IChpbnQpIGFfczsNCj4gPiArDQo+ID4gKyAgICAgICAgIHBhdHRfYl9zID0gKHVuc2lnbmVkIHNo b3J0KSBiX2M7ICAgIC8vIGJfaSA9IChpbnQpIGJfYw0KPiA+ICsgICAgICAgICBwYXR0X2JfaSA9 IChpbnQpIHBhdHRfYl9zOyAgICAgICAgICAvLyBiX2kgPSAoaW50KSBiX2MNCj4gPiArDQo+ID4g KyAgICAgICAgIHBhdHRfcl9zID0gd2lkZW5fbWludXMoYV9jLCBiX2MpOyAgIC8vIHJfaSA9IGFf aSAtIGJfaQ0KPiA+ICsgICAgICAgICBwYXR0X3JfaSA9IChpbnQpIHBhdHRfcl9zOyAgICAgICAg ICAvLyByX2kgPSBhX2kgLSBiX2kNCj4gPiArDQo+ID4gKyAgICAgICAgVGhlIGRlZmluaXRpb25z IG9mIGFfaShvcmlnaW5hbCBzdGF0ZW1lbnQpIGFuZCBiX2kocGF0dGVybiBzdGF0ZW1lbnQpDQo+ ID4gKyAgICAgICAgYXJlIHJlbGF0ZWQgdG8sIGJ1dCBhY3R1YWxseSBub3QgcGFydCBvZiB3aWRl bl9taW51cyBwYXR0ZXJuLg0KPiA+ICsgICAgICAgIFZlY3Rvcml6aW5nIHRoZSBwYXR0ZXJuIGRv ZXMgbm90IGNhdXNlIHRoZXNlIGRlZmluaXRpb24gc3RhdGVtZW50cyB0bw0KPiA+ICsgICAgICAg IGJlIG1hcmtlZCBhcyBQVVJFX1NMUC4gIEZvciB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gcmVjdXJz aXZlbHkgY2hlY2sNCj4gPiArICAgICAgICB3aGV0aGVyIHRoZWlyIHVzZXMgYXJlIGFsbCBhYnNv cmJlZCBpbnRvIHZlY3Rvcml6ZWQgY29kZS4gIEJ1dCB0aGVyZQ0KPiA+ICsgICAgICAgIGlzIGFu IGV4Y2VwdGlvbiB0aGF0IHNvbWUgdXNlIG1heSBwYXJ0aWNpcGF0ZSBpbiBhbiB2ZWN0b3JpemVk DQo+ID4gKyAgICAgICAgb3BlcmF0aW9uIHZpYSBhbiBleHRlcm5hbCBTTFAgbm9kZSBjb250YWlu aW5nIHRoYXQgdXNlIGFzIGFuIGVsZW1lbnQuDQo+ID4gKyAgICAgICAgVGhlIHBhcmFtZXRlciAi c2NhbGFyX3VzZV9tYXAiIHRhZ3Mgc3VjaCBraW5kIG9mIFNTQSBhcyBoYXZpbmcgc2NhbGFyDQo+ ID4gKyAgICAgICAgdXNlIGluIGFkdmFuY2UuICAqLw0KPiA+ICsgICAgICB0cmVlIGxocyA9IGdp bXBsZV9nZXRfbGhzICh1c2Vfc3RtdCk7DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoIWxocyB8fCBU UkVFX0NPREUgKGxocykgIT0gU1NBX05BTUUNCj4gPiArICAgICAgICAgfHwgdmVjX3NscF9oYXNf c2NhbGFyX3VzZSAoYmJfdmluZm8sIGxocywgc2NhbGFyX3VzZV9tYXApKQ0KPg0KPiBUaGlzIGxv b2tzIG1vc3RseSBnb29kLCB0aGUgb25seSB3b3JyeSBJIGhhdmUgaXMgdGhhdCB0aGlzIHJlY3Vy c2lvbg0KPiB3aWxsIC0gZm9yIHVudmVjdG9yaXplZCB1c2VzIC0gZXZlbnR1YWxseSBnbyBhbGwg dGhlIHdheSBkb3duIHRvIHRoZSBlbmQNCj4gb2YgdGhlIHZlY3Rvcml6ZWQgcmVnaW9uIChha2Eg dGhlIHdob2xlIGZ1bmN0aW9uKS4gIFNpbmNlIGl0J3MgcmVhbGx5DQo+IHBhdHRlcm5zIHdlIGFy ZSBhZnRlciBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gbGltaXQgdGhlIHJlY3Vyc2lvbiB0bw0K PiB1c2Vfc3RtdCB3aGljaCBhcmUgY292ZXJlZCBieSBhIHBhdHRlcm4sIGFrYSBTVE1UX1ZJTkZP X0lOX1BBVFRFUk5fUD8NCg0KSG1tLCBpbl9wYXR0ZXJuX3AgZG9lc24ndCBzZWVtIHRvIGJlIHNl dCBmb3Igb3JpZ2luYWwgc3RtdHMgcmVwbGFjZWQNCmJ5IGEgcGF0dGVybi4NCkluIGZhY3Qgd2Ug ZG9uJ3Qgc2VlbSB0byBtYXJrIHRob3NlIGluIGFueSB3YXk/ICBJdCBzaG91bGQgYmUgcG9zc2li bGUgdG8NCnByb2dyYW1tYXRpY2FsbHkgZG8gdGhpcyBsb29raW5nIGF0IHRoZSByb290IHN0bXQg dXNlcyBtYXliZS4gIE1heWJlIHdlIGNhbg0KaW5zdGVhZCBzaW1wbHkgbGltaXQgcmVjdXJzaW9u IGRlcHRoIHRvIG9uZSBhbmQgb25seSBpbmNyZWFzZSB3aGVuIHdlIGdldA0KdGVzdGNhc2VzIHJl cXVpcmluZyBtb3JlPyAgV2Ugc2hvdWxkIGV2ZW50dWFsbHkgcmV2aXNpdCBob3cgd2UgbWFyayBw YXR0ZXJucw0KaW4gbmV4dCBzdGFnZTEuDQoNCj4gUEhJcyBzaG91bGQgYmUgdGhlbiBtYWdpY2Fs bHkgY292ZXJlZCBzaW5jZSB3ZSBoYXZlIG5vIHBhdHRlcm5zDQo+IGZvciB0aGVtICh0aG91Z2gg ZXhwbGljaXRseSBoYW5kbGluZyBpcyBnb29kIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzKS4N Cj4NCj4gVGhhbmtzLA0KPiBSaWNoYXJkLg0KPg0KPiA+ICsgICAgICAgYnJlYWs7DQo+ID4gKyAg ICB9DQo+ID4gKw0KPiA+ICsgIGJvb2wgZm91bmQgPSAhZW5kX2ltbV91c2Vfc3RtdF9wICgmdXNl X2l0ZXIpOw0KPiA+ICsgIGJvb2wgYWRkZWQgPSBzY2FsYXJfdXNlX21hcC5wdXQgKGRlZiwgZm91 bmQpOw0KPiA+ICsNCj4gPiArICBnY2NfYXNzZXJ0ICghYWRkZWQpOw0KPiA+ICsgIHJldHVybiBm b3VuZDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyogTWFyayBsYW5lcyBvZiBOT0RFIHRoYXQgYXJl IGxpdmUgb3V0c2lkZSBvZiB0aGUgYmFzaWMtYmxvY2sgdmVjdG9yaXplZA0KPiA+ICAgICByZWdp b24gYW5kIHRoYXQgY2FuIGJlIHZlY3Rvcml6ZWQgdXNpbmcgdmVjdG9yaXphYmxlX2xpdmVfb3Bl cmF0aW9uDQo+ID4gICAgIHdpdGggU1RNVF9WSU5GT19MSVZFX1AuICBOb3QgaGFuZGxlZCBsaXZl IG9wZXJhdGlvbnMgd2lsbCBjYXVzZSB0aGUNCj4gPiBAQCAtNjQyNyw2ICs2NTA1LDcgQEAgc3Rh dGljIHZvaWQNCj4gPiAgdmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRzIChiYl92ZWNfaW5mbyBi Yl92aW5mbywgc2xwX3RyZWUgbm9kZSwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNscF9pbnN0YW5jZSBpbnN0YW5jZSwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0bXRfdmVjdG9yX2Zvcl9jb3N0ICpjb3N0X3ZlYywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhhc2hfbWFwPHRyZWUsIGJvb2w+ICZzY2FsYXJfdXNlX21hcCwNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfc2V0PHN0bXRfdmVjX2luZm8+ICZzdmlzaXRl ZCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfc2V0PHNscF90cmVlPiAm dmlzaXRlZCkNCj4gPiAgew0KPiA+IEBAIC02NDUxLDMyICs2NTMwLDIyIEBAIHZlY3RfYmJfc2xw X21hcmtfbGl2ZV9zdG10cyAoYmJfdmVjX2luZm8gYmJfdmluZm8sIHNscF90cmVlIG5vZGUsDQo+ ID4gICAgICAgIGRlZl9vcGVyYW5kX3AgZGVmX3A7DQo+ID4gICAgICAgIEZPUl9FQUNIX1BISV9P Ul9TVE1UX0RFRiAoZGVmX3AsIG9yaWdfc3RtdCwgb3BfaXRlciwgU1NBX09QX0RFRikNCj4gPiAg ICAgICAgIHsNCj4gPiAtICAgICAgICAgaW1tX3VzZV9pdGVyYXRvciB1c2VfaXRlcjsNCj4gPiAt ICAgICAgICAgZ2ltcGxlICp1c2Vfc3RtdDsNCj4gPiAtICAgICAgICAgc3RtdF92ZWNfaW5mbyB1 c2Vfc3RtdF9pbmZvOw0KPiA+IC0gICAgICAgICBGT1JfRUFDSF9JTU1fVVNFX1NUTVQgKHVzZV9z dG10LCB1c2VfaXRlciwgREVGX0ZST01fUFRSIChkZWZfcCkpDQo+ID4gLSAgICAgICAgICAgaWYg KCFpc19naW1wbGVfZGVidWcgKHVzZV9zdG10KSkNCj4gPiAtICAgICAgICAgICAgIHsNCj4gPiAt ICAgICAgICAgICAgICAgdXNlX3N0bXRfaW5mbyA9IGJiX3ZpbmZvLT5sb29rdXBfc3RtdCAodXNl X3N0bXQpOw0KPiA+IC0gICAgICAgICAgICAgICBpZiAoIXVzZV9zdG10X2luZm8NCj4gPiAtICAg ICAgICAgICAgICAgICAgIHx8ICFQVVJFX1NMUF9TVE1UICh2ZWN0X3N0bXRfdG9fdmVjdG9yaXpl ICh1c2Vfc3RtdF9pbmZvKSkpDQo+ID4gLSAgICAgICAgICAgICAgICAgew0KPiA+IC0gICAgICAg ICAgICAgICAgICAgU1RNVF9WSU5GT19MSVZFX1AgKHN0bXRfaW5mbykgPSB0cnVlOw0KPiA+IC0g ICAgICAgICAgICAgICAgICAgaWYgKHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlvbiAoYmJfdmlu Zm8sIHN0bXRfaW5mbywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5vZGUsIGluc3RhbmNlLCBpLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGNvc3RfdmVjKSkNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgLyogPz8/ICBTbyB3ZSBrbm93IHdlIGNhbiB2ZWN0b3Jp emUgdGhlIGxpdmUgc3RtdA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICBmcm9tIG9uZSBT TFAgbm9kZS4gIElmIHdlIGNhbm5vdCBkbyBzbyBmcm9tIGFsbA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICBvciBub25lIGNvbnNpc3RlbnRseSB3ZSdkIGhhdmUgdG8gcmVjb3JkIHdoaWNo DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIFNMUCBub2RlIChhbmQgbGFuZSkgd2Ugd2Fu dCB0byB1c2UgZm9yIHRoZSBsaXZlDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJh dGlvbi4gIFNvIG1ha2Ugc3VyZSB3ZSBjYW4gY29kZS1nZW5lcmF0ZQ0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIGFsbCBub2Rlcy4gICovDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgIG1hcmtfdmlzaXRlZCA9IGZhbHNlOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgZWxzZQ0K PiA+IC0gICAgICAgICAgICAgICAgICAgICBTVE1UX1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKSA9 IGZhbHNlOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gLSAgICAgICAgICAg ICAgICAgfQ0KPiA+IC0gICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICBpZiAodmVjX3NscF9o YXNfc2NhbGFyX3VzZSAoYmJfdmluZm8sIERFRl9GUk9NX1BUUiAoZGVmX3ApLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGFyX3VzZV9tYXApKQ0KPiA+ICsg ICAgICAgICAgIHsNCj4gPiArICAgICAgICAgICAgIFNUTVRfVklORk9fTElWRV9QIChzdG10X2lu Zm8pID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICAgIGlmICh2ZWN0b3JpemFibGVfbGl2ZV9vcGVy YXRpb24gKGJiX3ZpbmZvLCBzdG10X2luZm8sIG5vZGUsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSwgaSwgZmFsc2UsIGNvc3RfdmVj KSkNCj4gPiArICAgICAgICAgICAgICAgLyogPz8/ICBTbyB3ZSBrbm93IHdlIGNhbiB2ZWN0b3Jp emUgdGhlIGxpdmUgc3RtdCBmcm9tIG9uZSBTTFANCj4gPiArICAgICAgICAgICAgICAgICAgbm9k ZS4gIElmIHdlIGNhbm5vdCBkbyBzbyBmcm9tIGFsbCBvciBub25lIGNvbnNpc3RlbnRseQ0KPiA+ ICsgICAgICAgICAgICAgICAgICB3ZSdkIGhhdmUgdG8gcmVjb3JkIHdoaWNoIFNMUCBub2RlIChh bmQgbGFuZSkgd2Ugd2FudCB0bw0KPiA+ICsgICAgICAgICAgICAgICAgICB1c2UgZm9yIHRoZSBs aXZlIG9wZXJhdGlvbi4gIFNvIG1ha2Ugc3VyZSB3ZSBjYW4NCj4gPiArICAgICAgICAgICAgICAg ICAgY29kZS1nZW5lcmF0ZSBmcm9tIGFsbCBub2Rlcy4gICovDQo+ID4gKyAgICAgICAgICAgICAg IG1hcmtfdmlzaXRlZCA9IGZhbHNlOw0KPiA+ICsgICAgICAgICAgICAgZWxzZQ0KPiA+ICsgICAg ICAgICAgICAgICBTVE1UX1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKSA9IGZhbHNlOw0KPiA+ICsg ICAgICAgICAgIH0NCj4gPiArDQo+ID4gICAgICAgICAgIC8qIFdlIGhhdmUgdG8gdmVyaWZ5IHdo ZXRoZXIgd2UgY2FuIGluc2VydCB0aGUgbGFuZSBleHRyYWN0DQo+ID4gICAgICAgICAgICAgIGJl Zm9yZSBhbGwgdXNlcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBjb25zZXJ2YXRpdmUgYXBwcm94aW1h dGlvbi4NCj4gPiAgICAgICAgICAgICAgV2UgY2Fubm90IHB1dCB0aGlzIGludG8gdmVjdG9yaXph YmxlX2xpdmVfb3BlcmF0aW9uIGJlY2F1c2UNCj4gPiBAQCAtNjQ5NSw2ICs2NTY0LDEwIEBAIHZl Y3RfYmJfc2xwX21hcmtfbGl2ZV9zdG10cyAoYmJfdmVjX2luZm8gYmJfdmluZm8sIHNscF90cmVl IG5vZGUsDQo+ID4gICAgICAgICAgICAgIGZyb20gdGhlIGxhdGVzdCBzdG10IGluIGEgbm9kZS4g IFNvIHdlIGNvbXBlbnNhdGUgZm9yIHRoaXMNCj4gPiAgICAgICAgICAgICAgZHVyaW5nIGNvZGUt Z2VuZXJhdGlvbiwgc2ltcGx5IG5vdCByZXBsYWNpbmcgdXNlcyBmb3IgdGhvc2UNCj4gPiAgICAg ICAgICAgICAgaG9wZWZ1bGx5IHJhcmUgY2FzZXMuICAqLw0KPiA+ICsgICAgICAgICBpbW1fdXNl X2l0ZXJhdG9yIHVzZV9pdGVyOw0KPiA+ICsgICAgICAgICBnaW1wbGUgKnVzZV9zdG10Ow0KPiA+ ICsgICAgICAgICBzdG10X3ZlY19pbmZvIHVzZV9zdG10X2luZm87DQo+ID4gKw0KPiA+ICAgICAg ICAgICBpZiAoU1RNVF9WSU5GT19MSVZFX1AgKHN0bXRfaW5mbykpDQo+ID4gICAgICAgICAgICAg Rk9SX0VBQ0hfSU1NX1VTRV9TVE1UICh1c2Vfc3RtdCwgdXNlX2l0ZXIsIERFRl9GUk9NX1BUUiAo ZGVmX3ApKQ0KPiA+ICAgICAgICAgICAgICAgaWYgKCFpc19naW1wbGVfZGVidWcgKHVzZV9zdG10 KQ0KPiA+IEBAIC02NTE3LDggKzY1OTAsNTYgQEAgdmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRz IChiYl92ZWNfaW5mbyBiYl92aW5mbywgc2xwX3RyZWUgbm9kZSwNCj4gPiAgICBzbHBfdHJlZSBj aGlsZDsNCj4gPiAgICBGT1JfRUFDSF9WRUNfRUxUIChTTFBfVFJFRV9DSElMRFJFTiAobm9kZSks IGksIGNoaWxkKQ0KPiA+ICAgICAgaWYgKGNoaWxkICYmIFNMUF9UUkVFX0RFRl9UWVBFIChjaGls ZCkgPT0gdmVjdF9pbnRlcm5hbF9kZWYpDQo+ID4gLSAgICAgIHZlY3RfYmJfc2xwX21hcmtfbGl2 ZV9zdG10cyAoYmJfdmluZm8sIGNoaWxkLCBpbnN0YW5jZSwNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvc3RfdmVjLCBzdmlzaXRlZCwgdmlzaXRlZCk7DQo+ID4gKyAg ICAgIHZlY3RfYmJfc2xwX21hcmtfbGl2ZV9zdG10cyAoYmJfdmluZm8sIGNoaWxkLCBpbnN0YW5j ZSwgY29zdF92ZWMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2Fs YXJfdXNlX21hcCwgc3Zpc2l0ZWQsIHZpc2l0ZWQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBU cmF2ZXJzZSBhbGwgc2xwIGluc3RhbmNlcyBvZiBCQl9WSU5GTywgYW5kIG1hcmsgbGFuZXMgb2Yg ZXZlcnkgbm9kZSB0aGF0DQo+ID4gKyAgIGFyZSBsaXZlIG91dHNpZGUgb2YgdGhlIGJhc2ljLWJs b2NrIHZlY3Rvcml6ZWQgcmVnaW9uIGFuZCB0aGF0IGNhbiBiZQ0KPiA+ICsgICB2ZWN0b3JpemVk IHVzaW5nIHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlvbiB3aXRoIFNUTVRfVklORk9fTElWRV9Q LiAgKi8NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK3ZlY3RfYmJfc2xwX21hcmtfbGl2 ZV9zdG10cyAoYmJfdmVjX2luZm8gYmJfdmluZm8pDQo+ID4gK3sNCj4gPiArICBpZiAoYmJfdmlu Zm8tPnNscF9pbnN0YW5jZXMuaXNfZW1wdHkgKCkpDQo+ID4gKyAgICByZXR1cm47DQo+ID4gKw0K PiA+ICsgIGhhc2hfc2V0PHN0bXRfdmVjX2luZm8+IHN2aXNpdGVkOw0KPiA+ICsgIGhhc2hfc2V0 PHNscF90cmVlPiB2aXNpdGVkOw0KPiA+ICsgIGhhc2hfbWFwPHRyZWUsIGJvb2w+IHNjYWxhcl91 c2VfbWFwOw0KPiA+ICsgIGF1dG9fdmVjPHNscF90cmVlPiB3b3JrbGlzdDsNCj4gPiArDQo+ID4g KyAgZm9yIChzbHBfaW5zdGFuY2UgaW5zdGFuY2UgOiBiYl92aW5mby0+c2xwX2luc3RhbmNlcykN Cj4gPiArICAgIGlmICghdmlzaXRlZC5hZGQgKFNMUF9JTlNUQU5DRV9UUkVFIChpbnN0YW5jZSkp KQ0KPiA+ICsgICAgICB3b3JrbGlzdC5zYWZlX3B1c2ggKFNMUF9JTlNUQU5DRV9UUkVFIChpbnN0 YW5jZSkpOw0KPiA+ICsNCj4gPiArICBkbw0KPiA+ICsgICAgew0KPiA+ICsgICAgICBzbHBfdHJl ZSBub2RlID0gd29ya2xpc3QucG9wICgpOw0KPiA+ICsNCj4gPiArICAgICAgaWYgKFNMUF9UUkVF X0RFRl9UWVBFIChub2RlKSA9PSB2ZWN0X2V4dGVybmFsX2RlZikNCj4gPiArICAgICAgIHsNCj4g PiArICAgICAgICAgZm9yICh0cmVlIG9wIDogU0xQX1RSRUVfU0NBTEFSX09QUyAobm9kZSkpDQo+ ID4gKyAgICAgICAgICAgaWYgKFRSRUVfQ09ERSAob3ApID09IFNTQV9OQU1FKQ0KPiA+ICsgICAg ICAgICAgICAgc2NhbGFyX3VzZV9tYXAucHV0IChvcCwgdHJ1ZSk7DQo+ID4gKyAgICAgICB9DQo+ ID4gKyAgICAgIGVsc2UNCj4gPiArICAgICAgIHsNCj4gPiArICAgICAgICAgZm9yIChzbHBfdHJl ZSBjaGlsZCA6IFNMUF9UUkVFX0NISUxEUkVOIChub2RlKSkNCj4gPiArICAgICAgICAgICBpZiAo Y2hpbGQgJiYgIXZpc2l0ZWQuYWRkIChjaGlsZCkpDQo+ID4gKyAgICAgICAgICAgICB3b3JrbGlz dC5zYWZlX3B1c2ggKGNoaWxkKTsNCj4gPiArICAgICAgIH0NCj4gPiArICAgIH0gd2hpbGUgKCF3 b3JrbGlzdC5pc19lbXB0eSAoKSk7DQo+ID4gKw0KPiA+ICsgIHZpc2l0ZWQuZW1wdHkgKCk7DQo+ ID4gKw0KPiA+ICsgIGZvciAoc2xwX2luc3RhbmNlIGluc3RhbmNlIDogYmJfdmluZm8tPnNscF9p bnN0YW5jZXMpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIHZlY3RfbG9jYXRpb24gPSBpbnN0YW5j ZS0+bG9jYXRpb24gKCk7DQo+ID4gKyAgICAgIHZlY3RfYmJfc2xwX21hcmtfbGl2ZV9zdG10cyAo YmJfdmluZm8sIFNMUF9JTlNUQU5DRV9UUkVFIChpbnN0YW5jZSksDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSwgJmluc3RhbmNlLT5jb3N0X3ZlYywNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxhcl91c2VfbWFwLCBzdmlz aXRlZCwgdmlzaXRlZCk7DQo+ID4gKyAgICB9DQo+ID4gIH0NCj4gPg0KPiA+ICAvKiBEZXRlcm1p bmUgd2hldGhlciB3ZSBjYW4gdmVjdG9yaXplIHRoZSByZWR1Y3Rpb24gZXBpbG9ndWUgZm9yIElO U1RBTkNFLiAgKi8NCj4gPiBAQCAtNjY4NCwxNyArNjgwNSw3IEBAIHZlY3Rfc2xwX2FuYWx5emVf b3BlcmF0aW9ucyAodmVjX2luZm8gKnZpbmZvKQ0KPiA+DQo+ID4gICAgLyogQ29tcHV0ZSB2ZWN0 b3JpemFibGUgbGl2ZSBzdG10cy4gICovDQo+ID4gICAgaWYgKGJiX3ZlY19pbmZvIGJiX3ZpbmZv ID0gZHluX2Nhc3QgPGJiX3ZlY19pbmZvPiAodmluZm8pKQ0KPiA+IC0gICAgew0KPiA+IC0gICAg ICBoYXNoX3NldDxzdG10X3ZlY19pbmZvPiBzdmlzaXRlZDsNCj4gPiAtICAgICAgaGFzaF9zZXQ8 c2xwX3RyZWU+IHZpc2l0ZWQ7DQo+ID4gLSAgICAgIGZvciAoaSA9IDA7IHZpbmZvLT5zbHBfaW5z dGFuY2VzLml0ZXJhdGUgKGksICZpbnN0YW5jZSk7ICsraSkNCj4gPiAtICAgICAgIHsNCj4gPiAt ICAgICAgICAgdmVjdF9sb2NhdGlvbiA9IGluc3RhbmNlLT5sb2NhdGlvbiAoKTsNCj4gPiAtICAg ICAgICAgdmVjdF9iYl9zbHBfbWFya19saXZlX3N0bXRzIChiYl92aW5mbywgU0xQX0lOU1RBTkNF X1RSRUUgKGluc3RhbmNlKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnN0YW5jZSwgJmluc3RhbmNlLT5jb3N0X3ZlYywgc3Zpc2l0ZWQsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRlZCk7DQo+ID4gLSAgICAgICB9 DQo+ID4gLSAgICB9DQo+ID4gKyAgICB2ZWN0X2JiX3NscF9tYXJrX2xpdmVfc3RtdHMgKGJiX3Zp bmZvKTsNCj4gPg0KPiA+ICAgIHJldHVybiAhdmluZm8tPnNscF9pbnN0YW5jZXMuaXNfZW1wdHkg KCk7DQo+ID4gIH0NCj4gPiAtLQ0KPiA+IDIuMTcuMQ0K