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 B22024C515 for ; Sun, 28 Jul 2024 17:58:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D615968D7BF; Sun, 28 Jul 2024 20:58:04 +0300 (EEST) Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FFB068D6ED for ; Sun, 28 Jul 2024 20:57:58 +0300 (EEST) Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-70945a007f0so781564a34.2 for ; Sun, 28 Jul 2024 10:57:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722189476; x=1722794276; darn=ffmpeg.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=eXG0ctLLwbQYIaTR3DjNBnoxDSLqejvDvXb238CSWeo=; b=TMEjf5VOzWhbYgL4M1H8I3q9va+ETN+kEu/Qv4aVYFLk3UwZzYDaSnFyZ2W0AlxEjQ 80W6XHqvckZkwcGn2aJ4DRbRVNhrCEDhA7A8Ihpvv0Ue/9wuw3q9iE9wRMMB+zqrdTBA HKpG69sEok29RgegKdyXzWlECysiNdUIAsHcO94X4Wkjl4JtKvz6F5ixQEgqJuA++uSd V5KPgZMHeFQBO4DGpukuwYTzRwnglKi/BS23hdt48vBcYMlesB0Q7DNT+RQrnpcrU9g2 T+vDdGgwDVeNFrOuQyeDxZuTLTb9s2ogP9NOj2qe+ZYVsH8WnizQnJPRaVMIU+nIyVMo erdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722189476; x=1722794276; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eXG0ctLLwbQYIaTR3DjNBnoxDSLqejvDvXb238CSWeo=; b=AktGiQiVNFRrUksTXLOSIOZsebuv/29sxB3kHvPVVafWFoqsniIyX1tDGkbQwAZ1uW q51Yt/Vl3DOaXHvLASJpzaIWJ1rhde5gebnL7rIW7RSBAFMjgHqS3zPsUo++70JEydL2 kC6KYiFbFA0W/1BHSDSscJJ98dmCnpvdQ8PD+Zwd3qmMXnYr7LEDtFMnID1sDxnVy7J3 5Ftrgr1eCXo+N1CiWwegjV3jzpBh/nNC7g3nSp/kUE2lpOzTKaYdkoZFYjlDcZXdHo5V H/UVeb2kqDUc6tAc1jWqkiH59Qeu1JKxbJz3JcZDITZlvlGa21zwFoz5s7877HgMqf3z Ii0A== X-Gm-Message-State: AOJu0Yw8nlHqVzkv6RfzoW1XaY7sU+m3ajahWFAw7mQ5Scy1wumxGDF7 dU108gA8JHBE/LSDtuM68rNGMxQoNSJPlp7BnuxMfPz9BzlQXlspFONM6CQ59tZEj7HXnVVvrF6 UcfHMfeu2mZheXsO50JUShrKjII4YQ8lsCSGl7g== X-Google-Smtp-Source: AGHT+IHBa6qir3jP1ouKnRlyivJZdpe+d/PFNNiAvh4ZeSRhGO9I/Qw12f8EHt8WSMT0KnZA0YXAsbI9a5/6WcUoI4c= X-Received: by 2002:a05:6830:4908:b0:703:6076:a47 with SMTP id 46e09a7af769-70940c64e15mr8340766a34.23.1722189475787; Sun, 28 Jul 2024 10:57:55 -0700 (PDT) MIME-Version: 1.0 References: <20240712135314.9390-1-marcus@marcusspencer.xyz> In-Reply-To: <20240712135314.9390-1-marcus@marcusspencer.xyz> From: Ramiro Polla Date: Sun, 28 Jul 2024 19:57:44 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v21] avformat: add farbfeld muxer and demuxer 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: T24gRnJpLCBKdWwgMTIsIDIwMjQgYXQgMzo1M+KAr1BNIE1hcmN1cyBCIFNwZW5jZXIKPG1hcmN1 c0BtYXJjdXNzcGVuY2VyLnh5ej4gd3JvdGU6Cj4KPiBmYXJiZmVsZCBpcyBhbiB1bmNvbXByZXNz ZWQgaW1hZ2UgZm9ybWF0IHRoYXQgaXMgYSBwYXJ0IG9mIHN1Y2tsZXNzCj4gdG9vbHMgKGh0dHBz Oi8vdG9vbHMuc3Vja2xlc3Mub3JnKS4KPgo+IEl0cyBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJs ZSBhdCBodHRwczovL3Rvb2xzLnN1Y2tsZXNzLm9yZy9mYXJiZmVsZC4KPgo+IEFkZCBzdXBwb3J0 IGZvciB0aGlzIGltYWdlIGZvcm1hdCBpbiBhdmZvcm1hdC4KPgo+IFNpZ25lZC1vZmYtYnk6IE1h cmN1cyBCIFNwZW5jZXIgPG1hcmN1c0BtYXJjdXNzcGVuY2VyLnh5ej4KPiAtLS0KPiBSZW1vdmUg dW5uZWNlc3NhcnkgbG9vcCB2YXJpYWJsZSBmcm9tIEZhcmJmZWxkRGVtdXhDb250ZXh0Lgo+Cj4g IENoYW5nZWxvZyAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkb2MvZ2VuZXJhbF9jb250ZW50 cy50ZXhpIHwgICA0ICsKPiAgbGliYXZmb3JtYXQvTWFrZWZpbGUgICAgICB8ICAgMiArCj4gIGxp YmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyAgfCAgIDQgKy0KPiAgbGliYXZmb3JtYXQvZmFyYmZlbGRk ZWMuYyB8IDEzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZmb3Jt YXQvZmFyYmZlbGRlbmMuYyB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ICBsaWJhdmZvcm1hdC92ZXJzaW9uLmggICAgIHwgICA0ICstCj4gIDcgZmlsZXMgY2hh bmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9mYXJiZmVsZGRlYy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmZvcm1hdC9mYXJiZmVsZGVuYy5jCj4KPiBkaWZmIC0tZ2l0IGEvQ2hhbmdlbG9nIGIvQ2hhbmdl bG9nCj4gaW5kZXggMzcwOGUzNWEyYS4uMTBmMmIxZTIzOSAxMDA2NDQKPiAtLS0gYS9DaGFuZ2Vs b2cKPiArKysgYi9DaGFuZ2Vsb2cKPiBAQCAtMTcsNiArMTcsNyBAQCB2ZXJzaW9uIDxuZXh0PjoK PiAgLSBwZXJsaW4gdmlkZW8gc291cmNlCj4gIC0gRDNEMTJWQSBIRVZDIGVuY29kZXIKPiAgLSBD cm9wcGluZyBtZXRhZGF0YSBwYXJzaW5nIGFuZCB3cml0aW5nIGluIE1hdHJvc2thIGFuZCBNUDQv TU9WIGRlL211eGVycwo+ICstIGZhcmJmZWxkIG11eGVyIGFuZCBkZW11eGVyCj4KPiAgdmVyc2lv biA3LjA6Cj4gIC0gRFhWIERYVDEgZW5jb2Rlcgo+IGRpZmYgLS1naXQgYS9kb2MvZ2VuZXJhbF9j b250ZW50cy50ZXhpIGIvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQo+IGluZGV4IGU3Y2Y0Zjgy MzkuLmJiYzQ5ZDM2NjUgMTAwNjQ0Cj4gLS0tIGEvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQo+ ICsrKyBiL2RvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkKPiBAQCAtNDg5LDYgKzQ4OSw4IEBAIGxp YnJhcnk6Cj4gIEBpdGVtIEVsZWN0cm9uaWMgQXJ0cyBNdWx0aW1lZGlhICBAdGFiICAgIEB0YWIg WAo+ICAgICAgQHRhYiBVc2VkIGluIHZhcmlvdXMgRUEgZ2FtZXM7IGZpbGVzIGhhdmUgZXh0ZW5z aW9ucyBsaWtlIFdWRSBhbmQgVVYyLgo+ICBAaXRlbSBFbnNvbmlxIFBhcmlzIEF1ZGlvIEZpbGUg IEB0YWIgICBAdGFiIFgKPiArQGl0ZW0gRkYgICAgICAgICAgICAgICAgICAgICAgICBAdGFiIFgg QHRhYiBYCj4gKyAgICBAdGFiIGZhcmJmZWxkIHVuY29tcHJlc3NlZCBpbWFnZQo+ICBAaXRlbSBG Rk0gKEZGc2VydmVyIGxpdmUgZmVlZCkgIEB0YWIgWCBAdGFiIFgKPiAgQGl0ZW0gRmxhc2ggKFNX RikgICAgICAgICAgICAgICBAdGFiIFggQHRhYiBYCj4gIEBpdGVtIEZsYXNoIDkgKEFWTTIpICAg ICAgICAgICAgQHRhYiBYIEB0YWIgWAo+IEBAIC03ODYsNiArNzg4LDggQEAgZm9sbG93aW5nIGlt YWdlIGZvcm1hdHMgYXJlIHN1cHBvcnRlZDoKPiAgICAgIEB0YWIgRGlnaXRhbCBQaWN0dXJlIEV4 Y2hhbmdlCj4gIEBpdGVtIEVYUiAgICAgICAgICBAdGFiICAgQHRhYiBYCj4gICAgICBAdGFiIE9w ZW5FWFIKPiArQGl0ZW0gRkYgICAgICAgICAgIEB0YWIgWCBAdGFiIFgKPiArICAgIEB0YWIgZmFy YmZlbGQgdW5jb21wcmVzc2VkIGltYWdlCj4gIEBpdGVtIEZJVFMgICAgICAgICBAdGFiIFggQHRh YiBYCj4gICAgICBAdGFiIEZsZXhpYmxlIEltYWdlIFRyYW5zcG9ydCBTeXN0ZW0KPiAgQGl0ZW0g SERSICAgICAgICAgIEB0YWIgWCBAdGFiIFgKPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFr ZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQo+IGluZGV4IDdjYTY4YTcwMzYuLmUyYmY0MjA5 MTYgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiArKysgYi9saWJhdmZvcm1h dC9NYWtlZmlsZQo+IEBAIC0yODQsNiArMjg0LDggQEAgT0JKUy0kKENPTkZJR19JTUFHRV9DUklf UElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwo+ICBPQkpTLSQoQ09ORklHX0lN QUdFX0REU19QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCj4gIE9CSlMtJChD T05GSUdfSU1BR0VfRFBYX1BJUEVfREVNVVhFUikgICAgICs9IGltZzJkZWMubyBpbWcyLm8KPiAg T0JKUy0kKENPTkZJR19JTUFHRV9FWFJfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGlt ZzIubwo+ICtPQkpTLSQoQ09ORklHX0lNQUdFX0ZBUkJGRUxEX1BJUEVfREVNVVhFUikrPSBmYXJi ZmVsZGRlYy5vCj4gK09CSlMtJChDT05GSUdfSU1BR0VfRkFSQkZFTERfTVVYRVIpICAgICAgICs9 IGZhcmJmZWxkZW5jLm8KPiAgT0JKUy0kKENPTkZJR19JTUFHRV9HRU1fUElQRV9ERU1VWEVSKSAg ICAgKz0gaW1nMmRlYy5vIGltZzIubwo+ICBPQkpTLSQoQ09ORklHX0lNQUdFX0dJRl9QSVBFX0RF TVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCj4gIE9CSlMtJChDT05GSUdfSU1BR0VfSERS X1BJUEVfREVNVVhFUikgICAgICs9IGltZzJkZWMubyBpbWcyLm8KPiBkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvYWxsZm9ybWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4gaW5kZXgg MzA1ZmE0NjUzMi4uMDFhOWVmOTJlNSAxMDA2NDQKPiAtLS0gYS9saWJhdmZvcm1hdC9hbGxmb3Jt YXRzLmMKPiArKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKPiBAQCAtNTMxLDEyICs1MzEs MTQgQEAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX3h3bWFfZGVtdXhlcjsKPiAgZXh0 ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX3lvcF9kZW11eGVyOwo+ICBleHRlcm4gY29uc3Qg RkZJbnB1dEZvcm1hdCAgZmZfeXV2NG1wZWdwaXBlX2RlbXV4ZXI7Cj4gIGV4dGVybiBjb25zdCBG Rk91dHB1dEZvcm1hdCBmZl95dXY0bXBlZ3BpcGVfbXV4ZXI7Cj4gLS8qIGltYWdlIGRlbXV4ZXJz ICovCj4gKy8qIGltYWdlIChkZSltdXhlcnMgKi8KPiAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3Jt YXQgIGZmX2ltYWdlX2JtcF9waXBlX2RlbXV4ZXI7Cj4gIGV4dGVybiBjb25zdCBGRklucHV0Rm9y bWF0ICBmZl9pbWFnZV9jcmlfcGlwZV9kZW11eGVyOwo+ICBleHRlcm4gY29uc3QgRkZJbnB1dEZv cm1hdCAgZmZfaW1hZ2VfZGRzX3BpcGVfZGVtdXhlcjsKPiAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRG b3JtYXQgIGZmX2ltYWdlX2RweF9waXBlX2RlbXV4ZXI7Cj4gIGV4dGVybiBjb25zdCBGRklucHV0 Rm9ybWF0ICBmZl9pbWFnZV9leHJfcGlwZV9kZW11eGVyOwo+ICtleHRlcm4gY29uc3QgRkZJbnB1 dEZvcm1hdCAgZmZfaW1hZ2VfZmFyYmZlbGRfcGlwZV9kZW11eGVyOwo+ICtleHRlcm4gY29uc3Qg RkZPdXRwdXRGb3JtYXQgZmZfaW1hZ2VfZmFyYmZlbGRfbXV4ZXI7Cj4gIGV4dGVybiBjb25zdCBG RklucHV0Rm9ybWF0ICBmZl9pbWFnZV9nZW1fcGlwZV9kZW11eGVyOwo+ICBleHRlcm4gY29uc3Qg RkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfZ2lmX3BpcGVfZGVtdXhlcjsKPiAgZXh0ZXJuIGNvbnN0 IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2hkcl9waXBlX2RlbXV4ZXI7Cj4gZGlmZiAtLWdpdCBh L2xpYmF2Zm9ybWF0L2ZhcmJmZWxkZGVjLmMgYi9saWJhdmZvcm1hdC9mYXJiZmVsZGRlYy5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi40MTM2MWU3NzFiCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2Zm9ybWF0L2ZhcmJmZWxkZGVjLmMKPiBAQCAtMCwwICsx LDEzMyBAQAo+ICsvKgo+ICsgKiBJbWFnZSBmb3JtYXQKPiArICogWVVWNE1QRUcgZGVtdXhlcgo+ ICsgKgo+ICsgKiBNb2RpZmllZCBieSBNYXJjdXMgQiBTcGVuY2VyIHRvIHN1aXQgdGhlIGZhcmJm ZWxkX3BpcGUgZGVtdXhlciBvbiAxMiBKdWx5IDIwMjQKPiArICoKPiArICogQ29weXJpZ2h0IChj KSAyMDAwLCAyMDAxLCAyMDAyIEZhYnJpY2UgQmVsbGFyZAo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MDEsIDIwMDIsIDIwMDMgRmFicmljZSBCZWxsYXJkCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNCBN aWNoYWVsIE5pZWRlcm1heWVyCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNCBNYXJjdXMgQiBTcGVu Y2VyCj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICog RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Cj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy MTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImF2Zm9ybWF0LmgiCj4gKyNpbmNs dWRlICJhdmlvLmgiCj4gKyNpbmNsdWRlICJkZW11eC5oIgo+ICsjaW5jbHVkZSAiaW50ZXJuYWwu aCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1 dGlsL29wdC5oIgo+ICsKPiArI2RlZmluZSBGQVJCRkVMRF9NQUdJQ19MRU4gOAo+ICsjZGVmaW5l IEZBUkJGRUxEX0hFQURFUl9MRU4gKDggKyA0ICsgNCkKPiArCj4gK3R5cGVkZWYgc3RydWN0IEZh cmJmZWxkRGVtdXhDb250ZXh0IHsKPiArICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOwo+ICsgICAg QVZSYXRpb25hbCBmcmFtZXJhdGU7Cj4gK30gRmFyYmZlbGREZW11eENvbnRleHQ7Cj4gKwo+ICtz dGF0aWMgaW50IGZhcmJmZWxkX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqY3R4KQo+ICt7 Cj4gKyAgICBGYXJiZmVsZERlbXV4Q29udGV4dCAqcHJpdiA9IGN0eC0+cHJpdl9kYXRhOwo+ICsg ICAgY2hhciBtYWdpY1tGQVJCRkVMRF9NQUdJQ19MRU5dOwo+ICsgICAgaW50IHdpZHRoLCBoZWln aHQ7Cj4gKyAgICBBVlN0cmVhbSAqc3Q7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIGlmICgo cmV0ID0gYXZpb19yZWFkKGN0eC0+cGIsIG1hZ2ljLCBGQVJCRkVMRF9NQUdJQ19MRU4pKSA8IDAp Cj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBpZiAobWVtY21wKG1hZ2ljLCAiZmFy YmZlbGQiLCBGQVJCRkVMRF9NQUdJQ19MRU4pKQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwo+ICsKPiArICAgIGlmICghKHN0ID0gYXZmb3JtYXRfbmV3X3N0cmVhbShjdHgs IE5VTEwpKSkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsKPiArICAgIHN0 LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9IEFWTUVESUFfVFlQRV9WSURFTzsKPiArICAgIHN0LT5j b2RlY3Bhci0+Zm9ybWF0ICAgICA9IEFWX1BJWF9GTVRfUkdCQTY0QkU7Cj4gKyAgICBzdC0+Y29k ZWNwYXItPmNvZGVjX2lkICAgPSBBVl9DT0RFQ19JRF9SQVdWSURFTzsKPiArCj4gKyAgICB3aWR0 aCAgPSBhdmlvX3JiMzIoY3R4LT5wYik7Cj4gKyAgICBoZWlnaHQgPSBhdmlvX3JiMzIoY3R4LT5w Yik7Cj4gKwo+ICsgICAgc3QtPmNvZGVjcGFyLT53aWR0aCAgICAgPSB3aWR0aDsKPiArICAgIHN0 LT5jb2RlY3Bhci0+aGVpZ2h0ICAgID0gaGVpZ2h0Owo+ICsgICAgc3QtPmNvZGVjcGFyLT5mcmFt ZXJhdGUgPQo+ICsgICAgc3QtPmF2Z19mcmFtZV9yYXRlICAgICAgPQo+ICsgICAgc3QtPnJfZnJh bWVfcmF0ZSAgICAgICAgPSBwcml2LT5mcmFtZXJhdGU7Cgo+ICsgICAgY3R4LT5wYWNrZXRfc2l6 ZSA9IGF2X2ltYWdlX2dldF9idWZmZXJfc2l6ZShzdC0+Y29kZWNwYXItPmZvcm1hdCwgd2lkdGgs IGhlaWdodCwgMSkgKyBGQVJCRkVMRF9IRUFERVJfTEVOOwo+ICsgICAgaWYgKChpbnQpY3R4LT5w YWNrZXRfc2l6ZSA8IDApCj4gKyAgICAgICAgcmV0dXJuIGN0eC0+cGFja2V0X3NpemU7CgppbnQg cGFja2V0X3NpemU7ClsuLi5dCnBhY2tldF9zaXplID0gYXZfaW1hZ2VfZ2V0X2J1ZmZlcl9zaXpl KHN0LT5jb2RlY3Bhci0+Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxKTsKaWYgKHBhY2tldF9zaXpl IDwgMCkKICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwpjdHgtPnBhY2tldF9zaXplID0g RkFSQkZFTERfSEVBREVSX0xFTiArIHBhY2tldF9zaXplOwoKPiArICAgIC8vIHJlc2V0IHBvc2l0 aW9uIGZvciBpbml0YWwgcGFja2V0Cj4gKyAgICBpZiAoKHJldCA9IGF2aW9fc2VlayhjdHgtPnBi LCAwLCBTRUVLX1NFVCkpIDwgMCkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIHJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGZhcmJmZWxkX3JlYWRfcGFja2V0KEFWRm9y bWF0Q29udGV4dCAqY3R4LCBBVlBhY2tldCAqcGt0KQo+ICt7Cj4gKyAgICBjaGFyIG1hZ2ljW0ZB UkJGRUxEX01BR0lDX0xFTl07Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIGlmICgocmV0ID0g YXZpb19yZWFkKGN0eC0+cGIsIG1hZ2ljLCBGQVJCRkVMRF9NQUdJQ19MRU4pKSA8IDApCj4gKyAg ICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBpZiAobWVtY21wKG1hZ2ljLCAiZmFyYmZlbGQi LCBGQVJCRkVMRF9NQUdJQ19MRU4pKQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ICsKPiArICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGFzc3VtZWQgdG8gYmUgY29u c3RhbnQKPiArICAgIGF2aW9fc2tpcChjdHgtPnBiLCA4KTsKPiArCj4gKyAgICBpZiAoKHJldCA9 IGF2X2dldF9wYWNrZXQoY3R4LT5wYiwgcGt0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN0eC0+cGFja2V0X3NpemUgLQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZBUkJGRUxEX0hFQURFUl9MRU4pKSA8IDApCj4gKyAgICAgICAgcmV0 dXJuIHJldDsKPiArCj4gKyAgICBwa3QtPnN0cmVhbV9pbmRleCA9IDA7Cj4gKwo+ICsgICAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKEZhcmJmZWxkRGVt dXhDb250ZXh0LCB4KQo+ICsjZGVmaW5lIERFQyBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTQo+ ICsKPiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIGRlbXV4b3B0aW9uc1tdID0gewo+ICsgICAgeyAi ZnJhbWVyYXRlIiwgInNldCB0aGUgdmlkZW8gZnJhbWVyYXRlIiwgT0ZGU0VUKGZyYW1lcmF0ZSks IEFWX09QVF9UWVBFX1ZJREVPX1JBVEUsIHsuc3RyID0gIjI1In0sIDAsIElOVF9NQVgsIERFQyB9 LAo+ICsgICAgeyBOVUxMIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBmYXJi ZmVsZF9kZW11eF9jbGFzcyA9IHsKPiArICAgIC5jbGFzc19uYW1lID0gIkZhcmJmZWxkRGVtdXhD b250ZXh0IiwKPiArICAgIC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsCj4gKyAg ICAub3B0aW9uICAgICA9IGRlbXV4b3B0aW9ucywKPiArICAgIC52ZXJzaW9uICAgID0gTElCQVZV VElMX1ZFUlNJT05fSU5ULAo+ICt9Owo+ICsKPiArY29uc3QgRkZJbnB1dEZvcm1hdCBmZl9pbWFn ZV9mYXJiZmVsZF9waXBlX2RlbXV4ZXIgPSB7Cj4gKyAgICAucC5uYW1lICAgICAgICAgICA9ICJm YXJiZmVsZF9waXBlIiwKPiArICAgIC5wLmxvbmdfbmFtZSAgICAgID0gTlVMTF9JRl9DT05GSUdf U01BTEwoInBpcGVkIGZhcmJmZWxkIHVuY29tcHJlc3NlZCBpbWFnZSBzZXF1ZW5jZSIpLAo+ICsg ICAgLnAuZXh0ZW5zaW9ucyAgICAgPSAiZmYiLAo+ICsgICAgLnAuZmxhZ3MgICAgICAgICAgPSBB VkZNVF9OT1RJTUVTVEFNUFMsCj4gKyAgICAucC5wcml2X2NsYXNzICAgICA9ICZmYXJiZmVsZF9k ZW11eF9jbGFzcywKPiArICAgIC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKEZhcmJmZWxkRGVt dXhDb250ZXh0KSwKPiArICAgIC5yZWFkX2hlYWRlciAgICAgID0gZmFyYmZlbGRfcmVhZF9oZWFk ZXIsCj4gKyAgICAucmVhZF9wYWNrZXQgICAgICA9IGZhcmJmZWxkX3JlYWRfcGFja2V0LAo+ICt9 Owo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mYXJiZmVsZGVuYy5jIGIvbGliYXZmb3JtYXQv ZmFyYmZlbGRlbmMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4u ODBiYWVmYjkzNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmZvcm1hdC9mYXJiZmVsZGVu Yy5jCj4gQEAgLTAsMCArMSwxNTEgQEAKPiArLyoKPiArICogbWlzYyBpbWFnZSB1dGlsaXRpZXMK PiArICogWVVWNE1QRUcgbXV4ZXIKPiArICogSW1hZ2UgZm9ybWF0Cj4gKyAqCj4gKyAqIE1vZGlm aWVkIGJ5IE1hcmN1cyBCIFNwZW5jZXIgdG8gc3VpdCB0aGUgZmFyYmZlbGQgbXV4ZXIgb24gMTIg SnVseSAyMDI0Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBGYWJy aWNlIEJlbGxhcmQKPiArICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDAxLCAyMDAyIEZhYnJpY2Ug QmVsbGFyZAo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDQgTWljaGFlbCBOaWVkZXJtYXllcgo+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMjQgTWFyY3VzIEIgU3BlbmNlcgo+ICsgKgo+ICsgKiBUaGlzIGZp bGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICog dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlICJhdmZvcm1hdC5oIgo+ICsjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPiArI2lu Y2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2ZyYW1l LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gKyNpbmNsdWRlICJtdXguaCIKPiAr Cj4gK3R5cGVkZWYgc3RydWN0IEZhcmJmZWxkTXV4Q29udGV4dCB7Cj4gKyAgICBjb25zdCBBVkNs YXNzICpjbGFzczsKPiArICAgIGludCBzdGFydF9udW1iZXIsIGltZ19udW1iZXI7Cj4gKyAgICBp bnQgdXBkYXRlOwo+ICt9IEZhcmJmZWxkTXV4Q29udGV4dDsKPiArCj4gK3N0YXRpYyBpbnQgZmFy YmZlbGRfaW5pdChBVkZvcm1hdENvbnRleHQgKmN0eCkKPiArewo+ICsgICAgRmFyYmZlbGRNdXhD b250ZXh0ICpwcml2ID0gY3R4LT5wcml2X2RhdGE7Cj4gKwo+ICsgICAgaWYgKGN0eC0+c3RyZWFt c1swXS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1dSQVBQRURfQVZGUkFNRSAm Jgo+ICsgICAgICAgIGN0eC0+c3RyZWFtc1swXS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NP REVDX0lEX1JBV1ZJREVPKSB7Cj4gKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAi Q29kZWMgbm90IHN1cHBvcnRlZC5cbiIpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChjdHgtPnN0cmVhbXNbMF0tPmNvZGVjcGFy LT5mb3JtYXQgIT0gQVZfUElYX0ZNVF9SR0JBNjRCRSkgewo+ICsgICAgICAgIGF2X2xvZyhjdHgs IEFWX0xPR19FUlJPUiwKPiArICAgICAgICAgICAgImZhcmJmZWxkIG9ubHkgc3VwcG9ydHMgdGhl IHJnYmE2NGJlIHBpeGVsIGZvcm1hdC4gIgo+ICsgICAgICAgICAgICAiQWRkICctcGl4X2ZtdCBy Z2JhNjRiZScgdG8geW91ciBvdXRwdXQgb3B0aW9ucyB0byByZXNvbHZlICIKPiArICAgICAgICAg ICAgInRoaXMgZXJyb3IuXG4iCj4gKyAgICAgICAgKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPiArICAgIH0KPiArCj4gKyAgICBwcml2LT5pbWdfbnVtYmVyID0gcHJp di0+c3RhcnRfbnVtYmVyOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGZhcmJmZWxkX3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKmN0eCwgQVZQYWNrZXQg KnBrdCkKPiArewo+ICsgICAgQVZTdHJlYW0gKnN0ID0gY3R4LT5zdHJlYW1zW3BrdC0+c3RyZWFt X2luZGV4XTsKPiArICAgIGludCB3aWR0aCA9IHN0LT5jb2RlY3Bhci0+d2lkdGgsIGhlaWdodCA9 IHN0LT5jb2RlY3Bhci0+aGVpZ2h0Owo+ICsgICAgRmFyYmZlbGRNdXhDb250ZXh0ICpwcml2ID0g Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBjaGFyIGZpbGVuYW1lWzEwMjRdOwo+ICsgICAgY29uc3Qg dWludDhfdCAqc3JjOwo+ICsgICAgY29uc3QgQVZGcmFtZSAqcDsKPiArICAgIEFWSU9Db250ZXh0 ICpwYjsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgaWYgKHByaXYtPnVwZGF0ZSkKPiArICAg ICAgICBhdl9zdHJsY3B5KGZpbGVuYW1lLCBjdHgtPnVybCwgc2l6ZW9mIGZpbGVuYW1lKTsKPiAr ICAgIGVsc2UgaWYgKGF2X2dldF9mcmFtZV9maWxlbmFtZTIoZmlsZW5hbWUsIHNpemVvZiBmaWxl bmFtZSwgY3R4LT51cmwsCj4gKyAgICAgICAgcHJpdi0+aW1nX251bWJlciwgQVZfRlJBTUVfRklM RU5BTUVfRkxBR1NfTVVMVElQTEUpIDwgMCkgewo+ICsgICAgICAgIGlmIChwcml2LT5pbWdfbnVt YmVyID09IHByaXYtPnN0YXJ0X251bWJlcikgewo+ICsgICAgICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfV0FSTklORywgIlRoZSBzcGVjaWZpZWQgZmlsZW5hbWUgJyVzJyBkb2VzIG5vdCBjb250 YWluIGFuIGltYWdlIHNlcXVlbmNlIHBhdHRlcm4gb3IgYSBwYXR0ZXJuIGlzIGludmFsaWQuXG4i LCBjdHgtPnVybCk7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19XQVJOSU5HLAo+ ICsgICAgICAgICAgICAgICAgICAgIlVzZSBhIHBhdHRlcm4gc3VjaCBhcyAlJTAzZCBmb3IgYW4g aW1hZ2Ugc2VxdWVuY2Ugb3IgIgo+ICsgICAgICAgICAgICAgICAgICAgInVzZSB0aGUgLXVwZGF0 ZSBvcHRpb24gKHdpdGggLWZyYW1lczp2IDEgaWYgbmVlZGVkKSB0byB3cml0ZSBhIHNpbmdsZSBp bWFnZS5cbiIpOwo+ICsgICAgICAgICAgICBhdl9zdHJsY3B5KGZpbGVuYW1lLCBjdHgtPnVybCwg c2l6ZW9mIGZpbGVuYW1lKTsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBhdl9s b2coY3R4LCBBVl9MT0dfRVJST1IsICJDYW5ub3Qgd3JpdGUgbW9yZSB0aGFuIG9uZSBmaWxlIHdp dGggdGhlIHNhbWUgbmFtZS5cbiIpOwo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOwo+ICsgICAgICAgIH0KPiArICAgIH0KCkknbSBub3QgdmVyeSBoYXBweSB3aXRoIGhhdmlu ZyBjb2RlIGNvcGllZCBmcm9tIGltZzJlbmMuYy4gSSdkIHByZWZlcgppZiB0aGlzIHdhcyBmYWN0 b3JlZCBvdXQgYW5kIHJldXNlZCBpbnN0ZWFkICh3ZSdkIGFsc28gZ2V0IG1vcmUKaW1nMmVuYy5j IGZ1bmN0aW9uYWxpdHkgZm9yIGZyZWUgdGhpcyB3YXkpLgoKQnV0IEkga25vdyBvdGhlciBkZXZl bG9wZXJzIGRvbid0IG1pbmQgY29weWluZyBzbWFsbCBjaHVua3Mgb2YgY29kZQpsaWtlIHRoaXMs IGFuZCB0aGUgcmVmYWN0b3JpbmcgY291bGQgYmUgZG9uZSBsYXRlciwgc28gSSBndWVzcyB0aGlz IGlzCm9rIGZvciBub3cuCgpbLi4uXQoKQWxzbyBpdCBtaWdodCBiZSBnb29kIHRvIGFkZCBhIGZh dGUgdGVzdC4KClJhbWlybwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==