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 451B63858016 for ; Wed, 28 Sep 2022 19:17:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 451B63858016 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28SGx6i4005251; Wed, 28 Sep 2022 19:17:19 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=h42DfNvs97yAF6SfTTZqNtdwLiJqWeNwkIXXVlD4pRk=; b=LwflSXKpdg8PWfQferQtPe3OqWQO8onHJaqSDfDiTXH5MWhj7OClT/dA81lfXmZV6eEm 7V06gBlZHE9apyPUAuOPuV832yLLomEwPuKlfNRwR4QXJujTTffisGxMgN2mnfDT1fKf SCCqFzbem9qcSuZmJ6q0gEDrOiW0TYgvfTiI5EUxu51sw5CJxL1LBintP6TNW1Fd0nmd uoHqeeDCz57IF4HMXReCNjZSslUv2rdd30rlD2mOR8VVqCJFBKVWeqL1I3k+Bww/nAPL sgXhqeBV+XhMYYemXjDIlZA1t3w7LtutdWV65UMosVqzbppqWtsKnXtKu0WIS82iQN+Q /w== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jstet35vu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 28 Sep 2022 19:17:18 +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 28SIYA2L002310; Wed, 28 Sep 2022 19:17:17 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2047.outbound.protection.outlook.com [104.47.73.47]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jtps6ktsf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 28 Sep 2022 19:17:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AkLJJ2Vi/4DpcUYXSZFBKF5ohqANOt9ZNGurzS6a/QNLEGRzCvaBy/ienORMeaP8yS9/gBpna47/0KWUWkybmYemWFplp3y691csxCvrV7Pq+eGNLm46hnwtdMmboNuX9qohsiIYv1HTAPyCyq8dYBep3UpCLkMBH5oXMEn4JkLgRCKxX95r5aPDmG496rKMdHON0lC88lhaiXZ7xOtJW9AIJvo7EHl3/pEl/9FZ7E4kwFZ55HY5V6zw62pqZ+NXQhFlgrcmH/3tZwrGPs6Bj0DCBuB1tBBWNyN8QKZwjMpQNTdpP4ba47hpDEBAwD5txp9g3dhfOGOaAyboIJdDiQ== 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=h42DfNvs97yAF6SfTTZqNtdwLiJqWeNwkIXXVlD4pRk=; b=RCDqrqILM/7DsGX2ikRLBuqQGSDYNyxJiHiRxcMTGsX/VULtLKbdxl6mDEvNTYhQNTi89dJiiIeJUEVzThVAVb5Ue/3KALKZge2BcVGmPFcaqQaeNJdP/QXIaatDrej8O5Wa6XckebLGg4A1mJBeMyCp/tyotuwa6/qSDNvXRuXtUSYjiu9zWNa5YHeeWsjdG5nGGopYYTWTOZ+Ocr6OASuqDdf36PRTYc+lG5SZPXuJABI1iaQFZMtOFqQTnibFBbkPVqmEVVrXV3D9qWWm/uOB0Z5IMd3QoVdXmynu5U+PH6xvUbYgyfFZHyTV/jROFh/613asLduH/wsj3QJErg== 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=h42DfNvs97yAF6SfTTZqNtdwLiJqWeNwkIXXVlD4pRk=; b=zLzqr/U4o7yupa2SJTI6jTJxx68a5OReWZfbiGdV6kcBSuOeg6gUWk+DMuTbd4hmKr1qZlhFqU+ap+ns4OiUkFQXsslV7xtv1V7vY/iJUUKHtvuWmaZ83mx7eFWEFfCfoIc8mAuYO9TwmIzAjrwiltT9n9kPAxDpmSJOYEGUW6o= Received: from MN2PR10MB4349.namprd10.prod.outlook.com (2603:10b6:208:1d4::9) by DM6PR10MB4217.namprd10.prod.outlook.com (2603:10b6:5:218::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.25; Wed, 28 Sep 2022 19:17:14 +0000 Received: from MN2PR10MB4349.namprd10.prod.outlook.com ([fe80::8dc2:69dd:cda:4963]) by MN2PR10MB4349.namprd10.prod.outlook.com ([fe80::8dc2:69dd:cda:4963%7]) with mapi id 15.20.5654.026; Wed, 28 Sep 2022 19:17:14 +0000 From: Qing Zhao To: Martin Sebor CC: "gcc-patches@gcc.gnu.org" , Richard Biener , "jakub@redhat.com" , "keescook@chromium.org" , "joseph@codesourcery.com" Subject: Re: [GCC13][Patch][V4][PATCH 1/2] Add a new option -fstrict-flex-arrays[=n] and new attribute strict_flex_arrays Thread-Topic: [GCC13][Patch][V4][PATCH 1/2] Add a new option -fstrict-flex-arrays[=n] and new attribute strict_flex_arrays Thread-Index: AQHYwlDNoK120rNQuk6NL57vfqUeC63cCMIAgBlQbYA= Date: Wed, 28 Sep 2022 19:17:14 +0000 Message-ID: <90234BB4-BAFA-4528-AF95-BD1809B2D37B@oracle.com> References: <20220907002817.236178-1-qing.zhao@oracle.com> <20220907002817.236178-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: MN2PR10MB4349:EE_|DM6PR10MB4217:EE_ x-ms-office365-filtering-correlation-id: 34723ac9-ae2f-4457-2bd5-08daa1860d33 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Z4i/eq8G6iUE7V4K+tSGktUly3JSTv6+qkVBhzEshSR818UxoV/KI/GYnOHCay6Z3mEfsP9CxTPjjY3SoC8srq8ni9gcxCV42MBLKS/1ffi3+DrfVvbHB60npO4gOZJuCX1UY8i+1//l8Z6qn7ZnGbkcdQIOKY69q6u/HcaiLP8uz4earCAf+HR4LztD2hduzVV/YF9vfIAqv+JVQZT9PPDOAH9JJrAA8SKGmM36b+G2ZHIdeohvDbFgB1HDblwblA/JOngeqwYIAqyM9RLFXMimKozZNzu+ecq+MzkeZfcQHrbqSSEcCVL15Oi7IDPG1bqBYHpG3sNo+injp9jC6RyEAZsduujG6WO1NofJSbl37daxh11E3mTJERkH+uhR5W5KGjL+FEHNg8qQCAb+WNPOvBdzV9wr7Y+XXMBV/g806vs3Uee0AxvlZCzT7DtgKU2EZW5y2avYiX/8MwAjEz5L+VMMAjEbx76dwBYB6YroiwtoyZSJB2oViHTmMYbd/sg2DTdTuCLsqQ1tNONPW2axY30Xf6GXtmAAAnsyGf3t/rbpJ2b8ZK/MZTH3kjFOb6W57y4n9X9uIAUs9QvdOWG+9T2+Yyb0+c/AzbrHBjAuiBeewgfvrr/DJ+UP77GWiOsfUxM1JvHbOzYN06fXnA3MENq0ASmX14DI2gXO5slFOhSkP7gjty6hBxHeH1ZrTuZ3RxOHKyq7G2puWlLBdGscVdsqIz9vS96GvcU65HLAtoE5nDi3I+KRomUq6gH0vSsXloYTn8mZzbiCP1zpqth0+Zlwt0KsYzkX5699o8onTm29UYJ8VZejEh0B2It0+DSbE0vEfc2AtRiWTI13k5ftwbrc/X5ZV52Igh8R37DAU/1yh5vcabkGp+I/aIHm x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB4349.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(396003)(346002)(39860400002)(366004)(136003)(451199015)(36756003)(33656002)(66899015)(41300700001)(71200400001)(186003)(83380400001)(6512007)(44832011)(38070700005)(30864003)(122000001)(8936002)(86362001)(84970400001)(2906002)(66446008)(38100700002)(5660300002)(54906003)(66556008)(64756008)(6506007)(8676002)(66476007)(316002)(478600001)(966005)(6486002)(91956017)(53546011)(2616005)(6916009)(66946007)(4326008)(76116006)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?alhxZVJCWm9Fd29tUHBXVGxMOUE0cTV5SVc3aTBiYWxjMi83aXQycjdPNElL?= =?utf-8?B?VkxSU1lCUVRJZVNXd0JZQjZUdHFJd1JXb3N0RDBTUk9WaGpnbHRFTk5QNTFk?= =?utf-8?B?cjhsS1ZrdGpkeDk5d1ZZQjFrZUNhb29rWTluSDYrbjhvSVQycTZ1OG5BTlh5?= =?utf-8?B?QzFvT0lEdVoyaGxyQVNRelVJTk4rQ21CUlF3MU5tUU5ZeG1KckdsUktVWHdB?= =?utf-8?B?QTZHQVk0bXJnNmsxOGZNWVUrTWNRVmtuRnFkZmdPVDlSZUNtRG1OL2UrTTBF?= =?utf-8?B?WlNQOGM0K0RrMHpUYmlvNjJRVzNXWjEyc3F4YnVvZ3dQOGxkYlZXSnpTRTB4?= =?utf-8?B?SDM2dGVoT3RkMkhEdU9DejNlc3R1cmhJOWRaMHpac1AxUllkUGxMRXhpcGRj?= =?utf-8?B?ZHVqTnJwR1MxWDdIVjN4N21sV3hhR0JVNU9yamN4YW1jMERkYmUrOGpwUlJh?= =?utf-8?B?enBMUFQrcUx3YWNlckQvbndNeVZlRDVneTFJTUZZeTN3U3lUd3AwWE5lRm4z?= =?utf-8?B?TFE2SHd1V3MydW5jVlVNTGZLbEpDUmhUeVpFbk1paDNIRXR4dzQ0YlRyK0FR?= =?utf-8?B?NHdzUTQwMmJ1LzlVVXlOZnVQMHlTUkJWVEFnRkJRSXpXTVRTdGF2OXFlNGYz?= =?utf-8?B?RnRnOUQ3UE5KUU9jcHdNOEl6M2VtbGV4emppVUhadjEyNVVJOHhDQ0dTWWhi?= =?utf-8?B?ZnBIazlOYnJZMXRjQlZGWlp0MlFTcGl1UVgwVlVFVEowMTBBVUx3d1JGZkhm?= =?utf-8?B?NU1mbkc0T1JuNk1FakpnQUhicVhjZVFJcUtwbTZjcDVCblc4WS9NNGE1SEVR?= =?utf-8?B?TERIckZrRGRYV1RZdjRtRHBYUEdiUTFsS1Y5RVVPRmtMMitEdG4waGFlcW9i?= =?utf-8?B?VHAwenkrcFJXVVJLcGcyVnZKTWxWRHRPYXNqajVTL0orR2N3SllNaDVpa0JZ?= =?utf-8?B?UU0zUE5SVWJKenIrcU9yMkJLVzZaQjd4bXNuWHBiVWY3U0ExVlpWVW5CRURo?= =?utf-8?B?UUJDTlo1c0ltUzFaNHBlb2xTRG54K29JWG1EZCtqWnE0aHJ5RWsxTDdyS0w0?= =?utf-8?B?RjZUeHNldnpLL0tqNGtWVkpVODJ5cnF4MTVaVG9heVNxNFQ1Yk1PWHdaVFBx?= =?utf-8?B?TU5tWHpVRldwb0JUejdqUVVHcG5KL1Rodyt3TE9kb0JDcTQ0NjdRUjFzTzZE?= =?utf-8?B?TjFCRzdUaGFaSWJsdHUveUQ2aUpsNy9QZURSYTlGKzFhNktIQThXci9QNjYx?= =?utf-8?B?U0xRb0tDNmFXdFFnNUVORW5HT3VxUkh3WktWQTdoMk1Bc3VPSmdCY0VteWEy?= =?utf-8?B?R3RRdHd4U1VTYVZleHVyaTRCZ2Q1VWM0VHp2TWhJem9zdmlNYXhibFNUaEwy?= =?utf-8?B?ZVBMYzl2S0dVNlpYS2FST0lIVlR2TGNjRmdaVkhqck9uMWVCS1VvOWZmemFx?= =?utf-8?B?U3FiZVdGcStYNU8yQzFxNmZQV0hpRUFsQ2tPTE4wRGlVbEhxOGlnTWZ0dUti?= =?utf-8?B?S3doSlZuT2hSZjFSeUZiYktJd1RPdzNnM3BLMzhXU2VYWGJiWCtGbWpUOVlK?= =?utf-8?B?U2tOdEJpcFZ5Nk1LRDdMRnlKWEpVWTFZbnZ5RHpYM2o5dGpaUDgzazI1SDZF?= =?utf-8?B?djFzWDk0dzBXYnhRdG53MEpvYUJwY2VNMEFtNG8za2k3Mk9KRkw1M3hxc1My?= =?utf-8?B?K0VTRWFiZkhNQnJpeXpsODlybnpGbDVvbGk5NVYxbzYxWTR3TkpxYWgzZUEv?= =?utf-8?B?WTgvOTg0QzRmOWRUalBJMnpsdVZKRWpyRytIaWZIUFdrdm13NW01R2NENFIw?= =?utf-8?B?SE5oNlUzTnFETnVsYUdGMWFMOVFZaitSaTNlTWtpbzR1UXRkTU1sZFZSbjdj?= =?utf-8?B?NWhPY0VNZjJDWEhjQjUzRUFXOVRsZ1RwWVV3Q2Y5VjFydXBZZTcxUUhnSHdM?= =?utf-8?B?M0hzZVVXdmUrdVYwTG1sSlpOaVNCVXUyZ1B6Z3BWRzhlekRsQWw0L1JMK0U5?= =?utf-8?B?cmd2SnJBd0U4ZzNTbjdYb2RqRHZYb1Y0c1EyZE5YRUtjTTZGZ3FmL2FJVG81?= =?utf-8?B?UVNoeXJTYXV5dkcyay81MGpQWGZkWTJKbEFoSDBEMVJDcWRTSmxGbTVSRHZX?= =?utf-8?B?VExSUXRqRE9pd1Jib2dyYmMxZGxHNW1RY2tpL2hBRENwZDJwQkdMeTdXelU4?= =?utf-8?Q?kvsFlQNKkfQ2GO1iLcDDIj4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4349.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34723ac9-ae2f-4457-2bd5-08daa1860d33 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Sep 2022 19:17:14.5337 (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: JJhZ+tK57JtWr6NOELrSD7fT7EXb1CPBpANZxTE5HgVQb8p20/WobocFHxfz8PWwvX/zTSoomY/plCZCYN28Cg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4217 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-28_09,2022-09-28_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 phishscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209280115 X-Proofpoint-GUID: qht_7NAsxFyrn8uf522BgICylPbNgO7r X-Proofpoint-ORIG-GUID: qht_7NAsxFyrn8uf522BgICylPbNgO7r X-Spam-Status: No, score=-10.7 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: SGksIE1hcnRpbiwNCg0KVGhhbmtzIGZvciB0aGUgY29tbWVudHMuIEFuZCBzb3JyeSBmb3IgbXkg bGF0ZSByZXBseSB0aWxsIG5vdyAoSSBqdXN0IGNhbWUgYmFjayBob21lIGZyb20gTFBDLCBHTlUg Q2F1bGRyb24gYW5kIHRoZW4gYSBvbmUtd2VlayB2YWNhdGlvbiBhZnRlciB0aGF04oCmKQ0KDQo+ IE9uIFNlcCAxMiwgMjAyMiwgYXQgMTI6NDIgUE0sIE1hcnRpbiBTZWJvciA8bXNlYm9yQGdtYWls LmNvbT4gd3JvdGU6DQo+IA0KPiBPbiA5LzYvMjIgMTg6MjgsIFFpbmcgWmhhbyB3cm90ZToNCj4+ IEFkZCB0aGUgZm9sbG93aW5nIG5ldyBvcHRpb24gLWZzdHJpY3QtZmxleC1hcnJheXNbPW5dIGFu ZCBhIGNvcnJlc3BvbmRpbmcNCj4+IGF0dHJpYnV0ZSBzdHJpY3RfZmxleF9hcnJheXMgdG8gR0ND Og0KPj4gJy1mc3RyaWN0LWZsZXgtYXJyYXlzJw0KPj4gICAgICBUcmVhdCB0aGUgdHJhaWxpbmcg YXJyYXkgb2YgYSBzdHJ1Y3R1cmUgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXINCj4+ICAgICAg aW4gYSBzdHJpY3RlciB3YXkuDQo+IA0KPiBBIG1pbm9yIHByb2JsZW0gd2l0aCB0aGlzIHBocmFz aW5nIHdhcyBwb2ludGVkIG91dCBpbiB0aGUgcmV2aWV3DQo+IG9mIHRoZSBDbGFuZyBvcHRpb246 IGh0dHBzOi8vcmV2aWV3cy5sbHZtLm9yZy9EMTI2ODY0I2lubGluZS0xMjgyNzE2DQo+IEl0IHdv dWxkIGJlIGdvb2QgdG8gYXZvaWQgaXQgaGVyZS4NClllcywgSSBhZ3JlZS4NCg0KPiAgKEkgdGhp bmsgcXVhbGlmeWluZyB0aGUgc2VudGVuY2UNCj4gYnkgYWRkaW5nICJmb3IgdGhlIHB1cnBvc2Vz IG9mIGFjY2Vzc2luZyB0aGUgZWxlbWVudHMgb2Ygc3VjaCBhcnJheXMiDQo+IG1pZ2h0IGJlIG9u ZSB3YXkgdG8gZG8gaXQpLg0KDQpIb3cgYWJvdXQ6DQoNCictZnN0cmljdC1mbGV4LWFycmF5c+KA mQ0KICAgICBUcmVhdCB0aGUgdHJhaWxpbmcgYXJyYXkgb2YgYSBzdHJ1Y3R1cmUgYXMgYSB2YXJp YWJsZS1sZW5ndGggYXJyYXkNCiAgICAgIGluIGEgc3RyaWN0ZXIgd2F5Lg0KPw0KDQo+IA0KPj4g VGhlIHBvc2l0aXZlIGZvcm0gaXMgZXF1aXZhbGVudCB0bw0KPj4gICAgICAnLWZzdHJpY3QtZmxl eC1hcnJheXM9MycsIHdoaWNoIGlzIHRoZSBzdHJpY3Rlc3QuICBBIHRyYWlsaW5nIGFycmF5DQo+ PiAgICAgIGlzIHRyZWF0ZWQgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgb25seSB3aGVuIGl0 IGlzIGRlY2xhcmVkIGFzIGENCj4+ICAgICAgZmxleGlibGUgYXJyYXkgbWVtYmVyIHBlciBDOTkg c3RhbmRhcmQgb253YXJkcy4gIFRoZSBuZWdhdGl2ZSBmb3JtDQo+PiAgICAgIGlzIGVxdWl2YWxl bnQgdG8gJy1mc3RyaWN0LWZsZXgtYXJyYXlzPTAnLCB3aGljaCBpcyB0aGUgbGVhc3QNCj4+ICAg ICAgc3RyaWN0LiAgQWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzIGFyZSB0cmVhdGVk IGFzIGZsZXhpYmxlDQo+PiAgICAgIGFycmF5IG1lbWJlcnMuDQo+PiAnLWZzdHJpY3QtZmxleC1h cnJheXM9TEVWRUwnDQo+PiAgICAgIFRyZWF0IHRoZSB0cmFpbGluZyBhcnJheSBvZiBhIHN0cnVj dHVyZSBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4gICAgICBpbiBhIHN0cmljdGVyIHdh eS4gIFRoZSB2YWx1ZSBvZiBMRVZFTCBjb250cm9scyB0aGUgbGV2ZWwgb2YNCj4+ICAgICAgc3Ry aWN0bmVzcy4NCj4+ICAgICAgVGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBMRVZFTCBhcmUgdGhlIHNh bWUgYXMgZm9yIHRoZQ0KPj4gICAgICAnc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1dGUgKCpu b3RlIFZhcmlhYmxlIEF0dHJpYnV0ZXM6OikuDQo+PiAgICAgIFlvdSBjYW4gY29udHJvbCB0aGlz IGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIHRyYWlsaW5nIGFycmF5IGZpZWxkDQo+PiAgICAgIG9m IGEgc3RydWN0dXJlIGJ5IHVzaW5nIHRoZSB2YXJpYWJsZSBhdHRyaWJ1dGUgJ3N0cmljdF9mbGV4 X2FycmF5cycNCj4+ICAgICAgYXR0cmlidXRlICgqbm90ZSBWYXJpYWJsZSBBdHRyaWJ1dGVzOjop Lg0KPj4gJ3N0cmljdF9mbGV4X2FycmF5cyAoTEVWRUwpJw0KPj4gICAgICBUaGUgJ3N0cmljdF9m bGV4X2FycmF5cycgYXR0cmlidXRlIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUNCj4+ICAgICAg dHJhaWxpbmcgYXJyYXkgZmllbGQgb2YgYSBzdHJ1Y3R1cmUuICBJdCBzcGVjaWZpZXMgdGhlIGxl dmVsIG9mDQo+PiAgICAgIHN0cmljdG5lc3Mgb2YgdHJlYXRpbmcgdGhlIHRyYWlsaW5nIGFycmF5 IGZpZWxkIG9mIGEgc3RydWN0dXJlIGFzIGENCj4+ICAgICAgZmxleGlibGUgYXJyYXkgbWVtYmVy LiAgTEVWRUwgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlbiAwIHRvIDMuDQo+IA0KPiANCj4gU2lu Y2UgdGhlIGF0dHJpYnV0ZSBhcHBsaWVzIHRvIGp1c3QgYSBzaW5nbGUgYXJyYXkgZGVjbGFyYXRp b24gaXQNCj4gc2VlbXMgdGhhdCBpdHMgbmFtZSBzaG91bGQgYmUgc3RyaWN0X2ZsZXhfYXJyYXkg KGkuZS4sIHNpbmd1bGFyLA0KPiB3aXRob3V0IHRoZSB0cmFpbGluZyAncycpLg0KDQpXaWxsIG1h a2UgdGhlIGNoYW5nZSBhcyB5b3Ugc3VnZ2VzdGVkLg0KDQpUaGFua3MuDQoNClFpbmcNCj4gDQo+ IE1hcnRpbg0KPiANCj4+ICAgICAgTEVWRUw9MCBpcyB0aGUgbGVhc3Qgc3RyaWN0IGxldmVsLCBh bGwgdHJhaWxpbmcgYXJyYXlzIG9mDQo+PiAgICAgIHN0cnVjdHVyZXMgYXJlIHRyZWF0ZWQgYXMg ZmxleGlibGUgYXJyYXkgbWVtYmVycy4gIExFVkVMPTMgaXMgdGhlDQo+PiAgICAgIHN0cmljdGVz dCBsZXZlbCwgb25seSB3aGVuIHRoZSB0cmFpbGluZyBhcnJheSBpcyBkZWNsYXJlZCBhcyBhDQo+ PiAgICAgIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5IHN0YW5kYXJkIG9ud2FyZHMgKCdb XScpLCBpdCBpcw0KPj4gICAgICB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyLg0K Pj4gICAgICBUaGVyZSBhcmUgdHdvIG1vcmUgbGV2ZWxzIGluIGJldHdlZW4gMCBhbmQgMywgd2hp Y2ggYXJlIHByb3ZpZGVkIHRvDQo+PiAgICAgIHN1cHBvcnQgb2xkZXIgY29kZXMgdGhhdCB1c2Ug R0NDIHplcm8tbGVuZ3RoIGFycmF5IGV4dGVuc2lvbg0KPj4gICAgICAoJ1swXScpIG9yIG9uZS1z aXplIGFycmF5IGFzIGZsZXhpYmxlIGFycmF5IG1lbWJlciAoJ1sxXScpOiBXaGVuDQo+PiAgICAg IExFVkVMIGlzIDEsIHRoZSB0cmFpbGluZyBhcnJheSBpcyB0cmVhdGVkIGFzIGEgZmxleGlibGUg YXJyYXkNCj4+ICAgICAgbWVtYmVyIHdoZW4gaXQgaXMgZGVjbGFyZWQgYXMgZWl0aGVyICdbXScs ICdbMF0nLCBvciAnWzFdJzsgV2hlbg0KPj4gICAgICBMRVZFTCBpcyAyLCB0aGUgdHJhaWxpbmcg YXJyYXkgaXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5DQo+PiAgICAgIG1lbWJlciB3aGVu IGl0IGlzIGRlY2xhcmVkIGFzIGVpdGhlciAnW10nLCBvciAnWzBdJy4NCj4+ICAgICAgVGhpcyBh dHRyaWJ1dGUgY2FuIGJlIHVzZWQgd2l0aCBvciB3aXRob3V0IHRoZQ0KPj4gICAgICAnLWZzdHJp Y3QtZmxleC1hcnJheXMnLiAgV2hlbiBib3RoIHRoZSBhdHRyaWJ1dGUgYW5kIHRoZSBvcHRpb24N Cj4+ICAgICAgcHJlc2VudCBhdCB0aGUgc2FtZSB0aW1lLCB0aGUgbGV2ZWwgb2YgdGhlIHN0cmlj dG5lc3MgZm9yIHRoZQ0KPj4gICAgICBzcGVjaWZpYyB0cmFpbGluZyBhcnJheSBmaWVsZCBpcyBk ZXRlcm1pbmVkIGJ5IHRoZSBhdHRyaWJ1dGUuDQo+PiBnY2MvYy1mYW1pbHkvQ2hhbmdlTG9nOg0K Pj4gCSogYy1hdHRyaWJzLmNjIChoYW5kbGVfc3RyaWN0X2ZsZXhfYXJyYXlzX2F0dHJpYnV0ZSk6 IE5ldyBmdW5jdGlvbi4NCj4+IAkoY19jb21tb25fYXR0cmlidXRlX3RhYmxlKTogTmV3IGl0ZW0g Zm9yIHN0cmljdF9mbGV4X2FycmF5cy4NCj4+IAkqIGMub3B0OiAoZnN0cmljdC1mbGV4LWFycmF5 cyk6IE5ldyBvcHRpb24uDQo+PiAJKGZzdHJpY3QtZmxleC1hcnJheXM9KTogTmV3IG9wdGlvbi4N Cj4+IGdjYy9jL0NoYW5nZUxvZzoNCj4+IAkqIGMtZGVjbC5jYyAoZmxleGlibGVfYXJyYXlfbWVt YmVyX3R5cGVfcCk6IE5ldyBmdW5jdGlvbi4NCj4+IAkob25lX2VsZW1lbnRfYXJyYXlfdHlwZV9w KTogTGlrZXdpc2UuDQo+PiAJKHplcm9fbGVuZ3RoX2FycmF5X3R5cGVfcCk6IExpa2V3aXNlLg0K Pj4gCShhZGRfZmxleGlibGVfYXJyYXlfZWx0c190b19zaXplKTogQ2FsbCBuZXcgdXRpbGl0eQ0K Pj4gCXJvdXRpbmUgZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcC4NCj4+IAkoaXNfZmxleGli bGVfYXJyYXlfbWVtYmVyX3ApOiBOZXcgZnVuY3Rpb24uDQo+PiAJKGZpbmlzaF9zdHJ1Y3QpOiBT ZXQgdGhlIG5ldyBERUNMX05PVF9GTEVYQVJSQVkgZmxhZy4NCj4+IGdjYy9jcC9DaGFuZ2VMb2c6 DQo+PiAJKiBtb2R1bGUuY2MgKHRyZWVzX291dDo6Y29yZV9ib29scyk6IFN0cmVhbSBvdXQgbmV3 IGJpdA0KPj4gCWRlY2xfbm90X2ZsZXhhcnJheS4NCj4+IAkodHJlZXNfaW46OmNvcmVfYm9vbHMp OiBTdHJlYW0gaW4gbmV3IGJpdCBkZWNsX25vdF9mbGV4YXJyYXkuDQo+PiBnY2MvQ2hhbmdlTG9n Og0KPj4gCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBzdHJpY3RfZmxleF9hcnJheXMgYXR0 cmlidXRlLg0KPj4gCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtZnN0cmljdC1mbGV4LWFy cmF5c1s9bl0gb3B0aW9uLg0KPj4gCSogcHJpbnQtdHJlZS5jYyAocHJpbnRfbm9kZSk6IFByaW50 IG5ldyBiaXQgZGVjbF9ub3RfZmxleGFycmF5Lg0KPj4gCSogdHJlZS1jb3JlLmggKHN0cnVjdCB0 cmVlX2RlY2xfY29tbW9uKTogTmV3IGJpdCBmaWVsZA0KPj4gCWRlY2xfbm90X2ZsZXhhcnJheS4N Cj4+IAkqIHRyZWUtc3RyZWFtZXItaW4uY2MgKHVucGFja190c19kZWNsX2NvbW1vbl92YWx1ZV9m aWVsZHMpOiBTdHJlYW0NCj4+IAlpbiBuZXcgYml0IGRlY2xfbm90X2ZsZXhhcnJheS4NCj4+IAkq IHRyZWUtc3RyZWFtZXItb3V0LmNjIChwYWNrX3RzX2RlY2xfY29tbW9uX3ZhbHVlX2ZpZWxkcyk6 IFN0cmVhbQ0KPj4gCW91dCBuZXcgYml0IGRlY2xfbm90X2ZsZXhhcnJheS4NCj4+IAkqIHRyZWUu Y2MgKGFycmF5X2F0X3N0cnVjdF9lbmRfcCk6IFVwZGF0ZSBpdCB3aXRoIHRoZSBuZXcgYml0IGZp ZWxkDQo+PiAJZGVjbF9ub3RfZmxleGFycmF5Lg0KPj4gCSogdHJlZS5oIChERUNMX05PVF9GTEVY QVJSQVkpOiBOZXcgZmxhZy4NCj4+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPj4gCSogZysr LmRnL3N0cmljdC1mbGV4LWFycmF5LTEuQzogTmV3IHRlc3QuDQo+PiAJKiBnY2MuZGcvc3RyaWN0 LWZsZXgtYXJyYXktMS5jOiBOZXcgdGVzdC4NCj4+IC0tLQ0KPj4gIGdjYy9jLWZhbWlseS9jLWF0 dHJpYnMuY2MgICAgICAgICAgICAgICAgICB8ICA0NyArKysrKysrKw0KPj4gIGdjYy9jLWZhbWls eS9jLm9wdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArKw0KPj4gIGdjYy9jL2MtZGVj bC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzMCArKysrKysrKysrKysrKysrKysr LS0NCj4+ICBnY2MvY3AvbW9kdWxlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Kw0KPj4gIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSAr KysrDQo+PiAgZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3 ICsrKystDQo+PiAgZ2NjL3ByaW50LXRyZWUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA4ICstDQo+PiAgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5DIHwg IDMxICsrKysrDQo+PiAgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5j IHwgIDMxICsrKysrDQo+PiAgZ2NjL3RyZWUtY29yZS5oICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA1ICstDQo+PiAgZ2NjL3RyZWUtc3RyZWFtZXItaW4uY2MgICAgICAgICAgICAgICAg ICAgIHwgICAxICsNCj4+ICBnY2MvdHJlZS1zdHJlYW1lci1vdXQuY2MgICAgICAgICAgICAgICAg ICAgfCAgIDEgKw0KPj4gIGdjYy90cmVlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA0NSArKysrKy0tDQo+PiAgZ2NjL3RyZWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE0ICsrLQ0KPj4gIDE0IGZpbGVzIGNoYW5nZWQsIDM0NiBpbnNlcnRpb25zKCsp LCAyOCBkZWxldGlvbnMoLSkNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5DDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuYw0KPj4gZGlmZiAtLWdpdCBhL2dj Yy9jLWZhbWlseS9jLWF0dHJpYnMuY2MgYi9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmNjDQo+PiBp bmRleCA4YmI4MGUyNTFkYzIuLjBiZWNkNGJiZThkMiAxMDA2NDQNCj4+IC0tLSBhL2djYy9jLWZh bWlseS9jLWF0dHJpYnMuY2MNCj4+ICsrKyBiL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4+ IEBAIC0xMDEsNiArMTAxLDggQEAgc3RhdGljIHRyZWUgaGFuZGxlX3NwZWNpYWxfdmFyX3NlY19h dHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOw0KPj4gIHN0YXRpYyB0 cmVlIGhhbmRsZV9hbGlnbmVkX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJv b2wgKik7DQo+PiAgc3RhdGljIHRyZWUgaGFuZGxlX3dhcm5faWZfbm90X2FsaWduZWRfYXR0cmli dXRlICh0cmVlICosIHRyZWUsIHRyZWUsDQo+PiAgCQkJCQkJICBpbnQsIGJvb2wgKik7DQo+PiAr c3RhdGljIHRyZWUgaGFuZGxlX3N0cmljdF9mbGV4X2FycmF5c19hdHRyaWJ1dGUgKHRyZWUgKiwg dHJlZSwgdHJlZSwNCj4+ICsJCQkJCQkgaW50LCBib29sICopOw0KPj4gIHN0YXRpYyB0cmVlIGhh bmRsZV93ZWFrX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKikgOw0K Pj4gIHN0YXRpYyB0cmVlIGhhbmRsZV9ub3BsdF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJl ZSwgaW50LCBib29sICopIDsNCj4+ICBzdGF0aWMgdHJlZSBoYW5kbGVfYWxpYXNfaWZ1bmNfYXR0 cmlidXRlIChib29sLCB0cmVlICosIHRyZWUsIHRyZWUsIGJvb2wgKik7DQo+PiBAQCAtMzY4LDYg KzM3MCw4IEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1vbl9hdHRyaWJ1dGVf dGFibGVbXSA9DQo+PiAgCSAgICAgICAgICAgICAgICAgICAgICBhdHRyX2FsaWduZWRfZXhjbHVz aW9ucyB9LA0KPj4gICAgeyAid2Fybl9pZl9ub3RfYWxpZ25lZCIsICAgIDAsIDEsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLA0KPj4gIAkJCSAgICAgIGhhbmRsZV93YXJuX2lmX25vdF9hbGln bmVkX2F0dHJpYnV0ZSwgTlVMTCB9LA0KPj4gKyAgeyAic3RyaWN0X2ZsZXhfYXJyYXlzIiwgICAg ICAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwNCj4+ICsJCQkgICAgICBoYW5kbGVf c3RyaWN0X2ZsZXhfYXJyYXlzX2F0dHJpYnV0ZSwgTlVMTCB9LA0KPj4gICAgeyAid2VhayIsICAg ICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLA0KPj4gIAkJ CSAgICAgIGhhbmRsZV93ZWFrX2F0dHJpYnV0ZSwgTlVMTCB9LA0KPj4gICAgeyAibm9wbHQiLCAg ICAgICAgICAgICAgICAgICAwLCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwNCj4+IEBA IC0yNTA1LDYgKzI1MDksNDkgQEAgaGFuZGxlX3dhcm5faWZfbm90X2FsaWduZWRfYXR0cmlidXRl ICh0cmVlICpub2RlLCB0cmVlIG5hbWUsDQo+PiAgCQkJCQkgIG5vX2FkZF9hdHRycywgdHJ1ZSk7 DQo+PiAgfQ0KPj4gICsvKiBIYW5kbGUgYSAic3RyaWN0X2ZsZXhfYXJyYXlzIiBhdHRyaWJ1dGU7 IGFyZ3VtZW50cyBhcyBpbg0KPj4gKyAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAg Ki8NCj4+ICsNCj4+ICtzdGF0aWMgdHJlZQ0KPj4gK2hhbmRsZV9zdHJpY3RfZmxleF9hcnJheXNf YXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsDQo+PiArCQkJCSAgICAgdHJlZSBhcmdz LCBpbnQgQVJHX1VOVVNFRCAoZmxhZ3MpLA0KPj4gKwkJCQkgICAgIGJvb2wgKm5vX2FkZF9hdHRy cykNCj4+ICt7DQo+PiArICB0cmVlIGRlY2wgPSAqbm9kZTsNCj4+ICsgIHRyZWUgYXJndmFsID0g VFJFRV9WQUxVRSAoYXJncyk7DQo+PiArDQo+PiArICAvKiBUaGlzIGF0dHJpYnV0ZSBvbmx5IGFw cGxpZXMgdG8gZmllbGQgZGVjbHMgb2YgYSBzdHJ1Y3R1cmUuICAqLw0KPj4gKyAgaWYgKFRSRUVf Q09ERSAoZGVjbCkgIT0gRklFTERfREVDTCkNCj4+ICsgICAgew0KPj4gKyAgICAgIGVycm9yX2F0 IChERUNMX1NPVVJDRV9MT0NBVElPTiAoZGVjbCksDQo+PiArCQkiJXFFIGF0dHJpYnV0ZSBtYXkg bm90IGJlIHNwZWNpZmllZCBmb3IgJXErRCIsIG5hbWUsIGRlY2wpOw0KPj4gKyAgICAgICpub19h ZGRfYXR0cnMgPSB0cnVlOw0KPj4gKyAgICB9DQo+PiArICAvKiBUaGlzIGF0dHJpYnV0ZSBvbmx5 IGFwcGxpZXMgdG8gZmllbGQgd2l0aCBhcnJheSB0eXBlLiAgKi8NCj4+ICsgIGVsc2UgaWYgKFRS RUVfQ09ERSAoVFJFRV9UWVBFIChkZWNsKSkgIT0gQVJSQVlfVFlQRSkNCj4+ICsgICAgew0KPj4g KyAgICAgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoZGVjbCksDQo+PiArCQkiJXFF IGF0dHJpYnV0ZSBtYXkgbm90IGJlIHNwZWNpZmllZCBmb3IgYSBub24tYXJyYXkgZmllbGQiLA0K Pj4gKwkJbmFtZSk7DQo+PiArICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7DQo+PiArICAgIH0N Cj4+ICsgIGVsc2UgaWYgKFRSRUVfQ09ERSAoYXJndmFsKSAhPSBJTlRFR0VSX0NTVCkNCj4+ICsg ICAgew0KPj4gKyAgICAgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoZGVjbCksDQo+ PiArCQkiJXFFIGF0dHJpYnV0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdlciIsIG5hbWUpOw0KPj4g KyAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOw0KPj4gKyAgICB9DQo+PiArICBlbHNlIGlmICgh dHJlZV9maXRzX3Vod2lfcCAoYXJndmFsKSB8fCB0cmVlX3RvX3Vod2kgKGFyZ3ZhbCkgPiAzKQ0K Pj4gKyAgICB7DQo+PiArICAgICAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWNs KSwNCj4+ICsJCSIlcUUgYXR0cmlidXRlIGFyZ3VtZW50ICVxRSBpcyBub3QgYW4gaW50ZWdlciBj b25zdGFudCINCj4+ICsJCSIgYmV0d2VlbiAwIGFuZCAzIiwgbmFtZSwgYXJndmFsKTsNCj4+ICsg ICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgcmV0dXJu IE5VTExfVFJFRTsNCj4+ICt9DQo+PiArDQo+PiAgLyogSGFuZGxlIGEgIndlYWsiIGF0dHJpYnV0 ZTsgYXJndW1lbnRzIGFzIGluDQo+PiAgICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIu ICAqLw0KPj4gIGRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkv Yy5vcHQNCj4+IGluZGV4IDQ1MTU2NjRhYTU5MC4uZTA1M2JkOTM5NTU5IDEwMDY0NA0KPj4gLS0t IGEvZ2NjL2MtZmFtaWx5L2Mub3B0DQo+PiArKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQNCj4+IEBA IC0yMDcyLDYgKzIwNzIsMTMgQEAgZnNpemVkLWRlYWxsb2NhdGlvbg0KPj4gIEMrKyBPYmpDKysg VmFyKGZsYWdfc2l6ZWRfZGVhbGxvY2F0aW9uKSBJbml0KC0xKQ0KPj4gIEVuYWJsZSBDKysxNCBz aXplZCBkZWFsbG9jYXRpb24gc3VwcG9ydC4NCj4+ICArZnN0cmljdC1mbGV4LWFycmF5cw0KPj4g K0MgQysrIENvbW1vbiBBbGlhcyhmc3RyaWN0LWZsZXgtYXJyYXlzPSwzLDApDQo+PiArDQo+PiAr ZnN0cmljdC1mbGV4LWFycmF5cz0NCj4+ICtDIEMrKyBDb21tb24gSm9pbmVkIFJlamVjdE5lZ2F0 aXZlIFVJbnRlZ2VyIFZhcihmbGFnX3N0cmljdF9mbGV4X2FycmF5cykgSW5pdCgwKSBJbnRlZ2Vy UmFuZ2UoMCwzKQ0KPj4gKy1mc3RyaWN0LWZsZXgtYXJyYXlzPTxsZXZlbD4gICAgVHJlYXQgdGhl IHRyYWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJyYXkgaW4gYSBz dHJpY3RlciB3YXkuICBUaGUgZGVmYXVsdCBpcyB0cmVhdGluZyBhbGwgdHJhaWxpbmcgYXJyYXlz IG9mIHN0cnVjdHVyZXMgYXMgZmxleGlibGUgYXJyYXlzLg0KPj4gKw0KPj4gIGZzcXVhbmdsZQ0K Pj4gIEMrKyBPYmpDKysgV2FyblJlbW92ZWQNCj4+ICBkaWZmIC0tZ2l0IGEvZ2NjL2MvYy1kZWNs LmNjIGIvZ2NjL2MvYy1kZWNsLmNjDQo+PiBpbmRleCAzNGY4ZmVkYTg5N2YuLmVlOTA4MDhiY2Iw ZSAxMDA2NDQNCj4+IC0tLSBhL2djYy9jL2MtZGVjbC5jYw0KPj4gKysrIGIvZ2NjL2MvYy1kZWNs LmNjDQo+PiBAQCAtNTAwNSw2ICs1MDA1LDQxIEBAIHNldF9hcnJheV9kZWNsYXJhdG9yX2lubmVy IChzdHJ1Y3QgY19kZWNsYXJhdG9yICpkZWNsLA0KPj4gICAgcmV0dXJuIGRlY2w7DQo+PiAgfQ0K Pj4gICsvKiBEZXRlcm1pbmUgd2hldGhlciBUWVBFIGlzIGEgSVNPIEM5OSBmbGV4aWJsZSBhcnJh eSBtZW1lYmVyIHR5cGUgIltdIi4gICovDQo+PiArc3RhdGljIGJvb2wNCj4+ICtmbGV4aWJsZV9h cnJheV9tZW1iZXJfdHlwZV9wIChjb25zdF90cmVlIHR5cGUpDQo+PiArew0KPj4gKyAgaWYgKFRS RUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRQ0KPj4gKyAgICAgICYmIFRZUEVfU0laRSAodHlw ZSkgPT0gTlVMTF9UUkVFDQo+PiArICAgICAgJiYgVFlQRV9ET01BSU4gKHR5cGUpICE9IE5VTExf VFJFRQ0KPj4gKyAgICAgICYmIFRZUEVfTUFYX1ZBTFVFIChUWVBFX0RPTUFJTiAodHlwZSkpID09 IE5VTExfVFJFRSkNCj4+ICsgICAgcmV0dXJuIHRydWU7DQo+PiArDQo+PiArICByZXR1cm4gZmFs c2U7DQo+PiArfQ0KPj4gKw0KPj4gKy8qIERldGVybWluZSB3aGV0aGVyIFRZUEUgaXMgYSBvbmUt ZWxlbWVudCBhcnJheSB0eXBlICJbMV0iLiAgKi8NCj4+ICtzdGF0aWMgYm9vbA0KPj4gK29uZV9l bGVtZW50X2FycmF5X3R5cGVfcCAoY29uc3RfdHJlZSB0eXBlKQ0KPj4gK3sNCj4+ICsgIGlmIChU UkVFX0NPREUgKHR5cGUpICE9IEFSUkFZX1RZUEUpDQo+PiArICAgIHJldHVybiBmYWxzZTsNCj4+ ICsgIHJldHVybiBpbnRlZ2VyX3plcm9wIChhcnJheV90eXBlX25lbHRzICh0eXBlKSk7DQo+PiAr fQ0KPj4gKw0KPj4gKy8qIERldGVybWluZSB3aGV0aGVyIFRZUEUgaXMgYSB6ZXJvLWxlbmd0aCBh cnJheSB0eXBlICJbMF0iLiAgKi8NCj4+ICtzdGF0aWMgYm9vbA0KPj4gK3plcm9fbGVuZ3RoX2Fy cmF5X3R5cGVfcCAoY29uc3RfdHJlZSB0eXBlKQ0KPj4gK3sNCj4+ICsgIGlmIChUUkVFX0NPREUg KHR5cGUpID09IEFSUkFZX1RZUEUpDQo+PiArICAgIGlmICh0cmVlIHR5cGVfc2l6ZSA9IFRZUEVf U0laRV9VTklUICh0eXBlKSkNCj4+ICsgICAgICBpZiAoKGludGVnZXJfemVyb3AgKHR5cGVfc2l6 ZSkpDQo+PiArCSAgICYmIFRZUEVfRE9NQUlOICh0eXBlKSAhPSBOVUxMX1RSRUUNCj4+ICsJICAg JiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOICh0eXBlKSkgPT0gTlVMTF9UUkVFKQ0KPj4g KwlyZXR1cm4gdHJ1ZTsNCj4+ICsgIHJldHVybiBmYWxzZTsNCj4+ICt9DQo+PiArDQo+PiAgLyog SU5JVCBpcyBhIGNvbnN0cnVjdG9yIHRoYXQgZm9ybXMgREVDTCdzIGluaXRpYWxpemVyLiAgSWYg dGhlIGZpbmFsDQo+PiAgICAgZWxlbWVudCBpbml0aWFsaXplcyBhIGZsZXhpYmxlIGFycmF5IGZp ZWxkLCBhZGQgdGhlIHNpemUgb2YgdGhhdA0KPj4gICAgIGluaXRpYWxpemVyIHRvIERFQ0wncyBz aXplLiAgKi8NCj4+IEBAIC01MDE5LDEwICs1MDU0LDcgQEAgYWRkX2ZsZXhpYmxlX2FycmF5X2Vs dHNfdG9fc2l6ZSAodHJlZSBkZWNsLCB0cmVlIGluaXQpDQo+PiAgICAgIGVsdCA9IENPTlNUUlVD VE9SX0VMVFMgKGluaXQpLT5sYXN0ICgpLnZhbHVlOw0KPj4gICAgdHlwZSA9IFRSRUVfVFlQRSAo ZWx0KTsNCj4+IC0gIGlmIChUUkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZUEUNCj4+IC0gICAg ICAmJiBUWVBFX1NJWkUgKHR5cGUpID09IE5VTExfVFJFRQ0KPj4gLSAgICAgICYmIFRZUEVfRE9N QUlOICh0eXBlKSAhPSBOVUxMX1RSRUUNCj4+IC0gICAgICAmJiBUWVBFX01BWF9WQUxVRSAoVFlQ RV9ET01BSU4gKHR5cGUpKSA9PSBOVUxMX1RSRUUpDQo+PiArICBpZiAoZmxleGlibGVfYXJyYXlf bWVtYmVyX3R5cGVfcCAodHlwZSkpDQo+PiAgICAgIHsNCj4+ICAgICAgICBjb21wbGV0ZV9hcnJh eV90eXBlICgmdHlwZSwgZWx0LCBmYWxzZSk7DQo+PiAgICAgICAgREVDTF9TSVpFIChkZWNsKQ0K Pj4gQEAgLTg3MTAsNiArODc0Miw4MSBAQCBmaW5pc2hfaW5jb21wbGV0ZV92YXJzICh0cmVlIGlu Y29tcGxldGVfdmFycywgYm9vbCB0b3BsZXZlbCkNCj4+ICAgICAgfQ0KPj4gIH0NCj4+ICArDQo+ PiArLyogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIEZJRUxEX0RFQ0wgWCBpcyBhIGZsZXhpYmxlIGFy cmF5IG1lbWJlciBhY2NvcmRpbmcgdG8NCj4+ICsgICB0aGUgZm9sbG93aW5nIGluZm86DQo+PiAr ICBBLiB3aGV0aGVyIHRoZSBGSUVMRF9ERUNMIFggaXMgdGhlIGxhc3QgZmllbGQgb2YgdGhlIERF Q0xfQ09OVEVYVDsNCj4+ICsgIEIuIHdoZXRoZXIgdGhlIEZJRUxEX0RFQ0wgaXMgYW4gYXJyYXkg dGhhdCBpcyBkZWNsYXJlZCBhcyAiW10iLCAiWzBdIiwNCj4+ICsgICAgIG9yICJbMV0iOw0KPj4g KyAgQy4gZmxhZ19zdHJpY3RfZmxleF9hcnJheXM7DQo+PiArICBELiB0aGUgYXR0cmlidXRlIHN0 cmljdF9mbGV4X2FycmF5IHRoYXQgaXMgYXR0YWNoZWQgdG8gdGhlIGZpZWxkDQo+PiArICAgICBp ZiBwcmVzZW50aW5nLg0KPj4gKyAgUmV0dXJuIFRSVUUgd2hlbiBpdCdzIGEgZmxleGlibGUgYXJy YXkgbWVtYmVyLCBGQUxTRSBvdGhlcndpc2UuICAqLw0KPj4gKw0KPj4gK3N0YXRpYyBib29sDQo+ PiAraXNfZmxleGlibGVfYXJyYXlfbWVtYmVyX3AgKGJvb2wgaXNfbGFzdF9maWVsZCwNCj4+ICsJ CQkgICAgdHJlZSB4KQ0KPj4gK3sNCj4+ICsgIC8qIGlmIG5vdCB0aGUgbGFzdCBmaWVsZCwgcmV0 dXJuIGZhbHNlLiAgKi8NCj4+ICsgIGlmICghaXNfbGFzdF9maWVsZCkNCj4+ICsgICAgcmV0dXJu IGZhbHNlOw0KPj4gKw0KPj4gKyAgLyogaWYgbm90IGFuIGFycmF5IGZpZWxkLCByZXR1cm4gZmFs c2UuICAqLw0KPj4gKyAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh4KSkgIT0gQVJSQVlfVFlQ RSkNCj4+ICsgICAgcmV0dXJuIGZhbHNlOw0KPj4gKw0KPj4gKyAgYm9vbCBpc196ZXJvX2xlbmd0 aF9hcnJheSA9IHplcm9fbGVuZ3RoX2FycmF5X3R5cGVfcCAoVFJFRV9UWVBFICh4KSk7DQo+PiAr ICBib29sIGlzX29uZV9lbGVtZW50X2FycmF5ID0gb25lX2VsZW1lbnRfYXJyYXlfdHlwZV9wIChU UkVFX1RZUEUgKHgpKTsNCj4+ICsgIGJvb2wgaXNfZmxleGlibGVfYXJyYXkgPSBmbGV4aWJsZV9h cnJheV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUgKHgpKTsNCj4+ICsNCj4+ICsgIHVuc2lnbmVk IGludCBzdHJpY3RfZmxleF9hcnJheV9sZXZlbCA9IGZsYWdfc3RyaWN0X2ZsZXhfYXJyYXlzOw0K Pj4gKw0KPj4gKyAgdHJlZSBhdHRyX3N0cmljdF9mbGV4X2FycmF5ID0gbG9va3VwX2F0dHJpYnV0 ZSAoInN0cmljdF9mbGV4X2FycmF5cyIsDQo+PiArCQkJCQkJICBERUNMX0FUVFJJQlVURVMgKHgp KTsNCj4+ICsgIC8qIGlmIHRoZXJlIGlzIGEgc3RyaWN0X2ZsZXhfYXJyYXkgYXR0cmlidXRlIGF0 dGFjaGVkIHRvIHRoZSBmaWVsZCwNCj4+ICsgICAgIG92ZXJyaWRlIHRoZSBmbGFnX3N0cmljdF9m bGV4X2FycmF5cy4gICovDQo+PiArICBpZiAoYXR0cl9zdHJpY3RfZmxleF9hcnJheSkNCj4+ICsg ICAgew0KPj4gKyAgICAgIC8qIGdldCB0aGUgdmFsdWUgb2YgdGhlIGxldmVsIGZpcnN0IGZyb20g dGhlIGF0dHJpYnV0ZS4gICovDQo+PiArICAgICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBhdHRy X3N0cmljdF9mbGV4X2FycmF5X2xldmVsID0gMDsNCj4+ICsgICAgICBnY2NfYXNzZXJ0IChUUkVF X1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KSAhPSBOVUxMX1RSRUUpOw0KPj4gKyAgICAg IGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkgPSBUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2Fy cmF5KTsNCj4+ICsgICAgICBnY2NfYXNzZXJ0IChUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4 X2FycmF5KSAhPSBOVUxMX1RSRUUpOw0KPj4gKyAgICAgIGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkg PSBUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KTsNCj4+ICsgICAgICBnY2NfYXNz ZXJ0ICh0cmVlX2ZpdHNfdWh3aV9wIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KSk7DQo+PiArICAg ICAgYXR0cl9zdHJpY3RfZmxleF9hcnJheV9sZXZlbCA9IHRyZWVfdG9fdWh3aSAoYXR0cl9zdHJp Y3RfZmxleF9hcnJheSk7DQo+PiArDQo+PiArICAgICAgLyogdGhlIGF0dHJpYnV0ZSBoYXMgaGln aGVyIHByaW9yaXR5IHRoYW4gZmxhZ19zdHJ1Y3RfZmxleF9hcnJheS4gICovDQo+PiArICAgICAg c3RyaWN0X2ZsZXhfYXJyYXlfbGV2ZWwgPSBhdHRyX3N0cmljdF9mbGV4X2FycmF5X2xldmVsOw0K Pj4gKyAgICB9DQo+PiArDQo+PiArICBzd2l0Y2ggKHN0cmljdF9mbGV4X2FycmF5X2xldmVsKQ0K Pj4gKyAgICB7DQo+PiArICAgICAgY2FzZSAwOg0KPj4gKwkvKiBkZWZhdWx0LCBhbGwgdHJhaWxp bmcgYXJyYXlzIGFyZSBmbGV4aWFibGUgYXJyYXkgbWVtYmVycy4gICovDQo+PiArCXJldHVybiB0 cnVlOw0KPj4gKyAgICAgIGNhc2UgMToNCj4+ICsJLyogTGV2ZWwgMTogYWxsICJbMV0iLCAiWzBd IiwgYW5kICJbXSIgYXJlIGZsZXhpYWJsZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+ICsJaWYgKGlz X29uZV9lbGVtZW50X2FycmF5KQ0KPj4gKwkgIHJldHVybiB0cnVlOw0KPj4gKwkvKiBGQUxMVEhS T1VHSC4gICovDQo+PiArICAgICAgY2FzZSAyOg0KPj4gKwkvKiBMZXZlbCAyOiBhbGwgIlswXSIs IGFuZCAiW10iIGFyZSBmbGV4aWFibGUgYXJyYXkgbWVtYmVycy4gICovDQo+PiArCWlmIChpc196 ZXJvX2xlbmd0aF9hcnJheSkNCj4+ICsJICByZXR1cm4gdHJ1ZTsNCj4+ICsJLyogRkFMTFRIUk9V R0guICAqLw0KPj4gKyAgICAgIGNhc2UgMzoNCj4+ICsJLyogTGV2ZWwgMzogT25seSAiW10iIGFy ZSBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+ICsJaWYgKGlzX2ZsZXhpYmxlX2FycmF5 KQ0KPj4gKwkgIHJldHVybiB0cnVlOw0KPj4gKwlicmVhazsNCj4+ICsgICAgICBkZWZhdWx0Og0K Pj4gKwlnY2NfdW5yZWFjaGFibGUgKCk7DQo+PiArICAgIH0NCj4+ICsgIHJldHVybiBmYWxzZTsN Cj4+ICt9DQo+PiArDQo+PiArDQo+PiAgLyogRmlsbCBpbiB0aGUgZmllbGRzIG9mIGEgUkVDT1JE X1RZUEUgb3IgVU5JT05fVFlQRSBub2RlLCBULg0KPj4gICAgIExPQyBpcyB0aGUgbG9jYXRpb24g b2YgdGhlIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZUEUncyBkZWZpbml0aW9uLg0KPj4gICAgIEZJ RUxETElTVCBpcyBhIGNoYWluIG9mIEZJRUxEX0RFQ0wgbm9kZXMgZm9yIHRoZSBmaWVsZHMuDQo+ PiBAQCAtODc3MSw2ICs4ODc4LDExIEBAIGZpbmlzaF9zdHJ1Y3QgKGxvY2F0aW9uX3QgbG9jLCB0 cmVlIHQsIHRyZWUgZmllbGRsaXN0LCB0cmVlIGF0dHJpYnV0ZXMsDQo+PiAgICBib29sIHNhd19u YW1lZF9maWVsZCA9IGZhbHNlOw0KPj4gICAgZm9yICh4ID0gZmllbGRsaXN0OyB4OyB4ID0gREVD TF9DSEFJTiAoeCkpDQo+PiAgICAgIHsNCj4+ICsgICAgICAvKiB3aGV0aGVyIHRoaXMgZmllbGQg aXMgdGhlIGxhc3QgZmllbGQgb2YgdGhlIHN0cnVjdHVyZSBvciB1bmlvbi4NCj4+ICsJIGZvciBV TklPTiwgYW55IGZpZWxkIGlzIHRoZSBsYXN0IGZpZWxkIG9mIGl0LiAgKi8NCj4+ICsgICAgICBi b29sIGlzX2xhc3RfZmllbGQgPSAoREVDTF9DSEFJTiAoeCkgPT0gTlVMTF9UUkVFKQ0KPj4gKwkJ CSAgICB8fCAoVFJFRV9DT0RFICh0KSA9PSBVTklPTl9UWVBFKTsNCj4+ICsNCj4+ICAgICAgICBp ZiAoVFJFRV9UWVBFICh4KSA9PSBlcnJvcl9tYXJrX25vZGUpDQo+PiAgCWNvbnRpbnVlOw0KPj4g IEBAIC04ODA5LDEwICs4OTIxLDcgQEAgZmluaXNoX3N0cnVjdCAobG9jYXRpb25fdCBsb2MsIHRy ZWUgdCwgdHJlZSBmaWVsZGxpc3QsIHRyZWUgYXR0cmlidXRlcywNCj4+ICAJREVDTF9QQUNLRUQg KHgpID0gMTsNCj4+ICAgICAgICAgIC8qIERldGVjdCBmbGV4aWJsZSBhcnJheSBtZW1iZXIgaW4g YW4gaW52YWxpZCBjb250ZXh0LiAgKi8NCj4+IC0gICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZ UEUgKHgpKSA9PSBBUlJBWV9UWVBFDQo+PiAtCSAgJiYgVFlQRV9TSVpFIChUUkVFX1RZUEUgKHgp KSA9PSBOVUxMX1RSRUUNCj4+IC0JICAmJiBUWVBFX0RPTUFJTiAoVFJFRV9UWVBFICh4KSkgIT0g TlVMTF9UUkVFDQo+PiAtCSAgJiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOIChUUkVFX1RZ UEUgKHgpKSkgPT0gTlVMTF9UUkVFKQ0KPj4gKyAgICAgIGlmIChmbGV4aWJsZV9hcnJheV9tZW1i ZXJfdHlwZV9wIChUUkVFX1RZUEUgKHgpKSkNCj4+ICAJew0KPj4gIAkgIGlmIChUUkVFX0NPREUg KHQpID09IFVOSU9OX1RZUEUpDQo+PiAgCSAgICB7DQo+PiBAQCAtODgyMCw3ICs4OTI5LDcgQEAg ZmluaXNoX3N0cnVjdCAobG9jYXRpb25fdCBsb2MsIHRyZWUgdCwgdHJlZSBmaWVsZGxpc3QsIHRy ZWUgYXR0cmlidXRlcywNCj4+ICAJCQkiZmxleGlibGUgYXJyYXkgbWVtYmVyIGluIHVuaW9uIik7 DQo+PiAgCSAgICAgIFRSRUVfVFlQRSAoeCkgPSBlcnJvcl9tYXJrX25vZGU7DQo+PiAgCSAgICB9 DQo+PiAtCSAgZWxzZSBpZiAoREVDTF9DSEFJTiAoeCkgIT0gTlVMTF9UUkVFKQ0KPj4gKwkgIGVs c2UgaWYgKCFpc19sYXN0X2ZpZWxkKQ0KPj4gIAkgICAgew0KPj4gIAkgICAgICBlcnJvcl9hdCAo REVDTF9TT1VSQ0VfTE9DQVRJT04gKHgpLA0KPj4gIAkJCSJmbGV4aWJsZSBhcnJheSBtZW1iZXIg bm90IGF0IGVuZCBvZiBzdHJ1Y3QiKTsNCj4+IEBAIC04ODQwLDYgKzg5NDksOSBAQCBmaW5pc2hf c3RydWN0IChsb2NhdGlvbl90IGxvYywgdHJlZSB0LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRy aWJ1dGVzLA0KPj4gIAlwZWR3YXJuIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeCksIE9QVF9XcGVk YW50aWMsDQo+PiAgCQkgImludmFsaWQgdXNlIG9mIHN0cnVjdHVyZSB3aXRoIGZsZXhpYmxlIGFy cmF5IG1lbWJlciIpOw0KPj4gICsgICAgICAvKiBTZXQgREVDTF9OT1RfRkxFWEFSUkFZIGZsYWcg Zm9yIEZJRUxEX0RFQ0wgeC4gICovDQo+PiArICAgICAgREVDTF9OT1RfRkxFWEFSUkFZICh4KSA9 ICFpc19mbGV4aWJsZV9hcnJheV9tZW1iZXJfcCAoaXNfbGFzdF9maWVsZCwgeCk7DQo+PiArDQo+ PiAgICAgICAgaWYgKERFQ0xfTkFNRSAoeCkNCj4+ICAJICB8fCBSRUNPUkRfT1JfVU5JT05fVFlQ RV9QIChUUkVFX1RZUEUgKHgpKSkNCj4+ICAJc2F3X25hbWVkX2ZpZWxkID0gdHJ1ZTsNCj4+IGRp ZmYgLS1naXQgYS9nY2MvY3AvbW9kdWxlLmNjIGIvZ2NjL2NwL21vZHVsZS5jYw0KPj4gaW5kZXgg ZjI3ZjRkMDkxZTVlLi43NWVlMjUxNGY2NmIgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvY3AvbW9kdWxl LmNjDQo+PiArKysgYi9nY2MvY3AvbW9kdWxlLmNjDQo+PiBAQCAtNTQxNCw2ICs1NDE0LDcgQEAg dHJlZXNfb3V0Ojpjb3JlX2Jvb2xzICh0cmVlIHQpDQo+PiAgICAgICAgV0IgKHQtPmRlY2xfY29t bW9uLmRlY2xfYnlfcmVmZXJlbmNlX2ZsYWcpOw0KPj4gICAgICAgIFdCICh0LT5kZWNsX2NvbW1v bi5kZWNsX3JlYWRfZmxhZyk7DQo+PiAgICAgICAgV0IgKHQtPmRlY2xfY29tbW9uLmRlY2xfbm9u c2hhcmVhYmxlX2ZsYWcpOw0KPj4gKyAgICAgIFdCICh0LT5kZWNsX2NvbW1vbi5kZWNsX25vdF9m bGV4YXJyYXkpOw0KPj4gICAgICB9DQo+PiAgICAgIGlmIChDT0RFX0NPTlRBSU5TX1NUUlVDVCAo Y29kZSwgVFNfREVDTF9XSVRIX1ZJUykpDQo+PiBAQCAtNTU1OCw2ICs1NTU5LDcgQEAgdHJlZXNf aW46OmNvcmVfYm9vbHMgKHRyZWUgdCkNCj4+ICAgICAgICBSQiAodC0+ZGVjbF9jb21tb24uZGVj bF9ieV9yZWZlcmVuY2VfZmxhZyk7DQo+PiAgICAgICAgUkIgKHQtPmRlY2xfY29tbW9uLmRlY2xf cmVhZF9mbGFnKTsNCj4+ICAgICAgICBSQiAodC0+ZGVjbF9jb21tb24uZGVjbF9ub25zaGFyZWFi bGVfZmxhZyk7DQo+PiArICAgICAgUkIgKHQtPmRlY2xfY29tbW9uLmRlY2xfbm90X2ZsZXhhcnJh eSk7DQo+PiAgICAgIH0NCj4+ICAgICAgaWYgKENPREVfQ09OVEFJTlNfU1RSVUNUIChjb2RlLCBU U19ERUNMX1dJVEhfVklTKSkNCj4+IGRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50ZXhpIGIv Z2NjL2RvYy9leHRlbmQudGV4aQ0KPj4gaW5kZXggMGZlZGFiOTY2MTBiLi42MjMyOGQ3N2M3OGMg MTAwNjQ0DQo+PiAtLS0gYS9nY2MvZG9jL2V4dGVuZC50ZXhpDQo+PiArKysgYi9nY2MvZG9jL2V4 dGVuZC50ZXhpDQo+PiBAQCAtNzQ1OSw2ICs3NDU5LDMxIEBAIFRoaXMgd2FybmluZyBjYW4gYmUg ZGlzYWJsZWQgYnkgQG9wdGlvbnstV25vLWlmLW5vdC1hbGlnbmVkfS4NCj4+ICBUaGUgQGNvZGV7 d2Fybl9pZl9ub3RfYWxpZ25lZH0gYXR0cmlidXRlIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHR5cGVz DQo+PiAgKEBweHJlZntDb21tb24gVHlwZSBBdHRyaWJ1dGVzfS4pDQo+PiAgK0BjaW5kZXggQGNv ZGV7c3RyaWN0X2ZsZXhfYXJyYXlzfSB2YXJpYWJsZSBhdHRyaWJ1dGUNCj4+ICtAaXRlbSBzdHJp Y3RfZmxleF9hcnJheXMgKEB2YXJ7bGV2ZWx9KQ0KPj4gK1RoZSBAY29kZXtzdHJpY3RfZmxleF9h cnJheXN9IGF0dHJpYnV0ZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIHRyYWlsaW5nDQo+PiAr YXJyYXkgZmllbGQgb2YgYSBzdHJ1Y3R1cmUuICBJdCBzcGVjaWZpZXMgdGhlIGxldmVsIG9mIHN0 cmljdG5lc3Mgb2YNCj4+ICt0cmVhdGluZyB0aGUgdHJhaWxpbmcgYXJyYXkgZmllbGQgb2YgYSBz dHJ1Y3R1cmUgYXMgYSBmbGV4aWJsZSBhcnJheQ0KPj4gK21lbWJlci4gQHZhcntsZXZlbH0gbXVz dCBiZSBhbiBpbnRlZ2VyIGJldHdlbiAwIHRvIDMuDQo+PiArDQo+PiArQHZhcntsZXZlbH09MCBp cyB0aGUgbGVhc3Qgc3RyaWN0IGxldmVsLCBhbGwgdHJhaWxpbmcgYXJyYXlzIG9mIHN0cnVjdHVy ZXMNCj4+ICthcmUgdHJlYXRlZCBhcyBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiBAdmFye2xldmVs fT0zIGlzIHRoZSBzdHJpY3Rlc3QgbGV2ZWwsDQo+PiArb25seSB3aGVuIHRoZSB0cmFpbGluZyBh cnJheSBpcyBkZWNsYXJlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5DQo+PiAr c3RhbmRhcmQgb253YXJkcyAoQHNhbXB7W119KSwgaXQgaXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxl IGFycmF5IG1lbWJlci4NCj4+ICsNCj4+ICtUaGVyZSBhcmUgdHdvIG1vcmUgbGV2ZWxzIGluIGJl dHdlZW4gMCBhbmQgMywgd2hpY2ggYXJlIHByb3ZpZGVkIHRvIHN1cHBvcnQNCj4+ICtvbGRlciBj b2RlcyB0aGF0IHVzZSBHQ0MgemVyby1sZW5ndGggYXJyYXkgZXh0ZW5zaW9uIChAc2FtcHtbMF19 KSBvciBvbmUtc2l6ZQ0KPj4gK2FycmF5IGFzIGZsZXhpYmxlIGFycmF5IG1lbWJlciAoQHNhbXB7 WzFdfSk6DQo+PiArV2hlbiBAdmFye2xldmVsfSBpcyAxLCB0aGUgdHJhaWxpbmcgYXJyYXkgaXMg dHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4gK3doZW4gaXQgaXMgZGVjbGFy ZWQgYXMgZWl0aGVyIEBzYW1we1tdfSwgQHNhbXB7WzBdfSwgb3IgQHNhbXB7WzFdfTsNCj4+ICtX aGVuIEB2YXJ7bGV2ZWx9IGlzIDIsIHRoZSB0cmFpbGluZyBhcnJheSBpcyB0cmVhdGVkIGFzIGEg ZmxleGlibGUgYXJyYXkgbWVtYmVyDQo+PiArd2hlbiBpdCBpcyBkZWNsYXJlZCBhcyBlaXRoZXIg QHNhbXB7W119LCBvciBAc2FtcHtbMF19Lg0KPj4gKw0KPj4gK1RoaXMgYXR0cmlidXRlIGNhbiBi ZSB1c2VkIHdpdGggb3Igd2l0aG91dCB0aGUgQG9wdGlvbnstZnN0cmljdC1mbGV4LWFycmF5c30u DQo+PiArV2hlbiBib3RoIHRoZSBhdHRyaWJ1dGUgYW5kIHRoZSBvcHRpb24gcHJlc2VudCBhdCB0 aGUgc2FtZSB0aW1lLCB0aGUgbGV2ZWwgb2YNCj4+ICt0aGUgc3RyaWN0bmVzcyBmb3IgdGhlIHNw ZWNpZmljIHRyYWlsaW5nIGFycmF5IGZpZWxkIGlzIGRldGVybWluZWQgYnkgdGhlDQo+PiArYXR0 cmlidXRlLg0KPj4gKw0KPj4gIEBpdGVtIGFsbG9jX3NpemUgKEB2YXJ7cG9zaXRpb259KQ0KPj4g IEBpdGVteCBhbGxvY19zaXplIChAdmFye3Bvc2l0aW9uLTF9LCBAdmFye3Bvc2l0aW9uLTJ9KQ0K Pj4gIEBjaW5kZXggQGNvZGV7YWxsb2Nfc2l6ZX0gdmFyaWFibGUgYXR0cmlidXRlDQo+PiBkaWZm IC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkNCj4+IGlu ZGV4IDlkNjYyZTM1MzE2My4uZGIxYTY4Y2Q1NDVjIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL2RvYy9p bnZva2UudGV4aQ0KPj4gKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQ0KPj4gQEAgLTIwNyw3ICsy MDcsOCBAQCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLg0KPj4gIC1mb3Blbm1wICAtZm9wZW5t cC1zaW1kIEBnb2wNCj4+ICAtZnBlcm1pdHRlZC1mbHQtZXZhbC1tZXRob2RzPUB2YXJ7c3RhbmRh cmR9IEBnb2wNCj4+ICAtZnBsYW45LWV4dGVuc2lvbnMgIC1mc2lnbmVkLWJpdGZpZWxkcyAgLWZ1 bnNpZ25lZC1iaXRmaWVsZHMgQGdvbA0KPj4gLS1mc2lnbmVkLWNoYXIgIC1mdW5zaWduZWQtY2hh ciAgLWZzc28tc3RydWN0PUB2YXJ7ZW5kaWFubmVzc319DQo+PiArLWZzaWduZWQtY2hhciAgLWZ1 bnNpZ25lZC1jaGFyIC1mc3RyaWN0LWZsZXgtYXJyYXlzWz1AdmFye259XSBAZ29sDQo+PiArLWZz c28tc3RydWN0PUB2YXJ7ZW5kaWFubmVzc319DQo+PiAgICBAaXRlbSBDKysgTGFuZ3VhZ2UgT3B0 aW9ucw0KPj4gIEB4cmVme0MrKyBEaWFsZWN0IE9wdGlvbnMsLE9wdGlvbnMgQ29udHJvbGxpbmcg QysrIERpYWxlY3R9Lg0KPj4gQEAgLTI4MjYsNiArMjgyNywzMCBAQCBUaGUgdHlwZSBAY29kZXtj aGFyfSBpcyBhbHdheXMgYSBkaXN0aW5jdCB0eXBlIGZyb20gZWFjaCBvZg0KPj4gIEBjb2Rle3Np Z25lZCBjaGFyfSBvciBAY29kZXt1bnNpZ25lZCBjaGFyfSwgZXZlbiB0aG91Z2ggaXRzIGJlaGF2 aW9yDQo+PiAgaXMgYWx3YXlzIGp1c3QgbGlrZSBvbmUgb2YgdGhvc2UgdHdvLg0KPj4gICtAaXRl bSAtZnN0cmljdC1mbGV4LWFycmF5cw0KPj4gK0BvcGluZGV4IGZzdHJpY3QtZmxleC1hcnJheXMN Cj4+ICtAb3BpbmRleCBmbm8tc3RyaWN0LWZsZXgtYXJyYXlzDQo+PiArVHJlYXQgdGhlIHRyYWls aW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIGluIGEN Cj4+ICtzdHJpY3RlciB3YXkuDQo+PiArVGhlIHBvc2l0aXZlIGZvcm0gaXMgZXF1aXZhbGVudCB0 byBAb3B0aW9uey1mc3RyaWN0LWZsZXgtYXJyYXlzPTN9LCB3aGljaCBpcyB0aGUNCj4+ICtzdHJp Y3Rlc3QuICBBIHRyYWlsaW5nIGFycmF5IGlzIHRyZWF0ZWQgYXMgYSBmbGV4aWJsZSBhcnJheSBt ZW1iZXIgb25seSB3aGVuIGl0DQo+PiAraXMgZGVjbGFyZWQgYXMgYSBmbGV4aWJsZSBhcnJheSBt ZW1iZXIgcGVyIEM5OSBzdGFuZGFyZCBvbndhcmRzLg0KPj4gK1RoZSBuZWdhdGl2ZSBmb3JtIGlz IGVxdWl2YWxlbnQgdG8gQG9wdGlvbnstZnN0cmljdC1mbGV4LWFycmF5cz0wfSwgd2hpY2ggaXMg dGhlDQo+PiArbGVhc3Qgc3RyaWN0LiAgQWxsIHRyYWlsaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVz IGFyZSB0cmVhdGVkIGFzIGZsZXhpYmxlIGFycmF5DQo+PiArbWVtYmVycy4NCj4+ICsNCj4+ICtA aXRlbSAtZnN0cmljdC1mbGV4LWFycmF5cz1AdmFye2xldmVsfQ0KPj4gK0BvcGluZGV4IGZzdHJp Y3QtZmxleC1hcnJheXM9QHZhcntsZXZlbH0NCj4+ICtUcmVhdCB0aGUgdHJhaWxpbmcgYXJyYXkg b2YgYSBzdHJ1Y3R1cmUgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgaW4gYQ0KPj4gK3N0cmlj dGVyIHdheS4gIFRoZSB2YWx1ZSBvZiBAdmFye2xldmVsfSBjb250cm9scyB0aGUgbGV2ZWwgb2Yg c3RyaWN0bmVzcy4NCj4+ICsNCj4+ICtUaGUgcG9zc2libGUgdmFsdWVzIG9mIEB2YXJ7bGV2ZWx9 IGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlDQo+PiArQGNvZGV7c3RyaWN0X2ZsZXhfYXJyYXlzfSBh dHRyaWJ1dGUgKEBweHJlZntWYXJpYWJsZSBBdHRyaWJ1dGVzfSkuDQo+PiArDQo+PiArWW91IGNh biBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgdHJhaWxpbmcgYXJyYXkgZmll bGQgb2YgYQ0KPj4gK3N0cnVjdHVyZSBieSB1c2luZyB0aGUgdmFyaWFibGUgYXR0cmlidXRlIEBj b2Rle3N0cmljdF9mbGV4X2FycmF5c30gYXR0cmlidXRlDQo+PiArKEBweHJlZntWYXJpYWJsZSBB dHRyaWJ1dGVzfSkuDQo+PiArDQo+PiAgQGl0ZW0gLWZzc28tc3RydWN0PUB2YXJ7ZW5kaWFubmVz c30NCj4+ICBAb3BpbmRleCBmc3NvLXN0cnVjdA0KPj4gIFNldCB0aGUgZGVmYXVsdCBzY2FsYXIg c3RvcmFnZSBvcmRlciBvZiBzdHJ1Y3R1cmVzIGFuZCB1bmlvbnMgdG8gdGhlDQo+PiBkaWZmIC0t Z2l0IGEvZ2NjL3ByaW50LXRyZWUuY2MgYi9nY2MvcHJpbnQtdHJlZS5jYw0KPj4gaW5kZXggNmQ0 NWE0YTU5NjY5Li41OGE5ODI1MGNjNGYgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvcHJpbnQtdHJlZS5j Yw0KPj4gKysrIGIvZ2NjL3ByaW50LXRyZWUuY2MNCj4+IEBAIC01MTcsOCArNTE3LDEyIEBAIHBy aW50X25vZGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKnByZWZpeCwgdHJlZSBub2RlLCBpbnQg aW5kZW50LA0KPj4gIAkgIGZwcmludGYgKGZpbGUsICIgYWxpZ246JWQgd2Fybl9pZl9ub3RfYWxp Z246JWQiLA0KPj4gIAkJICAgREVDTF9BTElHTiAobm9kZSksIERFQ0xfV0FSTl9JRl9OT1RfQUxJ R04gKG5vZGUpKTsNCj4+ICAJICBpZiAoY29kZSA9PSBGSUVMRF9ERUNMKQ0KPj4gLQkgICAgZnBy aW50ZiAoZmlsZSwgIiBvZmZzZXRfYWxpZ24gIiBIT1NUX1dJREVfSU5UX1BSSU5UX1VOU0lHTkVE LA0KPj4gLQkJICAgICBERUNMX09GRlNFVF9BTElHTiAobm9kZSkpOw0KPj4gKwkgICAgew0KPj4g KwkgICAgICBmcHJpbnRmIChmaWxlLCAiIG9mZnNldF9hbGlnbiAiIEhPU1RfV0lERV9JTlRfUFJJ TlRfVU5TSUdORUQsDQo+PiArCQkgICAgICAgREVDTF9PRkZTRVRfQUxJR04gKG5vZGUpKTsNCj4+ ICsJICAgICAgZnByaW50ZiAoZmlsZSwgIiBkZWNsX25vdF9mbGV4YXJyYXk6ICVkIiwNCj4+ICsJ CSAgICAgICBERUNMX05PVF9GTEVYQVJSQVkgKG5vZGUpKTsNCj4+ICsJICAgIH0NCj4+ICAgIAkg IGlmIChjb2RlID09IEZVTkNUSU9OX0RFQ0wgJiYgZm5kZWNsX2J1aWx0X2luX3AgKG5vZGUpKQ0K Pj4gIAkgICAgew0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1m bGV4LWFycmF5LTEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTEu Qw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uY2Q2YTY1 ZDJiN2U2DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9z dHJpY3QtZmxleC1hcnJheS0xLkMNCj4+IEBAIC0wLDAgKzEsMzEgQEANCj4+ICsvKiB0ZXN0aW5n IHRoZSBjb3JyZWN0IHVzYWdlIG9mIGF0dHJpYnV0ZSBzdHJpY3RfZmxleF9hcnJheS4gICovDQo+ PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAq Lw0KPj4gKw0KPj4gKw0KPj4gK2ludCB4IF9fYXR0cmlidXRlX18gKChzdHJpY3RfZmxleF9hcnJh eXMgKDEpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3RfZmxleF9hcnJheXMnIGF0dHJpYnV0ZSBt YXkgbm90IGJlIHNwZWNpZmllZCBmb3IgJ3gnIiB9ICovDQo+PiArDQo+PiArc3RydWN0IHRyYWls aW5nIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBjIF9fYXR0cmlidXRlICgoc3RyaWN0 X2ZsZXhfYXJyYXlzKSk7IC8qIHsgZGctZXJyb3IgIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMg c3BlY2lmaWVkIGZvciAnc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1dGUiIH0gKi8NCj4+ICt9 Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ18xIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAg IGludCBiOw0KPj4gKyAgICBpbnQgYyBfX2F0dHJpYnV0ZSAoKHN0cmljdF9mbGV4X2FycmF5cyAo MikpKTsgLyogeyBkZy1lcnJvciAiJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmlidXRlIG1heSBu b3QgYmUgc3BlY2lmaWVkIGZvciBhIG5vbi1hcnJheSBmaWVsZCIgfSAqLw0KPj4gK307DQo+PiAr DQo+PiArZXh0ZXJuIGludCBkOw0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8yIHsN Cj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1sxXSBfX2F0dHJp YnV0ZSAoKHN0cmljdF9mbGV4X2FycmF5cyAoZCkpKTsgLyogeyBkZy1lcnJvciAiJ3N0cmljdF9m bGV4X2FycmF5cycgYXR0cmlidXRlIGFyZ3VtZW50IG5vdCBhbiBpbnRlZ2VyIiB9ICovDQo+PiAr fTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyB7DQo+PiArICAgIGludCBhOw0K Pj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbMF0gX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxl eF9hcnJheXMgKDUpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3RfZmxleF9hcnJheXMnIGF0dHJp YnV0ZSBhcmd1bWVudCAnNScgaXMgbm90IGFuIGludGVnZXIgY29uc3RhbnQgYmV0d2VlbiAwIGFu ZCAzIiB9ICovDQo+PiArfTsNCj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9z dHJpY3QtZmxleC1hcnJheS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1h cnJheS0xLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LmNkNmE2NWQyYjdlNg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5jDQo+PiBAQCAtMCwwICsxLDMxIEBADQo+PiArLyog dGVzdGluZyB0aGUgY29ycmVjdCB1c2FnZSBvZiBhdHRyaWJ1dGUgc3RyaWN0X2ZsZXhfYXJyYXku ICAqLw0KPj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+PiArLyogeyBkZy1vcHRpb25zICIt TzIiIH0gKi8NCj4+ICsNCj4+ICsNCj4+ICtpbnQgeCBfX2F0dHJpYnV0ZV9fICgoc3RyaWN0X2Zs ZXhfYXJyYXlzICgxKSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRy aWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yICd4JyIgfSAqLw0KPj4gKw0KPj4gK3N0cnVj dCB0cmFpbGluZyB7DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYyBfX2F0dHJpYnV0ZSAo KHN0cmljdF9mbGV4X2FycmF5cykpOyAvKiB7IGRnLWVycm9yICJ3cm9uZyBudW1iZXIgb2YgYXJn dW1lbnRzIHNwZWNpZmllZCBmb3IgJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmlidXRlIiB9ICov DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfMSB7DQo+PiArICAgIGludCBhOw0K Pj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGMgX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9h cnJheXMgKDIpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3RfZmxleF9hcnJheXMnIGF0dHJpYnV0 ZSBtYXkgbm90IGJlIHNwZWNpZmllZCBmb3IgYSBub24tYXJyYXkgZmllbGQiIH0gKi8NCj4+ICt9 Ow0KPj4gKw0KPj4gK2V4dGVybiBpbnQgZDsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJy YXlfMiB7DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbMV0g X19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMgKGQpKSk7IC8qIHsgZGctZXJyb3IgIidz dHJpY3RfZmxleF9hcnJheXMnIGF0dHJpYnV0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdlciIgfSAq Lw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4gKyAgICBp bnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzBdIF9fYXR0cmlidXRlICgoc3Ry aWN0X2ZsZXhfYXJyYXlzICg1KSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXlz JyBhdHRyaWJ1dGUgYXJndW1lbnQgJzUnIGlzIG5vdCBhbiBpbnRlZ2VyIGNvbnN0YW50IGJldHdl ZW4gMCBhbmQgMyIgfSAqLw0KPj4gK307DQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY29yZS5o IGIvZ2NjL3RyZWUtY29yZS5oDQo+PiBpbmRleCA4MGMyYmNiMzMzZGQuLjE4YmQ2ZDgyYTMyZCAx MDA2NDQNCj4+IC0tLSBhL2djYy90cmVlLWNvcmUuaA0KPj4gKysrIGIvZ2NjL3RyZWUtY29yZS5o DQo+PiBAQCAtMTgyMyw3ICsxODIzLDEwIEBAIHN0cnVjdCBHVFkoKCkpIHRyZWVfZGVjbF9jb21t b24gew0KPj4gICAgICAgVFlQRV9XQVJOX0lGX05PVF9BTElHTi4gICovDQo+PiAgICB1bnNpZ25l ZCBpbnQgd2Fybl9pZl9ub3RfYWxpZ24gOiA2Ow0KPj4gIC0gIC8qIDE0IGJpdHMgdW51c2VkLiAg Ki8NCj4+ICsgIC8qIEluIEZJRUxEX0RFQ0wsIHRoaXMgaXMgREVDTF9OT1RfRkxFWEFSUkFZLiAg Ki8NCj4+ICsgIHVuc2lnbmVkIGludCBkZWNsX25vdF9mbGV4YXJyYXkgOiAxOw0KPj4gKw0KPj4g KyAgLyogMTMgYml0cyB1bnVzZWQuICAqLw0KPj4gICAgICAvKiBVSUQgZm9yIHBvaW50cy10byBz ZXRzLCBzdGFibGUgb3ZlciBjb3B5aW5nIGZyb20gaW5saW5pbmcuICAqLw0KPj4gICAgdW5zaWdu ZWQgaW50IHB0X3VpZDsNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zdHJlYW1lci1pbi5jYyBi L2djYy90cmVlLXN0cmVhbWVyLWluLmNjDQo+PiBpbmRleCAyMTljZjVlN2VmNDUuLjU3OTIzZGEz NzQxZSAxMDA2NDQNCj4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLWluLmNjDQo+PiArKysgYi9n Y2MvdHJlZS1zdHJlYW1lci1pbi5jYw0KPj4gQEAgLTI2MSw2ICsyNjEsNyBAQCB1bnBhY2tfdHNf ZGVjbF9jb21tb25fdmFsdWVfZmllbGRzIChzdHJ1Y3QgYml0cGFja19kICpicCwgdHJlZSBleHBy KQ0KPj4gICAgICAgIGVsc2UNCj4+ICAJU0VUX0RFQ0xfRklFTERfQUJJX0lHTk9SRUQgKGV4cHIs IHZhbCk7DQo+PiAgICAgICAgZXhwci0+ZGVjbF9jb21tb24ub2ZmX2FsaWduID0gYnBfdW5wYWNr X3ZhbHVlIChicCwgOCk7DQo+PiArICAgICAgREVDTF9OT1RfRkxFWEFSUkFZIChleHByKSA9ICh1 bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7DQo+PiAgICAgIH0NCj4+ICAgICAgZWxz ZSBpZiAoVkFSX1AgKGV4cHIpKQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXN0cmVhbWVyLW91 dC5jYyBiL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPj4gaW5kZXggOWIxMTRkYzA1YmIxLi42 OGEyODE4YTlmOTMgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvdHJlZS1zdHJlYW1lci1vdXQuY2MNCj4+ ICsrKyBiL2djYy90cmVlLXN0cmVhbWVyLW91dC5jYw0KPj4gQEAgLTIyOSw2ICsyMjksNyBAQCBw YWNrX3RzX2RlY2xfY29tbW9uX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBhY2tfZCAqYnAsIHRy ZWUgZXhwcikNCj4+ICAgICAgICBlbHNlDQo+PiAgCWJwX3BhY2tfdmFsdWUgKGJwLCBERUNMX0ZJ RUxEX0FCSV9JR05PUkVEIChleHByKSwgMSk7DQo+PiAgICAgICAgYnBfcGFja192YWx1ZSAoYnAs IGV4cHItPmRlY2xfY29tbW9uLm9mZl9hbGlnbiwgOCk7DQo+PiArICAgICAgYnBfcGFja192YWx1 ZSAoYnAsIERFQ0xfTk9UX0ZMRVhBUlJBWSAoZXhwciksIDEpOw0KPj4gICAgICB9DQo+PiAgICAg IGVsc2UgaWYgKFZBUl9QIChleHByKSkNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS5jYyBiL2dj Yy90cmVlLmNjDQo+PiBpbmRleCAyZjQ4OGU0NDY3YzQuLmU0NjY0ZWFiNTRlZiAxMDA2NDQNCj4+ IC0tLSBhL2djYy90cmVlLmNjDQo+PiArKysgYi9nY2MvdHJlZS5jYw0KPj4gQEAgLTEyNjg4LDE0 ICsxMjY4OCwzMCBAQCBhcnJheV9yZWZfdXBfYm91bmQgKHRyZWUgZXhwKQ0KPj4gIH0NCj4+ICAg IC8qIFJldHVybnMgdHJ1ZSBpZiBSRUYgaXMgYW4gYXJyYXkgcmVmZXJlbmNlLCBjb21wb25lbnQg cmVmZXJlbmNlLA0KPj4gLSAgIG9yIG1lbW9yeSByZWZlcmVuY2UgdG8gYW4gYXJyYXkgYXQgdGhl IGVuZCBvZiBhIHN0cnVjdHVyZS4NCj4+IC0gICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgYXJy YXkgbWF5IGJlIGFsbG9jYXRlZCBsYXJnZXINCj4+IC0gICB0aGFuIGl0cyB1cHBlciBib3VuZCBp bXBsaWVzLiAgKi8NCj4+ICsgICBvciBtZW1vcnkgcmVmZXJlbmNlIHRvIGFuIGFycmF5IHdob3Nl IGFjdHVhbCBzaXplIG1pZ2h0IGJlIGxhcmdlcg0KPj4gKyAgIHRoYW4gaXRzIHVwcGVyIGJvdW5k IGltcGxpZXMsIHRoZXJlIGFyZSBtdWx0aXBsZSBjYXNlczoNCj4+ICsgICBBLiBhIHJlZiB0byBh IGZsZXhpYmxlIGFycmF5IG1lbWJlciBhdCB0aGUgZW5kIG9mIGEgc3RydWN0dXJlOw0KPj4gKyAg IEIuIGEgcmVmIHRvIGFuIGFycmF5IHdpdGggYSBkaWZmZXJlbnQgdHlwZSBhZ2FpbnN0IHRoZSBv cmlnaW5hbCBkZWNsOw0KPj4gKyAgICAgIGZvciBleGFtcGxlOg0KPj4gICsgICBzaG9ydCBhWzE2 XSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAx NSwgMTYgfTsNCj4+ICsgICAoKigoY2hhcigqKVsxNl0pJmFbMF0pKVtpKzhdDQo+PiArDQo+PiAr ICAgQy4gYSByZWYgdG8gYW4gYXJyYXkgdGhhdCB3YXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyOw0K Pj4gKyAgICAgIGZvciBleGFtcGxlOg0KPj4gKw0KPj4gKyAgIGludCB0ZXN0ICh1aW50OF90ICpw LCB1aW50MzJfdCB0WzFdWzFdLCBpbnQgbikgew0KPj4gKyAgIGZvciAoaW50IGkgPSAwOyBpIDwg NDsgaSsrLCBwKyspDQo+PiArICAgICB0W2ldWzBdID0gLi4uOw0KPj4gKw0KPj4gKyAgIEZJWE1F LCB0aGUgbmFtZSBvZiB0aGlzIHJvdXRpbmUgbmVlZCB0byBiZSBjaGFuZ2VkIHRvIGJlIG1vcmUg YWNjdXJhdGUuICAqLw0KPj4gIGJvb2wNCj4+ICBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUg cmVmKQ0KPj4gIHsNCj4+IC0gIHRyZWUgYXR5cGU7DQo+PiArICAvKiB0aGUgVFlQRSBmb3IgdGhp cyBhcnJheSByZWZlcmVjZS4gICovDQo+PiArICB0cmVlIGF0eXBlID0gTlVMTF9UUkVFOw0KPj4g KyAgLyogdGhlIEZJRUxEX0RFQ0wgZm9yIHRoZSBhcnJheSBmaWVsZCBpbiB0aGUgY29udGFpbmlu ZyBzdHJ1Y3R1cmUuICAqLw0KPj4gKyAgdHJlZSBhZmllbGRfZGVjbCA9IE5VTExfVFJFRTsNCj4+ ICAgICAgaWYgKFRSRUVfQ09ERSAocmVmKSA9PSBBUlJBWV9SRUYNCj4+ICAgICAgICB8fCBUUkVF X0NPREUgKHJlZikgPT0gQVJSQVlfUkFOR0VfUkVGKQ0KPj4gQEAgLTEyNzA1LDcgKzEyNzIxLDEw IEBAIGFycmF5X2F0X3N0cnVjdF9lbmRfcCAodHJlZSByZWYpDQo+PiAgICAgIH0NCj4+ICAgIGVs c2UgaWYgKFRSRUVfQ09ERSAocmVmKSA9PSBDT01QT05FTlRfUkVGDQo+PiAgCSAgICYmIFRSRUVf Q09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHJlZiwgMSkpKSA9PSBBUlJBWV9UWVBFKQ0K Pj4gLSAgICBhdHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChyZWYsIDEpKTsNCj4+ICsg ICAgew0KPj4gKyAgICAgIGF0eXBlID0gVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHJlZiwgMSkp Ow0KPj4gKyAgICAgIGFmaWVsZF9kZWNsID0gVFJFRV9PUEVSQU5EIChyZWYsIDEpOw0KPj4gKyAg ICB9DQo+PiAgICBlbHNlIGlmIChUUkVFX0NPREUgKHJlZikgPT0gTUVNX1JFRikNCj4+ICAgICAg ew0KPj4gICAgICAgIHRyZWUgYXJnID0gVFJFRV9PUEVSQU5EIChyZWYsIDApOw0KPj4gQEAgLTEy NzE3LDYgKzEyNzM2LDcgQEAgYXJyYXlfYXRfc3RydWN0X2VuZF9wICh0cmVlIHJlZikNCj4+ICAJ ICBpZiAodHJlZSBmbGQgPSBsYXN0X2ZpZWxkIChhcmd0eXBlKSkNCj4+ICAJICAgIHsNCj4+ICAJ ICAgICAgYXR5cGUgPSBUUkVFX1RZUEUgKGZsZCk7DQo+PiArCSAgICAgIGFmaWVsZF9kZWNsID0g ZmxkOw0KPj4gIAkgICAgICBpZiAoVFJFRV9DT0RFIChhdHlwZSkgIT0gQVJSQVlfVFlQRSkNCj4+ ICAJCXJldHVybiBmYWxzZTsNCj4+ICAJICAgICAgaWYgKFZBUl9QIChhcmcpICYmIERFQ0xfU0la RSAoZmxkKSkNCj4+IEBAIC0xMjc3MCwxMyArMTI3OTAsMTYgQEAgYXJyYXlfYXRfc3RydWN0X2Vu ZF9wICh0cmVlIHJlZikNCj4+ICAgICAgICByZWYgPSBUUkVFX09QRVJBTkQgKHJlZiwgMCk7DQo+ PiAgICAgIH0NCj4+ICAtICAvKiBUaGUgYXJyYXkgbm93IGlzIGF0IHN0cnVjdCBlbmQuICBUcmVh dCBmbGV4aWJsZSBhcnJheXMgYXMNCj4+ICsgIGdjY19hc3NlcnQgKCFhZmllbGRfZGVjbA0KPj4g KwkgICAgICB8fCAoYWZpZWxkX2RlY2wgJiYgVFJFRV9DT0RFIChhZmllbGRfZGVjbCkgPT0gRklF TERfREVDTCkpOw0KPj4gKw0KPj4gKyAgLyogVGhlIGFycmF5IG5vdyBpcyBhdCBzdHJ1Y3QgZW5k LiAgVHJlYXQgZmxleGlibGUgYXJyYXkgbWVtYmVyIGFzDQo+PiAgICAgICBhbHdheXMgc3ViamVj dCB0byBleHRlbmQsIGV2ZW4gaW50byBqdXN0IHBhZGRpbmcgY29uc3RyYWluZWQgYnkNCj4+ICAg ICAgIGFuIHVuZGVybHlpbmcgZGVjbC4gICovDQo+PiAgICBpZiAoISBUWVBFX1NJWkUgKGF0eXBl KQ0KPj4gICAgICAgIHx8ICEgVFlQRV9ET01BSU4gKGF0eXBlKQ0KPj4gICAgICAgIHx8ICEgVFlQ RV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOIChhdHlwZSkpKQ0KPj4gLSAgICByZXR1cm4gdHJ1ZTsN Cj4+ICsgICAgcmV0dXJuIGFmaWVsZF9kZWNsID8gIURFQ0xfTk9UX0ZMRVhBUlJBWSAoYWZpZWxk X2RlY2wpIDogdHJ1ZTsNCj4+ICAgICAgLyogSWYgdGhlIHJlZmVyZW5jZSBpcyBiYXNlZCBvbiBh IGRlY2xhcmVkIGVudGl0eSwgdGhlIHNpemUgb2YgdGhlIGFycmF5DQo+PiAgICAgICBpcyBjb25z dHJhaW5lZCBieSBpdHMgZ2l2ZW4gZG9tYWluLiAgKERvIG5vdCB0cnVzdCBjb21tb25zIFBSLzY5 MzY4KS4gICovDQo+PiBAQCAtMTI3OTgsOSArMTI4MjEsOSBAQCBhcnJheV9hdF9zdHJ1Y3RfZW5k X3AgKHRyZWUgcmVmKQ0KPj4gICAgICAgIGlmIChUUkVFX0NPREUgKFRZUEVfU0laRV9VTklUIChU UkVFX1RZUEUgKGF0eXBlKSkpICE9IElOVEVHRVJfQ1NUDQo+PiAgCSAgfHwgVFJFRV9DT0RFIChU WVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKGF0eXBlKSkpICE9IElOVEVHRVJfQ1NUDQo+PiAg ICAgICAgICAgIHx8IFRSRUVfQ09ERSAoVFlQRV9NSU5fVkFMVUUgKFRZUEVfRE9NQUlOIChhdHlw ZSkpKSAhPSBJTlRFR0VSX0NTVCkNCj4+IC0JcmV0dXJuIHRydWU7DQo+PiArCXJldHVybiBhZmll bGRfZGVjbCA/ICFERUNMX05PVF9GTEVYQVJSQVkgKGFmaWVsZF9kZWNsKSA6IHRydWU7DQo+PiAg ICAgICAgaWYgKCEgZ2V0X2FkZHJfYmFzZV9hbmRfdW5pdF9vZmZzZXQgKHJlZl90b19hcnJheSwg Jm9mZnNldCkpDQo+PiAtCXJldHVybiB0cnVlOw0KPj4gKwlyZXR1cm4gYWZpZWxkX2RlY2wgPyAh REVDTF9OT1RfRkxFWEFSUkFZIChhZmllbGRfZGVjbCkgOiB0cnVlOw0KPj4gICAgICAgICAgLyog SWYgYXQgbGVhc3Qgb25lIGV4dHJhIGVsZW1lbnQgZml0cyBpdCBpcyBhIGZsZXhhcnJheS4gICov DQo+PiAgICAgICAgaWYgKGtub3duX2xlICgod2k6OnRvX29mZnNldCAoVFlQRV9NQVhfVkFMVUUg KFRZUEVfRE9NQUlOIChhdHlwZSkpKQ0KPj4gQEAgLTEyODA4LDEyICsxMjgzMSwxMiBAQCBhcnJh eV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4gIAkJICAgICArIDIpDQo+PiAgCQkgICAg KiB3aTo6dG9fb2Zmc2V0IChUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChhdHlwZSkpKSwNCj4+ ICAJCSAgICB3aTo6dG9fb2Zmc2V0IChERUNMX1NJWkVfVU5JVCAocmVmKSkgLSBvZmZzZXQpKQ0K Pj4gLQlyZXR1cm4gdHJ1ZTsNCj4+ICsJcmV0dXJuIGFmaWVsZF9kZWNsID8gIURFQ0xfTk9UX0ZM RVhBUlJBWSAoYWZpZWxkX2RlY2wpIDogdHJ1ZTsNCj4+ICAgICAgICAgIHJldHVybiBmYWxzZTsN Cj4+ICAgICAgfQ0KPj4gIC0gIHJldHVybiB0cnVlOw0KPj4gKyAgcmV0dXJuIGFmaWVsZF9kZWNs ID8gIURFQ0xfTk9UX0ZMRVhBUlJBWSAoYWZpZWxkX2RlY2wpIDogdHJ1ZTsNCj4+ICB9DQo+PiAg ICAvKiBSZXR1cm4gYSB0cmVlIHJlcHJlc2VudGluZyB0aGUgb2Zmc2V0LCBpbiBieXRlcywgb2Yg dGhlIGZpZWxkIHJlZmVyZW5jZWQNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3Ry ZWUuaA0KPj4gaW5kZXggMjY2ZTI0YTA1NjMzLi44MTA3NmIwNDUwMDMgMTAwNjQ0DQo+PiAtLS0g YS9nY2MvdHJlZS5oDQo+PiArKysgYi9nY2MvdHJlZS5oDQo+PiBAQCAtMzAwNSw2ICszMDA1LDEy IEBAIGV4dGVybiB2b2lkIGRlY2xfdmFsdWVfZXhwcl9pbnNlcnQgKHRyZWUsIHRyZWUpOw0KPj4g ICNkZWZpbmUgREVDTF9QQURESU5HX1AoTk9ERSkgXA0KPj4gICAgKEZJRUxEX0RFQ0xfQ0hFQ0sg KE5PREUpLT5kZWNsX2NvbW1vbi5kZWNsX2ZsYWdfMykNCj4+ICArLyogVXNlZCBpbiBhIEZJRUxE X0RFQ0wgdG8gaW5kaWNhdGUgd2hldGhlciB0aGlzIGZpZWxkIGlzIG5vdCBhIGZsZXhpYmxlDQo+ PiArICAgYXJyYXkgbWVtYmVyLiBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yIHRoZSBsYXN0IGFycmF5 IHR5cGUgZmllbGQgb2YgYQ0KPj4gKyAgIHN0cnVjdHVyZS4gICovDQo+PiArI2RlZmluZSBERUNM X05PVF9GTEVYQVJSQVkoTk9ERSkgXA0KPj4gKyAgKEZJRUxEX0RFQ0xfQ0hFQ0sgKE5PREUpLT5k ZWNsX2NvbW1vbi5kZWNsX25vdF9mbGV4YXJyYXkpDQo+PiArDQo+PiAgLyogQSBudW1lcmljIHVu aXF1ZSBpZGVudGlmaWVyIGZvciBhIExBQkVMX0RFQ0wuICBUaGUgVUlEIGFsbG9jYXRpb24gaXMN Cj4+ICAgICBkZW5zZSwgdW5pcXVlIHdpdGhpbiBhbnkgb25lIGZ1bmN0aW9uLCBhbmQgbWF5IGJl IHVzZWQgdG8gaW5kZXggYXJyYXlzLg0KPj4gICAgIElmIHRoZSB2YWx1ZSBpcyAtMSwgdGhlbiBu byBVSUQgaGFzIGJlZW4gYXNzaWduZWQuICAqLw0KPj4gQEAgLTU1NDMsMTAgKzU1NDksMTAgQEAg ZXh0ZXJuIHRyZWUgY29tcG9uZW50X3JlZl9maWVsZF9vZmZzZXQgKHRyZWUpOw0KPj4gICAgIHJl dHVybnMgbnVsbC4gICovDQo+PiAgZW51bSBzdHJ1Y3Qgc3BlY2lhbF9hcnJheV9tZW1iZXINCj4+ ICAgIHsNCj4+IC0gICBub25lLCAgICAgIC8qIE5vdCBhIHNwZWNpYWwgYXJyYXkgbWVtYmVyLiAg Ki8NCj4+IC0gICBpbnRfMCwgICAgIC8qIEludGVyaW9yIGFycmF5IG1lbWJlciB3aXRoIHNpemUg emVyby4gICovDQo+PiAtICAgdHJhaWxfMCwgICAvKiBUcmFpbGluZyBhcnJheSBtZW1iZXIgd2l0 aCBzaXplIHplcm8uICAqLw0KPj4gLSAgIHRyYWlsXzEgICAgLyogVHJhaWxpbmcgYXJyYXkgbWVt YmVyIHdpdGggb25lIGVsZW1lbnQuICAqLw0KPj4gKyAgICBub25lLAkvKiBOb3QgYSBzcGVjaWFs IGFycmF5IG1lbWJlci4gICovDQo+PiArICAgIGludF8wLAkvKiBJbnRlcmlvciBhcnJheSBtZW1i ZXIgd2l0aCBzaXplIHplcm8uICAqLw0KPj4gKyAgICB0cmFpbF8wLAkvKiBUcmFpbGluZyBhcnJh eSBtZW1iZXIgd2l0aCBzaXplIHplcm8uICAqLw0KPj4gKyAgICB0cmFpbF8xCS8qIFRyYWlsaW5n IGFycmF5IG1lbWJlciB3aXRoIG9uZSBlbGVtZW50LiAgKi8NCj4+ICAgIH07DQo+PiAgICAvKiBS ZXR1cm4gdGhlIHNpemUgb2YgdGhlIG1lbWJlciByZWZlcmVuY2VkIGJ5IHRoZSBDT01QT05FTlRf UkVGLCB1c2luZw0KDQo=