From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2108.outbound.protection.outlook.com [40.107.93.108]) by sourceware.org (Postfix) with ESMTPS id 9676A3861816 for ; Thu, 7 Dec 2023 08:54:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9676A3861816 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=os.amperecomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9676A3861816 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.93.108 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701939272; cv=pass; b=iQgTG67vRNBfyhntFyfDNRctNITPxya1ugctnqnzpnBSjEtp/5ukQDPO5B6mAB+69u82wz0q3KGwS53Fb2IDz6iwrlFB8Ss4oaLRdKrYeuZYUxD/f+Lvtx+vYgQDGVsyiNs1+kzKeMoUQe1u90LCpoX23prolNqqIJzzd7ukbls= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701939272; c=relaxed/simple; bh=EkvBX2gszuQpVwmbXeFR8lBeo8oaCyuR4oYlfWyl+nE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=f76VpignXpBbNQla4is4lQTBu5iioFxSDL+X0GT6G0H1mcmGw/WWN/M/SsvJJt2UHartZcrXoxX7yN4yWcvsXUGxStnaaw2+9ib1dMQUFpBBt5WyStLYU7dz1sb8NBWTI1cq5+bx7wobS6hZqjZV7fMb+sPcgrD09fINzEhnrXg= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hiFqFPh8f2cIpKLbPQUXVyRs0GFr9Amdp0XmOJXk3Ug10HAw45/dVL/YIyjsxAsh393Du3tDLPD8/shfuKxoHuBCZ4IOqKhktuhHj2wmsLb+AyKeR9xxZuGhUcG49QthoYBh17tfzXIkDCu/vfx/jHVtwoAxGv7GKMv/RSfO4d4s3P/dOmYsv+ugUahajsyLu6eYNxJElRQoIK7YKJYgVbemUTWkkEOAHE4Vi4QWOyGKW4jvhMtN5fpWKV57IbbB/BUMo5Gyj8Y5QfMHribM8hSsBiRBCxtPOsvUOnmW46CQ1nw7nrFUj5MMpBIWk0xunMYV2HLSTrI6hBJ7tTCgkA== 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=EkvBX2gszuQpVwmbXeFR8lBeo8oaCyuR4oYlfWyl+nE=; b=N9JcFdl2oMkGiuLd9kjN//gBPZEK/QDhNXDQkhyKgu1OjdqLh1QOWOL7IJhpGnIhv8SRIDueM2hGumJQ9O6FO06lGvREo4/io5DnGzI3UyyBO3zIKEeU99WdAfMSRZhVVP7eSHqkC+oIdHAspQhHmO5+hh0uShtCmhlPbsTc8uZj3gb+zbFeS69hEN+xetqsGAuu6dH2F5nlRnuAFIbebE0RLXjJdi1DsBgc6lUrrxHPH92Sm0lS/bHRt5Rp51w4lCXziBm0A6JoAlMmPioPPErVs4mD68jdqlItbt8LM7bSQBjDOBCQBjl2yIVhfRbXyMEwXyyXge4PqdJEnwSgkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EkvBX2gszuQpVwmbXeFR8lBeo8oaCyuR4oYlfWyl+nE=; b=dNxVtVCgGwmHhzN7kZjHoGmp/BNzvQMgnj8USeRT9HzYb46iLh1J2VgMe+ywx+yCXFTHjvayK0DAqmHxIxxXfFd6nsaNDB0YDFqWkqqPgeFQ875tNe2PD/koaHQPr8L6Lye2oen8WpnK0otlO6Wa4wfSEohhzwnP+F3ObMFY2Ng= Received: from SN6PR0102MB3487.prod.exchangelabs.com (2603:10b6:805:3::28) by BL3PR01MB7044.prod.exchangelabs.com (2603:10b6:208:35f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.27; Thu, 7 Dec 2023 08:54:24 +0000 Received: from SN6PR0102MB3487.prod.exchangelabs.com ([fe80::88fb:57da:b19f:2f5a]) by SN6PR0102MB3487.prod.exchangelabs.com ([fe80::88fb:57da:b19f:2f5a%7]) with mapi id 15.20.7068.025; Thu, 7 Dec 2023 08:54:23 +0000 From: Hao Liu OS To: Richard Biener CC: "GCC-patches@gcc.gnu.org" Subject: Re: [PATCH] tree-optimization/PR112774 - SCEV: extend the chrec tree with a nonwrapping flag Thread-Topic: [PATCH] tree-optimization/PR112774 - SCEV: extend the chrec tree with a nonwrapping flag Thread-Index: AQHaJpjz807IjvAR70SqMTUmFSqmCbCcA8FvgAAjnACAAVj8Zw== Date: Thu, 7 Dec 2023 08:54:23 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=True;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2023-12-07T08:54:23.146Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR0102MB3487:EE_|BL3PR01MB7044:EE_ x-ms-office365-filtering-correlation-id: d59e9a60-80c9-44f3-d54a-08dbf7021c2d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: J9gLOT7IKhuQr90neG08hpLsITNWxj4SQxb1PWlJWOtJrjJvdlFujWBbOSrmvE7nHHmfEVhFxuzc4SvUlD1DmNUP2oyN21U7AYcU63MbcUC4ZJAo45o9QlD1ctj3MkQIgHkB9W6zjo0Qw2HVcFEIxY2thPsRVNzFAT/Qlvi0RVygx69xeZiZaQ2NsFJn2hNpMLbvUtgZ1MneM+PkHbcKvaRUGexS7IeK3LSH3b3JmsqIQw/xH7hDBtn0vgVvGTZW2xWVJ+tTdLkC7FsBjq8KJML2oedL3lukrumjO4ULhFxgnW9RBf8VEQOc2gJFyllsU8Ddpzer9pWJ4X/wuRa3uATsIzTzYWWXnomi7DhcpqfAU00TlI+TwhthDwbKia/w0ZkfO77sMtNypD5IgN1Rxhn8pHs+GBedGhSjIoLxrtB5QXEP0raY3CRngggJ9Ly7Ydk29nNpRfqMuYg88G0Ja/7ZYxDeN1JdITo60HUo/eH5H32qxUBWCKzx24u6Ka+mW7vd5MFT0EKwHLBdvHCoa12jsUMefpPRGeEO7Kto2yjVZwv/7AcQfGzyyk0+d7wAjxISJ09zNhfjr6CUBvonCAV42NiIWep3ccyemC2rUSNa3gh0B5ll4kLlycfm7xlbkqV9/MApFiSyBW6XSDjnpA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR0102MB3487.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(346002)(366004)(136003)(39850400004)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(4326008)(2906002)(30864003)(33656002)(8676002)(8936002)(52536014)(86362001)(5660300002)(38070700009)(41300700001)(55016003)(83380400001)(53546011)(84970400001)(9686003)(71200400001)(6506007)(7696005)(26005)(38100700002)(122000001)(66556008)(91956017)(66446008)(66476007)(64756008)(316002)(6916009)(76116006)(66946007)(478600001)(573474002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TVdFR0tGd2VrL2cxVXA1WnlOUlFkSzhPUVlCMXV1K1lkRE1nSWxJODkyOFBi?= =?utf-8?B?NzdUb2p4NzFVVHNBRkJ5TmhFaFZKaTA3ZHE4QlBQdDhBbk1jdEw1SVRWdUp3?= =?utf-8?B?QXo1MDJWNHdWK2l3bkh6M0d4S1dpR0Z6V1JkZUUyRm1TSXVmUEFrbUZHcUZv?= =?utf-8?B?aVBITU01OW1Fb2Z2eG5ieWEzSlM4WmE1Wk1uZlJucU5SbjhmZmt2WFdSOTNq?= =?utf-8?B?MmZtTXlEaDhXTGh2SVZUS21LcmlnYUx6TUQySmNlbDk3T1E5SFA4bmpEc1hm?= =?utf-8?B?YWN3blRZLzBMYktXZTh3NlZiN0s5T2Jxd0xQWHhNdUFscSsxS1dEVEJKUk02?= =?utf-8?B?aERQTTAwa0J1MjBHei9NOE9MV1FGeVVialdQc0pXZ1lCZkUybGFRWFQvcGdG?= =?utf-8?B?NTl5TjJJV3EwQ2ZIWXpWRDcwYUNiUWd3WTdNTktwdHgyUWVuOW03QlV3dEJN?= =?utf-8?B?aVFMQnhoQjBUQjJrQWdCTksyOTJBVjQvc0JqMGc3Sko4aHc5SlR5ZVoreDZj?= =?utf-8?B?SGNWNEF4U2Rnam9iMEp4VGZCekNmRlprNGpMaCsxMlh3ckxzVTZ3Nnl1a3FJ?= =?utf-8?B?WHZvT0FoVWYvbm5LZ2VBUHJVOWZRV09obVo4TDJ6OWpBVmtEL2plRUJjN0FJ?= =?utf-8?B?NDVVRjBnV2kvWWp6NEdxNTl2Qzd0LzhlS3BpeW8xNjZQNGtWRW5ISXA1UUwx?= =?utf-8?B?d0JZK3N6V01UZSt2WUJIbGtoL1VzRWpncnYxLzZoNW05UkplekZqRm90aUxT?= =?utf-8?B?M095K2ZlU29NTSsvRHFzTllXWjJXNEM2bUtHN2FCNEJQd1B5WWhRTjV0anRx?= =?utf-8?B?NGpiUjJXY0pPdHFOa1ROSTZPZ0YwV0x1cWQyL3NzOHNWcE9KankxSGdiN1Jw?= =?utf-8?B?TC8vVWJrU3gwMEJ6UkZuY3ZLaEdkZ1FvUGZUcFQrTnJMOFdybUMxaXJQTFhy?= =?utf-8?B?NmNzNktBT1JKVlpYVmVZT215M0tRb3NwNENwdFhRdHYvcVpIL0xYdlNTRFFH?= =?utf-8?B?bTZoSEhqMUtacCtXcEd4UURkOU5LOGVNZFFUNzdmd1B0dUROMUZFR0JIN0ZC?= =?utf-8?B?MmlXSE1RaG1HcEtnN0szWDY4WDM4VUJhQlRDVWljbnlHWTVxQWsyRmhxZ1Ry?= =?utf-8?B?QjhXNTFEckJmTUt2YWVsOFgrOGJNZmlVZ3ZhcmZCQk5HNWZuc2V3dTZQaHdq?= =?utf-8?B?WDdVVGRyMG9BbVAvckg4M1ZIWXVnZ2gwN25td3ZsZm9RUUw2ckF4eEltTUFo?= =?utf-8?B?K3p1ZVFONEJOZytSNktBUlF5ZllVbXRFM2RtYm54NmdaTWZJZG42VzJUbW1r?= =?utf-8?B?bWVTcFBnVkJYNTVrbk0zR0RxT0ZJNmtMSVdEdTN6Z2pXWmM2R1ZRSzVYVytz?= =?utf-8?B?NEUzQVRaRXk2RHl2cmgwbFVyN2pPVGhIbWJnUnE3QXRDVlkxYU9jSFZpdjZK?= =?utf-8?B?bW9sRW9RWmhQWGZZTEJJRktGZlNlMG9yaWk1TjlDUDlEU0w5c3Flc3VaOEpk?= =?utf-8?B?TFZuNUt1M2lQd29DaUJVNGlFKzZaN0dPQW93ZDNPRXoybXh1amxCSDNGTFRx?= =?utf-8?B?V1FOK0pFVUxGZTRvTmR3d3J5WEFyUVBVUEhDenl1NjJ1aGFySzl1aVpUcEFR?= =?utf-8?B?VUxNNE9jNHlPdDRzajN0R3ZqQXE4ZFRHeDh6R01lV05LbXN6anY4UFoydGxn?= =?utf-8?B?bVdkUzJNbm9HMzd6aWFycUxNVXRLak8vYjA5Y2RWVGZLcXBrY3gvZVBVZmdt?= =?utf-8?B?bndxSXpMM2Z1UVROZkdSNlpYWjhKZmJxK1FBdDhqTGRiTUpURWdYNCtDK0RK?= =?utf-8?B?OGZ4bHZkcjFvUDBHczVMMStPTE5TWFF0aFhlYi9IUGVqZFhsQnkyMXFzdDdk?= =?utf-8?B?NUw5RndNZTFYWkJwcHpiaGdZUUl4NUdQRzF1aWd2WkllVHA3Zm9DMnU4WHlu?= =?utf-8?B?Tm9BNjY5eDNGYlptRElNRm1ZR0RseW50Z3pYUDc4RkJVS25kUk43YkFYRmsx?= =?utf-8?B?TnFoTnVTb2dISFZrbE5zYndvZU12RzYydGlORDlpSXNmQUh6c3VsY3hveUVU?= =?utf-8?B?eDFnTnhJcWwzT1RTMDhKNnA0Q3M5SXNDM3pRYnRpZ2xTUG9JK1BPVUlWelpR?= =?utf-8?B?eEtzNHExVG1vNzdWaHNGNmkvdjJ2VnhEZ01xa1QyVHdENlVHaDM4VXFWbnUx?= =?utf-8?B?Q0E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR0102MB3487.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: d59e9a60-80c9-44f3-d54a-08dbf7021c2d X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2023 08:54:23.7193 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jEuysFmkyD2fA8EUboIG1psS9SxHPJvWJxYtBrc7SjULyBfFfyWCDxXDB/BegpRqaCifhhy4zLYy8Kh54FCRmpCeVDNeTe8LacVETg4Do+vDsoZbWAyeEHSBIvAvm2AZ X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR01MB7044 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PiBDYW4geW91IHRyeSB0byBkbyBzb21lIHN0YXRpc3RpY3Mgb24gc2F5IFNQRUMgQ1BVPyAgSSdt IHVzdWFsbHkNCj4gYnVpbGRpbmcgKHdpdGggLWoxKSB3aXRoIC1mb3B0LWluZm8tdmVjIGFuZCBk aWZmIGJ1aWxkIGxvZ3MsIHlvdSBjYW4gdGhlbiBzZWUNCj4gaG93IG1hbnkgbW9yZSBsb29wcyAo YW5kIHdoaWNoKSB3ZSB2ZWN0b3JpemUgYWRkaXRpb25hbGx5Pw0KDQpJIHRyaWVkIHRoaXMgb3B0 aW9uIHdpdGggU1BFQzIwMTcgaW50cmF0ZStmcHJhdGUgYW5kIGNvdW50IHRoZSAib3B0aW1pemVk OiAiDQpsaW5lcy4gRml2ZSBtb3JlIGxvb3BzIGFyZSB2ZWN0b3JpemVkIChhYXJjaDY0LWxpbnV4 LWdudTogTzMvT2Zhc3QgZm9yIGludC9mcCk6DQoNCiAgICB8IE8zL09mYXN0ICAgICAgICB8IGJl Zm9yZSB8IGFmdGVyIHwgYWRkaXRpb25hbGx5IHZlY3Rvcml6ZWQgICAgIHwNCiAgICB8IC0tLS0t LS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IHwNCiAgICB8IDUwMi5nY2NfciAgICAgICB8IDEwNzUgICB8IDEwNzYgIHwgcmVsb2FkMS5jOjE5 MzQgICAgICAgICAgICAgIHwNCiAgICB8IDUxMC5wYXJlc3RfciAgICB8IDk4MTggICB8IDk4MTkg IHwgZmVfZGdwX21vbm9taWFsLmNjOjEwNCAgICAgIHwNCiAgICB8IDUyMy54YWxhbmNibWtfciB8 IDQ3OTEgICB8IDQ4MjQgIHwgWE1MUmVhZGVyLmNwcDoxNjUwICAgICAgICAgIHwNCiAgICB8IDUy Ni5ibGVuZGVyX3IgICB8IDQ1MjAgICB8IDQ1MjIgIHwgaW5mYmFjay5jOjQ0MSxpbmZsYXRlLmM6 OTgzIHwNCg0KQWxsIG9mIHRoZW0gYWNjZXNzIGFycmF5cyB3aXRoIHVuc2lnbmVkIG9mZnNldHMs IHdoaWNoIGFyZSBwcmV2aW91c2x5IHRob3VnaHQNCmNhbiBiZSBvdmVyZmxvdy4gRS5nLiwgdGhl IGNhc2UgaW4gNTAyLmdjYzoNCg0KICAgIHVuc2lnbmVkIGludCBpOw0KICAgIHVuc2lnbmVkIGlu dCB0aGlzX25yZWdzID0gLi4uOw0KDQogICAgZm9yIChqID0gMTsgaiA8IHRoaXNfbnJlZ3M7IGor KykNCiAgICAgIHsNCiAgICAgICAgdGhpc19jb3N0ICs9IHNwaWxsX2FkZF9jb3N0W3JlZ25vICsg al07DQogICAgICAgIGlmICgoVEVTVF9IQVJEX1JFR19CSVQgKG5vdF91c2FibGUsIHJlZ25vICsg aikpDQogICAgICAgICAgfHwgVEVTVF9IQVJEX1JFR19CSVQgKHVzZWRfYnlfb3RoZXJfcmVsb2Fk LCByZWdubyArIGopKQ0KICAgICAgICAgIG9rID0gMDsNCiAgICAgIH0NCg0KSG93ZXZlciwgYXMg dGhleSBhcmUgbm90IGhvdCwgdGhlIHBlcmZvcm1hbmNlIGlzIG5vdCBhZmZlY3RlZC4gSSBtZWFz dXJlZCB0aGUgYnVpbGQgdGltZSwgd2hpY2ggaXMgYWxzbyBub3QgYWZmZWN0ZWQuIFdpdGggIi1m bHRvIiwgbW9yZSBiZW5jaG1hcmtzICgxMiBpbiB0b3RhbCkgd2lsbCBiZSBhZmZlY3RlZCAoZGV0 YWlscyBhcmUgbm90IGFuYWx5emVkKToNCg0KICAgIHwgTzMvT2Zhc3QgKyAtZmx0byB8IGJlZm9y ZSB8IGFmdGVyIHwgZGlmZiB8DQogICAgfCAtLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0t LS0gfCAtLS0tIHwNCiAgICB8IDUwMi5nY2NfciAgICAgICAgfCA5NzkgICAgfCA5ODAgICB8ICsx ICAgfA0KICAgIHwgNTA3LmNhY3R1QlNTTl9yICB8IDM0NTQgICB8IDM0NTggIHwgKzQgICB8DQog ICAgfCA1MDgubmFtZF9yICAgICAgIHwgODU4ICAgIHwgODU3ICAgfCAtMSAgIHwNCiAgICB8IDUx MC5wYXJlc3RfciAgICAgfCAxNTc1ICAgfCAxNTc3ICB8ICsyICAgfA0KICAgIHwgNTExLnBvdnJh eV9yICAgICB8IDgxMCAgICB8IDgxMiAgIHwgKzIgICB8DQogICAgfCA1MjEud3JmX3IgICAgICAg IHwgODc2OSAgIHwgODc2MyAgfCAtNiAgIHwNCiAgICB8IDUyMy54YWxhbmNibWtfciAgfCAzOTU5 ICAgfCAzOTc5ICB8ICsyMCAgfA0KICAgIHwgNTI2LmJsZW5kZXJfciAgICB8IDQ1ODAgICB8IDQ1 NzUgIHwgLTUgICB8DQogICAgfCA1MjcuY2FtNF9yICAgICAgIHwgMjM3MSAgIHwgMjM3MCAgfCAt MSAgIHwNCiAgICB8IDUzOC5pbWFnaWNrX3IgICAgfCA0NjIgICAgfCA0NjEgICB8IC0xICAgfA0K ICAgIHwgNTQ5LmZvdG9uaWszZF9yICB8IDQzNiAgICB8IDQzNyAgIHwgKzEgICB8DQogICAgfCA1 NTQucm9tc19yICAgICAgIHwgODUyICAgIHwgODUxICAgfCAtMSAgIHwNCg0KSSB0aGluayB1c2lu ZyB1bnNpZ25lZCBpbmRleCB0byBhY2Nlc3MgYXJyYXkgc2hvdWxkIGJlIHJhcmUuIFByb2dyYW1t ZXJzDQp0ZW5kIHRvIHVzZSAiZm9yIChpbnQgaTsgLi4uKSIgaW5zdGVhZCBvZiB1bnNpZ25lZCB2 YWx1ZXMuIEJ1dCB0aGVyZSBtYXkgYmUNCnNwZWNpYWwgcmVxdWlyZW1lbnRzLiBUaGlzIG9wcG9y dHVuaXR5IGlzIGZvdW5kIGluIGEgcmVhbCBhcHBsaWNhdGlvbiwgd2hpY2gNCmhhcyBob3QgbG9v cHMgd2l0aCBzdWNoIHVuc2lnbmVkIGFjY2VzcyBwYXR0ZXJuLCBhbmQgaXQgY2FuIGdldCBodWdl DQppbXByb3ZlbWVudHMuDQoNClRoYW5rcywNCkhhbw0KDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQpGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhl ckBnbWFpbC5jb20+DQpTZW50OiBXZWRuZXNkYXksIERlY2VtYmVyIDYsIDIwMjMgMTk6NDkNClRv OiBIYW8gTGl1IE9TDQpDYzogR0NDLXBhdGNoZXNAZ2NjLmdudS5vcmcNClN1YmplY3Q6IFJlOiBb UEFUQ0hdIHRyZWUtb3B0aW1pemF0aW9uL1BSMTEyNzc0IC0gU0NFVjogZXh0ZW5kIHRoZSBjaHJl YyB0cmVlIHdpdGggYSBub253cmFwcGluZyBmbGFnDQoNCk9uIFdlZCwgRGVjIDYsIDIwMjMgYXQg MTA6NDbigK9BTSBIYW8gTGl1IE9TIDxobGl1QG9zLmFtcGVyZWNvbXB1dGluZy5jb20+IHdyb3Rl Og0KPg0KPiBIaSwNCj4NCj4gVXBkYXRlIHRoZSBwYXRjaCB0byBmaXggcHJvYmxlbXMgaW4gdGhl IHRlc3QgY2FzZToNCj4gIC0gYWRkICItZGV0YWlscyIgb3B0aW9uIHRvIHRoZSBkdW1wIGNvbW1h bmQNCj4gIC0gYWRkIGRnLXJlcXVpcmUgYW5kIHRhcmdldCBmaWx0ZXJzIHRvIGF2b2lkIHBvdGVu dGlhbCBmYWlsdXJlcyBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHZlY3Rvcml6YXRp b24uDQoNCkludGVyZXN0aW5nIHNpbXBsZSB0cmljayAtIHRoZSBkb3duc2lkZSBpcyB0aGF0IHRo aXMgbWFrZXMgdGhlDQpyZWN1cnNpdmUgZGVwZW5kZW5jZQ0Kb2YgU0NFViBvbiBuaXRlciBhbmFs eXNpcyBhbmQgbml0ZXIgYW5hbHlzaXMgb24gU0NFViBldmVuICJ3b3JzZSIuICBBbHNvIHlvdQ0K c2V0IHRoZSBmbGFnIG9uIENIUkVDcyB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgY2FjaGVkLCBz byBJJ20gbm90IHN1cmUgaG93DQplZmZlY3RpdmUgdGhpcyB3aWxsIGJlIC4uLg0KDQpDYW4geW91 IHRyeSB0byBkbyBzb21lIHN0YXRpc3RpY3Mgb24gc2F5IFNQRUMgQ1BVPyAgSSdtIHVzdWFsbHkN CmJ1aWxkaW5nICh3aXRoIC1qMSkgd2l0aCAtZm9wdC1pbmZvLXZlYyBhbmQgZGlmZiBidWlsZCBs b2dzLCB5b3UgY2FuIHRoZW4gc2VlDQpob3cgbWFueSBtb3JlIGxvb3BzIChhbmQgd2hpY2gpIHdl IHZlY3Rvcml6ZSBhZGRpdGlvbmFsbHk/DQoNClRoYW5rcywNClJpY2hhcmQuDQoNCj4gVGhhbmtz LA0KPiAtSGFvDQo+DQo+IGdjYy9DaGFuZ2VMb2c6DQo+DQo+ICAgICAgICAgUFIgdHJlZS1vcHRp bWl6YXRpb24vMTEyNzc0DQo+ICAgICAgICAgKiB0cmVlLXByZXR0eS1wcmludC5jYzogaWYgbm9u d3JhcHBpbmcgZmxhZyBpcyBzZXQsIGNocmVjIHdpbGwgYmUNCj4gICAgICAgICBwcmludGVkIHdp dGggYWRkaXRpb25hbCA8bnc+IGluZm8uDQo+ICAgICAgICAgKiB0cmVlLXNjYWxhci1ldm9sdXRp b24uY2M6IGFkZCByZWNvcmRfbm9ud3JhcHBpbmdfY2hyZWMgYW5kDQo+ICAgICAgICAgbm9ud3Jh cHBpbmdfY2hyZWNfcCB0byBzZXQgYW5kIGNoZWNrIHRoZSBuZXcgZmxhZyByZXNwZWN0aXZlbHku DQo+ICAgICAgICAgKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uaDogTGlrZXdpc2UuDQo+ICAgICAg ICAgKiB0cmVlLXNzYS1sb29wLW5pdGVyLmNjIChpZHhfaW5mZXJfbG9vcF9ib3VuZHMsDQo+ICAg ICAgICAgaW5mZXJfbG9vcF9ib3VuZHNfZnJvbV9wb2ludGVyX2FyaXRoLCBpbmZlcl9sb29wX2Jv dW5kc19mcm9tX3NpZ25lZG5lc3MsDQo+ICAgICAgICAgc2Nldl9wcm9iYWJseV93cmFwc19wKTog Y2FsbCByZWNvcmRfbm9ud3JhcHBpbmdfY2hyZWMgYmVmb3JlDQo+ICAgICAgICAgcmVjb3JkX25v bndyYXBwaW5nX2l2LCBjYWxsIG5vbndyYXBwaW5nX2NocmVjX3AgdG8gY2hlY2sgdGhlIGZsYWcg aXMgc2V0IGFuZA0KPiAgICAgICAgIHJldHVybiBmYWxzZSBmcm9tIHNjZXZfcHJvYmFibHlfd3Jh cHNfcC4NCj4gICAgICAgICAqIHRyZWUtdmVjdC1sb29wLmNjICh2ZWN0X2FuYWx5emVfbG9vcCk6 IGNhbGwNCj4gICAgICAgICBmcmVlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19lc3RpbWF0ZXMgZXhw bGljaXRseS4NCj4gICAgICAgICAqIGdjYy90cmVlLmg6IGFkZCBDSFJFQ19OT1dSQVAoTk9ERSks IGJhc2Uubm90aHJvd19mbGFnIGlzIHVzZWQNCj4gICAgICAgICB0byByZXByZXNlbnQgdGhlIG5v bndyYXBwaW5nIGluZm8uDQo+DQo+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPg0KPiAgICAg ICAgICogZ2NjLmRnL3RyZWUtc3NhL3NjZXYtMTYuYzogTmV3IHRlc3QuDQo+IC0tLQ0KPiAgZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc2Nldi0xNi5jIHwgMTggKysrKysrKysrKysrKysr KysrDQo+ICBnY2MvdHJlZS1wcmV0dHktcHJpbnQuY2MgICAgICAgICAgICAgICAgfCAgMiArLQ0K PiAgZ2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5jYyAgICAgICAgICAgIHwgMjQgKysrKysrKysr KysrKysrKysrKysrKysrDQo+ICBnY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmggICAgICAgICAg ICAgfCAgMiArKw0KPiAgZ2NjL3RyZWUtc3NhLWxvb3Atbml0ZXIuY2MgICAgICAgICAgICAgIHwg MjEgKysrKysrKysrKysrKysrKy0tLS0tDQo+ICBnY2MvdHJlZS12ZWN0LWxvb3AuY2MgICAgICAg ICAgICAgICAgICAgfCAgNCArKysrDQo+ICBnY2MvdHJlZS5oICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgOCArKysrKy0tLQ0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25z KCspLCA5IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL3NjZXYtMTYuYw0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2Evc2Nldi0xNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1z c2Evc2Nldi0xNi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw Li4xMjBmNDBjMGI2Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RyZWUtc3NhL3NjZXYtMTYuYw0KPiBAQCAtMCwwICsxLDE4IEBADQo+ICsvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9p bnQgfSAqLw0KPiArLyogeyBkZy1vcHRpb25zICItTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZmR1bXAt dHJlZS12ZWN0LWRldGFpbHMiIH0gKi8NCj4gKw0KPiAraW50IEFbMTAyNCAqIDJdOw0KPiArDQo+ ICtpbnQgZm9vICh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIE4pDQo+ICt7DQo+ICsgIGludCBz dW0gPSAwOw0KPiArDQo+ICsgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ICsg ICAgc3VtICs9IEFbaSArIG9mZnNldF07DQo+ICsNCj4gKyAgcmV0dXJuIHN1bTsNCj4gK30NCj4g Kw0KPiArLyogTG9vcCBjYW4gYmUgdmVjdG9yaXplZCBieSByZWZlcnJpbmcgImkgKyBvZmZzZXQi IGlzIG5vbndyYXBwaW5nIGZyb20gYXJyYXkuICAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMiICJ2ZWN0IiB7IHRhcmdldCB7ICEgeyBhdnIt Ki0qIG1zcDQzMC0qLSogcHJ1LSotKiB9IH0gfSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90 cmVlLXByZXR0eS1wcmludC5jYyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYw0KPiBpbmRleCAx ZmFkZDc1MmQwNS4uMGRhYmI2ZDE1ODAgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXByZXR0eS1w cmludC5jYw0KPiArKysgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuY2MNCj4gQEAgLTM0ODgsNyAr MzQ4OCw3IEBAIGR1bXBfZ2VuZXJpY19ub2RlIChwcmV0dHlfcHJpbnRlciAqcHAsIHRyZWUgbm9k ZSwgaW50IHNwYywgZHVtcF9mbGFnc190IGZsYWdzLA0KPiAgICAgICAgZHVtcF9nZW5lcmljX25v ZGUgKHBwLCBDSFJFQ19MRUZUIChub2RlKSwgc3BjLCBmbGFncywgZmFsc2UpOw0KPiAgICAgICAg cHBfc3RyaW5nIChwcCwgIiwgKywgIik7DQo+ICAgICAgICBkdW1wX2dlbmVyaWNfbm9kZSAocHAs IENIUkVDX1JJR0hUIChub2RlKSwgc3BjLCBmbGFncywgZmFsc2UpOw0KPiAtICAgICAgcHBfc3Ry aW5nIChwcCwgIn1fIik7DQo+ICsgICAgICBwcF9zdHJpbmcgKHBwLCAhQ0hSRUNfTk9XUkFQIChu b2RlKSA/ICJ9XyIgOiAifTxudz5fIik7DQo+ICAgICAgICBwcF9zY2FsYXIgKHBwLCAiJXUiLCBD SFJFQ19WQVJJQUJMRSAobm9kZSkpOw0KPiAgICAgICAgaXNfc3RtdCA9IGZhbHNlOw0KPiAgICAg ICAgYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjIGIv Z2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5jYw0KPiBpbmRleCBmNjEyNzdjMzJkZi4uODE2MzA2 MDNjMTIgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXNjYWxhci1ldm9sdXRpb24uY2MNCj4gKysr IGIvZ2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5jYw0KPiBAQCAtMjA1MCw2ICsyMDUwLDMwIEBA IGFuYWx5emVfc2NhbGFyX2V2b2x1dGlvbiAoY2xhc3MgbG9vcCAqbG9vcCwgdHJlZSB2YXIpDQo+ ICAgIHJldHVybiByZXM7DQo+ICB9DQo+DQo+ICsvKiBJZiBDSFJFQyBkb2Vzbid0IG92ZXJmbG93 LCBzZXQgdGhlIG5vbndyYXBwaW5nIGZsYWcuICAqLw0KPiArDQo+ICt2b2lkIHJlY29yZF9ub253 cmFwcGluZ19jaHJlYyAodHJlZSBjaHJlYykNCj4gK3sNCj4gKyAgQ0hSRUNfTk9XUkFQKGNocmVj KSA9IDE7DQo+ICsNCj4gKyAgaWYgKGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRERl9TQ0VW KSkNCj4gKyAgICB7DQo+ICsgICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICIocmVjb3JkX25vbndy YXBwaW5nX2NocmVjOiAiKTsNCj4gKyAgICAgIHByaW50X2dlbmVyaWNfZXhwciAoZHVtcF9maWxl LCBjaHJlYyk7DQo+ICsgICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICIpXG4iKTsNCj4gKyAgICB9 DQo+ICt9DQo+ICsNCj4gKy8qIFJldHVybiB0cnVlIGlmIENIUkVDJ3Mgbm9ud3JhcHBpbmcgZmxh ZyBpcyBzZXQuICAqLw0KPiArDQo+ICtib29sIG5vbndyYXBwaW5nX2NocmVjX3AgKHRyZWUgY2hy ZWMpDQo+ICt7DQo+ICsgIGlmICghY2hyZWMgfHwgVFJFRV9DT0RFKGNocmVjKSAhPSBQT0xZTk9N SUFMX0NIUkVDKQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICByZXR1cm4gQ0hSRUNf Tk9XUkFQKGNocmVjKTsNCj4gK30NCj4gKw0KPiAgLyogQW5hbHl6ZXMgYW5kIHJldHVybnMgdGhl IHNjYWxhciBldm9sdXRpb24gb2YgVkFSIGFkZHJlc3MgaW4gTE9PUC4gICovDQo+DQo+ICBzdGF0 aWMgdHJlZQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5oIGIvZ2Nj L3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5oDQo+IGluZGV4IGE2NGVkNzhmZTYzLi5mNTdmZGUxMmVl MiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5oDQo+ICsrKyBiL2dj Yy90cmVlLXNjYWxhci1ldm9sdXRpb24uaA0KPiBAQCAtNDMsNiArNDMsOCBAQCBleHRlcm4gYm9v bCBzaW1wbGVfaXYgKGNsYXNzIGxvb3AgKiwgY2xhc3MgbG9vcCAqLCB0cmVlLCBzdHJ1Y3QgYWZm aW5lX2l2ICosDQo+ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCk7DQo+ICBleHRlcm4gYm9v bCBpdl9jYW5fb3ZlcmZsb3dfcCAoY2xhc3MgbG9vcCAqLCB0cmVlLCB0cmVlLCB0cmVlKTsNCj4g IGV4dGVybiB0cmVlIGNvbXB1dGVfb3ZlcmFsbF9lZmZlY3Rfb2ZfaW5uZXJfbG9vcCAoY2xhc3Mg bG9vcCAqLCB0cmVlKTsNCj4gK2V4dGVybiB2b2lkIHJlY29yZF9ub253cmFwcGluZ19jaHJlYyAo dHJlZSk7DQo+ICtleHRlcm4gYm9vbCBub253cmFwcGluZ19jaHJlY19wICh0cmVlKTsNCj4NCj4g IC8qIFJldHVybnMgdGhlIGJhc2ljIGJsb2NrIHByZWNlZGluZyBMT09QLCBvciB0aGUgQ0ZHIGVu dHJ5IGJsb2NrIHdoZW4NCj4gICAgIHRoZSBsb29wIGlzIGZ1bmN0aW9uJ3MgYm9keS4gICovDQo+ IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtbG9vcC1uaXRlci5jYyBiL2djYy90cmVlLXNzYS1s b29wLW5pdGVyLmNjDQo+IGluZGV4IDIwOThiZWY5YTk3Li5kNDY1ZTBlZDdlMSAxMDA2NDQNCj4g LS0tIGEvZ2NjL3RyZWUtc3NhLWxvb3Atbml0ZXIuY2MNCj4gKysrIGIvZ2NjL3RyZWUtc3NhLWxv b3Atbml0ZXIuY2MNCj4gQEAgLTQyMDYsMTEgKzQyMDYsMTUgQEAgaWR4X2luZmVyX2xvb3BfYm91 bmRzICh0cmVlIGJhc2UsIHRyZWUgKmlkeCwgdm9pZCAqZHRhKQ0KPg0KPiAgICAvKiBJZiBhY2Nl c3MgaXMgbm90IGV4ZWN1dGVkIG9uIGV2ZXJ5IGl0ZXJhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhh dCBvdmVybG93DQo+ICAgICAgIG1heSBub3QgbWFrZSB0aGUgYWNjZXNzIHZhbGlkIGxhdGVyLiAg Ki8NCj4gLSAgaWYgKCFkb21pbmF0ZWRfYnlfcCAoQ0RJX0RPTUlOQVRPUlMsIGxvb3AtPmxhdGNo LCBnaW1wbGVfYmIgKGRhdGEtPnN0bXQpKQ0KPiAtICAgICAgJiYgc2Nldl9wcm9iYWJseV93cmFw c19wIChOVUxMX1RSRUUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlh bF9jb25kaXRpb25faW5fbG9vcF9udW0gKGV2LCBsb29wLT5udW0pLA0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0ZXAsIGRhdGEtPnN0bXQsIGxvb3AsIHRydWUpKQ0KPiAtICAg IHVwcGVyID0gZmFsc2U7DQo+ICsgIGlmICghZG9taW5hdGVkX2J5X3AgKENESV9ET01JTkFUT1JT LCBsb29wLT5sYXRjaCwgZ2ltcGxlX2JiIChkYXRhLT5zdG10KSkpDQo+ICsgICAgew0KPiArICAg ICAgaWYgKHNjZXZfcHJvYmFibHlfd3JhcHNfcCAoTlVMTF9UUkVFLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbml0aWFsX2NvbmRpdGlvbl9pbl9sb29wX251bSAoZXYsIGxv b3AtPm51bSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAsIGRhdGEt PnN0bXQsIGxvb3AsIHRydWUpKQ0KPiArICAgICAgIHVwcGVyID0gZmFsc2U7DQo+ICsgICAgfQ0K PiArICBlbHNlDQo+ICsgICAgcmVjb3JkX25vbndyYXBwaW5nX2NocmVjIChldik7DQo+DQo+ICAg IHJlY29yZF9ub253cmFwcGluZ19pdiAobG9vcCwgaW5pdCwgc3RlcCwgZGF0YS0+c3RtdCwgbG93 LCBoaWdoLCBmYWxzZSwgdXBwZXIpOw0KPiAgICByZXR1cm4gdHJ1ZTsNCj4gQEAgLTQzMjQsNiAr NDMyOCw3IEBAIGluZmVyX2xvb3BfYm91bmRzX2Zyb21fcG9pbnRlcl9hcml0aCAoY2xhc3MgbG9v cCAqbG9vcCwgZ2ltcGxlICpzdG10KQ0KPiAgICBpZiAoZmxhZ19kZWxldGVfbnVsbF9wb2ludGVy X2NoZWNrcyAmJiBpbnRfY3N0X3ZhbHVlIChsb3cpID09IDApDQo+ICAgICAgbG93ID0gYnVpbGRf aW50X2NzdHUgKFRSRUVfVFlQRSAobG93KSwgVFlQRV9BTElHTl9VTklUIChUUkVFX1RZUEUgKHR5 cGUpKSk7DQo+DQo+ICsgIHJlY29yZF9ub253cmFwcGluZ19jaHJlYyAoc2Nldik7DQo+ICAgIHJl Y29yZF9ub253cmFwcGluZ19pdiAobG9vcCwgYmFzZSwgc3RlcCwgc3RtdCwgbG93LCBoaWdoLCBm YWxzZSwgdHJ1ZSk7DQo+ICB9DQo+DQo+IEBAIC00MzcxLDYgKzQzNzYsNyBAQCBpbmZlcl9sb29w X2JvdW5kc19mcm9tX3NpZ25lZG5lc3MgKGNsYXNzIGxvb3AgKmxvb3AsIGdpbXBsZSAqc3RtdCkN Cj4gICAgICAgIGhpZ2ggPSB3aWRlX2ludF90b190cmVlICh0eXBlLCByLnVwcGVyX2JvdW5kICgp KTsNCj4gICAgICB9DQo+DQo+ICsgIHJlY29yZF9ub253cmFwcGluZ19jaHJlYyAoc2Nldik7DQo+ ICAgIHJlY29yZF9ub253cmFwcGluZ19pdiAobG9vcCwgYmFzZSwgc3RlcCwgc3RtdCwgbG93LCBo aWdoLCBmYWxzZSwgdHJ1ZSk7DQo+ICB9DQo+DQo+IEBAIC01NTA1LDYgKzU1MTEsMTEgQEAgc2Nl dl9wcm9iYWJseV93cmFwc19wICh0cmVlIHZhciwgdHJlZSBiYXNlLCB0cmVlIHN0ZXAsDQo+ICAg IGlmIChsb29wX2V4aXRzX2JlZm9yZV9vdmVyZmxvdyAoYmFzZSwgc3RlcCwgYXRfc3RtdCwgbG9v cCkpDQo+ICAgICAgcmV0dXJuIGZhbHNlOw0KPg0KPiArICAvKiBDaGVjayB0aGUgbm9ud3JhcHBp bmcgZmxhZywgd2hpY2ggbWF5IGJlIHNldCBieSBuaXRlciBhbmFseXNpcyAoZS5nLiwgdGhlDQo+ ICsgICAgIGFib3ZlIGxvb3AgZXhpdHMgYmVmb3JlIG92ZXJmbG93KS4gICovDQo+ICsgIGlmICh2 YXIgJiYgbm9ud3JhcHBpbmdfY2hyZWNfcCAoYW5hbHl6ZV9zY2FsYXJfZXZvbHV0aW9uIChsb29w LCB2YXIpKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gICAgLyogQXQgdGhpcyBwb2lu dCB3ZSBzdGlsbCBkb24ndCBoYXZlIGEgcHJvb2YgdGhhdCB0aGUgaXYgZG9lcyBub3QNCj4gICAg ICAgb3ZlcmZsb3c6IGdpdmUgdXAuICAqLw0KPiAgICByZXR1cm4gdHJ1ZTsNCj4gZGlmZiAtLWdp dCBhL2djYy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiBpbmRl eCAzZGYwMjBkMjIyOC4uN2YyNzhlMmQ4ZjQgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Qt bG9vcC5jYw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gQEAgLTM1NzAsNiArMzU3 MCwxMCBAQCB2ZWN0X2FuYWx5emVfbG9vcCAoY2xhc3MgbG9vcCAqbG9vcCwgdmVjX2luZm9fc2hh cmVkICpzaGFyZWQpDQo+ICAgICAgICAgIGFuYWx5c2lzIGFyZSBkb25lIHVuZGVyIHRoZSBhc3N1 bXB0aW9ucy4gICovDQo+ICAgICAgICBsb29wX2NvbnN0cmFpbnRfc2V0IChsb29wLCBMT09QX0Nf RklOSVRFKTsNCj4gICAgICB9DQo+ICsgIGVsc2UNCj4gKyAgICAvKiBDbGVhciB0aGUgZXhpc3Rp bmcgbml0ZXIgaW5mb3JtYXRpb24gdG8gbWFrZSBzdXJlIHRoZSBub253cmFwcGluZyBmbGFnDQo+ ICsgICAgICAgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCBzZXQgcHJvcHJpYXRlbHkuICAqLw0KPiAr ICAgIGZyZWVfbnVtYmVyc19vZl9pdGVyYXRpb25zX2VzdGltYXRlcyAobG9vcCk7DQo+DQo+ICAg IGF1dG9fdmVjdG9yX21vZGVzIHZlY3Rvcl9tb2RlczsNCj4gICAgLyogQXV0b2RldGVjdCBmaXJz dCB2ZWN0b3Igc2l6ZSB3ZSB0cnkuICAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2dj Yy90cmVlLmgNCj4gaW5kZXggMDg2YjU1ZjAzNzUuLjU5YWY4OTIwZjAyIDEwMDY0NA0KPiAtLS0g YS9nY2MvdHJlZS5oDQo+ICsrKyBiL2djYy90cmVlLmgNCj4gQEAgLTE0MzgsOSArMTQzOCwxMSBA QCBjbGFzcyBhdXRvX3N1cHByZXNzX2xvY2F0aW9uX3dyYXBwZXJzDQo+ICAjZGVmaW5lIENPTkRf RVhQUl9FTFNFKE5PREUpICAgKFRSRUVfT1BFUkFORCAoQ09ORF9FWFBSX0NIRUNLIChOT0RFKSwg MikpDQo+DQo+ICAvKiBBY2Nlc3NvcnMgZm9yIHRoZSBjaGFpbnMgb2YgcmVjdXJyZW5jZXMuICAq Lw0KPiAtI2RlZmluZSBDSFJFQ19MRUZUKE5PREUpICAgICAgICAgIFRSRUVfT1BFUkFORCAoUE9M WU5PTUlBTF9DSFJFQ19DSEVDSyAoTk9ERSksIDApDQo+IC0jZGVmaW5lIENIUkVDX1JJR0hUKE5P REUpICAgICAgICAgVFJFRV9PUEVSQU5EIChQT0xZTk9NSUFMX0NIUkVDX0NIRUNLIChOT0RFKSwg MSkNCj4gLSNkZWZpbmUgQ0hSRUNfVkFSSUFCTEUoTk9ERSkgICAgICBQT0xZTk9NSUFMX0NIUkVD X0NIRUNLIChOT0RFKS0+YmFzZS51LmNocmVjX3Zhcg0KPiArI2RlZmluZSBDSFJFQ19MRUZUKE5P REUpICAgICAgICBUUkVFX09QRVJBTkQgKFBPTFlOT01JQUxfQ0hSRUNfQ0hFQ0sgKE5PREUpLCAw KQ0KPiArI2RlZmluZSBDSFJFQ19SSUdIVChOT0RFKSAgICAgICBUUkVFX09QRVJBTkQgKFBPTFlO T01JQUxfQ0hSRUNfQ0hFQ0sgKE5PREUpLCAxKQ0KPiArI2RlZmluZSBDSFJFQ19WQVJJQUJMRShO T0RFKSAgICBQT0xZTk9NSUFMX0NIUkVDX0NIRUNLIChOT0RFKS0+YmFzZS51LmNocmVjX3Zhcg0K PiArLyogTm9uemVybyBpZiB0aGlzIGNocmVjIGRvZXNuJ3Qgb3ZlcmZsb3cgKGkuZS4sIG5vbndy YXBwaW5nKS4gICovDQo+ICsjZGVmaW5lIENIUkVDX05PV1JBUChOT0RFKSAgICAgIFBPTFlOT01J QUxfQ0hSRUNfQ0hFQ0sgKE5PREUpLT5iYXNlLm5vdGhyb3dfZmxhZw0KPg0KPiAgLyogTEFCRUxf RVhQUiBhY2Nlc3Nvci4gVGhpcyBnaXZlcyBhY2Nlc3MgdG8gdGhlIGxhYmVsIGFzc29jaWF0ZWQg d2l0aA0KPiAgICAgdGhlIGdpdmVuIGxhYmVsIGV4cHJlc3Npb24uICAqLw0KPiAtLQ0KPiAyLjM0 LjENCj4NCj4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBG cm9tOiBIYW8gTGl1IE9TIDxobGl1QG9zLmFtcGVyZWNvbXB1dGluZy5jb20+DQo+IFNlbnQ6IE1v bmRheSwgRGVjZW1iZXIgNCwgMjAyMyAxODowNQ0KPiBUbzogR0NDLXBhdGNoZXNAZ2NjLmdudS5v cmcNCj4gU3ViamVjdDogW1BBVENIXSB0cmVlLW9wdGltaXphdGlvbi9QUjExMjc3NCAtIFNDRVY6 IGV4dGVuZCB0aGUgY2hyZWMgdHJlZSB3aXRoIGEgbm9ud3JhcHBpbmcgZmxhZw0KPg0KPiBMb29w IHZlY290b3JpemF0aW9uIGNhbiBub3Qgb3B0aW1pemUgZm9sbG93aW5nIGNhc2UgZHVlIHRvIFND RVYgaXMgbm90IGFmZmluZQ0KPiBmYWlsdXJlIChpK29mZnNldCBtYXkgb3ZlcmZsb3cpOg0KPg0K PiAgICAgaW50IEFbMTAyNCAqIDJdOw0KPg0KPiAgICAgaW50IGZvbyAodW5zaWduZWQgb2Zmc2V0 LCB1bnNpZ25lZCBOKQ0KPiAgICAgew0KPiAgICAgICBpbnQgc3VtID0gMDsNCj4gICAgICAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IE47IGkrKykNCj4gICAgICAgICBzdW0gKz0gQVtpICsgb2Zm c2V0XTsNCj4gICAgICAgcmV0dXJuIHN1bTsNCj4gICAgIH0NCj4NCj4gQWN0dWFsbHksIG5pdGVy IHBhc3MgY2FuIGZpbmQgbm9ud3JhcHBpbmcgaW5kdWN0aW9uIHZhcmlhYmxlcyAoaS5lLiwgaSAr IG9mZnNldA0KPiBjYW4gbm90IG92ZXJmbG93KSBieSBpbmZlcnJpbmcgZnJvbSB1bmRlZmluZWQg YmVoYXZpb3JzIGxpa2UgYXJyYXkgYWNjZXNzIChzZWUNCj4gcmVjb3JkX25vbndyYXBwaW5nX2l2 KS4gQnV0IHRoaXMgaW5mb3JtYXRpb24gaXMgbm90IHNoYXJlZCB0byBTQ0VWIHlldC4gVGhpcw0K PiBwYXRjaCBhZGRzIGEgbm9ud3JhcHBpbmcgZmxhZyB0byB0aGUgY2hyZWMgdHJlZSwgd2hpY2gg YWxsb3dzIFNDRVYgdG8gcmUtdXNlIGl0DQo+IHRvIHBhc3MgdGhlIG5vbndyYXBwaW5nIGNoZWNr cyBsaWtlIHNjZXZfcHJvYmFibHlfd3JhcHNfcCwgYW5kIGZpbmFseSBsb29wDQo+IHZlY3Rvcml6 YXRpb24gY291bGQgc3VjY2VlZC4NCj4NCj4gVGhlIG5ldyBmbGFnIGlzIGRlZmluZWQgYXMgQ0hS RUNfTk9XUkFQKHRyZWUpLCBhbmQgdGhlIGR1bXAgaW5mbyBpcyBjaGFuZ2VkIGZyb20NCj4gIntv ZmZzZXQsICssIDF9XzEiIC0+ICJ7b2Zmc2V0LCArLCAxfTxudz5fMSIgKG53IGlzIHNob3J0IGZv ciBub253cmFwcGluZykuIFR3bw0KPiBTQ0VWIGludGVyZmFjZXMgcmVjb3JkX25vbndyYXBwaW5n X2NocmVjIGFuZCBub253cmFwcGluZ19jaHJlY19wIGFyZSBhZGRlZCB0bw0KPiBzZXQgYW5kIGNo ZWNrIHRoZSBmbGFnIHJlc3BlY3RpdmVseS4NCj4NCj4gSG93ZXZlciwgYW4gZXh0cmEgcHJvYmxl bSBpcyBjYXVzZWQgYnkgcmVzZXR0aW5nIFNDRVYgY2FjaGUgKGkuZS4sIHNjZXZfcmVzZXQgb3IN Cj4gcmVzZXRfc2Nldl9odGFiKSwgd2hpY2ggbWF5IG5vdCBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0 aGUgY2FsbGluZyBvZg0KPiBmcmVlX251bWJlcnNfb2ZfaXRlcmF0aW9uc19lc3RpbWF0ZXMsIHdo aWNoIHNldCB0aGUgbG9vcC0+ZXN0aW1hdGVfc3RhdGUgdG8NCj4gRVNUX05PVF9DT01QVVRFRCBh bmQgbWFrZSBzdXJlIHRoZSBhYm92ZSBpbmZlcnJpbmcgZnJvbSBhcnJheSBhY2Nlc3MgaXMgY2Fs bGVkLg0KPiBJbiBvdGhlciB3b3JkcywgdGhlIG5vbndyYXBwaW5nIGZsYWcgY291bGQgYmUgY2xl YXJlZCBhbmQgbG9zdCBieSByZXNldHRpbmcgU0NFVg0KPiBjYWNoZSBpZiB0aGUgbG9vcC0+ZXN0 aW1hdGVfc3RhdGUgaXMgbm90IHJlc2V0Lg0KPiBFLmcuLCBnaW1wbGVfZHVwbGljYXRlX2xvb3Bf Ym9keV90b19oZWFkZXJfZWRnZS9mbHVzaF9zc2FuYW1lX2ZyZWVsaXN0LA0KPiB3aGljaCBjYWxs cyBzY2V2X3Jlc2V0L3NjZXZfcmVzZXRfaHRhYiB0byBjbGVhciB0aGUgU0NFViBjYWNoZSwgYnV0 IHRoZQ0KPiBlc3RpbWF0ZV9zdGF0ZSBpcyBzdGlsbCBrZXB0IGFzIEVTVF9BVkFJTEFCTEUgYW5k IHRoZSBmbGFnIHdpbGwgbm90IGJlIHNldCBpbg0KPiBsb29wIHZlY3Rvcml6YXRpb24uDQo+DQo+ IFRoaXMgcGF0Y2ggdXNlcyBhIHNpbXBsZSBmaXggYnkgY2FsbGluZyBmcmVlX251bWJlcnNfb2Zf aXRlcmF0aW9uc19lc3RpbWF0ZXMgaW4NCj4gdmVjdF9hbmFseXplX2xvb3AsIHdoaWNoIHdpbGwg bWFrZSBzdXJlIHRoZSBmbGFnIGlzIGFsd2F5cyBzZXQgcHJvcHJpYXRlbHkgaW4NCj4gbG9vcCB2 ZWN0b3JpemF0aW9uLiBUaGlzIGZpeCBpcyBhIGJpdCBhZC1ob2MgKHdvcmtzIGZvciBsb29wIHZl Y3Rvcml6YXRpb24NCj4gb25seSksIGlmIHRoZXJlIGlzIG1vcmUgcmVhc29uYWJsZSBtZXRob2Qs IEkgd2lsbCByZXZlcnQgdGhlIHNpbXBsZSBmaXggYW5kIHRyeQ0KPiB0aGF0Lg0KPg0KPiBUaGlz IHBhdGNoIGlzIGJvb3RzdHJhcHBlZCBhbmQgdGVzdGVkIG9uIGFhcmNoNjQtbGludXgtZ251IHdp dGggbm8gcmVncmVzc2lvbnMuDQo+IE9LIGZvciB0cnVuaz8NCj4NCj4gLS0tDQo+IFRoZSBwYXRj aCBpcyBhcyBmb2xsb3dpbmc6DQo+DQo+IFtQQVRDSF0gU0NFVjogZXh0ZW5kIHRoZSBjaHJlYyB0 cmVlIHdpdGggYSBub253cmFwcGluZyBmbGFnDQo+ICBbUFIxMTI3NzRdDQo+DQo+IFRoZSBmbGFn IGlzIGRlZmluZWQgYXMgQ0hSRUNfTk9XUkFQKHRyZWUpLCBhbmQgd2lsbCBiZSBkdW1wZWQgZnJv bQ0KPiAie29mZnNldCwgKywgMX1fMSIgdG8gIntvZmZzZXQsICssIDF9PG53Pl8xIiAobncgaXMg c2hvcnQgZm9yIG5vbndyYXBwaW5nKS4NCj4gVHdvIFNDRVYgaW50ZXJmYWNlcyByZWNvcmRfbm9u d3JhcHBpbmdfY2hyZWMgYW5kIG5vbndyYXBwaW5nX2NocmVjX3AgYXJlDQo+IGFkZGVkIHRvIHNl dCBhbmQgY2hlY2sgdGhlIGZsYWcgcmVzcGVjdGl2ZWx5Lg0KPg0KPiBBcyByZXNldHRpbmcgdGhl IFNDRVYgY2FjaGUgKGkuZS4sIHRoZSBjaHJlYyB0cmVlcykgbWF5IG5vdCByZXNldCB0aGUNCj4g bG9vcC0+ZXN0aW1hdGVfc3RhdGUsIGZyZWVfbnVtYmVyc19vZl9pdGVyYXRpb25zX2VzdGltYXRl cyBpcyBjYWxsZWQNCj4gZXhwbGljaXRseSBpbiBsb29wIHZlY3Rvcml6YXRpb24gdG8gbWFrZSBz dXJlIHRoZSBmbGFnIGNhbiBiZQ0KPiBjYWxjdWxhdGVkIHByb3ByaWF0ZWx5IGJ5IG5pdGVyLg0K Pg0KPiBnY2MvQ2hhbmdlTG9nOg0KPg0KPiAgICAgICAgIFBSIHRyZWUtb3B0aW1pemF0aW9uLzEx Mjc3NA0KPiAgICAgICAgICogdHJlZS1wcmV0dHktcHJpbnQuY2M6IGlmIG5vbndyYXBwaW5nIGZs YWcgaXMgc2V0LCBjaHJlYyB3aWxsIGJlDQo+ICAgICAgICAgcHJpbnRlZCB3aXRoIGFkZGl0aW9u YWwgPG53PiBpbmZvLg0KPiAgICAgICAgICogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjOiBhZGQg cmVjb3JkX25vbndyYXBwaW5nX2NocmVjIGFuZA0KPiAgICAgICAgIG5vbndyYXBwaW5nX2NocmVj X3AgdG8gc2V0IGFuZCBjaGVjayB0aGUgbmV3IGZsYWcgcmVzcGVjdGl2ZWx5Lg0KPiAgICAgICAg ICogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmg6IExpa2V3aXNlLg0KPiAgICAgICAgICogdHJlZS1z c2EtbG9vcC1uaXRlci5jYyAoaWR4X2luZmVyX2xvb3BfYm91bmRzLA0KPiAgICAgICAgIGluZmVy X2xvb3BfYm91bmRzX2Zyb21fcG9pbnRlcl9hcml0aCwgaW5mZXJfbG9vcF9ib3VuZHNfZnJvbV9z aWduZWRuZXNzLA0KPiAgICAgICAgIHNjZXZfcHJvYmFibHlfd3JhcHNfcCk6IGNhbGwgcmVjb3Jk X25vbndyYXBwaW5nX2NocmVjIGJlZm9yZQ0KPiAgICAgICAgIHJlY29yZF9ub253cmFwcGluZ19p diwgY2FsbCBub253cmFwcGluZ19jaHJlY19wIHRvIGNoZWNrIHRoZSBmbGFnIGlzIHNldCBhbmQN Cj4gICAgICAgICByZXR1cm4gZmFsc2UgZnJvbSBzY2V2X3Byb2JhYmx5X3dyYXBzX3AuDQo+ICAg ICAgICAgKiB0cmVlLXZlY3QtbG9vcC5jYyAodmVjdF9hbmFseXplX2xvb3ApOiBjYWxsDQo+ICAg ICAgICAgZnJlZV9udW1iZXJzX29mX2l0ZXJhdGlvbnNfZXN0aW1hdGVzIGV4cGxpY2l0bHkuDQo+ ICAgICAgICAgKiBnY2MvdHJlZS5oOiBhZGQgQ0hSRUNfTk9XUkFQKE5PREUpLCBiYXNlLm5vdGhy b3dfZmxhZyBpcyB1c2VkDQo+ICAgICAgICAgdG8gcmVwcmVzZW50IHRoZSBub253cmFwcGluZyBp bmZvLg0KPg0KPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4NCj4gICAgICAgICAqIGdjYy5k Zy90cmVlLXNzYS9zY2V2LTE2LmM6IE5ldyB0ZXN0Lg0KPiAtLS0NCj4gIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL3NjZXYtMTYuYyB8IDE3ICsrKysrKysrKysrKysrKysrDQo+ICBnY2Mv dHJlZS1wcmV0dHktcHJpbnQuY2MgICAgICAgICAgICAgICAgfCAgMiArLQ0KPiAgZ2NjL3RyZWUt c2NhbGFyLWV2b2x1dGlvbi5jYyAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysr KysrDQo+ICBnY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmggICAgICAgICAgICAgfCAgMiArKw0K PiAgZ2NjL3RyZWUtc3NhLWxvb3Atbml0ZXIuY2MgICAgICAgICAgICAgIHwgMjEgKysrKysrKysr KysrKysrKy0tLS0tDQo+ICBnY2MvdHJlZS12ZWN0LWxvb3AuY2MgICAgICAgICAgICAgICAgICAg fCAgNCArKysrDQo+ICBnY2MvdHJlZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg OCArKysrKy0tLQ0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUt c3NhL3NjZXYtMTYuYw0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2Evc2Nldi0xNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc2Nldi0xNi5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi45NmVhMzZlNGM2 NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3NjZXYtMTYuYw0KPiBAQCAtMCwwICsxLDE3IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAq Lw0KPiArLyogeyBkZy1vcHRpb25zICItTzMgLWZkdW1wLXRyZWUtdmVjdC1zY2V2IiB9ICovDQo+ ICsNCj4gK2ludCBBWzEwMjQgKiAyXTsNCj4gKw0KPiAraW50IGZvbyAodW5zaWduZWQgb2Zmc2V0 LCB1bnNpZ25lZCBOKQ0KPiArew0KPiArICBpbnQgc3VtID0gMDsNCj4gKw0KPiArICBmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgTjsgaSsrKQ0KPiArICAgIHN1bSArPSBBW2kgKyBvZmZzZXRdOw0K PiArDQo+ICsgIHJldHVybiBzdW07DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAidmVjX3RyYW5zZm9ybV9sb29wIiAidmVjdCIgfSB9ICovDQo+ICsvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJtaXNzZWQ6ICBmYWlsZWQ6IGV2b2x1dGlvbiBv ZiBvZmZzZXQgaXMgbm90IGFmZmluZSIgInZlY3QiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3RyZWUtcHJldHR5LXByaW50LmNjIGIvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjDQo+IGluZGV4 IDFmYWRkNzUyZDA1Li4wZGFiYjZkMTU4MCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtcHJldHR5 LXByaW50LmNjDQo+ICsrKyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYw0KPiBAQCAtMzQ4OCw3 ICszNDg4LDcgQEAgZHVtcF9nZW5lcmljX25vZGUgKHByZXR0eV9wcmludGVyICpwcCwgdHJlZSBu b2RlLCBpbnQgc3BjLCBkdW1wX2ZsYWdzX3QgZmxhZ3MsDQo+ICAgICAgICBkdW1wX2dlbmVyaWNf bm9kZSAocHAsIENIUkVDX0xFRlQgKG5vZGUpLCBzcGMsIGZsYWdzLCBmYWxzZSk7DQo+ICAgICAg ICBwcF9zdHJpbmcgKHBwLCAiLCArLCAiKTsNCj4gICAgICAgIGR1bXBfZ2VuZXJpY19ub2RlIChw cCwgQ0hSRUNfUklHSFQgKG5vZGUpLCBzcGMsIGZsYWdzLCBmYWxzZSk7DQo+IC0gICAgICBwcF9z dHJpbmcgKHBwLCAifV8iKTsNCj4gKyAgICAgIHBwX3N0cmluZyAocHAsICFDSFJFQ19OT1dSQVAg KG5vZGUpID8gIn1fIiA6ICJ9PG53Pl8iKTsNCj4gICAgICAgIHBwX3NjYWxhciAocHAsICIldSIs IENIUkVDX1ZBUklBQkxFIChub2RlKSk7DQo+ICAgICAgICBpc19zdG10ID0gZmFsc2U7DQo+ICAg ICAgICBicmVhazsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXNjYWxhci1ldm9sdXRpb24uY2Mg Yi9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjDQo+IGluZGV4IDA2NWJjZDA3NDNkLi5hOTEx MjU3MmUwYyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5jYw0KPiAr KysgYi9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjDQo+IEBAIC0yMDUwLDYgKzIwNTAsMzAg QEAgYW5hbHl6ZV9zY2FsYXJfZXZvbHV0aW9uIChjbGFzcyBsb29wICpsb29wLCB0cmVlIHZhcikN Cj4gICAgcmV0dXJuIHJlczsNCj4gIH0NCj4NCj4gKy8qIElmIENIUkVDIGRvZXNuJ3Qgb3ZlcmZs b3csIHNldCB0aGUgbm9ud3JhcHBpbmcgZmxhZy4gICovDQo+ICsNCj4gK3ZvaWQgcmVjb3JkX25v bndyYXBwaW5nX2NocmVjICh0cmVlIGNocmVjKQ0KPiArew0KPiArICBDSFJFQ19OT1dSQVAoY2hy ZWMpID0gMTsNCj4gKw0KPiArICBpZiAoZHVtcF9maWxlICYmIChkdW1wX2ZsYWdzICYgVERGX1ND RVYpKQ0KPiArICAgIHsNCj4gKyAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgIihyZWNvcmRfbm9u d3JhcHBpbmdfY2hyZWM6ICIpOw0KPiArICAgICAgcHJpbnRfZ2VuZXJpY19leHByIChkdW1wX2Zp bGUsIGNocmVjKTsNCj4gKyAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgIilcbiIpOw0KPiArICAg IH0NCj4gK30NCj4gKw0KPiArLyogUmV0dXJuIHRydWUgaWYgQ0hSRUMncyBub253cmFwcGluZyBm bGFnIGlzIHNldC4gICovDQo+ICsNCj4gK2Jvb2wgbm9ud3JhcHBpbmdfY2hyZWNfcCAodHJlZSBj aHJlYykNCj4gK3sNCj4gKyAgaWYgKCFjaHJlYyB8fCBUUkVFX0NPREUoY2hyZWMpICE9IFBPTFlO T01JQUxfQ0hSRUMpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIHJldHVybiBDSFJF Q19OT1dSQVAoY2hyZWMpOw0KPiArfQ0KPiArDQo+ICAvKiBBbmFseXplcyBhbmQgcmV0dXJucyB0 aGUgc2NhbGFyIGV2b2x1dGlvbiBvZiBWQVIgYWRkcmVzcyBpbiBMT09QLiAgKi8NCj4NCj4gIHN0 YXRpYyB0cmVlDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmggYi9n Y2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmgNCj4gaW5kZXggYTY0ZWQ3OGZlNjMuLmY1N2ZkZTEy ZWUyIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmgNCj4gKysrIGIv Z2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5oDQo+IEBAIC00Myw2ICs0Myw4IEBAIGV4dGVybiBi b29sIHNpbXBsZV9pdiAoY2xhc3MgbG9vcCAqLCBjbGFzcyBsb29wICosIHRyZWUsIHN0cnVjdCBh ZmZpbmVfaXYgKiwNCj4gICAgICAgICAgICAgICAgICAgICAgICBib29sKTsNCj4gIGV4dGVybiBi b29sIGl2X2Nhbl9vdmVyZmxvd19wIChjbGFzcyBsb29wICosIHRyZWUsIHRyZWUsIHRyZWUpOw0K PiAgZXh0ZXJuIHRyZWUgY29tcHV0ZV9vdmVyYWxsX2VmZmVjdF9vZl9pbm5lcl9sb29wIChjbGFz cyBsb29wICosIHRyZWUpOw0KPiArZXh0ZXJuIHZvaWQgcmVjb3JkX25vbndyYXBwaW5nX2NocmVj ICh0cmVlKTsNCj4gK2V4dGVybiBib29sIG5vbndyYXBwaW5nX2NocmVjX3AgKHRyZWUpOw0KPg0K PiAgLyogUmV0dXJucyB0aGUgYmFzaWMgYmxvY2sgcHJlY2VkaW5nIExPT1AsIG9yIHRoZSBDRkcg ZW50cnkgYmxvY2sgd2hlbg0KPiAgICAgdGhlIGxvb3AgaXMgZnVuY3Rpb24ncyBib2R5LiAgKi8N Cj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1sb29wLW5pdGVyLmNjIGIvZ2NjL3RyZWUtc3Nh LWxvb3Atbml0ZXIuY2MNCj4gaW5kZXggMjA5OGJlZjlhOTcuLmQ0NjVlMGVkN2UxIDEwMDY0NA0K PiAtLS0gYS9nY2MvdHJlZS1zc2EtbG9vcC1uaXRlci5jYw0KPiArKysgYi9nY2MvdHJlZS1zc2Et bG9vcC1uaXRlci5jYw0KPiBAQCAtNDIwNiwxMSArNDIwNiwxNSBAQCBpZHhfaW5mZXJfbG9vcF9i b3VuZHMgKHRyZWUgYmFzZSwgdHJlZSAqaWR4LCB2b2lkICpkdGEpDQo+DQo+ICAgIC8qIElmIGFj Y2VzcyBpcyBub3QgZXhlY3V0ZWQgb24gZXZlcnkgaXRlcmF0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0 aGF0IG92ZXJsb3cNCj4gICAgICAgbWF5IG5vdCBtYWtlIHRoZSBhY2Nlc3MgdmFsaWQgbGF0ZXIu ICAqLw0KPiAtICBpZiAoIWRvbWluYXRlZF9ieV9wIChDRElfRE9NSU5BVE9SUywgbG9vcC0+bGF0 Y2gsIGdpbXBsZV9iYiAoZGF0YS0+c3RtdCkpDQo+IC0gICAgICAmJiBzY2V2X3Byb2JhYmx5X3dy YXBzX3AgKE5VTExfVFJFRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0 aWFsX2NvbmRpdGlvbl9pbl9sb29wX251bSAoZXYsIGxvb3AtPm51bSksDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RlcCwgZGF0YS0+c3RtdCwgbG9vcCwgdHJ1ZSkpDQo+IC0g ICAgdXBwZXIgPSBmYWxzZTsNCj4gKyAgaWYgKCFkb21pbmF0ZWRfYnlfcCAoQ0RJX0RPTUlOQVRP UlMsIGxvb3AtPmxhdGNoLCBnaW1wbGVfYmIgKGRhdGEtPnN0bXQpKSkNCj4gKyAgICB7DQo+ICsg ICAgICBpZiAoc2Nldl9wcm9iYWJseV93cmFwc19wIChOVUxMX1RSRUUsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfY29uZGl0aW9uX2luX2xvb3BfbnVtIChldiwg bG9vcC0+bnVtKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcCwgZGF0 YS0+c3RtdCwgbG9vcCwgdHJ1ZSkpDQo+ICsgICAgICAgdXBwZXIgPSBmYWxzZTsNCj4gKyAgICB9 DQo+ICsgIGVsc2UNCj4gKyAgICByZWNvcmRfbm9ud3JhcHBpbmdfY2hyZWMgKGV2KTsNCj4NCj4g ICAgcmVjb3JkX25vbndyYXBwaW5nX2l2IChsb29wLCBpbml0LCBzdGVwLCBkYXRhLT5zdG10LCBs b3csIGhpZ2gsIGZhbHNlLCB1cHBlcik7DQo+ICAgIHJldHVybiB0cnVlOw0KPiBAQCAtNDMyNCw2 ICs0MzI4LDcgQEAgaW5mZXJfbG9vcF9ib3VuZHNfZnJvbV9wb2ludGVyX2FyaXRoIChjbGFzcyBs b29wICpsb29wLCBnaW1wbGUgKnN0bXQpDQo+ICAgIGlmIChmbGFnX2RlbGV0ZV9udWxsX3BvaW50 ZXJfY2hlY2tzICYmIGludF9jc3RfdmFsdWUgKGxvdykgPT0gMCkNCj4gICAgICBsb3cgPSBidWls ZF9pbnRfY3N0dSAoVFJFRV9UWVBFIChsb3cpLCBUWVBFX0FMSUdOX1VOSVQgKFRSRUVfVFlQRSAo dHlwZSkpKTsNCj4NCj4gKyAgcmVjb3JkX25vbndyYXBwaW5nX2NocmVjIChzY2V2KTsNCj4gICAg cmVjb3JkX25vbndyYXBwaW5nX2l2IChsb29wLCBiYXNlLCBzdGVwLCBzdG10LCBsb3csIGhpZ2gs IGZhbHNlLCB0cnVlKTsNCj4gIH0NCj4NCj4gQEAgLTQzNzEsNiArNDM3Niw3IEBAIGluZmVyX2xv b3BfYm91bmRzX2Zyb21fc2lnbmVkbmVzcyAoY2xhc3MgbG9vcCAqbG9vcCwgZ2ltcGxlICpzdG10 KQ0KPiAgICAgICAgaGlnaCA9IHdpZGVfaW50X3RvX3RyZWUgKHR5cGUsIHIudXBwZXJfYm91bmQg KCkpOw0KPiAgICAgIH0NCj4NCj4gKyAgcmVjb3JkX25vbndyYXBwaW5nX2NocmVjIChzY2V2KTsN Cj4gICAgcmVjb3JkX25vbndyYXBwaW5nX2l2IChsb29wLCBiYXNlLCBzdGVwLCBzdG10LCBsb3cs IGhpZ2gsIGZhbHNlLCB0cnVlKTsNCj4gIH0NCj4NCj4gQEAgLTU1MDUsNiArNTUxMSwxMSBAQCBz Y2V2X3Byb2JhYmx5X3dyYXBzX3AgKHRyZWUgdmFyLCB0cmVlIGJhc2UsIHRyZWUgc3RlcCwNCj4g ICAgaWYgKGxvb3BfZXhpdHNfYmVmb3JlX292ZXJmbG93IChiYXNlLCBzdGVwLCBhdF9zdG10LCBs b29wKSkNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+DQo+ICsgIC8qIENoZWNrIHRoZSBub253cmFw cGluZyBmbGFnLCB3aGljaCBtYXkgYmUgc2V0IGJ5IG5pdGVyIGFuYWx5c2lzIChlLmcuLCB0aGUN Cj4gKyAgICAgYWJvdmUgbG9vcCBleGl0cyBiZWZvcmUgb3ZlcmZsb3cpLiAgKi8NCj4gKyAgaWYg KHZhciAmJiBub253cmFwcGluZ19jaHJlY19wIChhbmFseXplX3NjYWxhcl9ldm9sdXRpb24gKGxv b3AsIHZhcikpKQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiAgICAvKiBBdCB0aGlzIHBv aW50IHdlIHN0aWxsIGRvbid0IGhhdmUgYSBwcm9vZiB0aGF0IHRoZSBpdiBkb2VzIG5vdA0KPiAg ICAgICBvdmVyZmxvdzogZ2l2ZSB1cC4gICovDQo+ICAgIHJldHVybiB0cnVlOw0KPiBkaWZmIC0t Z2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+IGlu ZGV4IGRkNTg0YWI0YTQyLi42MjYxY2QxYmUxZCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVj dC1sb29wLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiBAQCAtMzU3MCw2ICsz NTcwLDEwIEBAIHZlY3RfYW5hbHl6ZV9sb29wIChjbGFzcyBsb29wICpsb29wLCB2ZWNfaW5mb19z aGFyZWQgKnNoYXJlZCkNCj4gICAgICAgICAgYW5hbHlzaXMgYXJlIGRvbmUgdW5kZXIgdGhlIGFz c3VtcHRpb25zLiAgKi8NCj4gICAgICAgIGxvb3BfY29uc3RyYWludF9zZXQgKGxvb3AsIExPT1Bf Q19GSU5JVEUpOw0KPiAgICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIC8qIENsZWFyIHRoZSBleGlz dGluZyBuaXRlciBpbmZvcm1hdGlvbiB0byBtYWtlIHN1cmUgdGhlIG5vbndyYXBwaW5nIGZsYWcN Cj4gKyAgICAgICB3aWxsIGJlIGNhbGN1bGF0ZWQgYW5kIHNldCBwcm9wcmlhdGVseS4gICovDQo+ ICsgICAgZnJlZV9udW1iZXJzX29mX2l0ZXJhdGlvbnNfZXN0aW1hdGVzIChsb29wKTsNCj4NCj4g ICAgYXV0b192ZWN0b3JfbW9kZXMgdmVjdG9yX21vZGVzOw0KPiAgICAvKiBBdXRvZGV0ZWN0IGZp cnN0IHZlY3RvciBzaXplIHdlIHRyeS4gICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIv Z2NjL3RyZWUuaA0KPiBpbmRleCAwODZiNTVmMDM3NS4uNTlhZjg5MjBmMDIgMTAwNjQ0DQo+IC0t LSBhL2djYy90cmVlLmgNCj4gKysrIGIvZ2NjL3RyZWUuaA0KPiBAQCAtMTQzOCw5ICsxNDM4LDEx IEBAIGNsYXNzIGF1dG9fc3VwcHJlc3NfbG9jYXRpb25fd3JhcHBlcnMNCj4gICNkZWZpbmUgQ09O RF9FWFBSX0VMU0UoTk9ERSkgICAoVFJFRV9PUEVSQU5EIChDT05EX0VYUFJfQ0hFQ0sgKE5PREUp LCAyKSkNCj4NCj4gIC8qIEFjY2Vzc29ycyBmb3IgdGhlIGNoYWlucyBvZiByZWN1cnJlbmNlcy4g ICovDQo+IC0jZGVmaW5lIENIUkVDX0xFRlQoTk9ERSkgICAgICAgICAgVFJFRV9PUEVSQU5EIChQ T0xZTk9NSUFMX0NIUkVDX0NIRUNLIChOT0RFKSwgMCkNCj4gLSNkZWZpbmUgQ0hSRUNfUklHSFQo Tk9ERSkgICAgICAgICBUUkVFX09QRVJBTkQgKFBPTFlOT01JQUxfQ0hSRUNfQ0hFQ0sgKE5PREUp LCAxKQ0KPiAtI2RlZmluZSBDSFJFQ19WQVJJQUJMRShOT0RFKSAgICAgIFBPTFlOT01JQUxfQ0hS RUNfQ0hFQ0sgKE5PREUpLT5iYXNlLnUuY2hyZWNfdmFyDQo+ICsjZGVmaW5lIENIUkVDX0xFRlQo Tk9ERSkgICAgICAgIFRSRUVfT1BFUkFORCAoUE9MWU5PTUlBTF9DSFJFQ19DSEVDSyAoTk9ERSks IDApDQo+ICsjZGVmaW5lIENIUkVDX1JJR0hUKE5PREUpICAgICAgIFRSRUVfT1BFUkFORCAoUE9M WU5PTUlBTF9DSFJFQ19DSEVDSyAoTk9ERSksIDEpDQo+ICsjZGVmaW5lIENIUkVDX1ZBUklBQkxF KE5PREUpICAgIFBPTFlOT01JQUxfQ0hSRUNfQ0hFQ0sgKE5PREUpLT5iYXNlLnUuY2hyZWNfdmFy DQo+ICsvKiBOb256ZXJvIGlmIHRoaXMgY2hyZWMgZG9lc24ndCBvdmVyZmxvdyAoaS5lLiwgbm9u d3JhcHBpbmcpLiAgKi8NCj4gKyNkZWZpbmUgQ0hSRUNfTk9XUkFQKE5PREUpICAgICAgUE9MWU5P TUlBTF9DSFJFQ19DSEVDSyAoTk9ERSktPmJhc2Uubm90aHJvd19mbGFnDQo+DQo+ICAvKiBMQUJF TF9FWFBSIGFjY2Vzc29yLiBUaGlzIGdpdmVzIGFjY2VzcyB0byB0aGUgbGFiZWwgYXNzb2NpYXRl ZCB3aXRoDQo+ICAgICB0aGUgZ2l2ZW4gbGFiZWwgZXhwcmVzc2lvbi4gICovDQo+IC0tDQo+IDIu MzQuMQ0KPg0K