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 20BCD41252 for ; Sat, 10 Jun 2023 18:33:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 75B1968C236; Sat, 10 Jun 2023 21:33:22 +0300 (EEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2096.outbound.protection.outlook.com [40.92.89.96]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7715D6899F1 for ; Sat, 10 Jun 2023 21:33:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=StR6FkOdA8dJ0UdW+AqQonyKul85kkPD146Zsg06zft8FXos5WaZwRGcXpSpDqGJ7uKO/PktTejQ0YJP09vI/B1mKYrW5NGIOU5U/OZ0vPeDfYblpucLdw9GZXapsZJiY8ang1uiCZ76MrNu9PqT4iMu/ljE5EcwxOTQkGsUprTEFRWihi64iSuFm4E9lUhiL2OQu/AttMAWcR8CqJZwTR+/KVed8OZQjuE4UvemNMuCdMmNkxODjHEwbY5RZCKuPkVCbDjqEq9eWt/D96ILx20fV/bAMQSGAuJnturJi6rYdYPf188vy/JcLQDovv5Fe4JyHWVRfyk/fPqzKV/i3g== 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=zR1iDkq4ZYkwkWk59/6zJE0IR4kV3S1KEhTfIY/LzUE=; b=X5rZ1bz8LG29AFIFGmYYnP9NUl5SAiX8FNawsf5KRnWlUiUwvIqkbzXm5PscpEYcZObilapzJbHKkRrQ+L1eEjpl9O6yyH81/GBH9jgF3IZzyDpjMNnIw/7hPqJ5/l0COLsKg5m8D0G/QA/W979HeldDlpYXnsUOU+EtV00xkoepA5yTox+Izytbkooegddrzpcx0i84DfIqgD80dOlZYuWGpfvD3jZEmZjOOlbSQk1yxoQlG/8I2IdxpSQtJPODI1FS4XDIHJM1Be+Ffz/ZK8087x6BK3z+HwNEI4oR8jIIZ+TxE8WAwv/dDRL+/5DXqPG5bmi5bHJBwVGPGuzEtw== 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=zR1iDkq4ZYkwkWk59/6zJE0IR4kV3S1KEhTfIY/LzUE=; b=ueOkGf+G4zQ0TysDzMCteOwtZl+Sw2ieANHOPENyr2Jo3Dw70Gume7zjB3Uy/jjLwMWO3oGdM0efcORhM4dEZOKEwfcdTTs2IQM/1aKLv1ZVN1pclsWeX79pXZB3d8RkymwRepG6rM8oLIP7OYUqh1IpNDubZAigGrBNYAnumzT+a9S+7bh5yJLr13aMlFUizzxO7kEiCZ5yi3Rk5YWSbdMBl3cyJNPmmhr4sOg6O4EJpN5OrJuUoECVm8be4yVxVKbxUhfCRpzU1CfqQ9Cf2oFrRatpbDATWlNAgZP1qRcoIhtgGnfE+aKFe9VYZgUjE+T5v0emypVFAJmaZOPuxg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0378.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Sat, 10 Jun 2023 18:33:13 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::a38:e93f:c7e0:f473]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::a38:e93f:c7e0:f473%6]) with mapi id 15.20.6455.034; Sat, 10 Jun 2023 18:33:13 +0000 Message-ID: Date: Sat, 10 Jun 2023 20:34:01 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <97f9c4e9b0d09796eecb50419217bed9b97a0d81.camel@haerdin.se> From: Andreas Rheinhardt In-Reply-To: X-TMN: [eaJQdbQDwSZNdcv5Fv1F1TC/mb+wUvJ4] X-ClientProxiedBy: ZR2P278CA0057.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <0353060b-21bd-c82e-46a0-bc8f871fd9ec@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0378:EE_ X-MS-Office365-Filtering-Correlation-Id: c9a4b04c-d58a-414b-5975-08db69e1262b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RVec1TKBLw5g6CViaiRDHyM9JJkzu9QXG7Fy4DExjqfbf5eYNSw4tUDllfHLhyQJOQezLAQzfhRi9k+v+w1d2q5i5bl8gZCoEe+gel9xxDihLSkXRGFAU+bVDdAudCI9+BsB5O9w3wv1/+8mhpnl5ttWeLC/RDr6nxLNF87POyN1KIth0dkRC0iVdZ1d1aemXuF+CC940Hs3x4UAELCyvnWUylYWUUgRFnQPvTv8Sy72OJojM6EiZjllHDrdJf88Gwi/PzGcXBFUIMP1WdwDdYLLraUWFBV54KzyXmZaO5+V7zKTWn9GiNf2MxwIWcEPvik0CKTY25f7rHrjMpRfghom6/1SRoA2MQz+n/X5rUSShfq5PtHweHW//hvndwxw5UjZ4M5fcEH2ZTLaVcvvvBUci8IFW0zKmx/6KUjIaL4WkND9TxZuAjf3wQ8DezY3KtKjqbD8XzVAXOg0aXg/isvFbkmCjg7qkoLdUyxqbD7EiBKgO92U2KIwoq3pCYD6RjvpNxYax0SqPKiJ4BE1PlCg0nQMpvDJcq61HbyWhrabwTnkhELrBMAF3yJ6OqC1Y3bgOFcQ0zl8C+pab9HBs17EvMUkVBRP5PyJ8LNfYtmhj7SsRKLkfN5TrXvt2Pf1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N1lpYlBtRkNOKzY2ZlMxWk5nLzB1YTFHRWNZMHhMYThRMXoxakJEK0hzMjkz?= =?utf-8?B?U2hLNHZuVjdUVVJJTEM0RFpRZFppMWN0bUs4c3piNG41NmlsWkZpV21FY2RJ?= =?utf-8?B?UE5SVDhTbW81bUU4SE5mWHBFc1VrZkY4NklMcVBGQVFELzFqTmVJbHlhZmhQ?= =?utf-8?B?UXd1R0FlMEJ4TDBZVzZ3Zm9qZ3ZOY1JlbzhTbHZoTzZWZTA2SEQzQmtkVFg4?= =?utf-8?B?SjJlYTRscVdNb0pVb2JqMm1sOVVVWlVBbFpuWGptVmdwY2hhdFpOekZ0WitT?= =?utf-8?B?UkJBK1NoQnp3REwxU2NXc2xzNXNTREVjS3VoaVFvRWJ6aHlhNWZFU2lydklm?= =?utf-8?B?NDZMeWU4U0pqUnZQaXBmRm1ndTlBSXlyYjAyY3NyMlBodm5jMERRNmFmVHpw?= =?utf-8?B?ZkVjOTVQT2JCY0JXMmt2UTZMVXJBMG5leVNDTytxSDFLVWR5MUQwOXU1ZVdD?= =?utf-8?B?SFcxWjVBU3paSEsxSjhrYU93R1BZemwwSCtodjRKL29IQU9wNi9zN2w1MnJr?= =?utf-8?B?b1pJbFFsMVJ2RS8weUhiSVZXLy9oWjlvK2s3Ymh4VDJZVzR1aHJPQ2VkbC9J?= =?utf-8?B?OUFQdE9IWEJPU2lnSnZKbU9YU3B6ZEJqNjZzY1ZtTkFXcStpVURVSGhtL2pn?= =?utf-8?B?QXdERFVycERVUXFDa3dyU2RIVjhpMkRTWmJ1ZHhkeFpzNkRsd3B0WVRrR01s?= =?utf-8?B?VWFaTXVjRStBT2RnazhHR01zMzAwRGlmSDJhdXI4UUNEN1ZWYk5YeFZGaHRG?= =?utf-8?B?bU9jSVNlalF6NUVnSWo2aUc4NDF4RzgxMk91WFpsSHJWTGIyWG1QRTVOM2tw?= =?utf-8?B?OXlhUlhMNW9KMzk5czFLdmY3RTJ3bGd1NmV0SFZmUk1lcDE3bXlvbWlKVUtW?= =?utf-8?B?T01sckkveE4yNkY2UkE2SmNjMmdjbnFtL3lwZ1F3WnNIVjFNNGJodFpLNVlh?= =?utf-8?B?K1plYVM0R3ZhRXcwUXlwY24xamFJV0ZVSkVRZEZZODhibU8yK1NYVUE5cXRP?= =?utf-8?B?ZW5UTmNvVTMrcFN3VmVOS2FNcGtjZjYrMmd5SlhmaThQZ2NwL1dTbWhVTno2?= =?utf-8?B?WGpSZTNUK25JT0ZHZUREQnRYTGZhTklrTk5CZEhvQ1hBc0lFUUFSa1I1Rm9T?= =?utf-8?B?c3VmK1E4NDRnMTV1aEZmbFg2c0RVdFlXYmEwNC96MnJjZzlISzRZVElXTk1Y?= =?utf-8?B?eHJWSm9wUFFmWmNLamxkM09ENjh3K0F2bVNCK2Qrdk1jTmNXZzRnd1E5RmMw?= =?utf-8?B?cGIvYzNCZHBrdUV6VWM1TTFiYzFCZW5FK1dRbW53b3JPL1IrVm5VUDZrNXRn?= =?utf-8?B?RStDYmUrcnBrNVFsMEpGMGtXSlRTUHBRalpuSU5TWlBCa1lsbFZvcDN0eXRQ?= =?utf-8?B?UXo1SG1nWDY4S2V4Y0thR014WGtiSnllRE91cHU0UkFWQ2tCbzh1bVhrbDBE?= =?utf-8?B?WE5aRW5tQVZ3ZGthT1kySlk4Vi81bjNUWFprTDBIeXRhUVBnZm1oU0IvNWl3?= =?utf-8?B?cWF6RmVESHp4ME9BUWg0VVhCcG8zR1FTMFJCYndMNVV2d0tqNzZMbXNicUNx?= =?utf-8?B?S2JBVTJLSXFOZnV4R05FRXhDemswSDhrd0lBT0dwcWk4TGJIcFNBWVhBcEZB?= =?utf-8?B?dkJ2dFZWUTVvcHhhY2VSQlVKQklMRW5KTVpTY3NMbW5UQWlkd3pYTWRGRVgz?= =?utf-8?Q?Mmz3iuhp7kgqfvwDNwYD?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9a4b04c-d58a-414b-5975-08db69e1262b X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2023 18:33:13.5183 (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: AS8P250MB0378 Subject: Re: [FFmpeg-devel] [PATCH 2/2] lavc/msrleenc: Add msrle encoder 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: VG9tYXMgSMOkcmRpbjoKPiArdHlwZWRlZiBzdHJ1Y3QgTVNSTEVDb250ZXh0IHsKPiArICAgIGNv bnN0IEFWQ2xhc3MgKmNsYXNzOwo+ICsgICAgaW50IGN1cmZyYW1lOwo+ICsgICAgQVZGcmFtZSAq bGFzdF9mcmFtZTsKPiArfSBNU1JMRUNvbnRleHQ7Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCBpbnQg bXNybGVfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBhdmN0 eC0+Yml0c19wZXJfY29kZWRfc2FtcGxlID0gODsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCB3cml0ZV9ydW4oQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB1aW50OF90ICoq ZGF0YSwgaW50IGxlbiwgaW50IHZhbHVlKQo+ICt7Cj4gKyAgICAvLyB3ZSdyZSBhbGxvd2VkIHRv IHdyaXRlIG9kZCBydW5zCj4gKyAgICB3aGlsZSAobGVuID49IDI1NSkgewo+ICsgICAgICAgIGJ5 dGVzdHJlYW1fcHV0X2J5dGUoZGF0YSwgMjU1KTsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9i eXRlKGRhdGEsIHZhbHVlKTsKPiArICAgICAgICBsZW4gLT0gMjU1Owo+ICsgICAgfQo+ICsgICAg aWYgKGxlbiA+PSAxKSB7Cj4gKyAgICAgICAgLy8gdGhpcyBpcyB3YXN0ZWZ1bCB3aGVuIGxlbiA9 PSAxIGFuZCBzb21ldGltZXMgd2hlbiBsZW4gPT0gMgo+ICsgICAgICAgIC8vIGJ1dCBzb21ldGlt ZXMgd2UgaGF2ZSBubyBjaG9pY2UuIGFsc28gd3JpdGVfYWJzb2x1dGUoKQo+ICsgICAgICAgIC8v IHJlbGllcyBvbiB0aGlzCj4gKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZShkYXRhLCBsZW4p Owo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoZGF0YSwgdmFsdWUpOwo+ICsgICAgfQo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB3cml0ZV9hYnNvbHV0ZShBVkNvZGVjQ29udGV4dCAqYXZj dHgsIHVpbnQ4X3QgKipkYXRhLCB1aW50OF90ICpsaW5lLCBpbnQgbGVuKQo+ICt7Cj4gKyAgICAv LyB3cml0aW5nIDI1NSB3b3VsZCBiZSB3YXN0ZWZ1bCBoZXJlIGR1ZSB0byB0aGUgcGFkZGluZyBy ZXF1aXJlbWVudAo+ICsgICAgd2hpbGUgKGxlbiA+PSAyNTQpIHsKPiArICAgICAgICBieXRlc3Ry ZWFtX3B1dF9ieXRlKGRhdGEsIDApOwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoZGF0 YSwgMjU0KTsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9idWZmZXIoZGF0YSwgbGluZSwgMjU0 KTsKPiArICAgICAgICBsaW5lICs9IDI1NDsKPiArICAgICAgICBsZW4gLT0gMjU0Owo+ICsgICAg fQo+ICsgICAgaWYgKGxlbiA9PSAxKSB7Cj4gKyAgICAgICAgLy8gaXQncyBsZXNzIHdhc3RlZnVs IHRvIHdyaXRlIHNpbmdsZSBwaXhlbHMgYXMgcnVucwo+ICsgICAgICAgIC8vIG5vdCB0byBtZW50 aW9uIHRoYXQgYWJzb2x1dGUgbW9kZSByZXF1aXJlcyA+PSAzIHBpeGVscwo+ICsgICAgICAgIHdy aXRlX3J1bihhdmN0eCwgZGF0YSwgMSwgbGluZVswXSk7Cj4gKyAgICB9IGVsc2UgaWYgKGxlbiA9 PSAyKSB7Cj4gKyAgICAgICAgd3JpdGVfcnVuKGF2Y3R4LCBkYXRhLCAxLCBsaW5lWzBdKTsKPiAr ICAgICAgICB3cml0ZV9ydW4oYXZjdHgsIGRhdGEsIDEsIGxpbmVbMV0pOwo+ICsgICAgfSBlbHNl IGlmIChsZW4gPiAwKSB7Cj4gKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZShkYXRhLCAwKTsK PiArICAgICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKGRhdGEsIGxlbik7Cj4gKyAgICAgICAgYnl0 ZXN0cmVhbV9wdXRfYnVmZmVyKGRhdGEsIGxpbmUsIGxlbik7Cj4gKyAgICAgICAgaWYgKGxlbiAm IDEpCj4gKyAgICAgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoZGF0YSwgMCk7Cj4gKyAgICB9 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHdyaXRlX2RlbHRhKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgdWludDhfdCAqKmRhdGEsIGludCBkZWx0YSkKPiArewo+ICsgICAgLy8gd2UgbGV0IHRoZSB5 c2tpcCBsb2dpYyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBkZWx0YQo+ICsgICAg Ly8gdG8gZm9sbG93aW5nIGxpbmVzLiBpdCdzIG5vdCBwZXJmZWN0IGJ1dCBpdCdzIGVhc2llciB0 aGFuIGZpbmRpbmcKPiArICAgIC8vIHRoZSBvcHRpbWFsIGNvbWJpbmF0aW9uIG9mIGVuZC1vZi1s aW5lcyBhbmQgZGVsdGFzIHRvIHJlYWNoIGFueQo+ICsgICAgLy8gZm9sbG93aW5nIHBvc2l0aW9u IGluY2x1ZGluZyBwbGFjZXMgd2hlcmUgZHggPCAwCj4gKyAgICB3aGlsZSAoZGVsdGEgPj0gMjU1 KSB7Cj4gKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZShkYXRhLCAwKTsKPiArICAgICAgICBi eXRlc3RyZWFtX3B1dF9ieXRlKGRhdGEsIDIpOwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J5 dGUoZGF0YSwgMjU1KTsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKGRhdGEsIDApOwo+ ICsgICAgICAgIGRlbHRhIC09IDI1NTsKPiArICAgIH0KPiArICAgIGlmIChkZWx0YSA+IDApIHsK PiArICAgICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKGRhdGEsIDApOwo+ICsgICAgICAgIGJ5dGVz dHJlYW1fcHV0X2J5dGUoZGF0YSwgMik7Cj4gKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZShk YXRhLCBkZWx0YSk7Cj4gKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZShkYXRhLCAwKTsKPiAr ICAgIH0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgd3JpdGVfeXNraXAoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LCB1aW50OF90ICoqZGF0YSwgaW50IHlza2lwKQo+ICt7Cj4gKyAgICBpZiAoeXNraXAg PCA0KQo+ICsgICAgICAgIHJldHVybjsKPiArICAgIC8vIHdlIGhhdmUgeXNraXAqMiBudWwgYnl0 ZXNzCj4gKyAgICAqZGF0YSAtPSAyKnlza2lwOwo+ICsgICAgLy8gdGhlIGVuZC1vZi1saW5lIGNv dW50cyBhcyBvbmUgc2tpcAo+ICsgICAgeXNraXAtLTsKPiArICAgIHdoaWxlICh5c2tpcCA+PSAy NTUpIHsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKGRhdGEsIDApOwo+ICsgICAgICAg IGJ5dGVzdHJlYW1fcHV0X2J5dGUoZGF0YSwgMik7Cj4gKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRf Ynl0ZShkYXRhLCAwKTsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKGRhdGEsIDI1NSk7 Cj4gKyAgICAgICAgeXNraXAgLT0gMjU1Owo+ICsgICAgfQo+ICsgICAgaWYgKHlza2lwID4gMCkg ewo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoZGF0YSwgMCk7Cj4gKyAgICAgICAgYnl0 ZXN0cmVhbV9wdXRfYnl0ZShkYXRhLCAyKTsKPiArICAgICAgICBieXRlc3RyZWFtX3B1dF9ieXRl KGRhdGEsIDApOwo+ICsgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoZGF0YSwgeXNraXApOwo+ ICsgICAgfQo+ICsgICAgYnl0ZXN0cmVhbV9wdXRfYmUxNihkYXRhLCAweDAwMDApOwo+ICt9Cj4g Kwo+ICsvLyB1c2VkIGJvdGggdG8gZW5jb2RlIGxpbmVzIGluIGtleWZyYW1lcyBhbmQgdG8gZW5j b2RlIGxpbmVzIGJldHdlZW4gZGVsdGFzCj4gK3N0YXRpYyB2b2lkIGVuY29kZV9saW5lKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgdWludDhfdCAqKmRhdGEsIHVpbnQ4X3QgKmxpbmUsIGludCBsZW5n dGgpCj4gK3sKPiArICAgIGludCBydW4gPSAwLCBsYXN0ID0gLTEsIGFic3N0YXJ0ID0gMDsKPiAr ICAgIGlmIChsZW5ndGggPT0gMCkKPiArICAgICAgICByZXR1cm47Cj4gKyAgICBmb3IgKGludCB4 ID0gMDsgeCA8IGxlbmd0aDsgeCsrKSB7Cj4gKyAgICAgICAgaWYgKGxhc3QgPT0gbGluZVt4XSkg ewo+ICsgICAgICAgICAgICBydW4rKzsKPiArICAgICAgICAgICAgaWYgKHJ1biA9PSAzKQo+ICsg ICAgICAgICAgICAgICAgd3JpdGVfYWJzb2x1dGUoYXZjdHgsIGRhdGEsICZsaW5lW2Fic3N0YXJ0 XSwgeCAtIGFic3N0YXJ0IC0gMik7Cj4gKyAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAg aWYgKHJ1biA+PSAzKSB7Cj4gKyAgICAgICAgICAgICAgICB3cml0ZV9ydW4oYXZjdHgsIGRhdGEs IHJ1biwgbGFzdCk7Cj4gKyAgICAgICAgICAgICAgICBhYnNzdGFydCA9IHg7Cj4gKyAgICAgICAg ICAgIH0KPiArICAgICAgICAgICAgcnVuID0gMTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgbGFz dCA9IGxpbmVbeF07Cj4gKyAgICB9Cj4gKyAgICBpZiAocnVuID49IDMpCj4gKyAgICAgICAgd3Jp dGVfcnVuKGF2Y3R4LCBkYXRhLCBydW4sIGxhc3QpOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIHdy aXRlX2Fic29sdXRlKGF2Y3R4LCBkYXRhLCAmbGluZVthYnNzdGFydF0sIGxlbmd0aCAtIGFic3N0 YXJ0KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBlbmNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBBVlBhY2tldCAqcGt0LAo+ICsgICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpwaWN0 LCBpbnQga2V5ZnJhbWUsIGludCAqZ290X2tleWZyYW1lKQo+ICt7Cj4gKyAgICBNU1JMRUNvbnRl eHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ICsgICAgdWludDhfdCAqZGF0YSA9IHBrdC0+ZGF0 YTsKPiArICAgIAo+ICsgICAgLyogIENvbXBhcmUgdGhlIGN1cnJlbnQgZnJhbWUgdG8gdGhlIGxh c3QgZnJhbWUsIG9yIGNvZGUgdGhlIGVudGlyZSBmcmFtZQo+ICsgICAgICAgIGlmIGtleWZyYW1l ICE9IDAuIFdlJ3JlIGNvbnRpbnVhbGx5IG91dHB1dHRpbmcgcGFpcnMgb2YgYnl0ZXM6Cj4gKwo+ ICsgICAgICAgICAgICAwMCAwMCAgICAgICAgICAgZW5kIG9mIGxpbmUKPiArICAgICAgICAgICAg MDAgMDEgICAgICAgICAgIGVuZCBvZiBiaXRtYXAKPiArICAgICAgICAgICAgMDAgMDIgZHggZHkg ICAgIGRlbHRhLiBtb3ZlIHBvaW50ZXIgdG8geCtkeCwgeStkeQo+ICsgICAgICAgICAgICAwMCBs bCBkZCBkZCAuLiAgYWJzb2x1dGUgKHZlcmJhdGltKSBtb2RlLiBsbCA+PSAzCj4gKyAgICAgICAg ICAgIHJyIGRkICAgICAgICAgICBydW4uIHJyID49IDEKPiArCj4gKyAgICAgICAgRm9yIGtleWZy YW1lcyB3ZSBvbmx5IGhhdmUgYWJzb2x1dGUgbW9kZSBhbmQgcnVucyBhdCBvdXIgZGlzcG9zYWws IGFuZAo+ICsgICAgICAgIHdlIGFyZSBub3QgYWxsb3dlZCB0byBlbmQgYSBsaW5lIGVhcmx5LiBJ ZiB0aGlzIGhhcHBlbnMgd2hlbiBrZXlmcmFtZSA9PSAwCj4gKyAgICAgICAgdGhlbiAqZ290X2tl eWZyYW1lIGlzIHNldCB0byAxIGFuZCBzLT5jdXJmcmFtZSBpcyByZXNldC4KPiArICAgICovCj4g KyAgICAqZ290X2tleWZyYW1lID0gMTsgIC8vIHNldCB0byB6ZXJvIHdoZW5ldmVyIHdlIHVzZSBh IGZlYXR1cmUgdGhhdCBtYWtlcyB0aGlzIGEgbm90LWtleWZyYW1lCj4gKyAgICAKPiArICAgIGlm IChrZXlmcmFtZSkgewo+ICsgICAgICAgIGZvciAoaW50IHkgPSBhdmN0eC0+aGVpZ2h0LTE7IHkg Pj0gMDsgeS0tKSB7Cj4gKyAgICAgICAgICAgIHVpbnQ4X3QgKmxpbmUgPSAmcGljdC0+ZGF0YVsw XVt5KnBpY3QtPmxpbmVzaXplWzBdXTsKPiArICAgICAgICAgICAgZW5jb2RlX2xpbmUoYXZjdHgs ICZkYXRhLCBsaW5lLCBhdmN0eC0+d2lkdGgpOwo+ICsgICAgICAgICAgICBieXRlc3RyZWFtX3B1 dF9iZTE2KCZkYXRhLCAweDAwMDApOyAvLyBlbmQgb2YgbGluZQo+ICsgICAgICAgIH0KPiArICAg IH0gZWxzZSB7Cj4gKyAgICAgICAgLy8gY29tcGFyZSB0byBwcmV2aW91cyBmcmFtZQo+ICsgICAg ICAgIGludCB5c2tpcCA9IDA7IC8vIHdlIGNhbiBlbmNvZGUgbGFyZ2Ugc2tpcHMgdXNpbmcgZGVs dGFzCj4gKyAgICAgICAgZm9yIChpbnQgeSA9IGF2Y3R4LT5oZWlnaHQtMTsgeSA+PSAwOyB5LS0p IHsKPiArICAgICAgICAgICAgdWludDhfdCAqbGluZSA9ICZwaWN0LT5kYXRhWzBdW3kqcGljdC0+ bGluZXNpemVbMF1dOwo+ICsgICAgICAgICAgICB1aW50OF90ICpwcmV2ID0gJnMtPmxhc3RfZnJh bWUtPmRhdGFbMF1beSpzLT5sYXN0X2ZyYW1lLT5saW5lc2l6ZVswXV07CgpTaG91bGQgYmUgY29u c3QuCgo+ICsgICAgICAgICAgICAvLyB3ZSBuZWVkIGF0IGxlYXN0IDUgcGl4ZWxzIGluIGEgcm93 IGZvciBhIGRlbHRhIHRvIGJlIHdvcnRod2hpbGUKPiArICAgICAgICAgICAgaW50IGRlbHRhID0g MCwgbGluZXN0YXJ0ID0gMCwgZW5jb2RlZCA9IDA7Cj4gKyAgICAgICAgICAgIGZvciAoaW50IHgg PSAwOyB4IDwgYXZjdHgtPndpZHRoOyB4KyspIHsKPiArICAgICAgICAgICAgICAgIGlmIChsaW5l W3hdID09IHByZXZbeF0pIHsKPiArICAgICAgICAgICAgICAgICAgICBkZWx0YSsrOwo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIChkZWx0YSA9PSA1KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGludCBsZW4gPSB4IC0gbGluZXN0YXJ0IC0gNDsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGxlbiA+IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3lz a2lwKGF2Y3R4LCAmZGF0YSwgeXNraXApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg eXNraXAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2xpbmUoYXZj dHgsICZkYXRhLCAmbGluZVtsaW5lc3RhcnRdLCBsZW4pOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZW5jb2RlZCA9IDE7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgbGluZXN0YXJ0ID0gLTE7Cj4gKyAgICAgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICBp ZiAoZGVsdGEgPj0gNSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV95c2tpcChh dmN0eCwgJmRhdGEsIHlza2lwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgeXNraXAgPSAw Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWx0YShhdmN0eCwgJmRhdGEsIGRl bHRhKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgKmdvdF9rZXlmcmFtZSA9IDA7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSAxOwo+ICsgICAgICAgICAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IDA7Cj4gKyAgICAgICAgICAgICAgICAg ICAgaWYgKGxpbmVzdGFydCA9PSAtMSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgbGluZXN0 YXJ0ID0geDsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICBpZiAoZGVsdGEgPCA1KSB7Cj4gKyAgICAgICAgICAgICAgICB3cml0ZV95c2tpcChhdmN0 eCwgJmRhdGEsIHlza2lwKTsKPiArICAgICAgICAgICAgICAgIHlza2lwID0gMDsKPiArICAgICAg ICAgICAgICAgIGVuY29kZV9saW5lKGF2Y3R4LCAmZGF0YSwgJmxpbmVbbGluZXN0YXJ0XSwgYXZj dHgtPndpZHRoIC0gbGluZXN0YXJ0KTsKPiArICAgICAgICAgICAgICAgIGVuY29kZWQgID0gMTsK PiArICAgICAgICAgICAgfSBlbHNlCj4gKyAgICAgICAgICAgICAgICAqZ290X2tleWZyYW1lID0g MDsKPiArICAgICAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYmUxNigmZGF0YSwgMHgwMDAwKTsgLy8g ZW5kIG9mIGxpbmUKPiArICAgICAgICAgICAgaWYgKCFlbmNvZGVkKQo+ICsgICAgICAgICAgICAg ICAgeXNraXArKzsKPiArICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgeXNraXAg PSAwOwo+ICsgICAgICAgIH0KPiArICAgICAgICB3cml0ZV95c2tpcChhdmN0eCwgJmRhdGEsIHlz a2lwKTsKPiArICAgIH0KPiArICAgIGJ5dGVzdHJlYW1fcHV0X2JlMTYoJmRhdGEsIDB4MDAwMSk7 IC8vIGVuZCBvZiBiaXRtYXAKPiArICAgIHBrdC0+c2l6ZSA9IGRhdGEgLSBwa3QtPmRhdGE7Cj4g KyAgICByZXR1cm4gMDsKPiB9Cj4gKwo+ICtzdGF0aWMgaW50IG1zcmxlX2VuY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEFWRnJhbWUgKnBpY3QsIGludCAqZ290X3BhY2tldCkKPiArewo+ ICsgICAgTVNSTEVDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArICAgIGludCByZXQs IGdvdF9rZXlmcmFtZTsKPiArCj4gKyAgICBpZiAoKHJldCA9IGZmX2FsbG9jX3BhY2tldChhdmN0 eCwgcGt0LCAoCj4gKyAgICAgICAgICAgICAgICBhdmN0eC0+d2lkdGgqMiAvKiB3b3JzdCBjYXNl ID0gcmxlIGV2ZXJ5IHBpeGVsICovICsgMiAvKmVuZCBvZiBsaW5lICovCj4gKyAgICAgICAgICAg ICkgKiBhdmN0eC0+aGVpZ2h0ICsgMiAvKiBlbmQgb2YgYml0bWFwICovICsgQVZfSU5QVVRfQlVG RkVSX01JTl9TSVpFKSkpCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBpZiAocGlj dC0+ZGF0YVsxXSkgewo+ICsgICAgICAgIHVpbnQ4X3QgKnNpZGVfZGF0YSA9IGF2X3BhY2tldF9u ZXdfc2lkZV9kYXRhKHBrdCwgQVZfUEtUX0RBVEFfUEFMRVRURSwgQVZQQUxFVFRFX1NJWkUpOwo+ ICsgICAgICAgIG1lbWNweShzaWRlX2RhdGEsIHBpY3QtPmRhdGFbMV0sIEFWUEFMRVRURV9TSVpF KTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoKHJldCA9IGVuY29kZShhdmN0eCwgcGt0LCBwaWN0 LCBzLT5jdXJmcmFtZSA9PSAwLCAmZ290X2tleWZyYW1lKSkpCj4gKyAgICAgICAgcmV0dXJuIHJl dDsKPiArCj4gKyAgICBpZiAoZ290X2tleWZyYW1lKSB7Cj4gKyAgICAgICAgcGt0LT5mbGFncyB8 PSBBVl9QS1RfRkxBR19LRVk7Cj4gKyAgICAgICAgcy0+Y3VyZnJhbWUgPSAwOwo+ICsgICAgfQo+ ICsgICAgaWYgKCsrcy0+Y3VyZnJhbWUgPj0gYXZjdHgtPmdvcF9zaXplKQo+ICsgICAgICAgIHMt PmN1cmZyYW1lID0gMDsKPiArICAgICpnb3RfcGFja2V0ID0gMTsKPiArCj4gKyAgICBpZiAoIXMt Pmxhc3RfZnJhbWUpCj4gKyAgICAgICAgcy0+bGFzdF9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7 Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgYXZfZnJhbWVfdW5yZWYocy0+bGFzdF9mcmFtZSk7Cj4g Kwo+ICsgICAgYXZfZnJhbWVfcmVmKHMtPmxhc3RfZnJhbWUsIHBpY3QpOwoKV291bGRuJ3QgaXQg YmUgc2ltcGxlciB0byBhbGxvY2F0ZSB0aGlzIGZyYW1lIGR1cmluZyBpbml0IGFuZCB0aGVuIHVz ZQphdl9mcmFtZV9yZXBsYWNlKCkgaGVyZT8KQXBhcnQgZnJvbSB0aGF0OiBZb3UgbmVlZCB0byBj aGVjayB0aGUgYXZfZnJhbWVfcmVmKCkuCgo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgbXNybGVfZW5jb2RlX2Nsb3NlKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiArewo+ ICsgICAgTVNSTEVDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArICAgIGF2X2ZyYW1l X2ZyZWUoJnMtPmxhc3RfZnJhbWUpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBjb25zdCBBVkNsYXNzIG1zcmxlX2NsYXNzID0gewo+ICsgICAgLmNsYXNzX25hbWUgPSAiTWlj cm9zb2Z0IFJMRSBlbmNvZGVyIiwKPiArICAgIC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVt X25hbWUsCj4gKyAgICAudmVyc2lvbiAgICA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwKPiArfTsK CkFuIEFWQ2xhc3MgaXMgcG9pbnRsZXNzIHdpdGhvdXQgb3B0aW9ucywgc28geW91IHNob3VsZCBq dXN0IHJlbW92ZSBpdAooYW5kIHRoZSBBVkNsYXNzKiBmcm9tIHRoZSBjb250ZXh0KS4KCj4gKwo+ ICtjb25zdCBGRkNvZGVjIGZmX21zcmxlX2VuY29kZXIgPSB7Cj4gKyAgICAucC5uYW1lICAgICAg ICAgPSAibXNybGUiLAo+ICsgICAgQ09ERUNfTE9OR19OQU1FKCJNaWNyb3NvZnQgUkxFIiksCj4g KyAgICAucC50eXBlICAgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCj4gKyAgICAucC5pZCAg ICAgICAgICAgPSBBVl9DT0RFQ19JRF9NU1JMRSwKPiArICAgIC5wLmNhcGFiaWxpdGllcyA9IEFW X0NPREVDX0NBUF9EUjEsCj4gKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoTVNSTEVDb250 ZXh0KSwKPiArICAgIC5pbml0ICAgICAgICAgICA9IG1zcmxlX2VuY29kZV9pbml0LAo+ICsgICAg RkZfQ09ERUNfRU5DT0RFX0NCKG1zcmxlX2VuY29kZV9mcmFtZSksCj4gKyAgICAuY2xvc2UgICAg ICAgICAgPSBtc3JsZV9lbmNvZGVfY2xvc2UsCj4gKyAgICAucC5waXhfZm10cyAgICAgPSAoY29u c3QgZW51bSBBVlBpeGVsRm9ybWF0W10pewo+ICsgICAgICAgIEFWX1BJWF9GTVRfUEFMOCwgQVZf UElYX0ZNVF9OT05FCj4gKyAgICB9LAo+ICsgICAgLnAucHJpdl9jbGFzcyAgID0gJm1zcmxlX2Ns YXNzLAo+ICsgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfQ0xFQU5VUCwK PiArfTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K