From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3744945AF7 for ; Thu, 16 Mar 2023 20:19:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 19EE668C0B5; Thu, 16 Mar 2023 22:19:21 +0200 (EET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2097.outbound.protection.outlook.com [40.92.75.97]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5761868C0AE for ; Thu, 16 Mar 2023 22:19:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WWhJAW2ODb4bXo4kSTx5gTpSmHeWfDe/yJzH3uH/OmONd1dVPYf8byNtU9xaOKrbOzByYAtVVEw2jRAQUkECUgCnYOG8rnjZV/eCAm6azuw0YTFdXg9YUwcL69i5q4p9DZVo02LooFlVGnbb7/FvUt7Bda0aapXgXyBJXqNHQokKe+QGiQLzbGNZFFv5or+byrLc6TBu7886KCezDh6/4CPu3eTUdQo9vcPKm7c+6Oa8dghb5PJnoL77XRO+BsyQFSmo/iujyoEk+rTaiHz4vF+UC4UxKZIjAsylqChA9UhPmSGFL6Lf3EHlrfFu394jtyePOT9Op/wvnMLf+QQLbg== 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=gQaAhti1b1x/yFruUfg0qhwPYEBZL8rNrIZG50hAjok=; b=I/3Cml/106ryrfbnR4gn5SWX+5/8W9ONO+iiPrLqRxSBBI+OKrxAelu7UqqXnJ8i335ZoTxX9xiOVERoRQkdU59CGmcvw8pD3jQt/2xPuncAUNF0UBwz8fgx24OrwyPA4qjpDN8B/xC7c65B3hUFsVYsA7CFIGwFfU1ObVnNLylH8CE6bncoaempHvLeFu4haX8fdFmRrM7rokB8RHkgRvC4VKD1vqH6+M5AbJ3D3B4QfbmkI0tB/UN8W+fEBxqp6DkgkDf65vgQlHfjiuckV+hNed/+kI+QgHQWPb2fW/jH3Ju/WZPRYyaYb7DhQPxlkms7GR6cn+JGbyrUkxAV3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gQaAhti1b1x/yFruUfg0qhwPYEBZL8rNrIZG50hAjok=; b=abKQWAeONIx/HEUW+jb+pGn53P7l7HdLOmQBdbDvJJNZnS5YOCW08isrqEmy2FLss/PwxE8BL5ReFOuAT9xE2VnDbQ1xKLLyOLkF+wtiiTiSKFHssj3hWuUHbytSIJI+6vN4zs9VM1s637g3wRkgIyx8KlM9mbdy7nC1Y9F/cXuD2SUIizcEoyWwwJ8FfqngA9AeUTM0hdu0j3vKjiEYfZte4Kx4SqpY1VtVABr/Rm5SSwoI3DVx6rGd/EBsZ1WsroFevUfKtgI2Cb2JwHyWtMtSrn4l8bWRGjK34iac8dQFSCYVCgArB9AAzM5mJmrTdB9unbSFFHT4mxx7+xenaQ== Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) by PR3P250MB0385.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.8; Thu, 16 Mar 2023 20:19:12 +0000 Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::76c9:5d22:5778:6206]) by DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::76c9:5d22:5778:6206%5]) with mapi id 15.20.6178.016; Thu, 16 Mar 2023 20:19:12 +0000 Message-ID: Date: Thu, 16 Mar 2023 21:19:46 +0100 To: ffmpeg-devel@ffmpeg.org References: Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: X-TMN: [87IA6xRawUf0NltUkVpvztoRpEVHg/Y5myLl+3rbcMg=] X-ClientProxiedBy: ZR0P278CA0182.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::15) To DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) X-Microsoft-Original-Message-ID: <6d842114-19ec-d302-b6e9-fbd8983691bc@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0P250MB0747:EE_|PR3P250MB0385:EE_ X-MS-Office365-Filtering-Correlation-Id: dd5e7dd6-c15f-4c98-b75f-08db265bb4c2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pZb94yecQa9Mnro+euoM7UV8rpIRvMEA6ho+CA4vd7TrvXtxxkPEEphuRtvhIbUbr+QqZPn9nmu7OIojXmJa75agpgj2ihxLeqpKQN4w4G8LbGBQOkRcQ7xeqEPKFhIJeeodbm5x/hgjGxKVp678XjAIdZWyqUlE7me4VgClvbZlZBjEh8lcuIqJ5U8DRVBS43rRbWfygF8U7ezY24VJ1v3V/vEsYyBvzsZkqiJ19GgpQHxRc5qHhQirxg3rIuiKMzt6rRyM+hp6JK7KC/oBjEOMW5OmZOt05/NJCbIxD5BFkYYjAbOqe2Q/BzPH0ffX7tH73HHbHaTYCV8F0UcqOUZ8Q3QqIqjhXGMycNJtHZWGKKLfCYdp+fmDlzRU8kOxy/5SVDS84eFeBRGCqYC+FmHp0qSD9p3c67Tc9Zm3HKyHVqErmA1vGveazW+GXenH+jrLFkJ7s1hYttjDVO1LUfXK+bnsq84XH1y6GE51ut+YnxXFc331es4UinjFUQNbJqfRSUfxKEIA6zIZRg3QDsoiWLUqVZXXo0ycD5BTGHs2rhBrIlBjRcjBbF93RaXRkf2sQ5LimzJShztoca/9QFKBrXn9VnmO863wcFxFFz0fWKTgEjtyHJTT//cWtM1eGyhEhIBDzQakQsx5USOWgcUR8tj8RXsz6jJONYx3fiQ= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UFB0bGU0K2VuUUVsT2ZyaCtjazRKUEFwUjFUelhXSkFIdEZ6Nkp4bnZacDhN?= =?utf-8?B?OENlVDdKZzRrTExvZG1XVkdRMExIeGQ0WTdrUHNvQkNzS0kzVkJYUFlvUlJl?= =?utf-8?B?c2VSZWM5elpSa1dyNE9Dbm00TTJMbWUzZStkYkFXdEZ5Z3JNM05pOGtiRlpa?= =?utf-8?B?RWxIOWp4ZFg0RnZpd01GcEptdDF1NnRaOVFja2lSS3c3ZjYzK2lMa0F0UzVB?= =?utf-8?B?bTJhTW5Pb0MxcS8wS3FzcER0WStVQnViaUJxN2FXbm1rNlkwVEtQaWN3alNC?= =?utf-8?B?ZzBkaU9VWEJ3TEwvbXB4ZkNKMVIxWkhFRXVKSUtHYzlvYVlxVHIrUE9KN2Jt?= =?utf-8?B?QStqUkxTeDBmZG12UkxnYzBsVVF1S0kycElheU9LUTl3N040bU9vTG1KTHhj?= =?utf-8?B?TGJxNkNBNHl4NGdEMDYzYVFqUlFldWY4TnZSREFQc2F2M3phUkZPTDBaVU96?= =?utf-8?B?dFAyTGk2c2RrRllnUFEvcG9OS3VValFRWkpkTHdDSXpNTCs4MTFERWtIZVRW?= =?utf-8?B?UVRldlB3cjZuYWxaZ3dJeDF5cW91Tk1EQ3M5SjY5MFI5NFIwaGNobGVwUTFz?= =?utf-8?B?NXhuODZSWFdtczkzcHFKQ3RFcHlXcjB1eXE4OVNuNHBVOTJhZ2padTVzd1Z6?= =?utf-8?B?dW9TcXZNTlcybWdkZXRlZGtiOFBUQklNUTZteitLYmYzdllrVEJWcEw3ZmZV?= =?utf-8?B?L00yS2JLK2NyQzg2WWtpQ2ovZnRPMWkxd2UyWDJ1aWZIQjNPTHk4K0NnRDJR?= =?utf-8?B?U21rS1pIMmtTSTNoUEdJNklZa3ZJMFpnc0tsclRDZU1tTWFxcThXZVFBRDFU?= =?utf-8?B?NzFGUUNYUzZ1aEpmNTVzNTJMaW83M3hFK2laWkd6elhCYmQ0YlduN05mZkVu?= =?utf-8?B?R2JRWkF1a0VHRWowZUlxYjVXa1F6K0pVQmovTTdXQ1dDUXZWSjllRTRLcFAw?= =?utf-8?B?VmNEMFd5Nmplc3g1UUdhZFc5NXFMVlZxYmJ2WUVvckhQK2kxcmZGVDJJQ2xJ?= =?utf-8?B?dHpVeDN5VGFIS0JnV1NiWU1qOHhoNndJbEY5NUV6UHBMTEJFMS93NFdvaTlr?= =?utf-8?B?ZGRBYzhEQ0I0Nk03QnVOSVY2b0hDNmlTNCt4TG1FcEtFWGJkTXRDUWJwWE1F?= =?utf-8?B?RWxWd3lCSFpPVjZKL1ZOT2l0NHhTTjNrTzFmWHF5ck56ajRUeG03bUt2Z01X?= =?utf-8?B?MEdzQnhVNVRtRHdPTENlNVZWa09tMDNjZzBHdmNRSjRyY3NvSDhiWTU5TkIw?= =?utf-8?B?OG9BOUdUU0FtR3RqTkZSWHpVQUlhUDZ0NWVtaHhLNTZwbDljNzF1WjRTOXVN?= =?utf-8?B?TTJkVkc1U2t1SnV6N24wNlpXTlpuc2h5dkcxNFZXRFRNVGFpZnhwK3hGanVz?= =?utf-8?B?cU8xNmNVUGJsSDh0blNHZUVROWt0SG9aZys4VUUxRksxM25TVFFTVnlpUStz?= =?utf-8?B?VDBpYm9wYitDSWd0b0pXNk8vblVHTE5DT1JoYTNsMnJGUlN3TnJDY2YrM2tN?= =?utf-8?B?cjZHOTlwRS9jMXR1cDJTNDZ4bnBrVysyT0VwdlFqV0lua1cxU1RHYitPdFd0?= =?utf-8?B?L2lWTUFXSFdFYk41SExrc0pKZ1Bpcmwwc2doenU1aU9taHNucVg1RUUyZmFv?= =?utf-8?B?aFVCNmF6Q3RiQW0rMUk0bWlrS2pJVkM1ZDAyZFdwMGs0OFJ4dm9TdncxeHdQ?= =?utf-8?B?R0dwZHhNTisvNEJ5WVFtYWovQVJ0MlpoZGxtZWd0UGpKZFFTcWQ0dVlUUFQ5?= =?utf-8?Q?yBMwbzCXIn+gXYmkNVRqp3/Cgh0PAC6D0Its3UZ?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd5e7dd6-c15f-4c98-b75f-08db265bb4c2 X-MS-Exchange-CrossTenant-AuthSource: DU0P250MB0747.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2023 20:19:12.2095 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P250MB0385 Subject: Re: [FFmpeg-devel] [PATCH v7 1/2] avcodec/avutil: move dynamic HDR10+ metadata parsing to libavutil X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: UmFwaGHDq2wgWnVtZXI6Cj4gU2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgWnVtZXIgPHJ6dW1lckB0 ZWJha28ubmV0Pgo+IC0tLQo+ICBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgICB8ICAg NiArLQo+ICBsaWJhdmNvZGVjL2F2MWRlYy5jICAgICAgICAgICAgICB8ICAgNiArLQo+ICBsaWJh dmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jICB8IDE5OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmggIHwgIDM1IC0tLS0t LQo+ICBsaWJhdmNvZGVjL2gyNjQ1X3NlaS5jICAgICAgICAgICB8ICAgNiArLQo+ICBsaWJhdmNv ZGVjL2xpYmRhdjFkLmMgICAgICAgICAgICB8ICAgNiArLQo+ICBsaWJhdnV0aWwvaGRyX2R5bmFt aWNfbWV0YWRhdGEuYyB8IDE4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWJh dnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCB8ICAxMyArKwo+ICA4IGZpbGVzIGNoYW5nZWQs IDIxMCBpbnNlcnRpb25zKCspLCAyNDUgZGVsZXRpb25zKC0pCj4gIGRlbGV0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBs aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gaW5kZXggYWJhZTQ5MDlkMi4uNDA4 ZWNkMWUzMSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCj4gKysrIGIvbGliYXZj b2RlYy9NYWtlZmlsZQo+IEBAIC0xMDQsNyArMTA0LDcgQEAgT0JKUy0kKENPTkZJR19IMjY0X1NF SSkgICAgICAgICAgICAgICAgKz0gaDI2NF9zZWkubyBoMjY0NV9zZWkubwo+ICBPQkpTLSQoQ09O RklHX0hFVkNQQVJTRSkgICAgICAgICAgICAgICArPSBoZXZjX3BhcnNlLm8gaGV2Y19wcy5vIGhl dmNfZGF0YS5vIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aDI2NDVkYXRhLm8gaDI2NDVfcGFyc2UubyBoMjY0NV92dWkubwo+ICBPQkpTLSQoQ09ORklHX0hF VkNfU0VJKSAgICAgICAgICAgICAgICArPSBoZXZjX3NlaS5vIGgyNjQ1X3NlaS5vIFwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY19oZHIxMF9wbHVz Lm8gZHluYW1pY19oZHJfdml2aWQubwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkeW5hbWljX2hkcl92aXZpZC5vCj4gIE9CSlMtJChDT05GSUdfSFBFTERTUCkg ICAgICAgICAgICAgICAgICs9IGhwZWxkc3Aubwo+ICBPQkpTLSQoQ09ORklHX0hVRkZNQU4pICAg ICAgICAgICAgICAgICArPSBodWZmbWFuLm8KPiAgT0JKUy0kKENPTkZJR19IVUZGWVVWRFNQKSAg ICAgICAgICAgICAgKz0gaHVmZnl1dmRzcC5vCj4gQEAgLTI1MCw3ICsyNTAsNyBAQCBPQkpTLSQo Q09ORklHX0FUUkFDM1BBTF9ERUNPREVSKSAgICAgICArPSBhdHJhYzNwbHVzZGVjLm8gYXRyYWMz cGx1cy5vIFwKPiAgT0JKUy0kKENPTkZJR19BVFJBQzlfREVDT0RFUikgICAgICAgICAgKz0gYXRy YWM5ZGVjLm8KPiAgT0JKUy0kKENPTkZJR19BVVJBX0RFQ09ERVIpICAgICAgICAgICAgKz0gY3l1 di5vCj4gIE9CSlMtJChDT05GSUdfQVVSQTJfREVDT0RFUikgICAgICAgICAgICs9IGF1cmEubwo+ IC1PQkpTLSQoQ09ORklHX0FWMV9ERUNPREVSKSAgICAgICAgICAgICArPSBhdjFkZWMubyBkeW5h bWljX2hkcjEwX3BsdXMubwo+ICtPQkpTLSQoQ09ORklHX0FWMV9ERUNPREVSKSAgICAgICAgICAg ICArPSBhdjFkZWMubwo+ICBPQkpTLSQoQ09ORklHX0FWMV9DVVZJRF9ERUNPREVSKSAgICAgICAr PSBjdXZpZGRlYy5vCj4gIE9CSlMtJChDT05GSUdfQVYxX01FRElBQ09ERUNfREVDT0RFUikgICs9 IG1lZGlhY29kZWNkZWMubwo+ICBPQkpTLSQoQ09ORklHX0FWMV9OVkVOQ19FTkNPREVSKSAgICAg ICArPSBudmVuY19hdjEubyBudmVuYy5vCj4gQEAgLTEwODIsNyArMTA4Miw3IEBAIE9CSlMtJChD T05GSUdfTElCQVJJQkIyNF9ERUNPREVSKSAgICAgICAgICs9IGxpYmFyaWJiMjQubyBhc3Mubwo+ ICBPQkpTLSQoQ09ORklHX0xJQkNFTFRfREVDT0RFUikgICAgICAgICAgICArPSBsaWJjZWx0X2Rl Yy5vCj4gIE9CSlMtJChDT05GSUdfTElCQ09ERUMyX0RFQ09ERVIpICAgICAgICAgICs9IGxpYmNv ZGVjMi5vCj4gIE9CSlMtJChDT05GSUdfTElCQ09ERUMyX0VOQ09ERVIpICAgICAgICAgICs9IGxp YmNvZGVjMi5vCj4gLU9CSlMtJChDT05GSUdfTElCREFWMURfREVDT0RFUikgICAgICAgICAgICs9 IGxpYmRhdjFkLm8gZHluYW1pY19oZHIxMF9wbHVzLm8KPiArT0JKUy0kKENPTkZJR19MSUJEQVYx RF9ERUNPREVSKSAgICAgICAgICAgKz0gbGliZGF2MWQubwo+ICBPQkpTLSQoQ09ORklHX0xJQkRB VlMyX0RFQ09ERVIpICAgICAgICAgICArPSBsaWJkYXZzMi5vCj4gIE9CSlMtJChDT05GSUdfTElC RkRLX0FBQ19ERUNPREVSKSAgICAgICAgICs9IGxpYmZkay1hYWNkZWMubwo+ICBPQkpTLSQoQ09O RklHX0xJQkZES19BQUNfRU5DT0RFUikgICAgICAgICArPSBsaWJmZGstYWFjZW5jLm8KPiBkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9hdjFkZWMuYyBiL2xpYmF2Y29kZWMvYXYxZGVjLmMKPiBpbmRl eCBhODBlMzdlMzNmLi5kZjM5M2ZlM2QwIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvYXYxZGVj LmMKPiArKysgYi9saWJhdmNvZGVjL2F2MWRlYy5jCj4gQEAgLTIwLDYgKzIwLDcgQEAKPiAgCj4g ICNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5oIgo+ICAKPiArI2luY2x1ZGUgImxpYmF2dXRp bC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2ZpbG1fZ3Jh aW5fcGFyYW1zLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0 YWRhdGEuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCj4gQEAgLTMwLDcgKzMx LDYgQEAKPiAgI2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKPiAgI2luY2x1ZGUgImNvZGVjX2ludGVy bmFsLmgiCj4gICNpbmNsdWRlICJkZWNvZGUuaCIKPiAtI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBf cGx1cy5oIgo+ICAjaW5jbHVkZSAiaHdjb25maWcuaCIKPiAgI2luY2x1ZGUgInByb2ZpbGVzLmgi Cj4gICNpbmNsdWRlICJ0aHJlYWQuaCIKPiBAQCAtOTI1LDggKzkyNSw4IEBAIHN0YXRpYyBpbnQg ZXhwb3J0X2l0dXRfdDM1KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCj4g ICAgICAgICAgaWYgKCFoZHJwbHVzKQo+ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICAKPiAtICAgICAgICByZXQgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19o ZHIxMF9wbHVzKGhkcnBsdXMsIGdiLmJ1ZmZlciwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0 KCZnYikpOwo+ICsgICAgICAgIHJldCA9IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUoaGRy cGx1cywgZ2IuYnVmZmVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiKSk7Cj4gICAgICAgICAgaWYgKHJl dCA8IDApCj4gICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gICAgICAgICAgYnJlYWs7Cj4gZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMgYi9saWJhdmNvZGVjL2R5 bmFtaWNfaGRyMTBfcGx1cy5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMzRh NDRhYWM2NS4uMDAwMDAwMDAwMAo+IC0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVz LmMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMTk4ICswLDAgQEAKPiAtLyoKPiAtICogVGhpcyBm aWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+IC0gKgo+IC0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gLSAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAtICogTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gLSAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo+IC0gKgo+IC0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiAtICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiAtICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiAtICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAtICoKPiAt ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYwo+IC0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiAtICovCj4g LQo+IC0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCj4gLSNpbmNsdWRlICJnZXRfYml0 cy5oIgo+IC0KPiAtc3RhdGljIGNvbnN0IGludDY0X3QgbHVtaW5hbmNlX2RlbiA9IDE7Cj4gLXN0 YXRpYyBjb25zdCBpbnQzMl90IHBlYWtfbHVtaW5hbmNlX2RlbiA9IDE1Owo+IC1zdGF0aWMgY29u c3QgaW50NjRfdCByZ2JfZGVuID0gMTAwMDAwOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBmcmFj dGlvbl9waXhlbF9kZW4gPSAxMDAwOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBrbmVlX3BvaW50 X2RlbiA9IDQwOTU7Cj4gLXN0YXRpYyBjb25zdCBpbnQzMl90IGJlemllcl9hbmNob3JfZGVuID0g MTAyMzsKPiAtc3RhdGljIGNvbnN0IGludDMyX3Qgc2F0dXJhdGlvbl93ZWlnaHRfZGVuID0gODsK PiAtCj4gLWludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHlu YW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQo+IC17Cj4gLSAgICBHZXRCaXRD b250ZXh0IGdiYywgKmdiID0gJmdiYzsKPiAtICAgIGludCByZXQ7Cj4gLQo+IC0gICAgaWYgKCFz KQo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gLQo+IC0gICAgcmV0ID0gaW5p dF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOwo+IC0gICAgaWYgKHJldCA8IDApCj4gLSAgICAg ICAgcmV0dXJuIHJldDsKPiAtCj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiAt ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICBzLT5hcHBsaWNh dGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwo+IC0gICAgcy0+bnVtX3dpbmRvd3MgPSBn ZXRfYml0cyhnYiwgMik7Cj4gLQo+IC0gICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5u dW1fd2luZG93cyA+IDMpIHsKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK PiAtICAgIH0KPiAtCj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoKDE5ICogOCArIDEp ICogKHMtPm51bV93aW5kb3dzIC0gMSkpKQo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+IC0KPiAtICAgIGZvciAoaW50IHcgPSAxOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcr Kykgewo+IC0gICAgICAgIC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgdG8gYWJzb2x1dGUgY29vcmRp bmF0ZXMgaGVyZS4gVGhleSBzaG91bGQgYmUKPiAtICAgICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhl IHJlbGF0aXZlIGNvb3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgo+IC0gICAg ICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3dd Owo+IC0gICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3ggPQo+IC0gICAg ICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4gLSAgICAgICAgcGFy YW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiAtICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dl cl9yaWdodF9jb3JuZXJfeCA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTYpLCAxfTsKPiAtICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJf eSA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiAt Cj4gLSAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94ID0gZ2V0X2JpdHMoZ2IsIDE2 KTsKPiAtICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBnZXRfYml0cyhnYiwg MTYpOwo+IC0gICAgICAgIHBhcmFtcy0+cm90YXRpb25fYW5nbGUgPSBnZXRfYml0cyhnYiwgOCk7 Cj4gLSAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5hbF9lbGxpcHNlID0gZ2V0 X2JpdHMoZ2IsIDE2KTsKPiAtICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2V4dGVybmFs X2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+IC0gICAgICAgIHBhcmFtcy0+c2VtaW1pbm9y X2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4gLSAgICAgICAgcGFy YW1zLT5vdmVybGFwX3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdiKTsKPiAtICAgIH0KPiAt Cj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiAtICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9t YXhpbXVtX2x1bWluYW5jZSA9Cj4gLSAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmco Z2IsIDI3KSwgbHVtaW5hbmNlX2Rlbn07Cj4gLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxh eV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gLQo+IC0gICAg aWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFn KSB7Cj4gLSAgICAgICAgaW50IHJvd3MsIGNvbHM7Cj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xl ZnQoZ2IpIDwgMTApCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ IC0gICAgICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4gLSAgICAgICAgY29scyA9IGdldF9i aXRzKGdiLCA1KTsKPiAtICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8 ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewo+IC0gICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgcy0+bnVtX3Jvd3NfdGFy Z2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKPiAtICAg ICAgICBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1p bmFuY2UgPSBjb2xzOwo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93 cyAqIGNvbHMgKiA0KSkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gLQo+IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Cj4gLSAgICAg ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4gLSAgICAgICAgICAgICAg ICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0g PQo+IC0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBl YWtfbHVtaW5hbmNlX2Rlbn07Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4gLSAgICB9 Cj4gLSAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiAtICAg ICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3 XTsKPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkK PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+bWF4 c2NsW2ldID0KPiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcp LCByZ2JfZGVufTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgcGFyYW1zLT5hdmVyYWdlX21heHJn YiA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVu fTsKPiAtICAgICAgICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVz ID0gZ2V0X2JpdHMoZ2IsIDQpOwo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikg PAo+IC0gICAgICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50 aWxlcyAqIDI0KSkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g LQo+IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9u X21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJp YnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlID0gZ2V0X2JpdHMoZ2IsIDcpOwo+IC0gICAgICAg ICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGlsZSA9Cj4gLSAgICAg ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4gLSAg ICAgICAgfQo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiAtICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgICAgIHBhcmFt cy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTAp LCBmcmFjdGlvbl9waXhlbF9kZW59Owo+IC0gICAgfQo+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgMSkKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgIHMt Pm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMx KGdiKTsKPiAtICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFu Y2VfZmxhZykgewo+IC0gICAgICAgIGludCByb3dzLCBjb2xzOwo+IC0gICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IDEwKQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiAtICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+IC0gICAgICAgIGNvbHMg PSBnZXRfYml0cyhnYiwgNSk7Cj4gLSAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4g MjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPiAtICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIHMtPm51bV9y b3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IHJvd3M7Cj4gLSAg ICAgICAgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNl ID0gY29sczsKPiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBj b2xzICogNCkpCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0K PiAtICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+IC0gICAgICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+IC0gICAgICAgICAgICAgICAgcy0+ bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPiAtICAgICAg ICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWluYW5j ZV9kZW59Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0KPiAtICAg IGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+IC0gICAgICAgIEFW SERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+IC0g ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gLSAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19m bGFnID0gZ2V0X2JpdHMxKGdiKTsKPiAtICAgICAgICBpZiAocGFyYW1zLT50b25lX21hcHBpbmdf ZmxhZykgewo+IC0gICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiAtICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgICAgICAg ICAgcGFyYW1zLT5rbmVlX3BvaW50X3ggPQo+IC0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwp e2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiAtICAgICAgICAgICAgcGFyYW1z LT5rbmVlX3BvaW50X3kgPQo+IC0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRz KGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiAtICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6 aWVyX2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gLQo+IC0gICAgICAgICAgICBp ZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMg KiAxMCkpCj4gLSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAt Cj4gLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fYmV6aWVyX2N1 cnZlX2FuY2hvcnM7IGkrKykgewo+IC0gICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3Vy dmVfYW5jaG9yc1tpXSA9Cj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9i aXRzKGdiLCAxMCksIGJlemllcl9hbmNob3JfZGVufTsKPiAtICAgICAgICAgICAgfQo+IC0gICAg ICAgIH0KPiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPiAtICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgcGFyYW1zLT5jb2xv cl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gLSAgICAgICAgaWYg KHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKPiAtICAgICAgICAgICAg aWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKPiAtICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+IC0gICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25f d2VpZ2h0ID0KPiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNiks IHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0KPiAtICAg IHJldHVybiAwOwo+IC19Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9w bHVzLmggYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCj4gZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggY2Q3YWNmMDQzMi4uMDAwMDAwMDAwMAo+IC0tLSBhL2xpYmF2Y29k ZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMzUgKzAsMCBA QAo+IC0vKgo+IC0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gLSAqCj4gLSAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAt ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwo+IC0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKPiAtICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gLSAqCj4gLSAqIEZGbXBlZyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+IC0gKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ IC0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQo+IC0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgo+IC0gKgo+IC0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBG Rm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiAtICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgQVZDT0RFQ19EWU5BTUlDX0hEUjEwX1BM VVNfSAo+IC0jZGVmaW5lIEFWQ09ERUNfRFlOQU1JQ19IRFIxMF9QTFVTX0gKPiAtCj4gLSNpbmNs dWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIKPiAtCj4gLS8qKgo+IC0gKiBQ YXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZE eW5hbWljSERSUGx1cykuCj4gLSAqIEBwYXJhbSBzIEEgcG9pbnRlciBjb250YWluaW5nIHRoZSBk ZWNvZGVkIEFWRHluYW1pY0hEUlBsdXMgc3RydWN0dXJlLgo+IC0gKiBAcGFyYW0gZGF0YSBUaGUg Ynl0ZSBhcnJheSBjb250YWluaW5nIHRoZSByYXcgSVRVLVQgVC4zNSBkYXRhLgo+IC0gKiBAcGFy YW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5dGVzLgo+IC0gKgo+IC0gKiBAcmV0 dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBBVkVS Uk9SLgo+IC0gKi8KPiAtaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3Bs dXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOwo+IC0KPiAtI2Vu ZGlmIC8qIEFWQ09ERUNfRFlOQU1JQ19IRFIxMF9QTFVTX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9oMjY0NV9zZWkuYyBiL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKPiBpbmRleCA2ZTRh OWExYWYyLi42M2FiNzExYmM5IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMK PiArKysgYi9saWJhdmNvZGVjL2gyNjQ1X3NlaS5jCj4gQEAgLTI3LDEzICsyNywxMyBAQAo+ICAK PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9hbWJpZW50X3ZpZXdpbmdfZW52aXJvbm1lbnQuaCIKPiAg I2luY2x1ZGUgImxpYmF2dXRpbC9kaXNwbGF5LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9maWxtX2dyYWluX3Bh cmFtcy5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiAgI2luY2x1ZGUgImxp YmF2dXRpbC9zdGVyZW8zZC5oIgo+ICAKPiAgI2luY2x1ZGUgImF0c2NfYTUzLmgiCj4gICNpbmNs dWRlICJhdmNvZGVjLmgiCj4gLSNpbmNsdWRlICJkeW5hbWljX2hkcjEwX3BsdXMuaCIKPiAgI2lu Y2x1ZGUgImR5bmFtaWNfaGRyX3ZpdmlkLmgiCj4gICNpbmNsdWRlICJnZXRfYml0cy5oIgo+ICAj aW5jbHVkZSAiZ29sb21iLmgiCj4gQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIGludCBkZWNvZGVf cmVnaXN0ZXJlZF91c2VyX2RhdGFfZHluYW1pY19oZHJfcGx1cyhIRVZDU0VJRHluYW1pY0hEUlBs dXMgKnMKPiAgICAgIGlmICghbWV0YWRhdGEpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P TUVNKTsKPiAgCj4gLSAgICBlcnIgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIx MF9wbHVzKG1ldGFkYXRhLCBnYi0+YnVmZmVyLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikp Owo+ICsgICAgZXJyID0gYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShtZXRhZGF0YSwgZ2It PmJ1ZmZlciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0 cmVhbTJfZ2V0X2J5dGVzX2xlZnQoZ2IpKTsKPiAgICAgIGlmIChlcnIgPCAwKSB7Cj4gICAgICAg ICAgYXZfZnJlZShtZXRhZGF0YSk7Cj4gICAgICAgICAgcmV0dXJuIGVycjsKPiBkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy9saWJkYXYxZC5jIGIvbGliYXZjb2RlYy9saWJkYXYxZC5jCj4gaW5kZXgg ZWIxMjI1ZWExYS4uNTBjNGNlZWU0MCAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2xpYmRhdjFk LmMKPiArKysgYi9saWJhdmNvZGVjL2xpYmRhdjFkLmMKPiBAQCAtMjQsNiArMjQsNyBAQAo+ICAj aW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvY3B1 LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvZmlsbV9ncmFpbl9wYXJhbXMuaCIKPiArI2luY2x1 ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1 dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFkYXRhLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwv aW1ndXRpbHMuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiBAQCAtMzMsNyArMzQs NiBAQAo+ICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgo+ICAjaW5jbHVkZSAiY29kZWNfaW50ZXJu YWwuaCIKPiAgI2luY2x1ZGUgImRlY29kZS5oIgo+IC0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9w bHVzLmgiCj4gICNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICAKPiAgI2RlZmluZSBGRl9EQVYxRF9W RVJTSU9OX0FUX0xFQVNUKHgseSkgXAo+IEBAIC01NTUsOCArNTU1LDggQEAgRkZfRU5BQkxFX0RF UFJFQ0FUSU9OX1dBUk5JTkdTCj4gICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gICAgICAg ICAgICAgIH0KPiAgCj4gLSAgICAgICAgICAgIHJlcyA9IGZmX3BhcnNlX2l0dV90X3QzNV90b19k eW5hbWljX2hkcjEwX3BsdXMoaGRycGx1cywgZ2IuYnVmZmVyLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dl dF9ieXRlc19sZWZ0KCZnYikpOwo+ICsgICAgICAgICAgICByZXMgPSBhdl9keW5hbWljX2hkcl9w bHVzX2Zyb21fdDM1KGhkcnBsdXMsIGdiLmJ1ZmZlciwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2Ip KTsKPiAgICAgICAgICAgICAgaWYgKHJlcyA8IDApCj4gICAgICAgICAgICAgICAgICBnb3RvIGZh aWw7Cj4gICAgICAgICAgICAgIGJyZWFrOwo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaGRyX2R5 bmFtaWNfbWV0YWRhdGEuYyBiL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCj4gaW5k ZXggMGZhMWVlODJkZS4uNWVkOTAzZjQ3NSAxMDA2NDQKPiAtLS0gYS9saWJhdnV0aWwvaGRyX2R5 bmFtaWNfbWV0YWRhdGEuYwo+ICsrKyBiL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5j Cj4gQEAgLTIwLDYgKzIwLDE4IEBACj4gIAo+ICAjaW5jbHVkZSAiaGRyX2R5bmFtaWNfbWV0YWRh dGEuaCIKPiAgI2luY2x1ZGUgIm1lbS5oIgo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0 cy5oIgo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9wdXRfYml0cy5oIgo+ICsKPiArI2RlZmluZSBU MzVfUEFZTE9BRF9NQVhfU0laRSA5MDcKPiArCj4gK3N0YXRpYyBjb25zdCBpbnQ2NF90IGx1bWlu YW5jZV9kZW4gPSAxOwo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4g PSAxNTsKPiArc3RhdGljIGNvbnN0IGludDY0X3QgcmdiX2RlbiA9IDEwMDAwMDsKPiArc3RhdGlj IGNvbnN0IGludDMyX3QgZnJhY3Rpb25fcGl4ZWxfZGVuID0gMTAwMDsKPiArc3RhdGljIGNvbnN0 IGludDMyX3Qga25lZV9wb2ludF9kZW4gPSA0MDk1Owo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBi ZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7Cj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IHNhdHVyYXRp b25fd2VpZ2h0X2RlbiA9IDg7Cj4gIAo+ICBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hk cl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6ZSkKPiAgewo+IEBAIC00NSwzICs1NywxNzYgQEAgQVZE eW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRhKEFWRnJh bWUgKmZyYW1lKQo+ICAKPiAgICAgIHJldHVybiAoQVZEeW5hbWljSERSUGx1cyAqKXNpZGVfZGF0 YS0+ZGF0YTsKPiAgfQo+ICsKPiAraW50IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUoQVZE eW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgIHVpbnQ4X3QgcGFkZGVk X2J1ZltUMzVfUEFZTE9BRF9NQVhfU0laRSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkVd Owo+ICsgICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7Cj4gKyAgICBpbnQgcmV0Owo+ ICsKPiArICAgIGlmICghcykKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsK PiArICAgIG1lbWNweShwYWRkZWRfYnVmLCBkYXRhLCBzaXplKTsKCllvdSBhcmUgcG90ZW50aWFs bHkgY29weWluZyBtb3JlIHRoYW4gVDM1X1BBWUxPQURfTUFYX1NJWkUgYnl0ZXMuCkZ1cnRoZXJt b3JlLCB5b3UgYXJlIG5vdCB6ZXJvaW5nIHRoZSBwYWRkaW5nOyB0aGlzIG1pZ2h0IG1ha2UgVmFs Z3JpbmQKY29tcGxhaW4uCgo+ICsKPiArICAgIHJldCA9IGluaXRfZ2V0X2JpdHM4KGdiLCBwYWRk ZWRfYnVmLCBzaXplKTsKPiArICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgIHJldHVybiByZXQ7 Cj4gKwo+ICsgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4gKyAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgcy0+YXBwbGljYXRpb25fdmVyc2lvbiA9 IGdldF9iaXRzKGdiLCA4KTsKPiArICAgIHMtPm51bV93aW5kb3dzID0gZ2V0X2JpdHMoZ2IsIDIp Owo+ICsKPiArICAgIGlmIChzLT5udW1fd2luZG93cyA8IDEgfHwgcy0+bnVtX3dpbmRvd3MgPiAz KSB7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKCgxOSAqIDggKyAxKSAqIChzLT5udW1fd2lu ZG93cyAtIDEpKSkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4g KyAgICBmb3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAg ICAvLyBUaGUgY29ybmVycyBhcmUgc2V0IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzIGhlcmUuIFRo ZXkgc2hvdWxkIGJlCj4gKyAgICAgICAgLy8gY29udmVydGVkIHRvIHRoZSByZWxhdGl2ZSBjb29y ZGluYXRlcyAoaW4gWzAsIDFdKSBpbiB0aGUgZGVjb2Rlci4KPiArICAgICAgICBBVkhEUlBsdXND b2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiArICAgICAgICBw YXJhbXMtPndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl94ID0KPiArICAgICAgICAgICAgKEFWUmF0 aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9Owo+ICsgICAgICAgIHBhcmFtcy0+d2luZG93X3Vw cGVyX2xlZnRfY29ybmVyX3kgPQo+ICsgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDE2KSwgMX07Cj4gKyAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVy X3ggPQo+ICsgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4g KyAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3kgPQo+ICsgICAgICAg ICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4gKwo+ICsgICAgICAgIHBh cmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeCA9IGdldF9iaXRzKGdiLCAxNik7Cj4gKyAgICAgICAg cGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV95ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiArICAgICAg ICBwYXJhbXMtPnJvdGF0aW9uX2FuZ2xlID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAgICAgIHBh cmFtcy0+c2VtaW1ham9yX2F4aXNfaW50ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7 Cj4gKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19leHRlcm5hbF9lbGxpcHNlID0gZ2V0 X2JpdHMoZ2IsIDE2KTsKPiArICAgICAgICBwYXJhbXMtPnNlbWltaW5vcl9heGlzX2V4dGVybmFs X2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+ICsgICAgICAgIHBhcmFtcy0+b3ZlcmxhcF9w cm9jZXNzX29wdGlvbiA9IGdldF9iaXRzMShnYik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGdl dF9iaXRzX2xlZnQoZ2IpIDwgMjgpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Cj4gKwo+ICsgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9sdW1pbmFu Y2UgPQo+ICsgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0c19sb25nKGdiLCAyNyksIGx1bWlu YW5jZV9kZW59Owo+ICsgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtf bHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+ICsKPiArICAgIGlmIChzLT50YXJnZXRl ZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+ICsgICAgICAg IGludCByb3dzLCBjb2xzOwo+ICsgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQo+ ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICByb3dz ID0gZ2V0X2JpdHMoZ2IsIDUpOwo+ICsgICAgICAgIGNvbHMgPSBnZXRfYml0cyhnYiwgNSk7Cj4g KyAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8 fCAoY29scyA+IDI1KSkpIHsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHMtPm51bV9yb3dzX3RhcmdldGVkX3N5c3RlbV9k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IHJvd3M7Cj4gKyAgICAgICAgcy0+bnVtX2Nv bHNfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsK PiArCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBjb2xzICogNCkp Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+ICsgICAgICAgICAgICBmb3IgKGlu dCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+ICsgICAgICAgICAgICAgICAgcy0+dGFyZ2V0ZWRf c3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPiArICAgICAgICAg ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWluYW5jZV9k ZW59Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgZm9yIChp bnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4gKyAgICAgICAgQVZIRFJQbHVz Q29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cj4gKyAgICAgICAg aWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKDMgKiAxNyArIDE3ICsgNCkpCj4gKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IDM7IGkrKykgewo+ICsgICAgICAgICAgICBwYXJhbXMtPm1heHNjbFtpXSA9Cj4gKyAg ICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4g KyAgICAgICAgfQo+ICsgICAgICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgPQo+ICsgICAgICAg ICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4gKyAgICAgICAg cGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyA9IGdldF9iaXRzKGdi LCA0KTsKPiArCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwKPiArICAgICAgICAg ICAgKHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMgKiAyNCkpCj4g KyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2Vu dGlsZXM7IGkrKykgewo+ICsgICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2Jb aV0ucGVyY2VudGFnZSA9IGdldF9iaXRzKGdiLCA3KTsKPiArICAgICAgICAgICAgcGFyYW1zLT5k aXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRpbGUgPQo+ICsgICAgICAgICAgICAgICAgKEFW UmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59Owo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4gKyAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICBwYXJhbXMtPmZyYWN0aW9uX2Jy aWdodF9waXhlbHMgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgZnJhY3Rpb25fcGl4 ZWxfZGVufTsKPiArICAgIH0KPiArICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gKyAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICBzLT5tYXN0ZXJpbmdfZGlz cGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKyAgICBp ZiAocy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKPiAr ICAgICAgICBpbnQgcm93cywgY29sczsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikg PCAxMCkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAg ICAgcm93cyA9IGdldF9iaXRzKGdiLCA1KTsKPiArICAgICAgICBjb2xzID0gZ2V0X2JpdHMoZ2Is IDUpOwo+ICsgICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwgKChjb2xz IDwgMikgfHwgKGNvbHMgPiAyNSkpKSB7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwo+ICsgICAgICAgIH0KPiArICAgICAgICBzLT5udW1fcm93c19tYXN0ZXJpbmdf ZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOwo+ICsgICAgICAgIHMtPm51bV9j b2xzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IGNvbHM7Cj4gKwo+ ICsgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChyb3dzICogY29scyAqIDQpKQo+ICsg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKPiArICAgICAgICAgICAgZm9yIChpbnQgaiA9 IDA7IGogPCBjb2xzOyBqKyspIHsKPiArICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNw bGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Cj4gKyAgICAgICAgICAgICAgICAgICAg KEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsKPiArICAg ICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBmb3IgKGludCB3ID0g MDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAgICBBVkhEUlBsdXNDb2xvclRy YW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiArICAgICAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYikgPCAxKQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiArCj4gKyAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfZmxhZyA9IGdldF9iaXRz MShnYik7Cj4gKyAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9tYXBwaW5nX2ZsYWcpIHsKPiArICAg ICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICAgICAgICAgIHBhcmFtcy0+a25l ZV9wb2ludF94ID0KPiArICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg MTIpLCBrbmVlX3BvaW50X2Rlbn07Cj4gKyAgICAgICAgICAgIHBhcmFtcy0+a25lZV9wb2ludF95 ID0KPiArICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBrbmVl X3BvaW50X2Rlbn07Cj4gKyAgICAgICAgICAgIHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNo b3JzID0gZ2V0X2JpdHMoZ2IsIDQpOwo+ICsKPiArICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xl ZnQoZ2IpIDwgKHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApKQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzOyBp KyspIHsKPiArICAgICAgICAgICAgICAgIHBhcmFtcy0+YmV6aWVyX2N1cnZlX2FuY2hvcnNbaV0g PQo+ICsgICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBi ZXppZXJfYW5jaG9yX2Rlbn07Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKwo+ICsg ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gKyAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9t YXBwaW5nX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+ICsgICAgICAgIGlmIChwYXJhbXMtPmNvbG9y X3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKSB7Cj4gKyAgICAgICAgICAgIGlmIChnZXRfYml0c19s ZWZ0KGdiKSA8IDYpCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFU QTsKPiArICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX3dlaWdodCA9Cj4gKyAg ICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDYpLCBzYXR1cmF0aW9uX3dl aWdodF9kZW59Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiAr fQo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCBiL2xpYmF2 dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCj4gaW5kZXggMmQ3MmRlNTZhZS4uZmFhNGY0NmIw YiAxMDA2NDQKPiAtLS0gYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaAo+ICsrKyBi L2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCj4gQEAgLTM0MCw0ICszNDAsMTcgQEAg QVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19hbGxvYyhzaXplX3QgKnNpemUp Owo+ICAgKi8KPiAgQVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVf c2lkZV9kYXRhKEFWRnJhbWUgKmZyYW1lKTsKPiAgCj4gKy8qKgo+ICsgKiBQYXJzZSB0aGUgdXNl ciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZEeW5hbWljSERSUGx1 cykuCj4gKyAqIFRoZSBULjM1IGJ1ZmZlciBtdXN0IGJlZ2luIHdpdGggdGhlIGFwcGxpY2F0aW9u IG1vZGUsIHNraXBwaW5nIHRoZQo+ICsgKiBjb3VudHJ5IGNvZGUsIHRlcm1pbmFsIHByb3ZpZGVy IGNvZGVzLCBhbmQgYXBwbGljYXRpb24gaWRlbnRpZmllci4KPiArICogQHBhcmFtIHMgQSBwb2lu dGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUuCj4g KyAqIEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBU LjM1IGRhdGEuCj4gKyAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0 ZXMuCj4gKyAqCj4gKyAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMg dGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCj4gKyAqLwo+ICtpbnQgYXZfZHluYW1pY19oZHJfcGx1 c19mcm9tX3QzNShBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSk7Cj4gKwo+ICAjZW5k aWYgLyogQVZVVElMX0hEUl9EWU5BTUlDX01FVEFEQVRBX0ggKi8KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QK ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGlu Zm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1h aWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2Ny aWJlIi4K