From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id C7C153858D32 for ; Tue, 18 Jul 2023 18:54:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C7C153858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36IIEXVu031979; Tue, 18 Jul 2023 18:54:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2023-03-30; bh=s5qgJsvGnempa+MFXbRFjg5qxGNKEVFW4lDtH0I0uFQ=; b=UufdVxCtWA7NjWGFtFnEc3DZOQf/uW1PxBwjbU5J9uX/D6jzSSm6itYgLOaZRYEfq0iA P3vEPWPIBPbawxbhECuFgZGSE9Sbudi2tDfdntnIQ//2e2d44Lh/7vEnsPnLMWZ2uaG5 E8QamYvtPNQ+6bzax2N2ZshxsyrADqeZ/R20Bwo94TPgNATCt6XNjVqwjGIO8xAa99I9 utjKVixih8iSOG7B1/RhN0qO3/qMOAw5qMekHbWornddOdsHVk5l/p5/dkFq87Hgidup Iup5yhv+IPzMwc+WjIj44ti0uWAREaMAPkmfA2CAdNBcz4M+ogxUXOev/Lsovo9nZ/2/ dw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3run8a5wqw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 18:53:38 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 36IH5cvx007808; Tue, 18 Jul 2023 18:53:37 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2174.outbound.protection.outlook.com [104.47.57.174]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3ruhw5an1r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 18:53:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TBkjJG/ZZOk/Fs3DKsPKW+tgPfKrIhwGYlwXyRXUsh6TN5p8AvpGLf6cmhoxO1DXMPLt9q5jsbKJa0o3757owb4VZ2X2+DpdFNBCh7wQVRC3/CmcHqG+pOclAY0sBom57wcoXtg3CTKpRP585ih0lhFFUrzruDkhlp2J67ywCmia2WHAgyyKkgTvrIvXTQGVrUmJL7bG6AqfmRWTw4nyGHJ7lYED7/Ubl+pmafPiGVJRwfCTXVWcg9r0/TyIyyFAWu/8SS1DV+3A1SmyQaRngNp3B3hKiTpkTyh+8KAXtfwZo8TFkvU19LQgKmmkA7W/fBRB9gbsVvwSJcPdDrZfjA== 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=s5qgJsvGnempa+MFXbRFjg5qxGNKEVFW4lDtH0I0uFQ=; b=KgE9b6webJI8rVlFR2HnWfC4q9SO6TXCIrgSXBOxU16fbsroT+3zPc6yNbzgOa4LU4VVGsXYE0ADit7PKRUp2/cU+h3w1ccFgTZIYDE+oDEN4xtXMpE5WJEr2IcfHd1Teyi/mlmRoAa0ZsTF4Ozy0M9/8mRlzKoMcUi+xRpM8xeA3S5hkFN3v2Cg58sNZQ9tVZW/0Gasnu/LjdSYeiCZ694JMZ7EncnR8wL8MTa/QIi47LyeteBgPho1/3F8Rb/P763XatKe4b7W+IiuaHz4t1gl531x8DLjp6Bta5+pIs6AXVY/d8eP66/v3pz7GnEFE8kx/MdXeh6MoSd2so8aew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=s5qgJsvGnempa+MFXbRFjg5qxGNKEVFW4lDtH0I0uFQ=; b=NU+JTebFN+Mmddg0sV+nfuFpzoavzuOJmcNIv9wlT5IGiOsPkgooPT1Is0/GeQtjFDqXOj3S/YLab5qLstJ/H3xyMdw9yl5cZRdw5VSrGGbe4SNajUiiznSTm5zib65e1IMxtWk8EsKABJxi3IUiLWJ3NCHbkkxQICNe48jf9k0= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by SJ2PR10MB7653.namprd10.prod.outlook.com (2603:10b6:a03:542::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.33; Tue, 18 Jul 2023 18:53:14 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::5afd:d02a:38ef:94ba]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::5afd:d02a:38ef:94ba%7]) with mapi id 15.20.6588.031; Tue, 18 Jul 2023 18:53:14 +0000 From: Qing Zhao To: Martin Uecker CC: Kees Cook , Siddhesh Poyarekar , Jakub Jelinek , "joseph@codesourcery.com" , "richard.guenther@gmail.com" , "gcc-patches@gcc.gnu.org" , "isanbard@gmail.com" Subject: Re: [V1][PATCH 0/3] New attribute "element_count" to annotate bounds for C99 FAM(PR108896) Thread-Topic: [V1][PATCH 0/3] New attribute "element_count" to annotate bounds for C99 FAM(PR108896) Thread-Index: AQHZjyQM4cZ0Nx0hq0Cg9tjYZZoL4q9tBmcAgEBSagCACxrkAIAGVkYAgAAnywCAAQuCgIAANqKA Date: Tue, 18 Jul 2023 18:53:14 +0000 Message-ID: <0AFFDA5E-A9A0-48DF-BC1D-768E6F48D3AA@oracle.com> References: <20230525161450.3704901-1-qing.zhao@oracle.com> <202305261218.2420AB8E0@keescook> <202307131311.1F30C4357@keescook> <202307171612.406D82C39@keescook> <09305AA9-5D15-4DD6-8C9D-5FD5F0EC09ED@oracle.com> In-Reply-To: <09305AA9-5D15-4DD6-8C9D-5FD5F0EC09ED@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3696.120.41.1.3) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|SJ2PR10MB7653:EE_ x-ms-office365-filtering-correlation-id: e5a574ff-ad05-41e0-b899-08db87c03dc4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: f571OLcwbIxyzExtru98qI8e6HfUGhk1NZIFJtZGoDkGdN1zPZUSfhgWMeFF7PDTekaBtFNY6zsZMnue5Q+7PF9JaWrEZrr3AAIZd8gTee+drQVVHLFDOPK6ebqbeIzMt3xOWsLYI1lNsfEYhxGNKH7sZIMcYG5xwQlg8QSI2NsRKo11bRS8VKdli/ZlLE7bpbuW3DGi5r2eDsGTa/eljM8ctiJJRjyUkCfDLL9mMICeJfZAeAphXhU6maJvtU+WbTgfI/BIzj/K6Nxyna977pVRs2M/tyEnpnZxhkeUGT5/4V9x+xS2icJ2MTfR5wnJkYlZlO2dpmS8QflD8VBgOwfm6Y30D01eWx/3sbfFhsKpyDhtPSbiJziw7xsyJcH920C9y4myGOeR91rD/kAOuTtm8YqFT8n2oYzwbtTJW+wZ2FLGIHKYD0DJqnmk1z23mTvT8jL7lmilopdizHfmAb0eG0uSgR0mJtJrDFX/eeDhrK++FUnKjCwiF4teEWMd9yY68p2GAXvZnI462ft0Cl7vaSzMufJV0/LMxq5cmIcrVgkI0BNrST2u+qWDEUDZAr1rbmRqd0173fX/xY7O0yzg9viX1tlAYPnx7aeJmtbdZsYZvmMlz7ikyLRWIts4 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR10MB4344.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(396003)(376002)(366004)(136003)(346002)(451199021)(30864003)(38070700005)(316002)(2616005)(36756003)(26005)(53546011)(6506007)(122000001)(6486002)(71200400001)(86362001)(6512007)(966005)(33656002)(54906003)(91956017)(478600001)(4326008)(6916009)(66446008)(66946007)(66556008)(64756008)(66476007)(76116006)(2906002)(38100700002)(186003)(8936002)(44832011)(8676002)(83380400001)(41300700001)(5660300002)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZWU2MFNJSDN6TFA2Z1pGdXV0YzE5SGtvb3RCL1VqOG1jaHJsdmgrRXNVQnUz?= =?utf-8?B?TFFiQzVLZVlYQU9uRGZVb2JkbzZFcDhNZ0gxQ2pUTlo2V1V3MGpHb0RhcmVF?= =?utf-8?B?TG85L2Z1MElIY0pycjBxOC83VUd4ODNNYmV1dEFhbmhyYVArMmVkUnV1Mk54?= =?utf-8?B?UFE2Q2JBaWpWQ3Z6enRjR0RISmZZQTdjV3l5Q3lCMUcyVHlGTUlGbWV0c0FS?= =?utf-8?B?OU9wNW9XQWQxYkRzdTJuSFJKVkwxUm1jbGE4M3d1K2N5WS9QUnlGandoaDNv?= =?utf-8?B?UkRZNzBJV2NZa25rMWYwM2JDMDNCdG5SR05uTEE5S2l3dkRzaERRYmJiUUVy?= =?utf-8?B?Q3ZOWG5tUWdFV1R6Z003bWZyaDNaZmErQktFRDZtTXk3UjFkMytNNlNHQXVU?= =?utf-8?B?bkVEdUZ0d3JCREFQUXQ3OG15Qy9vOGdwTHM2KzBOSXJoUGhZTHlIaTJkaWRp?= =?utf-8?B?eFBzVWYvbzlEd3I4RlBGWFdKc1VyM25UMVp2My9UOG9SQjRKbURyNUY3cWxy?= =?utf-8?B?KzhqbWFLRElTUFA0ODhsOVlCTWVLRGl5NThSbVRSRi9zMlhCWXJudWdFdDFs?= =?utf-8?B?VzhoUnVaVDREZnUzMnpLM2wveUhRTzdjOUxmSGpmSWhGcENZTE84WW8zVHpx?= =?utf-8?B?ZC9aN0tuVWNPd2NwZ3IvdXVVN3I2WFpZaGlVYTFkaWNTNkVkVFc0R3A2Z1Nw?= =?utf-8?B?MFlPUUxhMmtHY1VNK0QvWVZ5Q3E3K3dESXJBZmNXWTVZK3pXczJCVjcwd3hB?= =?utf-8?B?aW5zVm1vaXBmNFRWQnQ3UFRDU0xlRHFYdk9oY2VmZVhSZFQyMjFZK1EzR3V3?= =?utf-8?B?aFBLMWVKVzJEak9TMkk1Q29INkhiQ1o1MW0zb1JoOFd2SnVuZ2RabUFiR2tF?= =?utf-8?B?YS95KzdIU2pDOVlYZmV0aEU1VGxDQ2VUcmVYZFBRUmI3TzZEbXZhKzBaSHpw?= =?utf-8?B?WmUxZWZWcDQwTVQvR1NxODFCdFVlMGdlMTF1N1g1TWJyaDFzcnUvRnFCUDZn?= =?utf-8?B?cHFucm82eXlVc2FQWEFOTEdYRmlPa0kvMkRBTExWd3Fid0ZlWEdNb2JCNlBa?= =?utf-8?B?bk5MUGQxSTNUOXd5dkk2NHlybWM0R0lQbHhBRWEyZWJnRytGaXRkTjFrSWJD?= =?utf-8?B?aTdZS1B4QStvdWl3NEJVa0hMZktmQWRsRGcxK2YzKzIzZktVaERPVUZmZ2gv?= =?utf-8?B?YlVFNzB3SnFJVFY0ZjhrclBRdzVQL0ZvMHVqdGh0V2dEMUc0WXlyalZKcUEr?= =?utf-8?B?WnJPNHZpYUVqbk1rcWxwUjJqTEQ1aDBnaEliSU4vV3FtSWc0YnpZM2JwVll2?= =?utf-8?B?RG50SWxuVGtLdFJSL2Vnd0pnYjdrcVZrY1doMXc2RWxHOG1uVHdWRGJEd1hl?= =?utf-8?B?a25zVDRXWUdFNGhEeElYNkNWNFpEd3pBLzExbW5zbmFBT1pFai9zLzRXMEl6?= =?utf-8?B?aTlCdEl1RUpNY09zM1BaN2tLOU42bFRzSG12VUh0ZmgxaUFEWm1nN0pqUTU5?= =?utf-8?B?N3BmcnpLL2R6WFR1UEJ6S3MrOXJVMkZTVE9iVHNoNFVkc0piTTU1OHlFZ3Zy?= =?utf-8?B?UjEvamx2ekk0dzJST251dGRFaHJOY095d3g5TmFTaXhSM1hmTlBXaXlHaDNM?= =?utf-8?B?MGlLMnJZdUdBcE1RbFMyUTJhcktlZzgycjM3VW03T2xjaXZDWjhjYmNvSGlH?= =?utf-8?B?M3UyZ1l0TG5UZ2dMQ09EV0IwcUloWmxYeVlYdHBNOUdWejZZSE9zNW1MOWQw?= =?utf-8?B?NWRYNWZZRlZFRTZmS0RnSjdHV3dCMlVtSWd0ZlBaKy9mNHZIS2VseTQvZVhz?= =?utf-8?B?WEZYMHh3VEprRmcwVzQ3SlRQdmQ5T2tOa2sxK1BtY1MzMTR1Q0FjWURLWG1U?= =?utf-8?B?T3V4YStTMXFOZnZtd3B5YnVEV29DSDJkbkx4Ym5UK25RVUNHTXdDempIZldk?= =?utf-8?B?d203NTN0TUdYdDBCanRJbmx2ZUZYY3dsUVVwendkbWdCMDJNZ1MrbE84N0k0?= =?utf-8?B?YjJyS2hZOVBzYUdxaW1pdWtXSzlubUQ1WCtVbWE5ZzRRWnlYWU5US21VOGtz?= =?utf-8?B?Nlh5VjVRUlRpM3FwdlNXN1BiVWFwZ2k2T0RGR1VHZ3RCWTlXYW5NY0FRYmNu?= =?utf-8?B?S2xRUUlqSHNuQmg0bzhNc1dtL3FpUm1TRUhZS3pvWVFibk1DemlMN2F3MG9u?= =?utf-8?B?Y0E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <6D7964F5A3C42C40A1836213379C7217@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?czAxMExQd0VCcm0xcFpHY2NOdmNRYTVyRjNrVXBSaHJkRDZZSFNSOVliZlZy?= =?utf-8?B?aGNYNGJSUkdkcHZjV3ZaNlltalE1RE1ndmpKS0ZwTWlIUlI0ZnUzWnRaZGND?= =?utf-8?B?Y2EyVG96VHY0NW5xWGZTSDRBbExPQlkyRis3VVRwTkUvSzYwM1VBWmZNK0Nj?= =?utf-8?B?YWpwc1V0R2pVTzVvVzZpOWFBZ3RRbVR4SmpmNlU0eVdHQi9UcVA4NWtvMm43?= =?utf-8?B?ODVXRENYRlZ4Sk9IdUhDRWlOdlBKM2ZtaXRiNThPVWF4cW0yU3lvYWd3RXo3?= =?utf-8?B?L3QrQ0VDaWtBZTcxdUVaSHdwYW1uUGdDZjQ3VGUzcExyY1VYVC9NcXpPMzI3?= =?utf-8?B?MEZOMk1mZmdiSmp6N0d1czFveStzVVJNYXJJS3czcXViRXlyWGc5a2xzVG92?= =?utf-8?B?clltdnl3b2lGZ1g1TUdTNkM5L3A0UzhBMWVGSUdxT1o5V3lzNjlCSWVmbUll?= =?utf-8?B?cytVZnRUM0JSRGszKzhOQ2N4MUx1Mk9lbkduK3lxQU5SNmxoOUR1SEk0MFNo?= =?utf-8?B?a28wRlRtM2hxYXdqczBZK0hETUlPT1lITGs3dmY2Mktka044VEZDYy9nTHp2?= =?utf-8?B?WWJORWhFd1prMVpSRHhGWk5GUjZGbEo3b2luMTF5SFdVQit1TkQ3aFJQcDZp?= =?utf-8?B?NzRDaUpUMkw0OHN4RjRsQVFDbm9PUEJCeWVqY3VoVUlpSUJVZWNzdGhha1ov?= =?utf-8?B?c3grcXd5cC9hbGdRQ3J5MHVPa040dUwvQk14L1N6S1lFZExEcXNFNFBRRnFV?= =?utf-8?B?VmU2WnZxc2I5SlV0RnFCTm54QkpJb3Axa096RmhJSFJnMXBqUmRxT3pWa3FS?= =?utf-8?B?WFRqM2NjVTVQeUl5T0VCbW16MldXY01BakpNQkdvVFFxaVkrMGI2MHVxdDA5?= =?utf-8?B?cmZjdnJVN0ZlR1ZzWTVwVVhRMjRvaVgwSVBsZkE2YUFVdG10Q1E5ZUJZMjhF?= =?utf-8?B?dS9CYk9HOXI3Zm5XQU1hVCtrVXlhVG1URjQ5N1Bxank2RVRvc1MxVlY2ZktV?= =?utf-8?B?TlpQVElubXQwMHljVFkzVnRCSnU1WW5uamtnd3RZWW12N2xwaE9rSWpycFNh?= =?utf-8?B?NXNhcXQxMjBFajdod3ZGWVBzOHRNUFh1QjBmMHZ0WDExczhRVFkyWWxyV1ht?= =?utf-8?B?Zi9xZi9OWDRJdytLcGI3SmVCV1EzSkgvVEdmN2I1YjUvQnJWQlQxekkxNE9i?= =?utf-8?B?cGJueWdOd0hteVAyOWZ3N0NmK1RvbXBIb3ZuSGg1WDh1L1pacC8vaFErdVBa?= =?utf-8?Q?8FyCP/u8J3XlFzn?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5a574ff-ad05-41e0-b899-08db87c03dc4 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jul 2023 18:53:14.2299 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: rjBjDTbQ8Aq7xLv2TM9Cuh+in4VxRRJziTbODIPsBhV4fTl2WPyAjIZEbt9T8KcYl1p0ksth+5ipTyb44271wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR10MB7653 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-18_14,2023-07-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180173 X-Proofpoint-GUID: 9TKjs82RNsQgoQOJVOUOhznli3gYrIZe X-Proofpoint-ORIG-GUID: 9TKjs82RNsQgoQOJVOUOhznli3gYrIZe X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,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: DQoNCj4gT24gSnVsIDE4LCAyMDIzLCBhdCAxMTozNyBBTSwgUWluZyBaaGFvIHZpYSBHY2MtcGF0 Y2hlcyA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiANCj4gDQo+IA0KPj4gT24g SnVsIDE3LCAyMDIzLCBhdCA3OjQwIFBNLCBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9y Zz4gd3JvdGU6DQo+PiANCj4+IE9uIE1vbiwgSnVsIDE3LCAyMDIzIGF0IDA5OjE3OjQ4UE0gKzAw MDAsIFFpbmcgWmhhbyB3cm90ZToNCj4+PiANCj4+Pj4gT24gSnVsIDEzLCAyMDIzLCBhdCA0OjMx IFBNLCBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4gd3JvdGU6DQo+Pj4+IA0KPj4+ PiBJbiB0aGUgYnVnLCB0aGUgcHJvYmxlbSBpcyB0aGF0ICJwIiBpc24ndCBrbm93biB0byBiZSBh bGxvY2F0ZWQsIGlmIEknbQ0KPj4+PiByZWFkaW5nIHRoYXQgY29ycmVjdGx5Pw0KPj4+IA0KPj4+ IEkgdGhpbmsgdGhhdCB0aGUgbWFqb3IgcG9pbnQgaW4gUFIxMDk1NTcgKGh0dHBzOi8vZ2NjLmdu dS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEwOTU1Nyk6DQo+Pj4gDQo+Pj4gZm9yIHRo ZSBmb2xsb3dpbmcgcG9pbnRlciBwLjNfMSwgDQo+Pj4gDQo+Pj4gcC4zXzEgPSBwOw0KPj4+IF8y ID0gX19idWlsdGluX29iamVjdF9zaXplIChwLjNfMSwgMCk7DQo+Pj4gDQo+Pj4gUXVlc3Rpb246 IHdoeSB0aGUgc2l6ZSBvZiBwLjNfMSBjYW5ub3QgdXNlIHRoZSBUWVBFX1NJWkUgb2YgdGhlIHBv aW50ZWUgb2YgcCB3aGVuIHRoZSBUWVBFX1NJWkUgY2FuIGJlIGRldGVybWluZWQgYXQgY29tcGls ZSB0aW1lPw0KPj4+IA0KPj4+IEFuc3dlcjogIEZyb20ganVzdCBrbm93aW5nIHRoZSB0eXBlIG9m IHRoZSBwb2ludGVlIG9mIHAsIHRoZSBjb21waWxlciBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBzaXpl IG9mIHRoZSBvYmplY3QuICANCj4+IA0KPj4gV2h5IGlzIHRoYXQ/ICJwIiBwb2ludHMgdG8gInN0 cnVjdCBQIiwgd2hpY2ggaGFzIGEgZml4ZWQgc2l6ZS4gVGhlcmUNCj4+IG11c3QgYmUgYW4gYXNz dW1wdGlvbiBzb21ld2hlcmUgdGhhdCBhIHBvaW50ZXIgaXMgYWxsb2NhdGVkLCBvdGhlcndpc2UN Cj4+IF9fYm9zIHdvdWxkIGFsbW9zdCBuZXZlciB3b3JrPw0KPiANCj4gTXkgdW5kZXJzdGFuZGlu ZyBmcm9tIHRoZSBjb21tZW50cyBpbiBQUjEwOTU1NyB3YXM6IA0KPiANCj4gSW4gZ2VuZXJhbCB0 aGUgcG9pbnRlciBjb3VsZCBwb2ludCB0byB0aGUgZmlyc3Qgb2JqZWN0IG9mIGFuIGFycmF5IHRo YXQgaGFzIG1vcmUgZWxlbWVudHMsIG9yIHRvIGFuIG9iamVjdCBvZiBhIGRpZmZlcmVudCB0eXBl LiANCj4gV2l0aG91dCBzZWVpbmcgdGhlIHJlYWwgYWxsb2NhdGlvbiB0byB0aGUgcG9pbnRlciwg dGhlIGNvbXBpbGVyIGNhbm5vdCBhc3N1bWUgdGhhdCB0aGUgcG9pbnRlciBwb2ludCB0byBhbiBv YmplY3QgdGhhdCBoYXMNCj4gdGhlIGV4YWN0IHNhbWUgdHlwZSBhcyBpdHMgZGVjbGFyYXRpb24u IA0KPiANCj4gU2lkIGFuZCBNYXJ0aW4sIGlzIHRoZSBhYm92ZSB1bmRlcnN0YW5kIGNvcnJlY3Rs eT8NCj4gDQo+IEhvbmVzdGx5LCBJIGFtIHN0aWxsIG5vdCAxMDAlIGNsZWFyIG9uIHRoaXMgeWV0 Lg0KPiANCj4gSmFrdWIsIFNpZCBhbmQgTWFydGluLCBjb3VsZCAgeW91IHBsZWFzZSBleHBsYWlu IGEgbGl0dGxlIGJpdCBtb3JlIGhlcmUsIGVzcGVjaWFsbHkgZm9yIHRoZSBmb2xsb3dpbmcgc21h bGwgZXhhbXBsZT8NCj4gDQo+IFtvcGNAcWluemhhby1vbDh1My14ODYgMTA5NTU3XSQgY2F0IHQu Yw0KPiAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ICNpbmNsdWRlIDxhc3NlcnQuaD4NCj4gc3RydWN0 IFAgew0KPiAgaW50IGs7DQo+ICBpbnQgeFsxMF07IA0KPiB9ICpwOw0KPiANCj4gdm9pZCBzdG9y ZShpbnQgYSwgaW50IGIpIA0KPiB7DQo+ICBwID0gKHN0cnVjdCBQICopbWFsbG9jIChzaXplb2Yg KHN0cnVjdCBQKSk7DQo+ICBwLT5rID0gYTsNCj4gIHAtPnhbYl0gPSAwOw0KPiAgYXNzZXJ0IChf X2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZSAocC0+eCwgMSkgPT0gc2l6ZW9mIChpbnRbMTBd KSk7DQo+ICBhc3NlcnQgKF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplIChwLCAxKSA9PSBz aXplb2YgKHN0cnVjdCBQKSk7DQo+ICByZXR1cm47DQo+IH0NCj4gDQo+IGludCBtYWluKCkNCj4g ew0KPiAgc3RvcmUoNywgNyk7DQo+ICBhc3NlcnQgKF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9z aXplIChwLT54LCAxKSA9PSBzaXplb2YgKGludFsxMF0pKTsNCj4gIGFzc2VydCAoX19idWlsdGlu X2R5bmFtaWNfb2JqZWN0X3NpemUgKHAsIDEpID09IHNpemVvZiAoc3RydWN0IFApKTsNCj4gIGZy ZWUgKHApOw0KPiB9DQo+IFtvcGNAcWluemhhby1vbDh1My14ODYgMTA5NTU3XSQgc2ggdA0KPiAv aG9tZS9vcGMvSW5zdGFsbC9sYXRlc3QvYmluL2djYyAtTyAtZmR1bXAtdHJlZS1hbGwgdC5jDQo+ IGEub3V0OiB0LmM6MjE6IG1haW46IEFzc2VydGlvbiBgX19idWlsdGluX2R5bmFtaWNfb2JqZWN0 X3NpemUgKHAtPngsIDEpID09IHNpemVvZiAoaW50WzEwXSknIGZhaWxlZC4NCj4gdDogbGluZSAx OTogODU5OTQ0IEFib3J0ZWQgICAgICAgICAgICAgICAgIChjb3JlIGR1bXBlZCkgLi9hLm91dA0K PiANCj4gDQoNCkEgY29ycmVjdGlvbiB0byB0aGUgYWJvdmUgY29tcGlsYXRpb24gb3B0aW9uOg0K L2hvbWUvb3BjL0luc3RhbGwvbGF0ZXN0LWQvYmluL2djYyAtTyAtZnN0cmljdC1mbGV4LWFycmF5 cz0zIHQuYw0KYS5vdXQ6IHQuYzoyMjogbWFpbjogQXNzZXJ0aW9uIGBfX2J1aWx0aW5fZHluYW1p Y19vYmplY3Rfc2l6ZSAocCwgMSkgPT0gc2l6ZW9mIChzdHJ1Y3QgUCknIGZhaWxlZC4NCnQ6IGxp bmUgMTk6IDkxODgzMyBBYm9ydGVkICAgICAgICAgICAgICAgICAoY29yZSBkdW1wZWQpIC4vYS5v dXQNCg0KKEFsbCBvdGhlcnMga2VlcCB0aGUgc2FtZSkuDQoNClNvcnJ5IGZvciB0aGUgbWlzdGFr ZS4NCg0KUWluZw0KDQo+IEluIHRoZSBhYm92ZSwgYW1vbmcgdGhlIDQgYXNzZXJ0aW9ucywgb25s eSB0aGUgbGFzdCBvbmUgZmFpbGVkLg0KPiANCj4gV2h5IEdDQyBjYW4gdXNlIHRoZSBUWVBFX1NJ WkUgb2YgdGhlIHBvaW50ZWUgb2YgdGhlIHBvaW50ZXIg4oCccC0+eOKAnSBhcyB0aGUgc2l6ZSBv ZiB0aGUgb2JqZWN0LCANCj4gYnV0IGNhbm5vdCB1c2UgdGhlIFRZUEVfU0laRSBvZiB0aGUgcG9p bnRlZSBvZiB0aGUgcG9pbnRlciDigJxw4oCdIGFzIHRoZSBzaXplIG9mIHRoZSBvYmplY3Q/IA0K PiANCj4gDQo+PiANCj4+PiBUaGVyZWZvcmUgdGhlIGJ1ZyBoYXMgYmVlbiBjbG9zZWQuIA0KPj4+ IA0KPj4+IEluIHlvdXIgZm9sbG93aW5nIHRlc3RpbmcgNToNCj4+PiANCj4+Pj4gSSdtIG5vdCBz dXJlIHRoaXMgaXMgYSByZWFzb25hYmxlIGJlaGF2aW9yLCBidXQNCj4+Pj4gbGV0IG1lIGdldCBp bnRvIHRoZSBzcGVjaWZpYyB0ZXN0LCB3aGljaCBsb29rcyBsaWtlIHRoaXM6DQo+Pj4+IA0KPj4+ PiBURVNUKGNvdW50ZWRfYnlfc2Vlbl9ieV9iZG9zKQ0KPj4+PiB7DQo+Pj4+ICAgICAgc3RydWN0 IGFubm90YXRlZCAqcDsNCj4+Pj4gICAgICBpbnQgaW5kZXggPSBNQVhfSU5ERVggKyB1bmNvbnN0 Ow0KPj4+PiANCj4+Pj4gICAgICBwID0gYWxsb2NfYW5ub3RhdGVkKGluZGV4KTsNCj4+Pj4gDQo+ Pj4+ICAgICAgUkVQT1JUX1NJWkUocC0+YXJyYXkpOw0KPj4+PiAvKiAxICovIEVYUEVDVF9FUShz aXplb2YoKnApLCBvZmZzZXRvZih0eXBlb2YoKnApLCBhcnJheSkpOw0KPj4+PiAgICAgIC8qIENo ZWNrIGFycmF5IHNpemUgYWxvbmUuICovDQo+Pj4+IC8qIDIgKi8gRVhQRUNUX0VRKF9fYnVpbHRp bl9vYmplY3Rfc2l6ZShwLT5hcnJheSwgMSksIFNJWkVfTUFYKTsNCj4+Pj4gLyogMyAqLyBFWFBF Q1RfRVEoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocC0+YXJyYXksIDEpLCBwLT5mb28g KiBzaXplb2YoKnAtPmFycmF5KSk7DQo+Pj4+ICAgICAgLyogQ2hlY2sgY2hlY2sgZW50aXJlIG9i amVjdCBzaXplLiAqLw0KPj4+PiAvKiA0ICovIEVYUEVDVF9FUShfX2J1aWx0aW5fb2JqZWN0X3Np emUocCwgMSksIFNJWkVfTUFYKTsNCj4+Pj4gLyogNSAqLyBFWFBFQ1RfRVEoX19idWlsdGluX2R5 bmFtaWNfb2JqZWN0X3NpemUocCwgMSksIHNpemVvZigqcCkgKyBwLT5mb28gKiBzaXplb2YoKnAt PmFycmF5KSk7DQo+Pj4+IH0NCj4+Pj4gDQo+Pj4+IFRlc3QgNSBzaG91bGQgcGFzcyBhcyB3ZWxs LCBzaW5jZSwgYWdhaW4sIHAgY2FuIGJlIGV4YW1pbmVkLiBQYXNzaW5nIHANCj4+Pj4gdG8gX19i ZG9zIGltcGxpZXMgaXQgaXMgYWxsb2NhdGVkIGFuZCB0aGUgX19jb3VudGVkX2J5IGFubm90YXRp b24gY2FuIGJlDQo+Pj4+IGV4YW1pbmVkLg0KPj4+IA0KPj4+IFNpbmNlIHRoZSBjYWxsIHRvIHRo ZSByb3V0aW5lIOKAnGFsbG9jX2Fubm90YXRlZCIgY2Fubm90IGJlIGlubGluZWQsIEdDQyBkb2Vz IG5vdCBzZWUgYW55IGFsbG9jYXRpb24gY2FsbHMgZm9yIHRoZSBwb2ludGVyIHAuDQo+PiANCj4+ IENvcnJlY3QuDQo+PiANCj4+PiBBdCB0aGUgc2FtZSB0aW1lLCBkdWUgdG8gdGhlIHNhbWUgcmVh c29uIGFzIFBSMTA5OTg2LCBHQ0MgY2Fubm90IGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgb2Jq ZWN0IGJ5IGp1c3Qga25vd2luZyB0aGUgVFlQRV9TSVpFDQo+Pj4gb2YgdGhlIHBvaW50ZWUgb2Yg cC4gIA0KPj4gDQo+PiBTbyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRlc3QgMyBhbmQgdGVzdCA1 IGlzIHRoYXQgInAiIGlzIGV4cGxpY2l0bHkNCj4+IGRlcmVmZXJlbmNlZCB0byBmaW5kICJhcnJh eSIsIGFuZCB0aGVyZWZvcmUgYW4gYXNzdW1wdGlvbiBpcyBlc3RhYmxpc2hlZA0KPj4gdGhhdCAi cCIgaXMgYWxsb2NhdGVkPw0KPiANCj4gWWVzLCB0aGlzIG1pZ2h0IGJlIHRoZSBhc3N1bXB0aW9u IHRoYXQgR0NDIG1hZGUgIC06KQ0KPj4gDQo+Pj4gU28sIHRoaXMgaXMgZXhhY3RseSB0aGUgc2Ft ZSBpc3N1ZSBhcyBQUjEwOTU1Ny4gIEl04oCZcyBhbiBleGlzdGluZyBiZWhhdmlvciBwZXIgdGhl IGN1cnJlbnQgX19idWl0bGluX29iamVjdF9zaXplIGFsZ29yaXRobS4NCj4+PiBJIGFtIHN0aWxs IG5vdCB2ZXJ5IHN1cmUgd2hldGhlciB0aGUgc2l0dWF0aW9uIGluIFBSMTA5NTU3IGNhbiBiZSBp bXByb3ZlZCBvciBub3QsIGJ1dCBlaXRoZXIgd2F5LCBpdOKAmXMgYSBzZXBhcmF0ZSBpc3N1ZS4N Cj4+IA0KPj4gT2theSwgc28gdGhlIGlzc3VlIGlzIG9uZSBvZiBvYmplY3QgYWxsb2NhdGlvbiB2 aXNpYmlsaXR5IChvcg0KPj4gYXNzdW1wdGlvbnMgdGhlcmUgaW4pPw0KPiANCj4gTWlnaHQgYmUs IGxldOKAmXMgc2VlIHdoYXQgU2lkIG9yIE1hcnRpbiB3aWxsIHNheSBvbiB0aGlzLg0KPj4gDQo+ Pj4gUGxlYXNlIHNlZSB0aGUgbmV3IHRlc3RpbmcgY2FzZSBJIGFkZGVkIGZvciBQUjEwOTU1Nywg eW91IHdpbGwgc2VlIHRoYXQgdGhlIGFib3ZlIGNhc2UgNSBpcyBhIHNpbWlsYXIgY2FzZSBhcyB0 aGUgbmV3IHRlc3RpbmcgY2FzZSBpbiBQUjEwOTU1Ny4NCj4+IA0KPj4gSSB3aWxsIHBvbmRlciB0 aGlzIGEgYml0IG1vcmUgdG8gc2VlIGlmIEkgY2FuIGNvbWUgdXAgd2l0aCBhIHVzZWZ1bA0KPj4g dGVzdCBjYXNlIHRvIHJlcGxhY2UgdGhlIHBhcnQgZnJvbSAidGVzdCA1IiBhYm92ZS4NCj4+IA0K Pj4+PiANCj4+Pj4gSWYgInJldHVybiBwLT5hcnJheVtpbmRleF07IiB3b3VsZCBiZSBjYXVnaHQg YnkgdGhlIHNhbml0aXplciwgdGhlbg0KPj4+PiBpdCBmb2xsb3dzIHRoYXQgX19idWlsdGluX2R5 bmFtaWNfb2JqZWN0X3NpemUocCwgMSkgbXVzdCBhbHNvIGtub3cgdGhlDQo+Pj4+IHNpemUuIGku ZS4gYm90aCBtdXN0IGV4YW1pbmUgInAiIGFuZCBpdHMgdHJhaWxpbmcgZmxleGlibGUgYXJyYXkg YW5kDQo+Pj4+IF9fY291bnRlZF9ieSBhbm5vdGF0aW9uLg0KPj4+PiANCj4+Pj4+IA0KPj4+Pj4g Mi4gVGhlIGNvbW1vbiBpc3N1ZSBmb3IgIHRoZSBmYWlsZWQgdGVzdGluZyAzLCA0LCA5LCAxMCBp czoNCj4+Pj4+IA0KPj4+Pj4gZm9yIHRoZSBmb2xsb3dpbmcgYW5ub3RhdGVkIHN0cnVjdHVyZTog DQo+Pj4+PiANCj4+Pj4+ID09PT0NCj4+Pj4+IHN0cnVjdCBhbm5vdGF0ZWQgew0KPj4+Pj4gICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4+Pj4gICAgICBzaXplX3QgZm9vOw0KPj4+Pj4gICAg ICBpbnQgYXJyYXlbXSBfX2F0dHJpYnV0ZV9fKChjb3VudGVkX2J5IChmb28pKSk7DQo+Pj4+PiB9 Ow0KPj4+Pj4gDQo+Pj4+PiANCj4+Pj4+IHN0cnVjdCBhbm5vdGF0ZWQgKnA7DQo+Pj4+PiBpbnQg aW5kZXggPSAxNjsNCj4+Pj4+IA0KPj4+Pj4gcCA9IG1hbGxvYyhzaXplb2YoKnApICsgaW5kZXgg KiBzaXplb2YoKnAtPmFycmF5KSk7ICAvLyBhbGxvY2F0ZWQgcmVhbCBzaXplIA0KPj4+Pj4gDQo+ Pj4+PiBwLT5mb28gPSBpbmRleCArIDI7ICAvLyBwLT5mb28gd2FzIHNldCBieSBhIGRpZmZlcmVu dCB2YWx1ZSB0aGFuIHRoZSByZWFsIHNpemUgb2YgcC0+YXJyYXkgYXMgaW4gdGVzdCA5IGFuZCAx MA0KPj4+PiANCj4+Pj4gUmlnaHQsIHRlc3RzIDkgYW5kIDEwIGFyZSBjaGVja2luZyB0aGF0IHRo ZSBfc21hbGxlc3RfIHBvc3NpYmxlIHZhbHVlIG9mDQo+Pj4+IHRoZSBhcnJheSBpcyB1c2VkLiAo VGhlcmUgYXJlIHR3byBzb3VyY2VzIG9mIGluZm9ybWF0aW9uOiB0aGUgYWxsb2NhdGlvbg0KPj4+ PiBzaXplIGFuZCB0aGUgc2l6ZSBjYWxjdWxhdGVkIGJ5IGNvdW50ZWRfYnkuIFRoZSBzbWFsbGVy IG9mIHRoZSB0d28NCj4+Pj4gc2hvdWxkIGJlIHVzZWQgd2hlbiBib3RoIGFyZSBhdmFpbGFibGUu KQ0KPj4+IA0KPj4+IFRoZSBjb3VudGVkX2J5IGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGFubm90YXRl IGEgRmxleGlibGUgYXJyYXkgbWVtYmVyIG9uIGhvdyBtYW55IGVsZW1lbnRzIGl0IHdpbGwgaGF2 ZS4NCj4+PiBIb3dldmVyLCBpZiB0aGlzIGluZm9ybWF0aW9uIGNhbiBub3QgYWNjdXJhdGVseSBy ZWZsZWN0IHRoZSByZWFsIG51bWJlciBvZiBlbGVtZW50cyBmb3IgdGhlIGFycmF5IGFsbG9jYXRl ZCwgDQo+Pj4gV2hhdOKAmXMgdGhlIHB1cnBvc2Ugb2Ygc3VjaCBpbmZvcm1hdGlvbj8gDQo+PiAN Cj4+IEZvciBleGFtcGxlLCBpbWFnaW5lIGNvZGUgdGhhdCBhbGxvY2F0ZXMgc3BhY2UgZm9yIDEw MCBlbGVtZW50cyBzaW5jZQ0KPj4gdGhlIGNvbW1vbiBjYXNlIGlzIHRoYXQgdGhlIG51bWJlciBv ZiBlbGVtZW50cyB3aWxsIGdyb3cgb3ZlciB0aW1lLg0KPj4gRWxlbWVudHMgYXJlIGFkZGVkIGFz IGl0IGdvZXMuIEZvciBleGFtcGxlOg0KPj4gDQo+PiBzdHJ1Y3QgZ3Jvd3Mgew0KPj4gCWludCBh bGxvY19jb3VudDsNCj4+IAlpbnQgdmFsaWRfY291bnQ7DQo+PiAJc3RydWN0IGVsZW1lbnQgaXRl bVtdIF9fY291bnRlZF9ieSh2YWxpZF9jb3VudCk7DQo+PiB9ICpwOw0KPj4gDQo+PiB2b2lkIHNv bWV0aGluZyh2b2lkKQ0KPj4gew0KPj4gCXAgPSBtYWxsb2Moc2l6ZW9mKCpwKSArIHNpemVvZigq cC0+aXRlbSkgKiAxMDApOw0KPj4gCXAtPmFsbG9jX2NvdW50ID0gMTAwOw0KPj4gCXAtPnZhbGlk X2NvdW50ID0gMDsNCj4+IA0KPj4gCS8qIHRoaXMgbG9vcCBkb2Vzbid0IGNoZWNrIHRoYXQgd2Ug ZG9uJ3QgZ28gb3ZlciAxMDAuICovDQo+PiAJd2hpbGUgKGl0ZW1zX3RvX2NvcHkpIHsNCj4+IAkJ c3RydWN0IGVsZW1lbnQgKml0ZW1fcHRyID0gZ2V0X25leHRfaXRlbSgpOw0KPj4gCQkvKiBfX2Nv dW50ZWRfYnkgc3RheXMgaW4gc3luYzogKi8NCj4+IAkJcC0+dmFsaWRfY291bnQrKzsNCj4+IAkJ cC0+aXRlbVtwLT52YWxpZF9jb3VudCAtIDFdID0gKml0ZW1fcHRyOw0KPj4gCX0NCj4+IH0NCj4+ IA0KPj4gV2Ugd291bGQgd2FudCB0byBjYXRjaCBjYXNlcyB0aGVyZSBwLT5pdGVtW10gaXMgYWNj ZXNzZWQgd2l0aCBhbiBpbmRleA0KPj4gdGhhdCBpcyA+PSBwLT52YWxpZF9jb3VudCwgZXZlbiB0 aG91Z2ggdGhlIGFsbG9jYXRpb24gaXMgKGN1cnJlbnRseSkNCj4+IGxhcmdlci4NCj4+IA0KPj4g SG93ZXZlciwgaWYgd2UgZXZlciByZWFjaGVkIHZhbGlkX2NvdW50ID49IGFsbG9jX2NvdW50LCB3 ZSBuZWVkIHRvIHRyYXANCj4+IHRvbywgc2luY2Ugd2UgY2FuIHN0aWxsICJzZWUiIHRoZSB0cnVl IGFsbG9jYXRpb24gc2l6ZS4NCj4+IA0KPj4gTm93LCB0aGUgX19hbGxvY19zaXplIGhpbnQgaXMg dmlzaWJsZSBpbiB2ZXJ5IGZldyBwbGFjZXMsIHNvIGlmIHRoZXJlIGlzDQo+PiBhIHN0cm9uZyBy ZWFzb24gdG8gZG8gc28sIEkgY2FuIGxpdmUgd2l0aCBzYXlpbmcgdGhhdCBfX2NvdW50ZWRfYnkg dGFrZXMNCj4+IGZ1bGwgcHJlY2VkZW5jZSBvdmVyIF9fYWxsb2Nfc2l6ZS4gSXQgc2VlbXMgaXQg c2hvdWxkIGJlIHBvc3NpYmxlIHRvDQo+PiBjb21wYXJlIHdoZW4gYm90aCBhcmUgcHJlc2VudCwg YnV0IEkgY2FuIGxpdmUgd2l0aCBfX2NvdW50ZWRfYnkgYmVpbmcNCj4+IHRoZSB1bml2ZXJzYWwg dHJ1dGguIDopDQo+PiANCj4gDQo+IFRoYW5rcyBmb3IgdGhlIGV4YW1wbGUgYW5kIHRoZSBleHBs YW5hdGlvbi4gVW5kZXJzdG9vZCBub3cuDQo+IA0KPiBMTFZN4oCZcyBSRkMgcmVxdWlyZXMgdGhl IGZvbGxvd2luZyByZWxhdGlvbnNoaXA6IChodHRwczovL2Rpc2NvdXJzZS5sbHZtLm9yZy90L3Jm Yy1lbmZvcmNpbmctYm91bmRzLXNhZmV0eS1pbi1jLWZib3VuZHMtc2FmZXR5LzcwODU0I21haW50 YWluaW5nLWNvcnJlY3RuZXNzLW9mLWJvdW5kcy1hbm5vdGF0aW9ucy0xOCkNCj4gDQo+IEJ1ZmZl cuKAmXMgcmVhbCBhbGxvY2F0ZWQgc2l6ZSA+PSBjb3VudGVkX2J5IHZhbHVlDQo+IA0KPiBTaG91 bGQgYmUgdHJ1ZSBhbGwgdGhlIHRpbWUuIA0KPiANCj4gSSB0aGluayB0aGF0IHRoaXMgaXMgYSBy ZWFzb25hYmxlIHJlcXVpcmVtZW50LiANCj4gDQo+IChPdGhlcndpc2UsIGlmIGNvdW50ZWRfYnkg PiBidWZmZXLigJlzIHJlYWwgYWxsb2NhdGVkIHNpemUsIG92ZXJmbG93IG1pZ2h0IGhhcHBlbikN Cj4gDQo+IElzIHRoZSBhYm92ZSBlbm91Z2ggdG8gY292ZXIgeW91ciB1c2UgY2FzZXM/DQo+IA0K PiBJZiBzbywgSSB3aWxsIHN0dWR5IGEgbGl0dGxlIGJpdCBtb3JlIHRvIHNlZSBob3cgdG8gaW1w bGVtZW50IHRoaXMuDQo+Pj4gDQo+Pj4+PiBvcg0KPj4+Pj4gcC0+Zm9vIHdhcyBub3Qgc2V0IHRv IGFueSB2YWx1ZSBhcyBpbiB0ZXN0IDMgYW5kIDQNCj4+Pj4gDQo+Pj4+IEZvciB0ZXN0cyAzIGFu ZCA0LCB5ZXMsIHRoaXMgd2FzIG15IG1pc3Rha2UuIEkgaGF2ZSBmaXhlZCB1cCB0aGUgdGVzdHMN Cj4+Pj4gbm93LiBCaWxsIG5vdGljZWQgdGhlIHNhbWUgaXNzdWUuIFNvcnJ5IGZvciB0aGUgdGhp bmstbyENCj4+Pj4gDQo+Pj4+PiA9PT09DQo+Pj4+PiANCj4+Pj4+IGkuZSwgdGhlIHZhbHVlIG9m IHAtPmZvbyBpcyBOT1Qgc3luY2VkIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBhbGxvY2F0 ZWQgZm9yIHRoZSBhcnJheSBwLT5hcnJheS4gIA0KPj4+Pj4gDQo+Pj4+PiBJIHRoaW5rIHRoYXQg dGhpcyBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBhbiB1c2VyIGVycm9yLCBhbmQgdGhlIGRvY3Vt ZW50YXRpb24gb2YgdGhlIGF0dHJpYnV0ZSBzaG91bGQgaW5jbHVkZQ0KPj4+Pj4gdGhpcyByZXF1 aXJlbWVudC4gIChJbiB0aGUgTExWTeKAmXMgUkZDLCBzdWNoIHJlcXVpcmVtZW50IHdhcyBpbmNs dWRlZCBpbiB0aGUgcHJvZ3JhbWluZyBtb2RlbDogDQo+Pj4+PiBodHRwczovL2Rpc2NvdXJzZS5s bHZtLm9yZy90L3JmYy1lbmZvcmNpbmctYm91bmRzLXNhZmV0eS1pbi1jLWZib3VuZHMtc2FmZXR5 LzcwODU0I21haW50YWluaW5nLWNvcnJlY3RuZXNzLW9mLWJvdW5kcy1hbm5vdGF0aW9ucy0xOCkN Cj4+Pj4+IA0KPj4+Pj4gV2UgY2FuIGFkZCBhIG5ldyB3YXJuaW5nIG9wdGlvbiAtV2NvdW50ZWQt YnkgdG8gcmVwb3J0IHN1Y2ggdXNlciBlcnJvciBpZiBuZWVkZWQuDQo+Pj4+PiANCj4+Pj4+IFdo YXTigJlzIHlvdXIgb3BpbmlvbiBvbiB0aGlzPw0KPj4+PiANCj4+Pj4gSSB0aGluayBpdCBpcyBj b3JyZWN0IHRvIGFsbG93IG1pc21hdGNoIGJldHdlZW4gYWxsb2NhdGlvbiBhbmQNCj4+Pj4gY291 bnRlZF9ieSBhcyBsb25nIGFzIG9ubHkgdGhlIGxlYXN0IG9mIHRoZSB0d28gaXMgdXNlZC4NCj4+ PiANCj4+PiBXaGF04oCZcyB5b3VyIG1lYW4gYnkg4oCcb25seSB0aGUgbGVhc3Qgb2YgdGhlIHR3 byBpcyB1c2Vk4oCdPw0KPj4gDQo+PiBJIHdhcyBqdXN0IHJlc3RhdGluZyB0aGUgYWJvdmU6IGlm IHNpemUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHZpYQ0KPj4gYm90aCBfX2FsbG9jX3NpemUg YW5kIF9fY291bnRlZF9ieSwgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBzaG91bGQgYmUNCj4+IHVz ZWQuDQo+IA0KPiBJZiB3ZSBhcmUgY29uc2lzdGVudCB3aXRoIExMVk3igJlzIFJGQywgX19hbGxv Y19zaXplID49IF9fY291bnRlZF9ieSBhbGwgdGhlIHRpbWUuDQo+IFRoZW4gd2UgY2FuIGFsd2F5 cyB1c2UgdGhlIGNvdW50ZWRfYnkgaW5mbyBmb3IgdGhlIGFycmF5IHNpemUuIA0KPj4gDQo+Pj4g DQo+Pj4+IFRoaXMgbWF5IGJlDQo+Pj4+IGRlc2lyYWJsZSBpbiBhIGZldyBzaXR1YXRpb25zLiBP bmUgZXhhbXBsZSB3b3VsZCBiZSBhIGxhcmdlIGFsbG9jYXRpb24NCj4+Pj4gdGhhdCBpcyBzbG93 bHkgZmlsbGVkIHVwIGJ5IHRoZSBwcm9ncmFtLg0KPj4+IA0KPj4+IFNvLCBmb3Igc3VjaCBzaXR1 YXRpb24sIHdoZW5ldmVyIHRoZSBhbGxvY2F0aW9uIGlzIGZpbGxlZCB1cCwgdGhlIGZpZWxkIHRo YXQgaG9sZCB0aGUg4oCcY291bnRlZF9ieeKAnSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGluY3JlYXNl ZCBhdCB0aGUgc2FtZSB0aW1lLA0KPj4+IFRoZW4sIHRoZSDigJxjb3VudGVkX2J54oCdIHZhbHVl IGFsd2F5cyBzeW5jIHdpdGggdGhlIHJlYWwgYWxsb2NhdGlvbi4gDQo+Pj4+IEkuZS4gdGhlIGNv dW50ZWRfYnkgbWVtYmVyIGlzDQo+Pj4+IHNsb3dseSBpbmNyZWFzZWQgZHVyaW5nIHJ1bnRpbWUg KGJ1dCBub3QgYmV5b25kIHRoZSB0cnVlIGFsbG9jYXRpb24gc2l6ZSkuDQo+Pj4gDQo+Pj4gVGhl biB0aGVyZSBzaG91bGQgYmUgc291cmNlIGNvZGUgdG8gaW5jcmVhc2UgdGhlIOKAnGNvdW50ZWRf YnnigJ0gZmllbGQgd2hlbmV2ZXIgdGhlIGFsbG9jYXRlZCBzcGFjZSBpbmNyZWFzZWQgdG9vLiAN Cj4+Pj4gDQo+Pj4+IE9mIGNvdXJzZSBhbGxvY2F0aW9uIHNpemUgaXMgb25seSBhdmFpbGFibGUg aW4gbGltaXRlZCBzaXR1YXRpb25zLCBzbw0KPj4+PiB0aGUgbG9zcyBvZiB0aGF0IGluZm8gaXMg ZmluZTogd2UgaGF2ZSBjb3VudGVkX2J5IGZvciBldmVyeXRoaW5nIGVsc2UuDQo+Pj4gDQo+Pj4g VGhlIHBvaW50IGlzOiBhbGxvY2F0aW9uIHNpemUgc2hvdWxkIHN5bmNlZCB3aXRoIHRoZSB2YWx1 ZSBvZiDigJxjb3VudGVkX2J54oCdLiBMTFZN4oCZcyBSRkMgYWxzbyBoYXZlIHRoZSBzaW1pbGFy IHJlcXVpcmVtZW50Og0KPj4+IGh0dHBzOi8vZGlzY291cnNlLmxsdm0ub3JnL3QvcmZjLWVuZm9y Y2luZy1ib3VuZHMtc2FmZXR5LWluLWMtZmJvdW5kcy1zYWZldHkvNzA4NTQjbWFpbnRhaW5pbmct Y29ycmVjdG5lc3Mtb2YtYm91bmRzLWFubm90YXRpb25zLTE4DQo+PiANCj4+IFJpZ2h0LCBJJ20g c2F5aW5nIGl0IHdvdWxkIGJlIG5pY2UgaWYgX19hbGxvY19zaXplIHdhcyBjaGVja2VkIGFzIHdl bGwsDQo+PiBpbiB0aGUgc2Vuc2UgdGhhdCBpZiBpdCBpcyBhdmFpbGFibGUsIGl0IGtub3dzIHdp dGhvdXQgcXVlc3Rpb24gd2hhdCB0aGUNCj4+IHNpemUgb2YgdGhlIGFsbG9jYXRpb24gaXMuIElm IF9fYWxsb2Nfc2l6ZSBhbmQgX19jb3VudGVkX2J5IGNvbmZsaWN0LA0KPj4gdGhlIHNtYWxsZXIg b2YgdGhlIHR3byBzaG91bGQgYmUgdGhlIHRydXRoLg0KPiANCj4+IA0KPj4gQnV0LCBhcyBJIHNh aWQsIGlmIHRoZXJlIGlzIHNvbWUgbmVlZCB0byBleHBsaWNpdGx5IGlnbm9yZSBfX2FsbG9jX3Np emUNCj4+IHdoZW4gX19jb3VudGVkX2J5IGlzIHByZXNlbnQsIEkgY2FuIGxpdmUgd2l0aCBpdDsg d2UganVzdCBuZWVkIHRvDQo+PiBkb2N1bWVudCBpdC4NCj4+IA0KPj4gSWYgdGhlIFJGQyBhbmQg eW91IGFncmVlIHRoYXQgdGhlIF9fY291bnRlZF9ieSB2YXJpYWJsZSBjYW4gb25seSBldmVyIGJl DQo+PiAocmUpYXNzaWduZWQgYWZ0ZXIgdGhlIGZsZXggYXJyYXkgaGFzIGJlZW4gKHJlKWFsbG9j YXRlZCwgdGhlbiBJIGd1ZXNzDQo+PiB3ZSdsbCBzZWUgaG93IGl0IGdvZXMuIDopIEkgdGhpbmsg bW9zdCBwbGFjZXMgaW4gdGhlIGtlcm5lbCB1c2luZw0KPj4gX19jb3VudGVkX2J5IHdpbGwgYmUg ZmluZSwgYnV0IEkgc3VzcGVjdCB3ZSBtYXkgaGF2ZSBjYXNlcyB3aGVyZSB3ZSBuZWVkDQo+PiB0 byB1cGRhdGUgaXQgbGlrZSBpbiB0aGUgbG9vcCBJIGRlc2NyaWJlZCBhYm92ZS4gSWYgdGhhdCdz IHRydWUsIHdlIGNhbg0KPj4gcmV2aXNpdCB0aGUgcmVxdWlyZW1lbnQgdGhlbi4gOikNCj4gDQo+ IEkgZ3Vlc3MgaWYgd2UgY2FuIGFsd2F5cyBrZWVwICB0aGUgcmVsYXRpb25zaGlwOiAgIF9fYWxs b2Nfc2l6ZSA+PSBfX2NvdW50ZWRfYnkgYWxsIHRoZSB0aW1lLiBTaG91bGQgYmUgZmluZS4NCj4g DQo+IFBsZWFzZSBjaGVjayB3aGV0aGVyIHRoaXMgaXMgZW5vdWdoIGZvciBrZXJuZWwsIEkgd2ls bCBjaGVjayB3aGV0aGVyIHRoaXMgaXMgZG9hYmxlIEZvciBHQ0MuDQo+IA0KPiB0aGFua3MuDQo+ IA0KPiANCj4gUWluZw0KPj4gDQo+PiAtS2Vlcw0KPj4gDQo+PiAtLSANCj4+IEtlZXMgQ29vaw0K DQo=