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 2EA4942071 for ; Sun, 27 Mar 2022 23:32:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6853968B285; Mon, 28 Mar 2022 02:32:44 +0300 (EEST) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A0E8E68AF91 for ; Mon, 28 Mar 2022 02:32:37 +0300 (EEST) Received: by mail-wm1-f51.google.com with SMTP id k124-20020a1ca182000000b0038c9cf6e2a6so7601263wme.0 for ; Sun, 27 Mar 2022 16:32:37 -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; bh=lFsFQ00kYMqY/Z6wJ2JAHiyoAE5i6aHpYJWbpxNKlz4=; b=P+Qhj4QN/FVqKyqmDY56Q7nvSMdS0NC8kpmM8KnbTHvrwehwLBi+bh2WmtVvbcir+h qoZpwMPeHrKPf8UhIFjid6+392gDHZ2SSGjZguBTDcS1GZ66Xw4PWN/27YAEMlH/rG7i /NR5nTi0AZumH4ouY+uVn/iGJX5DUkgN2TvhRNPMIMe4G259zRuVNOX7i0/F/ZsOqe2k pT8e5maRjuXhkKYuW4xJNI7V99VApo9QxoE5RCd8p2gfUoKKOtBNEGgxV9+KCky6URfe 7LeQVzCpIVCvKhkOtxi9gMjCtj2FXSxTazfOAdolNtnGZemrNnxkrz5JFTYvqYeY6SmB 2jRg== 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; bh=lFsFQ00kYMqY/Z6wJ2JAHiyoAE5i6aHpYJWbpxNKlz4=; b=ZnjlAMY+atiJcsPBLkC9wUFpXXxQPchQv9l+G0PYxykLLBC/ZwTj8PXgOk+KBNC6+q ss675l/wBTwuuMOlVLrUjNkzwZjowjoc0TbAltHoDJekZW6tCWZV2uyacJUD/YOHUb5v jB5SSiHICJjPstNQRgAcx8RT2WS5JAekhnYQypJ20L6kPZ6EcasCKb50JLru3i8MT0q6 Bhf0XPw1bQgAaanGigMJHtK46BZ0JA3HxZ4Bap0c+iPYsFdpypI+vPxceh8zdmeGrKzM gfnYREBjmeo/3Nb1Fq9mhYcQ/n8Pj4wrGdvzk2Clokmc32+sRIvqTT+vWhJd+Pier1IU WSaA== X-Gm-Message-State: AOAM530AbJAUpww5OkU6ItT9g6tpwCBmlpHF/TRBpTljcjqWG0DESPyw 9jXv0Elew7TEv3FOzZxB64D+ah8hTBRmJ6BkQ2C4Oh7y X-Google-Smtp-Source: ABdhPJxa1MiIV3TSJKY6fguLUdG4LekuBXbq1JQjS7NaT+KFplgiZkXzji9rbaBcGdUO9JZp40iwNgx8WjgZxuyBwbI= X-Received: by 2002:a05:600c:4401:b0:38c:8df8:9797 with SMTP id u1-20020a05600c440100b0038c8df89797mr31505028wmn.13.1648423956592; Sun, 27 Mar 2022 16:32:36 -0700 (PDT) MIME-Version: 1.0 References: <20220318145005.241414-1-markg85@gmail.com> <20220318145005.241414-2-markg85@gmail.com> In-Reply-To: From: Mark Gaiser Date: Mon, 28 Mar 2022 01:31:36 +0200 Message-ID: To: FFmpeg development discussions and patches , michael@niedermayer.cc X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v9 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 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: T24gV2VkLCBNYXIgMjMsIDIwMjIgYXQgMTI6MjQgUE0gTWFyayBHYWlzZXIgPG1hcmtnODVAZ21h aWwuY29tPiB3cm90ZToKCj4gT24gRnJpLCBNYXIgMTgsIDIwMjIgYXQgMzo1OSBQTSBNYXJrIEdh aXNlciA8bWFya2c4NUBnbWFpbC5jb20+IHdyb3RlOgo+Cj4+IE9uIEZyaSwgTWFyIDE4LCAyMDIy IGF0IDM6NTAgUE0gTWFyayBHYWlzZXIgPG1hcmtnODVAZ21haWwuY29tPiB3cm90ZToKPj4KPj4+ IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvcjoKPj4+IC0gZmZwbGF5IGlwZnM6Ly88Y2lkPgo+ Pj4gLSBmZnBsYXkgaXBuczovLzxjaWQ+Cj4+Pgo+Pj4gSVBGUyBkYXRhIGNhbiBiZSBwbGF5ZWQg ZnJvbSBzbyBjYWxsZWQgImlwZnMgZ2F0ZXdheXMiLgo+Pj4gQSBnYXRld2F5IGlzIGVzc2VudGlh bGx5IGEgd2Vic2VydmVyIHRoYXQgZ2l2ZXMgYWNjZXNzIHRvIHRoZQo+Pj4gZGlzdHJpYnV0ZWQg SVBGUyBuZXR3b3JrLgo+Pj4KPj4+IFRoaXMgcHJvdG9jb2wgc3VwcG9ydCAoaXBmcyBhbmQgaXBu cykgdGhlcmVmb3JlIHRyYW5zbGF0ZXMKPj4+IGlwZnM6Ly8gYW5kIGlwbnM6Ly8gdG8gYSBodHRw Oi8vIHVybC4gVGhpcyByZXN1bHRpbmcgdXJsIGlzCj4+PiB0aGVuIGhhbmRsZWQgYnkgdGhlIGh0 dHAgcHJvdG9jb2wuIEl0IGNvdWxkIGFsc28gYmUgaHR0cHMKPj4+IGRlcGVuZGluZyBvbiB0aGUg Z2F0ZXdheSBwcm92aWRlZC4KPj4+Cj4+PiBUbyB1c2UgdGhpcyBwcm90b2NvbCwgYSBnYXRld2F5 IG11c3QgYmUgcHJvdmlkZWQuCj4+PiBJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0byBm aW5kIGl0IGluIHlvdXIKPj4+ICRIT01FLy5pcGZzL2dhdGV3YXkgZmlsZS4gVGhlIHdheXMgdG8g c2V0IGl0IG1hbnVhbGx5IGFyZToKPj4+IDEuIERlZmluZSBhIC1nYXRld2F5IDx1cmw+IHRvIHRo ZSBnYXRld2F5Lgo+Pj4gMi4gRGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRw IGxpbmsgdG8gdGhlIGdhdGV3YXkuCj4+PiAzLiBEZWZpbmUgJElQRlNfUEFUSCBhbmQgcG9pbnQg aXQgdG8gdGhlIElQRlMgZGF0YSBwYXRoLgo+Pj4gNC4gSGF2ZSBJUEZTIHJ1bm5pbmcgaW4geW91 ciBsb2NhbCB1c2VyIGZvbGRlciAodW5kZXIgJEhPTUUvLmlwZnMpLgo+Pj4KPj4+IFNpZ25lZC1v ZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJrZzg1QGdtYWlsLmNvbT4KPj4+IC0tLQo+Pj4gIGNvbmZp Z3VyZSAgICAgICAgICAgICAgICAgfCAgIDIgKwo+Pj4gIGRvYy9wcm90b2NvbHMudGV4aSAgICAg ICAgfCAgMzAgKysrKwo+Pj4gIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICAgfCAgIDIgKwo+Pj4g IGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgfCAzMTAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4+ICBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwgICAyICsKPj4+ ICA1IGZpbGVzIGNoYW5nZWQsIDM0NiBpbnNlcnRpb25zKCspCj4+PiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvY29uZmln dXJlIGIvY29uZmlndXJlCj4+PiBpbmRleCA1YjE5YTM1ZjU5Li42ZmYwOWU3OTc0IDEwMDc1NQo+ Pj4gLS0tIGEvY29uZmlndXJlCj4+PiArKysgYi9jb25maWd1cmUKPj4+IEBAIC0zNTg1LDYgKzM1 ODUsOCBAQCB1ZHBfcHJvdG9jb2xfc2VsZWN0PSJuZXR3b3JrIgo+Pj4gIHVkcGxpdGVfcHJvdG9j b2xfc2VsZWN0PSJuZXR3b3JrIgo+Pj4gIHVuaXhfcHJvdG9jb2xfZGVwcz0ic3lzX3VuX2giCj4+ PiAgdW5peF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4+PiAraXBmc19wcm90b2NvbF9zZWxl Y3Q9Imh0dHBzX3Byb3RvY29sIgo+Pj4gK2lwbnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90 b2NvbCIKPj4+Cj4+PiAgIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwo+Pj4gIGxpYmFtcXBf cHJvdG9jb2xfZGVwcz0ibGlicmFiYml0bXEiCj4+PiBkaWZmIC0tZ2l0IGEvZG9jL3Byb3RvY29s cy50ZXhpIGIvZG9jL3Byb3RvY29scy50ZXhpCj4+PiBpbmRleCBkMjA3ZGYwYjUyLi43YzljMGE0 ODA4IDEwMDY0NAo+Pj4gLS0tIGEvZG9jL3Byb3RvY29scy50ZXhpCj4+PiArKysgYi9kb2MvcHJv dG9jb2xzLnRleGkKPj4+IEBAIC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgo+ Pj4KPj4+ICBAZW5kIHRhYmxlCj4+Pgo+Pj4gK0BzZWN0aW9uIGlwZnMKPj4+ICsKPj4+ICtJbnRl clBsYW5ldGFyeSBGaWxlIFN5c3RlbSAoSVBGUykgcHJvdG9jb2wgc3VwcG9ydC4gT25lIGNhbiBh Y2Nlc3MKPj4+IGZpbGVzIHN0b3JlZAo+Pj4gK29uIHRoZSBJUEZTIG5ldHdvcmsgdGhyb3VnaCBz byBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRwKHMpCj4+PiBlbmRwb2ludHMuCj4+PiAr VGhpcyBwcm90b2NvbCB3cmFwcyB0aGUgSVBGUyBuYXRpdmUgcHJvdG9jb2xzIChpcGZzOi8vIGFu ZCBpcG5zOi8vKSB0bwo+Pj4gYmUgc2VuZAo+Pj4gK3RvIHN1Y2ggYSBnYXRld2F5LiBVc2VycyBj YW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2gKPj4+IG1lYW5zIHRoaXMK Pj4+ICtwcm90b2NvbCB3aWxsIHVzZSB5b3VyIGxvY2FsIG1hY2hpbmUgZ2F0ZXdheSB0byBhY2Nl c3MgZmlsZXMgb24gdGhlCj4+PiBJUEZTIG5ldHdvcmsuCj4+PiArCj4+PiArSWYgYSB1c2VyIGRv ZXNuJ3QgaGF2ZSBhIG5vZGUgb2YgdGhlaXIgb3duIHRoZW4gdGhlIHB1YmxpYyBnYXRld2F5Cj4+ PiBkd2ViLmxpbmsgaXMKPj4+ICt1c2VkIGJ5IGRlZmF1bHQuCj4+PiArCj4+PiArWW91IGNhbiB1 c2UgdGhpcyBwcm90b2NvbCBpbiAyIHdheXMuIFVzaW5nIElQRlM6Cj4+PiArQGV4YW1wbGUKPj4+ ICtmZnBsYXkgaXBmczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnloZnp1NXJ3bzc0TUVrVkRZ QW1GNVQKPj4+ICtAZW5kIGV4YW1wbGUKPj4+ICsKPj4+ICtPciB0aGUgSVBOUyBwcm90b2NvbCAo SVBOUyBpcyBtdXRhYmxlIElQRlMpOgo+Pj4gK0BleGFtcGxlCj4+PiArZmZwbGF5IGlwbnM6Ly9R bWJHdEpnMjNza2h2Rm11OW1KaWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4+PiArQGVuZCBl eGFtcGxlCj4+PiArCj4+PiArWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgZ2F0ZXdheSB0byBiZSB1 c2VkOgo+Pj4gKwo+Pj4gK0B0YWJsZSBAb3B0aW9uCj4+PiArCj4+PiArQGl0ZW0gZ2F0ZXdheQo+ Pj4gK0RlZmluZXMgdGhlIGdhdGV3YXkgdG8gdXNlLiBXaGVuIG5vdGhpbmcgaXMgcHJvdmlkZWQg dGhlIHByb3RvY29sIHdpbGwKPj4+IGZpcnN0IHRyeQo+Pj4gK3lvdXIgbG9jYWwgZ2F0ZXdheS4g SWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2VkLgo+Pj4gKwo+Pj4gK0BlbmQgdGFi bGUKPj4+Cj4+PiAgQGMgbWFuIGVuZCBQUk9UT0NPTFMKPj4+IGRpZmYgLS1naXQgYS9saWJhdmZv cm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4+PiBpbmRleCAzZGM2YTQ3OWNj Li40ZWRjZTg0MjBmIDEwMDY0NAo+Pj4gLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKPj4+ICsr KyBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4+PiBAQCAtNjU2LDYgKzY1Niw4IEBAIE9CSlMtJChD T05GSUdfU1JUUF9QUk9UT0NPTCkgICAgICAgICAgICAgKz0KPj4+IHNydHBwcm90by5vIHNydHAu bwo+Pj4gIE9CSlMtJChDT05GSUdfU1VCRklMRV9QUk9UT0NPTCkgICAgICAgICAgKz0gc3ViZmls ZS5vCj4+PiAgT0JKUy0kKENPTkZJR19URUVfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0ZWVw cm90by5vIHRlZV9jb21tb24ubwo+Pj4gIE9CSlMtJChDT05GSUdfVENQX1BST1RPQ09MKSAgICAg ICAgICAgICAgKz0gdGNwLm8KPj4+ICtPQkpTLSQoQ09ORklHX0lQRlNfUFJPVE9DT0wpICAgICAg ICAgICAgICs9IGlwZnNnYXRld2F5Lm8KPj4+ICtPQkpTLSQoQ09ORklHX0lQTlNfUFJPVE9DT0wp ICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KPj4+ICBUTFMtT0JKUy0kKENPTkZJR19HTlVU TFMpICAgICAgICAgICAgICAgICs9IHRsc19nbnV0bHMubwo+Pj4gIFRMUy1PQkpTLSQoQ09ORklH X0xJQlRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2xpYnRscy5vCj4+PiAgVExTLU9CSlMtJChD T05GSUdfTUJFRFRMUykgICAgICAgICAgICAgICArPSB0bHNfbWJlZHRscy5vCj4+PiBkaWZmIC0t Z2l0IGEvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYyBiL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5 LmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwMDAwLi4yYjI5MDVk MmMyCj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5j Cj4+PiBAQCAtMCwwICsxLDMxMCBAQAo+Pj4gKy8qCj4+PiArICogSVBGUyBhbmQgSVBOUyBwcm90 b2NvbCBzdXBwb3J0IHRocm91Z2ggSVBGUyBHYXRld2F5Lgo+Pj4gKyAqIENvcHlyaWdodCAoYykg MjAyMiBNYXJrIEdhaXNlcgo+Pj4gKyAqCj4+PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZt cGVnLgo+Pj4gKyAqCj4+PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgo+Pj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPj4+ICsgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KPj4+ICsgKgo+Pj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+Pj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+PiArICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPj4+ICsg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4gKyAq Cj4+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwo+Pj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPj4+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4+PiAwMjExMC0xMzAx IFVTQQo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlICJhdmZvcm1hdC5oIgo+Pj4gKyNpbmNs dWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKPj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3Ry aW5nLmgiCj4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgo+Pj4gKyNpbmNsdWRl ICJsaWJhdnV0aWwvb3B0LmgiCj4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC90cmVlLmgiCj4+PiAr I2luY2x1ZGUgPGZjbnRsLmg+Cj4+PiArI2lmIEhBVkVfSU9fSAo+Pj4gKyNpbmNsdWRlIDxpby5o Pgo+Pj4gKyNlbmRpZgo+Pj4gKyNpZiBIQVZFX1VOSVNURF9ICj4+PiArI2luY2x1ZGUgPHVuaXN0 ZC5oPgo+Pj4gKyNlbmRpZgo+Pj4gKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCj4+PiArI2luY2x1 ZGUgInVybC5oIgo+Pj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4+ICsjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KPj4+ICsKPj4+ICt0eXBlZGVmIHN0cnVjdCBJUEZTR2F0ZXdheUNvbnRleHQgewo+Pj4g KyAgICBBVkNsYXNzICpjbGFzczsKPj4+ICsgICAgVVJMQ29udGV4dCAqaW5uZXI7Cj4+PiArICAg IC8vIElzIGZpbGxlZCBieSB0aGUgLWdhdGV3YXkgYXJndW1lbnQgYW5kIG5vdCBjaGFuZ2VkIGFm dGVyLgo+Pj4gKyAgICBjaGFyICpnYXRld2F5Owo+Pj4gKyAgICAvLyBJZiB0aGUgYWJvdmUgZ2F0 ZXdheSBpcyBub24gbnVsbCwgaXQgd2lsbCBiZSBjb3BpZWQgaW50byB0aGlzCj4+PiBidWZmZXIu Cj4+PiArICAgIC8vIEVsc2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRoZSBhdXRvIGRldGVj dGVkIGdhdGV3YXkuCj4+PiArICAgIC8vIEluIGVpdGhlciBjYXNlLCB0aGUgZ2F0ZXdheSB0byB1 c2Ugd2lsbCBiZSBpbiB0aGlzIGJ1ZmZlci4KPj4+ICsgICAgY2hhciBnYXRld2F5X2J1ZmZlcltQ QVRIX01BWF07Cj4+PiArfSBJUEZTR2F0ZXdheUNvbnRleHQ7Cj4+PiArCj4+PiArLy8gQSBiZXN0 LWVmZm9ydCB3YXkgdG8gZmluZCB0aGUgSVBGUyBnYXRld2F5Lgo+Pj4gKy8vIE9ubHkgdGhlIG1v c3QgYXBwcm9waWF0ZSBnYXRld2F5IGlzIHNldC4gSXQncyBub3QgYWN0dWFsbHkgcmVxdWVzdGVk Cj4+PiArLy8gKGh0dHAgY2FsbCkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBzbG93ZG93biBpbiBz dGFydHVwLiBBIHBvdGVudGlhbAo+Pj4gdGltZW91dAo+Pj4gKy8vIGlzIGhhbmRsZWQgYnkgdGhl IEhUVFAgcHJvdG9jb2wuCj4+PiArc3RhdGljIGludCBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoVVJM Q29udGV4dCAqaCkKPj4+ICt7Cj4+PiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnBy aXZfZGF0YTsKPj4+ICsgICAgY2hhciBpcGZzX2Z1bGxfZGF0YV9mb2xkZXJbUEFUSF9NQVhdOwo+ Pj4gKyAgICBjaGFyIGlwZnNfZ2F0ZXdheV9maWxlW1BBVEhfTUFYXTsKPj4+ICsgICAgc3RydWN0 IHN0YXQgc3Q7Cj4+PiArICAgIGludCBzdGF0X3JldCA9IDA7Cj4+PiArICAgIGludCByZXQgPSBB VkVSUk9SKEVJTlZBTCk7Cj4+PiArICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5VTEw7Cj4+PiAr Cj4+PiArICAgIC8vIFRlc3QgJElQRlNfR0FURVdBWS4KPj4+ICsgICAgaWYgKGdldGVudigiSVBG U19HQVRFV0FZIikgIT0gTlVMTCkgewo+Pj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGMtPmdhdGV3 YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIGdldGVudigiSVBGU19HQVRFV0FZIikpID49Cj4+PiBzaXplb2YoYy0+Z2F0 ZXdheV9idWZmZXIpKSB7Cj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5H LCAiVGhlIElQRlNfR0FURVdBWSBlbnZpcm9ubWVudAo+Pj4gdmFyaWFibGUgZXhjZWVkcyB0aGUg bWF4aW11bSBsZW5ndGguIFdlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLAo+Pj4g c2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7Cj4+PiArICAgICAgICAgICAgcmV0ID0gQVZFUlJP UihFSU5WQUwpOwo+Pj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICAgICAgfQo+Pj4g Kwo+Pj4gKyAgICAgICAgcmV0ID0gMTsKPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICB9 IGVsc2UKPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBGU19HQVRFV0FZ IGlzIGVtcHR5LlxuIik7Cj4+PiArCj4+PiArICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgSVBG UyBmb2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVhZCB0aGUKPj4+IGNvbnRlbnRzIG9mCj4+PiAr ICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGljaCB3b3VsZCB0ZWxsIHVzIHRoZSBnYXRld2F5 IHRvIHVzZS4KPj4+ICsgICAgaWYgKGdldGVudigiSVBGU19QQVRIIikgPT0gTlVMTCkgewo+Pj4g KyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJUEZTX1BBVEggaXMgZW1wdHkuXG4i KTsKPj4+ICsKPj4+ICsgICAgICAgIC8vIFRyeSB2aWEgdGhlIGhvbWUgZm9sZGVyLgo+Pj4gKyAg ICAgICAgaWYgKGdldGVudigiSE9NRSIpID09IE5VTEwpIHsKPj4+ICsgICAgICAgICAgICBhdl9s b2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5LlxuIik7Cj4+ PiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+Pj4gKyAgICAgICAgICAgIGdv dG8gZXJyOwo+Pj4gKyAgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBj b21wb3NlZCBwYXRoIGZpdHMuCj4+PiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2Rh dGFfZm9sZGVyLAo+Pj4gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCj4+PiArICAgICAg ICAgICAgICAgICAgICAgIiVzLy5pcGZzLyIsIGdldGVudigiSE9NRSIpKSA+PQo+Pj4gc2l6ZW9m KGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpIHsKPj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZf TE9HX1dBUk5JTkcsICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUKPj4+IG1heCBwYXRo IGxlbmd0aCAoJXp1KVxuIiwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpOwo+Pj4gKyAg ICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4+ICsgICAgICAgICAgICBnb3RvIGVy cjsKPj4+ICsgICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgIC8vIFN0YXQgdGhlIGZvbGRlci4K Pj4+ICsgICAgICAgIC8vIEl0IHNob3VsZCBleGlzdCBpbiBhIGRlZmF1bHQgSVBGUyBzZXR1cCB3 aGVuIHJ1biBhcyBsb2NhbAo+Pj4gdXNlci4KPj4+ICsjaWZuZGVmIF9XSU4zMgo+Pj4gKyAgICAg ICAgc3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKPj4+ICsjZWxz ZQo+Pj4gKyAgICAgICAgc3RhdF9yZXQgPSB3aW4zMl9zdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRl ciwgJnN0KTsKPj4+ICsjZW5kaWYKPj4+ICsgICAgICAgIGlmIChzdGF0X3JldCA8IDApIHsKPj4+ ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJVbmFibGUgdG8gZmluZCBJUEZT IGZvbGRlci4gV2UKPj4+IHRyaWVkOlxuIik7Cj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFW X0xPR19JTkZPLCAiLSAkSVBGU19QQVRILCB3aGljaCB3YXMgZW1wdHkuXG4iKTsKPj4+ICsgICAg ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRIT01FLy5pcGZzIChmdWxsIHVyaTog JXMpIHdoaWNoCj4+PiBkb2Vzbid0IGV4aXN0LlxuIiwgaXBmc19mdWxsX2RhdGFfZm9sZGVyKTsK Pj4+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4+PiArICAgICAgICAgICAg Z290byBlcnI7Cj4+PiArICAgICAgICB9Cj4+PiArICAgIH0gZWxzZSB7Cj4+PiArICAgICAgICBp ZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLAo+Pj4gc2l6ZW9mKGlwZnNfZnVsbF9k YXRhX2ZvbGRlciksICIlcyIsCj4+PiArICAgICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfUEFU SCIpKSA+PSBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSkKPj4+IHsKPj4+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGU19QQVRIIGVudmlyb25tZW50 Cj4+PiB2YXJpYWJsZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4gV2UgYWxsb3cgYSBtYXgg b2YgJXp1IGNoYXJhY3RlcnNcbiIsCj4+PiBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKPj4+ ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+PiArICAgICAgICAgICAgZ290 byBlcnI7Cj4+PiArICAgICAgICB9Cj4+PiArCj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgLy8g Q29weSB0aGUgZnVsbHkgY29tcG9zZWQgZ2F0ZXdheSBwYXRoIGludG8gaXBmc19nYXRld2F5X2Zp bGUuCj4+PiArICAgIGlmIChzbnByaW50ZihpcGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9mKGlwZnNf Z2F0ZXdheV9maWxlKSwKPj4+ICIlc2dhdGV3YXkiLAo+Pj4gKyAgICAgICAgICAgICAgICAgaXBm c19mdWxsX2RhdGFfZm9sZGVyKSA+PSBzaXplb2YoaXBmc19nYXRld2F5X2ZpbGUpKSB7Cj4+PiAr ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUg cGF0aCBleGNlZWRzCj4+PiB0aGUgbWF4IHBhdGggbGVuZ3RoICglenUpXG4iLCBzaXplb2YoaXBm c19nYXRld2F5X2ZpbGUpKTsKPj4+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPj4+ ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIC8vIEdldCB0aGUg Y29udGVudHMgb2YgdGhlIGdhdGV3YXkgZmlsZS4KPj4+ICsgICAgZ2F0ZXdheV9maWxlID0gYXZf Zm9wZW5fdXRmOChpcGZzX2dhdGV3YXlfZmlsZSwgInIiKTsKPj4+ICsgICAgaWYgKCFnYXRld2F5 X2ZpbGUpIHsKPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZT IGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKQo+Pj4gZG9lc24ndCBleGlzdC4gSXMgdGhlIGdh dGV3YXkgZW5hYmxlZD9cbiIsIGlwZnNfZ2F0ZXdheV9maWxlKTsKPj4+ICsgICAgICAgIHJldCA9 IEFWRVJST1IoRU5PRU5UKTsKPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICB9Cj4+PiAr Cj4+PiArICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAoZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUg bWFyaykuCj4+PiArICAgIGZnZXRzKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdh eV9idWZmZXIpIC0gMSwKPj4+IGdhdGV3YXlfZmlsZSk7Cj4+PiArCj4+PiArICAgIC8vIFJlcGxh Y2UgdGhlIGxhc3QgY2hhciB3aXRoIFwwCj4+PiArICAgIGMtPmdhdGV3YXlfYnVmZmVyW3NpemVv ZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxXSA9IDA7Cj4+PiArCj4+PiArICAgIC8vIFJlcGxhY2Ug Zmlyc3Qgb2NjdXJlbmNlIG9mIGVuZCBvZiBsaW5lIHdpdGggXDAKPj4+ICsgICAgYy0+Z2F0ZXdh eV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxyIildID0gMDsKPj4+ICsgICAg Yy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxuIildID0gMDsK Pj4+ICsKPj4+ICsgICAgLy8gSWYgc3RybGVuIGZpbmRzIGFueXRoaW5nIGxvbmdlciB0aGVuIDAg Y2hhcmFjdGVycyB0aGVuIHdlIGhhdmUgYQo+Pj4gKyAgICAvLyBwb3RlbnRpYWwgZ2F0ZXdheSB1 cmwuCj4+PiArICAgIGlmIChzdHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpIDwgMSkgewo+Pj4gKyAg ICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0ZXdheSBmaWxlIChm dWxsIHVyaTogJXMpCj4+PiBhcHBlYXJzIHRvIGJlIGVtcHR5LiBJcyB0aGUgZ2F0ZXdheSBzdGFy dGVkP1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOwo+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihF SUxTRVEpOwo+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+PiArICAgIH0gZWxzZSB7Cj4+PiArICAg ICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0ZXdheV9idWZmZXIgaGFzIHNvbWV0aGluZyB0 aGF0IGxvb2tzCj4+PiB2YWxpZC4KPj4+ICsgICAgICAgIHJldCA9IDE7Cj4+PiArICAgICAgICBn b3RvIGVycjsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gK2VycjoKPj4+ICsgICAgaWYgKGdhdGV3YXlf ZmlsZSkKPj4+ICsgICAgICAgIGZjbG9zZShnYXRld2F5X2ZpbGUpOwo+Pj4gKwo+Pj4gKyAgICBy ZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IHRyYW5zbGF0ZV9pcGZzX3Rv X2h0dHAoVVJMQ29udGV4dCAqaCwgY29uc3QgY2hhciAqdXJpLAo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCj4+ PiArewo+Pj4gKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsKPj4+ICsgICAgY2hhciAqZnVsbHVy aSA9IE5VTEw7Cj4+PiArICAgIGludCByZXQ7Cj4+PiArICAgIElQRlNHYXRld2F5Q29udGV4dCAq YyA9IGgtPnByaXZfZGF0YTsKPj4+ICsKPj4+ICsgICAgLy8gVGVzdCBmb3IgaXBmczovLywgaXBm czosIGlwbnM6Ly8gYW5kIGlwbnM6LiBUaGlzIHByZWZpeCBpcwo+Pj4gc3RyaXBwZWQgZnJvbQo+ Pj4gKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcganVzdCB0aGUgQ0lEIGluIGlwZnNfY2lkLgo+ Pj4gKyAgICBpbnQgaXNfaXBmcyA9IGF2X3N0cmlzdGFydCh1cmksICJpcGZzOi8vIiwgJmlwZnNf Y2lkKTsKPj4+ICsgICAgaW50IGlzX2lwbnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBuczovLyIs ICZpcGZzX2NpZCk7Cj4+PiArCj4+PiArICAgIC8vIFdlIG11c3QgaGF2ZSBlaXRoZXIgaXBucyBv ciBpcGZzLgo+Pj4gKyAgICBpZiAoIWlzX2lwZnMgJiYgIWlzX2lwbnMpIHsKPj4+ICsgICAgICAg IHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FS TklORywgIlVuc3VwcG9ydGVkIHVybCAlc1xuIiwgdXJpKTsKPj4+ICsgICAgICAgIGdvdG8gZXJy Owo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIC8vIElmIHRoZSBDSUQgaGFzIGEgbGVuZ3RoIGdy ZWF0ZXIgdGhlbiAwIHRoZW4gd2UgYXNzdW1lIHdlIGhhdmUgYQo+Pj4gcHJvcGVyIHdvcmtpbmcg b25lLgo+Pj4gKyAgICAvLyBJdCBjb3VsZCBzdGlsbCBiZSB3cm9uZyBidXQgaW4gdGhhdCBjYXNl IHRoZSBnYXRld2F5IHNob3VsZCBzYXZlCj4+PiB1cyBhbmQKPj4+ICsgICAgLy8gcnV0dXJuIGEg NDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5kbGVzIHRoaXMuCj4+PiArICAgIGlmIChz dHJsZW4oaXBmc19jaWQpIDwgMSkgewo+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiQSBDSUQgbXVzdCBiZSBwcm92aWRlZC5cbiIpOwo+Pj4gKyAgICAgICAgcmV0ID0gQVZF UlJPUihFSUxTRVEpOwo+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+PiArICAgIH0KPj4+ICsKPj4+ ICsgICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBj LT5nYXRld2F5Cj4+PiArICAgIGlmIChjLT5nYXRld2F5ICE9IE5VTEwpIHsKPj4+ICsgICAgICAg IGlmIChzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVy KSwgIiVzIiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICBjLT5nYXRld2F5KSA+PSBzaXplb2Yo Yy0+Z2F0ZXdheV9idWZmZXIpKSB7Cj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19X QVJOSU5HLCAiVGhlIC1nYXRld2F5IHBhcmFtZXRlciBpcyB0b28KPj4+IGxvbmcuIFdlIGFsbG93 IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsK Pj4+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+PiArICAgICAgICAgICAg Z290byBlcnI7Cj4+PiArICAgICAgICB9Cj4+PiArICAgIH0gZWxzZSB7Cj4+PiArICAgICAgICAv LyBQb3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgo+Pj4gKyAgICAgICAg Ly8gSWYgbm90LCBpbmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBvbmUuCj4+PiAr ICAgICAgICByZXQgPSBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoaCk7Cj4+PiArCj4+PiArICAgICAg ICBpZiAocmV0IDwgMSkgewo+Pj4gKyAgICAgICAgICAgIC8vIFdlIGZhbGxiYWNrIG9uIGR3ZWIu bGluayAobWFuYWdlZCBieSBQcm90b2NvbCBMYWJzKS4KPj4+ICsgICAgICAgICAgICBzbnByaW50 ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIgo+Pj4gaHR0 cHM6Ly9kd2ViLmxpbmsiKTsKPj4+Cj4+Cj4+IEp1c3QgdG8gbWFrZSB0aGlzIHBhcnQgY2xlYXIu Cj4+IEkndmUgYmVlbiBob2xkaW5nIG9mZiBzZW5kaW5nIHRoaXMgcGF0Y2ggdGlsbCBJIHJlY2Vp dmVkIGFuZCBPSyBmcm9tCj4+IFByb3RvY29sIExhYnMgKHRoZXkgbWFpbnRhaW4gdGhpcyBnYXRl d2F5IGFuZCBJUEZTKS4KPj4gVGhleSBhcHByb3ZlIGhhdmluZyB0aGlzIGZhbGxiYWNrIGdhdGV3 YXkgaW4gdGhlIGZmbXBlZyBjb2RlYmFzZS4KPj4KPj4gVGhpcyBhbHNvIG1lYW5zIHRoYXQsIHN0 YXJ0aW5nIGZyb20gdGhpcyBwYXRjaCwgImZmcGxheSBpcGZzOi8vPGNpZD4iCj4+IHdpbGwganVz dCB3b3JrIG9uIGFueSBwbGF0Zm9ybSB3aGVyZSBmZm1wZWcgcnVucyBhbmQgdGhpcyBwcm90b2Nv bCBpcwo+PiBlbmFibGVkIQo+PiBUaGF0J3MgaHVnZSEKPj4KPj4gT3RoZXIgdGhhbiB0aGF0IGl0 J3MgaW1wbGVtZW50ZWQgZXhhY3RseSBhcyBwcmV2aW91c2x5IGRpc2N1c3NlZCBpbiB0aGUKPj4g Vjggc2VyaWVzLgo+Pgo+PiArCj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiSVBGUyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUKPj4+IHJ1bm5pbmcuIFlvdeKAmXJlIG5v dyB1c2luZyB0aGUgcHVibGljIGdhdGV3YXkgYXQgZHdlYi5saW5rLlxuIik7Cj4+PiArICAgICAg ICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiSW5zdGFsbGluZyBJUEZTIGxvY2FsbHkgaXMK Pj4+IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmlsaXR5LCBh bmQgbm90IHNoYXJlIGFsbCB5b3VyCj4+PiBhY3Rpdml0eSB3aXRoIGEgc2luZ2xlIElQRlMgZ2F0 ZXdheS5cbiIpOwo+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlRoZXJl IGFyZSBtdWx0aXBsZSBvcHRpb25zIHRvCj4+PiBkZWZpbmUgdGhpcyBnYXRld2F5LlxuIik7Cj4+ PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMS4gQ2FsbCBmZm1wZWcgd2l0 aCBhIGdhdGV3YXkKPj4+IHBhcmFtLCB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2g6IC1nYXRld2F5 IDx1cmw+LlxuIik7Cj4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMi4g RGVmaW5lIGFuICRJUEZTX0dBVEVXQVkKPj4+IGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhl IGZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkgd2l0aG91dCB0cmFpbGluZwo+Pj4gZm9yd2Fy ZCBzbGFzaC5cbiIpOwo+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIjMu IERlZmluZSBhbiAkSVBGU19QQVRIIGVudmlyb25tZW50Cj4+PiB2YXJpYWJsZSBhbmQgcG9pbnQg aXQgdG8gdGhlIElQRlMgZGF0YSBwYXRoIC0gdGhpcyBpcyB0eXBpY2FsbHkgfi8uaXBmc1xuIik7 Cj4+PiArICAgICAgICB9Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgLy8gVGVzdCBpZiB0aGUg Z2F0ZXdheSBzdGFydHMgd2l0aCBlaXRoZXIgaHR0cDovLyBvciBodHRwczovLwo+Pj4gKyAgICBp ZiAoYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cDovLyIsIE5VTEwpID09IDAK Pj4+ICsgICAgICAgICYmIGF2X3N0cmlzdGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHBzOi8v IiwgTlVMTCkgPT0gMCkgewo+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAi VGhlIGdhdGV3YXkgVVJMIGRpZG4ndCBzdGFydCB3aXRoCj4+PiBodHRwOi8vIG9yIGh0dHBzOi8v IGFuZCBpcyB0aGVyZWZvcmUgaW52YWxpZC5cbiIpOwo+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJP UihFSUxTRVEpOwo+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsg ICAgLy8gQ29uY2F0ZW5hdGUgdGhlIHVybC4KPj4+ICsgICAgLy8gVGhpcyBlbmRzIHVwIHdpdGgg c29tZXRoaW5nIGxpa2U6Cj4+PiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBmcy9RbS4uLi4uCj4+ PiArICAgIC8vIFRoZSBmb3JtYXQgb2YgIiVzJXMlcyVzIiBpcyB0aGUgZm9sbG93aW5nOgo+Pj4g KyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdheS4KPj4+ICsgICAgLy8gMm5kICVzID0gSWYgdGhl IGdhdGV3YXkgZGlkbid0IGVuZCBpbiBhIHNsYXNoLCBhZGQgYSAiLyIuCj4+PiBPdGhlcndpc2Ug aXQncyBhbiBlbXB0eSBzdHJpbmcKPj4+ICsgICAgLy8gM3JkICVzID0gRWl0aGVyIGlwbnMvIG9y IGlwZnMvLgo+Pj4gKyAgICAvLyA0dGggJXMgPSBUaGUgSVBGUyBDSUQgKFFtLi4uLCBiYWZ5Li4u LCAuLi4pLgo+Pj4gKyAgICBmdWxsdXJpID0gYXZfYXNwcmludGYoIiVzJXMlcyVzIiwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXlfYnVmZmVyLAo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKGMtPmdhdGV3YXlfYnVmZmVyW3N0cmxlbihjLT5nYXRld2F5X2J1 ZmZlcikKPj4+IC0gMV0gPT0gJy8nKSA/ICIiIDogIi8iLAo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGlzX2lwbnMpID8gImlwbnMvIiA6ICJpcGZzLyIsCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICBpcGZzX2NpZCk7Cj4+PiArCj4+PiArICAgIC8vIFBhc3MgdGhlIFVSTCBi YWNrIHRvIEZGTXBlZydzIHByb3RvY29sIGhhbmRsZXIuCj4+PiArICAgIGlmICgocmV0ID0gZmZ1 cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlubmVyLCBmdWxsdXJpLCBmbGFncywKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaC0+aW50ZXJydXB0X2NhbGxiYWNrLCBvcHRp b25zLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29s X3doaXRlbGlzdCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5w cm90b2NvbF9ibGFja2xpc3QsIGgpKQo+Pj4gKyAgICAgICAgPCAwKSB7Cj4+PiArICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gb3BlbiByZXNvdXJjZTogJXNcbiIs Cj4+PiBmdWxsdXJpKTsKPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICB9Cj4+PiArCj4+ PiArZXJyOgo+Pj4gKyAgICBhdl9mcmVlKGZ1bGx1cmkpOwo+Pj4gKyAgICByZXR1cm4gcmV0Owo+ Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1bnNp Z25lZCBjaGFyICpidWYsIGludCBzaXplKQo+Pj4gK3sKPj4+ICsgICAgSVBGU0dhdGV3YXlDb250 ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+Pj4gKyAgICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5l ciwgYnVmLCBzaXplKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludDY0X3QgaXBmc19zZWVr KFVSTENvbnRleHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQo+Pj4gK3sKPj4+ICsgICAg SVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+Pj4gKyAgICByZXR1cm4gZmZ1 cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg aW50IGlwZnNfY2xvc2UoVVJMQ29udGV4dCAqaCkKPj4+ICt7Cj4+PiArICAgIElQRlNHYXRld2F5 Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPj4+ICsgICAgYXZfZnJlZShjLT5nYXRld2F5KTsK Pj4+ICsgICAgcmV0dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOwo+Pj4gK30KPj4+ICsKPj4+ ICsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCj4+PiAr Cj4+PiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKPj4+ICsgICAgeyJnYXRl d2F5IiwgIlRoZSBnYXRld2F5IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChnYXRld2F5 KSwKPj4+IEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSBOVUxMfSwgMCwgMCwgQVZfT1BUX0ZM QUdfREVDT0RJTkdfUEFSQU19LAo+Pj4gKyAgICB7TlVMTH0sCj4+PiArfTsKPj4+ICsKPj4+ICtz dGF0aWMgY29uc3QgQVZDbGFzcyBpcGZzX2NvbnRleHRfY2xhc3MgPSB7Cj4+PiArICAgIC5jbGFz c19uYW1lICAgPSAiSVBGUyIsCj4+PiArICAgIC5pdGVtX25hbWUgICAgPSBhdl9kZWZhdWx0X2l0 ZW1fbmFtZSwKPj4+ICsgICAgLm9wdGlvbiAgICAgICA9IG9wdGlvbnMsCj4+PiArICAgIC52ZXJz aW9uICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4+PiArfTsKPj4+ICsKPj4+ICtjb25z dCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sID0gewo+Pj4gKyAgICAubmFtZSAgICAgICAg ICAgICA9ICJpcGZzIiwKPj4+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0cmFuc2xhdGVfaXBm c190b19odHRwLAo+Pj4gKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKPj4+ICsg ICAgLnVybF9zZWVrICAgICAgICAgPSBpcGZzX3NlZWssCj4+PiArICAgIC51cmxfY2xvc2UgICAg ICAgID0gaXBmc19jbG9zZSwKPj4+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBG U0dhdGV3YXlDb250ZXh0KSwKPj4+ICsgICAgLnByaXZfZGF0YV9jbGFzcyAgPSAmaXBmc19jb250 ZXh0X2NsYXNzLAo+Pj4gK307Cj4+PiArCj4+PiArY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19w cm90b2NvbCA9IHsKPj4+ICsgICAgLm5hbWUgICAgICAgICAgICAgPSAiaXBucyIsCj4+PiArICAg IC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKPj4+ICsgICAgLnVy bF9yZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCj4+PiArICAgIC51cmxfc2VlayAgICAgICAgID0g aXBmc19zZWVrLAo+Pj4gKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCj4+PiAr ICAgIC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4+PiAr ICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29udGV4dF9jbGFzcywKPj4+ICt9Owo+Pj4g ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5jIGIvbGliYXZmb3JtYXQvcHJvdG9j b2xzLmMKPj4+IGluZGV4IDk0OGZhZTQxMWYuLjY3NWI2ODRiZDMgMTAwNjQ0Cj4+PiAtLS0gYS9s aWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+Pj4gKysrIGIvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMK Pj4+IEBAIC03Myw2ICs3Myw4IEBAIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzcnRf cHJvdG9jb2w7Cj4+PiAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNzaF9wcm90b2Nv bDsKPj4+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic21iY2xpZW50X3Byb3RvY29s Owo+Pj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4+PiAr ZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2w7Cj4+PiArZXh0ZXJuIGNv bnN0IFVSTFByb3RvY29sIGZmX2lwbnNfcHJvdG9jb2w7Cj4+Pgo+Pj4gICNpbmNsdWRlICJsaWJh dmZvcm1hdC9wcm90b2NvbF9saXN0LmMiCj4+Pgo+Pj4gLS0KPj4+IDIuMzUuMQo+Pj4KPj4+Cj4g cGluZy4uLgo+Cgo1IGRheXMgbGF0ZXIuClNlY29uZCBwaW5nLi4KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFp bApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo=