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 EA9353858C60 for ; Wed, 1 Feb 2023 14:19:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EA9353858C60 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 (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 311EHHsh030533; Wed, 1 Feb 2023 14:19:07 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=m8hLs3GYFIUmsblgLaPgzWdmiu3lVkgHx26sXUw0Ldc=; b=R3R8xavTwzit99bMhyZUygSOKNgwjIQaOfUbYRe5wU0TVKWbBay35T1CkA4HAWBznRzv 2n0KnhaNXZN6Tx1vNlBoXKkDPxgQOYeIyOlMa7JVt8rJYtG6pPHSo7Evx0ZtJuFSYLbD 6tHjgkkkbywJxc2BOq/9rINDmyY57MjdS+/qsmQPPHq/HD6XfED7ca4m3ihLjesa0ANS Yn1HjvD+cen5CRYoxq93F1nit1t9CA8z3m4m9QmCfVkFaafdNzXcZgQMwIvq8wPZWgFN brxBqXqhHLr9OUAyX85X1K3WJZXW+yLqMK4PT+IVVMphRAxkusVe3alK7RF8QS+f7X95 xg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3nfq28rac0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 01 Feb 2023 14:19:06 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 311DAY7X031547; Wed, 1 Feb 2023 14:19:05 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2102.outbound.protection.outlook.com [104.47.55.102]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3nct5e4uyx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 01 Feb 2023 14:19:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jIe1mdVViQSEWTMHNwiosuOlA9bc95SJVz7Bi4NFjfwxBGyQ1Qi5PBFJAXo3EbxTteNpVqSL8n4mqMbHDlZAnedGu4X2CzwCEH3hap+1ozzvWAgvIrq7jsTnWKpjEmvXoukW6t+gIP3fUW0AConqy6+eQQ1pBaE0/QBKR2aNaCH4r/2BcKGafv/ZJrJGP/Zl68rZlgRs8RYZUd00G9lvrsyWjbe3KfFEimHkyn6Z4P9zcpfUtPZSVc/AIKaA/MKl3QfFM2DejUnUWLECXbh0wpNCqZHzTfvOqXnATLuBsQFdUXO0mvf790tIt0Fvm6JfTfaVhnaOCk+FkKugT8T5Ng== 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=m8hLs3GYFIUmsblgLaPgzWdmiu3lVkgHx26sXUw0Ldc=; b=GMJoF4Ijk8aDDV2ozPyRNROJkOnX8pMkseowOnVJmkQjwNxQKH595bLL6rZnJllhNqYY7nmkAg9C3fGPWnY2MwdeTrOQW1K/8p1T6Jmb+whXumeDSmBJ9DrUrgljtUcItKjlafPfEAYVAzbCAeGFqqCZ+4WAgwiZX95WdmlWDuHOQb8LN/EyVYyhidDP4JzeQ6QOhjX2IcPfLG59UjBDAH+iKATKGtqfQqneZqWQQqfkPUqN/s8D78QFBifc3GI25PSqat3LI2/y5MO6xnXqqsH3dePnyFIKMlcslnmW5kEHVrEye2hWCwKLyLjHpeVQDkWCmCDz65Q8AQXj0opVwQ== 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=m8hLs3GYFIUmsblgLaPgzWdmiu3lVkgHx26sXUw0Ldc=; b=MXQdB29lSj8893yCR4IwSV7vFc1kFP82EtvgKNcnO7tktBLpK+zJxjbms4klYGszifcgFaGoiS4suQ9P3P7yLzjJuSzprJ/Q20O6iyo4ynW7PBxFwb3fOJvZkM0Ni6dXu56xT0BRqQwSvC5CmOC9T6wH7XiK7XFAn9OemuIDQe8= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by MN0PR10MB5910.namprd10.prod.outlook.com (2603:10b6:208:3ce::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.20; Wed, 1 Feb 2023 14:19:01 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::c96c:cb50:dea2:2cd2]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::c96c:cb50:dea2:2cd2%5]) with mapi id 15.20.6064.021; Wed, 1 Feb 2023 14:19:01 +0000 From: Qing Zhao To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , "siddhesh@gotplt.org" , "keescook@chromium.org" Subject: Re: [PATCH 1/2] Handle component_ref to a structre/union field including flexible array member [PR101832] Thread-Topic: [PATCH 1/2] Handle component_ref to a structre/union field including flexible array member [PR101832] Thread-Index: AQHZNX31Ed6QQ1+7j0WzPTRpR3Dia665+UIAgAAsBIA= Date: Wed, 1 Feb 2023 14:19:01 +0000 Message-ID: <812910BC-870E-4432-870D-538024F1A510@oracle.com> References: <20230131141140.3610133-1-qing.zhao@oracle.com> <20230131141140.3610133-2-qing.zhao@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.1) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|MN0PR10MB5910:EE_ x-ms-office365-filtering-correlation-id: bceaec41-a4ea-4532-7d3c-08db045f4460 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: u5dNEl0jQN+L4vFG0K8kq2NcK6+XkdJH6M9aJGLvw8BPVwMdUgVNQD5HyZf0s8mVhfjrJmOhlrjgeSxwGumMEfoc7dLPodOO27eVgGlSh5rNXOSLkdoj0Sq2n+qLdIhz5ByZ9fULaZ8VLOm0sO8PjquZE+sjLhbS/MEzatNhzU+OxIF3qvfe2lNlo2+GF4fe1UeFppc8bjx80bio5evUwo9f0T739hv5NFvo1Aiahb5Sp/0DxKSWZJZ7G3WUn8PI+yEBtDMAiCxdlVLVcTrA4stbC7qwVfOmU4NTEI5C6yI4HSGMxL8T+pDW4zkbZeECdSLogFmuUF5IxLIn2Gg6p8nIKcGscwC949/XKyTyq4Ozcss8nbR3pIu5cqk5aaGplTIJQ0TNISpuLfKT9bRPpf/Amo+uQlsYE2E63g8FI7xVc6GADATCMB2O3vXRVXAIAN6rb6Hb5xkSttggHbZS62cjU0/HKuf+wyVskw9v4LijcGVCwBURG/fNTH+/79y+iP+TOtyryNy1bsXy89mdPnz3LNrKCju8+o6Dlj7lAYj67rzOI/spOJfH1IWP13HbyuZrCTira+65kV237UbasJ6FDouVG7kpbm5flYlWmEWbjHTbJoyN5Cg6f8SX9PdF+ynpu2HksVpBJ2reSAxAYhyDQEeBGkNdgcO59fmJLzFY6wGUdmbiSYp8/RFmImikmNgy1+c4w0k9yxamnewt2pdO9ijxk/OR3whkR4eqvq7iREjRm/KF1SLm2vU/YrK9jdq2z+9QjP9YUfbmQ11cOw== 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)(366004)(376002)(346002)(396003)(136003)(39860400002)(451199018)(41300700001)(83380400001)(66946007)(54906003)(316002)(86362001)(44832011)(30864003)(36756003)(2906002)(8936002)(33656002)(38070700005)(76116006)(38100700002)(66556008)(91956017)(8676002)(122000001)(66446008)(5660300002)(6916009)(4326008)(64756008)(66476007)(71200400001)(478600001)(84970400001)(6486002)(2616005)(186003)(6512007)(26005)(6506007)(53546011)(45980500001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z3ZqVGJlUnludkNGUkhmZkVtZWpzeExyOW1BNk9CRTdrWVFTcnBkeVY0TERM?= =?utf-8?B?cHZCdFZiMWlkVUNRSWgxejRlb29jWWlIL1dWWDJ4ak5wKzVrTDJYNTZrSzFI?= =?utf-8?B?M2Z1ODAzSFFPTkZTM3FDbzlyVEtOVjhUeElMT0NHbDVQM2dhbmp0SWZ2MUtE?= =?utf-8?B?ait4blg3OXNEVk5XcDM2OXZUN1l2Y0E4dXExa1hrSDlwOEZNdndCSzhHUGUv?= =?utf-8?B?VDZZaGJqcUxlREpPelRSRjVheTVGVkJxM0c0T1RJOWtxNHIzRGVLdmUwVFpY?= =?utf-8?B?NHVpTGhibmljZk1LSmxBWmhaK29QTjRwRXYyUUdWTDEyRTJGUCtJTVJNMWVI?= =?utf-8?B?ZEVmV1c3c1VXTlp3Q3NSZnU1eW9Cb3N1U25raFVyMk9YekNUblM0ek1YYjdn?= =?utf-8?B?VTF4WTV6WWxlRlUwQmRBdC9lQWFqRTJlUzNCR3R3bkV4WG12VGtDeG9BRFVy?= =?utf-8?B?QlhvSDB4MlFvOEZGUjBvNDQveTh5VjZLUERpNy84TzNQOElXTmFlMlA2NXJz?= =?utf-8?B?ZjZzWTRIZ3VwK3B0bFN1Unk3b1g5NG91ejlXTUxKMW13TVNDY240WjJ2OGc3?= =?utf-8?B?blNEblVUbloxTkR4SmZTZ0Y5NEl1cEl6MWt0Si9GM3dRTlRDRDZqa1lWU1lh?= =?utf-8?B?VXJ5WGxiRjRobzhoM1M1SzhFUWE1Qy9yMkUzVUt2ZnJoVXBQU055cHhzVC9Z?= =?utf-8?B?aTdiMWVBaldsaTMxeWplTVUyYnk5UWU1MFU3RjdBVy9zd1IvZVYrb1Y2Vk0y?= =?utf-8?B?WkY0NkhIZDVoeU81bytrU04zUWRRUFVGaTN6UFIrWVBMRXlIaGZEUlh1Y2pF?= =?utf-8?B?SkhHRWpkbmZ1ZDh3YzBEdkd5Mlh3Mms2K29hNlZOUFFkYk5lZU95bDM5MTE2?= =?utf-8?B?eStxQ1laZjZ4dFozZ3Z5SXNmd0ZBN3lWZStLL21Fc2FpOG41MFpjd1lUbHNT?= =?utf-8?B?U3VoQ0x1RWRZN3dYRHVWMGliWXhPK2J3NlF2NEswOVZEODU5ek5vUy9SQzVS?= =?utf-8?B?RFg3Um1vRHpWcEk5VWZLWnUyMVlDWTl1ZFNmN09KZ0tjUG9pKzdSOUltS0tR?= =?utf-8?B?azd6K0V3bGVEdEducFdQNEpub0QxWTcwT2s4Y0dicXdXY3JCVzNZaTBOK2cr?= =?utf-8?B?NjczOG9pR0tMd1FUQzlrWUFmdWlGSlhxaGtwRHpTRXFmei9QMTFZYXc5NDhy?= =?utf-8?B?VlZCakwwNkJVK0w1NTJEVURFRGVXd2RxekxRRkYwZ2Y3QWVTbUI3QlROSnA0?= =?utf-8?B?ZXdPYTlnTEVIcWhGcHJGaklGbnQrQ09yWXVQV1dGbHBlY2IzT3BoUEtmc1h2?= =?utf-8?B?bjRHTE1IMGFvazBPSC9xMUFHSVIweGs5Q2RENkpKVjY1YU1sMSt4VTZ1ZmFL?= =?utf-8?B?aTM4UnR0VkNhRnpmTzgxWDdJL1hOSVVFOGp1bEpOMncrZ29kOElFalZEUlZu?= =?utf-8?B?ayszNk95Q2VYL2U2cjRwWG1helhKS3VLd2Q5N2FMV0E5WGxibnFyTTdEdkJ1?= =?utf-8?B?N2Y3c2d0RVpHcUk5ckFKUE1jalcvVXdpRi8yTXhYcEhDRHZQTVR6eXpkMHJV?= =?utf-8?B?K0p1R3BqMG9HbStHTmJKbEFkdGVrVC90a1NudU5zUWlXTFlBSGxNWWtNYVlU?= =?utf-8?B?Rm1iUTNadmE4ZzJQby9EbE1RZy9DYWNjUWdJVXEzU2lVS04yOXZNSGJZVGF4?= =?utf-8?B?dUdONm1TQkhvYnJ4dzJZRktXc1NGMGJLK0d3SGNCSzZKZ1RMOXVRc0tIODNS?= =?utf-8?B?OXRFbnlTQnMwaGc5aXJhQi9CYTJlbVVaSDlrWW1PZlB6K1Mxd0p1OVAxenhK?= =?utf-8?B?SGhTY1dBeUN5ZUdmVG56b2FTb1NXZUJzd054eE1JVEhVL0QvbXBjeEE1QmRU?= =?utf-8?B?VUd1c2l2OTRISEtVTUhUbWtrWm1NenFramQ4TUVoVEhSQUswS1RNS1NvQk1p?= =?utf-8?B?Q3JHR1hINVA0U1JSbmZ2Vml5OER3cmU1YlJoamdwUTBHRHR6Tm5zczU4cWxx?= =?utf-8?B?OEN2b3ZHQ2lURkk2YkZ4ZTc1Zzc1REtuclpwSkY5ZlhQUndXSlpYUjQ5eVRW?= =?utf-8?B?dE00V2FPd1NOdUc1QTRpRmZLRFhEVnNGcTdHU2JhLytZQ200VjdoQWluSlRL?= =?utf-8?B?cjc0d0RqaTM0QWZGeDFzUXR4QWRoWGo3c0RNbXRnZS94dk1lcTgveHNoVno3?= =?utf-8?B?anc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <14D8CAEB40D6C6459269200C223819B5@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: 5pFe677w+UxnoNlKByggrX88tKWjEhqOKfTzxBMkz/IvMDdq5nH7eWo/Wc9+7UmShPUSQpkEOp2L/KY2DmyJ18iCoqdl2jqAzCYI/NTmQoyGUSisuvo0fJAuoaI/ocZbl/X/uB0nT0WyDPCVMlfmcjiR7/NNUYaDwZhLOQl03GfDJoI9krfiiSnoQvnkIgIaB+JVeAZPCwMbcYNhWq1Pd9+E5kx/Gwv8TZbm84nBYZSDg1lXIP5TlObmVk3k8xdSwd09WgXIe3q7eO5MYObgDCR6Rx3hIrD9rlbo8pzWD6xvdAn55lZpLxkC6+IyaA1QnhVlsLNjKXs+DrgJnxsEGkgvknRHh2zVQb2ZQlB4p9o4crGTrfxTDxoFEFFxAzFMAP9ltY7TUpgLDd5u6SAwH7oVX7OqnCr3SSaUdBOEy1wYKitsFVCa24tLhXwzLNO4ctAhgCfYaP0i0j6BbmlKzSeHbQ35qA4cQ+eiHkCWqCECtW7fJTqG9s7hSB1/HM8CKTd3rQkDaozwxz46oZbuJs4xqWMt0SR30LZC9nBtWljxYU6LAwLBTGLL0iCEkaiACdCa/KtJB4C6O2ySZxAKpjEVUDNMg0lXKWysoSa58ij8gmoSNHcyf8qGZ1+zT+NQUb19ehSA6j8E+mWXILKF3t9DpjbfeVJUeNsIYpApDR5o6Q7xzs0AeuCxVfhRt2rkCshuBd84x3cOZD8qePUmnskFcZzWf7sxYSnDOsVbZroFyTf7AV0g0p2o8J/Juty5Ck9f3+R3QbIUtJPi5gZEZ9E5XUtcGF+8NIQqPSZZMMmgYyRmNdPVLpyBjMmYRHSgmyEbzkOrBjlHEyJaG0271g== 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: bceaec41-a4ea-4532-7d3c-08db045f4460 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2023 14:19:01.8479 (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: V4sCve+jrg0Z1O2xLxDQhDqqbP1rdR06215XncCufC4AqJu/+Kwt+CKoSgtpeJtd9VqYjJA9+J7bpwRl40NC7Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR10MB5910 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-01_04,2023-01-31_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 suspectscore=0 adultscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302010123 X-Proofpoint-GUID: UJ3oW8SWnnqRQOD8pvBvgqNEB003BZO_ X-Proofpoint-ORIG-GUID: UJ3oW8SWnnqRQOD8pvBvgqNEB003BZO_ 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: DQoNCj4gT24gRmViIDEsIDIwMjMsIGF0IDY6NDEgQU0sIFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRo ZXJAc3VzZS5kZT4gd3JvdGU6DQo+IA0KPiBPbiBUdWUsIDMxIEphbiAyMDIzLCBRaW5nIFpoYW8g d3JvdGU6DQo+IA0KPj4gR0NDIGV4dGVuc2lvbiBhY2NlcHRzIHRoZSBjYXNlIHdoZW4gYSBzdHJ1 Y3Qgd2l0aCBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4gaXMgZW1iZWRkZWQgaW50byBhbm90 aGVyIHN0cnVjdCAocG9zc2libHkgcmVjdXJzaXZlbHkpLg0KPj4gX19idWlsdGluX29iamVjdF9z aXplIHNob3VsZCB0cmVhdCBzdWNoIHN0cnVjdCBhcyBmbGV4aWJsZSBzaXplIHBlcg0KPj4gLWZz dHJpY3QtZmxleC1hcnJheXMuDQo+PiANCj4+IAlQUiB0cmVlLW9wdGltaXphdGlvbi8xMDE4MzIN Cj4+IA0KPj4gZ2NjL0NoYW5nZUxvZzoNCj4+IA0KPj4gCVBSIHRyZWUtb3B0aW1pemF0aW9uLzEw MTgzMg0KPj4gCSogdHJlZS1vYmplY3Qtc2l6ZS5jYyAoZmxleGlibGVfc2l6ZV90eXBlX3ApOiBO ZXcgZnVuY3Rpb24uDQo+PiAJKGFkZHJfb2JqZWN0X3NpemUpOiBIYW5kbGUgc3RydWN0dXJlL3Vu aW9uIHR5cGUgd2hlbiBpdCBoYXMNCj4+IAlmbGV4aWJsZSBzaXplLg0KPj4gDQo+PiBnY2MvdGVz dHN1aXRlL0NoYW5nZUxvZzoNCj4+IA0KPj4gCVBSIHRyZWUtb3B0aW1pemF0aW9uLzEwMTgzMg0K Pj4gCSogZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzItMi5jOiBOZXcgdGVzdC4N Cj4+IAkqIGdjYy5kZy9idWlsdGluLW9iamVjdC1zaXplLXByMTAxODMyLTMuYzogTmV3IHRlc3Qu DQo+PiAJKiBnY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgzMi00LmM6IE5ldyB0ZXN0 Lg0KPj4gCSogZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYzogTmV3IHRlc3Qu DQo+PiAtLS0NCj4+IC4uLi9nY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgzMi0yLmMg ICB8IDEzNSArKysrKysrKysrKysrKysrKysNCj4+IC4uLi9nY2MuZGcvYnVpbHRpbi1vYmplY3Qt c2l6ZS1wcjEwMTgzMi0zLmMgICB8IDEzNSArKysrKysrKysrKysrKysrKysNCj4+IC4uLi9nY2Mu ZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgzMi00LmMgICB8IDEzNSArKysrKysrKysrKysr KysrKysNCj4+IC4uLi9nY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgzMi5jICAgICB8 IDExOSArKysrKysrKysrKysrKysNCj4+IGdjYy90cmVlLW9iamVjdC1zaXplLmNjICAgICAgICAg ICAgICAgICAgICAgICB8IDExNSArKysrKysrKysrKy0tLS0NCj4+IDUgZmlsZXMgY2hhbmdlZCwg NjExIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQ0KPj4gY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzItMi5jDQo+ PiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmplY3Qt c2l6ZS1wcjEwMTgzMi0zLmMNCj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9idWlsdGluLW9iamVjdC1zaXplLXByMTAxODMyLTQuYw0KPj4gY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYw0K Pj4gDQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmplY3Qt c2l6ZS1wcjEwMTgzMi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLW9iamVjdC1z aXplLXByMTAxODMyLTIuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAw MDAwMDAwLi5mMzhiYWJjNTQxNQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgzMi0yLmMNCj4+IEBAIC0wLDAg KzEsMTM1IEBADQo+PiArLyogUFIgMTAxODMyOiANCj4+ICsgICBHQ0MgZXh0ZW5zaW9uIGFjY2Vw dHMgdGhlIGNhc2Ugd2hlbiBhIHN0cnVjdCB3aXRoIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyDQo+ PiArICAgaXMgZW1iZWRkZWQgaW50byBhbm90aGVyIHN0cnVjdCAocG9zc2libHkgcmVjdXJzaXZl bHkpLg0KPj4gKyAgIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSB3aWxsIHRyZWF0IHN1Y2ggc3RydWN0 IGFzIGZsZXhpYmxlIHNpemUgcGVyDQo+PiArICAgLWZzdHJpY3QtZmxleC1hcnJheXMuICAqLyAN Cj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZzdHJp Y3QtZmxleC1hcnJheXM9MSIgfSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPj4g Kw0KPj4gK3Vuc2lnbmVkIG5fZmFpbHMgPSAwOw0KPj4gKw0KPj4gKyNkZWZpbmUgZXhwZWN0KHAs IF92KSBkbyB7IFwNCj4+ICsgIHNpemVfdCB2ID0gX3Y7IFwNCj4+ICsgIGlmIChwID09IHYpIFwN Cj4+ICsgICAgcHJpbnRmKCJvazogICVzID09ICV6ZFxuIiwgI3AsIHApOyBcDQo+PiArICBlbHNl IHtcDQo+PiArICAgIHByaW50ZigiV0FUOiAlcyA9PSAlemQgKGV4cGVjdGVkICV6ZClcbiIsICNw LCBwLCB2KTsgXA0KPj4gKyAgICBuX2ZhaWxzKys7IFwNCj4+ICsgIH0gXA0KPj4gK30gd2hpbGUg KDApOw0KPj4gKw0KPj4gK3N0cnVjdCBBIHsNCj4+ICsgIGludCBuOw0KPj4gKyAgY2hhciBkYXRh W107LyogQ29udGVudCBmb2xsb3dpbmcgaGVhZGVyICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1 Y3QgQiB7DQo+PiArICBpbnQgbTsNCj4+ICsgIHN0cnVjdCBBIGE7DQo+PiArfTsNCj4+ICsNCj4+ ICtzdHJ1Y3QgQyB7DQo+PiArICBpbnQgcTsNCj4+ICsgIHN0cnVjdCBCIGI7DQo+PiArfTsNCj4+ ICsNCj4+ICtzdHJ1Y3QgQTAgew0KPj4gKyAgaW50IG47DQo+PiArICBjaGFyIGRhdGFbMF07Lyog Q29udGVudCBmb2xsb3dpbmcgaGVhZGVyICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgQjAg ew0KPj4gKyAgaW50IG07DQo+PiArICBzdHJ1Y3QgQTAgYTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0 cnVjdCBDMCB7DQo+PiArICBpbnQgcTsNCj4+ICsgIHN0cnVjdCBCMCBiOw0KPj4gK307DQo+PiAr DQo+PiArc3RydWN0IEExIHsNCj4+ICsgIGludCBuOw0KPj4gKyAgY2hhciBkYXRhWzFdOy8qIENv bnRlbnQgZm9sbG93aW5nIGhlYWRlciAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEIxIHsN Cj4+ICsgIGludCBtOw0KPj4gKyAgc3RydWN0IEExIGE7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1 Y3QgQzEgew0KPj4gKyAgaW50IHE7DQo+PiArICBzdHJ1Y3QgQjEgYjsNCj4+ICt9Ow0KPj4gKw0K Pj4gK3N0cnVjdCBBbiB7DQo+PiArICBpbnQgbjsNCj4+ICsgIGNoYXIgZGF0YVs4XTsvKiBDb250 ZW50IGZvbGxvd2luZyBoZWFkZXIgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBCbiB7DQo+ PiArICBpbnQgbTsNCj4+ICsgIHN0cnVjdCBBbiBhOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0 IENuIHsNCj4+ICsgIGludCBxOw0KPj4gKyAgc3RydWN0IEJuIGI7DQo+PiArfTsNCj4+ICsNCj4+ ICt2b2xhdGlsZSB2b2lkICptYWdpYzEsICptYWdpYzI7DQo+PiArDQo+PiAraW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBCICpvdXRlcjsNCj4+ ICsgICAgc3RydWN0IEMgKm91dGVzdDsNCj4+ICsNCj4+ICsgICAgLyogTWFrZSBzdXJlIG9wdGlt aXphdGlvbiBjYW4ndCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+PiArICAgIG91 dGVyID0gKHZvaWQgKiltYWdpYzE7DQo+PiArICAgIG91dGVzdCA9ICh2b2lkICopbWFnaWMyOw0K Pj4gKw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlci0+YSwgMSks IC0xKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0LT5iLCAx KSwgLTEpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3QtPmIu YSwgMSksIC0xKTsNCj4+ICsNCj4+ICsgICAgc3RydWN0IEIwICpvdXRlcjA7DQo+PiArICAgIHN0 cnVjdCBDMCAqb3V0ZXN0MDsNCj4+ICsNCj4+ICsgICAgLyogTWFrZSBzdXJlIG9wdGltaXphdGlv biBjYW4ndCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+PiArICAgIG91dGVyMCA9 ICh2b2lkICopbWFnaWMxOw0KPj4gKyAgICBvdXRlc3QwID0gKHZvaWQgKiltYWdpYzI7DQo+PiAr DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVyMC0+YSwgMSksIC0x KTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0MC0+YiwgMSks IC0xKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0MC0+Yi5h LCAxKSwgLTEpOw0KPj4gKw0KPj4gKyAgICBzdHJ1Y3QgQjEgKm91dGVyMTsNCj4+ICsgICAgc3Ry dWN0IEMxICpvdXRlc3QxOw0KPj4gKw0KPj4gKyAgICAvKiBNYWtlIHN1cmUgb3B0aW1pemF0aW9u IGNhbid0IGZpbmQgc29tZSBvdGhlciBvYmplY3Qgc2l6ZS4gKi8NCj4+ICsgICAgb3V0ZXIxID0g KHZvaWQgKiltYWdpYzE7DQo+PiArICAgIG91dGVzdDEgPSAodm9pZCAqKW1hZ2ljMjsNCj4+ICsN Cj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXIxLT5hLCAxKSwgLTEp Ow0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3QxLT5iLCAxKSwg LTEpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3QxLT5iLmEs IDEpLCAtMSk7DQo+PiArDQo+PiArICAgIHN0cnVjdCBCbiAqb3V0ZXJuOw0KPj4gKyAgICBzdHJ1 Y3QgQ24gKm91dGVzdG47DQo+PiArDQo+PiArICAgIC8qIE1ha2Ugc3VyZSBvcHRpbWl6YXRpb24g Y2FuJ3QgZmluZCBzb21lIG90aGVyIG9iamVjdCBzaXplLiAqLw0KPj4gKyAgICBvdXRlcm4gPSAo dm9pZCAqKW1hZ2ljMTsNCj4+ICsgICAgb3V0ZXN0biA9ICh2b2lkICopbWFnaWMyOw0KPj4gKw0K Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlcm4tPmEsIDEpLCBzaXpl b2Yob3V0ZXJuLT5hKSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91 dGVzdG4tPmIsIDEpLCBzaXplb2Yob3V0ZXN0bi0+YikpOw0KPj4gKyAgICBleHBlY3QoX19idWls dGluX29iamVjdF9zaXplKCZvdXRlc3RuLT5iLmEsIDEpLCBzaXplb2Yob3V0ZXN0bi0+Yi5hKSk7 DQo+PiArDQo+PiArICAgIGlmIChuX2ZhaWxzID4gMCkNCj4+ICsgICAgICBfX2J1aWx0aW5fYWJv cnQgKCk7DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLW9iamVjdC1zaXplLXByMTAxODMyLTMuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzItMy5jDQo+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAuLmFhYWU5OWI4ZDY3DQo+ PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLW9i amVjdC1zaXplLXByMTAxODMyLTMuYw0KPj4gQEAgLTAsMCArMSwxMzUgQEANCj4+ICsvKiBQUiAx MDE4MzI6IA0KPj4gKyAgIEdDQyBleHRlbnNpb24gYWNjZXB0cyB0aGUgY2FzZSB3aGVuIGEgc3Ry dWN0IHdpdGggYSBmbGV4aWJsZSBhcnJheSBtZW1iZXINCj4+ICsgICBpcyBlbWJlZGRlZCBpbnRv IGFub3RoZXIgc3RydWN0IChwb3NzaWJseSByZWN1cnNpdmVseSkuDQo+PiArICAgX19idWlsdGlu X29iamVjdF9zaXplIHdpbGwgdHJlYXQgc3VjaCBzdHJ1Y3QgYXMgZmxleGlibGUgc2l6ZSBwZXIN Cj4+ICsgICAtZnN0cmljdC1mbGV4LWFycmF5cy4gICovDQo+PiArLyogeyBkZy1kbyBydW4gfSAq Lw0KPj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3RyaWN0LWZsZXgtYXJyYXlzPTIiIH0gKi8N Cj4+ICsNCj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4+ICsNCj4+ICt1bnNpZ25lZCBuX2ZhaWxz ID0gMDsNCj4+ICsNCj4+ICsjZGVmaW5lIGV4cGVjdChwLCBfdikgZG8geyBcDQo+PiArICBzaXpl X3QgdiA9IF92OyBcDQo+PiArICBpZiAocCA9PSB2KSBcDQo+PiArICAgIHByaW50Zigib2s6ICAl cyA9PSAlemRcbiIsICNwLCBwKTsgXA0KPj4gKyAgZWxzZSB7XA0KPj4gKyAgICBwcmludGYoIldB VDogJXMgPT0gJXpkIChleHBlY3RlZCAlemQpXG4iLCAjcCwgcCwgdik7IFwNCj4+ICsgICAgbl9m YWlscysrOyBcDQo+PiArICB9IFwNCj4+ICt9IHdoaWxlICgwKTsNCj4+ICsNCj4+ICtzdHJ1Y3Qg QSB7DQo+PiArICBpbnQgbjsNCj4+ICsgIGNoYXIgZGF0YVtdOy8qIENvbnRlbnQgZm9sbG93aW5n IGhlYWRlciAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEIgew0KPj4gKyAgaW50IG07DQo+ PiArICBzdHJ1Y3QgQSBhOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEMgew0KPj4gKyAgaW50 IHE7DQo+PiArICBzdHJ1Y3QgQiBiOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEEwIHsNCj4+ ICsgIGludCBuOw0KPj4gKyAgY2hhciBkYXRhWzBdOy8qIENvbnRlbnQgZm9sbG93aW5nIGhlYWRl ciAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEIwIHsNCj4+ICsgIGludCBtOw0KPj4gKyAg c3RydWN0IEEwIGE7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgQzAgew0KPj4gKyAgaW50IHE7 DQo+PiArICBzdHJ1Y3QgQjAgYjsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBBMSB7DQo+PiAr ICBpbnQgbjsNCj4+ICsgIGNoYXIgZGF0YVsxXTsvKiBDb250ZW50IGZvbGxvd2luZyBoZWFkZXIg Ki8NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBCMSB7DQo+PiArICBpbnQgbTsNCj4+ICsgIHN0 cnVjdCBBMSBhOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEMxIHsNCj4+ICsgIGludCBxOw0K Pj4gKyAgc3RydWN0IEIxIGI7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgQW4gew0KPj4gKyAg aW50IG47DQo+PiArICBjaGFyIGRhdGFbOF07LyogQ29udGVudCBmb2xsb3dpbmcgaGVhZGVyICov DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgQm4gew0KPj4gKyAgaW50IG07DQo+PiArICBzdHJ1 Y3QgQW4gYTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBDbiB7DQo+PiArICBpbnQgcTsNCj4+ ICsgIHN0cnVjdCBCbiBiOw0KPj4gK307DQo+PiArDQo+PiArdm9sYXRpbGUgdm9pZCAqbWFnaWMx LCAqbWFnaWMyOw0KPj4gKw0KPj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ PiArew0KPj4gKyAgICBzdHJ1Y3QgQiAqb3V0ZXI7DQo+PiArICAgIHN0cnVjdCBDICpvdXRlc3Q7 DQo+PiArDQo+PiArICAgIC8qIE1ha2Ugc3VyZSBvcHRpbWl6YXRpb24gY2FuJ3QgZmluZCBzb21l IG90aGVyIG9iamVjdCBzaXplLiAqLw0KPj4gKyAgICBvdXRlciA9ICh2b2lkICopbWFnaWMxOw0K Pj4gKyAgICBvdXRlc3QgPSAodm9pZCAqKW1hZ2ljMjsNCj4+ICsNCj4+ICsgICAgZXhwZWN0KF9f YnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXItPmEsIDEpLCAtMSk7DQo+PiArICAgIGV4cGVjdChf X2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdC0+YiwgMSksIC0xKTsNCj4+ICsgICAgZXhwZWN0 KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0LT5iLmEsIDEpLCAtMSk7DQo+PiArDQo+PiAr ICAgIHN0cnVjdCBCMCAqb3V0ZXIwOw0KPj4gKyAgICBzdHJ1Y3QgQzAgKm91dGVzdDA7DQo+PiAr DQo+PiArICAgIC8qIE1ha2Ugc3VyZSBvcHRpbWl6YXRpb24gY2FuJ3QgZmluZCBzb21lIG90aGVy IG9iamVjdCBzaXplLiAqLw0KPj4gKyAgICBvdXRlcjAgPSAodm9pZCAqKW1hZ2ljMTsNCj4+ICsg ICAgb3V0ZXN0MCA9ICh2b2lkICopbWFnaWMyOw0KPj4gKw0KPj4gKyAgICBleHBlY3QoX19idWls dGluX29iamVjdF9zaXplKCZvdXRlcjAtPmEsIDEpLCAtMSk7DQo+PiArICAgIGV4cGVjdChfX2J1 aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdDAtPmIsIDEpLCAtMSk7DQo+PiArICAgIGV4cGVjdChf X2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdDAtPmIuYSwgMSksIC0xKTsNCj4+ICsNCj4+ICsg ICAgc3RydWN0IEIxICpvdXRlcjE7DQo+PiArICAgIHN0cnVjdCBDMSAqb3V0ZXN0MTsNCj4+ICsN Cj4+ICsgICAgLyogTWFrZSBzdXJlIG9wdGltaXphdGlvbiBjYW4ndCBmaW5kIHNvbWUgb3RoZXIg b2JqZWN0IHNpemUuICovDQo+PiArICAgIG91dGVyMSA9ICh2b2lkICopbWFnaWMxOw0KPj4gKyAg ICBvdXRlc3QxID0gKHZvaWQgKiltYWdpYzI7DQo+PiArDQo+PiArICAgIGV4cGVjdChfX2J1aWx0 aW5fb2JqZWN0X3NpemUoJm91dGVyMS0+YSwgMSksIHNpemVvZihvdXRlcjEtPmEpKTsNCj4+ICsg ICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0MS0+YiwgMSksIHNpemVvZihv dXRlc3QxLT5iKSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVz dDEtPmIuYSwgMSksIHNpemVvZihvdXRlc3QxLT5iLmEpKTsNCj4+ICsNCj4+ICsgICAgc3RydWN0 IEJuICpvdXRlcm47DQo+PiArICAgIHN0cnVjdCBDbiAqb3V0ZXN0bjsNCj4+ICsNCj4+ICsgICAg LyogTWFrZSBzdXJlIG9wdGltaXphdGlvbiBjYW4ndCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNp emUuICovDQo+PiArICAgIG91dGVybiA9ICh2b2lkICopbWFnaWMxOw0KPj4gKyAgICBvdXRlc3Ru ID0gKHZvaWQgKiltYWdpYzI7DQo+PiArDQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0 X3NpemUoJm91dGVybi0+YSwgMSksIHNpemVvZihvdXRlcm4tPmEpKTsNCj4+ICsgICAgZXhwZWN0 KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0bi0+YiwgMSksIHNpemVvZihvdXRlc3RuLT5i KSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdG4tPmIuYSwg MSksIHNpemVvZihvdXRlc3RuLT5iLmEpKTsNCj4+ICsNCj4+ICsgICAgaWYgKG5fZmFpbHMgPiAw KQ0KPj4gKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIDA7 DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tb2Jq ZWN0LXNpemUtcHIxMDE4MzItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmpl Y3Qtc2l6ZS1wcjEwMTgzMi00LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAw MDAwMDAwMDAwMC4uNDI0MjY0ZTJhY2QNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzItNC5jDQo+PiBAQCAt MCwwICsxLDEzNSBAQA0KPj4gKy8qIFBSIDEwMTgzMjogDQo+PiArICAgR0NDIGV4dGVuc2lvbiBh Y2NlcHRzIHRoZSBjYXNlIHdoZW4gYSBzdHJ1Y3Qgd2l0aCBhIGZsZXhpYmxlIGFycmF5IG1lbWJl cg0KPj4gKyAgIGlzIGVtYmVkZGVkIGludG8gYW5vdGhlciBzdHJ1Y3QgKHBvc3NpYmx5IHJlY3Vy c2l2ZWx5KS4NCj4+ICsgICBfX2J1aWx0aW5fb2JqZWN0X3NpemUgd2lsbCB0cmVhdCBzdWNoIHN0 cnVjdCBhcyBmbGV4aWJsZSBzaXplIHBlcg0KPj4gKyAgIC1mc3RyaWN0LWZsZXgtYXJyYXlzLiAg Ki8NCj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZz dHJpY3QtZmxleC1hcnJheXM9MyIgfSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxzdGRpby5oPg0K Pj4gKw0KPj4gK3Vuc2lnbmVkIG5fZmFpbHMgPSAwOw0KPj4gKw0KPj4gKyNkZWZpbmUgZXhwZWN0 KHAsIF92KSBkbyB7IFwNCj4+ICsgIHNpemVfdCB2ID0gX3Y7IFwNCj4+ICsgIGlmIChwID09IHYp IFwNCj4+ICsgICAgcHJpbnRmKCJvazogICVzID09ICV6ZFxuIiwgI3AsIHApOyBcDQo+PiArICBl bHNlIHtcDQo+PiArICAgIHByaW50ZigiV0FUOiAlcyA9PSAlemQgKGV4cGVjdGVkICV6ZClcbiIs ICNwLCBwLCB2KTsgXA0KPj4gKyAgICBuX2ZhaWxzKys7IFwNCj4+ICsgIH0gXA0KPj4gK30gd2hp bGUgKDApOw0KPj4gKw0KPj4gK3N0cnVjdCBBIHsNCj4+ICsgIGludCBuOw0KPj4gKyAgY2hhciBk YXRhW107LyogQ29udGVudCBmb2xsb3dpbmcgaGVhZGVyICovDQo+PiArfTsNCj4+ICsNCj4+ICtz dHJ1Y3QgQiB7DQo+PiArICBpbnQgbTsNCj4+ICsgIHN0cnVjdCBBIGE7DQo+PiArfTsNCj4+ICsN Cj4+ICtzdHJ1Y3QgQyB7DQo+PiArICBpbnQgcTsNCj4+ICsgIHN0cnVjdCBCIGI7DQo+PiArfTsN Cj4+ICsNCj4+ICtzdHJ1Y3QgQTAgew0KPj4gKyAgaW50IG47DQo+PiArICBjaGFyIGRhdGFbMF07 LyogQ29udGVudCBmb2xsb3dpbmcgaGVhZGVyICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3Qg QjAgew0KPj4gKyAgaW50IG07DQo+PiArICBzdHJ1Y3QgQTAgYTsNCj4+ICt9Ow0KPj4gKw0KPj4g K3N0cnVjdCBDMCB7DQo+PiArICBpbnQgcTsNCj4+ICsgIHN0cnVjdCBCMCBiOw0KPj4gK307DQo+ PiArDQo+PiArc3RydWN0IEExIHsNCj4+ICsgIGludCBuOw0KPj4gKyAgY2hhciBkYXRhWzFdOy8q IENvbnRlbnQgZm9sbG93aW5nIGhlYWRlciAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEIx IHsNCj4+ICsgIGludCBtOw0KPj4gKyAgc3RydWN0IEExIGE7DQo+PiArfTsNCj4+ICsNCj4+ICtz dHJ1Y3QgQzEgew0KPj4gKyAgaW50IHE7DQo+PiArICBzdHJ1Y3QgQjEgYjsNCj4+ICt9Ow0KPj4g Kw0KPj4gK3N0cnVjdCBBbiB7DQo+PiArICBpbnQgbjsNCj4+ICsgIGNoYXIgZGF0YVs4XTsvKiBD b250ZW50IGZvbGxvd2luZyBoZWFkZXIgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBCbiB7 DQo+PiArICBpbnQgbTsNCj4+ICsgIHN0cnVjdCBBbiBhOw0KPj4gK307DQo+PiArDQo+PiArc3Ry dWN0IENuIHsNCj4+ICsgIGludCBxOw0KPj4gKyAgc3RydWN0IEJuIGI7DQo+PiArfTsNCj4+ICsN Cj4+ICt2b2xhdGlsZSB2b2lkICptYWdpYzEsICptYWdpYzI7DQo+PiArDQo+PiAraW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBCICpvdXRlcjsN Cj4+ICsgICAgc3RydWN0IEMgKm91dGVzdDsNCj4+ICsNCj4+ICsgICAgLyogTWFrZSBzdXJlIG9w dGltaXphdGlvbiBjYW4ndCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+PiArICAg IG91dGVyID0gKHZvaWQgKiltYWdpYzE7DQo+PiArICAgIG91dGVzdCA9ICh2b2lkICopbWFnaWMy Ow0KPj4gKw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlci0+YSwg MSksIC0xKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0LT5i LCAxKSwgLTEpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3Qt PmIuYSwgMSksIC0xKTsNCj4+ICsNCj4+ICsgICAgc3RydWN0IEIwICpvdXRlcjA7DQo+PiArICAg IHN0cnVjdCBDMCAqb3V0ZXN0MDsNCj4+ICsNCj4+ICsgICAgLyogTWFrZSBzdXJlIG9wdGltaXph dGlvbiBjYW4ndCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+PiArICAgIG91dGVy MCA9ICh2b2lkICopbWFnaWMxOw0KPj4gKyAgICBvdXRlc3QwID0gKHZvaWQgKiltYWdpYzI7DQo+ PiArDQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVyMC0+YSwgMSks IHNpemVvZihvdXRlcjAtPmEpKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6 ZSgmb3V0ZXN0MC0+YiwgMSksIHNpemVvZihvdXRlc3QwLT5iKSk7DQo+PiArICAgIGV4cGVjdChf X2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdDAtPmIuYSwgMSksIHNpemVvZihvdXRlc3QwLT5i LmEpKTsNCj4+ICsNCj4+ICsgICAgc3RydWN0IEIxICpvdXRlcjE7DQo+PiArICAgIHN0cnVjdCBD MSAqb3V0ZXN0MTsNCj4+ICsNCj4+ICsgICAgLyogTWFrZSBzdXJlIG9wdGltaXphdGlvbiBjYW4n dCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+PiArICAgIG91dGVyMSA9ICh2b2lk ICopbWFnaWMxOw0KPj4gKyAgICBvdXRlc3QxID0gKHZvaWQgKiltYWdpYzI7DQo+PiArDQo+PiAr ICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVyMS0+YSwgMSksIHNpemVvZihv dXRlcjEtPmEpKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0 MS0+YiwgMSksIHNpemVvZihvdXRlc3QxLT5iKSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5f b2JqZWN0X3NpemUoJm91dGVzdDEtPmIuYSwgMSksIHNpemVvZihvdXRlc3QxLT5iLmEpKTsNCj4+ ICsNCj4+ICsgICAgc3RydWN0IEJuICpvdXRlcm47DQo+PiArICAgIHN0cnVjdCBDbiAqb3V0ZXN0 bjsNCj4+ICsNCj4+ICsgICAgLyogTWFrZSBzdXJlIG9wdGltaXphdGlvbiBjYW4ndCBmaW5kIHNv bWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+PiArICAgIG91dGVybiA9ICh2b2lkICopbWFnaWMx Ow0KPj4gKyAgICBvdXRlc3RuID0gKHZvaWQgKiltYWdpYzI7DQo+PiArDQo+PiArICAgIGV4cGVj dChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVybi0+YSwgMSksIHNpemVvZihvdXRlcm4tPmEp KTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0bi0+YiwgMSks IHNpemVvZihvdXRlc3RuLT5iKSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3Np emUoJm91dGVzdG4tPmIuYSwgMSksIHNpemVvZihvdXRlc3RuLT5iLmEpKTsNCj4+ICsNCj4+ICsg ICAgaWYgKG5fZmFpbHMgPiAwKQ0KPj4gKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4+ICsN Cj4+ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwLi44ZWQ2OTgwZWRmMA0KPj4gLS0tIC9kZXYvbnVsbA0K Pj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmplY3Qtc2l6ZS1wcjEwMTgz Mi5jDQo+PiBAQCAtMCwwICsxLDExOSBAQA0KPj4gKy8qIFBSIDEwMTgzMjogDQo+PiArICAgR0ND IGV4dGVuc2lvbiBhY2NlcHRzIHRoZSBjYXNlIHdoZW4gYSBzdHJ1Y3Qgd2l0aCBhIGZsZXhpYmxl IGFycmF5IG1lbWJlcg0KPj4gKyAgIGlzIGVtYmVkZGVkIGludG8gYW5vdGhlciBzdHJ1Y3QgKHBv c3NpYmx5IHJlY3Vyc2l2ZWx5KS4NCj4+ICsgICBfX2J1aWx0aW5fb2JqZWN0X3NpemUgd2lsbCB0 cmVhdCBzdWNoIHN0cnVjdCBhcyBmbGV4aWJsZSBzaXplIHBlcg0KPj4gKyAgIC1mc3RyaWN0LWZs ZXgtYXJyYXlzLiAgKi8NCj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+PiArLyogeyBkZy1vcHRp b25zICItTzIiIH0gKi8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4+ICsNCj4+ICt1 bnNpZ25lZCBuX2ZhaWxzID0gMDsNCj4+ICsNCj4+ICsjZGVmaW5lIGV4cGVjdChwLCBfdikgZG8g eyBcDQo+PiArICBzaXplX3QgdiA9IF92OyBcDQo+PiArICBpZiAocCA9PSB2KSBcDQo+PiArICAg IHByaW50Zigib2s6ICAlcyA9PSAlemRcbiIsICNwLCBwKTsgXA0KPj4gKyAgZWxzZSB7XA0KPj4g KyAgICBwcmludGYoIldBVDogJXMgPT0gJXpkIChleHBlY3RlZCAlemQpXG4iLCAjcCwgcCwgdik7 IFwNCj4+ICsgICAgbl9mYWlscysrOyBcDQo+PiArICB9IFwNCj4+ICt9IHdoaWxlICgwKTsNCj4+ ICsNCj4+ICtzdHJ1Y3QgQSB7DQo+PiArICBpbnQgbjsNCj4+ICsgIGNoYXIgZGF0YVtdOy8qIENv bnRlbnQgZm9sbG93aW5nIGhlYWRlciAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEIgew0K Pj4gKyAgaW50IG07DQo+PiArICBzdHJ1Y3QgQSBhOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0 IEMgew0KPj4gKyAgaW50IHE7DQo+PiArICBzdHJ1Y3QgQiBiOw0KPj4gK307DQo+PiArDQo+PiAr c3RydWN0IEEwIHsNCj4+ICsgIGludCBuOw0KPj4gKyAgY2hhciBkYXRhWzBdOy8qIENvbnRlbnQg Zm9sbG93aW5nIGhlYWRlciAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEIwIHsNCj4+ICsg IGludCBtOw0KPj4gKyAgc3RydWN0IEEwIGE7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgQzAg ew0KPj4gKyAgaW50IHE7DQo+PiArICBzdHJ1Y3QgQjAgYjsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0 cnVjdCBBMSB7DQo+PiArICBpbnQgbjsNCj4+ICsgIGNoYXIgZGF0YVsxXTsvKiBDb250ZW50IGZv bGxvd2luZyBoZWFkZXIgKi8NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBCMSB7DQo+PiArICBp bnQgbTsNCj4+ICsgIHN0cnVjdCBBMSBhOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IEMxIHsN Cj4+ICsgIGludCBxOw0KPj4gKyAgc3RydWN0IEIxIGI7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1 Y3QgQW4gew0KPj4gKyAgaW50IG47DQo+PiArICBjaGFyIGRhdGFbOF07LyogQ29udGVudCBmb2xs b3dpbmcgaGVhZGVyICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgQm4gew0KPj4gKyAgaW50 IG07DQo+PiArICBzdHJ1Y3QgQW4gYTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBDbiB7DQo+ PiArICBpbnQgcTsNCj4+ICsgIHN0cnVjdCBCbiBiOw0KPj4gK307DQo+PiArDQo+PiArdm9sYXRp bGUgdm9pZCAqbWFnaWMxLCAqbWFnaWMyOw0KPj4gKw0KPj4gK2ludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pDQo+PiArew0KPj4gKyAgICBzdHJ1Y3QgQiAqb3V0ZXIgPSAodm9pZCAqKW1h Z2ljMTsNCj4+ICsgICAgc3RydWN0IEMgKm91dGVzdCA9ICh2b2lkICopbWFnaWMyOw0KPj4gKw0K Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlci0+YSwgMSksIC0xKTsN Cj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0LT5iLCAxKSwgLTEp Ow0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3QtPmIuYSwgMSks IC0xKTsNCj4+ICsNCj4+ICsgICAgc3RydWN0IEIwICpvdXRlcjAgPSAodm9pZCAqKW1hZ2ljMTsN Cj4+ICsgICAgc3RydWN0IEMwICpvdXRlc3QwID0gKHZvaWQgKiltYWdpYzI7DQo+PiArDQo+PiAr ICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVyMC0+YSwgMSksIC0xKTsNCj4+ ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0MC0+YiwgMSksIC0xKTsN Cj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXN0MC0+Yi5hLCAxKSwg LTEpOw0KPj4gKw0KPj4gKyAgICBzdHJ1Y3QgQjEgKm91dGVyMSA9ICh2b2lkICopbWFnaWMxOw0K Pj4gKyAgICBzdHJ1Y3QgQzEgKm91dGVzdDEgPSAodm9pZCAqKW1hZ2ljMjsNCj4+ICsNCj4+ICsg ICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSgmb3V0ZXIxLT5hLCAxKSwgLTEpOw0KPj4g KyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3QxLT5iLCAxKSwgLTEpOw0K Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlc3QxLT5iLmEsIDEpLCAt MSk7DQo+PiArDQo+PiArICAgIHN0cnVjdCBCbiAqb3V0ZXJuID0gKHZvaWQgKiltYWdpYzE7DQo+ PiArICAgIHN0cnVjdCBDbiAqb3V0ZXN0biA9ICh2b2lkICopbWFnaWMyOw0KPj4gKw0KPj4gKyAg ICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKCZvdXRlcm4tPmEsIDEpLCAtMSk7DQo+PiAr ICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdG4tPmIsIDEpLCAtMSk7DQo+ PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUoJm91dGVzdG4tPmIuYSwgMSksIC0x KTsNCj4+ICsNCj4+ICsgICAgaWYgKG5fZmFpbHMgPiAwKQ0KPj4gKyAgICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBh L2djYy90cmVlLW9iamVjdC1zaXplLmNjIGIvZ2NjL3RyZWUtb2JqZWN0LXNpemUuY2MNCj4+IGlu ZGV4IDlhOTM2YTkxOTgzLi41NmI3OGNhMmE4YyAxMDA2NDQNCj4+IC0tLSBhL2djYy90cmVlLW9i amVjdC1zaXplLmNjDQo+PiArKysgYi9nY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYw0KPj4gQEAgLTUw MCw2ICs1MDAsNDIgQEAgZGVjbF9pbml0X3NpemUgKHRyZWUgZGVjbCwgYm9vbCBtaW4pDQo+PiAg IHJldHVybiBzaXplOw0KPj4gfQ0KPj4gDQo+PiArLyogRGV0ZXJtaW5lIHdoZXRoZXIgVFlQRSBp cyBhIHN0cnVjdHVyZSB3aXRoIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyDQo+PiArICAgcGVyIC1m c3RyaWN0LWZsZXgtYXJyYXkgb3IgYSB1bmlvbiBjb250YWluaW5nIHN1Y2ggYSBzdHJ1Y3R1cmUN Cj4+ICsgICAocG9zc2libHkgcmVjdXJzaXZlbHkpLiAgKi8NCj4+ICtzdGF0aWMgYm9vbA0KPj4g K2ZsZXhpYmxlX3NpemVfdHlwZV9wIChjb25zdF90cmVlIHR5cGUpDQo+PiArew0KPj4gKyAgdHJl ZSB4ID0gTlVMTF9UUkVFOw0KPj4gKyAgdHJlZSBsYXN0ID0gTlVMTF9UUkVFOw0KPj4gKyAgc3dp dGNoIChUUkVFX0NPREUgKHR5cGUpKQ0KPj4gKyAgICB7DQo+PiArICAgIGNhc2UgUkVDT1JEX1RZ UEU6DQo+PiArICAgICAgZm9yICh4ID0gVFlQRV9GSUVMRFMgKHR5cGUpOyB4ICE9IE5VTExfVFJF RTsgeCA9IERFQ0xfQ0hBSU4gKHgpKQ0KPj4gKwlpZiAoVFJFRV9DT0RFICh4KSA9PSBGSUVMRF9E RUNMKQ0KPj4gKwkgIGxhc3QgPSB4Ow0KPj4gKyAgICAgIGlmIChsYXN0ID09IE5VTExfVFJFRSkN Cj4+ICsJcmV0dXJuIGZhbHNlOw0KPj4gKyAgICAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAo bGFzdCkpID09IEFSUkFZX1RZUEUNCj4+ICsJICAmJiAhREVDTF9OT1RfRkxFWEFSUkFZIChsYXN0 KSkNCj4+ICsJcmV0dXJuIHRydWU7DQo+PiArICAgICAgZWxzZSBpZiAoVFJFRV9DT0RFIChUUkVF X1RZUEUgKGxhc3QpKSA9PSBSRUNPUkRfVFlQRQ0KPj4gKwkgICAgICAgfHwgVFJFRV9DT0RFIChU UkVFX1RZUEUgKGxhc3QpKSA9PSBVTklPTl9UWVBFKQ0KPj4gKwlyZXR1cm4gZmxleGlibGVfc2l6 ZV90eXBlX3AgKFRSRUVfVFlQRSAobGFzdCkpOw0KPiANCj4gRm9yIHR5cGVzIHdpdGggbWFueSBt ZW1iZXJzIHRoaXMgY2FuIGJlY29tZSBxdWl0ZSBzbG93IChJSVJDIHdlIGhhZA0KPiBidWdzIGFi b3V0IHNpbWlsYXIgd2Fsa3Mgb2YgYWxsIGZpZWxkcyBpbiB0eXBlcyksIGFuZCB0aGlzIGZ1bmN0 aW9uDQo+IGxvb2tzIGxpa2UgaXQncyBpbnZva2VkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1l IHR5cGUgcGVyIFRVLg0KPiANCj4gSW4gcHJpbmNpcGxlIHRoZSBwcm9wZXJ0eSBpcyBmaXhlZCBh dCB0aGUgdGltZSB3ZSBsYXkgb3V0IGEgcmVjb3JkDQo+IHR5cGUsIHNvIHdlIG1pZ2h0IHdhbnQg dG8gY29tcHV0ZSBpdCBhdCB0aGF0IHRpbWUgYW5kIHJlY29yZCB0aGUNCj4gcmVzdWx0Lg0KDQpZ b3UgbWVhbiBpbiBGRT8gDQoNClllcywgdGhhdOKAmXMgYmV0dGVyIGFuZCBjbGVhbmVyLiANCg0K SSB3aWxsIGFkZCBvbmUgbW9yZSBmaWVsZCBpbiB0aGUgVFlQRSBzdHJ1Y3R1cmUgdG8gcmVjb3Jk IHRoaXMgaW5mb3JtYXRpb24gYW5kIGNoZWNrIHRoaXMgZmllbGQgZHVyaW5nIG1pZGRsZSBlbmQu DQoNCkkgaGFkIHRoZSBzYW1lIHRob3VnaHQgaW4gdGhlIGJlZ2lubmluZywgYnV0IG5vdCBzdXJl IHdoZXRoZXIgYWRkaW5nIGEgbmV3IGZpZWxkIGluIElSIGlzIG5lY2Vzc2FyeSBvciBub3QsIG90 aGVyIHBsYWNlcyBpbiBtaWRkbGUgZW5kIG1pZ2h0IG5vdCB1c2UgdGhpcyBuZXcgZmllbGQuIA0K DQp0aGFua3MuDQoNClFpbmcNCg0KPiANCj4+ICsgICAgICByZXR1cm4gZmFsc2U7DQo+PiArICAg IGNhc2UgVU5JT05fVFlQRToNCj4+ICsgICAgICBmb3IgKHggPSBUWVBFX0ZJRUxEUyAodHlwZSk7 IHggIT0gTlVMTF9UUkVFOyB4ID0gREVDTF9DSEFJTiAoeCkpDQo+PiArCXsNCj4+ICsJICBpZiAo VFJFRV9DT0RFICh4KSA9PSBGSUVMRF9ERUNMDQo+PiArCSAgICAgICYmIGZsZXhpYmxlX2FycmF5 X3R5cGVfcCAoVFJFRV9UWVBFICh4KSkpDQo+PiArCSAgICByZXR1cm4gdHJ1ZTsNCj4+ICsJfQ0K Pj4gKyAgICAgIHJldHVybiBmYWxzZTsNCj4+ICsgICAgZGVmYXVsdDoNCj4+ICsgICAgICByZXR1 cm4gZmFsc2U7DQo+PiArICB9DQo+PiArfQ0KPj4gKw0KPj4gLyogQ29tcHV0ZSBfX2J1aWx0aW5f b2JqZWN0X3NpemUgZm9yIFBUUiwgd2hpY2ggaXMgYSBBRERSX0VYUFIuDQo+PiAgICBPQkpFQ1Rf U0laRV9UWVBFIGlzIHRoZSBzZWNvbmQgYXJndW1lbnQgZnJvbSBfX2J1aWx0aW5fb2JqZWN0X3Np emUuDQo+PiAgICBJZiB1bmtub3duLCByZXR1cm4gc2l6ZV91bmtub3duIChvYmplY3Rfc2l6ZV90 eXBlKS4gICovDQo+PiBAQCAtNjMzLDQ1ICs2NjksNjggQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3Ry dWN0IG9iamVjdF9zaXplX2luZm8gKm9zaSwgY29uc3RfdHJlZSBwdHIsDQo+PiAJCSAgICB2ID0g TlVMTF9UUkVFOw0KPj4gCQkgICAgYnJlYWs7DQo+PiAJCSAgY2FzZSBDT01QT05FTlRfUkVGOg0K Pj4gLQkJICAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IEFSUkFZX1RZUEUpDQo+ PiArCQkgICAgLyogV2hlbiB0aGUgcmVmIGlzIG5vdCB0byBhbiBhcnJheSwgYSByZWNvcmQgb3Ig YSB1bmlvbiwgaXQNCj4+ICsJCSAgICAgICB3aWxsIG5vdCBoYXZlIGZsZXhpYmxlIHNpemUsIGNv bXB1dGUgdGhlIG9iamVjdCBzaXplDQo+PiArCQkgICAgICAgZGlyZWN0bHkuICAqLw0KPj4gKwkJ ICAgIGlmICgoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHYpKSAhPSBBUlJBWV9UWVBFKQ0KPj4gKwkJ CSYmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IFJFQ09SRF9UWVBFKQ0KPj4gKwkJCSYm IChUUkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IFVOSU9OX1RZUEUpKQ0KPj4gCQkgICAgICB7 DQo+PiAJCQl2ID0gTlVMTF9UUkVFOw0KPj4gCQkJYnJlYWs7DQo+PiAJCSAgICAgIH0NCj4+IC0J CSAgICBpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmID0gYXJyYXlfcmVmX2ZsZXhpYmxlX3NpemVf cCAodik7DQo+PiAtCQkgICAgd2hpbGUgKHYgIT0gcHRfdmFyICYmIFRSRUVfQ09ERSAodikgPT0g Q09NUE9ORU5UX1JFRikNCj4+IC0JCSAgICAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJF RV9PUEVSQU5EICh2LCAwKSkpDQo+PiAtCQkJICAhPSBVTklPTl9UWVBFDQo+PiAtCQkJICAmJiBU UkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+PiAtCQkJICAhPSBR VUFMX1VOSU9OX1RZUEUpDQo+PiAtCQkJYnJlYWs7DQo+PiAtCQkgICAgICBlbHNlDQo+PiAtCQkJ diA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+PiAtCQkgICAgaWYgKFRSRUVfQ09ERSAodikgPT0g Q09NUE9ORU5UX1JFRg0KPj4gLQkJCSYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJB TkQgKHYsIDApKSkNCj4+IC0JCQkgICA9PSBSRUNPUkRfVFlQRSkNCj4+ICsJCSAgICAvKiBpZiB0 aGUgcmVjb3JkIG9yIHVuaW9uIGRvZXMgbm90IGhhdmUgZmxleGlibGUgc2l6ZQ0KPj4gKwkJICAg ICAgIGNvbXB1dGUgdGhlIG9iamVjdCBzaXplIGRpcmVjdGx5LiAgKi8NCj4+ICsJCSAgICBpZiAo VFJFRV9DT0RFIChUUkVFX1RZUEUgKHYpKSA9PSBSRUNPUkRfVFlQRQ0KPj4gKwkJCXx8IFRSRUVf Q09ERSAoVFJFRV9UWVBFICh2KSkgPT0gVU5JT05fVFlQRSkNCj4+IAkJICAgICAgew0KPj4gLQkJ CS8qIGNvbXB1dGUgb2JqZWN0IHNpemUgb25seSBpZiB2IGlzIG5vdCBhDQo+PiAtCQkJICAgZmxl eGlibGUgYXJyYXkgbWVtYmVyLiAgKi8NCj4+IC0JCQlpZiAoIWlzX2ZsZXhpYmxlX2FycmF5X21l bV9yZWYpDQo+PiArCQkJaWYgKCFmbGV4aWJsZV9zaXplX3R5cGVfcCAoVFJFRV9UWVBFICh2KSkp DQo+PiAJCQkgIHsNCj4+IAkJCSAgICB2ID0gTlVMTF9UUkVFOw0KPj4gCQkJICAgIGJyZWFrOw0K Pj4gCQkJICB9DQo+PiAtCQkJdiA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+PiArCQkJZWxzZQ0K Pj4gKwkJCSAgdiA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+PiAJCSAgICAgIH0NCj4+IC0JCSAg ICB3aGlsZSAodiAhPSBwdF92YXIgJiYgVFJFRV9DT0RFICh2KSA9PSBDT01QT05FTlRfUkVGKQ0K Pj4gLQkJICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDAp KSkNCj4+IC0JCQkgICE9IFVOSU9OX1RZUEUNCj4+IC0JCQkgICYmIFRSRUVfQ09ERSAoVFJFRV9U WVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+IC0JCQkgICE9IFFVQUxfVU5JT05fVFlQRSkN Cj4+IC0JCQlicmVhazsNCj4+IC0JCSAgICAgIGVsc2UNCj4+IC0JCQl2ID0gVFJFRV9PUEVSQU5E ICh2LCAwKTsNCj4+IC0JCSAgICBpZiAodiAhPSBwdF92YXIpDQo+PiAtCQkgICAgICB2ID0gTlVM TF9UUkVFOw0KPj4gCQkgICAgZWxzZQ0KPj4gLQkJICAgICAgdiA9IHB0X3ZhcjsNCj4+ICsJCSAg ICAgIHsNCj4+ICsJCQkvKiBOb3cgdGhlIHJlZiBpcyB0byBhbiBhcnJheSB0eXBlLiAgKi8NCj4+ ICsJCQlpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmDQo+PiArCQkJICA9IGFycmF5X3JlZl9mbGV4 aWJsZV9zaXplX3AgKHYpOw0KPj4gKwkJCXdoaWxlICh2ICE9IHB0X3ZhciAmJiBUUkVFX0NPREUg KHYpID09IENPTVBPTkVOVF9SRUYpDQo+PiArCQkJaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChU UkVFX09QRVJBTkQgKHYsIDApKSkNCj4+ICsJCQkgICAgICAhPSBVTklPTl9UWVBFDQo+PiArCQkJ ICAgICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+ICsJ CQkJICE9IFFVQUxfVU5JT05fVFlQRSkNCj4+ICsJCQkgIGJyZWFrOw0KPj4gKwkJCWVsc2UNCj4+ ICsJCQkgIHYgPSBUUkVFX09QRVJBTkQgKHYsIDApOw0KPj4gKwkJCWlmIChUUkVFX0NPREUgKHYp ID09IENPTVBPTkVOVF9SRUYNCj4+ICsJCQkgICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRS RUVfT1BFUkFORCAodiwgMCkpKQ0KPj4gKwkJCQkgPT0gUkVDT1JEX1RZUEUpDQo+PiArCQkJICB7 DQo+PiArCQkJICAgIC8qIGNvbXB1dGUgb2JqZWN0IHNpemUgb25seSBpZiB2IGlzIG5vdCBhDQo+ PiArCQkJICAgICAgIGZsZXhpYmxlIGFycmF5IG1lbWJlci4gICovDQo+PiArCQkJICAgIGlmICgh aXNfZmxleGlibGVfYXJyYXlfbWVtX3JlZikNCj4+ICsJCQkgICAgICB7DQo+PiArCQkJCXYgPSBO VUxMX1RSRUU7DQo+PiArCQkJCWJyZWFrOw0KPj4gKwkJCSAgICAgIH0NCj4+ICsJCQkgICAgdiA9 IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+PiArCQkJICB9DQo+PiArCQkJd2hpbGUgKHYgIT0gcHRf dmFyICYmIFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5UX1JFRikNCj4+ICsJCQkgIGlmIChUUkVF X0NPREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+PiArCQkJCSE9IFVOSU9O X1RZUEUNCj4+ICsJCQkgICAgICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5E ICh2LCAwKSkpDQo+PiArCQkJCSAgICE9IFFVQUxfVU5JT05fVFlQRSkNCj4+ICsJCQkgICAgYnJl YWs7DQo+PiArCQkJICBlbHNlDQo+PiArCQkJICAgIHYgPSBUUkVFX09QRVJBTkQgKHYsIDApOw0K Pj4gKwkJCWlmICh2ICE9IHB0X3ZhcikNCj4+ICsJCQkgIHYgPSBOVUxMX1RSRUU7DQo+PiArCQkJ ZWxzZQ0KPj4gKwkJCSAgdiA9IHB0X3ZhcjsNCj4+ICsJCSAgICAgIH0NCj4+IAkJICAgIGJyZWFr Ow0KPj4gCQkgIGRlZmF1bHQ6DQo+PiAJCSAgICB2ID0gcHRfdmFyOw0KPj4gDQo+IA0KPiAtLSAN Cj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiBTVVNFIFNvZnR3YXJlIFNv bHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJn LA0KPiBHZXJtYW55OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFs ZCwgQm91ZGllbiBNb2VybWFuOw0KPiBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCg0K