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 76F7C4275A for ; Wed, 30 Mar 2022 11:41:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2CB7368B1DC; Wed, 30 Mar 2022 14:41:48 +0300 (EEST) Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 948B168B008 for ; Wed, 30 Mar 2022 14:41:41 +0300 (EEST) Received: by mail-ej1-f42.google.com with SMTP id p15so40907187ejc.7 for ; Wed, 30 Mar 2022 04:41:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Xu1h87hamRnF+EsS6h+ZDgCcqWHt60Y10T8noyh+MdI=; b=g/acrYsEI5E95FXl1U9EEPq7v0QRXjsX6tHTpvHyVwTPXrUacr9rwognuAkuYaps4F aZPLMZbN2Ol7wZZwHna4xGVI4ljOyfB4uqGD3DP5KEy0oexSXavQ31//6ka2A3lIUjf7 7MDYllJz1MR0MKGlgPlM4gmo/BSCYOhMPp1v8RlR243q4Hf/TlTEwrkB2/DTxwHYaBU3 gEakM/ZPnWQd1I3TxYp0wMkQZ4fm3zYBZ7fjx39hHceJAYWScgpViJGGZ1ICw/VE6vk1 HjZ1gwZcf5E5CLhg5o3lwCUd3VsrLZ1IJpd7iKxIWRkT9lew+6V3meKv9VFShWOnQ0rn ISkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Xu1h87hamRnF+EsS6h+ZDgCcqWHt60Y10T8noyh+MdI=; b=KIqljZsHn9jURHRasGK1uYz5qkXG6AXKl3VCKnlCcFuACJa5n39QyURT1Z3aDFdovE apETfCZH22XAEJrOg+9O7VMx92S5G9LEmnIYYQaODRO7PrDFcdA2WjNNt5g/22dT6nuY 8FvtzOn7eqWn1r0MnEmBqi3uQ1ZwSAc5vPFtEXEYtM/VR+t5u80fQivNGFiSTtb3RU6M VXtxEY4QA1yVKHFRT326naEkodcHOCffBG3L+21HZscovwwg5yB6KJnT97N8c+jVzIFO ow2VsU+K0iho0WD9C2+4rxMG4lXafyS3+yrECCaLtVUw47ZL1wXI1Bp6NKXTsUYXVUOi 9P0A== X-Gm-Message-State: AOAM533VT6x35f3pIOSds8VzBCdLFZUtdPDdqi92qwDXeA5isoC3ZpkC 7AAeP4SYnuNXBNQBALAQ01jBmhrNPc8= X-Google-Smtp-Source: ABdhPJwhokmGn9iKH+CVqIG1mipCeAPvTaCljVAIsq7pk4IErwdI7WwNhohvdruK8E2VJu2kRjgXhQ== X-Received: by 2002:a17:907:86a3:b0:6da:870c:af44 with SMTP id qa35-20020a17090786a300b006da870caf44mr39128770ejc.445.1648640500282; Wed, 30 Mar 2022 04:41:40 -0700 (PDT) Received: from localhost.localdomain (92-110-137-10.cable.dynamic.v4.ziggo.nl. [92.110.137.10]) by smtp.gmail.com with ESMTPSA id n27-20020a1709062bdb00b006da975173bfsm8291057ejg.170.2022.03.30.04.41.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Mar 2022 04:41:39 -0700 (PDT) From: Mark Gaiser To: ffmpeg-devel@ffmpeg.org Date: Wed, 30 Mar 2022 13:40:39 +0200 Message-Id: <20220330114039.69510-2-markg85@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220330114039.69510-1-markg85@gmail.com> References: <20220330114039.69510-1-markg85@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 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 Cc: Mark Gaiser 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: VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgotIGZmcGxheSBpcGZzOi8vPGNpZD4KLSBmZnBs YXkgaXBuczovLzxjaWQ+CgpJUEZTIGRhdGEgY2FuIGJlIHBsYXllZCBmcm9tIHNvIGNhbGxlZCAi aXBmcyBnYXRld2F5cyIuCkEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBhIHdlYnNlcnZlciB0aGF0 IGdpdmVzIGFjY2VzcyB0byB0aGUKZGlzdHJpYnV0ZWQgSVBGUyBuZXR3b3JrLgoKVGhpcyBwcm90 b2NvbCBzdXBwb3J0IChpcGZzIGFuZCBpcG5zKSB0aGVyZWZvcmUgdHJhbnNsYXRlcwppcGZzOi8v IGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwp0aGVu IGhhbmRsZWQgYnkgdGhlIGh0dHAgcHJvdG9jb2wuIEl0IGNvdWxkIGFsc28gYmUgaHR0cHMKZGVw ZW5kaW5nIG9uIHRoZSBnYXRld2F5IHByb3ZpZGVkLgoKVG8gdXNlIHRoaXMgcHJvdG9jb2wsIGEg Z2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgpJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0 byBmaW5kIGl0IGluIHlvdXIKJEhPTUUvLmlwZnMvZ2F0ZXdheSBmaWxlLiBUaGUgd2F5cyB0byBz ZXQgaXQgbWFudWFsbHkgYXJlOgoxLiBEZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0 ZXdheS4KMi4gRGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8g dGhlIGdhdGV3YXkuCjMuIERlZmluZSAkSVBGU19QQVRIIGFuZCBwb2ludCBpdCB0byB0aGUgSVBG UyBkYXRhIHBhdGguCjQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xk ZXIgKHVuZGVyICRIT01FLy5pcGZzKS4KClNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJr Zzg1QGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICAyICsKIGRv Yy9wcm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwogbGliYXZmb3JtYXQvTWFrZWZpbGUg ICAgICB8ICAgMiArCiBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzA5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwg ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMzQ1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv Y29uZmlndXJlCmluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5MDk1N2EgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTM1NzksNiArMzU3OSw4IEBAIHVkcF9wcm90b2NvbF9z ZWxlY3Q9Im5ldHdvcmsiCiB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKIHVuaXhf cHJvdG9jb2xfZGVwcz0ic3lzX3VuX2giCiB1bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIK K2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKK2lwbnNfcHJvdG9jb2xfc2Vs ZWN0PSJodHRwc19wcm90b2NvbCIKIAogIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwogbGli YW1xcF9wcm90b2NvbF9kZXBzPSJsaWJyYWJiaXRtcSIKZGlmZiAtLWdpdCBhL2RvYy9wcm90b2Nv bHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQppbmRleCBkMjA3ZGYwYjUyLi43YzljMGE0ODA4 IDEwMDY0NAotLS0gYS9kb2MvcHJvdG9jb2xzLnRleGkKKysrIGIvZG9jL3Byb3RvY29scy50ZXhp CkBAIC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgogCiBAZW5kIHRhYmxlCiAK K0BzZWN0aW9uIGlwZnMKKworSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3Rv Y29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzIHN0b3JlZCAKK29uIHRoZSBJUEZTIG5l dHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRwKHMpIGVuZHBv aW50cy4KK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29scyAoaXBm czovLyBhbmQgaXBuczovLykgdG8gYmUgc2VuZCAKK3RvIHN1Y2ggYSBnYXRld2F5LiBVc2VycyBj YW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2ggbWVhbnMgdGhpcyAKK3By b3RvY29sIHdpbGwgdXNlIHlvdXIgbG9jYWwgbWFjaGluZSBnYXRld2F5IHRvIGFjY2VzcyBmaWxl cyBvbiB0aGUgSVBGUyBuZXR3b3JrLgorCitJZiBhIHVzZXIgZG9lc24ndCBoYXZlIGEgbm9kZSBv ZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkgZHdlYi5saW5rIGlzIAordXNlZCBi eSBkZWZhdWx0LgorCitZb3UgY2FuIHVzZSB0aGlzIHByb3RvY29sIGluIDIgd2F5cy4gVXNpbmcg SVBGUzoKK0BleGFtcGxlCitmZnBsYXkgaXBmczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnlo Znp1NXJ3bzc0TUVrVkRZQW1GNVQKK0BlbmQgZXhhbXBsZQorCitPciB0aGUgSVBOUyBwcm90b2Nv bCAoSVBOUyBpcyBtdXRhYmxlIElQRlMpOgorQGV4YW1wbGUKK2ZmcGxheSBpcG5zOi8vUW1iR3RK ZzIzc2todkZtdTltSmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAorQGVuZCBleGFtcGxlCisK K1lvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKKworQHRhYmxlIEBv cHRpb24KKworQGl0ZW0gZ2F0ZXdheQorRGVmaW5lcyB0aGUgZ2F0ZXdheSB0byB1c2UuIFdoZW4g bm90aGluZyBpcyBwcm92aWRlZCB0aGUgcHJvdG9jb2wgd2lsbCBmaXJzdCB0cnkgCit5b3VyIGxv Y2FsIGdhdGV3YXkuIElmIHRoYXQgZmFpbHMgZHdlYi5saW5rIHdpbGwgYmUgdXNlZC4KKworQGVu ZCB0YWJsZQogCiBAYyBtYW4gZW5kIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv TWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCBkNzE4MmQ2YmQ4Li5lMzIzM2Zk N2FjIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9N YWtlZmlsZQpAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChDT05GSUdfU1JUUF9QUk9UT0NPTCkg ICAgICAgICAgICAgKz0gc3J0cHByb3RvLm8gc3J0cC5vCiBPQkpTLSQoQ09ORklHX1NVQkZJTEVf UFJPVE9DT0wpICAgICAgICAgICs9IHN1YmZpbGUubwogT0JKUy0kKENPTkZJR19URUVfUFJPVE9D T0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRlZV9jb21tb24ubwogT0JKUy0kKENPTkZJ R19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0Y3AubworT0JKUy0kKENPTkZJR19JUEZT X1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCitPQkpTLSQoQ09ORklHX0lQ TlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KIFRMUy1PQkpTLSQoQ09O RklHX0dOVVRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2dudXRscy5vCiBUTFMtT0JKUy0kKENP TkZJR19MSUJUTFMpICAgICAgICAgICAgICAgICs9IHRsc19saWJ0bHMubwogVExTLU9CSlMtJChD T05GSUdfTUJFRFRMUykgICAgICAgICAgICAgICArPSB0bHNfbWJlZHRscy5vCmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xYTAzOTU4OWMwCi0tLSAvZGV2 L251bGwKKysrIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpAQCAtMCwwICsxLDMwOSBAQAor LyoKKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdh eS4KKyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKKyNp bmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0Lmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL3RyZWUuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2lmIEhB VkVfSU9fSAorI2luY2x1ZGUgPGlvLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5j bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCisjaW5jbHVk ZSAidXJsLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKwor dHlwZWRlZiBzdHJ1Y3QgSVBGU0dhdGV3YXlDb250ZXh0IHsKKyAgICBBVkNsYXNzICpjbGFzczsK KyAgICBVUkxDb250ZXh0ICppbm5lcjsKKyAgICAvLyBJcyBmaWxsZWQgYnkgdGhlIC1nYXRld2F5 IGFyZ3VtZW50IGFuZCBub3QgY2hhbmdlZCBhZnRlci4KKyAgICBjaGFyICpnYXRld2F5OworICAg IC8vIElmIHRoZSBhYm92ZSBnYXRld2F5IGlzIG5vbiBudWxsLCBpdCB3aWxsIGJlIGNvcGllZCBp bnRvIHRoaXMgYnVmZmVyLgorICAgIC8vIEVsc2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRo ZSBhdXRvIGRldGVjdGVkIGdhdGV3YXkuCisgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHRoZSBnYXRl d2F5IHRvIHVzZSB3aWxsIGJlIGluIHRoaXMgYnVmZmVyLgorICAgIGNoYXIgZ2F0ZXdheV9idWZm ZXJbUEFUSF9NQVhdOworfSBJUEZTR2F0ZXdheUNvbnRleHQ7CisKKy8vIEEgYmVzdC1lZmZvcnQg d2F5IHRvIGZpbmQgdGhlIElQRlMgZ2F0ZXdheS4KKy8vIE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0 ZSBnYXRld2F5IGlzIHNldC4gSXQncyBub3QgYWN0dWFsbHkgcmVxdWVzdGVkCisvLyAoaHR0cCBj YWxsKSB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHNsb3dkb3duIGluIHN0YXJ0dXAuIEEgcG90ZW50 aWFsIHRpbWVvdXQKKy8vIGlzIGhhbmRsZWQgYnkgdGhlIEhUVFAgcHJvdG9jb2wuCitzdGF0aWMg aW50IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShVUkxDb250ZXh0ICpoKQoreworICAgIElQRlNHYXRl d2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAgICBjaGFyIGlwZnNfZnVsbF9kYXRhX2Zv bGRlcltQQVRIX01BWF07CisgICAgY2hhciBpcGZzX2dhdGV3YXlfZmlsZVtQQVRIX01BWF07Cisg ICAgc3RydWN0IHN0YXQgc3Q7CisgICAgaW50IHN0YXRfcmV0ID0gMDsKKyAgICBpbnQgcmV0ID0g QVZFUlJPUihFSU5WQUwpOworICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5VTEw7CisKKyAgICAv LyBUZXN0ICRJUEZTX0dBVEVXQVkuCisgICAgaWYgKGdldGVudigiSVBGU19HQVRFV0FZIikgIT0g TlVMTCkgeworICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihj LT5nYXRld2F5X2J1ZmZlciksICIlcyIsCisgICAgICAgICAgICAgICAgICAgICBnZXRlbnYoIklQ RlNfR0FURVdBWSIpKSA+PSBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKSB7CisgICAgICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGU19HQVRFV0FZIGVudmlyb25tZW50 IHZhcmlhYmxlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoLiBXZSBhbGxvdyBhIG1heCBvZiAl enUgY2hhcmFjdGVyc1xuIiwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7CisgICAgICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAg fQorCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZQorICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdBWSBpcyBlbXB0eS5cbiIp OworCisgICAgLy8gV2UgbmVlZCB0byBrbm93IHRoZSBJUEZTIGZvbGRlciB0byAtIGV2ZW50dWFs bHkgLSByZWFkIHRoZSBjb250ZW50cyBvZgorICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGlj aCB3b3VsZCB0ZWxsIHVzIHRoZSBnYXRld2F5IHRvIHVzZS4KKyAgICBpZiAoZ2V0ZW52KCJJUEZT X1BBVEgiKSA9PSBOVUxMKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBG U19QQVRIIGlzIGVtcHR5LlxuIik7CisKKyAgICAgICAgLy8gVHJ5IHZpYSB0aGUgaG9tZSBmb2xk ZXIuCisgICAgICAgIGlmIChnZXRlbnYoIkhPTUUiKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5LlxuIik7 CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZlcmlmeSB0aGUgY29tcG9zZWQgcGF0aCBmaXRz LgorICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCBzaXplb2YoaXBm c19mdWxsX2RhdGFfZm9sZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICIlcy8uaXBmcy8iLCBn ZXRlbnYoIkhPTUUiKSkgPj0gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpIHsKKyAgICAg ICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0aCBleGNl ZWRzIHRoZSBtYXggcGF0aCBsZW5ndGggKCV6dSlcbiIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9m b2xkZXIpKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAg IGdvdG8gZXJyOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgorICAg ICAgICAvLyBJdCBzaG91bGQgZXhpc3QgaW4gYSBkZWZhdWx0IElQRlMgc2V0dXAgd2hlbiBydW4g YXMgbG9jYWwgdXNlci4KKyNpZm5kZWYgX1dJTjMyCisgICAgICAgIHN0YXRfcmV0ID0gc3RhdChp cGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7CisjZWxzZQorICAgICAgICBzdGF0X3JldCA9IHdp bjMyX3N0YXQoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCAmc3QpOworI2VuZGlmCisgICAgICAgIGlm IChzdGF0X3JldCA8IDApIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlVu YWJsZSB0byBmaW5kIElQRlMgZm9sZGVyLiBXZSB0cmllZDpcbiIpOworICAgICAgICAgICAgYXZf bG9nKGgsIEFWX0xPR19JTkZPLCAiLSAkSVBGU19QQVRILCB3aGljaCB3YXMgZW1wdHkuXG4iKTsK KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwg dXJpOiAlcykgd2hpY2ggZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcik7 CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7CisgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzbnByaW50ZihpcGZzX2Z1 bGxfZGF0YV9mb2xkZXIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLCAiJXMiLAorICAg ICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfUEFUSCIpKSA+PSBzaXplb2YoaXBmc19mdWxsX2Rh dGFfZm9sZGVyKSkgeworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhl IElQRlNfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0 aC4gV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsIHNpemVvZihjLT5nYXRld2F5 X2J1ZmZlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8vIENvcHkgdGhlIGZ1bGx5 IGNvbXBvc2VkIGdhdGV3YXkgcGF0aCBpbnRvIGlwZnNfZ2F0ZXdheV9maWxlLgorICAgIGlmIChz bnByaW50ZihpcGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSwgIiVz Z2F0ZXdheSIsCisgICAgICAgICAgICAgICAgIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikgPj0gc2l6 ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSkgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzIHRoZSBtYXggcGF0aCBsZW5n dGggKCV6dSlcbiIsIHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkpOworICAgICAgICByZXQgPSBB VkVSUk9SKEVOT0VOVCk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIEdldCB0 aGUgY29udGVudHMgb2YgdGhlIGdhdGV3YXkgZmlsZS4KKyAgICBnYXRld2F5X2ZpbGUgPSBhdl9m b3Blbl91dGY4KGlwZnNfZ2F0ZXdheV9maWxlLCAiciIpOworICAgIGlmICghZ2F0ZXdheV9maWxl KSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkg ZmlsZSAoZnVsbCB1cmk6ICVzKSBkb2Vzbid0IGV4aXN0LiBJcyB0aGUgZ2F0ZXdheSBlbmFibGVk P1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7 CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAo ZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUgbWFyaykuCisgICAgZmdldHMoYy0+Z2F0ZXdheV9idWZm ZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLCBnYXRld2F5X2ZpbGUpOworCisgICAg Ly8gUmVwbGFjZSB0aGUgbGFzdCBjaGFyIHdpdGggXDAKKyAgICBjLT5nYXRld2F5X2J1ZmZlcltz aXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpIC0gMV0gPSAwOworCisgICAgLy8gUmVwbGFjZSBmaXJz dCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxpbmUgd2l0aCBcMAorICAgIGMtPmdhdGV3YXlfYnVmZmVy W3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZmZXIsICJcciIpXSA9IDA7CisgICAgYy0+Z2F0ZXdheV9i dWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxuIildID0gMDsKKworICAgIC8vIElm IHN0cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZSBo YXZlIGEKKyAgICAvLyBwb3RlbnRpYWwgZ2F0ZXdheSB1cmwuCisgICAgaWYgKHN0cmxlbihjLT5n YXRld2F5X2J1ZmZlcikgPCAxKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKSBhcHBlYXJzIHRvIGJlIGVtcHR5 LiBJcyB0aGUgZ2F0ZXdheSBzdGFydGVkP1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZSB7 CisgICAgICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29tZXRo aW5nIHRoYXQgbG9va3MgdmFsaWQuCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJy OworICAgIH0KKworZXJyOgorICAgIGlmIChnYXRld2F5X2ZpbGUpCisgICAgICAgIGZjbG9zZShn YXRld2F5X2ZpbGUpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB0cmFuc2xh dGVfaXBmc190b19odHRwKFVSTENvbnRleHQgKmgsIGNvbnN0IGNoYXIgKnVyaSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlv bnMpCit7CisgICAgY29uc3QgY2hhciAqaXBmc19jaWQ7CisgICAgY2hhciAqZnVsbHVyaSA9IE5V TEw7CisgICAgaW50IHJldDsKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2Rh dGE7CisKKyAgICAvLyBUZXN0IGZvciBpcGZzOi8vLCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczou IFRoaXMgcHJlZml4IGlzIHN0cmlwcGVkIGZyb20KKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcg anVzdCB0aGUgQ0lEIGluIGlwZnNfY2lkLgorICAgIGludCBpc19pcGZzID0gYXZfc3RyaXN0YXJ0 KHVyaSwgImlwZnM6Ly8iLCAmaXBmc19jaWQpOworICAgIGludCBpc19pcG5zID0gYXZfc3RyaXN0 YXJ0KHVyaSwgImlwbnM6Ly8iLCAmaXBmc19jaWQpOworCisgICAgLy8gV2UgbXVzdCBoYXZlIGVp dGhlciBpcG5zIG9yIGlwZnMuCisgICAgaWYgKCFpc19pcGZzICYmICFpc19pcG5zKSB7CisgICAg ICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVW5zdXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOworICAgICAgICBnb3RvIGVycjsKKyAg ICB9CisKKyAgICAvLyBJZiB0aGUgQ0lEIGhhcyBhIGxlbmd0aCBncmVhdGVyIHRoZW4gMCB0aGVu IHdlIGFzc3VtZSB3ZSBoYXZlIGEgcHJvcGVyIHdvcmtpbmcgb25lLgorICAgIC8vIEl0IGNvdWxk IHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxkIHNhdmUg dXMgYW5kCisgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5k bGVzIHRoaXMuCisgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkgPCAxKSB7CisgICAgICAgIGF2X2xv ZyhoLCBBVl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3QgYmUgcHJvdmlkZWQuXG4iKTsKKyAgICAg ICAgcmV0ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAg ICAvLyBQb3B1bGF0ZSBjLT5nYXRld2F5X2J1ZmZlciB3aXRoIHdoYXRldmVyIGlzIGluIGMtPmdh dGV3YXkKKyAgICBpZiAoYy0+Z2F0ZXdheSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzbnByaW50 ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKKyAg ICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZl cikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdh eSBwYXJhbWV0ZXIgaXMgdG9vIGxvbmcuIFdlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJz XG4iLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAgfSBlbHNl IHsKKyAgICAgICAgLy8gUG9wdWxhdGUgdGhlIElQRlMgZ2F0ZXdheSBpZiB3ZSBoYXZlIGFueS4K KyAgICAgICAgLy8gSWYgbm90LCBpbmZvcm0gdGhlIHVzZXIgaG93IHRvIHByb3Blcmx5IHNldCBv bmUuCisgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKKworICAgICAgICBp ZiAocmV0IDwgMSkgeworICAgICAgICAgICAgLy8gV2UgZmFsbGJhY2sgb24gZHdlYi5saW5rICht YW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgorICAgICAgICAgICAgc25wcmludGYoYy0+Z2F0ZXdh eV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksICJodHRwczovL2R3ZWIubGluayIp OworCisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJJUEZTIGRvZXMgbm90 IGFwcGVhciB0byBiZSBydW5uaW5nLiBZb3XigJlyZSBub3cgdXNpbmcgdGhlIHB1YmxpYyBnYXRl d2F5IGF0IGR3ZWIubGluay5cbiIpOworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZP LCAiSW5zdGFsbGluZyBJUEZTIGxvY2FsbHkgaXMgcmVjb21tZW5kZWQgdG8gaW1wcm92ZSBwZXJm b3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksIGFuZCBub3Qgc2hhcmUgYWxsIHlvdXIgYWN0aXZpdHkg d2l0aCBhIHNpbmdsZSBJUEZTIGdhdGV3YXkuXG4iKTsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfSU5GTywgIlRoZXJlIGFyZSBtdWx0aXBsZSBvcHRpb25zIHRvIGRlZmluZSB0aGlzIGdh dGV3YXkuXG4iKTsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIjEuIENhbGwg ZmZtcGVnIHdpdGggYSBnYXRld2F5IHBhcmFtLCB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2g6IC1n YXRld2F5IDx1cmw+LlxuIik7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIy LiBEZWZpbmUgYW4gJElQRlNfR0FURVdBWSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBm dWxsIEhUVFAgVVJMIHRvIHRoZSBnYXRld2F5IHdpdGhvdXQgdHJhaWxpbmcgZm9yd2FyZCBzbGFz aC5cbiIpOworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiMy4gRGVmaW5lIGFu ICRJUEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZT IGRhdGEgcGF0aCAtIHRoaXMgaXMgdHlwaWNhbGx5IH4vLmlwZnNcbiIpOworICAgICAgICB9Cisg ICAgfQorCisgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBzdGFydHMgd2l0aCBlaXRoZXIgaHR0 cDovLyBvciBodHRwczovLworICAgIGlmIChhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIs ICJodHRwOi8vIiwgTlVMTCkgPT0gMAorICAgICAgICAmJiBhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdh eV9idWZmZXIsICJodHRwczovLyIsIE5VTEwpID09IDApIHsKKyAgICAgICAgYXZfbG9nKGgsIEFW X0xPR19XQVJOSU5HLCAiVGhlIGdhdGV3YXkgVVJMIGRpZG4ndCBzdGFydCB3aXRoIGh0dHA6Ly8g b3IgaHR0cHM6Ly8gYW5kIGlzIHRoZXJlZm9yZSBpbnZhbGlkLlxuIik7CisgICAgICAgIHJldCA9 IEFWRVJST1IoRUlMU0VRKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gQ29u Y2F0ZW5hdGUgdGhlIHVybC4KKyAgICAvLyBUaGlzIGVuZHMgdXAgd2l0aCBzb21ldGhpbmcgbGlr ZTogaHR0cDovL2xvY2FsaG9zdDo4MDgwL2lwZnMvUW0uLi4uLgorICAgIC8vIFRoZSBmb3JtYXQg b2YgIiVzJXMlcyVzIiBpcyB0aGUgZm9sbG93aW5nOgorICAgIC8vIDFzdCAlcyA9IFRoZSBnYXRl d2F5LgorICAgIC8vIDJuZCAlcyA9IElmIHRoZSBnYXRld2F5IGRpZG4ndCBlbmQgaW4gYSBzbGFz aCwgYWRkIGEgIi8iLiBPdGhlcndpc2UgaXQncyBhbiBlbXB0eSBzdHJpbmcKKyAgICAvLyAzcmQg JXMgPSBFaXRoZXIgaXBucy8gb3IgaXBmcy8uCisgICAgLy8gNHRoICVzID0gVGhlIElQRlMgQ0lE IChRbS4uLiwgYmFmeS4uLiwgLi4uKS4KKyAgICBmdWxsdXJpID0gYXZfYXNwcmludGYoIiVzJXMl cyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheV9idWZmZXIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIChjLT5nYXRld2F5X2J1ZmZlcltzdHJsZW4oYy0+Z2F0ZXdh eV9idWZmZXIpIC0gMV0gPT0gJy8nKSA/ICIiIDogIi8iLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAoaXNfaXBucykgPyAiaXBucy8iIDogImlwZnMvIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaXBmc19jaWQpOworCisgICAgLy8gUGFzcyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3Mg cHJvdG9jb2wgaGFuZGxlci4KKyAgICBpZiAoKHJldCA9IGZmdXJsX29wZW5fd2hpdGVsaXN0KCZj LT5pbm5lciwgZnVsbHVyaSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmaC0+aW50ZXJydXB0X2NhbGxiYWNrLCBvcHRpb25zLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfYmxhY2tsaXN0LCBoKSkKKyAgICAgICAg PCAwKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0byBvcGVu IHJlc291cmNlOiAlc1xuIiwgZnVsbHVyaSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKwor ZXJyOgorICAgIGF2X2ZyZWUoZnVsbHVyaSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBpcGZzX3JlYWQoVVJMQ29udGV4dCAqaCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6 ZSkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisgICAgcmV0 dXJuIGZmdXJsX3JlYWQoYy0+aW5uZXIsIGJ1Ziwgc2l6ZSk7Cit9CisKK3N0YXRpYyBpbnQ2NF90 IGlwZnNfc2VlayhVUkxDb250ZXh0ICpoLCBpbnQ2NF90IHBvcywgaW50IHdoZW5jZSkKK3sKKyAg ICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisgICAgcmV0dXJuIGZmdXJs X3NlZWsoYy0+aW5uZXIsIHBvcywgd2hlbmNlKTsKK30KKworc3RhdGljIGludCBpcGZzX2Nsb3Nl KFVSTENvbnRleHQgKmgpCit7CisgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9k YXRhOworICAgIHJldHVybiBmZnVybF9jbG9zZXAoJmMtPmlubmVyKTsKK30KKworI2RlZmluZSBP RkZTRVQoeCkgb2Zmc2V0b2YoSVBGU0dhdGV3YXlDb250ZXh0LCB4KQorCitzdGF0aWMgY29uc3Qg QVZPcHRpb24gb3B0aW9uc1tdID0geworICAgIHsiZ2F0ZXdheSIsICJUaGUgZ2F0ZXdheSB0byBh c2sgZm9yIElQRlMgZGF0YS4iLCBPRkZTRVQoZ2F0ZXdheSksIEFWX09QVF9UWVBFX1NUUklORywg ey5zdHIgPSBOVUxMfSwgMCwgMCwgQVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFSQU19LAorICAgIHtO VUxMfSwKK307CisKK3N0YXRpYyBjb25zdCBBVkNsYXNzIGlwZnNfY29udGV4dF9jbGFzcyA9IHsK KyAgICAuY2xhc3NfbmFtZSAgID0gIklQRlMiLAorICAgIC5pdGVtX25hbWUgICAgPSBhdl9kZWZh dWx0X2l0ZW1fbmFtZSwKKyAgICAub3B0aW9uICAgICAgID0gb3B0aW9ucywKKyAgICAudmVyc2lv biAgICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAorfTsKKworY29uc3QgVVJMUHJvdG9jb2wg ZmZfaXBmc19wcm90b2NvbCA9IHsKKyAgICAubmFtZSAgICAgICAgICAgICA9ICJpcGZzIiwKKyAg ICAudXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAsCisgICAgLnVybF9y ZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCisgICAgLnVybF9zZWVrICAgICAgICAgPSBpcGZzX3Nl ZWssCisgICAgLnVybF9jbG9zZSAgICAgICAgPSBpcGZzX2Nsb3NlLAorICAgIC5wcml2X2RhdGFf c2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCisgICAgLnByaXZfZGF0YV9jbGFz cyAgPSAmaXBmc19jb250ZXh0X2NsYXNzLAorfTsKKworY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBu c19wcm90b2NvbCA9IHsKKyAgICAubmFtZSAgICAgICAgICAgICA9ICJpcG5zIiwKKyAgICAudXJs X29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAsCisgICAgLnVybF9yZWFkICAg ICAgICAgPSBpcGZzX3JlYWQsCisgICAgLnVybF9zZWVrICAgICAgICAgPSBpcGZzX3NlZWssCisg ICAgLnVybF9jbG9zZSAgICAgICAgPSBpcGZzX2Nsb3NlLAorICAgIC5wcml2X2RhdGFfc2l6ZSAg ID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCisgICAgLnByaXZfZGF0YV9jbGFzcyAgPSAm aXBmc19jb250ZXh0X2NsYXNzLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3Byb3RvY29s cy5jIGIvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKaW5kZXggZDA3NTYzY2QwYy4uNmVlNjJhNTk4 YSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKKysrIGIvbGliYXZmb3JtYXQv cHJvdG9jb2xzLmMKQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZm X2xpYnNydF9wcm90b2NvbDsKIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzc2hfcHJv dG9jb2w7CiBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic21iY2xpZW50X3Byb3RvY29s OwogZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnptcV9wcm90b2NvbDsKK2V4dGVybiBj b25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sOworZXh0ZXJuIGNvbnN0IFVSTFByb3Rv Y29sIGZmX2lwbnNfcHJvdG9jb2w7CiAKICNpbmNsdWRlICJsaWJhdmZvcm1hdC9wcm90b2NvbF9s aXN0LmMiCiAKLS0gCjIuMzUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRv IHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVx dWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=