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 5E0853858D32 for ; Fri, 10 Mar 2023 13:48:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5E0853858D32 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 (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32AAstQc005709; Fri, 10 Mar 2023 13:48:54 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-2022-7-12; bh=3WCwEvzDOGISKOFryaYTXMjOypatp/r+5R+10PsEHdI=; b=2wjv8TNf8Nr6V7BbhsLJYNMa5M3qr6ZkihnzjdG295UBLUdYbPYCh+BFBiolXcJJRXUN vKWUxs0jfTHRRLNb19bhHzioxiXgPK73n+GN6BCgpcjvTsBdM5/TNlRYW/z55xk/2PlO 9+GM4cMq26yuoUxjoFBqeXuZCTDDZLk5KvJNUU4uTKWEd+QTb3/DhDWk+5kel9e5Umq/ hJMAEEdyDg7dmAKEOmYf82wFBzcqnjy6iC5hyQcWt8QvC5Yb5/JE5fR9n6hYR5bHQmKk 1IG9WfXs4xbX4OJ2xeB5er/n02JXfpAdPp0ftfmw+GTjsYVNGKJ45QBUTmZfnJBpJM1v HQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3p416254v9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 10 Mar 2023 13:48:53 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32ADOLZI015531; Fri, 10 Mar 2023 13:48:52 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3p6feq7rn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 10 Mar 2023 13:48:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S9Iystmv5uE+R51EakVeoLuX53iQV69tKLZBCOAVs0poQsfpFMNYxHRSupDqih4cqUb5AKH+uLMbf7jfXEMhTPYq0Ag4H73Sz7scLRO1bDx2VsXdrIvWkVJT3qTMBT4NBPf5KNwFbfBEcxenlvN9HVGIXgoAHOvfcAAHzaxjhptplyOE+ox6hg0N9cYBS2alurryeI9Y6DaCAk7LHmGqbNgOB1NW/yoxWiuNhkISH0DZDf2BxGOArDCbFgAd6DsCP/eebYv1o0O2nZS8AzyzIhYpcVnGtWi15rXUIy15I2F+IUFPhNtSqxgjAfgUBfWh2vyh8RDUNoGFv2x2y2XTKA== 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=3WCwEvzDOGISKOFryaYTXMjOypatp/r+5R+10PsEHdI=; b=ZIW2Rj92KU+Fl03llHVZsOX2cILESM+A6g40FUv3U2SjiXHsrW2i2a4nE5l8VfuTO8+7WCUPQmahLabjohGeuqqMF52I/z3HCtyX2mft0cnozursoqNrbSCXDOZ3c5FFKHRDHgj1YrFo+eSrOTDtPidW7MmopkwXoTO6bMa3adnXEKF6Fj2wyKjpVzQZPijDtx2HpduVgmuL6VziYpOb7hZrt21sF9A8wUDwgXfz9KYFyotuBUc0jTvcfB9BD2PlFK6MVWHOj9ncN0ENRgPGJuTBTBBtYG+k4rOmI4GL7D++lBogodHw3DW9odOyIPK267nshQm3MPMpNt7Xlwtjbg== 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=3WCwEvzDOGISKOFryaYTXMjOypatp/r+5R+10PsEHdI=; b=mhxHKr0d7hYRxhOR0UJSrfymDqR1QW0S/sK+3sQP+44Q91mwNZ/0aIt/h+3+9ZGceLT5/fuOXw/vpxPJQdPC9mzOkAKbzscCSHEA2XdGzrwR3H0UBYAnbRv3kPXcF/3Mki0LkmLlQvg74nEZFKQTwYjKFkimxTNkBQJamtRUUzI= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by DS7PR10MB4832.namprd10.prod.outlook.com (2603:10b6:5:3a6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Fri, 10 Mar 2023 13:48:48 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::7030:ed2e:20d0:cd5b]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::7030:ed2e:20d0:cd5b%9]) with mapi id 15.20.6178.019; Fri, 10 Mar 2023 13:48:48 +0000 From: Qing Zhao To: Richard Biener CC: "joseph@codesourcery.com" , "siddhesh@gotplt.org" , "keescook@chromium.org" , "gcc-patches@gcc.gnu.org" Subject: Re: [v4][PATCH 1/2] Handle component_ref to a structre/union field including C99 FAM [PR101832] Thread-Topic: [v4][PATCH 1/2] Handle component_ref to a structre/union field including C99 FAM [PR101832] Thread-Index: AQHZSH697Ixa1oBBJk+QPQNZSvEShq7ycf2AgABAfwCAAQeYAIAAYwIA Date: Fri, 10 Mar 2023 13:48:48 +0000 Message-ID: <64CDC3E9-D2DB-4BF5-85AC-3BFD5E90F631@oracle.com> References: <20230224183505.4112295-1-qing.zhao@oracle.com> <20230224183505.4112295-2-qing.zhao@oracle.com> <24706421-0026-49D6-ADB6-04F8C70DA1BA@oracle.com> In-Reply-To: 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.2) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|DS7PR10MB4832:EE_ x-ms-office365-filtering-correlation-id: b353eb41-c42b-41dd-d13a-08db216e2ce2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: sEcee8+yF1+7Ql+7h7sixEdo36SwOtZjsDDIPH9n/z6yRqIW2D/KQdXP5U5Tw5BZTsTO1KtjWBvG4ywBZLgllCippCWaX9fLlpDgcBPV2l4wyLa2zIvp8HMovLHdF5eqeD9qeRb1NGr9BsxyUXyliK+hrRKsZh3Kct2Rvl2g/2johjvAAfzliwpzM6ckNjKQzkomXj4PpTz2KK5TmuV4MzjSkNfKpNV10Wr4asUo8lZaE4g1wbaVKQybzH9emRZi3gtgozi/DL7dGfOcdduBYQUtEu1H1/DTNGM8JEiblcSVIohKnra82G9Okit8db5z5IhQugHd710UbEm7GXEFQkYEBcRwGT1+BLmVABbgAsLZLi3ZSfIO9CU2YblVcu++IVLbIeQl2rz73luEIVoeSH9aVb7WOK/XQIe5qOnEs13ZWEXeluU+8LcQiWpNnEvpnzow4lavCqCyaIPSZGDLEYq0BbQuOjIDBSHhQ+dSpkbS6BwEJ60ZiXKX3vkiIvRwomI/J2RbMdFzwpO8IxRYybVQzsCDeoppGjvjDNvTr1IRD9B20VFZ1vLPNq9uyg2qtphbWOGdTrz7jx5+D367DKBAI/xuQnODtzCBUd0D3w53zmLrTv9W41mtGIfdvGyBliMYxDZ5JR3yaFboBsPzRtbSv6YhsYxkWutHTEXzqy0PgWHlNWawFUYPCGLZkVYtx+d1Gg8mDp2rt8WRuECcJWSQHAvz5Uv2yYHADkYNfaI= 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:(13230025)(396003)(366004)(376002)(39860400002)(346002)(136003)(451199018)(36756003)(30864003)(8936002)(6512007)(5660300002)(66476007)(6506007)(53546011)(38100700002)(83380400001)(186003)(2616005)(122000001)(33656002)(316002)(86362001)(66446008)(41300700001)(91956017)(66946007)(54906003)(8676002)(64756008)(6916009)(4326008)(76116006)(6486002)(66556008)(478600001)(71200400001)(38070700005)(84970400001)(2906002)(44832011)(45980500001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SkZSZnJUcms4eXlFMkZsTUo2M3g1QlhoQVJLK1RLYlBxYjRySk1DNVVRYXBY?= =?utf-8?B?L0NGOWFjTFR4MVAvWUFUZ2EzZVVCaU1Rcmw0cXM4OTdHREdzY1MwMDdORXlJ?= =?utf-8?B?d0pPZVZVazI5SkJ2QWYrdWtxeDVIRmxhWmdoM1ZHQzM3OUdqZXdZckxCa0ZN?= =?utf-8?B?cGNrdURyMGVLVHpkWW9JMy9tVTJLSDNSYTlGQ0lTQjZiZWtrOVZxbzFuMks4?= =?utf-8?B?MmlpTStKUmN0SG9NWTF4MWJTWmlvUjdzR1B3QVduRE5xNnRjQ3RXK2hpcy9q?= =?utf-8?B?eGNrL1RKR21PWjVBWTU3algyNG4wSVBZOXV4NThOdmExTWxiQUxKcStGUDVh?= =?utf-8?B?dEFnZjY0KzludXNMSHBkVmRTMkRBZDdKT1BiakxUUEFkK2srb3E0MG93T3N5?= =?utf-8?B?WmZhcStLbnBNTEZNOHdoY3RrSVVjNjZ4YTFnSWRub1l6RGdZbEsxU29LM21r?= =?utf-8?B?YUMwUHRsN1JHYVdjWm83QjM4UXgyY0drMTJLSkUwaHF4S0pUcXc1NmMzSTBL?= =?utf-8?B?dUFUYzd2Z0wweThTVkNtLzVCVG1aMjhjQTBaWXZ6TjQ3aDRPQ2NSWFhRaDNr?= =?utf-8?B?bUVvWU1zUnRyb0tJSStiUUlOSlhqbXArVTFOck9Dc25KajlQcVk0RHdpc1hj?= =?utf-8?B?V1BGVXJESWJOdGJVTUlhQnM2bzVOUXcyTU11TUx5QU9JL1QzbGVWUlkxSGtU?= =?utf-8?B?VEhveVZFdjNKdi9CSng1dEl5SXV3aFZGUEc2WVV1VUh4NHBUakY1QXlHV3cw?= =?utf-8?B?aXViLy9xTjJKMjZVY2tOL2F5TVc4YkNCeC83WlhNeStiYUE0bDArenRGYk1E?= =?utf-8?B?VC9XR01sQ3dPeTRFS1Q4VFZJTWIyRlV6bE5aRnNmUzZ3WVpMTjMySW9YSFo2?= =?utf-8?B?Q1VoY0kwcjBaVjhGUjR0WTdXczNIaGFvenJnckEyZG5oRVc2RHhSbXgzTEVN?= =?utf-8?B?UStRUG12eER3OW4yNmo0dmFjSjNYdDEwV1NWUHFYVE5iM1hrQlV3MUE0eUVr?= =?utf-8?B?cWpnQkxQQjNaZSt5ZGNxVHhVaERINkFOMGNqdmxGeGYyeEhwRXMveVlkZXpa?= =?utf-8?B?TExIdzZTN0JJQlVIQTZ6R090cmZQZlZvaGl1bFBCQ01yQmYrdk85czh6b1ZU?= =?utf-8?B?M2xZKytlSXZMTWw2L3NyUWRsMElPdFJRUDZIUkczcGxXRmVYUXBQdHJpZ0hs?= =?utf-8?B?MSs1eUlrd0ZsZXNPWWFpVUlFRmNscXVnMCt2MUhUM2J3U05USXFoWW5WbVNt?= =?utf-8?B?aTVjdjdOc0JLSlhpYXJlQWNqUjcwWndYUm9RNkp0SUNmeGk2dm85N3R4ak1V?= =?utf-8?B?ZTZqcldNN3JPZCtnTTVZKzA0SXlHcmp0L0E2Tng3akpUSUcyMjJTMGxZd2lN?= =?utf-8?B?Ukkya0J1T08xQmU1bllCWU4vMnF6T2pxN3ArenhjajNCSHREVVRWeHV3Q2FX?= =?utf-8?B?MWQ4bmMzU3JIQnVGM1JjbjJJZVVNN3VTb1BGTFRCUVRpa2dCS3pyN2ZnZlY3?= =?utf-8?B?eVovdWFTR2N2V2JBRHdwVXRVT2xNK1RPemZhSWtaYVRWMWVaWnFQeFZ6NVVo?= =?utf-8?B?OHMrMjVmbTlHUEEvcjQrOEdsQ00vUmxId2RWOU1Ua1FaZHFacXhRb3RoRDlu?= =?utf-8?B?ZitXWGtYdkptaG1RcEJwYTRiczJsamNudEs5Y1U0RWtjSkFnSEJxNXJKaFZy?= =?utf-8?B?cjRHdzdPUjEwMm1LeDNXV25mRjJ2T0tOWTZKQXB1R2I0RFRTYzRmNFhvbzhI?= =?utf-8?B?ZGNMS2s2WitsYUU1ZjhGbnhLMWI3YVV1aDV3QmtVRHFiU0cvZ0dNU2cxYzRu?= =?utf-8?B?S2Y4VlBNcGlyVGhuVEFKUzF2VjNZVThhbXhHL3BIWlVzMmRZVE14ek9PMGF5?= =?utf-8?B?bkI5VHEwTWJiL3o2bCtQQmdKMnJOT3JRYXdseUxmMFM2YTVpSzRCUGpacjVY?= =?utf-8?B?Mjkwb1RRWGRBU0JUc1VHdllnMWFlZ3N3QVNUdjQ5eXErTGFrUU9zS1d4WkpI?= =?utf-8?B?UDhva1ZGMVo1b01BaFlVcFhDMCtZamtaNUlHQTd5c1ovYnBORTUvT0hWc0M5?= =?utf-8?B?VERrV1E2aVJIMzc0WGo1QnNRWTVUS2Y1SjJOcGsrOW1PWFdJdEFpbDB0MUpx?= =?utf-8?B?V2hNeE1EOW5rMmdhNjh5dk4ra3FMMURXQ0s2RjVhaE1zVnNSanVTbUpCNTBK?= =?utf-8?Q?0bykFf/XPCyYafBBGAukcxA=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <6A894FE426C5C049909B5D58C1E3EB91@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: g6G+md/bNCmEiyfnKYo/AxP5a7YKkYGeGrGU8S6NHaF5yUgFXcABsSofTbLzS/C5KyhdVNxOvrw85nZ9r9IpdVQ2jpuBBgKAQjOqIy8q8QfzWlZHHdj5PCXLacXtnGeWULGWq6mQVdQtxre1QAgElflfn7X3l+fN+HSJOZLgfUBsqtvlfZbVgPKYhp/4fc+ddqvhtDBlrCRwsVy9+6Rq8E+7JD9nQ/Ll757rc3Valn9cc6qJFmTkCPukJNWCt+Gx3pxT+BLk+gKNThJ2EP11RofUII0KRV1NPl75qdzXKwOBl29r1xWuSSAwIHFGTJldAS/v8wRFVPq0lPIriiLDroT0WnebflklNNqO7nRxhgxO8ZJPCM+P3knh9HJirzBUj+XGPfH81ry1ih2gB1EdsxKSiUe223+l0XkooZH/rUggsdulx5oBDnGIYwgYzVSba3yll6VU3MA9fvdhvCKIoD3vlAsSTLSNNGet6psU+DPkDrBvNM/r5qdsWarVK5d5A7ROiyyU3AzyTrWf5cbhbfo+By5yQXxENxn3gtEk3gqgfeCMNjZUDijh+RC96VZJKOd7QcdKeSrkEpxFzctLW3cbEVSiBBybAgPp51ZkxvY38TtI5f8yryLbw5m6UwoPlCCOaSDe3KVYjwgz9udPyNmnk4EzqJgGEhX0hwbwWAfAxKTHgwQTyizwR8QAQj9tTAiFn8vx6XXQ296cME0Kn1d6W6Qj2EfDD9cNWSDe33y986Ye5I0Kz9PHQf7ZZHrf0xW5XmHSUElbedSjOC85aFa9IxZiT84cOuISBHMyL6krZz5Xr6nAAGvTUarOOS1QnX2yp5HZmmVXZAObdI0f54wakAeOgIbqeJBISc6eTD7M2OyjeJjicH3+HWTTHQO9 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: b353eb41-c42b-41dd-d13a-08db216e2ce2 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Mar 2023 13:48:48.5613 (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: O1kehlcl2yfM0c0piIcc8hr4Ma7EG6DGA3nOWoEfpzLgSIx5M1IjxkaUsviZNx1+/wGmsxb4/16UHEInvooxbw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB4832 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-10_06,2023-03-09_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303100111 X-Proofpoint-GUID: pGc4H5Sk8VucY9XkBcV9ZuFlXQ3IW0NN X-Proofpoint-ORIG-GUID: pGc4H5Sk8VucY9XkBcV9ZuFlXQ3IW0NN X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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: DQoNCj4gT24gTWFyIDEwLCAyMDIzLCBhdCAyOjU0IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50 aGVyQHN1c2UuZGU+IHdyb3RlOg0KPiANCj4gT24gVGh1LCA5IE1hciAyMDIzLCBRaW5nIFpoYW8g d3JvdGU6DQo+IA0KPj4gDQo+PiANCj4+PiBPbiBNYXIgOSwgMjAyMywgYXQgNzoyMCBBTSwgUmlj aGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+PiANCj4+PiBPbiBGcmks IDI0IEZlYiAyMDIzLCBRaW5nIFpoYW8gd3JvdGU6DQo+Pj4gDQo+Pj4+IEdDQyBleHRlbnNpb24g YWNjZXB0cyB0aGUgY2FzZSB3aGVuIGEgc3RydWN0IHdpdGggYSBDOTkgZmxleGlibGUgYXJyYXkg bWVtYmVyDQo+Pj4+IGlzIGVtYmVkZGVkIGludG8gYW5vdGhlciBzdHJ1Y3Qgb3IgdW5pb24gKHBv c3NpYmx5IHJlY3Vyc2l2ZWx5KS4NCj4+Pj4gX19idWlsdGluX29iamVjdF9zaXplIHNob3VsZCB0 cmVhdCBzdWNoIHN0cnVjdCBhcyBmbGV4aWJsZSBzaXplLg0KPj4+PiANCj4+Pj4gZ2NjL2MvQ2hh bmdlTG9nOg0KPj4+PiANCj4+Pj4gCVBSIHRyZWUtb3B0aW1pemF0aW9uLzEwMTgzMg0KPj4+PiAJ KiBjLWRlY2wuY2MgKGZpbmlzaF9zdHJ1Y3QpOiBTZXQgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSBm b3INCj4+Pj4gCXN0cnVjdC91bmlvbiB0eXBlLg0KPj4+IA0KPj4+IEkgY2FuJ3QgcmVhbGx5IGNv bW1lbnQgb24gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgcGFydCBidXQgc2luY2UNCj4+PiBvbmx5 IHRoZSBDIGZyb250ZW5kIHdpbGwgZXZlciBzZXQgdGhpcyBhbmQgeW91IGFyZSB1c2luZyBpdCBm cm9tDQo+Pj4gYWRkcl9vYmplY3Rfc2l6ZSB3aGljaCBpcyBhbHNvIHVzZWQgZm9yIG90aGVyIEMg ZmFtaWx5IGxhbmd1YWdlcw0KPj4+IChhdCBsZWFzdCksIEkgd29uZGVyIGlmIHlvdSBjYW4gcmVh bGx5IHRlc3QNCj4+PiANCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVRZUEVfSU5D TFVERV9GTEVYQVJSQVkgKFRSRUVfVFlQRSAodikpKQ0KPj4+IA0KPj4+IHRoZXJlLg0KPj4gDQo+ PiBZb3UgbWVhbiBmb3IgQysrIGFuZCBhbHNvIG90aGVyIEMgZmFtaWx5IGxhbmd1YWdlcyAob3Ro ZXIgdGhhbiBDKSwgdGhlIGFib3ZlIGJpdCBjYW5ub3QgYmUgc2V0Pw0KPj4gWWVzLCB0aGF04oCZ cyB0cnVlLiBUaGUgYml0IGlzIG9ubHkgc2V0IGZvciBDLiBTbyBpcyB0aGUgYml0IERFQ0xfTk9U X0ZMRVhBUlJBWSwgd2hpY2ggaXMgb25seSBzZXQgZm9yIEMgdG9vLiANCj4+IFNvLCBJIGFtIHdv bmRlcmluZyB3aGV0aGVyIHRoZSBiaXQgREVDTF9OT1RfRkxFWEFSUkFZIHNob3VsZCBiZSBhbHNv IHNldCBpbiBtaWRkbGUgZW5kPyBPciB3ZSBjYW4gc2V0IERFQ0xfTk9UX0ZMRVhBUlJBWSBpbiBD KysgRkUgdG9vPyBBbmQgdGhlbiB3ZSBjYW4gc2V0IFRZUEVfSU5DTFVERV9GTEVYQVJSQVkgYWxz byBpbiBDKysgRkU/DQo+PiBXaGF04oCZcyB5b3VyIHN1Z2dlc3Rpb24/DQo+PiANCj4+IChJIHBl cnNvbmFsbHkgZmVlbCB0aGF0IERFQ0xfTk9UX0ZMRVhBUlJBWSBhbmQgVFlQRV9JTkNMVURFX0ZM RVhBUlJBWSBzaG91bGQgYmUgc2V0IGluIHRoZSBzYW1lIHBsYWNlcykuDQo+IA0KPiBJIHdhcyB3 b25kZXJpbmcgaWYgdGhlIGFib3ZlIHRlc3QgZXJyb3JzIG9uIHRoZSBjb25zZXJ2YXRpdmUgc2lk ZQ0KPiBjb3JyZWN0bHkgLSBpdCB3aWxsIG5vdywgZm9yIGFsbCBidXQgQywgY3V0IG9mZiBzb21l IHRoaW5nIHdoZXJlIGl0DQo+IGRpZG4ndCBiZWZvcmU/DQoNCkFzIGxvbmcgYXMgdGhlIGRlZmF1 bHQgdmFsdWUgb2YgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSByZWZsZWN0cyB0aGUgY29ycmVjdCBj b25zZXJ2YXRpdmUgIGJlaGF2aW9yLCB0aGVuIHRoZSB0ZXN0aW5nIHNob3VsZCBiZSBjb3JyZWN0 LCByaWdodD8NCg0KVGhlIGRlZmF1bHQgdmFsdWUgb2YgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSBp cyAwLCBpLmUsIEZBTFNFLCBtZWFucyB0aGF0IHRoZSBUWVBFIGRvZXMgbm90IGluY2x1ZGUgYSBm bGV4IGFycmF5IGJ5IGRlZmF1bHQsIHRoaXMgaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE9ubHkg d2hlbiB0aGUgVFlQRSBkb2VzIGluY2x1ZGUgYSBmbGV4aWFycmF5LCBpdCB3aWxsIGJlIHNldCB0 byBUUlVFLiBTbywgSSB0aGluayBpdOKAmXMgY29ycmVjdC4NCg0KVGhpcyBpcyBhIGRpZmZlcmVu dCBzaXR1YXRpb24gZm9yIERFQ0xfTk9UX0ZMRVhBUlJBWSwgYnkgZGVmYXVsdCwgdGhlIGNvbXBp bGVyIHdpbGwgdHJlYXQgQUxMIHRyYWlsaW5nIGFycmF5cyBhcyBGTUEsIHNvIGluIG9yZGVyIHRv IGtlZXAgdGhlIGNvcnJlY3QgY29uc2VydmF0aXZlIGJlaGF2aW9yLCB3ZSBzaG91bGQga2VlcCB0 aGUgZGVmYXVsdCB2YWx1ZSBmb3IgREVDTF9OT1RfRkxFWEFSUkFZIGFzIGl04oCZcyBhIEZNQSwg aS5lLCBERUNMX05PVF9GTEVYQVJSQVkgYmVpbmcgRkFMU0UsIGJ5IGRlZmF1bHQuIE9ubHkgd2hl biB0aGUgYXJyYXkgaXMgTk9UIGEgRk1BLCB3ZSBzZXQgaXQgdG8gdHJ1ZS4gDQoNClNvLCB0aGUg ZGVmYXVsdCB2YWx1ZSBmb3IgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSBpcyBjb3JyZWN0LiANCj4g DQo+Pj4gDQo+Pj4gT3JpZ2luYWxseSBJIHdhcyBzdWdnZXN0aW5nIHRvIHNldCB0aGlzIGZsYWcg aW4gc3Rvci1sYXlvdXQuY2MNCj4+PiB3aGljaCBldmVudHVhbGx5IGFsbCBsYW5ndWFnZXMgZnVu bmVsIHRoZWlyIHR5cGVzIHRocm91Z2ggYW5kDQo+Pj4gaWYgdGhlcmUncyBsYW5ndWFnZSBzcGVj aWZpYyBoYW5kbGluZyB1c2UgYSBsYW5naG9vayAod2l0aCB0aGUNCj4+PiBkZWZhdWx0IGltcGxl bWVudGF0aW9uIHByZXNlcnZpbmcgdGhlIHN0YXR1cyBxdW8pLg0KPj4gDQo+PiBJZiB3ZSBkZWNp ZGUgdG8gc2V0IHRoZSBiaXRzIGluIHN0b3ItbGF5b3V0LmNjLCB3aGVyZSBpcyB0aGUgYmVzdCBw bGFjZSB0byBkbyBpdD8gSSBjaGVja2VkIHRoZSBzdGFyLWxheW91dC5jYyBjb2RlLCBsb29rcyBs aWtlIOKAnGxheW91dF90eXBl4oCdIG1pZ2h0IGJlIHRoZSBwbGFjZSB3aGVyZSB3ZSBjYW4gc2V0 IHRoZXNlIGJpdHMgZm9yIFJFQ09SRF9UWVBFLCBVTklPTl9UWVBFPyANCj4gDQo+IFllcywgaXQg d291bGQgYmUgbGF5b3V0X3R5cGUuDQo+IA0KPj4+IA0KPj4+IFNvbWUgbW9yZSBjb21tZW50cyBi ZWxvdyAuLi4NCj4+PiANCj4+Pj4gZ2NjL2NwL0NoYW5nZUxvZzoNCj4+Pj4gDQo+Pj4+IAlQUiB0 cmVlLW9wdGltaXphdGlvbi8xMDE4MzINCj4+Pj4gCSogbW9kdWxlLmNjICh0cmVlc19vdXQ6OmNv cmVfYm9vbHMpOiBTdHJlYW0gb3V0IG5ldyBiaXQNCj4+Pj4gCXR5cGVfaW5jbHVkZV9mbGV4YXJy YXkuDQo+Pj4+IAkodHJlZXNfaW46OmNvcmVfYm9vbHMpOiBTdHJlYW0gaW4gbmV3IGJpdCB0eXBl X2luY2x1ZGVfZmxleGFycmF5Lg0KPj4+PiANCj4+Pj4gZ2NjL0NoYW5nZUxvZzoNCj4+Pj4gDQo+ Pj4+IAlQUiB0cmVlLW9wdGltaXphdGlvbi8xMDE4MzINCj4+Pj4gCSogcHJpbnQtdHJlZS5jYyAo cHJpbnRfbm9kZSk6IFByaW50IG5ldyBiaXQgdHlwZV9pbmNsdWRlX2ZsZXhhcnJheS4NCj4+Pj4g CSogdHJlZS1jb3JlLmggKHN0cnVjdCB0cmVlX3R5cGVfY29tbW9uKTogTmV3IGJpdA0KPj4+PiAJ dHlwZV9pbmNsdWRlX2ZsZXhhcnJheS4NCj4+Pj4gCSogdHJlZS1vYmplY3Qtc2l6ZS5jYyAoYWRk cl9vYmplY3Rfc2l6ZSk6IEhhbmRsZSBzdHJ1Y3R1cmUvdW5pb24gdHlwZQ0KPj4+PiAJd2hlbiBp dCBoYXMgZmxleGlibGUgc2l6ZS4NCj4+Pj4gCSogdHJlZS1zdHJlYW1lci1pbi5jYyAodW5wYWNr X3RzX3R5cGVfY29tbW9uX3ZhbHVlX2ZpZWxkcyk6IFN0cmVhbQ0KPj4+PiAJaW4gbmV3IGJpdCB0 eXBlX2luY2x1ZGVfZmxleGFycmF5Lg0KPj4+PiAJKiB0cmVlLXN0cmVhbWVyLW91dC5jYyAocGFj a190c190eXBlX2NvbW1vbl92YWx1ZV9maWVsZHMpOiBTdHJlYW0NCj4+Pj4gCW91dCBuZXcgYml0 IHR5cGVfaW5jbHVkZV9mbGV4YXJyYXkuDQo+Pj4+IAkqIHRyZWUuaCAoVFlQRV9JTkNMVURFX0ZM RVhBUlJBWSk6IE5ldyBtYWNybw0KPj4+PiAJVFlQRV9JTkNMVURFX0ZMRVhBUlJBWS4NCj4+Pj4g DQo+Pj4+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPj4+PiANCj4+Pj4gCVBSIHRyZWUtb3B0 aW1pemF0aW9uLzEwMTgzMg0KPj4+PiAJKiBnY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEw MTgzMi5jOiBOZXcgdGVzdC4NCj4+Pj4gLS0tDQo+Pj4+IGdjYy9jL2MtZGVjbC5jYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArKw0KPj4+PiBnY2MvY3AvbW9kdWxlLmNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPj4+PiBnY2MvcHJpbnQtdHJlZS5j YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKw0KPj4+PiAuLi4vZ2NjLmRnL2J1 aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYyAgICAgfCAxMzQgKysrKysrKysrKysrKysrKysr DQo+Pj4+IGdjYy90cmVlLWNvcmUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NCArLQ0KPj4+PiBnY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYyAgICAgICAgICAgICAgICAgICAgICAg fCAgNzkgKysrKysrKy0tLS0NCj4+Pj4gZ2NjL3RyZWUtc3RyZWFtZXItaW4uY2MgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsNCj4+Pj4gZ2NjL3RyZWUtc3RyZWFtZXItb3V0LmNjICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsNCj4+Pj4gZ2NjL3RyZWUuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA2ICsNCj4+Pj4gOSBmaWxlcyBjaGFuZ2VkLCAyMTUgaW5z ZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pDQo+Pj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy5kZy9idWlsdGluLW9iamVjdC1zaXplLXByMTAxODMyLmMNCj4+Pj4gDQo+ Pj4+IGRpZmYgLS1naXQgYS9nY2MvYy9jLWRlY2wuY2MgYi9nY2MvYy9jLWRlY2wuY2MNCj4+Pj4g aW5kZXggMDgwNzhlYWRlYjguLmY1ODlhMmY1MTkyIDEwMDY0NA0KPj4+PiAtLS0gYS9nY2MvYy9j LWRlY2wuY2MNCj4+Pj4gKysrIGIvZ2NjL2MvYy1kZWNsLmNjDQo+Pj4+IEBAIC05Mjg0LDYgKzky ODQsMTggQEAgZmluaXNoX3N0cnVjdCAobG9jYXRpb25fdCBsb2MsIHRyZWUgdCwgdHJlZSBmaWVs ZGxpc3QsIHRyZWUgYXR0cmlidXRlcywNCj4+Pj4gICAgICAvKiBTZXQgREVDTF9OT1RfRkxFWEFS UkFZIGZsYWcgZm9yIEZJRUxEX0RFQ0wgeC4gICovDQo+Pj4+ICAgICAgREVDTF9OT1RfRkxFWEFS UkFZICh4KSA9ICFpc19mbGV4aWJsZV9hcnJheV9tZW1iZXJfcCAoaXNfbGFzdF9maWVsZCwgeCk7 DQo+Pj4+IA0KPj4+PiArICAgICAgLyogU2V0IFRZUEVfSU5DTFVERV9GTEVYQVJSQVkgZm9yIHRo ZSBjb250ZXh0IG9mIHgsIHQNCj4+Pj4gKyAgICAgICAqIHdoZW4geCBpcyBhbiBhcnJheS4gICov DQo+Pj4+ICsgICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHgpKSA9PSBBUlJBWV9UWVBF KQ0KPj4+PiArCVRZUEVfSU5DTFVERV9GTEVYQVJSQVkgKHQpID0gZmxleGlibGVfYXJyYXlfbWVt YmVyX3R5cGVfcCAoVFJFRV9UWVBFICh4KSkgOw0KPj4+PiArICAgICAgLyogUmVjdXJzaXZlbHkg c2V0IFRZUEVfSU5DTFVERV9GTEVYQVJSQVkgZm9yIHRoZSBjb250ZXh0IG9mIHgsIHQNCj4+Pj4g Kwkgd2hlbiB4IGlzIHRoZSBsYXN0IGZpZWxkLiAgKi8NCj4+Pj4gKyAgICAgIGVsc2UgaWYgKChU UkVFX0NPREUgKFRSRUVfVFlQRSAoeCkpID09IFJFQ09SRF9UWVBFDQo+Pj4+ICsJCXx8IFRSRUVf Q09ERSAoVFJFRV9UWVBFICh4KSkgPT0gVU5JT05fVFlQRSkNCj4+Pj4gKwkgICAgICAgJiYgVFlQ RV9JTkNMVURFX0ZMRVhBUlJBWSAoVFJFRV9UWVBFICh4KSkNCj4+Pj4gKwkgICAgICAgJiYgaXNf bGFzdF9maWVsZCkNCj4+Pj4gKwlUWVBFX0lOQ0xVREVfRkxFWEFSUkFZICh0KSA9IHRydWU7DQo+ Pj4+ICsNCj4+Pj4gICAgICBpZiAoREVDTF9OQU1FICh4KQ0KPj4+PiAJICB8fCBSRUNPUkRfT1Jf VU5JT05fVFlQRV9QIChUUkVFX1RZUEUgKHgpKSkNCj4+Pj4gCXNhd19uYW1lZF9maWVsZCA9IHRy dWU7DQo+Pj4+IGRpZmYgLS1naXQgYS9nY2MvY3AvbW9kdWxlLmNjIGIvZ2NjL2NwL21vZHVsZS5j Yw0KPj4+PiBpbmRleCBhYzJmZTY2YjA4MC4uYzc1MDM2MWI3MDQgMTAwNjQ0DQo+Pj4+IC0tLSBh L2djYy9jcC9tb2R1bGUuY2MNCj4+Pj4gKysrIGIvZ2NjL2NwL21vZHVsZS5jYw0KPj4+PiBAQCAt NTM3MSw2ICs1MzcxLDcgQEAgdHJlZXNfb3V0Ojpjb3JlX2Jvb2xzICh0cmVlIHQpDQo+Pj4+ICAg ICAgV0IgKHQtPnR5cGVfY29tbW9uLmxhbmdfZmxhZ181KTsNCj4+Pj4gICAgICBXQiAodC0+dHlw ZV9jb21tb24ubGFuZ19mbGFnXzYpOw0KPj4+PiAgICAgIFdCICh0LT50eXBlX2NvbW1vbi50eXBl bGVzc19zdG9yYWdlKTsNCj4+Pj4gKyAgICAgIFdCICh0LT50eXBlX2NvbW1vbi50eXBlX2luY2x1 ZGVfZmxleGFycmF5KTsNCj4+Pj4gICAgfQ0KPj4+PiANCj4+Pj4gIGlmIChDT0RFX0NPTlRBSU5T X1NUUlVDVCAoY29kZSwgVFNfREVDTF9DT01NT04pKQ0KPj4+PiBAQCAtNTU1MSw2ICs1NTUyLDcg QEAgdHJlZXNfaW46OmNvcmVfYm9vbHMgKHRyZWUgdCkNCj4+Pj4gICAgICBSQiAodC0+dHlwZV9j b21tb24ubGFuZ19mbGFnXzUpOw0KPj4+PiAgICAgIFJCICh0LT50eXBlX2NvbW1vbi5sYW5nX2Zs YWdfNik7DQo+Pj4+ICAgICAgUkIgKHQtPnR5cGVfY29tbW9uLnR5cGVsZXNzX3N0b3JhZ2UpOw0K Pj4+PiArICAgICAgUkIgKHQtPnR5cGVfY29tbW9uLnR5cGVfaW5jbHVkZV9mbGV4YXJyYXkpOw0K Pj4+PiAgICB9DQo+Pj4+IA0KPj4+PiAgaWYgKENPREVfQ09OVEFJTlNfU1RSVUNUIChjb2RlLCBU U19ERUNMX0NPTU1PTikpDQo+Pj4+IGRpZmYgLS1naXQgYS9nY2MvcHJpbnQtdHJlZS5jYyBiL2dj Yy9wcmludC10cmVlLmNjDQo+Pj4+IGluZGV4IDFmM2FmY2JiYzg2Li5lZmFjZGI3Njg2ZiAxMDA2 NDQNCj4+Pj4gLS0tIGEvZ2NjL3ByaW50LXRyZWUuY2MNCj4+Pj4gKysrIGIvZ2NjL3ByaW50LXRy ZWUuY2MNCj4+Pj4gQEAgLTYzMSw2ICs2MzEsMTEgQEAgcHJpbnRfbm9kZSAoRklMRSAqZmlsZSwg Y29uc3QgY2hhciAqcHJlZml4LCB0cmVlIG5vZGUsIGludCBpbmRlbnQsDQo+Pj4+IAkgICYmIFRZ UEVfQ1hYX09EUl9QIChub2RlKSkNCj4+Pj4gCWZwdXRzICgiIGN4eC1vZHItcCIsIGZpbGUpOw0K Pj4+PiANCj4+Pj4gKyAgICAgIGlmICgoY29kZSA9PSBSRUNPUkRfVFlQRQ0KPj4+PiArCSAgIHx8 IGNvZGUgPT0gVU5JT05fVFlQRSkNCj4+Pj4gKwkgICYmIFRZUEVfSU5DTFVERV9GTEVYQVJSQVkg KG5vZGUpKQ0KPj4+PiArCWZwdXRzICgiIGluY2x1ZGUtZmxleGFycmF5IiwgZmlsZSk7DQo+Pj4+ ICsNCj4+Pj4gICAgICAvKiBUaGUgdHJhbnNwYXJlbnQtdW5pb24gZmxhZyBpcyB1c2VkIGZvciBk aWZmZXJlbnQgdGhpbmdzIGluDQo+Pj4+IAkgZGlmZmVyZW50IG5vZGVzLiAgKi8NCj4+Pj4gICAg ICBpZiAoKGNvZGUgPT0gVU5JT05fVFlQRSB8fCBjb2RlID09IFJFQ09SRF9UWVBFKQ0KPj4+PiBk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEw MTgzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgz Mi5jDQo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwLi42 MDA3OGUxMTYzNA0KPj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYw0KPj4+PiBAQCAtMCwwICsxLDEz NCBAQA0KPj4+PiArLyogUFIgMTAxODMyOiANCj4+Pj4gKyAgIEdDQyBleHRlbnNpb24gYWNjZXB0 cyB0aGUgY2FzZSB3aGVuIGEgc3RydWN0IHdpdGggYSBDOTkgZmxleGlibGUgYXJyYXkNCj4+Pj4g KyAgIG1lbWJlciBpcyBlbWJlZGRlZCBpbnRvIGFub3RoZXIgc3RydWN0IChwb3NzaWJseSByZWN1 cnNpdmVseSkuDQo+Pj4+ICsgICBfX2J1aWx0aW5fb2JqZWN0X3NpemUgd2lsbCB0cmVhdCBzdWNo IHN0cnVjdCBhcyBmbGV4aWJsZSBzaXplLg0KPj4+PiArICAgSG93ZXZlciwgd2hlbiBhIHN0cnVj dHVyZSB3aXRoIG5vbi1DOTkgZmxleGlibGUgYXJyYXkgbWVtYmVyLCBpLmUsIHRyYWlsaW5nDQo+ Pj4+ICsgICBbMF0sIFsxXSwgb3IgWzRdLCBpcyBlbWJlZGRlZCBpbnRvIGFudGhlciBzdHJ1Y3Qs IHRoZSBzdHVjdHVyZSB3aWxsIG5vdA0KPj4+PiArICAgYmUgdHJlYXRlZCBhcyBmbGV4aWJsZSBz aXplLiAgKi8gDQo+Pj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+Pj4+ICsvKiB7IGRnLW9wdGlv bnMgIi1PMiIgfSAqLw0KPj4+PiArDQo+Pj4+ICsjaW5jbHVkZSAiYnVpbHRpbi1vYmplY3Qtc2l6 ZS1jb21tb24uaCINCj4+Pj4gKw0KPj4+PiArI2RlZmluZSBleHBlY3QocCwgX3YpIGRvIHsgXA0K Pj4+PiArICBzaXplX3QgdiA9IF92OyBcDQo+Pj4+ICsgIGlmIChwID09IHYpIFwNCj4+Pj4gKyAg ICBfX2J1aWx0aW5fcHJpbnRmICgib2s6ICAlcyA9PSAlemRcbiIsICNwLCBwKTsgXA0KPj4+PiAr ICBlbHNlIHtcDQo+Pj4+ICsgICAgX19idWlsdGluX3ByaW50ZiAoIldBVDogJXMgPT0gJXpkIChl eHBlY3RlZCAlemQpXG4iLCAjcCwgcCwgdik7IFwNCj4+Pj4gKyAgICBGQUlMICgpOyBcDQo+Pj4+ ICsgIH0gXA0KPj4+PiArfSB3aGlsZSAoMCk7DQo+Pj4+ICsNCj4+Pj4gKw0KPj4+PiArc3RydWN0 IEEgew0KPj4+PiArICBpbnQgbjsNCj4+Pj4gKyAgY2hhciBkYXRhW107DQo+Pj4+ICt9Ow0KPj4+ PiArDQo+Pj4+ICtzdHJ1Y3QgQiB7DQo+Pj4+ICsgIGludCBtOw0KPj4+PiArICBzdHJ1Y3QgQSBh Ow0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IEMgew0KPj4+PiArICBpbnQgcTsNCj4+ Pj4gKyAgc3RydWN0IEIgYjsNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gK3N0cnVjdCBBMCB7DQo+ Pj4+ICsgIGludCBuOw0KPj4+PiArICBjaGFyIGRhdGFbMF07DQo+Pj4+ICt9Ow0KPj4+PiArDQo+ Pj4+ICtzdHJ1Y3QgQjAgew0KPj4+PiArICBpbnQgbTsNCj4+Pj4gKyAgc3RydWN0IEEwIGE7DQo+ Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgQzAgew0KPj4+PiArICBpbnQgcTsNCj4+Pj4g KyAgc3RydWN0IEIwIGI7DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgQTEgew0KPj4+ PiArICBpbnQgbjsNCj4+Pj4gKyAgY2hhciBkYXRhWzFdOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+ PiArc3RydWN0IEIxIHsNCj4+Pj4gKyAgaW50IG07DQo+Pj4+ICsgIHN0cnVjdCBBMSBhOw0KPj4+ PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IEMxIHsNCj4+Pj4gKyAgaW50IHE7DQo+Pj4+ICsg IHN0cnVjdCBCMSBiOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RydWN0IEFuIHsNCj4+Pj4g KyAgaW50IG47DQo+Pj4+ICsgIGNoYXIgZGF0YVs4XTsNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4g K3N0cnVjdCBCbiB7DQo+Pj4+ICsgIGludCBtOw0KPj4+PiArICBzdHJ1Y3QgQW4gYTsNCj4+Pj4g K307DQo+Pj4+ICsNCj4+Pj4gK3N0cnVjdCBDbiB7DQo+Pj4+ICsgIGludCBxOw0KPj4+PiArICBz dHJ1Y3QgQm4gYjsNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gK3ZvbGF0aWxlIHZvaWQgKm1hZ2lj MSwgKm1hZ2ljMjsNCj4+Pj4gKw0KPj4+PiAraW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2 W10pDQo+Pj4+ICt7DQo+Pj4+ICsgIHN0cnVjdCBCICpvdXRlcjsNCj4+Pj4gKyAgc3RydWN0IEMg Km91dGVzdDsNCj4+Pj4gKw0KPj4+PiArICAvKiBNYWtlIHN1cmUgb3B0aW1pemF0aW9uIGNhbid0 IGZpbmQgc29tZSBvdGhlciBvYmplY3Qgc2l6ZS4gKi8NCj4+Pj4gKyAgb3V0ZXIgPSAodm9pZCAq KW1hZ2ljMTsNCj4+Pj4gKyAgb3V0ZXN0ID0gKHZvaWQgKiltYWdpYzI7DQo+Pj4+ICsNCj4+Pj4g KyAgZXhwZWN0IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZvdXRlci0+YSwgMSksIC0xKTsNCj4+ Pj4gKyAgZXhwZWN0IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZvdXRlc3QtPmIsIDEpLCAtMSk7 DQo+Pj4+ICsgIGV4cGVjdCAoX19idWlsdGluX29iamVjdF9zaXplICgmb3V0ZXN0LT5iLmEsIDEp LCAtMSk7DQo+Pj4+ICsNCj4+Pj4gKyAgc3RydWN0IEIwICpvdXRlcjA7DQo+Pj4+ICsgIHN0cnVj dCBDMCAqb3V0ZXN0MDsNCj4+Pj4gKw0KPj4+PiArICAvKiBNYWtlIHN1cmUgb3B0aW1pemF0aW9u IGNhbid0IGZpbmQgc29tZSBvdGhlciBvYmplY3Qgc2l6ZS4gKi8NCj4+Pj4gKyAgb3V0ZXIwID0g KHZvaWQgKiltYWdpYzE7DQo+Pj4+ICsgIG91dGVzdDAgPSAodm9pZCAqKW1hZ2ljMjsNCj4+Pj4g Kw0KPj4+PiArICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91dGVyMC0+YSwgMSks IHNpemVvZiAob3V0ZXIwLT5hKSk7DQo+Pj4+ICsgIGV4cGVjdCAoX19idWlsdGluX29iamVjdF9z aXplICgmb3V0ZXN0MC0+YiwgMSksIHNpemVvZiAob3V0ZXN0MC0+YikpOw0KPj4+PiArICBleHBl Y3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91dGVzdDAtPmIuYSwgMSksIHNpemVvZiAob3V0 ZXN0MC0+Yi5hKSk7DQo+Pj4+ICsNCj4+Pj4gKyAgc3RydWN0IEIxICpvdXRlcjE7DQo+Pj4+ICsg IHN0cnVjdCBDMSAqb3V0ZXN0MTsNCj4+Pj4gKw0KPj4+PiArICAvKiBNYWtlIHN1cmUgb3B0aW1p emF0aW9uIGNhbid0IGZpbmQgc29tZSBvdGhlciBvYmplY3Qgc2l6ZS4gKi8NCj4+Pj4gKyAgb3V0 ZXIxID0gKHZvaWQgKiltYWdpYzE7DQo+Pj4+ICsgIG91dGVzdDEgPSAodm9pZCAqKW1hZ2ljMjsN Cj4+Pj4gKw0KPj4+PiArICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91dGVyMS0+ YSwgMSksIHNpemVvZiAob3V0ZXIxLT5hKSk7DQo+Pj4+ICsgIGV4cGVjdCAoX19idWlsdGluX29i amVjdF9zaXplICgmb3V0ZXN0MS0+YiwgMSksIHNpemVvZiAob3V0ZXN0MS0+YikpOw0KPj4+PiAr ICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91dGVzdDEtPmIuYSwgMSksIHNpemVv ZiAob3V0ZXN0MS0+Yi5hKSk7DQo+Pj4+ICsNCj4+Pj4gKyAgc3RydWN0IEJuICpvdXRlcm47DQo+ Pj4+ICsgIHN0cnVjdCBDbiAqb3V0ZXN0bjsNCj4+Pj4gKw0KPj4+PiArICAvKiBNYWtlIHN1cmUg b3B0aW1pemF0aW9uIGNhbid0IGZpbmQgc29tZSBvdGhlciBvYmplY3Qgc2l6ZS4gKi8NCj4+Pj4g KyAgb3V0ZXJuID0gKHZvaWQgKiltYWdpYzE7DQo+Pj4+ICsgIG91dGVzdG4gPSAodm9pZCAqKW1h Z2ljMjsNCj4+Pj4gKw0KPj4+PiArICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91 dGVybi0+YSwgMSksIHNpemVvZiAob3V0ZXJuLT5hKSk7DQo+Pj4+ICsgIGV4cGVjdCAoX19idWls dGluX29iamVjdF9zaXplICgmb3V0ZXN0bi0+YiwgMSksIHNpemVvZiAob3V0ZXN0bi0+YikpOw0K Pj4+PiArICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91dGVzdG4tPmIuYSwgMSks IHNpemVvZiAob3V0ZXN0bi0+Yi5hKSk7DQo+Pj4+ICsNCj4+Pj4gKyAgRE9ORSAoKTsNCj4+Pj4g KyAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+Pj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1jb3JlLmgg Yi9nY2MvdHJlZS1jb3JlLmgNCj4+Pj4gaW5kZXggYWNkOGRlZWEzNGUuLjcwNWQ1NzAyYjljIDEw MDY0NA0KPj4+PiAtLS0gYS9nY2MvdHJlZS1jb3JlLmgNCj4+Pj4gKysrIGIvZ2NjL3RyZWUtY29y ZS5oDQo+Pj4+IEBAIC0xNzE4LDcgKzE3MTgsOSBAQCBzdHJ1Y3QgR1RZKCgpKSB0cmVlX3R5cGVf Y29tbW9uIHsNCj4+Pj4gIHVuc2lnbmVkIGVtcHR5X2ZsYWcgOiAxOw0KPj4+PiAgdW5zaWduZWQg aW5kaXZpc2libGVfcCA6IDE7DQo+Pj4+IFJFQ09SRF9PUl9VTklPTl9DSEVDSw0KPj4+IA0KPj4+ IGl0IGxvb2tzIGxpa2UgdGhlIGJpdCBjb3VsZCBiZSBldmVudHVhbGx5IHNoYXJlZCB3aXRoDQo+ Pj4gbm9fbmFtZWRfYXJnc19zdGRhcmdfcCAoYnV0IGl0cyBhY2Nlc3NvciBkb2Vzbid0IHVzZQ0K Pj4+IEZVTkNfT1JfTUVUSE9EX0NIRUNLKQ0KPj4gWW91IG1lYW4gdG8gbGV0IOKAnHR5cGVfaW5j bHVkZV9mbGV4YXJyYXnigJ0gc2hhcmUgdGhlIHNhbWUgYml0IHdpdGgg4oCcbm9fbmFtZWRfYXJn c19zdGRhcmdfcOKAnSBpbiBvcmRlciB0byBzYXZlIDEtYml0IHNwYWNlIGluIElSPw0KPj4gVGhl biBjaGFuZ2UgdGhlIA0KPj4gDQo+PiAvKiBUcnVlIGlmIHRoaXMgaXMgYSBzdGRhcmcgZnVuY3Rp b24gd2l0aCBubyBuYW1lZCBhcmd1bWVudHMgKEMyeA0KPj4gICAoLi4uKSBwcm90b3R5cGUsIHdo ZXJlIGFyZ3VtZW50cyBjYW4gYmUgYWNjZXNzZWQgd2l0aCB2YV9zdGFydCBhbmQNCj4+ICAgdmFf YXJnKSwgYXMgb3Bwb3NlZCB0byBhbiB1bnByb3RvdHlwZWQgZnVuY3Rpb24uICAqLw0KPj4gI2Rl ZmluZSBUWVBFX05PX05BTUVEX0FSR1NfU1REQVJHX1AoTk9ERSkgXA0KPj4gIChUWVBFX0NIRUNL IChOT0RFKS0+dHlwZV9jb21tb24ubm9fbmFtZWRfYXJnc19zdGRhcmdfcCkNCj4+IA0KPj4gLyog VHJ1ZSBpZiB0aGlzIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZUEUgaW5jbHVkZXMgYSBmbGV4aWJs ZSBhcnJheSBtZW1iZXINCj4+ICAgYXQgdGhlIGxhc3QgZmllbGQgcmVjdXJzaXZlbHkuICAqLw0K Pj4gI2RlZmluZSBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZKE5PREUpIFwNCj4+ICAoVFlQRV9DSEVD SyAoTk9ERSktPnR5cGVfY29tbW9uLnR5cGVfaW5jbHVkZV9mbGV4YXJyYXkpDQo+PiANCj4+IFRv Og0KPj4gDQo+PiB1bmlvbiB7DQo+PiAgICB1bnNpZ25lZCBub19uYW1lZF9hcmdzX3N0ZGFyZ19w IDogMTsNCj4+ICAgIC8qIFRZUEVfSU5DTFVERV9GTEVYQVJSQVkgZmxhZyBmb3IgUkVDT1JEX1RZ UEUgYW5kIFVOSU9OX1RZUEUuICAqLw0KPj4gICAgdW5zaWduZWQgaW50IHR5cGVfaW5jbHVkZV9m bGV4YXJyYXkgOiAxOw0KPj4gIH0gc2hhcmVkX2JpdDsNCj4+ICB1bnNpZ25lZCBzcGFyZSA6IDE1 Ow0KPj4gDQo+PiAvKiBUcnVlIGlmIHRoaXMgaXMgYSBzdGRhcmcgZnVuY3Rpb24gd2l0aCBubyBu YW1lZCBhcmd1bWVudHMgKEMyeA0KPj4gICAoLi4uKSBwcm90b3R5cGUsIHdoZXJlIGFyZ3VtZW50 cyBjYW4gYmUgYWNjZXNzZWQgd2l0aCB2YV9zdGFydCBhbmQNCj4+ICAgdmFfYXJnKSwgYXMgb3Bw b3NlZCB0byBhbiB1bnByb3RvdHlwZWQgZnVuY3Rpb24uICAqLw0KPj4gI2RlZmluZSBUWVBFX05P X05BTUVEX0FSR1NfU1REQVJHX1AoTk9ERSkgXA0KPj4gIChGVU5DX09SX01FVEhPRF9DSEVDSyAo Tk9ERSktPnR5cGVfY29tbW9uLnNoYXJlZF9iaXQubm9fbmFtZWRfYXJnc19zdGRhcmdfcCkNCj4+ IA0KPj4gLyogVHJ1ZSBpZiB0aGlzIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZUEUgaW5jbHVkZXMg YSBmbGV4aWJsZSBhcnJheSBtZW1iZXINCj4+ICAgYXQgdGhlIGxhc3QgZmllbGQgcmVjdXJzaXZl bHkuICAqLw0KPj4gI2RlZmluZSBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZKE5PREUpIFwNCj4+ICAo UkVDT1JEX09SX1VOSU9OX0NIRUNLKE5PREUpLT50eXBlX2NvbW1vbi5zaGFyZWRfYml0LnR5cGVf aW5jbHVkZV9mbGV4YXJyYXkpDQo+IA0KPiBObywgd2UncmUganVzdCBvdmVybG9hZGluZyBiaXRz IGJ5IHVzaW5nIHRoZSBzYW1lIG5hbWUgZm9yIGRpZmZlcmVudA0KPiBwdXJwb3Nlcy4gIEkgZG9u J3QgdGhpbmsgc3VjaCBhIHVuaW9uIHdvdWxkIHBhY2sgbmljZWx5LiAgV2Ugb3ZlcmxvYWQNCj4g YnkgZG9jdW1lbnRpbmcgdGhlIHVzZXMsIGluIHRoZSBhYm92ZSBjYXNlcyB0aGUgdXNlcyBhcmUg c2VwYXJhdGVkDQo+IGJ5IHRoZSBraW5kIG9mIHRoZSB0cmVlIG5vZGUsIFJFQ09SRC9VTklPTl9U WVBFIHZzLiBGVU5DVElPTi9NRVRIT0RfVFlQRQ0KPiBhbmQgdGhlIGFjY2Vzc29yIG1hY3JvcyBz aG91bGQgYmUgdXBkYXRlZCB0byB1c2UgdGhlIGFwcHJvcHJpYXRlDQo+IHRyZWUgY2hlY2sgbWFj cm9zIGNvdmVyaW5nIHRoYXQgc28gd2UgZG9uJ3QgdHJ5IHRvIGluc3BlY3QgdGhlDQo+ICJ3cm9u ZyBiaXTigJ0uDQpPa2F5LCBJIHNlZS4gVGhlbiBzaG91bGQgSSBjaGFuZ2UgdGhlIG5hbWUgb2Yg dGhhdCBiaXQgdG8gb25lIHRoYXQgcmVmbGVjdCB0d28gdXNhZ2VzPw0KPiANCj4+PiANCj4+Pj4g IGFsaWFzX3NldF90eXBlIGFsaWFzX3NldDsNCj4+Pj4gIHRyZWUgcG9pbnRlcl90bzsNCj4+Pj4g ZGlmZiAtLWdpdCBhL2djYy90cmVlLW9iamVjdC1zaXplLmNjIGIvZ2NjL3RyZWUtb2JqZWN0LXNp emUuY2MNCj4+Pj4gaW5kZXggOWE5MzZhOTE5ODMuLjIyYjNjNzJlYTZlIDEwMDY0NA0KPj4+PiAt LS0gYS9nY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYw0KPj4+PiArKysgYi9nY2MvdHJlZS1vYmplY3Qt c2l6ZS5jYw0KPj4+PiBAQCAtNjMzLDQ1ICs2MzMsNjggQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3Ry dWN0IG9iamVjdF9zaXplX2luZm8gKm9zaSwgY29uc3RfdHJlZSBwdHIsDQo+Pj4+IAkJICAgIHYg PSBOVUxMX1RSRUU7DQo+Pj4+IAkJICAgIGJyZWFrOw0KPj4+PiAJCSAgY2FzZSBDT01QT05FTlRf UkVGOg0KPj4+PiAtCQkgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh2KSkgIT0gQVJSQVlf VFlQRSkNCj4+Pj4gKwkJICAgIC8qIFdoZW4gdGhlIHJlZiBpcyBub3QgdG8gYW4gYXJyYXksIGEg cmVjb3JkIG9yIGEgdW5pb24sIGl0DQo+Pj4+ICsJCSAgICAgICB3aWxsIG5vdCBoYXZlIGZsZXhp YmxlIHNpemUsIGNvbXB1dGUgdGhlIG9iamVjdCBzaXplDQo+Pj4+ICsJCSAgICAgICBkaXJlY3Rs eS4gICovDQo+Pj4+ICsJCSAgICBpZiAoKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh2KSkgIT0gQVJS QVlfVFlQRSkNCj4+Pj4gKwkJCSYmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IFJFQ09S RF9UWVBFKQ0KPj4+PiArCQkJJiYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh2KSkgIT0gVU5JT05f VFlQRSkpDQo+Pj4+IAkJICAgICAgew0KPj4+PiAJCQl2ID0gTlVMTF9UUkVFOw0KPj4+PiAJCQli cmVhazsNCj4+Pj4gCQkgICAgICB9DQo+Pj4+IC0JCSAgICBpc19mbGV4aWJsZV9hcnJheV9tZW1f cmVmID0gYXJyYXlfcmVmX2ZsZXhpYmxlX3NpemVfcCAodik7DQo+Pj4+IC0JCSAgICB3aGlsZSAo diAhPSBwdF92YXIgJiYgVFJFRV9DT0RFICh2KSA9PSBDT01QT05FTlRfUkVGKQ0KPj4+PiAtCQkg ICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAodiwgMCkpKQ0KPj4+ PiAtCQkJICAhPSBVTklPTl9UWVBFDQo+Pj4+IC0JCQkgICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBF IChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+Pj4gLQkJCSAgIT0gUVVBTF9VTklPTl9UWVBFKQ0K Pj4+PiAtCQkJYnJlYWs7DQo+Pj4+IC0JCSAgICAgIGVsc2UNCj4+Pj4gLQkJCXYgPSBUUkVFX09Q RVJBTkQgKHYsIDApOw0KPj4+PiAtCQkgICAgaWYgKFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5U X1JFRg0KPj4+PiAtCQkJJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAodiwg MCkpKQ0KPj4+PiAtCQkJICAgPT0gUkVDT1JEX1RZUEUpDQo+Pj4+ICsJCSAgICBpZiAoVFJFRV9D T0RFIChUUkVFX1RZUEUgKHYpKSA9PSBSRUNPUkRfVFlQRQ0KPj4+PiArCQkJfHwgVFJFRV9DT0RF IChUUkVFX1RZUEUgKHYpKSA9PSBVTklPTl9UWVBFKQ0KPj4+PiArCQkgICAgLyogaWYgdGhlIHJl Y29yZCBvciB1bmlvbiBkb2VzIG5vdCBpbmNsdWRlIGEgZmxleGlibGUgYXJyYXkNCj4+Pj4gKwkJ ICAgICAgIHJlY3Vyc2l2ZWx5LCBjb21wdXRlIHRoZSBvYmplY3Qgc2l6ZSBkaXJlY3RseS4gICov DQo+Pj4+IAkJICAgICAgew0KPj4+PiAtCQkJLyogY29tcHV0ZSBvYmplY3Qgc2l6ZSBvbmx5IGlm IHYgaXMgbm90IGENCj4+Pj4gLQkJCSAgIGZsZXhpYmxlIGFycmF5IG1lbWJlci4gICovDQo+Pj4+ IC0JCQlpZiAoIWlzX2ZsZXhpYmxlX2FycmF5X21lbV9yZWYpDQo+Pj4+ICsJCQlpZiAoIVRZUEVf SU5DTFVERV9GTEVYQVJSQVkgKFRSRUVfVFlQRSAodikpKQ0KPj4+PiAJCQkgIHsNCj4+Pj4gCQkJ ICAgIHYgPSBOVUxMX1RSRUU7DQo+Pj4+IAkJCSAgICBicmVhazsNCj4+Pj4gCQkJICB9DQo+Pj4+ IC0JCQl2ID0gVFJFRV9PUEVSQU5EICh2LCAwKTsNCj4+Pj4gKwkJCWVsc2UNCj4+Pj4gKwkJCSAg diA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+Pj4+IAkJICAgICAgfQ0KPj4+PiAtCQkgICAgd2hp bGUgKHYgIT0gcHRfdmFyICYmIFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5UX1JFRikNCj4+Pj4g LQkJICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkN Cj4+Pj4gLQkJCSAgIT0gVU5JT05fVFlQRQ0KPj4+PiAtCQkJICAmJiBUUkVFX0NPREUgKFRSRUVf VFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+Pj4+IC0JCQkgICE9IFFVQUxfVU5JT05fVFlQ RSkNCj4+Pj4gLQkJCWJyZWFrOw0KPj4+PiAtCQkgICAgICBlbHNlDQo+Pj4+IC0JCQl2ID0gVFJF RV9PUEVSQU5EICh2LCAwKTsNCj4+Pj4gLQkJICAgIGlmICh2ICE9IHB0X3ZhcikNCj4+Pj4gLQkJ ICAgICAgdiA9IE5VTExfVFJFRTsNCj4+Pj4gCQkgICAgZWxzZQ0KPj4+PiAtCQkgICAgICB2ID0g cHRfdmFyOw0KPj4+PiArCQkgICAgICB7DQo+Pj4+ICsJCQkvKiBOb3cgdGhlIHJlZiBpcyB0byBh biBhcnJheSB0eXBlLiAgKi8NCj4+Pj4gKwkJCWlzX2ZsZXhpYmxlX2FycmF5X21lbV9yZWYNCj4+ Pj4gKwkJCSAgPSBhcnJheV9yZWZfZmxleGlibGVfc2l6ZV9wICh2KTsNCj4+Pj4gKwkJCXdoaWxl ICh2ICE9IHB0X3ZhciAmJiBUUkVFX0NPREUgKHYpID09IENPTVBPTkVOVF9SRUYpDQo+Pj4+ICsJ CQlpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAodiwgMCkpKQ0KPj4+PiAr CQkJICAgICAgIT0gVU5JT05fVFlQRQ0KPj4+PiArCQkJICAgICYmIFRSRUVfQ09ERSAoVFJFRV9U WVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+Pj4gKwkJCQkgIT0gUVVBTF9VTklPTl9UWVBF KQ0KPj4+PiArCQkJICBicmVhazsNCj4+Pj4gKwkJCWVsc2UNCj4+Pj4gKwkJCSAgdiA9IFRSRUVf T1BFUkFORCAodiwgMCk7DQo+Pj4+ICsJCQlpZiAoVFJFRV9DT0RFICh2KSA9PSBDT01QT05FTlRf UkVGDQo+Pj4+ICsJCQkgICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAo diwgMCkpKQ0KPj4+PiArCQkJCSA9PSBSRUNPUkRfVFlQRSkNCj4+Pj4gKwkJCSAgew0KPj4+PiAr CQkJICAgIC8qIGNvbXB1dGUgb2JqZWN0IHNpemUgb25seSBpZiB2IGlzIG5vdCBhDQo+Pj4+ICsJ CQkgICAgICAgZmxleGlibGUgYXJyYXkgbWVtYmVyLiAgKi8NCj4+Pj4gKwkJCSAgICBpZiAoIWlz X2ZsZXhpYmxlX2FycmF5X21lbV9yZWYpDQo+Pj4+ICsJCQkgICAgICB7DQo+Pj4+ICsJCQkJdiA9 IE5VTExfVFJFRTsNCj4+Pj4gKwkJCQlicmVhazsNCj4+Pj4gKwkJCSAgICAgIH0NCj4+Pj4gKwkJ CSAgICB2ID0gVFJFRV9PUEVSQU5EICh2LCAwKTsNCj4+Pj4gKwkJCSAgfQ0KPj4+PiArCQkJd2hp bGUgKHYgIT0gcHRfdmFyICYmIFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5UX1JFRikNCj4+Pj4g KwkJCSAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+ Pj4gKwkJCQkhPSBVTklPTl9UWVBFDQo+Pj4+ICsJCQkgICAgICAmJiBUUkVFX0NPREUgKFRSRUVf VFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+Pj4+ICsJCQkJICAgIT0gUVVBTF9VTklPTl9U WVBFKQ0KPj4+PiArCQkJICAgIGJyZWFrOw0KPj4+PiArCQkJICBlbHNlDQo+Pj4+ICsJCQkgICAg diA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+Pj4+ICsJCQlpZiAodiAhPSBwdF92YXIpDQo+Pj4+ ICsJCQkgIHYgPSBOVUxMX1RSRUU7DQo+Pj4+ICsJCQllbHNlDQo+Pj4+ICsJCQkgIHYgPSBwdF92 YXI7DQo+Pj4+ICsJCSAgICAgIH0NCj4+Pj4gCQkgICAgYnJlYWs7DQo+Pj4+IAkJICBkZWZhdWx0 Og0KPj4+PiAJCSAgICB2ID0gcHRfdmFyOw0KPj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3Ry ZWFtZXItaW4uY2MgYi9nY2MvdHJlZS1zdHJlYW1lci1pbi5jYw0KPj4+PiBpbmRleCBkNGRjMzBm MDQ4Zi4uYzE5ZWRlMDYzMWQgMTAwNjQ0DQo+Pj4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLWlu LmNjDQo+Pj4+ICsrKyBiL2djYy90cmVlLXN0cmVhbWVyLWluLmNjDQo+Pj4+IEBAIC0zOTAsNiAr MzkwLDcgQEAgdW5wYWNrX3RzX3R5cGVfY29tbW9uX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBh Y2tfZCAqYnAsIHRyZWUgZXhwcikNCj4+Pj4gICAgICBUWVBFX1RSQU5TUEFSRU5UX0FHR1IgKGV4 cHIpID0gKHVuc2lnbmVkKSBicF91bnBhY2tfdmFsdWUgKGJwLCAxKTsNCj4+Pj4gICAgICBUWVBF X0ZJTkFMX1AgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91bnBhY2tfdmFsdWUgKGJwLCAxKTsNCj4+ Pj4gICAgICBUWVBFX0NYWF9PRFJfUCAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192YWx1 ZSAoYnAsIDEpOw0KPj4+PiArICAgICAgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSAoZXhwcikgPSAo dW5zaWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOw0KPj4+PiAgICB9DQo+Pj4+ICBlbHNl IGlmIChUUkVFX0NPREUgKGV4cHIpID09IEFSUkFZX1RZUEUpDQo+Pj4+ICAgIFRZUEVfTk9OQUxJ QVNFRF9DT01QT05FTlQgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91bnBhY2tfdmFsdWUgKGJwLCAx KTsNCj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYyBiL2djYy90cmVl LXN0cmVhbWVyLW91dC5jYw0KPj4+PiBpbmRleCBkMTA3MjI5ZGE1Yy4uNzNlNGI0ZTU0N2MgMTAw NjQ0DQo+Pj4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPj4+PiArKysgYi9nY2Mv dHJlZS1zdHJlYW1lci1vdXQuY2MNCj4+Pj4gQEAgLTM1Nyw2ICszNTcsNyBAQCBwYWNrX3RzX3R5 cGVfY29tbW9uX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBhY2tfZCAqYnAsIHRyZWUgZXhwcikN Cj4+Pj4gICAgICBicF9wYWNrX3ZhbHVlIChicCwgZmxhZ193cGEgJiYgVFlQRV9DQU5PTklDQUwg KGV4cHIpDQo+Pj4+IAkJCSA/IFRZUEVfQ1hYX09EUl9QIChUWVBFX0NBTk9OSUNBTCAoZXhwcikp DQo+Pj4+IAkJCSA6IFRZUEVfQ1hYX09EUl9QIChleHByKSwgMSk7DQo+Pj4+ICsgICAgICBicF9w YWNrX3ZhbHVlIChicCwgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSAoZXhwciksIDEpOw0KPj4+PiAg ICB9DQo+Pj4+ICBlbHNlIGlmIChUUkVFX0NPREUgKGV4cHIpID09IEFSUkFZX1RZUEUpDQo+Pj4+ ICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUWVBFX05PTkFMSUFTRURfQ09NUE9ORU5UIChleHByKSwg MSk7DQo+Pj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3RyZWUuaA0KPj4+PiBpbmRl eCA5MmFjMGU2YTIxNC4uYWIxY2RjM2RjODUgMTAwNjQ0DQo+Pj4+IC0tLSBhL2djYy90cmVlLmgN Cj4+Pj4gKysrIGIvZ2NjL3RyZWUuaA0KPj4+PiBAQCAtNzc4LDYgKzc3OCwxMiBAQCBleHRlcm4g dm9pZCBvbXBfY2xhdXNlX3JhbmdlX2NoZWNrX2ZhaWxlZCAoY29uc3RfdHJlZSwgY29uc3QgY2hh ciAqLCBpbnQsDQo+Pj4+ICNkZWZpbmUgVFlQRV9OT19OQU1FRF9BUkdTX1NUREFSR19QKE5PREUp IFwNCj4+Pj4gIChUWVBFX0NIRUNLIChOT0RFKS0+dHlwZV9jb21tb24ubm9fbmFtZWRfYXJnc19z dGRhcmdfcCkNCj4+Pj4gDQo+Pj4+ICsvKiBUcnVlIGlmIHRoaXMgUkVDT1JEX1RZUEUgb3IgVU5J T05fVFlQRSBpbmNsdWRlcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4+PiArICAgYXQgdGhl IGxhc3QgZmllbGQgcmVjdXJzaXZlbHkuICAqLw0KPj4+PiArI2RlZmluZSBUWVBFX0lOQ0xVREVf RkxFWEFSUkFZKE5PREUpIFwNCj4+Pj4gKyAgKFRZUEVfQ0hFQ0sgKE5PREUpLT50eXBlX2NvbW1v bi50eXBlX2luY2x1ZGVfZmxleGFycmF5KQ0KPj4+IA0KPj4+IFBsZWFzZSB1c2UgUkVDT1JEX09S X1VOSU9OX0NIRUNLLiAgDQo+PiBPa2F5LiANCj4+PiBUaGUgY29tbWVudCAiYXQgdGhlIGxhc3Qg ZmllbGQiDQo+Pj4gZG9lc24ndCBzZWVtIHRvIG1hdGNoIGltcGxlbWVudGF0aW9uPyAoYXQgbGVh c3Qgbm90IG9idmlvdXNseSkNCj4+IFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIChpbiBnY2Mv Yy9jLWRlY2wuY2MpIGd1YXJhbnRlZXMgdGhhdCBpdOKAmXMgYXQgdGhlIGxhc3QgZmllbGQuIChB bmQgcmVjdXJzaXZlbHkpLiANCj4+PiBHaXZlbiB0aGlzIGlzIGEgZ2VuZXJpYyBoZWFkZXIgZXhw YW5kaW5nIG9uIHdoYXQgYSAiZmxleGlibGUgYXJyYXkgbWVtYmVyIg0KPj4+IGlzIHRvIHRoZSBt aWRkbGUtZW5kIGhlcmUgd291bGQgYmUgZ29vZC4gIEVzcGVjaWFsbHkgdGhlIGd1YXJhbnRlZXMN Cj4+PiBtYWRlIHdoZW4gdGhlIGJpdCBpcyBfbm90XyBzZXQgKHdlJ3ZlIGV2YWRlZCB0aGF0IHdp dGggREVDTF9OT1RfRkxFWEFSUkFZDQo+Pj4gdnMuIERFQ0xfRkxFWEFSUkFZKS4NCj4+IA0KPj4g VGhlIGJpdCBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZIGRlZmF1bHQgaXMgRkFMU0UsIGkuZSwgbm90 IGluY2x1ZGluZyBhIGZsZXggYXJyYXkgYnkgZGVmYXVsdC4NCj4+IEl04oCZcyBvbmx5IHNldCB0 byBUUlVFIHdoZW4gdGhlIHN0cnVjdC91bmlvbiBpbmNsdWRlcyBhIGZsZXggYXJyYXkgYXQgdGhl IGxhc3QgZmllbGQgKGFuZCByZWN1cnNpdmVseSkuIFNvLCBJIHRoaW5rIGl0IHNob3VsZCBiZSBj b3JyZWN0LiANCj4+IExldCBtZSBrbm93IGlmIEkgbWlzc2VkIGFueXRoaW5nIGhlcmUuDQo+IA0K PiBTZWUgYWJvdmUgLSBJIHdhcyBsb29raW5nIGF0IHRoZSB1c2UgKGJ1dCBJJ20gbm90IGZhbWls aWFyIHdpdGggdGhhdCANCj4gY29kZSksIGFuZCB3b25kZXJlZCBob3cgdGhlIGNoYW5nZSBhZmZl Y3RzIHVzZXMgZnJvbSBvdGhlciBmcm9udGVuZHMuDQoNClBsZWFzZSBzZWUgbXkgZXhwbGFuYXRp b24gYWJvdmUsIEkgdGhpbmsgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZnJvbSBvdGhlciBGRSBzaG91 bGQgYmUga2VwdCBjb3JyZWN0bHkgd2l0aCB0aGlzIHBhdGNoLg0KDQp0aGFua3MuDQoNClFpbmcN Cj4gDQo+IFJpY2hhcmQuDQoNCg==