From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 00B513858D1E for ; Mon, 29 Jan 2024 16:19:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 00B513858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 00B513858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1706545186; cv=pass; b=eOsghI0sYGaxg/cPfKtCkc2oQMwXQYlQY3diKLMiBaIxbrmDW4aVWOdJqyuLz8Z+Bu12C9J9RQqtdhkiY2rdKuywvMrua78UhvDmgb00lHgERvxkTAW6Jd85t9RljsdwlYGCxZRhAe0QfXcQK1Tbr6TgGlPpMKNOGXTOYUXIGaU= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1706545186; c=relaxed/simple; bh=OqkO+kf60ZHqhPiqFpIdOPUmnw4GG7MmqgxBJZJKiqg=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Yv8tfVK9kbYrfgRZj950YejFdeQw4CUkc73vsDIjdjkp72YvgLOP5nd5SEzbxfXSqeE7/HX1JfzIETgwblaT2nT1CUFzxUmEDrs7fvTQzZtuQmktlLVbPSnvc2pWTp72MgvkmZtNk3XRodvSvKqzeGDuRrlBJEp6riXnf6AZPQw= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40TFsexU031125; Mon, 29 Jan 2024 16:19:43 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-11-20; bh=OqkO+kf60ZHqhPiqFpIdOPUmnw4GG7MmqgxBJZJKiqg=; b=hqJe9id087vZCWAyAqagtXAE7DcI9xynxmT/Qdr1qJvmedPkVG0hhIzqdRqNRcqPPWf9 IDtASDJ1hW1SfZdHbRH/FrsUlFU7aTbltFqP7zYMFmbSMsb+6xhn+dlrRTyW+VxRaiTt ZDgrJ1gJKiuSA72dh77lETlytc+0yVMNqZyV+nS9/A1nLPKFFjSlzRtt409hprvE/xOu VAXVHxfCicKz1MsEVtnWEXmYw/ah0G8E0lHF3lSGtkvEDz16pvVKb3NMrkv/a7MFbIfC U+BhVVntyukCPiap2nvcd/tXTa/C8dxjqpYdnAZVIt5EEaIcFf3WjEwKHX77HJWim8Gf pg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vvsvdma9m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 29 Jan 2024 16:19:42 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 40TForZX014683; Mon, 29 Jan 2024 16:19:42 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3vvr9c4380-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 29 Jan 2024 16:19:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oCsafTzUJ1zPYJ0/Oxa7XpjECttJKkCiIinkN1Or9t14qg7ddHVdVpupPIWB4CAsDHNTGuqAj/vX9XQhpnubFpGRKoTLo+njpU+oIMQTfS0jUd3Z22rfHu0EZoiDGuzc+dv/I0s2/pq2lsQISdilG4gYWpWSEL2kvLYXIpDF9HAHBaFVOoAbdLnTIw2Q9ch3rsgPu8+65If18qvCgYS0QhPrMJHiB04PI9k5WTTZtDiVavZvB0Ki6ithoxLbOsQMGbRwbeW001y+wqP2gORhowz3otSSIjdw6NvyUJZxNGNF9lgyefInfAcZ0rdyyu0QxAOdjREljc2LL0znWyFY9Q== 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=OqkO+kf60ZHqhPiqFpIdOPUmnw4GG7MmqgxBJZJKiqg=; b=P7+b6iAmD4JXa+6qd+G8u0psLwT25WI4USn0tX5Kz/uQWp0rTvLhUtMBhIxbQOCgnILEL/p+ODaKl6ineNgk7zuRmivQbjwhc3OO52V8R1eBP+yQqwqM9bcI61LVmegDorXj6PpogPV4BCBkVIAg9O/Wj8jaZvPs2rBMCHywShcblWI5HidM6AfM2sKl3yqR8JsSAmLHu/5iXdjAvsrLidw3Az1jHBAGJsO3KHYydGaIFqrNTY1xwGpCyB36EqFgkh3qwlOOpT2tykSnlYOoJSB+28b53cAdIKCnbr+2+7FUSVG8MHxxgy3YaqE3WR5SE3pYXj04HtH9bSGe1tBo8Q== 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=OqkO+kf60ZHqhPiqFpIdOPUmnw4GG7MmqgxBJZJKiqg=; b=k54SM10tZkeaF3UmhTjECm7Tcdir7xFGU89OMqwBk+hHALsB41SFcEkXoitajiL8J2x9f7E4CA499XP6UQOpCED6Bq9BLReTny2TulB3LKo5RJOZiPGAXKkx84Iv2GhWA83jwmjeGWyR8cOZ0zk9NubgpjeseqXOA9nvjKtIJqQ= Received: from CH3PR10MB7957.namprd10.prod.outlook.com (2603:10b6:610:1bf::19) by SN7PR10MB7031.namprd10.prod.outlook.com (2603:10b6:806:347::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Mon, 29 Jan 2024 16:19:38 +0000 Received: from CH3PR10MB7957.namprd10.prod.outlook.com ([fe80::6234:e7a1:b517:c44]) by CH3PR10MB7957.namprd10.prod.outlook.com ([fe80::6234:e7a1:b517:c44%6]) with mapi id 15.20.7228.029; Mon, 29 Jan 2024 16:19:38 +0000 From: Qing Zhao To: Martin Uecker CC: "josmyers@redhat.com" , Richard Biener , Kees Cook , "jakub@redhat.com" , "siddhesh@gotplt.org" , "isanbard@gmail.com" , "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH v4 0/4]New attribute "counted_by" to annotate bounds for C99 FAM(PR108896) Thread-Topic: [PATCH v4 0/4]New attribute "counted_by" to annotate bounds for C99 FAM(PR108896) Thread-Index: AQHaTlx75DG1HCeLGUCpchPuevMS7bDptGoAgAFEIwCAAMcqAIAAbLqAgALa8QCAAeY5gIAAC3gAgAAID4A= Date: Mon, 29 Jan 2024 16:19:38 +0000 Message-ID: References: <20240124002955.3387096-1-qing.zhao@oracle.com> <202401241624.4DC3D829@keescook> <08c3913ee0e75beb1fdfbce5487418fbd50de9e3.camel@tugraz.at> <848FCA7D-1CBC-435E-8B4A-8136B13CF318@oracle.com> <98f8a862e65dfc1ddd8227266ed41724f9422adb.camel@tugraz.at> <30a9f93477b9f9745f4b12c5c25fa1e5aa9a8daa.camel@tugraz.at> In-Reply-To: <30a9f93477b9f9745f4b12c5c25fa1e5aa9a8daa.camel@tugraz.at> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3731.700.6) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR10MB7957:EE_|SN7PR10MB7031:EE_ x-ms-office365-filtering-correlation-id: dcfa9a3b-2bb7-41d0-2d32-08dc20e6173c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 10XPrE2QTVYmE0Yg29Y5DV7cdDX1jM09YXK0ymlL6r7gzVFbK/uGOGRfcojqTRtrnoz+Iry6NlDjTamE2DMwEnweyELKSboBXtozH0WgGQNSAjOo/VPmb+okwWpHdwSLc94YGpTaPL931nG0g4f3ucIjYMxtYFdIExkYVfoUbM3jDzyDQ8BTGIKrjbM2QRHMeNY7n840jUlOk/4L7A7aJTvA4qJOyiRnzwuTDiXtu9NOZaQoP6r6xPoP7kMh/c6s8mDAwfdurEkFdSo9q6nPZrFVPd/HKubzTS44KEIMxrk9CoHOMNhesXS+gUVh9AAfUyFDZZ9+A8OVa2kFE8KNsCChc63OccIzuaPkwnQg4CnysudHHeg+CXSxw9CphNUKJB/ugbZxGzrKcNx7ocw3ke736brv/agWhs8xe8fL9U8x/NyA/tVEo3lJyos92Ex+1wAvuCEAzs419cgby6DW6tkUe6zEvpaYFZnkd6sd+jxFKU4RjiPozx36wcVesfOkiUIuDCVN5/v4x+Hkbk8WnxcWBOHCSkZ+GyPzNgAO2qHha8SnFSEhmbE/ofZ9d2WtCGXAjPbcyOUr7nOn7FzO/N3K/r/a8tr/jUjQAJb2pV3VKgyoKkpmO/okOSvDxOuZkSK3JBXa4kY6dMXDBq3JPQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7957.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(366004)(376002)(39860400002)(136003)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(66899024)(83380400001)(6512007)(6506007)(53546011)(33656002)(36756003)(86362001)(38070700009)(66946007)(5660300002)(8676002)(44832011)(41300700001)(8936002)(4326008)(30864003)(38100700002)(122000001)(316002)(478600001)(66446008)(66476007)(6916009)(64756008)(76116006)(66556008)(54906003)(6486002)(966005)(71200400001)(2616005)(2906002)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YjEzbmtZTCtjMEM3TkUxVXBHNUJRVC9pNUx6WlpCM3VBMEduQzVMK3FFWjVW?= =?utf-8?B?MXF4RTFXbDVIdThqWFdDSkVBNGxGbk56UGpoMERzK1ZVVml5MGVpdFdsV0s5?= =?utf-8?B?eFY3SFYrendFNzJsblJmT2FtY1JXS09MUnE4WjVSbVRjQk42TmJNN3RZbFhq?= =?utf-8?B?K01GWnc0eEJjVFpxa3U5ZGJUQmNGWHJNazJkczNXMGxTemtzaWJTVk96MnJE?= =?utf-8?B?c21GK0xpU1Jqcy9FMkdMSU1OUnd1aTUreXZTcHUyUVRlUHpSYi9VSHI0cFRl?= =?utf-8?B?cVZBY0RXbmh3NDRONnF3TGNPRHNrZG1QWEI4cFRCR282TzZ4WFdidzR2YnA1?= =?utf-8?B?dWtqckNnV3Rld3JnTU91UUtma1kxSUZ5UWgydnpjSmhmYTZEQjY4TUxZODVW?= =?utf-8?B?eFMxWWdHYVVIMmVyVlJBOFppOTNGWk4zTVVOYWF1Z1RHdXRadG5peVhiV2dC?= =?utf-8?B?dDFXSVJDRUtld1BtcCs0NWF2Qmp1Rk1TRCtvck95dmNoMnBPTFNNN2toL3p4?= =?utf-8?B?SHIyd3k2MTVKREhTWlJGUmdZdHVhWEROcndkR2pPKytHWXNKR2oxL3F2UFVQ?= =?utf-8?B?UE1EaEFTd1VxTUJUM095c3h3T3VTN0ZjcHYyQkZESU1oUUJxVlNoTkU3dXFn?= =?utf-8?B?SE03M2xjTUl4ZjRseWwwc2svL2NFZnltS3FuRmtITUh4bmt0K1hjUHNqejNq?= =?utf-8?B?QkdRZXNGZC9hRS9QN29BVkhoZW1aRU9EZ2F2QjhPWTIwMldxMlRxU0FObnlX?= =?utf-8?B?eGFVOXJieGRLOTlUVjBNWTdKRlpjYW5NSkE3VGtKZTk4cjFYOFFWT08ydUdW?= =?utf-8?B?QmF3MGl1ZXRLMkZPeU0wM0JlaXNSeFgwRHplSk5YUmFrbjl1QTBhWU1PTVM1?= =?utf-8?B?VjJXV2poaVFLSEU1Uko0Q2IrdnlYMDlGeThuUGFTT2tXYXlnWmQ5ZEJsbGtx?= =?utf-8?B?YnhsL2hMd28vNVNpZWdCVUwrQzN0YlhzK1JVL3ZPeDVPNGRPR2M3RC9SbTAv?= =?utf-8?B?SWlhMjF3VDUwS0FIcEtQZGRiVDNuWlBNZTdraFR2bUc5NFpkUXMvc2lndGMv?= =?utf-8?B?eG5FbWsycUNFTXoyNTFpL2tNZVdBcUFwald2ZUtxZWM0Z2tpZlJkQzJoREJZ?= =?utf-8?B?NktXMlk5UzUwMUVnRTV0T0JDTElqcEFQZHVibXRtbEpTa2w3TmsvZ2xkd3J0?= =?utf-8?B?VDdqZURYWmhwakRiRFBWT3lHZHNmTUI3QktSTVFBUXFGZUF5bEtSdzdhdXpr?= =?utf-8?B?R1VWdGRiYzF2d042eVJpQ2lPMWVIVkVKNWpsWWxDNEU0bXFuSHZpbzJ1QW9W?= =?utf-8?B?WmN1MGowc1lRVSs5QVNibUxzZkVkZEQwZmdZS1lZNXFjczhneW1KeGZLR2Jl?= =?utf-8?B?bVpRa0ZoVGlNazdHZ0NlL0lic3BkYzhKaEJFcUVCcUtGT08zZXgxU2JmWElD?= =?utf-8?B?MmRsQ0lESnpQV0ZCTERIeDBPOStveGlCVnl4WE94ZUQ2bXROa3d5N24zRDJN?= =?utf-8?B?SWZjcXhlNThjcDVTR2pZQVhDMHlCU0Y5QmNOM05BbmE1bk9lYy9WamhoWXIw?= =?utf-8?B?T2RhcDhYb3VRZkErWGZneTBPbUVkcXM3aFZoSTVSbGFMNEtyUVY4OHAvem9Y?= =?utf-8?B?NzFZcHFyc0t4TWw1SkVsM2V2Ylh3bkhRUjQxU0VBNXNZS0tFQlg0Y05VMDJn?= =?utf-8?B?Z1J6L2R1UkRxTFk2Nnlob05HdWJkU0t2OWo1OTNINzZ3ZGxWdGRQcjMyc3Rq?= =?utf-8?B?R1VxL01LYTlyUDdVR2tRb2ZON1BQYXBIMHNOMmE3bUNZZUxqRkZVdXk1UkJi?= =?utf-8?B?UFdZOFFCWEpZQmV2U2lobXFrOGpVZUVBM1FsY2NuVUJsdmJtVEVqUlpqN3ZV?= =?utf-8?B?SDhPSzRiL1hoK2NUaHNqWHJiRlFTUjNyR0pselc5a0ZhbnNwVmNncjRxSWpv?= =?utf-8?B?UW5VamRBeUZ5WG5CcEo2NkpkdkFJM1E1MitzMGFFSldLd0ZCNXg2bENFNldt?= =?utf-8?B?bW1lazZIQ2RqZnRQRFR5d3RMY1VMM3o4NnFNaCtuRk9hYlJYSG96UVJ5Tk1p?= =?utf-8?B?UmhTQlR4UmNHY2VWQWdURzdaWjQwSW0rZ01qTVZCeERyWlp6Qi9EVjZkVnIy?= =?utf-8?B?aDJHWWZBSWZXVE8vbWNoS2R4M3c4L3d4RzFJc0EyeDFMVTlKaDNLN3ZsTE00?= =?utf-8?Q?tmSgYZn/J8buSC+/Tnw10Hs=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <95EC454B50539344B43A5DAF0266C28C@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: t3kRmMOEp1yVN6XeK5TeLqvuAvnb33gW44o7H9mv5yownUTrEaWrhTxH8IwECKNcgl3Op1rLFQVROjBSBX79JLoqJRByBOQDyer8TbhLUU4rH48oW4EEO55gWri+n4r4frkMO9hCrIxaHPnM1TtqGTlDSXEARWqC2knH++clsrKPEIRh1X+3j4XhZp4pG5b94t5UtgemnfcWwBp5hQD1+hxi35fcGHDqDWngmzI49bfmZw8me/3ZtBygq5F4bYZDFmqQ77XNUZbbg1fSE1Rilgdt9bKnGfP9xLLT0JalEEpLCrqfy+movegVaQuPFvtjdzPs6a1nBdW+TOHGmdpgwrpZIW3xJxVniKL4PUMAYNnKU1iQnB+a7DuQB4RXQvoWBAGY1zySytTJtxEx8mF3b0mZn06VTvhbUE1SQsO1rvzHdqw0HOJuwepJOBZ7R5WdceJ+WhluYi0GxbqVHlFa7scuwpDr7YpGjg844xt1+/bWk1QuFxk+ALP7kBxRG/ulcivG+QwBK0ulJ/SQ4UerpbggY5vd2B/QZrxeJkwedCWzi4KKxJcwZRkBiOt7Hw34alrXTrFLg37Owz0kBXNObMA3q88sTw06d26HMagNeog= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7957.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcfa9a3b-2bb7-41d0-2d32-08dc20e6173c X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jan 2024 16:19:38.3880 (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: qGOi14HxTxGSKM3ySnGCdfcJ99KOjKB3jZse+efkLX9mCrn6APuXZgD6g1CLX69qpQ6pfrBJwB2286EAuFx2uw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR10MB7031 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-29_10,2024-01-29_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 malwarescore=0 suspectscore=0 phishscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401290120 X-Proofpoint-ORIG-GUID: NLunMtUHHKwoKzaB9HafDP1wD7GnO5tV X-Proofpoint-GUID: NLunMtUHHKwoKzaB9HafDP1wD7GnO5tV X-Spam-Status: No, score=-4.6 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: DQoNCj4gT24gSmFuIDI5LCAyMDI0LCBhdCAxMDo1MCBBTSwgTWFydGluIFVlY2tlciA8dWVja2Vy QHR1Z3Jhei5hdD4gd3JvdGU6DQo+IA0KPiBBbSBNb250YWcsIGRlbSAyOS4wMS4yMDI0IHVtIDE1 OjA5ICswMDAwIHNjaHJpZWIgUWluZyBaaGFvOg0KPj4gVGhhbmsgeW91IQ0KPj4gDQo+PiBKb3Nl cGggYW5kIFJpY2hhcmQsICBjb3VsZCB5b3UgYWxzbyBjb21tZW50IG9uIHRoaXM/DQo+PiANCj4+ PiBPbiBKYW4gMjgsIDIwMjQsIGF0IDU6MDkgQU0sIE1hcnRpbiBVZWNrZXIgPHVlY2tlckB0dWdy YXouYXQ+IHdyb3RlOg0KPj4+IA0KPj4+IEFtIEZyZWl0YWcsIGRlbSAyNi4wMS4yMDI0IHVtIDE0 OjMzICswMDAwIHNjaHJpZWIgUWluZyBaaGFvOg0KPj4+PiANCj4+Pj4+IE9uIEphbiAyNiwgMjAy NCwgYXQgMzowNCBBTSwgTWFydGluIFVlY2tlciA8dWVja2VyQHR1Z3Jhei5hdD4gd3JvdGU6DQo+ Pj4+PiANCj4+Pj4+IA0KPj4+Pj4gSSBoYXZlbid0IGxvb2tlZCBhdCB0aGUgcGF0Y2gsIGJ1dCBp dCBzb3VuZHMgeW91IGdpdmUgdGhlIHJlc3VsdA0KPj4+Pj4gdGhlIHdyb25nIHR5cGUuIFRoZW4g cGF0Y2hpbmcgdXAgYWxsIHVzZSBjYXNlcyBpbnN0ZWFkIG9mIHRoZQ0KPj4+Pj4gdHlwZSBzZWVt cyB3cm9uZy4NCj4+Pj4gDQo+Pj4+IFllcywgdGhpcyBpcyBmb3IgcmVzb2x2aW5nIGEgdmVyeSBl YXJseSBnaW1wbGlmaWNhdGlvbiBpc3N1ZSBhcyBJIHJlcG9ydGVkIGxhc3QgTm92Og0KPj4+PiBo dHRwczovL2djYy5nbnUub3JnL3BpcGVybWFpbC9nY2MtcGF0Y2hlcy8yMDIzLU5vdmVtYmVyLzYz ODc5My5odG1sDQo+Pj4+IA0KPj4+PiBTaW5jZSBuby1vbmUgcmVzcG9uZGVkIGF0IHRoYXQgdGlt ZSwgSSBmaXhlZCB0aGUgaXNzdWUgYnkgcmVwbGFjaW5nIHRoZSBBUlJBWV9SRUYNCj4+Pj4gV2l0 aCBhIHBvaW50ZXIgaW5kaXJlY3Rpb246DQo+Pj4+IGh0dHBzOi8vZ2NjLmdudS5vcmcvcGlwZXJt YWlsL2djYy1wYXRjaGVzLzIwMjMtRGVjZW1iZXIvNjM5NjA1Lmh0bWwNCj4+Pj4gDQo+Pj4+IFRo ZSByZWFzb24gZm9yIHN1Y2ggY2hhbmdlIGlzOiAgcmV0dXJuIGEgZmxleGlibGUgYXJyYXkgbWVt YmVyIFRZUEUgaXMgbm90IGFsbG93ZWQNCj4+Pj4gYnkgQyBsYW5ndWFnZSAob3VyIGdpbXBsaWZp Y2F0aW9uIGZvbGxvd3MgdGhpcyBydWxlKSwgc28sIHdlIGhhdmUgdG8gcmV0dXJuIGEgcG9pbnRl ciBUWVBFIGluc3RlYWQuIA0KPj4+PiANCj4+Pj4gKioqKioqVGhlIG5ldyBpbnRlcm5hbCBmdW5j dGlvbg0KPj4+PiANCj4+Pj4gLkFDQ0VTU19XSVRIX1NJWkUgKFJFRl9UT19PQkosIFJFRl9UT19T SVpFLCBDTEFTU19PRl9TSVpFLCBTSVpFX09GX1NJWkUsIEFDQ0VTU19NT0RFLCBJTkRFWCkNCj4+ Pj4gDQo+Pj4+IElOVEVSTkFMX0ZOIChBQ0NFU1NfV0lUSF9TSVpFLCBFQ0ZfTEVBRiB8IEVDRl9O T1RIUk9XLCBOVUxMKQ0KPj4+PiANCj4+Pj4gd2hpY2ggcmV0dXJucyB0aGUgIlJFRl9UT19PQkoi IHNhbWUgYXMgdGhlIDFzdCBhcmd1bWVudDsNCj4+Pj4gDQo+Pj4+IEJvdGggdGhlIHJldHVybiB0 eXBlIGFuZCB0aGUgdHlwZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgb2YgdGhpcyBmdW5jdGlvbiBo YXZlIGJlZW4gY29udmVydGVkIGZyb20gDQo+Pj4+IHRoZSBpbmNvbXBsZXRlIGFycmF5IHR5cGUg dG8gdGhlIGNvcnJlc3BvbmRpbmcgcG9pbnRlciB0eXBlLg0KPj4+PiANCj4+Pj4gQXMgYSByZXN1 bHQsIHRoZSBvcmlnaW5hbCBBUlJBWV9SRUYgd2FzIGNvbnZlcnRlZCB0byBhbiBJTkRJUkVDVF9S RUYsIHRoZSBvcmlnaW5hbCBJTkRFWCBvZiB0aGUgQVJSQVlfUkVGIHdhcyBsb3N0DQo+Pj4+IHdo ZW4gY29udmVydGluZyBmcm9tIEFSUkFZX1JFRiB0byBJTkRJUkVDVF9SRUYsIGluIG9yZGVyIHRv IGtlZXAgdGhlIElOREVYIGZvciBib3VuZCBzYW5pdGl6ZXIgaW5zdHJ1bWVudGF0aW9uLCBJIGFk ZGVkDQo+Pj4+IFRoZSA2dGggYXJndW1lbnQg4oCcSU5ERVjigJ0uDQo+Pj4+IA0KPj4+PiBXaGF0 4oCZcyB5b3VyIGNvbW1lbnQgYW5kIHN1Z2dlc3Rpb24gb24gdGhpcyBzb2x1dGlvbj8NCj4+PiAN Cj4+PiBJIGFtIG5vdCBlbnRpcmVseSBzdXJlIGJ1dCBjaGFuZ2luZyB0eXBlcyBpbiB0aGUgRkUg c2VlbXMNCj4+PiBwcm9ibGVtYXRpYyBiZWNhdXNlIHRoaXMgYnJlYWtzIGxhbmd1YWdlIHNlbWFu dGljcy4gQW5kDQo+Pj4gdGhlbiBhZGRpbmcgc3BlY2lhbCBjb2RlIGV2ZXJ5d2hlcmUgdG8gdHJl YXQgaXQgc3BlY2lhbGx5DQo+Pj4gaW4gdGhlIEZFIGRvZXMgbm90IHNlZW0gYSBnb29kIHdheSBm b3J3YXJkLg0KPj4+IA0KPj4+IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHJldHVybmluZyBh biBpbmNvbXBsZXRlIGFycmF5IA0KPj4+IHR5cGUgaXMgbm90IGFsbG93ZWQgYW5kIHRoZW4gZmFp bHMgZHVyaW5nIGdpbXBsaWZpY2F0aW9uLg0KPj4gDQo+PiBZZXMsIHRoaXMgaXMgdGhlIHByb2Js ZW0gaW4gZ2ltcGxpZmljYXRpb24uIA0KPj4gDQo+Pj4gU28gSSB3b3VsZCBzdWdnZXN0IHRvIG1h a2UgaXQgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgDQo+Pj4gaW5jb21wbGV0ZSBhcnJheSAoYW5k IG5vdCB0aGUgZWxlbWVudCB0eXBlKQ0KPj4gDQo+PiANCj4+IGZvciB0aGUgZm9sbG93aW5nOg0K Pj4gDQo+PiBzdHJ1Y3QgYW5ub3RhdGVkIHsNCj4+ICB1bnNpZ25lZCBpbnQgc2l6ZTsNCj4+ICBp bnQgYXJyYXlbXSBfX2F0dHJpYnV0ZV9fKChjb3VudGVkX2J5IChzaXplKSkpOw0KPj4gfTsNCj4+ IA0KPj4gIHN0cnVjdCBhbm5vdGF0ZWQgKiBwID0g4oCmLg0KPj4gIHAtPmFycmF5WzldID0gMDsN Cj4+IA0KPj4gVGhlIElMIGZvciB0aGUgYWJvdmUgYXJyYXkgcmVmZXJlbmNlIHAtPmFycmF5Wzld IGlzOg0KPj4gDQo+PiAxLiBJZiB0aGUgcmV0dXJuIHR5cGUgaXMgdGhlIG9yaWdpbmFsIGluY29t cGxldGUgYXJyYXkgdHlwZSwgDQo+PiANCj4+IC5BQ0NFU1NfV0lUSF9TSVpFICgoaW50ICopICZw LT5hcnJheSwgJnAtPnNpemUsIDEsIDMyLCAtMSlbOV0gPSAwOw0KPj4gDQo+PiAodGhpcyB0cmln Z2VyZWQgdGhlIGdpbXBsaWZpY2F0aW9uIGZhaWx1cmUgc2luY2UgdGhlIHJldHVybiB0eXBlIGNh bm5vdCBiZSBhIGNvbXBsZXRlIHR5cGUpLg0KPj4gDQo+PiAyLiBXaGVuIHRoZSByZXR1cm4gdHlw ZSBpcyBjaGFuZ2VkIHRvIGEgcG9pbnRlciB0byB0aGUgZWxlbWVudCB0eXBlIG9mIHRoZSBpbmNv bXBsZXRlIGFycmF5LCAodGhlIGN1cnJlbnQgcGF0Y2gpDQo+PiBUaGVuIHRoZSBvcmlnaW5hbCBh cnJheSByZWZlcmVuY2UgbmF0dXJhbGx5IGJlY29tZXMgYW4gaW5kaXJlY3QgcmVmZXJlbmNlIHRo cm91Z2ggdGhlIHBvaW50ZXINCj4+IA0KPj4gKiguQUNDRVNTX1dJVEhfU0laRSAoKGludCAqKSAm cC0+YXJyYXksICZwLT5zaXplLCAxLCAzMiwgLTEsIDkpICsgMzYpID0gMDsNCj4+IA0KPj4gU2lu Y2UgdGhlIG9yaWdpbmFsIGFycmF5IHJlZmVyZW5jZSBiZWNvbWVzIGFuIGluZGlyZWN0IHJlZmVy ZW5jZSB0aHJvdWdoIHRoZSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGFycmF5LCB0aGUgSU5ERVgg aW5mbyANCj4+IGlzIG1peGVkIGludG8gdGhlIE9GRlNFVCBvZiB0aGUgaW5kaXJlY3QgcmVmZXJl bmNlIGFuZCBsb3N0LCBzbywgSSBhZGRlZCB0aGUgNnRoIGFyZ3VtZW50IHRvIHRoZSByb3V0aW5l IC5BQ0NFU1NfV0lUSF9TSVpFDQo+PiB0byByZWNvcmQgdGhlIElOREVYLiANCj4+IA0KPj4gMy4g V2l0aCB5b3VyIHN1Z2dlc3Rpb24sIHRoZSByZXR1cm4gdHlwZSBpcyBjaGFuZ2VkIHRvIGEgcG9p bnRlciB0byB0aGUgaW5jb21wbGV0ZSBhcnJheSwgDQo+PiBJIGp1c3QgdHJpZWQgdGhpcyB0byBj aGFuZ2UgdGhlIHJlc3VsdCB0eXBlIDoNCj4+IA0KPj4gDQo+PiAtLS0gYS9nY2MvYy9jLXR5cGVj ay5jYw0KPj4gKysrIGIvZ2NjL2MvYy10eXBlY2suY2MNCj4+IEBAIC0yNjE5LDcgKzI2MTksNyBA QCBidWlsZF9hY2Nlc3Nfd2l0aF9zaXplX2Zvcl9jb3VudGVkX2J5IChsb2NhdGlvbl90IGxvYywg dHJlZSByZWYsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUg Y291bnRlZF9ieV90eXBlKQ0KPj4gew0KPj4gICBnY2NfYXNzZXJ0IChjX2ZsZXhpYmxlX2FycmF5 X21lbWJlcl90eXBlX3AgKFRSRUVfVFlQRSAocmVmKSkpOw0KPj4gLSAgdHJlZSByZXN1bHRfdHlw ZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAoVFJFRV9UWVBFIChUUkVFX1RZUEUgKHJlZikpKTsNCj4+ ICsgIHRyZWUgcmVzdWx0X3R5cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKFRSRUVfVFlQRSAocmVm KSk7DQo+PiANCj4+IFRoZW4sIEkgZ290IHRoZSBmb2xsb3dpbmcgRkUgZXJyb3JzOg0KPj4gDQo+ PiB0ZXN0LmM6MTA6MTE6IGVycm9yOiBpbnZhbGlkIHVzZSBvZiBmbGV4aWJsZSBhcnJheSBtZW1i ZXINCj4+ICAgMTAgfCAgIHAtPmFycmF5WzldID0gMDsNCj4+IA0KPj4gVGhlIHJlYXNvbiBmb3Ig dGhlIGVycm9yIGlzOiB3aGVuIHRoZSBvcmlnaW5hbCBhcnJheV9yZWYgYmVjb21lcyBhbiBpbmRp cmVjdF9yZWYgdGhyb3VnaCB0aGUgcG9pbnRlciB0byB0aGUgaW5jb21wbGV0ZSBhcnJheSwNCj4+ IER1cmluZyB0aGUgY29tcHV0YXRpb24gb2YgdGhlIE9GRlNFVCB0byB0aGUgcG9pbnRlciwgdGhl IFRZUEVfU0laRV9VTklUICh0eXBlKSBpcyBpbnZhbGlkIHNpbmNlIHRoZSB0eXBlIGlzIGFuIGlu Y29tcGxldGUgYXJyYXkuIA0KPj4gQXMgYSByZXN1bHQsIHRoZSBPRkZTRVQgY2Fubm90IGNvbXB1 dGVkIGZvciB0aGUgaW5kaXJlY3RfcmVmLg0KPj4gDQo+PiBMb29rcyBsaWtlIGV2ZW4gbW9yZSBp c3N1ZXMgd2l0aCB0aGlzIGFwcHJvYWNoLg0KPiANCj4gWWVzLCBidXQgb25seSBiZWNhdXNlIHRo ZSBmb2xsb3dpbmcgaXMgbWlzc2luZzoNCj4gDQo+PiANCj4+IA0KPj4+IGJ1dCB0aGVuIHdyYXAN Cj4+PiBpdCB3aXRoIGFuIGluZGlyZWN0aW9uIHdoZW4gaW5zZXJ0aW5nIHRoaXMgY29kZSBpbiB0 aGUgRkUNCj4+PiBzbyB0aGF0IHRoZSBmdWxsIHJlcGxhY2VtZW50IGhhcyB0aGUgY29ycmVjdCB0 eXBlIGFnYWluDQo+Pj4gKG9mIHRoZSBpbmNvbXBsZXRlIGFycmF5KS4NCj4+IA0KPj4gSSBkb27i gJl0IHF1aXRlIHVuZGVyc3RhbmQgdGhlIGFib3ZlLCBjb3VsZCB5b3UgcGxlYXNlIGV4cGxhaW4g dGhpcyBpbiBtb3JlIGRldGFpbHM/IChJZiBwb3NzaWJsZSwgY291bGQgeW91IHBsZWFzZSB1c2Ug dGhlIGFib3ZlIHNtYWxsIGV4YW1wbGU/KQ0KPj4gdGhhbmtzLg0KPiANCj4gWW91IHdvdWxkIG5l ZWQgdG8gYWRkIGFuIGluZGlyZWN0aW9uOg0KPiANCj4gKCooLkFDQ0VTU19XSVRIX1NJWkUgKChp bnQgKikgJnAtPmFycmF5LCAmcC0+c2l6ZSwgMSwgMzIsIC0xKSkpWzldID0gMDsNCj4gDQo+IGlm IC5BQ0NFU1NfV0lUSF9TSVpFIGhhcyB0eXBlICAgIFQgKCopW10sIGkuZS4gcG9pbnRlciB0byBp bmNvbXBsZXRlDQo+IGFycmF5IG9mIHR5cGUgVCwgdGhlbiAoKiguQUNDRVNTX1dJVEhfU0laRSAo Li4uKSkpIGhhcyB0eXBlIFRbXSwgaS5lLg0KPiBpbmNvbXBsZXRlIGFycmF5IG9mIHR5cGUuICAg DQo+IA0KPiBBbmQgeW91IHNob3VsZG4ndCBldmVuIGNvbnNpZGVyIGFycmF5IGRlcmVmZW5jaW5n IHBhcnQgYXQgYWxsLA0KPiBidXQgcmVwbGFjZSB0aGUgcC0+YXJyYXkgd2hlbiB0aGUgY29tcG9u ZW50IHJlZiBpcyBjb25zdHJ1Y3RlZC4gDQoNClRoYW5rcywgSSBzZWUgbm93Lg0KDQogSSBqdXN0 IHVwZGF0ZWQgdGhlIHJvdXRpbmUg4oCcYnVpbGRfYWNjZXNzX3dpdGhfc2l6ZV9mb3JfY291bnRl ZF9ieeKAnSBhcyBmb2xsb3dpbmc6DQotLS0gYS9nY2MvYy9jLXR5cGVjay5jYw0KKysrIGIvZ2Nj L2MvYy10eXBlY2suY2MNCkBAIC0yNjE5LDcgKzI2MTksNyBAQCBidWlsZF9hY2Nlc3Nfd2l0aF9z aXplX2Zvcl9jb3VudGVkX2J5IChsb2NhdGlvbl90IGxvYywgdHJlZSByZWYsDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIGNvdW50ZWRfYnlfdHlwZSkNCiB7DQog ICBnY2NfYXNzZXJ0IChjX2ZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3AgKFRSRUVfVFlQRSAo cmVmKSkpOw0KLSAgdHJlZSByZXN1bHRfdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAoVFJFRV9U WVBFIChUUkVFX1RZUEUgKHJlZikpKTsNCisgIHRyZWUgcmVzdWx0X3R5cGUgPSBidWlsZF9wb2lu dGVyX3R5cGUgKFRSRUVfVFlQRSAocmVmKSk7DQogICB1bnNpZ25lZCBpbnQgY291bnRlZF9ieV9w cmVjaXNpb24gPSBUWVBFX1BSRUNJU0lPTiAoY291bnRlZF9ieV90eXBlKTsNCiAgICAgdHJlZSBj YWxsDQpAQCAtMjYzMiw2ICsyNjMyLDcgQEAgYnVpbGRfYWNjZXNzX3dpdGhfc2l6ZV9mb3JfY291 bnRlZF9ieSAobG9jYXRpb25fdCBsb2MsIHRyZWUgcmVmLA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZWRfYnlfcHJlY2lzaW9uKSwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVf bm9kZSwgLTEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2ludF9j c3QgKGludGVnZXJfdHlwZV9ub2RlLCAtMSkpOw0KKyAgY2FsbCA9IGJ1aWxkMSAoSU5ESVJFQ1Rf UkVGLCBUUkVFX1RZUEUgKHJlZiksIGNhbGwpOw0KICAgU0VUX0VYUFJfTE9DQVRJT04gKGNhbGws IGxvYyk7DQogICByZXR1cm4gY2FsbDsNCiB9DQoNClRoaXMgd29ya3MgZm9yIHRoZSBzbWFsbCB0 ZXN0aW5nIGNhc2UsIHRoZSBnZW5lcmF0ZWQgSVIgaXM6DQoNCiAgKCouQUNDRVNTX1dJVEhfU0la RSAoKGludCAqKSAmcC0+YXJyYXksICZwLT5zaXplLCAxLCAzMiwgLTEsIC0xKSlbOV0gPSAwOw0K DQpJIHdpbGwgZG8gbW9yZSB0ZXN0aW5ncyBhbmQgYWRqdXN0IG15IHBhdGNoIG9uIHRoaXMgY2hh bmdlLg0KDQpUaGFua3MgYSBsb3QgZm9yIHlvdXIgaGVscC4NCg0KUWluZw0KDQo+IA0KPiBNYXJ0 aW4NCj4gDQo+IA0KPiANCj4+IA0KPj4+IA0KPj4+IA0KPj4+IEFsdGVybmF0aXZlbHksIG9uZSBj b3VsZCBhbGxvdyB0aGlzIGR1cmluZyBnaW1wbGlmaWNhdGlvbg0KPj4+IG9yIGFkZCBzb21lIGNv bnZlcnNpb24uDQo+PiANCj4+IEFsbG93aW5nIHRoaXMgaW4gZ2ltcGxpZmljYXRpb24gbWlnaHQg dHJpZ2dlciBzb21lIG90aGVyIGlzc3Vlcy4gIEkgZ3Vlc3MgdGhhdCBhZGRpbmcgY29udmVyc2lv biANCj4+IGluIHRoZSBlbmQgb2YgdGhlIEZFIG9yIGluIHRoZSBiZWdpbm5pbmcgb2YgZ2ltcGxp ZmljYXRpb24gbWlnaHQgYmUgYmV0dGVyLg0KPj4gDQo+PiBpLmUsICBpbiBGRSwgc3RpbGwga2Vl cCB0aGUgb3JpZ2luYWwgaW5jb21wbGV0ZSBhcnJheSB0eXBlIGFzIHRoZSByZXR1cm4gdHlwZSBm b3IgdGhlIHJvdXRpbmUgLkFDQ0VTU19XSVRIX1NJWkUsIGkuZQ0KPj4gDQo+PiAuQUNDRVNTX1dJ VEhfU0laRSAoKGludCAqKSAmcC0+YXJyYXksICZwLT5zaXplLCAxLCAzMiwgLTEpWzldID0gMDsN Cj4+IA0KPj4gQnV0IGFkZCBhIGNvbnZlcnNpb24gZnJvbSB0aGUgYWJvdmUgYXJyYXlfcmVmIHRv IGFuIGluZGlyZWN0X3JlZiBpbiB0aGUgZW5kIG9mIEZFIG9yIGluIHRoZSBiZWdpbm5pbmcgb2Yg Z2ltcGxpZmljYXRpb246DQo+PiANCj4+ICooLkFDQ0VTU19XSVRIX1NJWkUgKChpbnQgKikgJnAt PmFycmF5LCAmcC0+c2l6ZSwgMSwgMzIsIC0xKSArIDM2KSA9IDA7DQo+PiANCj4+IFdpdGggdGhp cyBhcHByb2FjaCwgIGR1cmluZyBGRSwgdGhlIG9yaWdpbmFsIEFSUkFZIFRZUEUgYW5kIHRoZSBJ TkRFWCBjYW4gYmUga2VwdCwgdGhlIGFycmF5IGJvdW5kIHNhbml0aXplciBpbnN0cnVtZW50YXRp b24NCj4+IFdpbGwgYmUgbXVjaCBlYXNpZXIgdGhhbiBteSBjdXJyZW50IGFwcHJvYWNoLiANCj4+ IA0KPj4gSXMgdGhpcyBhcHByb2FjaCByZWFzb25hYmxlPw0KPj4gDQo+PiBJZiBzbywgd2hlcmUg aXMgYmV0dGVyIHRvIGFkZCB0aGlzIGNvbnZlcnNpb24sIGluIHRoZSBlbmQgb2YgRkUgb3IgaW4g dGhlIGJlZ2lubmluZyBvZiBnaW1wbGlmaWNhdGlvbj8NCj4+IA0KPj4gVGhhbmtzLg0KPj4gDQo+ PiBRaW5nDQo+PiANCj4+IA0KPj4+IA0KPj4+IE1hcnRpbg0KPj4+IA0KPj4+IA0KPj4+PiANCj4+ Pj4gVGhhbmtzLg0KPj4+PiANCj4+Pj4gUWluZw0KPj4+PiANCj4+Pj4gDQo+Pj4+PiANCj4+Pj4+ IE1hcnRpbg0KPj4+Pj4gDQo+Pj4+PiANCj4+Pj4+IEFtIERvbm5lcnN0YWcsIGRlbSAyNS4wMS4y MDI0IHVtIDIwOjExICswMDAwIHNjaHJpZWIgUWluZyBaaGFvOg0KPj4+Pj4+IFRoYW5rcyBhIGxv dCBmb3IgdGhlIHRlc3RpbmcuDQo+Pj4+Pj4gDQo+Pj4+Pj4gWWVzLCBJIGNhbiByZXBlYXQgdGhl IGlzc3VlIHdpdGggdGhlIGZvbGxvd2luZyBzbWFsbCBleGFtcGxlOg0KPj4+Pj4+IA0KPj4+Pj4+ ICNpbmNsdWRlIDxzdGRsaWIuaD4NCj4+Pj4+PiAjaW5jbHVkZSA8c3RkZGVmLmg+DQo+Pj4+Pj4g I2luY2x1ZGUgPHN0ZGlvLmg+DQo+Pj4+Pj4gDQo+Pj4+Pj4gI2RlZmluZSBNQVgoYSwgYikgICgo YSkgPiAoYikgPyAoYSkgOiAgKGIpKQ0KPj4+Pj4+IA0KPj4+Pj4+IHN0cnVjdCB1bnRyYWNrZWQg ew0KPj4+Pj4+ICAgICBpbnQgc2l6ZTsNCj4+Pj4+PiAgICAgaW50IGFycmF5W10gX19hdHRyaWJ1 dGVfXygoY291bnRlZF9ieSAoc2l6ZSkpKTsNCj4+Pj4+PiB9ICphOw0KPj4+Pj4+IHN0cnVjdCB1 bnRyYWNrZWQgKiBhbGxvY19idWYgKGludCBpbmRleCkNCj4+Pj4+PiB7DQo+Pj4+Pj4gc3RydWN0 IHVudHJhY2tlZCAqcDsNCj4+Pj4+PiBwID0gKHN0cnVjdCB1bnRyYWNrZWQgKikgbWFsbG9jIChN QVggKHNpemVvZiAoc3RydWN0IHVudHJhY2tlZCksDQo+Pj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvZmZzZXRvZiAoc3RydWN0IHVudHJhY2tlZCwgYXJyYXlbMF0p DQo+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChpbmRleCkg KiBzaXplb2YgKGludCkpKSk7DQo+Pj4+Pj4gcC0+c2l6ZSA9IGluZGV4Ow0KPj4+Pj4+IHJldHVy biBwOw0KPj4+Pj4+IH0NCj4+Pj4+PiANCj4+Pj4+PiBpbnQgbWFpbigpDQo+Pj4+Pj4gew0KPj4+ Pj4+IGEgPSBhbGxvY19idWYoMTApOw0KPj4+Pj4+ICAgcHJpbnRmICgic2FtZV90eXBlIGlzICVk XG4iLA0KPj4+Pj4+IChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZiAoYS0+YXJy YXkpLCB0eXBlb2YgKCYoYS0+YXJyYXkpWzBdKSkpKTsNCj4+Pj4+PiByZXR1cm4gMDsNCj4+Pj4+ PiB9DQo+Pj4+Pj4gDQo+Pj4+Pj4gDQo+Pj4+Pj4gL2hvbWUvb3BjL0luc3RhbGwvbGF0ZXN0LWQv YmluL2djYyAtTzIgYnRjcC5jDQo+Pj4+Pj4gc2FtZV90eXBlIGlzIDENCj4+Pj4+PiANCj4+Pj4+ PiBMb29rcyBsaWtlIHRoYXQgdGhlIOKAnHR5cGVvZuKAnSBvcGVyYXRvciBuZWVkIHRvIGJlIGhh bmRsZWQgc3BlY2lhbGx5IGluIEMgRkUNCj4+Pj4+PiBmb3IgdGhlIG5ldyBpbnRlcm5hbCBmdW5j dGlvbiAuQUNDRVNTX1dJVEhfU0laRS4gDQo+Pj4+Pj4gDQo+Pj4+Pj4gKEkgaGF2ZSBzcGVjaWFs bHkgaGFuZGxlIHRoZSBvcGVyYXRvciDigJxvZmZzZXRvZuKAnSBpbiBDIEZFIGFscmVhZHkpLg0K Pj4+Pj4+IA0KPj4+Pj4+IFdpbGwgZml4IHRoaXMgaXNzdWUuDQo+Pj4+Pj4gDQo+Pj4+Pj4gVGhh bmtzLg0KPj4+Pj4+IA0KPj4+Pj4+IFFpbmcNCj4+Pj4+PiANCj4+Pj4+Pj4gT24gSmFuIDI0LCAy MDI0LCBhdCA3OjUxIFBNLCBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4gd3JvdGU6 DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBPbiBXZWQsIEphbiAyNCwgMjAyNCBhdCAxMjoyOTo1MUFNICsw MDAwLCBRaW5nIFpoYW8gd3JvdGU6DQo+Pj4+Pj4+PiBUaGlzIGlzIHRoZSA0dGggdmVyc2lvbiBv ZiB0aGUgcGF0Y2guDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBUaGFua3MgdmVyeSBtdWNoIGZvciB0aGlz IQ0KPj4+Pj4+PiANCj4+Pj4+Pj4gSSB0cmlwcGVkIG92ZXIgYW4gdW5leHBlY3RlZCBiZWhhdmlv cmFsIGNoYW5nZSB0aGF0IHRoZSBMaW51eCBrZXJuZWwNCj4+Pj4+Pj4gZGVwZW5kcyBvbjoNCj4+ Pj4+Pj4gDQo+Pj4+Pj4+IF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoKSBubyBsb25nZXIg dHJlYXRzIGFuIGFycmF5IG1hcmtlZCB3aXRoDQo+Pj4+Pj4+IGNvdW50ZWRfYnkgYXMgZGlmZmVy ZW50IGZyb20gdGhhdCBhcnJheSdzIGRlY2F5ZWQgcG9pbnRlci4gU3BlY2lmaWNhbGx5LA0KPj4+ Pj4+PiB0aGUga2VybmVsIHVzZXMgdGhlc2UgbWFjcm9zOg0KPj4+Pj4+PiANCj4+Pj4+Pj4gDQo+ Pj4+Pj4+IC8qDQo+Pj4+Pj4+ICogRm9yY2UgYSBjb21waWxhdGlvbiBlcnJvciBpZiBjb25kaXRp b24gaXMgdHJ1ZSwgYnV0IGFsc28gcHJvZHVjZSBhDQo+Pj4+Pj4+ICogcmVzdWx0IChvZiB2YWx1 ZSAwIGFuZCB0eXBlIGludCksIHNvIHRoZSBleHByZXNzaW9uIGNhbiBiZSB1c2VkDQo+Pj4+Pj4+ ICogZS5nLiBpbiBhIHN0cnVjdHVyZSBpbml0aWFsaXplciAob3Igd2hlcmUtZXZlciBlbHNlIGNv bW1hIGV4cHJlc3Npb25zDQo+Pj4+Pj4+ICogYXJlbid0IHBlcm1pdHRlZCkuDQo+Pj4+Pj4+ICov DQo+Pj4+Pj4+ICNkZWZpbmUgQlVJTERfQlVHX09OX1pFUk8oZSkgKChpbnQpKHNpemVvZihzdHJ1 Y3QgeyBpbnQ6KC0hIShlKSk7IH0pKSkNCj4+Pj4+Pj4gDQo+Pj4+Pj4+ICNkZWZpbmUgX19zYW1l X3R5cGUoYSwgYikgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoYSksIHR5cGVv ZihiKSkNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IC8qICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjog YSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovDQo+Pj4+Pj4+ICNkZWZpbmUgX19tdXN0 X2JlX2FycmF5KGEpICAgQlVJTERfQlVHX09OX1pFUk8oX19zYW1lX3R5cGUoKGEpLCAmKGEpWzBd KSkNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBUaGlzIGdldHMgdXNlZCBpbiB2YXJpb3Vz IHBsYWNlcyB0byBtYWtlIHN1cmUgd2UncmUgZGVhbGluZyB3aXRoIGFuDQo+Pj4+Pj4+IGFycmF5 IGZvciBhIG1hY3JvOg0KPj4+Pj4+PiANCj4+Pj4+Pj4gI2RlZmluZSBBUlJBWV9TSVpFKGFycikg KHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJheShhcnIpKQ0K Pj4+Pj4+PiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFNvIHRoaXMgYnVpbGRzOg0KPj4+Pj4+PiANCj4+ Pj4+Pj4gc3RydWN0IHVudHJhY2tlZCB7DQo+Pj4+Pj4+ICAgICBpbnQgc2l6ZTsNCj4+Pj4+Pj4g ICAgIGludCBhcnJheVtdOw0KPj4+Pj4+PiB9ICphOw0KPj4+Pj4+PiANCj4+Pj4+Pj4gX19tdXN0 X2JlX2FycmF5KGEtPmFycmF5KQ0KPj4+Pj4+PiA9PiAwIChhcyBleHBlY3RlZCkNCj4+Pj4+Pj4g X19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoYS0+YXJyYXkpLCB0eXBlb2YoJihh LT5hcnJheSlbMF0pKQ0KPj4+Pj4+PiA9PiAwIChhcyBleHBlY3RlZCwgYXJyYXkgdnMgZGVjYXll ZCBhcnJheSBwb2ludGVyKQ0KPj4+Pj4+PiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEJ1dCBpZiBjb3Vu dGVkX2J5IGlzIGFkZGVkLCB3ZSBnZXQgYSBidWlsZCBmYWlsdXJlOg0KPj4+Pj4+PiANCj4+Pj4+ Pj4gc3RydWN0IHRyYWNrZWQgew0KPj4+Pj4+PiAgICAgaW50IHNpemU7DQo+Pj4+Pj4+ICAgICBp bnQgYXJyYXlbXSBfX2NvdW50ZWRfYnkoc2l6ZSk7DQo+Pj4+Pj4+IH0gKmI7DQo+Pj4+Pj4+IA0K Pj4+Pj4+PiBfX211c3RfYmVfYXJyYXkoYi0+YXJyYXkpDQo+Pj4+Pj4+ID0+IGJ1aWxkIGZhaWx1 cmUgKG5vdCBleHBlY3RlZCkNCj4+Pj4+Pj4gX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoYi0+YXJyYXkpLCB0eXBlb2YoJihiLT5hcnJheSlbMF0pKQ0KPj4+Pj4+PiA9PiAxIChu b3QgZXhwZWN0ZWQsIGJvdGggcG9pbnRlcnM/KQ0KPj4+Pj4+PiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+ IA0KPj4+Pj4+PiANCj4+Pj4+Pj4gLS0gDQo+Pj4+Pj4+IEtlZXMgQ29vaw0KPj4gDQo+PiANCj4g DQo+IC0tIA0KPiBVbml2Li1Qcm9mLiBEci4gcmVyLiBuYXQuIE1hcnRpbiBVZWNrZXINCj4gR3Jh eiBVbml2ZXJzaXR5IG9mIFRlY2hub2xvZ3kNCj4gSW5zdGl0dXRlIG9mIEJpb21lZGljYWwgSW1h Z2luZw0KDQoNCg==