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 ABC484A70A for ; Thu, 4 Apr 2024 16:54:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 25C6968CD0F; Thu, 4 Apr 2024 19:54:38 +0300 (EEST) Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 492EA68CD0F for ; Thu, 4 Apr 2024 19:54:31 +0300 (EEST) Received: by mail-qt1-f178.google.com with SMTP id d75a77b69052e-430d3fcc511so8311cf.1 for ; Thu, 04 Apr 2024 09:54:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712249670; x=1712854470; h=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=tmmXZIxW0PEgtN3pBYE2aOSfapfqlsLc2P8nM6wd8xo=; b=hCSnyK5T+SCOburb8BwfuB/Z0X8xYLDNbklnZ/czinkWBB43KMN/LUlb8o41pKA+dT qiysTnYx+ok5GMM1nJlAxRJhYNYiEfUOCXOUJySheWGf86fevZDUklLoiSujvdqOOD7U P6CxJKIpQRNDTZlT1FCZsab5sXU3VmJo0Ax1/xHeRUqnnFli2Gbd7DtAX1751WUsCpiz GgGL5LmkQEx3mV0VpQpurO8VO1CmutpodsL0TRZgO62/FhGMBoy2Wul+ikfMexEJWlML gYLsoOAImC82dBuGbpQ3XytLZQPzYg74k58tzQZYlRLaRxj/3aJ8bZ4bVQlWJ7SrpEGA NeyQ== X-Gm-Message-State: AOJu0Yz6GTBqsfvrx1LjGinrISYoSKX8jwl66PFqOzC3WMPfhlobQ/qz wrjTtb33Ri8UCrKV36a3K85Ke2wg3LEnYCze9NzKtARzUqmmVBRSE4hFkCPKLRDK9GQgjFZ7Qff davIFXb7Z3g1ioGKlACAHxBiSl+yMetQ9ZEdlhaIqHXK4Ak7OPg== X-Google-Smtp-Source: AGHT+IE8e0sQ2yvGaWilzEy+7eYkhat/NgQggmSAl51Ul91P5/5PFKOodSO70AnCq1mSJbmyAqVKwZDdS0Tw2w4+Uyg= X-Received: by 2002:a05:622a:1356:b0:430:e8f2:7d02 with SMTP id w22-20020a05622a135600b00430e8f27d02mr145734qtk.10.1712249669474; Thu, 04 Apr 2024 09:54:29 -0700 (PDT) MIME-Version: 1.0 References: <20240401213205.2039901-1-asoulier@google.com> <20240401213205.2039901-2-asoulier@google.com> In-Reply-To: Date: Thu, 4 Apr 2024 09:54:16 -0700 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 2/2] avformat/lc3: Add file format for LC3/LC3plus transport 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: , From: Antoine Soulier via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: Antoine Soulier 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: SW4gYSBwcmV2aW91cyBwYXRjaCwgSSBtb2RpZmllZCB0aGUgZHVyYXRpb24gb2YgdGhlIHBhY2tl dC4gQnV0IHNpbmNlLCB3ZQpub3cgc3VwcG9ydCBzZWVraW5nLCBJIGRvbid0IGtub3cgaG93IHRv IG9idGFpbiB0aGUgcHRzIG9mIHRoZSBwYWNrZXQgKG9yCnNhbXBsZSBwb3NpdGlvbiBzaW5jZSBz dGFydCksIHdpdGhvdXQgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBgcmVhZF9zZWVrKClgCmZ1bmN0 aW9uLgpDYW4geW91IGhlbHAgbWUgb24gaG93IEkgY2FuIGRlcml2ZSB0aGUgcHRzIG9mIHRoZSBw YWNrZXQ/ClRoYW5rcy4KCk9uIFRodSwgQXByIDQsIDIwMjQsIDk6MzDigK9BTSBBbmRyZWFzIFJo ZWluaGFyZHQgPAphbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+IHdyb3RlOgoKPiBBbnRv aW5lIFNvdWxpZXIgdmlhIGZmbXBlZy1kZXZlbDoKPiA+IEEgZmlsZSBmb3JtYXQgaXMgZGVzY3Jp YmVkIGluIEJsdWV0b290aCBTSUcgTEMzIGFuZCBFVFNJIFRTIDEwMyA2MzQsIGZvcgo+ID4gdGVz dCBwdXJwb3NlLiBUaGlzIGlzIHRoZSBmb3JtYXQgaW1wbGVtZW50ZWQgaGVyZS4KPiA+Cj4gPiBT aWduZWQtb2ZmLWJ5OiBBbnRvaW5lIFNvdWxpZXIgPGFzb3VsaWVyQGdvb2dsZS5jb20+Cj4gPiAt LS0KPiA+ICBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgfCAgIDEgKwo+ID4gIGRvYy9tdXhlcnMu dGV4aSAgICAgICAgICB8ICAgNiArKwo+ID4gIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAg MiArCj4gPiAgbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jIHwgICAyICsKPiA+ICBsaWJhdmZvcm1h dC9sYzNkZWMuYyAgICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiAgbGliYXZmb3JtYXQvbGMzZW5jLmMgICAgIHwgMTAwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMjM4IGluc2VydGlvbnMoKykKPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvbGMzZGVjLmMKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZmb3JtYXQvbGMzZW5jLmMKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvQ2hhbmdl bG9nIGIvQ2hhbmdlbG9nCj4gPiBpbmRleCA4M2E0Y2Y3ODg4Li4wOGMyMDBhNDFkIDEwMDY0NAo+ ID4gLS0tIGEvQ2hhbmdlbG9nCj4gPiArKysgYi9DaGFuZ2Vsb2cKPiA+IEBAIC0yLDYgKzIsNyBA QCBFbnRyaWVzIGFyZSBzb3J0ZWQgY2hyb25vbG9naWNhbGx5IGZyb20gb2xkZXN0IHRvCj4geW91 bmdlc3Qgd2l0aGluIGVhY2ggcmVsZWFzZSwKPiA+ICByZWxlYXNlcyBhcmUgc29ydGVkIGZyb20g eW91bmdlc3QgdG8gb2xkZXN0Lgo+ID4KPiA+ICB2ZXJzaW9uIDxuZXh0PjoKPiA+ICstIExDMy9M QzNwbHVzIGRlbXV4ZXIgYW5kIG11eGVyCj4gPiAgLSBMQzMvTEMzcGx1cyBkZWNvZGluZy9lbmNv ZGluZyB1c2luZyBleHRlcm5hbCBsaWJyYXJ5IGxpYmxjMwo+ID4KPiA+Cj4gPiBkaWZmIC0tZ2l0 IGEvZG9jL211eGVycy50ZXhpIGIvZG9jL211eGVycy50ZXhpCj4gPiBpbmRleCBhMTBhOGUyMTZm Li45Njg3NzQ2YzMwIDEwMDY0NAo+ID4gLS0tIGEvZG9jL211eGVycy50ZXhpCj4gPiArKysgYi9k b2MvbXV4ZXJzLnRleGkKPiA+IEBAIC0yNjEyLDYgKzI2MTIsMTIgQEAgV2ViREFWIHNlcnZlciBl dmVyeSBzZWNvbmQ6Cj4gPiAgZmZtcGVnIC1mIHgxMWdyYWIgLWZyYW1lcmF0ZSAxIC1pIDowLjAg LXE6diA2IC11cGRhdGUgMSAtcHJvdG9jb2xfb3B0cwo+IG1ldGhvZD1QVVQgaHR0cDovL2V4YW1w bGUuY29tL2Rlc2t0b3AuanBnCj4gPiAgQGVuZCBleGFtcGxlCj4gPgo+ID4gK0BzZWN0aW9uIGxj Mwo+ID4gK0JsdWV0b290aCBTSUcgTG93IENvbXBsZXhpdHkgQ29tbXVuaWNhdGlvbiBDb2RlYyBh dWRpbyAoTEMzKSwgb3IKPiA+ICtFVFNJIFRTIDEwMyA2MzQgTG93IENvbXBsZXhpdHkgQ29tbXVu aWNhdGlvbiBDb2RlYyBwbHVzIChMQzNwbHVzKS4KPiA+ICsKPiA+ICtUaGlzIG11eGVyIGFjY2Vw dHMgYSBzaW5nbGUgQGNvZGV7bGMzfSBhdWRpbyBzdHJlYW0uCj4gPiArCj4gPiAgQHNlY3Rpb24g bWF0cm9za2EKPiA+Cj4gPiAgTWF0cm9za2EgY29udGFpbmVyIG11eGVyLgo+ID4gZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiA+IGluZGV4 IDQ0YWE0ODUwMjkuLjQ5NjFjNDI4NTIgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmZvcm1hdC9NYWtl ZmlsZQo+ID4gKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiA+IEBAIC0zMzIsNiArMzMyLDgg QEAgT0JKUy0kKENPTkZJR19LVkFHX0RFTVVYRVIpICAgICAgICAgICAgICArPSBrdmFnLm8KPiA+ ICBPQkpTLSQoQ09ORklHX0tWQUdfTVVYRVIpICAgICAgICAgICAgICAgICs9IGt2YWcubyByYXdl bmMubwo+ID4gIE9CSlMtJChDT05GSUdfTEFGX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbGFm ZGVjLm8KPiA+ICBPQkpTLSQoQ09ORklHX0xBVE1fTVVYRVIpICAgICAgICAgICAgICAgICs9IGxh dG1lbmMubyByYXdlbmMubwo+ID4gK09CSlMtJChDT05GSUdfTEMzX0RFTVVYRVIpICAgICAgICAg ICAgICAgKz0gbGMzZGVjLm8KPiA+ICtPQkpTLSQoQ09ORklHX0xDM19NVVhFUikgICAgICAgICAg ICAgICAgICs9IGxjM2VuYy5vCj4gPiAgT0JKUy0kKENPTkZJR19MTUxNNF9ERU1VWEVSKSAgICAg ICAgICAgICArPSBsbWxtNC5vCj4gPiAgT0JKUy0kKENPTkZJR19MT0FTX0RFTVVYRVIpICAgICAg ICAgICAgICArPSBsb2FzZGVjLm8gcmF3ZGVjLm8KPiA+ICBPQkpTLSQoQ09ORklHX0xVT0RBVF9E RU1VWEVSKSAgICAgICAgICAgICs9IGx1b2RhdGRlYy5vCj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZm b3JtYXQvYWxsZm9ybWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4gPiBpbmRleCA5 ZGY0MmJiODdhLi4wYjM2YTdjM2ViIDEwMDY0NAo+ID4gLS0tIGEvbGliYXZmb3JtYXQvYWxsZm9y bWF0cy5jCj4gPiArKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKPiA+IEBAIC0yNTIsNiAr MjUyLDggQEAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2t2YWdfZGVtdXhlcjsKPiA+ ICBleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfa3ZhZ19tdXhlcjsKPiA+ICBleHRlcm4g Y29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfbGFmX2RlbXV4ZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZG T3V0cHV0Rm9ybWF0IGZmX2xhdG1fbXV4ZXI7Cj4gPiArZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3Jt YXQgIGZmX2xjM19kZW11eGVyOwo+ID4gK2V4dGVybiBjb25zdCBGRk91dHB1dEZvcm1hdCBmZl9s YzNfbXV4ZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2xtbG00X2RlbXV4 ZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2xvYXNfZGVtdXhlcjsKPiA+ ICBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfbHVvZGF0X2RlbXV4ZXI7Cj4gPiBkaWZm IC0tZ2l0IGEvbGliYXZmb3JtYXQvbGMzZGVjLmMgYi9saWJhdmZvcm1hdC9sYzNkZWMuYwo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLjcyMzJlOTg0N2UKPiA+ IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYmF2Zm9ybWF0L2xjM2RlYy5jCj4gPiBAQCAtMCww ICsxLDEyNyBAQAo+ID4gKy8qCj4gPiArICogTEMzIGRlbXV4ZXIKPiA+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMjQgIEFudG9pbmUgU291bGllciA8YXNvdWxpZXJAZ29vZ2xlLmNvbT4KPiA+ICsgKgo+ ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+ICsgKgo+ID4gKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiA+ICsg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCj4gPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyCj4gPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiArICoKPiA+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiA+ICsg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ICsgKiBM aWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCj4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gPiArICovCj4gPiArCj4gPiArLyoq Cj4gPiArICogQGZpbGUKPiA+ICsgKiBCYXNlZCBvbiB0aGUgZmlsZSBmb3JtYXQgc3BlY2lmaWVk IGJ5IDoKPiA+ICsgKgo+ID4gKyAqIC0gQmx1ZXRvb3RoIFNJRyAtIExvdyBDb21wbGV4aXR5IENv bW11bmljYXRpb24gQ29kZWMgVGVzdCBTdWl0ZQo+ID4gKyAqCj4gaHR0cHM6Ly93d3cuYmx1ZXRv b3RoLm9yZy9kb2NtYW4vaGFuZGxlcnMvZG93bmxvYWRkb2MuYXNoeD9kb2NfaWQ9NTAyMzAxCj4g PiArICogICAzLjIuOC4yIFJlZmVyZW5jZSBMQzMgQ29kZWMgQml0c3RyZWFtIEZvcm1hdAo+ID4g KyAqCj4gPiArICogLSBFVFNJIFRJIDEwMyA2MzQgVjEuNC4xIC0gTG93IENvbXBsZXhpdHkgQ29t bXVuaWNhdGlvbiBDb2RlYyBwbHVzCj4gPiArICoKPiBodHRwczovL3d3dy5ldHNpLm9yZy9kZWxp dmVyL2V0c2lfdHMvMTAzNjAwXzEwMzY5OS8xMDM2MzQvMDEuMDQuMDFfNjAvdHNfMTAzNjM0djAx MDQwMXAucGRmCj4gPiArICogICBMQzNwbHVzIGNvbmZvcm1hbmNlIHNjcmlwdCBwYWNrYWdlCj4g PiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImxpYmF2Y29kZWMvcGFja2V0LmgiCj4gPiArI2lu Y2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSAiYXZm b3JtYXQuaCIKPiA+ICsjaW5jbHVkZSAiYXZpby5oIgo+ID4gKyNpbmNsdWRlICJkZW11eC5oIgo+ ID4gKyNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ID4gKwo+ID4gK3R5cGVkZWYgc3RydWN0IExDM0Rl bXV4Q29udGV4dCB7Cj4gPiArICAgIGludCBmcmFtZV9zYW1wbGVzOwo+ID4gK30gTEMzRGVtdXhD b250ZXh0Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbGMzX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29u dGV4dCAqcykKPiA+ICt7Cj4gPiArICAgIExDM0RlbXV4Q29udGV4dCAqbGMzID0gcy0+cHJpdl9k YXRhOwo+ID4gKyAgICBBVlN0cmVhbSAqc3QgPSBOVUxMOwo+ID4gKyAgICB1aW50MTZfdCB0YWcs IGhkcl9zaXplOwo+ID4gKyAgICB1aW50MTZfdCBmcmFtZV8xMHVzOwo+ID4gKyAgICB1aW50MzJf dCBsZW5ndGg7Cj4gPiArICAgIGludCBlcF9tb2RlLCBocl9tb2RlOwo+ID4gKyAgICBpbnQgc3Jh dGVfaHosIGNoYW5uZWxzLCBiaXRfcmF0ZTsKPiA+ICsgICAgaW50IG51bV9leHRyYV9wYXJhbXMs IHJldDsKPiA+ICsKPiA+ICsgICAgdGFnID0gYXZpb19yYjE2KHMtPnBiKTsKPiA+ICsgICAgaGRy X3NpemUgPSBhdmlvX3JsMTYocy0+cGIpOwo+ID4gKwo+ID4gKyAgICBpZiAodGFnICE9IDB4MWNj YyB8fCBoZHJfc2l6ZSA8IDkgKiBzaXplb2YodWludDE2X3QpKQo+ID4gKyAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gPiArCj4gPiArICAgIG51bV9leHRyYV9wYXJhbXMgPSBo ZHJfc2l6ZSAvIHNpemVvZih1aW50MTZfdCkgLSA5Owo+ID4gKwo+ID4gKyAgICBzcmF0ZV9oeiAg ID0gYXZpb19ybDE2KHMtPnBiKSAqIDEwMDsKPiA+ICsgICAgYml0X3JhdGUgICA9IGF2aW9fcmwx NihzLT5wYikgKiAxMDA7Cj4gPiArICAgIGNoYW5uZWxzICAgPSBhdmlvX3JsMTYocy0+cGIpOwo+ ID4gKyAgICBmcmFtZV8xMHVzID0gYXZpb19ybDE2KHMtPnBiKTsKPiA+ICsgICAgZXBfbW9kZSAg ICA9IGF2aW9fcmwxNihzLT5wYikgIT0gMDsKPiA+ICsgICAgbGVuZ3RoICAgICA9IGF2aW9fcmwz MihzLT5wYik7Cj4gPiArICAgIGhyX21vZGUgICAgPSBudW1fZXh0cmFfcGFyYW1zID49IDEgJiYg YXZpb19ybDE2KHMtPnBiKTsKPiA+ICsKPiA+ICsgICAgc3QgPSBhdmZvcm1hdF9uZXdfc3RyZWFt KHMsIE5VTEwpOwo+ID4gKyAgICBpZiAoIXN0KQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKPiA+ICsKPiA+ICsgICAgYXZwcml2X3NldF9wdHNfaW5mbyhzdCwgNjQsIDEsIHNy YXRlX2h6KTsKPiA+ICsgICAgc3QtPmR1cmF0aW9uID0gbGVuZ3RoOwo+ID4gKwo+ID4gKyAgICBz dC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPSBBVk1FRElBX1RZUEVfQVVESU87Cj4gPiArICAgIHN0 LT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9MQzM7Cj4gPiArICAgIHN0LT5jb2Rl Y3Bhci0+c2FtcGxlX3JhdGUgPSBzcmF0ZV9oejsKPiA+ICsgICAgc3QtPmNvZGVjcGFyLT5iaXRf cmF0ZSA9IGJpdF9yYXRlOwo+ID4gKyAgICBzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFu bmVscyA9IGNoYW5uZWxzOwo+ID4gKwo+ID4gKyAgICBpZiAoKHJldCA9IGZmX2FsbG9jX2V4dHJh ZGF0YShzdC0+Y29kZWNwYXIsIDEwKSkgPCAwKSB7Cj4gPiArICAgICAgICBhdl9sb2cocywgQVZf TE9HX0VSUk9SLCAiQ291bGQgbm90IGFsbG9jYXRlIGV4dHJhZGF0YS5cbiIpOwo+Cj4gU3RpbGwg cG9pbnRsZXNzIGVycm9yIG1lc3NhZ2UuCj4KPiA+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gPiAr ICAgIH0KPiA+ICsKPiA+ICsgICAgQVZfV0wxNihzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSArIDAs IGZyYW1lXzEwdXMpOwo+ID4gKyAgICBBVl9XTDE2KHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhICsg MiwgZXBfbW9kZSk7Cj4gPiArICAgIEFWX1dMMTYoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyA0 LCBocl9tb2RlKTsKPiA+ICsgICAgQVZfV0wzMihzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSArIDYs IGxlbmd0aCk7Cj4gPiArCj4gPiArICAgIGxjMy0+ZnJhbWVfc2FtcGxlcyA9IGF2X3Jlc2NhbGUo ZnJhbWVfMTB1cywgc3JhdGVfaHosIDEwMCoxMDAwKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbGMzX3JlYWRfcGFja2V0KEFWRm9ybWF0Q29u dGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKPiA+ICt7Cj4gPiArICAgIExDM0RlbXV4Q29udGV4dCAq bGMzID0gcy0+cHJpdl9kYXRhOwo+ID4gKyAgICBBVklPQ29udGV4dCAqcGIgPSBzLT5wYjsKPiA+ ICsgICAgaW50NjRfdCBwb3MgPSBhdmlvX3RlbGwocGIpOwo+ID4gKyAgICBpbnQgcmV0Owo+ID4g Kwo+ID4gKyAgICByZXQgPSBhdl9nZXRfcGFja2V0KHMtPnBiLCBwa3QsIGF2aW9fcmwxNihwYikp Owo+ID4gKyAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4g PiArICAgIHBrdC0+cG9zID0gcG9zOwo+ID4gKyAgICBwa3QtPmR1cmF0aW9uID0gbGMzLT5mcmFt ZV9zYW1wbGVzOwo+Cj4gVGhpcyBzaG91bGQgc2V0IEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUyBz aWRlIGRhdGEgdG8gdGhlIHBhY2tldCB0aGF0Cj4gY3Jvc3NlcyB0aGUgbnVtYmVyIG9mIHNhbXBs ZXMgc3BlY2lmaWVkIGluIHRoZSBoZWFkZXIuCj4KPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4g PiArfQo+ID4gKwo+ID4gK2NvbnN0IEZGSW5wdXRGb3JtYXQgZmZfbGMzX2RlbXV4ZXIgPSB7Cj4g PiArICAgIC5wLm5hbWUgICAgICAgICA9ICJsYzMiLAo+ID4gKyAgICAucC5sb25nX25hbWUgICAg PSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiTEMzIChMb3cgQ29tcGxleGl0eQo+IENvbW11bmljYXRp b24gQ29kZWMpIiksCj4gPiArICAgIC5wLmV4dGVuc2lvbnMgICA9ICJsYzMiLAo+ID4gKyAgICAu cC5mbGFncyAgICAgICAgPSBBVkZNVF9HRU5FUklDX0lOREVYLAo+ID4gKyAgICAucHJpdl9kYXRh X3NpemUgPSBzaXplb2YoTEMzRGVtdXhDb250ZXh0KSwKPiA+ICsgICAgLnJlYWRfaGVhZGVyICAg ID0gbGMzX3JlYWRfaGVhZGVyLAo+ID4gKyAgICAucmVhZF9wYWNrZXQgICAgPSBsYzNfcmVhZF9w YWNrZXQsCj4gPiArfTsKPiA+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9sYzNlbmMuYyBiL2xp YmF2Zm9ybWF0L2xjM2VuYy5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAw MDAwMDAwMC4uZTc2ODIxMmY2Mwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliYXZmb3Jt YXQvbGMzZW5jLmMKPiA+IEBAIC0wLDAgKzEsMTAwIEBACj4gPiArLyoKPiA+ICsgKiBMQzMgbXV4 ZXIKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjQgIEFudG9pbmUgU291bGllciA8YXNvdWxpZXJA Z29vZ2xlLmNvbT4KPiA+ICsgKgo+ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K PiA+ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKPiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gPiArICogdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4g PiArICoKPiA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPiArICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4g KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4g PiArICovCj4gPiArCj4gPiArLyoqCj4gPiArICogQGZpbGUKPiA+ICsgKiBCYXNlZCBvbiB0aGUg ZmlsZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IDoKPiA+ICsgKgo+ID4gKyAqIC0gQmx1ZXRvb3RoIFNJ RyAtIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24gQ29kZWMgVGVzdCBTdWl0ZQo+ID4gKyAq Cj4gaHR0cHM6Ly93d3cuYmx1ZXRvb3RoLm9yZy9kb2NtYW4vaGFuZGxlcnMvZG93bmxvYWRkb2Mu YXNoeD9kb2NfaWQ9NTAyMzAxCj4gPiArICogICAzLjIuOC4yIFJlZmVyZW5jZSBMQzMgQ29kZWMg Qml0c3RyZWFtIEZvcm1hdAo+ID4gKyAqCj4gPiArICogLSBFVFNJIFRJIDEwMyA2MzQgVjEuNC4x IC0gTG93IENvbXBsZXhpdHkgQ29tbXVuaWNhdGlvbiBDb2RlYyBwbHVzCj4gPiArICoKPiBodHRw czovL3d3dy5ldHNpLm9yZy9kZWxpdmVyL2V0c2lfdHMvMTAzNjAwXzEwMzY5OS8xMDM2MzQvMDEu MDQuMDFfNjAvdHNfMTAzNjM0djAxMDQwMXAucGRmCj4gPiArICogICBMQzNwbHVzIGNvbmZvcm1h bmNlIHNjcmlwdCBwYWNrYWdlCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImxpYmF2dXRp bC9pbnRyZWFkd3JpdGUuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSAiYXZmb3JtYXQuaCIKPiA+ICsj aW5jbHVkZSAiYXZpby5oIgo+ID4gKyNpbmNsdWRlICJtdXguaCIKPiA+ICsjaW5jbHVkZSAiaW50 ZXJuYWwuaCIKPiA+ICsKPiA+ICtzdGF0aWMgYXZfY29sZCBpbnQgbGMzX2luaXQoQVZGb3JtYXRD b250ZXh0ICpzKQo+ID4gK3sKPiA+ICsgICAgaWYgKHMtPm5iX3N0cmVhbXMgIT0gMSkgewo+ID4g KyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIlRoaXMgbXV4ZXIgb25seSBzdXBwb3J0 cyBhIHNpbmdsZQo+IHN0cmVhbS5cbiIpOwo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIGludCBsYzNfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiA+ICt7 Cj4gPiArICAgIEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbMF07Cj4gPiArICAgIGludCBjaGFu bmVscyA9IHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOwo+ID4gKyAgICBpbnQg c3JhdGVfaHogPSBzdC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlOwo+ID4gKyAgICBpbnQgYml0X3Jh dGUgPSBzdC0+Y29kZWNwYXItPmJpdF9yYXRlOwo+ID4gKyAgICBpbnQgZnJhbWVfdXMsIGVwX21v ZGUsIGhyX21vZGU7Cj4gPiArICAgIHVpbnQzMl90IG5iX3NhbXBsZXMgPSBhdl9yZXNjYWxlX3Eo Cj4gPiArICAgICAgICBzdC0+ZHVyYXRpb24sIHN0LT50aW1lX2Jhc2UsIChBVlJhdGlvbmFsKXsg MSwgc3JhdGVfaHogfSk7Cj4gPiArCj4gPiArICAgIGlmIChzdC0+Y29kZWNwYXItPmV4dHJhZGF0 YV9zaXplIDwgNikKPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4g Kwo+ID4gKyAgICBmcmFtZV91cyA9IEFWX1JMMTYoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyAw KSAqIDEwOwo+ID4gKyAgICBlcF9tb2RlID0gQVZfUkwxNihzdC0+Y29kZWNwYXItPmV4dHJhZGF0 YSArIDIpICE9IDA7Cj4gPiArICAgIGhyX21vZGUgPSBBVl9STDE2KHN0LT5jb2RlY3Bhci0+ZXh0 cmFkYXRhICsgNCkgIT0gMDsKPiA+ICsKPiA+ICsgICAgYXZpb193YjE2KHMtPnBiLCAweDFjY2Mp Owo+ID4gKyAgICBhdmlvX3dsMTYocy0+cGIsICg5ICsgaHJfbW9kZSkgKiBzaXplb2YodWludDE2 X3QpKTsKPiA+ICsgICAgYXZpb193bDE2KHMtPnBiLCBzcmF0ZV9oeiAvIDEwMCk7Cj4gPiArICAg IGF2aW9fd2wxNihzLT5wYiwgYml0X3JhdGUgLyAxMDApOwo+ID4gKyAgICBhdmlvX3dsMTYocy0+ cGIsIGNoYW5uZWxzKTsKPiA+ICsgICAgYXZpb193bDE2KHMtPnBiLCBmcmFtZV91cyAvIDEwKTsK PiA+ICsgICAgYXZpb193bDE2KHMtPnBiLCBlcF9tb2RlKTsKPiA+ICsgICAgYXZpb193bDMyKHMt PnBiLCBuYl9zYW1wbGVzKTsKPiA+ICsgICAgaWYgKGhyX21vZGUpCj4gPiArICAgICAgICBhdmlv X3dsMTYocy0+cGIsIGhyX21vZGUpOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGludCBsYzNfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywg QVZQYWNrZXQgKnBrdCkKPiA+ICt7Cj4gPiArICAgIGF2aW9fd2wxNihzLT5wYiwgcGt0LT5zaXpl KTsKPiA+ICsgICAgYXZpb193cml0ZShzLT5wYiwgcGt0LT5kYXRhLCBwa3QtPnNpemUpOwo+ID4g KyAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZf bGMzX211eGVyID0gewo+ID4gKyAgICAucC5uYW1lICAgICAgICA9ICJsYzMiLAo+ID4gKyAgICAu cC5sb25nX25hbWUgICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJMQzMgKExvdyBDb21wbGV4aXR5 Cj4gQ29tbXVuaWNhdGlvbiBDb2RlYykiKSwKPiA+ICsgICAgLnAuZXh0ZW5zaW9ucyAgPSAibGMz IiwKPiA+ICsgICAgLnAuYXVkaW9fY29kZWMgPSBBVl9DT0RFQ19JRF9MQzMsCj4gPiArICAgIC5w LnZpZGVvX2NvZGVjID0gQVZfQ09ERUNfSURfTk9ORSwKPiA+ICsgICAgLnAuZmxhZ3MgICAgICAg PSBBVkZNVF9OT1RJTUVTVEFNUFMsCj4gPiArICAgIC5pbml0ICAgICAgICAgID0gbGMzX2luaXQs Cj4gPiArICAgIC53cml0ZV9oZWFkZXIgID0gbGMzX3dyaXRlX2hlYWRlciwKPiA+ICsgICAgLndy aXRlX3BhY2tldCAgPSBsYzNfd3JpdGVfcGFja2V0LAo+ID4gK307Cj4KPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5n IGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1 YmplY3QgInVuc3Vic2NyaWJlIi4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoK VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1y ZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==