From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTP id 226CA428B5
	for <ffmpegdev@gitmailbox.com>; Tue,  5 Apr 2022 16:37:19 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0B39A68B158;
	Tue,  5 Apr 2022 19:37:17 +0300 (EEST)
Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com
 [209.85.221.54])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2EE6168AF88
 for <ffmpeg-devel@ffmpeg.org>; Tue,  5 Apr 2022 19:37:11 +0300 (EEST)
Received: by mail-wr1-f54.google.com with SMTP id d29so14138314wra.10
 for <ffmpeg-devel@ffmpeg.org>; Tue, 05 Apr 2022 09:37:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=Uwl4rGscYZya0SSdCb7aOij6/a4nXA81+IeOkf6RY5o=;
 b=IUcfLpSOiZHe2H4lHg7D6Yj64gVtIWc9Iv4M2xvUY/Sd1wt4KUUw5w6ysxFsU1AQEN
 IDe0bL7RLFODtm1mX1P9Dl6ZPFbYEOzWetB7EmSeMZjfmfIzqYKDHxY46mffWL/N9krg
 wnvctSMTRxtR4Yph+ZwmboIIRGmKf8rma4/+LnZ6CAiixycsTmfm0nVjqcORda2U4fRG
 QFIbEcLj+Rf+28uRlvRIbC7umw6HZgljnJHHKQkc9AlWxusU8N87Prh0DOq7pzHqlhLp
 GX1tapZY1Ff7qSBLrrOnC7lJr2pfJ4XSU8K6DPLsaLc2jqsJGhBaOSxrRSUtdTqTbzln
 irHg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=Uwl4rGscYZya0SSdCb7aOij6/a4nXA81+IeOkf6RY5o=;
 b=Ax+Lad9Wn+Ia3vnpTtOc+Ubk4ZE+zpJbDhc43aktNTpKWlKmFU4z/q2S4Ogk+upjyv
 5ZN19rfU9CNYXLa0S+35m8cnYEVLoxwrZFmwKv5l26rQ0NvWOHL0s6kmV3zHzkbu+Dzg
 ZwWJ0pCQWib6fnoUXu0SQj0x2dPzfmCl4cM/xyoWnxaBLHH+TqKRj6Dth++HC9NNrLiE
 BKwx3d/UkPrlJxpu01K0JUmGIeAezaMJa+REn6NUyOj2qjxuTvzWmYXHNdQkTZ1LwvYQ
 luwg3c26AKNOnRWnfdN2jGPwL4YD8EVR5aCWoAwC+h62bVkvlKd6HuUGGTQ2vslkxEox
 Kvcg==
X-Gm-Message-State: AOAM531YEzOUqp4gN6cPEAcBWdM5yPukAINZ2ZZ78Vz1sB31AiGHQeoG
 VBLDziYWkwQPH0Pi0gTCXNtAIovHuirrFoj0woQ0aJHj
X-Google-Smtp-Source: ABdhPJwSLlLwbB+0jVbqfVXBed99icXeOmJtYJpP9rwXB6c1dzXhrMnN0oAO5zXerz8hUa9rlNkSdn/f+dk181nnTUI=
X-Received: by 2002:a5d:64aa:0:b0:206:132a:aeb5 with SMTP id
 m10-20020a5d64aa000000b00206132aaeb5mr3359005wrp.561.1649176630022; Tue, 05
 Apr 2022 09:37:10 -0700 (PDT)
MIME-Version: 1.0
References: <20220403223825.26764-1-markg85@gmail.com>
 <20220403223825.26764-2-markg85@gmail.com>
In-Reply-To: <20220403223825.26764-2-markg85@gmail.com>
From: Mark Gaiser <markg85@gmail.com>
Date: Tue, 5 Apr 2022 18:35:56 +0200
Message-ID: <CAPd6JnF72qG-x7sS67bafpirX0dff189CDWLwWF8yv06zoOh4A@mail.gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: Re: [FFmpeg-devel] [PATCH v12 1/1] avformat: Add IPFS protocol
 support.
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: michael@niedermayer.cc, =?UTF-8?Q?Tomas_H=C3=A4rdin?= <tjoppen@acc.umu.se>,
 Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/CAPd6JnF72qG-x7sS67bafpirX0dff189CDWLwWF8yv06zoOh4A@mail.gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

T24gTW9uLCBBcHIgNCwgMjAyMiBhdCAxMjozOSBBTSBNYXJrIEdhaXNlciA8bWFya2c4NUBnbWFp
bC5jb20+IHdyb3RlOgoKPiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3I6Cj4gLSBmZnBsYXkg
aXBmczovLzxjaWQ+Cj4gLSBmZnBsYXkgaXBuczovLzxjaWQ+Cj4KPiBJUEZTIGRhdGEgY2FuIGJl
IHBsYXllZCBmcm9tIHNvIGNhbGxlZCAiaXBmcyBnYXRld2F5cyIuCj4gQSBnYXRld2F5IGlzIGVz
c2VudGlhbGx5IGEgd2Vic2VydmVyIHRoYXQgZ2l2ZXMgYWNjZXNzIHRvIHRoZQo+IGRpc3RyaWJ1
dGVkIElQRlMgbmV0d29yay4KPgo+IFRoaXMgcHJvdG9jb2wgc3VwcG9ydCAoaXBmcyBhbmQgaXBu
cykgdGhlcmVmb3JlIHRyYW5zbGF0ZXMKPiBpcGZzOi8vIGFuZCBpcG5zOi8vIHRvIGEgaHR0cDov
LyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwo+IHRoZW4gaGFuZGxlZCBieSB0aGUgaHR0cCBw
cm90b2NvbC4gSXQgY291bGQgYWxzbyBiZSBodHRwcwo+IGRlcGVuZGluZyBvbiB0aGUgZ2F0ZXdh
eSBwcm92aWRlZC4KPgo+IFRvIHVzZSB0aGlzIHByb3RvY29sLCBhIGdhdGV3YXkgbXVzdCBiZSBw
cm92aWRlZC4KPiBJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0byBmaW5kIGl0IGluIHlv
dXIKPiAkSE9NRS8uaXBmcy9nYXRld2F5IGZpbGUuIFRoZSB3YXlzIHRvIHNldCBpdCBtYW51YWxs
eSBhcmU6Cj4gMS4gRGVmaW5lIGEgLWdhdGV3YXkgPHVybD4gdG8gdGhlIGdhdGV3YXkuCj4gMi4g
RGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8gdGhlIGdhdGV3
YXkuCj4gMy4gRGVmaW5lICRJUEZTX1BBVEggYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEg
cGF0aC4KPiA0LiBIYXZlIElQRlMgcnVubmluZyBpbiB5b3VyIGxvY2FsIHVzZXIgZm9sZGVyICh1
bmRlciAkSE9NRS8uaXBmcykuCj4KPiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEdhaXNlciA8bWFya2c4
NUBnbWFpbC5jb20+Cj4gLS0tCj4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCAgIDIgKwo+
ICBkb2MvcHJvdG9jb2xzLnRleGkgICAgICAgIHwgIDMwICsrKysKPiAgbGliYXZmb3JtYXQvTWFr
ZWZpbGUgICAgICB8ICAgMiArCj4gIGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgfCAzMjYgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZmb3JtYXQvcHJvdG9j
b2xzLmMgICB8ICAgMiArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlvbnMoKykKPiAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPgo+IGRpZmYgLS1n
aXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPiBpbmRleCBlNGQzNmFhNjM5Li41NWFmOTA5NTdh
IDEwMDc1NQo+IC0tLSBhL2NvbmZpZ3VyZQo+ICsrKyBiL2NvbmZpZ3VyZQo+IEBAIC0zNTc5LDYg
KzM1NzksOCBAQCB1ZHBfcHJvdG9jb2xfc2VsZWN0PSJuZXR3b3JrIgo+ICB1ZHBsaXRlX3Byb3Rv
Y29sX3NlbGVjdD0ibmV0d29yayIKPiAgdW5peF9wcm90b2NvbF9kZXBzPSJzeXNfdW5faCIKPiAg
dW5peF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4gK2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJo
dHRwc19wcm90b2NvbCIKPiAraXBuc19wcm90b2NvbF9zZWxlY3Q9Imh0dHBzX3Byb3RvY29sIgo+
Cj4gICMgZXh0ZXJuYWwgbGlicmFyeSBwcm90b2NvbHMKPiAgbGliYW1xcF9wcm90b2NvbF9kZXBz
PSJsaWJyYWJiaXRtcSIKPiBkaWZmIC0tZ2l0IGEvZG9jL3Byb3RvY29scy50ZXhpIGIvZG9jL3By
b3RvY29scy50ZXhpCj4gaW5kZXggZDIwN2RmMGI1Mi4uN2M5YzBhNDgwOCAxMDA2NDQKPiAtLS0g
YS9kb2MvcHJvdG9jb2xzLnRleGkKPiArKysgYi9kb2MvcHJvdG9jb2xzLnRleGkKPiBAQCAtMjAy
NSw1ICsyMDI1LDM1IEBAIGRlY29kaW5nIGVycm9ycy4KPgo+ICBAZW5kIHRhYmxlCj4KPiArQHNl
Y3Rpb24gaXBmcwo+ICsKPiArSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3Rv
Y29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzCj4gc3RvcmVkCj4gK29uIHRoZSBJUEZT
IG5ldHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRwKHMpCj4g
ZW5kcG9pbnRzLgo+ICtUaGlzIHByb3RvY29sIHdyYXBzIHRoZSBJUEZTIG5hdGl2ZSBwcm90b2Nv
bHMgKGlwZnM6Ly8gYW5kIGlwbnM6Ly8pIHRvIGJlCj4gc2VuZAo+ICt0byBzdWNoIGEgZ2F0ZXdh
eS4gVXNlcnMgY2FuIChhbmQgc2hvdWxkKSBob3N0IHRoZWlyIG93biBub2RlIHdoaWNoIG1lYW5z
Cj4gdGhpcwo+ICtwcm90b2NvbCB3aWxsIHVzZSB5b3VyIGxvY2FsIG1hY2hpbmUgZ2F0ZXdheSB0
byBhY2Nlc3MgZmlsZXMgb24gdGhlIElQRlMKPiBuZXR3b3JrLgo+ICsKPiArSWYgYSB1c2VyIGRv
ZXNuJ3QgaGF2ZSBhIG5vZGUgb2YgdGhlaXIgb3duIHRoZW4gdGhlIHB1YmxpYyBnYXRld2F5Cj4g
ZHdlYi5saW5rIGlzCj4gK3VzZWQgYnkgZGVmYXVsdC4KPiArCj4gK1lvdSBjYW4gdXNlIHRoaXMg
cHJvdG9jb2wgaW4gMiB3YXlzLiBVc2luZyBJUEZTOgo+ICtAZXhhbXBsZQo+ICtmZnBsYXkgaXBm
czovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnloZnp1NXJ3bzc0TUVrVkRZQW1GNVQKPiArQGVu
ZCBleGFtcGxlCj4gKwo+ICtPciB0aGUgSVBOUyBwcm90b2NvbCAoSVBOUyBpcyBtdXRhYmxlIElQ
RlMpOgo+ICtAZXhhbXBsZQo+ICtmZnBsYXkgaXBuczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBW
QnloZnp1NXJ3bzc0TUVrVkRZQW1GNVQKPiArQGVuZCBleGFtcGxlCj4gKwo+ICtZb3UgY2FuIGFs
c28gY2hhbmdlIHRoZSBnYXRld2F5IHRvIGJlIHVzZWQ6Cj4gKwo+ICtAdGFibGUgQG9wdGlvbgo+
ICsKPiArQGl0ZW0gZ2F0ZXdheQo+ICtEZWZpbmVzIHRoZSBnYXRld2F5IHRvIHVzZS4gV2hlbiBu
b3RoaW5nIGlzIHByb3ZpZGVkIHRoZSBwcm90b2NvbCB3aWxsCj4gZmlyc3QgdHJ5Cj4gK3lvdXIg
bG9jYWwgZ2F0ZXdheS4gSWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2VkLgo+ICsK
PiArQGVuZCB0YWJsZQo+Cj4gIEBjIG1hbiBlbmQgUFJPVE9DT0xTCj4gZGlmZiAtLWdpdCBhL2xp
YmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiBpbmRleCBkNzE4MmQ2
YmQ4Li5lMzIzM2ZkN2FjIDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4gKysr
IGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiBAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChDT05G
SUdfU1JUUF9QUk9UT0NPTCkgICAgICAgICAgICAgKz0KPiBzcnRwcHJvdG8ubyBzcnRwLm8KPiAg
T0JKUy0kKENPTkZJR19TVUJGSUxFX1BST1RPQ09MKSAgICAgICAgICArPSBzdWJmaWxlLm8KPiAg
T0JKUy0kKENPTkZJR19URUVfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRl
ZV9jb21tb24ubwo+ICBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NPTCkgICAgICAgICAgICAgICs9
IHRjcC5vCj4gK09CSlMtJChDT05GSUdfSVBGU19QUk9UT0NPTCkgICAgICAgICAgICAgKz0gaXBm
c2dhdGV3YXkubwo+ICtPQkpTLSQoQ09ORklHX0lQTlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9
IGlwZnNnYXRld2F5Lm8KPiAgVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAgICAgICAgICAgICAg
ICArPSB0bHNfZ251dGxzLm8KPiAgVExTLU9CSlMtJChDT05GSUdfTElCVExTKSAgICAgICAgICAg
ICAgICArPSB0bHNfbGlidGxzLm8KPiAgVExTLU9CSlMtJChDT05GSUdfTUJFRFRMUykgICAgICAg
ICAgICAgICArPSB0bHNfbWJlZHRscy5vCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2lwZnNn
YXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2
NDQKPiBpbmRleCAwMDAwMDAwMDAwLi5lMDFlYjJmOWEzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi
L2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPiBAQCAtMCwwICsxLDMyNiBAQAo+ICsvKgo+ICsg
KiBJUEZTIGFuZCBJUE5TIHByb3RvY29sIHN1cHBvcnQgdGhyb3VnaCBJUEZTIEdhdGV3YXkuCj4g
KyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUg
aXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsK
PiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGls
L29wdC5oIgo+ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiArI2luY2x1ZGUgIm9zX3N1cHBvcnQu
aCIKPiArI2luY2x1ZGUgInVybC5oIgo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgSVBGU0dhdGV3YXlD
b250ZXh0IHsKPiArICAgIEFWQ2xhc3MgKmNsYXNzOwo+ICsgICAgVVJMQ29udGV4dCAqaW5uZXI7
Cj4gKyAgICAvLyBJcyBmaWxsZWQgYnkgdGhlIC1nYXRld2F5IGFyZ3VtZW50IGFuZCBub3QgY2hh
bmdlZCBhZnRlci4KPiArICAgIGNoYXIgKmdhdGV3YXk7Cj4gKyAgICAvLyBJZiB0aGUgYWJvdmUg
Z2F0ZXdheSBpcyBub24gbnVsbCwgaXQgd2lsbCBiZSBjb3BpZWQgaW50byB0aGlzCj4gYnVmZmVy
Lgo+ICsgICAgLy8gRWxzZSB0aGlzIGJ1ZmZlciB3aWxsIGNvbnRhaW4gdGhlIGF1dG8gZGV0ZWN0
ZWQgZ2F0ZXdheS4KPiArICAgIC8vIEluIGVpdGhlciBjYXNlLCB0aGUgZ2F0ZXdheSB0byB1c2Ug
d2lsbCBiZSBpbiB0aGlzIGJ1ZmZlci4KPiArICAgIGNoYXIgZ2F0ZXdheV9idWZmZXJbUEFUSF9N
QVhdOwo+ICt9IElQRlNHYXRld2F5Q29udGV4dDsKPiArCj4gKy8vIEEgYmVzdC1lZmZvcnQgd2F5
IHRvIGZpbmQgdGhlIElQRlMgZ2F0ZXdheS4KPiArLy8gT25seSB0aGUgbW9zdCBhcHByb3BpYXRl
IGdhdGV3YXkgaXMgc2V0LiBJdCdzIG5vdCBhY3R1YWxseSByZXF1ZXN0ZWQKPiArLy8gKGh0dHAg
Y2FsbCkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBzbG93ZG93biBpbiBzdGFydHVwLiBBIHBvdGVu
dGlhbAo+IHRpbWVvdXQKPiArLy8gaXMgaGFuZGxlZCBieSB0aGUgSFRUUCBwcm90b2NvbC4KPiAr
c3RhdGljIGludCBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoVVJMQ29udGV4dCAqaCkKPiArewo+ICsg
ICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+ICsgICAgY2hhciBpcGZz
X2Z1bGxfZGF0YV9mb2xkZXJbUEFUSF9NQVhdOwo+ICsgICAgY2hhciBpcGZzX2dhdGV3YXlfZmls
ZVtQQVRIX01BWF07Cj4gKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKPiArICAgIGludCBzdGF0X3JldCA9
IDA7Cj4gKyAgICBpbnQgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgRklMRSAqZ2F0ZXdh
eV9maWxlID0gTlVMTDsKPiArCj4gKyAgICAvLyBUZXN0ICRJUEZTX0dBVEVXQVkuCj4gKyAgICBp
ZiAoZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7Cj4gKyAgICAgICAgaWYgKHNucHJp
bnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAo+
ICsgICAgICAgICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfR0FURVdBWSIpKSA+PQo+IHNpemVv
ZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19X
QVJOSU5HLCAiVGhlIElQRlNfR0FURVdBWSBlbnZpcm9ubWVudAo+IHZhcmlhYmxlICIKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4aW11bSBs
ZW5ndGguICIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2UgYWxs
b3cgYSBtYXggb2YgJXp1Cj4gY2hhcmFjdGVyc1xuIiwKPiArICAgICAgICAgICAgICAgICAgIHNp
emVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJ
TlZBTCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg
ICAgcmV0ID0gMTsKPiArICAgICAgICBnb3RvIGVycjsKPiArICAgIH0gZWxzZQo+ICsgICAgICAg
IGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBGU19HQVRFV0FZIGlzIGVtcHR5LlxuIik7Cj4g
Kwo+ICsgICAgLy8gV2UgbmVlZCB0byBrbm93IHRoZSBJUEZTIGZvbGRlciB0byAtIGV2ZW50dWFs
bHkgLSByZWFkIHRoZQo+IGNvbnRlbnRzIG9mCj4gKyAgICAvLyB0aGUgImdhdGV3YXkiIGZpbGUg
d2hpY2ggd291bGQgdGVsbCB1cyB0aGUgZ2F0ZXdheSB0byB1c2UuCj4gKyAgICBpZiAoZ2V0ZW52
KCJJUEZTX1BBVEgiKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJV
RywgIiRJUEZTX1BBVEggaXMgZW1wdHkuXG4iKTsKPiArCj4gKyAgICAgICAgLy8gVHJ5IHZpYSB0
aGUgaG9tZSBmb2xkZXIuCj4gKyAgICAgICAgaWYgKGdldGVudigiSE9NRSIpID09IE5VTEwpIHsK
PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiJEhPTUUgYXBwZWFycyB0
byBiZSBlbXB0eS5cbiIpOwo+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4g
KyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgLy8gVmVy
aWZ5IHRoZSBjb21wb3NlZCBwYXRoIGZpdHMuCj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNf
ZnVsbF9kYXRhX2ZvbGRlciwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCj4gKyAgICAg
ICAgICAgICAgICAgICAgICIlcy8uaXBmcy8iLCBnZXRlbnYoIkhPTUUiKSkgPj0KPiBzaXplb2Yo
aXBmc19mdWxsX2RhdGFfZm9sZGVyKSkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9H
X1dBUk5JTkcsICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUgIgo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXggcGF0aCBsZW5ndGggKCV6dSlcbiIsCj4g
KyAgICAgICAgICAgICAgICAgICBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSk7Cj4gKyAg
ICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgZ290byBlcnI7
Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvLyBTdGF0IHRoZSBmb2xkZXIuCj4gKyAgICAg
ICAgLy8gSXQgc2hvdWxkIGV4aXN0IGluIGEgZGVmYXVsdCBJUEZTIHNldHVwIHdoZW4gcnVuIGFz
IGxvY2FsIHVzZXIuCj4gKyAgICAgICAgc3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2Zv
bGRlciwgJnN0KTsKPiArCj4gKyAgICAgICAgaWYgKHN0YXRfcmV0IDwgMCkgewo+ICsgICAgICAg
ICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJVbmFibGUgdG8gZmluZCBJUEZTIGZvbGRlci4g
V2UKPiB0cmllZDpcbiIpOwo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIt
ICRJUEZTX1BBVEgsIHdoaWNoIHdhcyBlbXB0eS5cbiIpOwo+ICsgICAgICAgICAgICBhdl9sb2co
aCwgQVZfTE9HX0lORk8sICItICRIT01FLy5pcGZzIChmdWxsIHVyaTogJXMpIHdoaWNoCj4gZG9l
c24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcik7Cj4gKyAgICAgICAgICAgIHJl
dCA9IEFWRVJST1IoRU5PRU5UKTsKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAg
fQo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFf
Zm9sZGVyLAo+IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLCAiJXMiLAo+ICsgICAgICAg
ICAgICAgICAgIGdldGVudigiSVBGU19QQVRIIikpID49IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9m
b2xkZXIpKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJ
UEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKPiAiCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoLiAiCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEgbWF4IG9mICV6dQo+
IGNoYXJhY3RlcnNcbiIsCj4gKyAgICAgICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9i
dWZmZXIpKTsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAg
ICAgICBnb3RvIGVycjsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgfQo+ICsKPiArICAgIC8vIENv
cHkgdGhlIGZ1bGx5IGNvbXBvc2VkIGdhdGV3YXkgcGF0aCBpbnRvIGlwZnNfZ2F0ZXdheV9maWxl
Lgo+ICsgICAgaWYgKHNucHJpbnRmKGlwZnNfZ2F0ZXdheV9maWxlLCBzaXplb2YoaXBmc19nYXRl
d2F5X2ZpbGUpLAo+ICIlc2dhdGV3YXkiLAo+ICsgICAgICAgICAgICAgICAgIGlwZnNfZnVsbF9k
YXRhX2ZvbGRlcikgPj0gc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSkgewo+ICsgICAgICAgIGF2
X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSBwYXRoIGV4Y2Vl
ZHMgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBtYXggcGF0aCBs
ZW5ndGggKCV6dSlcbiIsCj4gKyAgICAgICAgICAgICAgIHNpemVvZihpcGZzX2dhdGV3YXlfZmls
ZSkpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiArICAgICAgICBnb3RvIGVy
cjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBHZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBnYXRld2F5
IGZpbGUuCj4gKyAgICBnYXRld2F5X2ZpbGUgPSBhdl9mb3Blbl91dGY4KGlwZnNfZ2F0ZXdheV9m
aWxlLCAiciIpOwo+ICsgICAgaWYgKCFnYXRld2F5X2ZpbGUpIHsKPiArICAgICAgICBhdl9sb2co
aCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgKGZ1bGwgdXJpOiAlcykK
PiBkb2Vzbid0IGV4aXN0LiAiCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
SXMgdGhlIGdhdGV3YXkgZW5hYmxlZD9cbiIsCj4gKyAgICAgICAgICAgICAgIGlwZnNfZ2F0ZXdh
eV9maWxlKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgICAgZ290
byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gUmVhZCBhIHNpbmdsZSBsaW5lIChmZ2V0cyBz
dG9wcyBhdCBuZXcgbGluZSBtYXJrKS4KPiArICAgIGlmICghZmdldHMoYy0+Z2F0ZXdheV9idWZm
ZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLAo+IGdhdGV3YXlfZmlsZSkpIHsKPiAr
ICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl
IChmdWxsIHVyaToKPiAlcykuXG4iLAo+ICsgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUp
Owo+ICsgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgIGdvdG8gZXJyOwo+ICsg
ICAgfQo+ICsKPiArICAgIC8vIFJlcGxhY2UgZmlyc3Qgb2NjdXJlbmNlIG9mIGVuZCBvZiBsaW5l
IHdpdGggXDAKPiArICAgIGMtPmdhdGV3YXlfYnVmZmVyW3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZm
ZXIsICJcclxuIildID0gMDsKPiArCj4gKyAgICAvLyBJZiBzdHJsZW4gZmluZHMgYW55dGhpbmcg
bG9uZ2VyIHRoZW4gMCBjaGFyYWN0ZXJzIHRoZW4gd2UgaGF2ZSBhCj4gKyAgICAvLyBwb3RlbnRp
YWwgZ2F0ZXdheSB1cmwuCj4gKyAgICBpZiAoKmMtPmdhdGV3YXlfYnVmZmVyID09ICdcMCcpIHsK
PiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZp
bGUgKGZ1bGwgdXJpOiAlcykKPiBhcHBlYXJzIHRvIGJlIGVtcHR5LiAiCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSXMgdGhlIGdhdGV3YXkgc3RhcnRlZD9cbiIsCj4gKyAg
ICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9maWxlKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9S
KEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAg
IC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29tZXRoaW5nIHRoYXQg
bG9va3MKPiB2YWxpZC4KPiArICAgICAgICByZXQgPSAxOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+
ICsgICAgfQo+ICsKPiArZXJyOgo+ICsgICAgaWYgKGdhdGV3YXlfZmlsZSkKPiArICAgICAgICBm
Y2xvc2UoZ2F0ZXdheV9maWxlKTsKPiArCj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtz
dGF0aWMgaW50IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAoVVJMQ29udGV4dCAqaCwgY29uc3QgY2hh
ciAqdXJpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBB
VkRpY3Rpb25hcnkgKipvcHRpb25zKQo+ICt7Cj4gKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsK
PiArICAgIGNoYXIgKmZ1bGx1cmkgPSBOVUxMOwo+ICsgICAgaW50IHJldDsKPiArICAgIElQRlNH
YXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiArCj4gKyAgICAvLyBUZXN0IGZvciBp
cGZzOi8vLCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczouIFRoaXMgcHJlZml4IGlzCj4gc3RyaXBw
ZWQgZnJvbQo+ICsgICAgLy8gdGhlIHN0cmluZyBsZWF2aW5nIGp1c3QgdGhlIENJRCBpbiBpcGZz
X2NpZC4KPiArICAgIGludCBpc19pcGZzID0gYXZfc3RyaXN0YXJ0KHVyaSwgImlwZnM6Ly8iLCAm
aXBmc19jaWQpOwo+ICsgICAgaW50IGlzX2lwbnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBuczov
LyIsICZpcGZzX2NpZCk7Cj4gKwo+ICsgICAgLy8gV2UgbXVzdCBoYXZlIGVpdGhlciBpcG5zIG9y
IGlwZnMuCj4gKyAgICBpZiAoIWlzX2lwZnMgJiYgIWlzX2lwbnMpIHsKPiArICAgICAgICByZXQg
PSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAi
VW5zdXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAg
fQo+ICsKPiArICAgIC8vIElmIHRoZSBDSUQgaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhlbiAwIHRo
ZW4gd2UgYXNzdW1lIHdlIGhhdmUgYQo+IHByb3BlciB3b3JraW5nIG9uZS4KPiArICAgIC8vIEl0
IGNvdWxkIHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxk
IHNhdmUKPiB1cyBhbmQKPiArICAgIC8vIHJ1dHVybiBhIDQwMyBlcnJvci4gVGhlIGh0dHAgcHJv
dG9jb2wgaGFuZGxlcyB0aGlzLgo+ICsgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkgPCAxKSB7Cj4g
KyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiQSBDSUQgbXVzdCBiZSBwcm92aWRl
ZC5cbiIpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRUlMU0VRKTsKPiArICAgICAgICBnb3Rv
IGVycjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBQb3B1bGF0ZSBjLT5nYXRld2F5X2J1ZmZlciB3
aXRoIHdoYXRldmVyIGlzIGluIGMtPmdhdGV3YXkKPiArICAgIGlmIChjLT5nYXRld2F5ICE9IE5V
TEwpIHsKPiArICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihj
LT5nYXRld2F5X2J1ZmZlciksICIlcyIsCj4gKyAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3
YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPiArICAgICAgICAgICAgYXZfbG9n
KGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIC1nYXRld2F5IHBhcmFtZXRlciBpcyB0b28KPiBsb25n
LiAiCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEg
bWF4IG9mICV6dQo+IGNoYXJhY3RlcnNcbiIsCj4gKyAgICAgICAgICAgICAgICAgICBzaXplb2Yo
Yy0+Z2F0ZXdheV9idWZmZXIpKTsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwp
Owo+ICsgICAgICAgICAgICBnb3RvIGVycjsKPiArICAgICAgICB9Cj4gKyAgICB9IGVsc2Ugewo+
ICsgICAgICAgIC8vIFBvcHVsYXRlIHRoZSBJUEZTIGdhdGV3YXkgaWYgd2UgaGF2ZSBhbnkuCj4g
KyAgICAgICAgLy8gSWYgbm90LCBpbmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBv
bmUuCj4gKyAgICAgICAgcmV0ID0gcG9wdWxhdGVfaXBmc19nYXRld2F5KGgpOwo+ICsKPiArICAg
ICAgICBpZiAocmV0IDwgMSkgewo+ICsgICAgICAgICAgICAvLyBXZSBmYWxsYmFjayBvbiBkd2Vi
LmxpbmsgKG1hbmFnZWQgYnkgUHJvdG9jb2wgTGFicykuCj4gKyAgICAgICAgICAgIHNucHJpbnRm
KGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiCj4gaHR0cHM6
Ly9kd2ViLmxpbmsiKTsKPiArCj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklO
RywgIklQRlMgZG9lcyBub3QgYXBwZWFyIHRvIGJlCj4gcnVubmluZy4gIgo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3XigJlyZSBub3cgdXNpbmcgdGhlIHB1Ymxp
Ywo+IGdhdGV3YXkgYXQgZHdlYi5saW5rLlxuIik7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBB
Vl9MT0dfSU5GTywgIkluc3RhbGxpbmcgSVBGUyBsb2NhbGx5IGlzCj4gcmVjb21tZW5kZWQgdG8g
Igo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXByb3ZlIHBlcmZvcm1h
bmNlIGFuZCByZWxpYWJpbGl0eSwgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhbmQgbm90IHNoYXJlIGFsbCB5b3VyIGFjdGl2aXR5IHdpdGgKPiBhIHNpbmdsZSBJUEZT
IGdhdGV3YXkuXG4iCj4gKyAgICAgICAgICAgICAgICAgICAiVGhlcmUgYXJlIG11bHRpcGxlIG9w
dGlvbnMgdG8gZGVmaW5lIHRoaXMgZ2F0ZXdheS5cbiIKPiArICAgICAgICAgICAgICAgICAgICIx
LiBDYWxsIGZmbXBlZyB3aXRoIGEgZ2F0ZXdheSBwYXJhbSwgIgo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2g6IC1nYXRld2F5Cj4g
PHVybD4uXG4iCj4gKyAgICAgICAgICAgICAgICAgICAiMi4gRGVmaW5lIGFuICRJUEZTX0dBVEVX
QVkgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aAo+IHRoZSAiCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkgIgo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IHRyYWlsaW5nIGZvcndhcmQg
c2xhc2guXG4iCj4gKyAgICAgICAgICAgICAgICAgICAiMy4gRGVmaW5lIGFuICRJUEZTX1BBVEgg
ZW52aXJvbm1lbnQgdmFyaWFibGUgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhbmQgcG9pbnQgaXQgdG8gdGhlIElQRlMgZGF0YSBwYXRoICIKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiLSB0aGlzIGlzIHR5cGljYWxseSB+Ly5pcGZzXG4iKTsK
PiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBz
dGFydHMgd2l0aCBlaXRoZXIgaHR0cDovLyBvciBodHRwczovLwo+ICsgICAgaWYgKGF2X3N0cmlz
dGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCj4gKyAgICAgICAg
JiYgYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cHM6Ly8iLCBOVUxMKSA9PSAw
KSB7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIGdhdGV3YXkgVVJM
IGRpZG4ndCBzdGFydCB3aXRoCj4gaHR0cDovLyBvciAiCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaHR0cHM6Ly8gYW5kIGlzIHRoZXJlZm9yZQo+IGludmFsaWQuXG4iKTsK
PiArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4g
KyAgICB9Cj4gKwo+ICsgICAgLy8gQ29uY2F0ZW5hdGUgdGhlIHVybC4KPiArICAgIC8vIFRoaXMg
ZW5kcyB1cCB3aXRoIHNvbWV0aGluZyBsaWtlOiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBmcy9R
bS4uLgo+IC4uCj4gKyAgICAvLyBUaGUgZm9ybWF0IG9mICIlcyVzJXMlcyIgaXMgdGhlIGZvbGxv
d2luZzoKPiArICAgIC8vIDFzdCAlcyA9IFRoZSBnYXRld2F5Lgo+ICsgICAgLy8gMm5kICVzID0g
SWYgdGhlIGdhdGV3YXkgZGlkbid0IGVuZCBpbiBhIHNsYXNoLCBhZGQgYSAiLyIuCj4gT3RoZXJ3
aXNlIGl0J3MgYW4gZW1wdHkgc3RyaW5nCj4gKyAgICAvLyAzcmQgJXMgPSBFaXRoZXIgaXBucy8g
b3IgaXBmcy8uCj4gKyAgICAvLyA0dGggJXMgPSBUaGUgSVBGUyBDSUQgKFFtLi4uLCBiYWZ5Li4u
LCAuLi4pLgo+ICsgICAgZnVsbHVyaSA9IGF2X2FzcHJpbnRmKCIlcyVzJXMlcyIsCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheV9idWZmZXIsCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGMtPmdhdGV3YXlfYnVmZmVyW3N0cmxlbihjLT5nYXRld2F5X2J1ZmZlcikg
LQo+IDFdID09ICcvJykgPyAiIiA6ICIvIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAo
aXNfaXBucykgPyAiaXBucy8iIDogImlwZnMvIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcGZzX2NpZCk7Cj4gKwo+ICsgICAgaWYgKCFmdWxsdXJpKSB7Cj4gKyAgICAgIGF2X2xvZyho
LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY29tcG9zZSB0aGUgVVJMXG4iKTsKPiArICAgICAg
cmV0ID0gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAgICBnb3RvIGVycjsKPiArICAgIH0KPiArCj4g
KyAgICAvLyBQYXNzIHRoZSBVUkwgYmFjayB0byBGRk1wZWcncyBwcm90b2NvbCBoYW5kbGVyLgo+
ICsgICAgcmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlubmVyLCBmdWxsdXJpLCBmbGFn
cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoLT5pbnRlcnJ1cHRfY2FsbGJh
Y2ssIG9wdGlvbnMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2Nv
bF93aGl0ZWxpc3QsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2Nv
bF9ibGFja2xpc3QsIGgpOwo+ICsgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICBhdl9sb2co
aCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gb3BlbiByZXNvdXJjZTogJXNcbiIsCj4gZnVs
bHVyaSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICtlcnI6Cj4gKyAgICBh
dl9mcmVlKGZ1bGx1cmkpOwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlu
dCBpcGZzX3JlYWQoVVJMQ29udGV4dCAqaCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkK
PiArewo+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+ICsgICAg
cmV0dXJuIGZmdXJsX3JlYWQoYy0+aW5uZXIsIGJ1Ziwgc2l6ZSk7Cj4gK30KPiArCj4gK3N0YXRp
YyBpbnQ2NF90IGlwZnNfc2VlayhVUkxDb250ZXh0ICpoLCBpbnQ2NF90IHBvcywgaW50IHdoZW5j
ZSkKPiArewo+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+ICsg
ICAgcmV0dXJuIGZmdXJsX3NlZWsoYy0+aW5uZXIsIHBvcywgd2hlbmNlKTsKPiArfQo+ICsKPiAr
c3RhdGljIGludCBpcGZzX2Nsb3NlKFVSTENvbnRleHQgKmgpCj4gK3sKPiArICAgIElQRlNHYXRl
d2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiArICAgIHJldHVybiBmZnVybF9jbG9zZXAo
JmMtPmlubmVyKTsKPiArfQo+ICsKPiArI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoSVBGU0dh
dGV3YXlDb250ZXh0LCB4KQo+ICsKPiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9
IHsKPiArICAgIHsiZ2F0ZXdheSIsICJUaGUgZ2F0ZXdheSB0byBhc2sgZm9yIElQRlMgZGF0YS4i
LCBPRkZTRVQoZ2F0ZXdheSksCj4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAw
LCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTX0sCj4gKyAgICB7TlVMTH0sCj4gK307Cj4g
Kwo+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBpcGZzX2NvbnRleHRfY2xhc3MgPSB7Cj4gKyAgICAu
Y2xhc3NfbmFtZSAgID0gIklQRlMiLAo+ICsgICAgLml0ZW1fbmFtZSAgICA9IGF2X2RlZmF1bHRf
aXRlbV9uYW1lLAo+ICsgICAgLm9wdGlvbiAgICAgICA9IG9wdGlvbnMsCj4gKyAgICAudmVyc2lv
biAgICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAo+ICt9Owo+ICsKPiArY29uc3QgVVJMUHJv
dG9jb2wgZmZfaXBmc19wcm90b2NvbCA9IHsKPiArICAgIC5uYW1lICAgICAgICAgICAgID0gImlw
ZnMiLAo+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0cmFuc2xhdGVfaXBmc190b19odHRwLAo+
ICsgICAgLnVybF9yZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCj4gKyAgICAudXJsX3NlZWsgICAg
ICAgICA9IGlwZnNfc2VlaywKPiArICAgIC51cmxfY2xvc2UgICAgICAgID0gaXBmc19jbG9zZSwK
PiArICAgIC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4g
KyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCj4gK307Cj4gKwo+
ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcG5zX3Byb3RvY29sID0gewo+ICsgICAgLm5hbWUgICAg
ICAgICAgICAgPSAiaXBucyIsCj4gKyAgICAudXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9p
cGZzX3RvX2h0dHAsCj4gKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKPiArICAg
IC51cmxfc2VlayAgICAgICAgID0gaXBmc19zZWVrLAo+ICsgICAgLnVybF9jbG9zZSAgICAgICAg
PSBpcGZzX2Nsb3NlLAo+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3
YXlDb250ZXh0KSwKPiArICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29udGV4dF9jbGFz
cywKPiArfTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgYi9saWJhdmZv
cm1hdC9wcm90b2NvbHMuYwo+IGluZGV4IGQwNzU2M2NkMGMuLjZlZTYyYTU5OGEgMTAwNjQ0Cj4g
LS0tIGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKPiArKysgYi9saWJhdmZvcm1hdC9wcm90b2Nv
bHMuYwo+IEBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJz
cnRfcHJvdG9jb2w7Cj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzc2hfcHJvdG9j
b2w7Cj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJvdG9jb2w7
Cj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4gK2V4dGVy
biBjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sOwo+ICtleHRlcm4gY29uc3QgVVJM
UHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsKPgo+ICAjaW5jbHVkZSAibGliYXZmb3JtYXQvcHJv
dG9jb2xfbGlzdC5jIgo+Cj4gLS0KPiAyLjM1LjEKPgo+CiBGcmllbmRseSBwaW5nLCBob3BlZnVs
bHkgdGhlIGxhc3Qgb25lIDspCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5v
cmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1
bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVl
c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K