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 E417D48CF2 for ; Fri, 23 Feb 2024 14:32:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8357668C8F6; Fri, 23 Feb 2024 16:31:44 +0200 (EET) Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 863A168C62C for ; Fri, 23 Feb 2024 16:31:35 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=XqOvu/6j; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 5FF6B4D42 for ; Fri, 23 Feb 2024 15:31:32 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 9XkSJ8-fYWu5 for ; Fri, 23 Feb 2024 15:31:31 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1708698687; bh=40PdmaJswHoZqnkCiostZrwgrnd0xazd3x1oTTgDV3A=; h=From:To:Subject:Date:In-Reply-To:References:From; b=XqOvu/6jdszvcWsMfZ2kWoQrTBmIcL7HQoBZj3x4bAUJztCNJv3GbgU3jtxrwARxs a7phBsRjV2ARu+QE6ctgo+CjHIfRfWdlNjIpERhzilTWFY+8lDwaCsKNl5K1kvYeEs ue0FLEavWlUG6azPNQKHwsv5e8MNZGAWmApgE5LvMybd8uZZk7HA0aFuR+Y38pa652 Aio7eNUhiFnMAXz4fqPHhyMtxGjYfstDYLauQJTUVVdlAoiAjXCxHCnk2nqki9qgqI QnZCHEatldXtlzhTILV+JO7KA0hcT9tL6zGoVw1Fyg7E8gI0vNP/sn6So8kYPDc6FK gSi3flvrRWT9A== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 89AA64D44 for ; Fri, 23 Feb 2024 15:31:27 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 81E043A1DF9 for ; Fri, 23 Feb 2024 15:31:22 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 23 Feb 2024 14:58:37 +0100 Message-ID: <20240223143115.16521-16-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240223143115.16521-1-anton@khirnov.net> References: <20240223143115.16521-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 15/38] lavu/opt: add array options 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: QVZPcHRpb24uYXJyYXlfbWF4X3NpemUgaXMgYWRkZWQgYmVmb3JlIEFWT3B0aW9uLnVuaXQgdG8g YXZvaWQKaW5jcmVhc2luZyBzaXplb2YoQVZPcHRpb24pLgotLS0KIGRvYy9BUEljaGFuZ2VzICAg ICAgICB8ICAgMyArCiBsaWJhdnV0aWwvb3B0LmMgICAgICAgfCAzNDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBsaWJhdnV0aWwvb3B0LmggICAgICAgfCAgMjYg KysrKwogbGliYXZ1dGlsL3Rlc3RzL29wdC5jIHwgIDM0ICsrKysrCiB0ZXN0cy9yZWYvZmF0ZS9v cHQgICAgfCAgMjMgKystCiA1IGZpbGVzIGNoYW5nZWQsIDM4NSBpbnNlcnRpb25zKCspLCA0NSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvQVBJY2hhbmdlcyBiL2RvYy9BUEljaGFuZ2Vz CmluZGV4IGQyNjExMGIyODUuLjM3MWZkMmY0NjUgMTAwNjQ0Ci0tLSBhL2RvYy9BUEljaGFuZ2Vz CisrKyBiL2RvYy9BUEljaGFuZ2VzCkBAIC0yLDYgKzIsOSBAQCBUaGUgbGFzdCB2ZXJzaW9uIGlu Y3JlYXNlcyBvZiBhbGwgbGlicmFyaWVzIHdlcmUgb24gMjAyMy0wMi0wOQogCiBBUEkgY2hhbmdl cywgbW9zdCByZWNlbnQgZmlyc3Q6CiAKKzIwMjQtMDIteHggLSB4eHh4eHh4eHh4IC0gbGF2dSA1 OC54eC4xMDAgLSBvcHQuaAorICBBZGQgQVZfT1BUX0ZMQUdfQVJSQVkgYW5kIEFWT3B0aW9uLmFy cmF5X21heF9zaXplLgorCiAyMDI0LTAyLTIxIC0geHh4eHh4eHh4eCAtIGxhdmMgNjAuNDAuMTAw IC0gYXZjb2RlYy5oCiAgIERlcHJlY2F0ZSBBVl9JTlBVVF9CVUZGRVJfTUlOX1NJWkUgd2l0aG91 dCByZXBsYWNlbWVudC4KIApkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL29wdC5jIGIvbGliYXZ1dGls L29wdC5jCmluZGV4IGViYzgwNjNkYzYuLjg4MjM2NjYwYTEgMTAwNjQ0Ci0tLSBhL2xpYmF2dXRp bC9vcHQuYworKysgYi9saWJhdnV0aWwvb3B0LmMKQEAgLTU2LDYgKzU2LDc3IEBAIGNvbnN0IEFW T3B0aW9uICphdl9vcHRfbmV4dChjb25zdCB2b2lkICpvYmosIGNvbnN0IEFWT3B0aW9uICpsYXN0 KQogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9lbGVtX3Np emVbXSA9IHsKKyAgICBbQVZfT1BUX1RZUEVfRkxBR1NdICAgICAgICAgPSBzaXplb2YodW5zaWdu ZWQpLAorICAgIFtBVl9PUFRfVFlQRV9JTlRdICAgICAgICAgICA9IHNpemVvZihpbnQpLAorICAg IFtBVl9PUFRfVFlQRV9JTlQ2NF0gICAgICAgICA9IHNpemVvZihpbnQ2NF90KSwKKyAgICBbQVZf T1BUX1RZUEVfVUlOVDY0XSAgICAgICAgPSBzaXplb2YodWludDY0X3QpLAorICAgIFtBVl9PUFRf VFlQRV9ET1VCTEVdICAgICAgICA9IHNpemVvZihkb3VibGUpLAorICAgIFtBVl9PUFRfVFlQRV9G TE9BVF0gICAgICAgICA9IHNpemVvZihmbG9hdCksCisgICAgW0FWX09QVF9UWVBFX1NUUklOR10g ICAgICAgID0gc2l6ZW9mKGNoYXIgKiksCisgICAgW0FWX09QVF9UWVBFX1JBVElPTkFMXSAgICAg ID0gc2l6ZW9mKEFWUmF0aW9uYWwpLAorICAgIFtBVl9PUFRfVFlQRV9CSU5BUlldICAgICAgICA9 IHNpemVvZih1aW50OF90ICopLAorICAgIFtBVl9PUFRfVFlQRV9ESUNUXSAgICAgICAgICA9IHNp emVvZihBVkRpY3Rpb25hcnkgKiksCisgICAgW0FWX09QVF9UWVBFX0lNQUdFX1NJWkVdICAgID0g c2l6ZW9mKGludFsyXSksCisgICAgW0FWX09QVF9UWVBFX1ZJREVPX1JBVEVdICAgID0gc2l6ZW9m KEFWUmF0aW9uYWwpLAorICAgIFtBVl9PUFRfVFlQRV9QSVhFTF9GTVRdICAgICA9IHNpemVvZihp bnQpLAorICAgIFtBVl9PUFRfVFlQRV9TQU1QTEVfRk1UXSAgICA9IHNpemVvZihpbnQpLAorICAg IFtBVl9PUFRfVFlQRV9EVVJBVElPTl0gICAgICA9IHNpemVvZihpbnQ2NF90KSwKKyAgICBbQVZf T1BUX1RZUEVfQ09MT1JdICAgICAgICAgPSBzaXplb2YodWludDhfdFs0XSksCisjaWYgRkZfQVBJ X09MRF9DSEFOTkVMX0xBWU9VVAorICAgIFtBVl9PUFRfVFlQRV9DSEFOTkVMX0xBWU9VVF09IHNp emVvZih1aW50NjRfdCksCisjZW5kaWYKKyAgICBbQVZfT1BUX1RZUEVfQ0hMQVlPVVRdICAgICAg PSBzaXplb2YoQVZDaGFubmVsTGF5b3V0KSwKKyAgICBbQVZfT1BUX1RZUEVfQk9PTF0gICAgICAg ICAgPSBzaXplb2YoaW50KSwKK307CisKK3N0YXRpYyB1aW50OF90IG9wdF9hcnJheV9zZXAoY29u c3QgQVZPcHRpb24gKm8pCit7CisgICAgYXZfYXNzZXJ0MShvLT5mbGFncyAmIEFWX09QVF9GTEFH X0FSUkFZKTsKKyAgICByZXR1cm4gby0+ZGVmYXVsdF92YWwuc3RyID8gby0+ZGVmYXVsdF92YWwu c3RyWzBdIDogJywnOworfQorCitzdGF0aWMgdm9pZCAqb3B0X2FycmF5X3BlbGVtKGNvbnN0IEFW T3B0aW9uICpvLCB2b2lkICphcnJheSwgdW5zaWduZWQgaWR4KQoreworICAgIGF2X2Fzc2VydDEo by0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19BUlJBWSk7CisgICAgcmV0dXJuICh1aW50OF90ICopYXJy YXkgKyBpZHggKiBvcHRfZWxlbV9zaXplW28tPnR5cGVdOworfQorCitzdGF0aWMgdW5zaWduZWQg Km9wdF9hcnJheV9wY291bnQodm9pZCAqcGFycmF5KQoreworICAgIHJldHVybiAodW5zaWduZWQg KikoKHZvaWQgKiopcGFycmF5ICsgMSk7Cit9CisKK3N0YXRpYyB2b2lkIG9wdF9mcmVlX2VsZW0o Y29uc3QgQVZPcHRpb24gKm8sIHZvaWQgKnB0cikKK3sKKyAgICBzd2l0Y2ggKG8tPnR5cGUpIHsK KyAgICBjYXNlIEFWX09QVF9UWVBFX1NUUklORzoKKyAgICBjYXNlIEFWX09QVF9UWVBFX0JJTkFS WToKKyAgICAgICAgYXZfZnJlZXAocHRyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFW X09QVF9UWVBFX0RJQ1Q6CisgICAgICAgIGF2X2RpY3RfZnJlZSgoQVZEaWN0aW9uYXJ5ICoqKXB0 cik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBVl9PUFRfVFlQRV9DSExBWU9VVDoKKyAg ICAgICAgYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KChBVkNoYW5uZWxMYXlvdXQgKilwdHIpOwor ICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30K Kworc3RhdGljIHZvaWQgb3B0X2ZyZWVfYXJyYXkoY29uc3QgQVZPcHRpb24gKm8sIHZvaWQgKnBh cnJheSwgdW5zaWduZWQgKmNvdW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAq Y291bnQ7IGkrKykKKyAgICAgICAgb3B0X2ZyZWVfZWxlbShvLCBvcHRfYXJyYXlfcGVsZW0obywg Kih2b2lkICoqKXBhcnJheSwgaSkpOworCisgICAgYXZfZnJlZXAocGFycmF5KTsKKyAgICAqY291 bnQgPSAwOworfQorCiBzdGF0aWMgaW50IHJlYWRfbnVtYmVyKGNvbnN0IEFWT3B0aW9uICpvLCBj b25zdCB2b2lkICpkc3QsIGRvdWJsZSAqbnVtLCBpbnQgKmRlbiwgaW50NjRfdCAqaW50bnVtKQog ewogICAgIHN3aXRjaCAoby0+dHlwZSkgewpAQCAtNTgwLDYgKzY1MSw3NiBAQCBGRl9FTkFCTEVf REVQUkVDQVRJT05fV0FSTklOR1MKICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogfQogCitz dGF0aWMgaW50IG9wdF9zZXRfYXJyYXkodm9pZCAqb2JqLCB2b2lkICp0YXJnZXRfb2JqLCBjb25z dCBBVk9wdGlvbiAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWws IHZvaWQgKmRzdCkKK3sKKyAgICBjb25zdCBzaXplX3QgZWxlbV9zaXplID0gb3B0X2VsZW1fc2l6 ZVtvLT50eXBlXTsKKyAgICBjb25zdCB1aW50OF90ICAgICAgc2VwID0gb3B0X2FycmF5X3NlcChv KTsKKyAgICB1aW50OF90ICAgICAgICAgICAqc3RyID0gTlVMTDsKKworICAgIHZvaWQgICAgICAg KmVsZW1zID0gTlVMTDsKKyAgICB1bnNpZ25lZCBuYl9lbGVtcyA9IDA7CisgICAgaW50IHJldDsK KworICAgIGlmICh2YWwgJiYgKnZhbCkgeworICAgICAgICBzdHIgPSBhdl9tYWxsb2Moc3RybGVu KHZhbCkgKyAxKTsKKyAgICAgICAgaWYgKCFzdHIpCisgICAgICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOworICAgIH0KKworICAgIC8vIHNwbGl0IGFuZCB1bmVzY2FwZSB0aGUgc3RyaW5n CisgICAgd2hpbGUgKHZhbCAmJiAqdmFsKSB7CisgICAgICAgIHVpbnQ4X3QgKnAgPSBzdHI7Cisg ICAgICAgIHZvaWQgKnRtcDsKKworICAgICAgICBpZiAoby0+YXJyYXlfbWF4X3NpemUgJiYgbmJf ZWxlbXMgPj0gby0+YXJyYXlfbWF4X3NpemUpIHsKKyAgICAgICAgICAgIGF2X2xvZyhvYmosIEFW X0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGFzc2lnbiBtb3JlIHRoYW4g JXUgZWxlbWVudHMgdG8gYXJyYXkgb3B0aW9uICVzXG4iLAorICAgICAgICAgICAgICAgICAgIG8t PmFycmF5X21heF9zaXplLCBvLT5uYW1lKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlO VkFMKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAo OyAqdmFsOyB2YWwrKywgcCsrKSB7CisgICAgICAgICAgICBpZiAoKnZhbCA9PSAnXFwnICYmIHZh bFsxXSkKKyAgICAgICAgICAgICAgICB2YWwrKzsKKyAgICAgICAgICAgIGVsc2UgaWYgKCp2YWwg PT0gc2VwKSB7CisgICAgICAgICAgICAgICAgdmFsKys7CisgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcCA9ICp2YWw7CisgICAgICAgIH0KKyAgICAg ICAgKnAgPSAwOworCisgICAgICAgIHRtcCA9IGF2X3JlYWxsb2NfYXJyYXkoZWxlbXMsIG5iX2Vs ZW1zICsgMSwgZWxlbV9zaXplKTsKKyAgICAgICAgaWYgKCF0bXApIHsKKyAgICAgICAgICAgIHJl dCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQor ICAgICAgICBlbGVtcyA9IHRtcDsKKworICAgICAgICB0bXAgPSBvcHRfYXJyYXlfcGVsZW0obywg ZWxlbXMsIG5iX2VsZW1zKTsKKyAgICAgICAgbWVtc2V0KHRtcCwgMCwgZWxlbV9zaXplKTsKKwor ICAgICAgICByZXQgPSBvcHRfc2V0X2VsZW0ob2JqLCB0YXJnZXRfb2JqLCBvLCBzdHIsIHRtcCk7 CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBu Yl9lbGVtcysrOworICAgIH0KKyAgICBhdl9mcmVlcCgmc3RyKTsKKworICAgIG9wdF9mcmVlX2Fy cmF5KG8sIGRzdCwgb3B0X2FycmF5X3Bjb3VudChkc3QpKTsKKworICAgICooKHZvaWQgKiopZHN0 KSAgICAgICAgPSBlbGVtczsKKyAgICAqb3B0X2FycmF5X3Bjb3VudChkc3QpID0gbmJfZWxlbXM7 CisKKyAgICByZXR1cm4gMDsKK2ZhaWw6CisgICAgYXZfZnJlZXAoJnN0cik7CisgICAgb3B0X2Zy ZWVfYXJyYXkobywgJmVsZW1zLCAmbmJfZWxlbXMpOworICAgIHJldHVybiByZXQ7Cit9CisKIGlu dCBhdl9vcHRfc2V0KHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFs LCBpbnQgc2VhcmNoX2ZsYWdzKQogewogICAgIHZvaWQgKmRzdCwgKnRhcmdldF9vYmo7CkBAIC01 OTUsMTQgKzczNiwxNiBAQCBpbnQgYXZfb3B0X3NldCh2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKnZhbCwgaW50IHNlYXJjaF9mbGFncykKIAogICAgIGRzdCA9ICgodWlu dDhfdCAqKXRhcmdldF9vYmopICsgby0+b2Zmc2V0OwogCi0gICAgcmV0dXJuIG9wdF9zZXRfZWxl bShvYmosIHRhcmdldF9vYmosIG8sIHZhbCwgZHN0KTsKKyAgICByZXR1cm4gKChvLT5mbGFncyAm IEFWX09QVF9GTEFHX0FSUkFZKSA/CisgICAgICAgICAgICBvcHRfc2V0X2FycmF5IDogb3B0X3Nl dF9lbGVtKShvYmosIHRhcmdldF9vYmosIG8sIHZhbCwgZHN0KTsKIH0KIAogI2RlZmluZSBPUFRf RVZBTF9OVU1CRVIobmFtZSwgb3B0dHlwZSwgdmFydHlwZSkgICAgICAgICAgICAgICAgICAgICAg ICAgXAogaW50IGF2X29wdF9ldmFsXyAjIyBuYW1lKHZvaWQgKm9iaiwgY29uc3QgQVZPcHRpb24g Km8sICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKnZhbCwgdmFydHlwZSAqbmFtZSAjIyBfb3V0KSAgICAgICAgXAogeyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgIGlmICghbyB8fCBvLT50eXBlICE9IG9wdHR5cGUgfHwgby0+ZmxhZ3MgJiBBVl9PUFRf RkxBR19SRUFET05MWSkgICAgXAorICAgIGlmICghbyB8fCBvLT50eXBlICE9IG9wdHR5cGUgfHwg by0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19SRUFET05MWSB8fCAgXAorICAgICAgICBvLT5mbGFncyAm IEFWX09QVF9GTEFHX0FSUkFZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgIHJldHVybiBzZXRfc3RyaW5nX251bWJlcihvYmosIG9iaiwg bywgdmFsLCBuYW1lICMjIF9vdXQpOyAgICAgICAgICAgXAogfQpAQCAtNjIzLDcgKzc2Niw3IEBA IHN0YXRpYyBpbnQgc2V0X251bWJlcih2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJs ZSBudW0sIGludCBkZW4sIGludDY0X3QKICAgICBpZiAoIW8gfHwgIXRhcmdldF9vYmopCiAgICAg ICAgIHJldHVybiBBVkVSUk9SX09QVElPTl9OT1RfRk9VTkQ7CiAKLSAgICBpZiAoby0+ZmxhZ3Mg JiBBVl9PUFRfRkxBR19SRUFET05MWSkKKyAgICBpZiAoby0+ZmxhZ3MgJiAoQVZfT1BUX0ZMQUdf UkVBRE9OTFkgfCBBVl9PUFRfRkxBR19BUlJBWSkpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7CiAKICAgICBkc3QgPSAoKHVpbnQ4X3QgKil0YXJnZXRfb2JqKSArIG8tPm9mZnNldDsK QEAgLTY1Niw3ICs3OTksOCBAQCBpbnQgYXZfb3B0X3NldF9iaW4odm9pZCAqb2JqLCBjb25zdCBj aGFyICpuYW1lLCBjb25zdCB1aW50OF90ICp2YWwsIGludCBsZW4sIGludAogICAgIGlmICghbyB8 fCAhdGFyZ2V0X29iaikKICAgICAgICAgcmV0dXJuIEFWRVJST1JfT1BUSU9OX05PVF9GT1VORDsK IAotICAgIGlmIChvLT50eXBlICE9IEFWX09QVF9UWVBFX0JJTkFSWSB8fCBvLT5mbGFncyAmIEFW X09QVF9GTEFHX1JFQURPTkxZKQorICAgIGlmIChvLT50eXBlICE9IEFWX09QVF9UWVBFX0JJTkFS WSB8fAorICAgICAgICBvLT5mbGFncyAmIChBVl9PUFRfRkxBR19SRUFET05MWSB8IEFWX09QVF9G TEFHX0FSUkFZKSkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKIAogICAgIHB0ciA9 IGxlbiA/IGF2X21hbGxvYyhsZW4pIDogTlVMTDsKQEAgLTY4Miw5ICs4MjYsMTAgQEAgaW50IGF2 X29wdF9zZXRfaW1hZ2Vfc2l6ZSh2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGludCB3LCBp bnQgaCwgaW50IHNlYXJjaF8KIAogICAgIGlmICghbyB8fCAhdGFyZ2V0X29iaikKICAgICAgICAg cmV0dXJuIEFWRVJST1JfT1BUSU9OX05PVF9GT1VORDsKLSAgICBpZiAoby0+dHlwZSAhPSBBVl9P UFRfVFlQRV9JTUFHRV9TSVpFKSB7CisgICAgaWYgKG8tPnR5cGUgIT0gQVZfT1BUX1RZUEVfSU1B R0VfU0laRSB8fAorICAgICAgICBvLT5mbGFncyAmIEFWX09QVF9GTEFHX0FSUkFZKSB7CiAgICAg ICAgIGF2X2xvZyhvYmosIEFWX0xPR19FUlJPUiwKLSAgICAgICAgICAgICAgICJUaGUgdmFsdWUg c2V0IGJ5IG9wdGlvbiAnJXMnIGlzIG5vdCBhbiBpbWFnZSBzaXplLlxuIiwgby0+bmFtZSk7Cisg ICAgICAgICAgICAgICAiVGhlIHZhbHVlIHNldCBieSBvcHRpb24gJyVzJyBpcyBub3QgYSBzY2Fs YXIgaW1hZ2Ugc2l6ZS5cbiIsIG8tPm5hbWUpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOwogICAgIH0KICAgICBpZiAodzwwIHx8IGg8MCkgewpAQCAtNzA0LDkgKzg0OSwxMSBAQCBp bnQgYXZfb3B0X3NldF92aWRlb19yYXRlKHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgQVZS YXRpb25hbCB2YWwsIGludCBzZWFyYwogCiAgICAgaWYgKCFvIHx8ICF0YXJnZXRfb2JqKQogICAg ICAgICByZXR1cm4gQVZFUlJPUl9PUFRJT05fTk9UX0ZPVU5EOwotICAgIGlmIChvLT50eXBlICE9 IEFWX09QVF9UWVBFX1ZJREVPX1JBVEUpIHsKKyAgICBpZiAoby0+dHlwZSAhPSBBVl9PUFRfVFlQ RV9WSURFT19SQVRFIHx8CisgICAgICAgIG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfQVJSQVkpIHsK ICAgICAgICAgYXZfbG9nKG9iaiwgQVZfTE9HX0VSUk9SLAotICAgICAgICAgICAgICAgIlRoZSB2 YWx1ZSBzZXQgYnkgb3B0aW9uICclcycgaXMgbm90IGEgdmlkZW8gcmF0ZS5cbiIsIG8tPm5hbWUp OworICAgICAgICAgICAgICAgIlRoZSB2YWx1ZSBzZXQgYnkgb3B0aW9uICclcycgaXMgbm90IGEg c2NhbGFyIHZpZGVvIHJhdGUuXG4iLAorICAgICAgICAgICAgICAgby0+bmFtZSk7CiAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQogICAgIGlmICh2YWwubnVtIDw9IDAgfHwg dmFsLmRlbiA8PSAwKQpAQCAtNzI0LDkgKzg3MSwxMCBAQCBzdGF0aWMgaW50IHNldF9mb3JtYXQo dm9pZCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZm10LCBpbnQgc2VhcmNoX2ZsYWdzLAog CiAgICAgaWYgKCFvIHx8ICF0YXJnZXRfb2JqKQogICAgICAgICByZXR1cm4gQVZFUlJPUl9PUFRJ T05fTk9UX0ZPVU5EOwotICAgIGlmIChvLT50eXBlICE9IHR5cGUpIHsKKyAgICBpZiAoby0+dHlw ZSAhPSB0eXBlIHx8CisgICAgICAgIG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfQVJSQVkpIHsKICAg ICAgICAgYXZfbG9nKG9iaiwgQVZfTE9HX0VSUk9SLAotICAgICAgICAgICAgICAgIlRoZSB2YWx1 ZSBzZXQgYnkgb3B0aW9uICclcycgaXMgbm90IGEgJXMgZm9ybWF0IiwgbmFtZSwgZGVzYyk7Cisg ICAgICAgICAgICAgICAiVGhlIHZhbHVlIHNldCBieSBvcHRpb24gJyVzJyBpcyBub3QgYSBzY2Fs YXIgJXMgZm9ybWF0IiwgbmFtZSwgZGVzYyk7CiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZB TCk7CiAgICAgfQogCkBAIC03NjIsOSArOTEwLDEwIEBAIGludCBhdl9vcHRfc2V0X2NoYW5uZWxf bGF5b3V0KHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgaW50NjRfdCBjbCwgaW50IHNlYXJj CiAKICAgICBpZiAoIW8gfHwgIXRhcmdldF9vYmopCiAgICAgICAgIHJldHVybiBBVkVSUk9SX09Q VElPTl9OT1RfRk9VTkQ7Ci0gICAgaWYgKG8tPnR5cGUgIT0gQVZfT1BUX1RZUEVfQ0hBTk5FTF9M QVlPVVQpIHsKKyAgICBpZiAoby0+dHlwZSAhPSBBVl9PUFRfVFlQRV9DSEFOTkVMX0xBWU9VVCB8 fAorICAgICAgICBvLT5mbGFncyAmIEFWX09QVF9GTEFHX0FSUkFZKSB7CiAgICAgICAgIGF2X2xv ZyhvYmosIEFWX0xPR19FUlJPUiwKLSAgICAgICAgICAgICAgICJUaGUgdmFsdWUgc2V0IGJ5IG9w dGlvbiAnJXMnIGlzIG5vdCBhIGNoYW5uZWwgbGF5b3V0LlxuIiwgby0+bmFtZSk7CisgICAgICAg ICAgICAgICAiVGhlIHZhbHVlIHNldCBieSBvcHRpb24gJyVzJyBpcyBub3QgYSBzY2FsYXIgY2hh bm5lbCBsYXlvdXQuXG4iLCBvLT5uYW1lKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsKICAgICB9CiAgICAgKihpbnQ2NF90ICopKCgodWludDhfdCAqKXRhcmdldF9vYmopICsgby0+ b2Zmc2V0KSA9IGNsOwpAQCAtNzgyLDcgKzkzMSw3IEBAIGludCBhdl9vcHRfc2V0X2RpY3RfdmFs KHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgQVZEaWN0aW9uYXJ5ICp2YWwsCiAK ICAgICBpZiAoIW8gfHwgIXRhcmdldF9vYmopCiAgICAgICAgIHJldHVybiBBVkVSUk9SX09QVElP Tl9OT1RfRk9VTkQ7Ci0gICAgaWYgKG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfUkVBRE9OTFkpCisg ICAgaWYgKG8tPmZsYWdzICYgKEFWX09QVF9GTEFHX1JFQURPTkxZIHwgQVZfT1BUX0ZMQUdfQVJS QVkpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogCiAgICAgZHN0ID0gKEFWRGlj dGlvbmFyeSAqKikoKCh1aW50OF90ICopdGFyZ2V0X29iaikgKyBvLT5vZmZzZXQpOwpAQCAtODAy LDYgKzk1MSw4IEBAIGludCBhdl9vcHRfc2V0X2NobGF5b3V0KHZvaWQgKm9iaiwgY29uc3QgY2hh ciAqbmFtZSwKIAogICAgIGlmICghbyB8fCAhdGFyZ2V0X29iaikKICAgICAgICAgcmV0dXJuIEFW RVJST1JfT1BUSU9OX05PVF9GT1VORDsKKyAgICBpZiAoby0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19B UlJBWSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKIAogICAgIGRzdCA9IChBVkNo YW5uZWxMYXlvdXQqKSgodWludDhfdCopdGFyZ2V0X29iaiArIG8tPm9mZnNldCk7CiAKQEAgLTk1 NCw2ICsxMTA1LDY2IEBAIEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgIHJldHVy biByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgb3B0X2dldF9hcnJheShjb25zdCBBVk9wdGlvbiAqbywg dm9pZCAqZHN0LCB1aW50OF90ICoqb3V0X3ZhbCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjb3Vu dCA9ICpvcHRfYXJyYXlfcGNvdW50KGRzdCk7CisgICAgY29uc3QgdWludDhfdCAgICBzZXAgPSBv cHRfYXJyYXlfc2VwKG8pOworCisgICAgdWludDhfdCAqc3RyICAgICA9IE5VTEw7CisgICAgc2l6 ZV90ICAgc3RyX2xlbiA9IDA7CisgICAgaW50IHJldDsKKworICAgICpvdXRfdmFsID0gTlVMTDsK KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHVp bnQ4X3QgYnVmWzEyOF0sICpvdXQgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRfbGVuOworCisg ICAgICAgIHJldCA9IG9wdF9nZXRfZWxlbShvLCAmb3V0LCBzaXplb2YoYnVmKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9wdF9hcnJheV9wZWxlbShvLCAqKHZvaWQgKiopZHN0LCBpKSwg MCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworCisgICAg ICAgIG91dF9sZW4gPSBzdHJsZW4ob3V0KTsKKyAgICAgICAgaWYgKG91dF9sZW4gPiBTSVpFX01B WCAvIDIgLSAhIWkgfHwKKyAgICAgICAgICAgICEhaSArIG91dF9sZW4gKiAyID4gU0laRV9NQVgg LSBzdHJfbGVuIC0gMSkgeworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFUkFOR0UpOworICAg ICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKKyAgICAgICAgLy8gICAgICAgICAgICAg ICAgICAgICAgICAgdGVybWluYXRvciAgICAgZXNjYXBpbmcgIHNlcGFyYXRvcgorICAgICAgICAv LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaTICAgICAgICAgICAgIOKGkyAgICAg 4oaTCisgICAgICAgIHJldCA9IGF2X3JlYWxsb2NwKCZzdHIsIHN0cl9sZW4gKyAxICsgb3V0X2xl biAqIDIgKyAhIWkpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIGdvdG8gZmFp bDsKKworICAgICAgICAvLyBhZGQgc2VwYXJhdG9yIGlmIG5lZWRlZAorICAgICAgICBpZiAoaSkK KyAgICAgICAgICAgIHN0cltzdHJfbGVuKytdID0gc2VwOworCisgICAgICAgIC8vIGVzY2FwZSB0 aGUgZWxlbWVudAorICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgb3V0X2xlbjsgaisr KSB7CisgICAgICAgICAgICB1aW50OF90IHZhbCA9IG91dFtqXTsKKyAgICAgICAgICAgIGlmICh2 YWwgPT0gc2VwIHx8IHZhbCA9PSAnXFwnKQorICAgICAgICAgICAgICAgIHN0cltzdHJfbGVuKytd ID0gJ1xcJzsKKyAgICAgICAgICAgIHN0cltzdHJfbGVuKytdID0gdmFsOworICAgICAgICB9Cisg ICAgICAgIHN0cltzdHJfbGVuXSA9IDA7CisKK2ZhaWw6CisgICAgICAgIGlmIChvdXQgIT0gYnVm KQorICAgICAgICAgICAgYXZfZnJlZXAoJm91dCk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7Cisg ICAgICAgICAgICBhdl9mcmVlcCgmc3RyKTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg ICAgIH0KKyAgICB9CisKKyAgICAqb3V0X3ZhbCA9IHN0cjsKKworICAgIHJldHVybiAwOworfQor CiBpbnQgYXZfb3B0X2dldCh2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGludCBzZWFyY2hf ZmxhZ3MsIHVpbnQ4X3QgKipvdXRfdmFsKQogewogICAgIHZvaWQgKmRzdCwgKnRhcmdldF9vYmo7 CkBAIC05NjksOCArMTE4MCwxOSBAQCBpbnQgYXZfb3B0X2dldCh2b2lkICpvYmosIGNvbnN0IGNo YXIgKm5hbWUsIGludCBzZWFyY2hfZmxhZ3MsIHVpbnQ4X3QgKipvdXRfdmFsKQogCiAgICAgZHN0 ID0gKHVpbnQ4X3QgKil0YXJnZXRfb2JqICsgby0+b2Zmc2V0OwogCi0gICAgYnVmWzBdID0gMDsK KyAgICBpZiAoby0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19BUlJBWSkgeworICAgICAgICByZXQgPSBv cHRfZ2V0X2FycmF5KG8sIGRzdCwgb3V0X3ZhbCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAg ICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgaWYgKCEqb3V0X3ZhbCAmJiAhKHNlYXJjaF9m bGFncyAmIEFWX09QVF9BTExPV19OVUxMKSkgeworICAgICAgICAgICAgKm91dF92YWwgPSBhdl9z dHJkdXAoIiIpOworICAgICAgICAgICAgaWYgKCEqb3V0X3ZhbCkKKyAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAg fQogCisgICAgYnVmWzBdID0gMDsKICAgICBvdXQgPSBidWY7CiAgICAgcmV0ID0gb3B0X2dldF9l bGVtKG8sICZvdXQsIHNpemVvZihidWYpLCBkc3QsIHNlYXJjaF9mbGFncyk7CiAgICAgaWYgKHJl dCA8IDApCkBAIC05OTMsNiArMTIxNSw4IEBAIHN0YXRpYyBpbnQgZ2V0X251bWJlcih2b2lkICpv YmosIGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqbnVtLCBpbnQgKmRlbiwgaW50NjRfCiAgICAg Y29uc3QgQVZPcHRpb24gKm8gPSBhdl9vcHRfZmluZDIob2JqLCBuYW1lLCBOVUxMLCAwLCBzZWFy Y2hfZmxhZ3MsICZ0YXJnZXRfb2JqKTsKICAgICBpZiAoIW8gfHwgIXRhcmdldF9vYmopCiAgICAg ICAgIHJldHVybiBBVkVSUk9SX09QVElPTl9OT1RfRk9VTkQ7CisgICAgaWYgKG8tPmZsYWdzICYg QVZfT1BUX0ZMQUdfQVJSQVkpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAKICAg ICBkc3QgPSAoKHVpbnQ4X3QgKil0YXJnZXRfb2JqKSArIG8tPm9mZnNldDsKIApAQCAtMTA0OCw5 ICsxMjcyLDEwIEBAIGludCBhdl9vcHRfZ2V0X2ltYWdlX3NpemUodm9pZCAqb2JqLCBjb25zdCBj aGFyICpuYW1lLCBpbnQgc2VhcmNoX2ZsYWdzLCBpbnQgKndfCiAgICAgY29uc3QgQVZPcHRpb24g Km8gPSBhdl9vcHRfZmluZDIob2JqLCBuYW1lLCBOVUxMLCAwLCBzZWFyY2hfZmxhZ3MsICZ0YXJn ZXRfb2JqKTsKICAgICBpZiAoIW8gfHwgIXRhcmdldF9vYmopCiAgICAgICAgIHJldHVybiBBVkVS Uk9SX09QVElPTl9OT1RfRk9VTkQ7Ci0gICAgaWYgKG8tPnR5cGUgIT0gQVZfT1BUX1RZUEVfSU1B R0VfU0laRSkgeworICAgIGlmIChvLT50eXBlICE9IEFWX09QVF9UWVBFX0lNQUdFX1NJWkUgfHwK KyAgICAgICAgby0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19BUlJBWSkgewogICAgICAgICBhdl9sb2co b2JqLCBBVl9MT0dfRVJST1IsCi0gICAgICAgICAgICAgICAiVGhlIHZhbHVlIGZvciBvcHRpb24g JyVzJyBpcyBub3QgYW4gaW1hZ2Ugc2l6ZS5cbiIsIG5hbWUpOworICAgICAgICAgICAgICAgIlRo ZSB2YWx1ZSBmb3Igb3B0aW9uICclcycgaXMgbm90IGEgc2NhbGFyIGltYWdlIHNpemUuXG4iLCBu YW1lKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9CiAKQEAgLTEwODMs OSArMTMwOCwxMCBAQCBzdGF0aWMgaW50IGdldF9mb3JtYXQodm9pZCAqb2JqLCBjb25zdCBjaGFy ICpuYW1lLCBpbnQgc2VhcmNoX2ZsYWdzLCBpbnQgKm91dF9mbQogICAgIGNvbnN0IEFWT3B0aW9u ICpvID0gYXZfb3B0X2ZpbmQyKG9iaiwgbmFtZSwgTlVMTCwgMCwgc2VhcmNoX2ZsYWdzLCAmdGFy Z2V0X29iaik7CiAgICAgaWYgKCFvIHx8ICF0YXJnZXRfb2JqKQogICAgICAgICByZXR1cm4gQVZF UlJPUl9PUFRJT05fTk9UX0ZPVU5EOwotICAgIGlmIChvLT50eXBlICE9IHR5cGUpIHsKKyAgICBp ZiAoby0+dHlwZSAhPSB0eXBlIHx8CisgICAgICAgIG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfQVJS QVkpIHsKICAgICAgICAgYXZfbG9nKG9iaiwgQVZfTE9HX0VSUk9SLAotICAgICAgICAgICAgICAg IlRoZSB2YWx1ZSBmb3Igb3B0aW9uICclcycgaXMgbm90IGEgJXMgZm9ybWF0LlxuIiwgZGVzYywg bmFtZSk7CisgICAgICAgICAgICAgICAiVGhlIHZhbHVlIGZvciBvcHRpb24gJyVzJyBpcyBub3Qg YSBzY2FsYXIgJXMgZm9ybWF0LlxuIiwgZGVzYywgbmFtZSk7CiAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVJTlZBTCk7CiAgICAgfQogCkBAIC0xMTEyLDkgKzEzMzgsMTAgQEAgaW50IGF2X29wdF9n ZXRfY2hhbm5lbF9sYXlvdXQodm9pZCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgc2VhcmNo X2ZsYWdzLCBpbnQKICAgICBjb25zdCBBVk9wdGlvbiAqbyA9IGF2X29wdF9maW5kMihvYmosIG5h bWUsIE5VTEwsIDAsIHNlYXJjaF9mbGFncywgJnRhcmdldF9vYmopOwogICAgIGlmICghbyB8fCAh dGFyZ2V0X29iaikKICAgICAgICAgcmV0dXJuIEFWRVJST1JfT1BUSU9OX05PVF9GT1VORDsKLSAg ICBpZiAoby0+dHlwZSAhPSBBVl9PUFRfVFlQRV9DSEFOTkVMX0xBWU9VVCkgeworICAgIGlmIChv LT50eXBlICE9IEFWX09QVF9UWVBFX0NIQU5ORUxfTEFZT1VUIHx8CisgICAgICAgIG8tPmZsYWdz ICYgQVZfT1BUX0ZMQUdfQVJSQVkpIHsKICAgICAgICAgYXZfbG9nKG9iaiwgQVZfTE9HX0VSUk9S LAotICAgICAgICAgICAgICAgIlRoZSB2YWx1ZSBmb3Igb3B0aW9uICclcycgaXMgbm90IGEgY2hh bm5lbCBsYXlvdXQuXG4iLCBuYW1lKTsKKyAgICAgICAgICAgICAgICJUaGUgdmFsdWUgZm9yIG9w dGlvbiAnJXMnIGlzIG5vdCBhIHNjYWxhciBjaGFubmVsIGxheW91dC5cbiIsIG5hbWUpOwogICAg ICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIApAQCAtMTEzMSw5ICsxMzU4LDEw IEBAIGludCBhdl9vcHRfZ2V0X2NobGF5b3V0KHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwg aW50IHNlYXJjaF9mbGFncywgQVZDaGFubmVsCiAgICAgY29uc3QgQVZPcHRpb24gKm8gPSBhdl9v cHRfZmluZDIob2JqLCBuYW1lLCBOVUxMLCAwLCBzZWFyY2hfZmxhZ3MsICZ0YXJnZXRfb2JqKTsK ICAgICBpZiAoIW8gfHwgIXRhcmdldF9vYmopCiAgICAgICAgIHJldHVybiBBVkVSUk9SX09QVElP Tl9OT1RfRk9VTkQ7Ci0gICAgaWYgKG8tPnR5cGUgIT0gQVZfT1BUX1RZUEVfQ0hMQVlPVVQpIHsK KyAgICBpZiAoby0+dHlwZSAhPSBBVl9PUFRfVFlQRV9DSExBWU9VVCB8fAorICAgICAgICBvLT5m bGFncyAmIEFWX09QVF9GTEFHX0FSUkFZKSB7CiAgICAgICAgIGF2X2xvZyhvYmosIEFWX0xPR19F UlJPUiwKLSAgICAgICAgICAgICAgICJUaGUgdmFsdWUgZm9yIG9wdGlvbiAnJXMnIGlzIG5vdCBh IGNoYW5uZWwgbGF5b3V0LlxuIiwgbmFtZSk7CisgICAgICAgICAgICAgICAiVGhlIHZhbHVlIGZv ciBvcHRpb24gJyVzJyBpcyBub3QgYSBzY2FsYXIgY2hhbm5lbCBsYXlvdXQuXG4iLCBuYW1lKTsK ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9CiAKQEAgLTExNDksNyArMTM3 Nyw4IEBAIGludCBhdl9vcHRfZ2V0X2RpY3RfdmFsKHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFt ZSwgaW50IHNlYXJjaF9mbGFncywgQVZEaWN0aW9uCiAKICAgICBpZiAoIW8gfHwgIXRhcmdldF9v YmopCiAgICAgICAgIHJldHVybiBBVkVSUk9SX09QVElPTl9OT1RfRk9VTkQ7Ci0gICAgaWYgKG8t PnR5cGUgIT0gQVZfT1BUX1RZUEVfRElDVCkKKyAgICBpZiAoby0+dHlwZSAhPSBBVl9PUFRfVFlQ RV9ESUNUIHx8CisgICAgICAgIG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfQVJSQVkpCiAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAKICAgICBzcmMgPSAqKEFWRGljdGlvbmFyeSAqKiko KCh1aW50OF90ICopdGFyZ2V0X29iaikgKyBvLT5vZmZzZXQpOwpAQCAtMTE2NSw3ICsxMzk0LDgg QEAgaW50IGF2X29wdF9mbGFnX2lzX3NldCh2b2lkICpvYmosIGNvbnN0IGNoYXIgKmZpZWxkX25h bWUsIGNvbnN0IGNoYXIgKmZsYWdfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaWVsZCA/IGZpZWxkLT51bml0IDogTlVMTCwgMCwgMCk7CiAgICAgaW50NjRf dCByZXM7CiAKLSAgICBpZiAoIWZpZWxkIHx8ICFmbGFnIHx8IGZsYWctPnR5cGUgIT0gQVZfT1BU X1RZUEVfQ09OU1QgfHwKKyAgICBpZiAoIWZpZWxkIHx8ICEoZmllbGQtPmZsYWdzICYgQVZfT1BU X0ZMQUdfQVJSQVkpIHx8CisgICAgICAgICFmbGFnIHx8IGZsYWctPnR5cGUgIT0gQVZfT1BUX1RZ UEVfQ09OU1QgfHwKICAgICAgICAgYXZfb3B0X2dldF9pbnQob2JqLCBmaWVsZF9uYW1lLCAwLCAm cmVzKSA8IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiByZXMgJiBmbGFnLT5kZWZh dWx0X3ZhbC5pNjQ7CkBAIC0xMjg0LDggKzE1MTQsMTIgQEAgc3RhdGljIHZvaWQgbG9nX3R5cGUo dm9pZCAqYXZfbG9nX29iaiwgY29uc3QgQVZPcHRpb24gKm8sCiAKICAgICBpZiAoby0+dHlwZSA9 PSBBVl9PUFRfVFlQRV9DT05TVCAmJiBwYXJlbnRfdHlwZSA9PSBBVl9PUFRfVFlQRV9JTlQpCiAg ICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTIiUFJJZDY0IiAiLCBv LT5kZWZhdWx0X3ZhbC5pNjQpOwotICAgIGVsc2UgaWYgKG8tPnR5cGUgPCBGRl9BUlJBWV9FTEVN UyhkZXNjKSAmJiBkZXNjW28tPnR5cGVdKQotICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZf TE9HX0lORk8sICIlLTEycyAiLCBkZXNjW28tPnR5cGVdKTsKKyAgICBlbHNlIGlmIChvLT50eXBl IDwgRkZfQVJSQVlfRUxFTVMoZGVzYykgJiYgZGVzY1tvLT50eXBlXSkgeworICAgICAgICBpZiAo by0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19BUlJBWSkKKyAgICAgICAgICAgIGF2X2xvZyhhdl9sb2df b2JqLCBBVl9MT0dfSU5GTywgIsOXJS0xMXMgIiwgZGVzY1tvLT50eXBlXSk7CisgICAgICAgIGVs c2UKKyAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIs IGRlc2Nbby0+dHlwZV0pOworICAgIH0KICAgICBlbHNlCiAgICAgICAgIGF2X2xvZyhhdl9sb2df b2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIsICIiKTsKIH0KQEAgLTE0NzAsNiArMTcwNCwyMiBA QCB2b2lkIGF2X29wdF9zZXRfZGVmYXVsdHMyKHZvaWQgKnMsIGludCBtYXNrLCBpbnQgZmxhZ3Mp CiAgICAgICAgIGlmIChvcHQtPmZsYWdzICYgQVZfT1BUX0ZMQUdfUkVBRE9OTFkpCiAgICAgICAg ICAgICBjb250aW51ZTsKIAorICAgICAgICBpZiAob3B0LT5mbGFncyAmIEFWX09QVF9GTEFHX0FS UkFZKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyICp2YWwgPSBvcHQtPmRlZmF1bHRfdmFsLnN0 cjsKKyAgICAgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyIHNl cCA9ICp2YWwrKzsKKworICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBwZW9wbGUgZG9uJ3Qg Zm9yZ2V0IHRvIHNldCB0aGUgc2VwYXJhdG9yIGNvcnJlY3RseQorICAgICAgICAgICAgICAgIGF2 X2Fzc2VydDAoc2VwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VwIDwgJ2EnIHx8 IHNlcCA+ICd6JykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXAgPCAnQScgfHwg c2VwID4gJ1onKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcCA8ICcwJyB8fCBz ZXAgPiAnOScpKTsKKworICAgICAgICAgICAgICAgIG9wdF9zZXRfYXJyYXkocywgcywgb3B0LCB2 YWwsIGRzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg fQorCiAgICAgICAgIHN3aXRjaCAob3B0LT50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEFWX09Q VF9UWVBFX0NPTlNUOgogICAgICAgICAgICAgICAgIC8qIE5vdGhpbmcgdG8gYmUgZG9uZSBoZXJl ICovCkBAIC0xNzE3LDIzICsxOTY3LDEyIEBAIHZvaWQgYXZfb3B0X2ZyZWUodm9pZCAqb2JqKQog ewogICAgIGNvbnN0IEFWT3B0aW9uICpvID0gTlVMTDsKICAgICB3aGlsZSAoKG8gPSBhdl9vcHRf bmV4dChvYmosIG8pKSkgewotICAgICAgICBzd2l0Y2ggKG8tPnR5cGUpIHsKLSAgICAgICAgY2Fz ZSBBVl9PUFRfVFlQRV9TVFJJTkc6Ci0gICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfQklOQVJZOgot ICAgICAgICAgICAgYXZfZnJlZXAoKHVpbnQ4X3QgKilvYmogKyBvLT5vZmZzZXQpOwotICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIHZvaWQgKnBpdGVtID0gKHVpbnQ4X3QgKilvYmogKyBvLT5v ZmZzZXQ7CiAKLSAgICAgICAgY2FzZSBBVl9PUFRfVFlQRV9ESUNUOgotICAgICAgICAgICAgYXZf ZGljdF9mcmVlKChBVkRpY3Rpb25hcnkgKiopKCgodWludDhfdCAqKW9iaikgKyBvLT5vZmZzZXQp KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfQ0hMQVlP VVQ6Ci0gICAgICAgICAgICBhdl9jaGFubmVsX2xheW91dF91bmluaXQoKEFWQ2hhbm5lbExheW91 dCAqKSgoKHVpbnQ4X3QgKilvYmopICsgby0+b2Zmc2V0KSk7Ci0gICAgICAgICAgICBicmVhazsK LQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAg ICAgaWYgKG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfQVJSQVkpCisgICAgICAgICAgICBvcHRfZnJl ZV9hcnJheShvLCBwaXRlbSwgb3B0X2FycmF5X3Bjb3VudChwaXRlbSkpOworICAgICAgICBlbHNl CisgICAgICAgICAgICBvcHRfZnJlZV9lbGVtKG8sIHBpdGVtKTsKICAgICB9CiB9CiAKQEAgLTE4 MzUsNyArMjA3NCw5IEBAIGNvbnN0IEFWQ2xhc3MgKmF2X29wdF9jaGlsZF9jbGFzc19pdGVyYXRl KGNvbnN0IEFWQ2xhc3MgKnBhcmVudCwgdm9pZCAqKml0ZXIpCiB2b2lkICphdl9vcHRfcHRyKGNv bnN0IEFWQ2xhc3MgKmNsYXNzLCB2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAg Y29uc3QgQVZPcHRpb24gKm9wdD0gYXZfb3B0X2ZpbmQyKCZjbGFzcywgbmFtZSwgTlVMTCwgMCwg QVZfT1BUX1NFQVJDSF9GQUtFX09CSiwgTlVMTCk7Ci0gICAgaWYoIW9wdCkKKworICAgIC8vIG5v IGRpcmVjdCBhY2Nlc3MgdG8gYXJyYXktdHlwZSBvcHRpb25zCisgICAgaWYgKCFvcHQgfHwgKG9w dC0+ZmxhZ3MgJiBBVl9PUFRfRkxBR19BUlJBWSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAg IHJldHVybiAodWludDhfdCopb2JqICsgb3B0LT5vZmZzZXQ7CiB9CkBAIC0yMDY3LDYgKzIzMDgs MjMgQEAgaW50IGF2X29wdF9pc19zZXRfdG9fZGVmYXVsdCh2b2lkICpvYmosIGNvbnN0IEFWT3B0 aW9uICpvKQogCiAgICAgZHN0ID0gKCh1aW50OF90KilvYmopICsgby0+b2Zmc2V0OwogCisgICAg aWYgKG8tPmZsYWdzICYgQVZfT1BUX0ZMQUdfQVJSQVkpIHsKKyAgICAgICAgdWludDhfdCAqdmFs OworCisgICAgICAgIHJldCA9IG9wdF9nZXRfYXJyYXkobywgZHN0LCAmdmFsKTsKKyAgICAgICAg aWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIGlmICghIXZh bCAhPSAhIW8tPmRlZmF1bHRfdmFsLnN0cikKKyAgICAgICAgICAgIHJldCA9IDA7CisgICAgICAg IGVsc2UgaWYgKHZhbCkKKyAgICAgICAgICAgIHJldCA9ICFzdHJjbXAodmFsLCBvLT5kZWZhdWx0 X3ZhbC5zdHIgKyAxKTsKKworICAgICAgICBhdl9mcmVlcCgmdmFsKTsKKworICAgICAgICByZXR1 cm4gcmV0OworICAgIH0KKwogICAgIHN3aXRjaCAoby0+dHlwZSkgewogICAgIGNhc2UgQVZfT1BU X1RZUEVfQ09OU1Q6CiAgICAgICAgIHJldHVybiAxOwpkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL29w dC5oIGIvbGliYXZ1dGlsL29wdC5oCmluZGV4IGUzNGI4NTA2ZjguLmM1Njc4YzAyOTYgMTAwNjQ0 Ci0tLSBhL2xpYmF2dXRpbC9vcHQuaAorKysgYi9saWJhdnV0aWwvb3B0LmgKQEAgLTI4OCw2ICsy ODgsMTYgQEAgZW51bSBBVk9wdGlvblR5cGV7CiAgKi8KICNkZWZpbmUgQVZfT1BUX0ZMQUdfQ0hJ TERfQ09OU1RTICAgICgxIDw8IDE4KQogCisvKioKKyAqIFRoZSBvcHRpb24gaXMgYW4gYXJyYXku CisgKgorICogV2hlbiBhZGRpbmcgYXJyYXkgb3B0aW9ucyB0byBhbiBvYmplY3QsIEByZWYgQVZP cHRpb24ub2Zmc2V0IHNob3VsZCByZWZlciB0bworICogYSBwb2ludGVyIGNvcnJlc3BvbmRpbmcg dG8gdGhlIG9wdGlvbiB0eXBlLiBUaGUgcG9pbnRlciBzaG91bGQgYmUgaW1tZWRpYXRlbHkKKyAq IGZvbGxvd2VkIGJ5IGFuIHVuc2lnbmVkIGludCB0aGF0IHdpbGwgc3RvcmUgdGhlIG51bWJlciBv ZiBlbGVtZW50cyBpbiB0aGUKKyAqIGFycmF5LgorICovCisjZGVmaW5lIEFWX09QVF9GTEFHX0FS UkFZICAgICAgICAgICAoMSA8PCAxOSkKKwogLyoqCiAgKiBBVk9wdGlvbgogICovCkBAIC0zMTMs NiArMzIzLDE2IEBAIHR5cGVkZWYgc3RydWN0IEFWT3B0aW9uIHsKICAgICB1bmlvbiB7CiAgICAg ICAgIGludDY0X3QgaTY0OwogICAgICAgICBkb3VibGUgZGJsOworCisgICAgICAgIC8qKgorICAg ICAgICAgKiBUaGlzIG1lbWJlciBpcyBhbHdheXMgdXNlZCBmb3IgQVZfT1BUX0ZMQUdfQVJSQVkg b3B0aW9ucy4gV2hlbgorICAgICAgICAgKiBub24tTlVMTCwgdGhlIGZpcnN0IGNoYXJhY3RlciBv ZiB0aGUgc3RyaW5nIG11c3QgYmUgdGhlIHNlcGFyYXRvciB0bworICAgICAgICAgKiBiZSB1c2Vk IGZvciAoZGUpc2VyaWFsaXppbmcgbGlzdHMgdG8vZnJvbSBzdHJpbmdzIHdpdGggYXZfb3B0X2dl dCgpLAorICAgICAgICAgKiBhdl9vcHRfc2V0KCksIGFuZCBzaW1pbGFyLiBUaGUgc2VwYXJhdG9y IG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdmFsaWQKKyAgICAgICAgICogb3B0aW9uIG5hbWVzIG9y IGJlIGEgYmFja3NsYXNoLiBXaGVuIHRoZSB2YWx1ZSBpcyBudWxsLCBjb21tYSBpcyB1c2VkCisg ICAgICAgICAqIGFzIHRoZSBzZXBhcmF0b3IuIFRoZSByZXN0IG9mIHRoZSBzdHJpbmcgaXMgcGFy c2VkIGFzIGZvcgorICAgICAgICAgKiBhdl9vcHRfc2V0KCkuCisgICAgICAgICAqLwogICAgICAg ICBjb25zdCBjaGFyICpzdHI7CiAgICAgICAgIC8qIFRPRE8gdGhvc2UgYXJlIHVudXNlZCBub3cg Ki8KICAgICAgICAgQVZSYXRpb25hbCBxOwpAQCAtMzI1LDYgKzM0NSwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBBVk9wdGlvbiB7CiAgICAgICovCiAgICAgaW50IGZsYWdzOwogCisgICAgLyoqCisgICAg ICogRm9yIG9wdGlvbnMgZmxhZ2dlZCB3aXRoIEFWX09QVF9GTEFHX0FSUkFZLCB0aGlzIHNwZWNp ZmllcyB0aGUgbWF4aW11bQorICAgICAqIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBh ZGRlZCB0byBpdC4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBhcnJheV9tYXhfc2l6ZTsKKwogICAg IC8qKgogICAgICAqIFRoZSBsb2dpY2FsIHVuaXQgdG8gd2hpY2ggdGhlIG9wdGlvbiBiZWxvbmdz LiBOb24tY29uc3RhbnQKICAgICAgKiBvcHRpb25zIGFuZCBjb3JyZXNwb25kaW5nIG5hbWVkIGNv bnN0YW50cyBzaGFyZSB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3Rlc3RzL29wdC5j IGIvbGliYXZ1dGlsL3Rlc3RzL29wdC5jCmluZGV4IGUyNTgyY2M5M2QuLjViMjE4YjZiMGEgMTAw NjQ0Ci0tLSBhL2xpYmF2dXRpbC90ZXN0cy9vcHQuYworKysgYi9saWJhdnV0aWwvdGVzdHMvb3B0 LmMKQEAgLTU3LDYgKzU3LDEyIEBAIHR5cGVkZWYgc3RydWN0IFRlc3RDb250ZXh0IHsKICAgICBp bnQgYm9vbDM7CiAgICAgQVZEaWN0aW9uYXJ5ICpkaWN0MTsKICAgICBBVkRpY3Rpb25hcnkgKmRp Y3QyOworCisgICAgY2hhciAgICAgICAgICAqKmFycmF5X3N0cjsKKyAgICB1bnNpZ25lZCAgICAg bmJfYXJyYXlfc3RyOworCisgICAgQVZEaWN0aW9uYXJ5ICAqKmFycmF5X2RpY3Q7CisgICAgdW5z aWduZWQgICAgIG5iX2FycmF5X2RpY3Q7CiB9IFRlc3RDb250ZXh0OwogCiAjZGVmaW5lIE9GRlNF VCh4KSBvZmZzZXRvZihUZXN0Q29udGV4dCwgeCkKQEAgLTkzLDYgKzk5LDkgQEAgc3RhdGljIGNv bnN0IEFWT3B0aW9uIHRlc3Rfb3B0aW9uc1tdPSB7CiAgICAgeyJib29sMyIsICAgICAgInNldCBi b29sZWFuIHZhbHVlIiwgIE9GRlNFVChib29sMyksICAgICAgICAgIEFWX09QVF9UWVBFX0JPT0ws ICAgICAgICAgICB7IC5pNjQgPSAwIH0sICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAg MSwgMSB9LAogICAgIHsiZGljdDEiLCAgICAgICJzZXQgZGljdGlvbmFyeSB2YWx1ZSIsIE9GRlNF VChkaWN0MSksICAgICAgICBBVl9PUFRfVFlQRV9ESUNULCAgICAgICAgICAgeyAuc3RyID0gTlVM TH0sICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgIDAsIDEgfSwKICAgICB7ImRpY3QyIiwg ICAgICAic2V0IGRpY3Rpb25hcnkgdmFsdWUiLCBPRkZTRVQoZGljdDIpLCAgICAgICAgQVZfT1BU X1RZUEVfRElDVCwgICAgICAgICAgIHsgLnN0ciA9ICJoYXBweT0nOi0pJyJ9LCAgICAgICAgICAg MCwgICAgICAgICAwLCAxIH0sCisgICAgeyJhcnJheV9zdHIiLCAgImFycmF5IG9mIHN0cmluZ3Mi LCAgICAgT0ZGU0VUKGFycmF5X3N0ciksICAgIEFWX09QVF9UWVBFX1NUUklORywgICAgICAgICB7 IC5zdHIgPSAifHN0cjB8c3RyXFx8MXxzdHJcXFxcMiIgfSwgLmZsYWdzID0gQVZfT1BUX0ZMQUdf QVJSQVkgfSwKKyAgICAvLyB0aGVyZSBhcmUgdGhyZWUgbGV2ZWxzIG9mIGVzY2FwaW5nIC0gQyBz dHJpbmcsIGFycmF5IG9wdGlvbiwgZGljdCAtIHNvIDggYmFja3NsYXNoZXMgYXJlIG5lZWRlZCB0 byBnZXQgYSBsaXRlcmFsIG9uZSBpbnNpZGUgYSBkaWN0IGtleS92YWwKKyAgICB7ImFycmF5X2Rp Y3QiLCAiYXJyYXkgb2YgZGljdHMiLCAgICAgICBPRkZTRVQoYXJyYXlfZGljdCksICAgQVZfT1BU X1RZUEVfRElDVCwgICAgICAgICAgIHsgLnN0ciA9ICIsazAwPXZcXFxcXFxcXDAwOmswMT12XFws MDEsazEwPXZcXFxcPTFcXFxcOjAiIH0sIC5mbGFncyA9IEFWX09QVF9GTEFHX0FSUkFZIH0sCiAg ICAgeyBOVUxMIH0sCiB9OwogCkBAIC0xNDYsNiArMTU1LDE3IEBAIGludCBtYWluKHZvaWQpCiAg ICAgICAgIHByaW50ZigiZmx0PSUuNmZcbiIsIHRlc3RfY3R4LmZsdCk7CiAgICAgICAgIHByaW50 ZigiZGJsPSUuNmZcbiIsIHRlc3RfY3R4LmRibCk7CiAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp ID0gMDsgaSA8IHRlc3RfY3R4Lm5iX2FycmF5X3N0cjsgaSsrKQorICAgICAgICAgICAgcHJpbnRm KCJhcnJheV9zdHJbJXVdPSVzXG4iLCBpLCB0ZXN0X2N0eC5hcnJheV9zdHJbaV0pOworCisgICAg ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXN0X2N0eC5uYl9hcnJheV9kaWN0OyBpKysp IHsKKyAgICAgICAgICAgIEFWRGljdGlvbmFyeSAgICAgICAgICAgICpkID0gdGVzdF9jdHguYXJy YXlfZGljdFtpXTsKKyAgICAgICAgICAgIGNvbnN0IEFWRGljdGlvbmFyeUVudHJ5ICplID0gTlVM TDsKKworICAgICAgICAgICAgd2hpbGUgKChlID0gYXZfZGljdF9pdGVyYXRlKGQsIGUpKSkKKyAg ICAgICAgICAgICAgICBwcmludGYoImFycmF5X2RpY3RbJXVdOiAlc1x0JXNcbiIsIGksIGUtPmtl eSwgZS0+dmFsdWUpOworICAgICAgICB9CisKICAgICAgICAgYXZfb3B0X3Nob3cyKCZ0ZXN0X2N0 eCwgTlVMTCwgLTEsIDApOwogCiAgICAgICAgIGF2X29wdF9mcmVlKCZ0ZXN0X2N0eCk7CkBAIC0x NzcsNiArMTk3LDkgQEAgaW50IG1haW4odm9pZCkKICAgICAgICAgVGVzdENvbnRleHQgdGVzdF9j dHggPSB7IDAgfTsKICAgICAgICAgVGVzdENvbnRleHQgdGVzdDJfY3R4ID0geyAwIH07CiAgICAg ICAgIGNvbnN0IEFWT3B0aW9uICpvID0gTlVMTDsKKyAgICAgICAgY2hhciAqdmFsID0gTlVMTDsK KyAgICAgICAgaW50IHJldDsKKwogICAgICAgICB0ZXN0X2N0eC5jbGFzcyA9ICZ0ZXN0X2NsYXNz OwogICAgICAgICB0ZXN0Ml9jdHguY2xhc3MgPSAmdGVzdF9jbGFzczsKIApAQCAtMjA5LDYgKzIz MiwxNyBAQCBpbnQgbWFpbih2b2lkKQogICAgICAgICAgICAgYXZfZnJlZSh2YWx1ZTEpOwogICAg ICAgICAgICAgYXZfZnJlZSh2YWx1ZTIpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gYXZfb3B0 X3NldChOVUxMKSB3aXRoIGFuIGFycmF5IG9wdGlvbiByZXNldHMgaXQKKyAgICAgICAgcmV0ID0g YXZfb3B0X3NldCgmdGVzdF9jdHgsICJhcnJheV9kaWN0IiwgTlVMTCwgMCk7CisgICAgICAgIHBy aW50ZigiYXZfb3B0X3NldChcImFycmF5X2RpY3RcIiwgTlVMTCkgLT4gJWRcbiIsIHJldCk7Cisg ICAgICAgIHByaW50ZigiYXJyYXlfZGljdD0lc05VTEw7IG5iX2FycmF5X2RpY3Q9JXVcbiIsCisg ICAgICAgICAgICAgICB0ZXN0X2N0eC5hcnJheV9kaWN0ID8gIm5vbi0iIDogIiIsIHRlc3RfY3R4 Lm5iX2FycmF5X2RpY3QpOworCisgICAgICAgIC8vIGF2X29wdF9nZXQoKSBvbiBhbiBlbXB0eSBh cnJheSBzaG91bGQgcmV0dXJuIGEgTlVMTCBzdHJpbmcKKyAgICAgICAgcmV0ID0gYXZfb3B0X2dl dCgmdGVzdF9jdHgsICJhcnJheV9kaWN0IiwgQVZfT1BUX0FMTE9XX05VTEwsICh1aW50OF90Kiop JnZhbCk7CisgICAgICAgIHByaW50ZigiYXZfb3B0X2dldChcImFycmF5X2RpY3RcIikgLT4gJXNc biIsIHZhbCA/IHZhbCA6ICJOVUxMIik7CisKICAgICAgICAgYXZfb3B0X2ZyZWUoJnRlc3RfY3R4 KTsKICAgICAgICAgYXZfb3B0X2ZyZWUoJnRlc3QyX2N0eCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv dGVzdHMvcmVmL2ZhdGUvb3B0IGIvdGVzdHMvcmVmL2ZhdGUvb3B0CmluZGV4IDgzMmY5Y2M4YTku LjRlZDYzMmZlYTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi9mYXRlL29wdAorKysgYi90ZXN0cy9y ZWYvZmF0ZS9vcHQKQEAgLTE3LDYgKzE3LDEyIEBAIGJpbmFyeV9zaXplPTQKIG51bTY0PTEKIGZs dD0wLjMzMzMzMwogZGJsPTAuMzMzMzMzCithcnJheV9zdHJbMF09c3RyMAorYXJyYXlfc3RyWzFd PXN0cnwxCithcnJheV9zdHJbMl09c3RyXDIKK2FycmF5X2RpY3RbMF06IGswMAl2XDAwCithcnJh eV9kaWN0WzBdOiBrMDEJdiwwMQorYXJyYXlfZGljdFsxXTogazEwCXY9MTowCiBUZXN0Q29udGV4 dCBBVk9wdGlvbnM6CiAgIC1udW0gICAgICAgICAgICAgICA8aW50PiAgICAgICAgRS4uLi4uLi4u Li4gc2V0IG51bSAoZnJvbSAwIHRvIDEwMCkgKGRlZmF1bHQgMCkKICAgLXRvZ2dsZSAgICAgICAg ICAgIDxpbnQ+ICAgICAgICBFLi4uLi4uLi4uLiBzZXQgdG9nZ2xlIChmcm9tIDAgdG8gMSkgKGRl ZmF1bHQgMSkKQEAgLTQ1LDYgKzUxLDggQEAgVGVzdENvbnRleHQgQVZPcHRpb25zOgogICAtYm9v bDMgICAgICAgICAgICAgPGJvb2xlYW4+ICAgIEUuLi4uLi4uLi4uIHNldCBib29sZWFuIHZhbHVl IChkZWZhdWx0IGZhbHNlKQogICAtZGljdDEgICAgICAgICAgICAgPGRpY3Rpb25hcnk+IEUuLi4u Li4uLi4uIHNldCBkaWN0aW9uYXJ5IHZhbHVlCiAgIC1kaWN0MiAgICAgICAgICAgICA8ZGljdGlv bmFyeT4gRS4uLi4uLi4uLi4gc2V0IGRpY3Rpb25hcnkgdmFsdWUgKGRlZmF1bHQgImhhcHB5PSc6 LSknIikKKyAgLWFycmF5X3N0ciAgICAgICAgIMOXPHN0cmluZz4gICAgLi4uLi4uLi4uLi4gYXJy YXkgb2Ygc3RyaW5ncyAoZGVmYXVsdCAifHN0cjB8c3RyXHwxfHN0clxcMiIpCisgIC1hcnJheV9k aWN0ICAgICAgICDDlzxkaWN0aW9uYXJ5PiAuLi4uLi4uLi4uLiBhcnJheSBvZiBkaWN0cyAoZGVm YXVsdCAiLGswMD12XFxcXDAwOmswMT12XCwwMSxrMTA9dlxcPTFcXDowIikKIAogVGVzdGluZyBh dl9vcHRfaXNfc2V0X3RvX2RlZmF1bHQoKQogbmFtZTogICAgICAgbnVtIGRlZmF1bHQ6MSBlcnJv cjoKQEAgLTc0LDYgKzgyLDggQEAgbmFtZTogICAgIGJvb2wyIGRlZmF1bHQ6MCBlcnJvcjoKIG5h bWU6ICAgICBib29sMyBkZWZhdWx0OjEgZXJyb3I6CiBuYW1lOiAgICAgZGljdDEgZGVmYXVsdDox IGVycm9yOgogbmFtZTogICAgIGRpY3QyIGRlZmF1bHQ6MCBlcnJvcjoKK25hbWU6IGFycmF5X3N0 ciBkZWZhdWx0OjAgZXJyb3I6CituYW1lOmFycmF5X2RpY3QgZGVmYXVsdDowIGVycm9yOgogbmFt ZTogICAgICAgbnVtIGRlZmF1bHQ6MSBlcnJvcjoKIG5hbWU6ICAgIHRvZ2dsZSBkZWZhdWx0OjEg ZXJyb3I6CiBuYW1lOiAgcmF0aW9uYWwgZGVmYXVsdDoxIGVycm9yOgpAQCAtMTAxLDYgKzExMSw4 IEBAIG5hbWU6ICAgICBib29sMiBkZWZhdWx0OjEgZXJyb3I6CiBuYW1lOiAgICAgYm9vbDMgZGVm YXVsdDoxIGVycm9yOgogbmFtZTogICAgIGRpY3QxIGRlZmF1bHQ6MSBlcnJvcjoKIG5hbWU6ICAg ICBkaWN0MiBkZWZhdWx0OjEgZXJyb3I6CituYW1lOiBhcnJheV9zdHIgZGVmYXVsdDoxIGVycm9y OgorbmFtZTphcnJheV9kaWN0IGRlZmF1bHQ6MSBlcnJvcjoKIAogVGVzdGluZyBhdl9vcHRfZ2V0 L2F2X29wdF9zZXQoKQogbmFtZTogbnVtICAgICAgICAgZ2V0OiAwICAgICAgICAgICAgICAgIHNl dDogT0sgICAgICAgICAgICAgICBnZXQ6IDAgICAgICAgICAgICAgICAgT0sKQEAgLTEyNyw5ICsx MzksMTQgQEAgbmFtZTogYm9vbDIgICAgICAgZ2V0OiB0cnVlICAgICAgICAgICAgIHNldDogT0sg ICAgICAgICAgICAgICBnZXQ6IHRydWUKIG5hbWU6IGJvb2wzICAgICAgIGdldDogZmFsc2UgICAg ICAgICAgICBzZXQ6IE9LICAgICAgICAgICAgICAgZ2V0OiBmYWxzZSAgICAgICAgICAgIE9LCiBu YW1lOiBkaWN0MSAgICAgICBnZXQ6ICAgICAgICAgICAgICAgICAgc2V0OiBPSyAgICAgICAgICAg ICAgIGdldDogICAgICAgICAgICAgICAgICBPSwogbmFtZTogZGljdDIgICAgICAgZ2V0OiBoYXBw eT1cOi0pICAgICAgIHNldDogT0sgICAgICAgICAgICAgICBnZXQ6IGhhcHB5PVw6LSkgICAgICAg T0sKK25hbWU6IGFycmF5X3N0ciAgIGdldDogc3RyMHxzdHJcfDF8c3RyXFwyIHNldDogT0sgICAg ICAgICAgICAgICBnZXQ6IHN0cjB8c3RyXHwxfHN0clxcMiBPSworbmFtZTogYXJyYXlfZGljdCAg Z2V0OiBrMDA9dlxcXFwwMDprMDE9dlwsMDEsazEwPXZcXD0xXFw6MCBzZXQ6IE9LICAgICAgICAg ICAgICAgZ2V0OiBrMDA9dlxcXFwwMDprMDE9dlwsMDEsazEwPXZcXD0xXFw6MCBPSworYXZfb3B0 X3NldCgiYXJyYXlfZGljdCIsIE5VTEwpIC0+IDAKK2FycmF5X2RpY3Q9TlVMTDsgbmJfYXJyYXlf ZGljdD0wCithdl9vcHRfZ2V0KCJhcnJheV9kaWN0IikgLT4gTlVMTAogCiBUZXN0IGF2X29wdF9z ZXJpYWxpemUoKQotbnVtPTAsdG9nZ2xlPTEscmF0aW9uYWw9MS8xLHN0cmluZz1kZWZhdWx0LGVz Y2FwZT1cXFw9XCwsZmxhZ3M9MHgwMDAwMDAwMSxzaXplPTIwMHgzMDAscGl4X2ZtdD0wYmdyLHNh bXBsZV9mbXQ9czE2LHZpZGVvX3JhdGU9MjUvMSxkdXJhdGlvbj0wLjAwMSxjb2xvcj0weGZmYzBj YmZmLGNsPWhleGFnb25hbCxiaW49NjI2OTZFMDAsYmluMT0sYmluMj0sbnVtNjQ9MSxmbHQ9MC4z MzMzMzMsZGJsPTAuMzMzMzMzLGJvb2wxPWF1dG8sYm9vbDI9dHJ1ZSxib29sMz1mYWxzZSxkaWN0 MT0sZGljdDI9aGFwcHlcPVxcOi0pCitudW09MCx0b2dnbGU9MSxyYXRpb25hbD0xLzEsc3RyaW5n PWRlZmF1bHQsZXNjYXBlPVxcXD1cLCxmbGFncz0weDAwMDAwMDAxLHNpemU9MjAweDMwMCxwaXhf Zm10PTBiZ3Isc2FtcGxlX2ZtdD1zMTYsdmlkZW9fcmF0ZT0yNS8xLGR1cmF0aW9uPTAuMDAxLGNv bG9yPTB4ZmZjMGNiZmYsY2w9aGV4YWdvbmFsLGJpbj02MjY5NkUwMCxiaW4xPSxiaW4yPSxudW02 ND0xLGZsdD0wLjMzMzMzMyxkYmw9MC4zMzMzMzMsYm9vbDE9YXV0byxib29sMj10cnVlLGJvb2wz PWZhbHNlLGRpY3QxPSxkaWN0Mj1oYXBweVw9XFw6LSksYXJyYXlfc3RyPXN0cjB8c3RyXFx8MXxz dHJcXFxcMixhcnJheV9kaWN0PWswMFw9dlxcXFxcXFxcMDA6azAxXD12XFxcLDAxXCxrMTBcPXZc XFxcXD0xXFxcXDowCiBTZXR0aW5nIGVudHJ5IHdpdGgga2V5ICdudW0nIHRvIHZhbHVlICcwJwog U2V0dGluZyBlbnRyeSB3aXRoIGtleSAndG9nZ2xlJyB0byB2YWx1ZSAnMScKIFNldHRpbmcgZW50 cnkgd2l0aCBrZXkgJ3JhdGlvbmFsJyB0byB2YWx1ZSAnMS8xJwpAQCAtMTU0LDcgKzE3MSw5IEBA IFNldHRpbmcgZW50cnkgd2l0aCBrZXkgJ2Jvb2wyJyB0byB2YWx1ZSAndHJ1ZScKIFNldHRpbmcg ZW50cnkgd2l0aCBrZXkgJ2Jvb2wzJyB0byB2YWx1ZSAnZmFsc2UnCiBTZXR0aW5nIGVudHJ5IHdp dGgga2V5ICdkaWN0MScgdG8gdmFsdWUgJycKIFNldHRpbmcgZW50cnkgd2l0aCBrZXkgJ2RpY3Qy JyB0byB2YWx1ZSAnaGFwcHk9XDotKScKLW51bT0wLHRvZ2dsZT0xLHJhdGlvbmFsPTEvMSxzdHJp bmc9ZGVmYXVsdCxlc2NhcGU9XFxcPVwsLGZsYWdzPTB4MDAwMDAwMDEsc2l6ZT0yMDB4MzAwLHBp eF9mbXQ9MGJncixzYW1wbGVfZm10PXMxNix2aWRlb19yYXRlPTI1LzEsZHVyYXRpb249MC4wMDEs Y29sb3I9MHhmZmMwY2JmZixjbD1oZXhhZ29uYWwsYmluPTYyNjk2RTAwLGJpbjE9LGJpbjI9LG51 bTY0PTEsZmx0PTAuMzMzMzMzLGRibD0wLjMzMzMzMyxib29sMT1hdXRvLGJvb2wyPXRydWUsYm9v bDM9ZmFsc2UsZGljdDE9LGRpY3QyPWhhcHB5XD1cXDotKQorU2V0dGluZyBlbnRyeSB3aXRoIGtl eSAnYXJyYXlfc3RyJyB0byB2YWx1ZSAnc3RyMHxzdHJcfDF8c3RyXFwyJworU2V0dGluZyBlbnRy eSB3aXRoIGtleSAnYXJyYXlfZGljdCcgdG8gdmFsdWUgJ2swMD12XFxcXDAwOmswMT12XCwwMSxr MTA9dlxcPTFcXDowJworbnVtPTAsdG9nZ2xlPTEscmF0aW9uYWw9MS8xLHN0cmluZz1kZWZhdWx0 LGVzY2FwZT1cXFw9XCwsZmxhZ3M9MHgwMDAwMDAwMSxzaXplPTIwMHgzMDAscGl4X2ZtdD0wYmdy LHNhbXBsZV9mbXQ9czE2LHZpZGVvX3JhdGU9MjUvMSxkdXJhdGlvbj0wLjAwMSxjb2xvcj0weGZm YzBjYmZmLGNsPWhleGFnb25hbCxiaW49NjI2OTZFMDAsYmluMT0sYmluMj0sbnVtNjQ9MSxmbHQ9 MC4zMzMzMzMsZGJsPTAuMzMzMzMzLGJvb2wxPWF1dG8sYm9vbDI9dHJ1ZSxib29sMz1mYWxzZSxk aWN0MT0sZGljdDI9aGFwcHlcPVxcOi0pLGFycmF5X3N0cj1zdHIwfHN0clxcfDF8c3RyXFxcXDIs YXJyYXlfZGljdD1rMDBcPXZcXFxcXFxcXDAwOmswMVw9dlxcXCwwMVwsazEwXD12XFxcXFw9MVxc XFw6MAogCiBUZXN0aW5nIGF2X3NldF9vcHRpb25zX3N0cmluZygpCiBTZXR0aW5nIG9wdGlvbnMg c3RyaW5nICcnCi0tIAoyLjQyLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJl cXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K