From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA71FC47404 for ; Mon, 7 Oct 2019 15:15:21 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9F47021479 for ; Mon, 7 Oct 2019 15:15:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gzI0WAgR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9F47021479 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iHUj0-0007oF-Jk; Mon, 07 Oct 2019 15:15:02 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iHUiz-0007nW-QP for xen-devel@lists.xenproject.org; Mon, 07 Oct 2019 15:15:01 +0000 X-Inumbo-ID: 0be8cd4a-e915-11e9-9bee-bc764e2007e4 Received: from mail-qk1-x742.google.com (unknown [2607:f8b0:4864:20::742]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 0be8cd4a-e915-11e9-9bee-bc764e2007e4; Mon, 07 Oct 2019 15:13:41 +0000 (UTC) Received: by mail-qk1-x742.google.com with SMTP id h126so12881369qke.10 for ; Mon, 07 Oct 2019 08:13:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H0/NygQB0jTA/IzmD+r7Xr4HrbLuhhEPzMD4UkBaT74=; b=gzI0WAgRHPbDr3xWa+n7KCvoprDPxQI60rVh4+0mKEzLrAzIvPvJMmkYlNY7fraaon jYod+sTHcFMn8u+vYRJKR9cP3a9HUK0rk/AuVHLjwPWuoRI9pgamAxh7vAVDfO6emtWE MctYx7M93DFn44dbF8iyUQfrW/Hi1eemGleahm/LatCqQV0WLPttuNSuPpEq+H6xs5j+ VOYaGmgdSuBIrfrKPR8Y+326+LQxBiFl9aWpck0MRbNq43QbSB2L5lIyzz13w44+4099 G+80b60CejaI+4L5PY5zCUh0ZgEjllXU0myOaJWebVk7PdBN2DSsLevABlIxmGPVgMVf hq4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=H0/NygQB0jTA/IzmD+r7Xr4HrbLuhhEPzMD4UkBaT74=; b=uk4H2VrguyL5MSXJ3jETM36/VboLIoSmURk9s7jhOik4+USRgqfHwlL1QRkqhoFLw1 rmBz7kx3ijxY8cu+7dRSMvZ9uvTcUnpz3e7+DN/t/K3rrfruhKPTy5EoDYfT9msqgmIP 8O0JaEGubwrqfb7D838xaT9nuVUBYiyRwekBMhrsj+Uf+SgaihpxNvN40QTz5qf2LJvo XmARx3ak0mW1fZRkYErLuO7/4IxpHhI1DlZEvK10sEt1Y5mJOk5N1XyGdq8xB9il4lCO hQnmFgmU+qZYBOIKNtol9+UwFfllGw/4fvLFuRwTq9cZNj9XoYpZQ+LYwtGs5xJC+A25 GT4g== X-Gm-Message-State: APjAAAX9/E8xzR7gaGUEr0m1ifgnYirON/Nhtl1NJe4F8I5YrVvf/Ybt eVK1xC5WYe3/NLo2k5Mz9Od04G27 X-Google-Smtp-Source: APXvYqz7zQu+x5OC4GEp6c/51kxAN70hFvMzFzO9p8rWxAi6YknxMLWXSqvr2QouRmZPUnGgYhrg5g== X-Received: by 2002:a37:66c8:: with SMTP id a191mr24154096qkc.108.1570461220724; Mon, 07 Oct 2019 08:13:40 -0700 (PDT) Received: from five.crux.rad.ainfosec.com (209-217-208-226.northland.net. [209.217.208.226]) by smtp.googlemail.com with ESMTPSA id c185sm8354313qkg.74.2019.10.07.08.13.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2019 08:13:39 -0700 (PDT) From: Nick Rosbrook To: xen-devel@lists.xenproject.org Date: Mon, 7 Oct 2019 11:13:08 -0400 Message-Id: X-Mailer: git-send-email 2.19.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 21/24] golang/xenlight: implement array Go to C marshaling X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Nick Rosbrook , Ian Jackson , kerriganb@ainfosec.com, George Dunlap , Wei Liu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RnJvbTogTmljayBSb3Nicm9vayA8cm9zYnJvb2tuQGFpbmZvc2VjLmNvbT4KClNpZ25lZC1vZmYt Ynk6IE5pY2sgUm9zYnJvb2sgPHJvc2Jyb29rbkBhaW5mb3NlYy5jb20+Ci0tLQpDYzogR2Vvcmdl IER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5q YWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3bEB4ZW4ub3JnPgoKIHRvb2xzL2dv bGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5ICAgICAgIHwgIDQ0ICsrLQogdG9vbHMvZ29sYW5n L3hlbmxpZ2h0L3hlbmxpZ2h0X2hlbHBlcnMuZ28gfCAzNTkgKysrKysrKysrKysrKysrKysrKysr KwogMiBmaWxlcyBjaGFuZ2VkLCA0MDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5IGIvdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L2dlbmdvdHlwZXMucHkKaW5kZXggMzVkOWRmZWE0MC4uZDhhNjEyMGU1YyAx MDA2NDQKLS0tIGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L2dlbmdvdHlwZXMucHkKKysrIGIvdG9v bHMvZ29sYW5nL3hlbmxpZ2h0L2dlbmdvdHlwZXMucHkKQEAgLTQ3OSw3ICs0NzksNyBAQCBkZWYg eGVubGlnaHRfZ29sYW5nX2RlZmluZV90b19DKHR5ID0gTm9uZSwgdHlwZW5hbWUgPSBOb25lLCBu ZXN0ZWQgPSBGYWxzZSk6CiAgICAgZm9yIGYgaW4gdHkuZmllbGRzOgogICAgICAgICBpZiBmLnR5 cGUudHlwZW5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGYudHlw ZSwgaWRsLkFycmF5KToKLSAgICAgICAgICAgICAgICAjIFRPRE8KKyAgICAgICAgICAgICAgICBz ICs9IHhlbmxpZ2h0X2dvbGFuZ19hcnJheV90b19DKGYsIHR5LmRpc3Bvc2VfZm4pCiAgICAgICAg ICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgZ290eXBlbmFtZSA9IHhlbmxpZ2h0X2dv bGFuZ19mbXRfbmFtZShmLnR5cGUudHlwZW5hbWUpCkBAIC02MTAsNiArNjEwLDQ4IEBAIGRlZiB4 ZW5saWdodF9nb2xhbmdfdW5pb25fdG9fQyh0eSA9IE5vbmUsIHVuaW9uX25hbWUgPSAnJywKIAog ICAgIHJldHVybiBzCiAKK2RlZiB4ZW5saWdodF9nb2xhbmdfYXJyYXlfdG9fQyh0eSA9IE5vbmUs IGRpc3Bvc2VfZm4gPSAnJyk6CisgICAgcyA9ICcnCisKKyAgICBnb3R5cGVuYW1lID0geGVubGln aHRfZ29sYW5nX2ZtdF9uYW1lKHR5LnR5cGUuZWxlbV90eXBlLnR5cGVuYW1lKQorICAgIGdvbmFt ZSAgICAgPSB4ZW5saWdodF9nb2xhbmdfZm10X25hbWUodHkubmFtZSkKKyAgICBjdHlwZW5hbWUg ID0gdHkudHlwZS5lbGVtX3R5cGUudHlwZW5hbWUKKyAgICBjbmFtZSAgICAgID0gdHkubmFtZQor ICAgIGNsZW52YXIgICAgPSB0eS50eXBlLmxlbnZhci5uYW1lCisgICAgZ29sZW52YXIgICA9IHhl bmxpZ2h0X2dvbGFuZ19mbXRfbmFtZShjbGVudmFyLGV4cG9ydGVkPUZhbHNlKQorCisgICAgaXNf ZW51bSA9IGlzaW5zdGFuY2UodHkudHlwZS5lbGVtX3R5cGUsaWRsLkVudW1lcmF0aW9uKQorICAg IGlmIGdvdHlwZW5hbWUgaW4gZ29fYnVpbHRpbl90eXBlcyBvciBpc19lbnVtOgorICAgICAgICBz ICs9ICd7fSA6PSBsZW4oeC57fSlcbicuZm9ybWF0KGdvbGVudmFyLGdvbmFtZSkKKyAgICAgICAg cyArPSAneGMue30gPSAoKkMue30pKEMubWFsbG9jKEMuc2l6ZV90KHt9Knt9KSkpXG4nLmZvcm1h dChjbmFtZSxjdHlwZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29sZW52YXIsZ29sZW52YXIpCisgICAgICAg IHMgKz0gJ3hjLnt9ID0gQy5pbnQoe30pXG4nLmZvcm1hdChjbGVudmFyLGdvbGVudmFyKQorICAg ICAgICBzICs9ICdje30gOj0gKCpbMTw8MjhdQy57fSkodW5zYWZlLlBvaW50ZXIoeGMue30pKVs6 e306e31dXG4nLmZvcm1hdChnb25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVuYW1lLGNuYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdvbGVudmFyLGdvbGVudmFyKQorICAgICAgICBzICs9ICdmb3IgaSx2IDo9 IHJhbmdlIHgue30ge3tcbicuZm9ybWF0KGdvbmFtZSkKKyAgICAgICAgcyArPSAnY3t9W2ldID0g Qy57fSh2KVxuJy5mb3JtYXQoZ29uYW1lLGN0eXBlbmFtZSkKKyAgICAgICAgcyArPSAnfVxuJwor CisgICAgICAgIHJldHVybiBzCisKKyAgICBzICs9ICd7fSA6PSBsZW4oeC57fSlcbicuZm9ybWF0 KGdvbGVudmFyLGdvbmFtZSkKKyAgICBzICs9ICd4Yy57fSA9ICgqQy57fSkoQy5tYWxsb2MoQy51 bG9uZyh7fSkqQy5zaXplb2Zfe30pKVxuJy5mb3JtYXQoY25hbWUsY3R5cGVuYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdvbGVudmFyLGN0eXBlbmFtZSkKKyAgICBzICs9ICd4Yy57fSA9IEMuaW50KHt9KVxuJy5m b3JtYXQoY2xlbnZhcixnb2xlbnZhcikKKyAgICBzICs9ICdje30gOj0gKCpbMTw8MjhdQy57fSko dW5zYWZlLlBvaW50ZXIoeGMue30pKVs6e306e31dXG4nLmZvcm1hdChnb25hbWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3R5cGVuYW1lLGNuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvbGVudmFyLGdvbGVu dmFyKQorICAgIHMgKz0gJ2ZvciBpLHYgOj0gcmFuZ2UgeC57fSB7e1xuJy5mb3JtYXQoZ29uYW1l KQorICAgIHMgKz0gJ3RtcCwgZXJyIDo9IHYudG9DKClcbicKKyAgICBzICs9ICdpZiBlcnIgIT0g bmlsIHtcbicKKyAgICBzICs9ICdDLnt9KCZ4YylcbicuZm9ybWF0KGRpc3Bvc2VfZm4pCisgICAg cyArPSAncmV0dXJuIHhjLGVyclxufVxuJworICAgIHMgKz0gJ2N7fVtpXSA9IHRtcFxuJy5mb3Jt YXQoZ29uYW1lKQorICAgIHMgKz0gJ31cbicKKworICAgIHJldHVybiBzCisKIGRlZiB4ZW5saWdo dF9nb2xhbmdfZm10X25hbWUobmFtZSwgZXhwb3J0ZWQgPSBUcnVlKToKICAgICAiIiIKICAgICBU YWtlIGEgZ2l2ZW4gdHlwZSBuYW1lIGFuZCByZXR1cm4gYW4KZGlmZiAtLWdpdCBhL3Rvb2xzL2dv bGFuZy94ZW5saWdodC94ZW5saWdodF9oZWxwZXJzLmdvIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0 L3hlbmxpZ2h0X2hlbHBlcnMuZ28KaW5kZXggMmNiNWFkYWVjNS4uNzk0MGMyMDlhMiAxMDA2NDQK LS0tIGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3hlbmxpZ2h0X2hlbHBlcnMuZ28KKysrIGIvdG9v bHMvZ29sYW5nL3hlbmxpZ2h0L3hlbmxpZ2h0X2hlbHBlcnMuZ28KQEAgLTY2Miw2ICs2NjIsMTgg QEAgZnVuYyAoeCAqVmNwdVNjaGVkUGFyYW1zKSBmcm9tQyh4YyAqQy5saWJ4bF92Y3B1X3NjaGVk X3BhcmFtcykgZXJyb3IgewogZnVuYyAoeCAqVmNwdVNjaGVkUGFyYW1zKSB0b0MoKSAoeGMgQy5s aWJ4bF92Y3B1X3NjaGVkX3BhcmFtcywgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF92Y3B1X3NjaGVk X3BhcmFtc19pbml0KCZ4YykKIAl4Yy5zY2hlZCA9IEMubGlieGxfc2NoZWR1bGVyKHguU2NoZWQp CisJbnVtVmNwdXMgOj0gbGVuKHguVmNwdXMpCisJeGMudmNwdXMgPSAoKkMubGlieGxfc2NoZWRf cGFyYW1zKShDLm1hbGxvYyhDLnVsb25nKG51bVZjcHVzKSAqIEMuc2l6ZW9mX2xpYnhsX3NjaGVk X3BhcmFtcykpCisJeGMubnVtX3ZjcHVzID0gQy5pbnQobnVtVmNwdXMpCisJY1ZjcHVzIDo9ICgq WzEgPDwgMjhdQy5saWJ4bF9zY2hlZF9wYXJhbXMpKHVuc2FmZS5Qb2ludGVyKHhjLnZjcHVzKSlb Om51bVZjcHVzOm51bVZjcHVzXQorCWZvciBpLCB2IDo9IHJhbmdlIHguVmNwdXMgeworCQl0bXAs IGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF92Y3B1X3NjaGVk X3BhcmFtc19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1ZjcHVzW2ld ID0gdG1wCisJfQogCXJldHVybiB4YywgbmlsCiB9CiAKQEAgLTcxMCw2ICs3MjIsMTMgQEAgZnVu YyAoeCAqVm5vZGVJbmZvKSBmcm9tQyh4YyAqQy5saWJ4bF92bm9kZV9pbmZvKSBlcnJvciB7CiBm dW5jICh4ICpWbm9kZUluZm8pIHRvQygpICh4YyBDLmxpYnhsX3Zub2RlX2luZm8sIGVyciBlcnJv cikgewogCUMubGlieGxfdm5vZGVfaW5mb19pbml0KCZ4YykKIAl4Yy5tZW1rYiA9IEMudWludDY0 X3QoeC5NZW1rYikKKwludW1EaXN0YW5jZXMgOj0gbGVuKHguRGlzdGFuY2VzKQorCXhjLmRpc3Rh bmNlcyA9ICgqQy51aW50MzJfdCkoQy5tYWxsb2MoQy5zaXplX3QobnVtRGlzdGFuY2VzICogbnVt RGlzdGFuY2VzKSkpCisJeGMubnVtX2Rpc3RhbmNlcyA9IEMuaW50KG51bURpc3RhbmNlcykKKwlj RGlzdGFuY2VzIDo9ICgqWzEgPDwgMjhdQy51aW50MzJfdCkodW5zYWZlLlBvaW50ZXIoeGMuZGlz dGFuY2VzKSlbOm51bURpc3RhbmNlczpudW1EaXN0YW5jZXNdCisJZm9yIGksIHYgOj0gcmFuZ2Ug eC5EaXN0YW5jZXMgeworCQljRGlzdGFuY2VzW2ldID0gQy51aW50MzJfdCh2KQorCX0KIAl4Yy5w bm9kZSA9IEMudWludDMyX3QoeC5Qbm9kZSkKIAl4Yy52Y3B1cywgZXJyID0geC5WY3B1cy50b0Mo KQogCWlmIGVyciAhPSBuaWwgewpAQCAtMTA5Niw2ICsxMTE1LDMwIEBAIGZ1bmMgKHggKkRvbWFp bkJ1aWxkSW5mbykgdG9DKCkgKHhjIEMubGlieGxfZG9tYWluX2J1aWxkX2luZm8sIGVyciBlcnJv cikgewogCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQogCQlyZXR1cm4g eGMsIGVycgogCX0KKwludW1WY3B1SGFyZEFmZmluaXR5IDo9IGxlbih4LlZjcHVIYXJkQWZmaW5p dHkpCisJeGMudmNwdV9oYXJkX2FmZmluaXR5ID0gKCpDLmxpYnhsX2JpdG1hcCkoQy5tYWxsb2Mo Qy51bG9uZyhudW1WY3B1SGFyZEFmZmluaXR5KSAqIEMuc2l6ZW9mX2xpYnhsX2JpdG1hcCkpCisJ eGMubnVtX3ZjcHVfaGFyZF9hZmZpbml0eSA9IEMuaW50KG51bVZjcHVIYXJkQWZmaW5pdHkpCisJ Y1ZjcHVIYXJkQWZmaW5pdHkgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX2JpdG1hcCkodW5zYWZlLlBv aW50ZXIoeGMudmNwdV9oYXJkX2FmZmluaXR5KSlbOm51bVZjcHVIYXJkQWZmaW5pdHk6bnVtVmNw dUhhcmRBZmZpbml0eV0KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlZjcHVIYXJkQWZmaW5pdHkgewor CQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21h aW5fYnVpbGRfaW5mb19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1Zj cHVIYXJkQWZmaW5pdHlbaV0gPSB0bXAKKwl9CisJbnVtVmNwdVNvZnRBZmZpbml0eSA6PSBsZW4o eC5WY3B1U29mdEFmZmluaXR5KQorCXhjLnZjcHVfc29mdF9hZmZpbml0eSA9ICgqQy5saWJ4bF9i aXRtYXApKEMubWFsbG9jKEMudWxvbmcobnVtVmNwdVNvZnRBZmZpbml0eSkgKiBDLnNpemVvZl9s aWJ4bF9iaXRtYXApKQorCXhjLm51bV92Y3B1X3NvZnRfYWZmaW5pdHkgPSBDLmludChudW1WY3B1 U29mdEFmZmluaXR5KQorCWNWY3B1U29mdEFmZmluaXR5IDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9i aXRtYXApKHVuc2FmZS5Qb2ludGVyKHhjLnZjcHVfc29mdF9hZmZpbml0eSkpWzpudW1WY3B1U29m dEFmZmluaXR5Om51bVZjcHVTb2Z0QWZmaW5pdHldCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5WY3B1 U29mdEFmZmluaXR5IHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsK KwkJCUMubGlieGxfZG9tYWluX2J1aWxkX2luZm9fZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMs IGVycgorCQl9CisJCWNWY3B1U29mdEFmZmluaXR5W2ldID0gdG1wCisJfQogCXhjLm51bWFfcGxh Y2VtZW50LCBlcnIgPSB4Lk51bWFQbGFjZW1lbnQudG9DKCkKIAlpZiBlcnIgIT0gbmlsIHsKIAkJ Qy5saWJ4bF9kb21haW5fYnVpbGRfaW5mb19kaXNwb3NlKCZ4YykKQEAgLTExMjUsNiArMTE2OCwx OCBAQCBmdW5jICh4ICpEb21haW5CdWlsZEluZm8pIHRvQygpICh4YyBDLmxpYnhsX2RvbWFpbl9i dWlsZF9pbmZvLCBlcnIgZXJyb3IpIHsKIAkJcmV0dXJuIHhjLCBlcnIKIAl9CiAJeGMuYmxrZGV2 X3N0YXJ0ID0gQy5DU3RyaW5nKHguQmxrZGV2U3RhcnQpCisJbnVtVm51bWFOb2RlcyA6PSBsZW4o eC5WbnVtYU5vZGVzKQorCXhjLnZudW1hX25vZGVzID0gKCpDLmxpYnhsX3Zub2RlX2luZm8pKEMu bWFsbG9jKEMudWxvbmcobnVtVm51bWFOb2RlcykgKiBDLnNpemVvZl9saWJ4bF92bm9kZV9pbmZv KSkKKwl4Yy5udW1fdm51bWFfbm9kZXMgPSBDLmludChudW1WbnVtYU5vZGVzKQorCWNWbnVtYU5v ZGVzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF92bm9kZV9pbmZvKSh1bnNhZmUuUG9pbnRlcih4Yy52 bnVtYV9ub2RlcykpWzpudW1WbnVtYU5vZGVzOm51bVZudW1hTm9kZXNdCisJZm9yIGksIHYgOj0g cmFuZ2UgeC5WbnVtYU5vZGVzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0g bmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2J1aWxkX2luZm9fZGlzcG9zZSgmeGMpCisJCQlyZXR1 cm4geGMsIGVycgorCQl9CisJCWNWbnVtYU5vZGVzW2ldID0gdG1wCisJfQogCXhjLm1heF9ncmFu dF9mcmFtZXMgPSBDLnVpbnQzMl90KHguTWF4R3JhbnRGcmFtZXMpCiAJeGMubWF4X21hcHRyYWNr X2ZyYW1lcyA9IEMudWludDMyX3QoeC5NYXhNYXB0cmFja0ZyYW1lcykKIAl4Yy5kZXZpY2VfbW9k ZWxfdmVyc2lvbiA9IEMubGlieGxfZGV2aWNlX21vZGVsX3ZlcnNpb24oeC5EZXZpY2VNb2RlbFZl cnNpb24pCkBAIC0xMTU3LDYgKzEyMTIsMzcgQEAgZnVuYyAoeCAqRG9tYWluQnVpbGRJbmZvKSB0 b0MoKSAoeGMgQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mbywgZXJyIGVycm9yKSB7CiAJCUMubGli eGxfZG9tYWluX2J1aWxkX2luZm9fZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4YywgZXJyCiAJfQor CW51bUlvcG9ydHMgOj0gbGVuKHguSW9wb3J0cykKKwl4Yy5pb3BvcnRzID0gKCpDLmxpYnhsX2lv cG9ydF9yYW5nZSkoQy5tYWxsb2MoQy51bG9uZyhudW1Jb3BvcnRzKSAqIEMuc2l6ZW9mX2xpYnhs X2lvcG9ydF9yYW5nZSkpCisJeGMubnVtX2lvcG9ydHMgPSBDLmludChudW1Jb3BvcnRzKQorCWNJ b3BvcnRzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9pb3BvcnRfcmFuZ2UpKHVuc2FmZS5Qb2ludGVy KHhjLmlvcG9ydHMpKVs6bnVtSW9wb3J0czpudW1Jb3BvcnRzXQorCWZvciBpLCB2IDo9IHJhbmdl IHguSW9wb3J0cyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJ CQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBl cnIKKwkJfQorCQljSW9wb3J0c1tpXSA9IHRtcAorCX0KKwludW1JcnFzIDo9IGxlbih4LklycXMp CisJeGMuaXJxcyA9ICgqQy51aW50MzJfdCkoQy5tYWxsb2MoQy5zaXplX3QobnVtSXJxcyAqIG51 bUlycXMpKSkKKwl4Yy5udW1faXJxcyA9IEMuaW50KG51bUlycXMpCisJY0lycXMgOj0gKCpbMSA8 PCAyOF1DLnVpbnQzMl90KSh1bnNhZmUuUG9pbnRlcih4Yy5pcnFzKSlbOm51bUlycXM6bnVtSXJx c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LklycXMgeworCQljSXJxc1tpXSA9IEMudWludDMyX3Qo dikKKwl9CisJbnVtSW9tZW0gOj0gbGVuKHguSW9tZW0pCisJeGMuaW9tZW0gPSAoKkMubGlieGxf aW9tZW1fcmFuZ2UpKEMubWFsbG9jKEMudWxvbmcobnVtSW9tZW0pICogQy5zaXplb2ZfbGlieGxf aW9tZW1fcmFuZ2UpKQorCXhjLm51bV9pb21lbSA9IEMuaW50KG51bUlvbWVtKQorCWNJb21lbSA6 PSAoKlsxIDw8IDI4XUMubGlieGxfaW9tZW1fcmFuZ2UpKHVuc2FmZS5Qb2ludGVyKHhjLmlvbWVt KSlbOm51bUlvbWVtOm51bUlvbWVtXQorCWZvciBpLCB2IDo9IHJhbmdlIHguSW9tZW0geworCQl0 bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5f YnVpbGRfaW5mb19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY0lvbWVt W2ldID0gdG1wCisJfQogCXhjLmNsYWltX21vZGUsIGVyciA9IHguQ2xhaW1Nb2RlLnRvQygpCiAJ aWYgZXJyICE9IG5pbCB7CiAJCUMubGlieGxfZG9tYWluX2J1aWxkX2luZm9fZGlzcG9zZSgmeGMp CkBAIC0xOTgzLDYgKzIwNjksMTggQEAgZnVuYyAoeCAqRGV2aWNlVmRpc3BsKSB0b0MoKSAoeGMg Qy5saWJ4bF9kZXZpY2VfdmRpc3BsLCBlcnIgZXJyb3IpIHsKIAl4Yy5iYWNrZW5kX2RvbW5hbWUg PSBDLkNTdHJpbmcoeC5CYWNrZW5kRG9tbmFtZSkKIAl4Yy5kZXZpZCA9IEMubGlieGxfZGV2aWQo eC5EZXZpZCkKIAl4Yy5iZV9hbGxvYyA9IEMuYm9vbCh4LkJlQWxsb2MpCisJbnVtQ29ubmVjdG9y cyA6PSBsZW4oeC5Db25uZWN0b3JzKQorCXhjLmNvbm5lY3RvcnMgPSAoKkMubGlieGxfY29ubmVj dG9yX3BhcmFtKShDLm1hbGxvYyhDLnVsb25nKG51bUNvbm5lY3RvcnMpICogQy5zaXplb2ZfbGli eGxfY29ubmVjdG9yX3BhcmFtKSkKKwl4Yy5udW1fY29ubmVjdG9ycyA9IEMuaW50KG51bUNvbm5l Y3RvcnMpCisJY0Nvbm5lY3RvcnMgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX2Nvbm5lY3Rvcl9wYXJh bSkodW5zYWZlLlBvaW50ZXIoeGMuY29ubmVjdG9ycykpWzpudW1Db25uZWN0b3JzOm51bUNvbm5l Y3RvcnNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5Db25uZWN0b3JzIHsKKwkJdG1wLCBlcnIgOj0g di50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZGV2aWNlX3ZkaXNwbF9kaXNw b3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY0Nvbm5lY3RvcnNbaV0gPSB0bXAK Kwl9CiAJcmV0dXJuIHhjLCBuaWwKIH0KIApAQCAtMjAwNyw2ICsyMTA1LDIwIEBAIGZ1bmMgKHgg KlZzbmRQYXJhbXMpIGZyb21DKHhjICpDLmxpYnhsX3ZzbmRfcGFyYW1zKSBlcnJvciB7CiAKIGZ1 bmMgKHggKlZzbmRQYXJhbXMpIHRvQygpICh4YyBDLmxpYnhsX3ZzbmRfcGFyYW1zLCBlcnIgZXJy b3IpIHsKIAlDLmxpYnhsX3ZzbmRfcGFyYW1zX2luaXQoJnhjKQorCW51bVNhbXBsZVJhdGVzIDo9 IGxlbih4LlNhbXBsZVJhdGVzKQorCXhjLnNhbXBsZV9yYXRlcyA9ICgqQy51aW50MzJfdCkoQy5t YWxsb2MoQy5zaXplX3QobnVtU2FtcGxlUmF0ZXMgKiBudW1TYW1wbGVSYXRlcykpKQorCXhjLm51 bV9zYW1wbGVfcmF0ZXMgPSBDLmludChudW1TYW1wbGVSYXRlcykKKwljU2FtcGxlUmF0ZXMgOj0g KCpbMSA8PCAyOF1DLnVpbnQzMl90KSh1bnNhZmUuUG9pbnRlcih4Yy5zYW1wbGVfcmF0ZXMpKVs6 bnVtU2FtcGxlUmF0ZXM6bnVtU2FtcGxlUmF0ZXNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5TYW1w bGVSYXRlcyB7CisJCWNTYW1wbGVSYXRlc1tpXSA9IEMudWludDMyX3QodikKKwl9CisJbnVtU2Ft cGxlRm9ybWF0cyA6PSBsZW4oeC5TYW1wbGVGb3JtYXRzKQorCXhjLnNhbXBsZV9mb3JtYXRzID0g KCpDLmxpYnhsX3ZzbmRfcGNtX2Zvcm1hdCkoQy5tYWxsb2MoQy5zaXplX3QobnVtU2FtcGxlRm9y bWF0cyAqIG51bVNhbXBsZUZvcm1hdHMpKSkKKwl4Yy5udW1fc2FtcGxlX2Zvcm1hdHMgPSBDLmlu dChudW1TYW1wbGVGb3JtYXRzKQorCWNTYW1wbGVGb3JtYXRzIDo9ICgqWzEgPDwgMjhdQy5saWJ4 bF92c25kX3BjbV9mb3JtYXQpKHVuc2FmZS5Qb2ludGVyKHhjLnNhbXBsZV9mb3JtYXRzKSlbOm51 bVNhbXBsZUZvcm1hdHM6bnVtU2FtcGxlRm9ybWF0c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlNh bXBsZUZvcm1hdHMgeworCQljU2FtcGxlRm9ybWF0c1tpXSA9IEMubGlieGxfdnNuZF9wY21fZm9y bWF0KHYpCisJfQogCXhjLmNoYW5uZWxzX21pbiA9IEMudWludDMyX3QoeC5DaGFubmVsc01pbikK IAl4Yy5jaGFubmVsc19tYXggPSBDLnVpbnQzMl90KHguQ2hhbm5lbHNNYXgpCiAJeGMuYnVmZmVy X3NpemUgPSBDLnVpbnQzMl90KHguQnVmZmVyU2l6ZSkKQEAgLTIwNjQsNiArMjE3NiwxOCBAQCBm dW5jICh4ICpWc25kUGNtKSB0b0MoKSAoeGMgQy5saWJ4bF92c25kX3BjbSwgZXJyIGVycm9yKSB7 CiAJCUMubGlieGxfdnNuZF9wY21fZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4YywgZXJyCiAJfQor CW51bVZzbmRTdHJlYW1zIDo9IGxlbih4LlN0cmVhbXMpCisJeGMuc3RyZWFtcyA9ICgqQy5saWJ4 bF92c25kX3N0cmVhbSkoQy5tYWxsb2MoQy51bG9uZyhudW1Wc25kU3RyZWFtcykgKiBDLnNpemVv Zl9saWJ4bF92c25kX3N0cmVhbSkpCisJeGMubnVtX3ZzbmRfc3RyZWFtcyA9IEMuaW50KG51bVZz bmRTdHJlYW1zKQorCWNTdHJlYW1zIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF92c25kX3N0cmVhbSko dW5zYWZlLlBvaW50ZXIoeGMuc3RyZWFtcykpWzpudW1Wc25kU3RyZWFtczpudW1Wc25kU3RyZWFt c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlN0cmVhbXMgeworCQl0bXAsIGVyciA6PSB2LnRvQygp CisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF92c25kX3BjbV9kaXNwb3NlKCZ4YykKKwkJ CXJldHVybiB4YywgZXJyCisJCX0KKwkJY1N0cmVhbXNbaV0gPSB0bXAKKwl9CiAJcmV0dXJuIHhj LCBuaWwKIH0KIApAQCAtMjEwMyw2ICsyMjI3LDE4IEBAIGZ1bmMgKHggKkRldmljZVZzbmQpIHRv QygpICh4YyBDLmxpYnhsX2RldmljZV92c25kLCBlcnIgZXJyb3IpIHsKIAkJQy5saWJ4bF9kZXZp Y2VfdnNuZF9kaXNwb3NlKCZ4YykKIAkJcmV0dXJuIHhjLCBlcnIKIAl9CisJbnVtVnNuZFBjbXMg Oj0gbGVuKHguUGNtcykKKwl4Yy5wY21zID0gKCpDLmxpYnhsX3ZzbmRfcGNtKShDLm1hbGxvYyhD LnVsb25nKG51bVZzbmRQY21zKSAqIEMuc2l6ZW9mX2xpYnhsX3ZzbmRfcGNtKSkKKwl4Yy5udW1f dnNuZF9wY21zID0gQy5pbnQobnVtVnNuZFBjbXMpCisJY1BjbXMgOj0gKCpbMSA8PCAyOF1DLmxp YnhsX3ZzbmRfcGNtKSh1bnNhZmUuUG9pbnRlcih4Yy5wY21zKSlbOm51bVZzbmRQY21zOm51bVZz bmRQY21zXQorCWZvciBpLCB2IDo9IHJhbmdlIHguUGNtcyB7CisJCXRtcCwgZXJyIDo9IHYudG9D KCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX2RldmljZV92c25kX2Rpc3Bvc2UoJnhj KQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljUGNtc1tpXSA9IHRtcAorCX0KIAlyZXR1cm4g eGMsIG5pbAogfQogCkBAIC0yMjg3LDYgKzI0MjMsMTg2IEBAIGZ1bmMgKHggKkRvbWFpbkNvbmZp ZykgdG9DKCkgKHhjIEMubGlieGxfZG9tYWluX2NvbmZpZywgZXJyIGVycm9yKSB7CiAJCUMubGli eGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4YykKIAkJcmV0dXJuIHhjLCBlcnIKIAl9CisJbnVt RGlza3MgOj0gbGVuKHguRGlza3MpCisJeGMuZGlza3MgPSAoKkMubGlieGxfZGV2aWNlX2Rpc2sp KEMubWFsbG9jKEMudWxvbmcobnVtRGlza3MpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX2Rpc2sp KQorCXhjLm51bV9kaXNrcyA9IEMuaW50KG51bURpc2tzKQorCWNEaXNrcyA6PSAoKlsxIDw8IDI4 XUMubGlieGxfZGV2aWNlX2Rpc2spKHVuc2FmZS5Qb2ludGVyKHhjLmRpc2tzKSlbOm51bURpc2tz Om51bURpc2tzXQorCWZvciBpLCB2IDo9IHJhbmdlIHguRGlza3MgeworCQl0bXAsIGVyciA6PSB2 LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bv c2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljRGlza3NbaV0gPSB0bXAKKwl9CisJ bnVtTmljcyA6PSBsZW4oeC5OaWNzKQorCXhjLm5pY3MgPSAoKkMubGlieGxfZGV2aWNlX25pYyko Qy5tYWxsb2MoQy51bG9uZyhudW1OaWNzKSAqIEMuc2l6ZW9mX2xpYnhsX2RldmljZV9uaWMpKQor CXhjLm51bV9uaWNzID0gQy5pbnQobnVtTmljcykKKwljTmljcyA6PSAoKlsxIDw8IDI4XUMubGli eGxfZGV2aWNlX25pYykodW5zYWZlLlBvaW50ZXIoeGMubmljcykpWzpudW1OaWNzOm51bU5pY3Nd CisJZm9yIGksIHYgOj0gcmFuZ2UgeC5OaWNzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlp ZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4YykKKwkJ CXJldHVybiB4YywgZXJyCisJCX0KKwkJY05pY3NbaV0gPSB0bXAKKwl9CisJbnVtUGNpZGV2cyA6 PSBsZW4oeC5QY2lkZXZzKQorCXhjLnBjaWRldnMgPSAoKkMubGlieGxfZGV2aWNlX3BjaSkoQy5t YWxsb2MoQy51bG9uZyhudW1QY2lkZXZzKSAqIEMuc2l6ZW9mX2xpYnhsX2RldmljZV9wY2kpKQor CXhjLm51bV9wY2lkZXZzID0gQy5pbnQobnVtUGNpZGV2cykKKwljUGNpZGV2cyA6PSAoKlsxIDw8 IDI4XUMubGlieGxfZGV2aWNlX3BjaSkodW5zYWZlLlBvaW50ZXIoeGMucGNpZGV2cykpWzpudW1Q Y2lkZXZzOm51bVBjaWRldnNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5QY2lkZXZzIHsKKwkJdG1w LCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2Nv bmZpZ19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1BjaWRldnNbaV0g PSB0bXAKKwl9CisJbnVtUmRtcyA6PSBsZW4oeC5SZG1zKQorCXhjLnJkbXMgPSAoKkMubGlieGxf ZGV2aWNlX3JkbSkoQy5tYWxsb2MoQy51bG9uZyhudW1SZG1zKSAqIEMuc2l6ZW9mX2xpYnhsX2Rl dmljZV9yZG0pKQorCXhjLm51bV9yZG1zID0gQy5pbnQobnVtUmRtcykKKwljUmRtcyA6PSAoKlsx IDw8IDI4XUMubGlieGxfZGV2aWNlX3JkbSkodW5zYWZlLlBvaW50ZXIoeGMucmRtcykpWzpudW1S ZG1zOm51bVJkbXNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5SZG1zIHsKKwkJdG1wLCBlcnIgOj0g di50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19kaXNw b3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1JkbXNbaV0gPSB0bXAKKwl9CisJ bnVtRHRkZXZzIDo9IGxlbih4LkR0ZGV2cykKKwl4Yy5kdGRldnMgPSAoKkMubGlieGxfZGV2aWNl X2R0ZGV2KShDLm1hbGxvYyhDLnVsb25nKG51bUR0ZGV2cykgKiBDLnNpemVvZl9saWJ4bF9kZXZp Y2VfZHRkZXYpKQorCXhjLm51bV9kdGRldnMgPSBDLmludChudW1EdGRldnMpCisJY0R0ZGV2cyA6 PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX2R0ZGV2KSh1bnNhZmUuUG9pbnRlcih4Yy5kdGRl dnMpKVs6bnVtRHRkZXZzOm51bUR0ZGV2c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LkR0ZGV2cyB7 CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX2Rv bWFpbl9jb25maWdfZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgorCQl9CisJCWNEdGRl dnNbaV0gPSB0bXAKKwl9CisJbnVtVmZicyA6PSBsZW4oeC5WZmJzKQorCXhjLnZmYnMgPSAoKkMu bGlieGxfZGV2aWNlX3ZmYikoQy5tYWxsb2MoQy51bG9uZyhudW1WZmJzKSAqIEMuc2l6ZW9mX2xp YnhsX2RldmljZV92ZmIpKQorCXhjLm51bV92ZmJzID0gQy5pbnQobnVtVmZicykKKwljVmZicyA6 PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX3ZmYikodW5zYWZlLlBvaW50ZXIoeGMudmZicykp WzpudW1WZmJzOm51bVZmYnNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5WZmJzIHsKKwkJdG1wLCBl cnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZp Z19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1ZmYnNbaV0gPSB0bXAK Kwl9CisJbnVtVmticyA6PSBsZW4oeC5Wa2JzKQorCXhjLnZrYnMgPSAoKkMubGlieGxfZGV2aWNl X3ZrYikoQy5tYWxsb2MoQy51bG9uZyhudW1Wa2JzKSAqIEMuc2l6ZW9mX2xpYnhsX2RldmljZV92 a2IpKQorCXhjLm51bV92a2JzID0gQy5pbnQobnVtVmticykKKwljVmticyA6PSAoKlsxIDw8IDI4 XUMubGlieGxfZGV2aWNlX3ZrYikodW5zYWZlLlBvaW50ZXIoeGMudmticykpWzpudW1Wa2JzOm51 bVZrYnNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5Wa2JzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0Mo KQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4 YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1ZrYnNbaV0gPSB0bXAKKwl9CisJbnVtVnRw bXMgOj0gbGVuKHguVnRwbXMpCisJeGMudnRwbXMgPSAoKkMubGlieGxfZGV2aWNlX3Z0cG0pKEMu bWFsbG9jKEMudWxvbmcobnVtVnRwbXMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3Z0cG0pKQor CXhjLm51bV92dHBtcyA9IEMuaW50KG51bVZ0cG1zKQorCWNWdHBtcyA6PSAoKlsxIDw8IDI4XUMu bGlieGxfZGV2aWNlX3Z0cG0pKHVuc2FmZS5Qb2ludGVyKHhjLnZ0cG1zKSlbOm51bVZ0cG1zOm51 bVZ0cG1zXQorCWZvciBpLCB2IDo9IHJhbmdlIHguVnRwbXMgeworCQl0bXAsIGVyciA6PSB2LnRv QygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2Uo JnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljVnRwbXNbaV0gPSB0bXAKKwl9CisJbnVt UDlTIDo9IGxlbih4LlA5UykKKwl4Yy5wOXMgPSAoKkMubGlieGxfZGV2aWNlX3A5KShDLm1hbGxv YyhDLnVsb25nKG51bVA5UykgKiBDLnNpemVvZl9saWJ4bF9kZXZpY2VfcDkpKQorCXhjLm51bV9w OXMgPSBDLmludChudW1QOVMpCisJY1A5UyA6PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX3A5 KSh1bnNhZmUuUG9pbnRlcih4Yy5wOXMpKVs6bnVtUDlTOm51bVA5U10KKwlmb3IgaSwgdiA6PSBy YW5nZSB4LlA5UyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJ CQlDLmxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgor CQl9CisJCWNQOVNbaV0gPSB0bXAKKwl9CisJbnVtUHZjYWxsc2lmcyA6PSBsZW4oeC5QdmNhbGxz aWZzKQorCXhjLnB2Y2FsbHNpZnMgPSAoKkMubGlieGxfZGV2aWNlX3B2Y2FsbHNpZikoQy5tYWxs b2MoQy51bG9uZyhudW1QdmNhbGxzaWZzKSAqIEMuc2l6ZW9mX2xpYnhsX2RldmljZV9wdmNhbGxz aWYpKQorCXhjLm51bV9wdmNhbGxzaWZzID0gQy5pbnQobnVtUHZjYWxsc2lmcykKKwljUHZjYWxs c2lmcyA6PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX3B2Y2FsbHNpZikodW5zYWZlLlBvaW50 ZXIoeGMucHZjYWxsc2lmcykpWzpudW1QdmNhbGxzaWZzOm51bVB2Y2FsbHNpZnNdCisJZm9yIGks IHYgOj0gcmFuZ2UgeC5QdmNhbGxzaWZzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBl cnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4YykKKwkJCXJl dHVybiB4YywgZXJyCisJCX0KKwkJY1B2Y2FsbHNpZnNbaV0gPSB0bXAKKwl9CisJbnVtVmRpc3Bs cyA6PSBsZW4oeC5WZGlzcGxzKQorCXhjLnZkaXNwbHMgPSAoKkMubGlieGxfZGV2aWNlX3ZkaXNw bCkoQy5tYWxsb2MoQy51bG9uZyhudW1WZGlzcGxzKSAqIEMuc2l6ZW9mX2xpYnhsX2RldmljZV92 ZGlzcGwpKQorCXhjLm51bV92ZGlzcGxzID0gQy5pbnQobnVtVmRpc3BscykKKwljVmRpc3BscyA6 PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX3ZkaXNwbCkodW5zYWZlLlBvaW50ZXIoeGMudmRp c3BscykpWzpudW1WZGlzcGxzOm51bVZkaXNwbHNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5WZGlz cGxzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGli eGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJ Y1ZkaXNwbHNbaV0gPSB0bXAKKwl9CisJbnVtVnNuZHMgOj0gbGVuKHguVnNuZHMpCisJeGMudnNu ZHMgPSAoKkMubGlieGxfZGV2aWNlX3ZzbmQpKEMubWFsbG9jKEMudWxvbmcobnVtVnNuZHMpICog Qy5zaXplb2ZfbGlieGxfZGV2aWNlX3ZzbmQpKQorCXhjLm51bV92c25kcyA9IEMuaW50KG51bVZz bmRzKQorCWNWc25kcyA6PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX3ZzbmQpKHVuc2FmZS5Q b2ludGVyKHhjLnZzbmRzKSlbOm51bVZzbmRzOm51bVZzbmRzXQorCWZvciBpLCB2IDo9IHJhbmdl IHguVnNuZHMgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJ Qy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJ fQorCQljVnNuZHNbaV0gPSB0bXAKKwl9CisJbnVtQ2hhbm5lbHMgOj0gbGVuKHguQ2hhbm5lbHMp CisJeGMuY2hhbm5lbHMgPSAoKkMubGlieGxfZGV2aWNlX2NoYW5uZWwpKEMubWFsbG9jKEMudWxv bmcobnVtQ2hhbm5lbHMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX2NoYW5uZWwpKQorCXhjLm51 bV9jaGFubmVscyA9IEMuaW50KG51bUNoYW5uZWxzKQorCWNDaGFubmVscyA6PSAoKlsxIDw8IDI4 XUMubGlieGxfZGV2aWNlX2NoYW5uZWwpKHVuc2FmZS5Qb2ludGVyKHhjLmNoYW5uZWxzKSlbOm51 bUNoYW5uZWxzOm51bUNoYW5uZWxzXQorCWZvciBpLCB2IDo9IHJhbmdlIHguQ2hhbm5lbHMgewor CQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21h aW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljQ2hhbm5l bHNbaV0gPSB0bXAKKwl9CisJbnVtVXNiY3RybHMgOj0gbGVuKHguVXNiY3RybHMpCisJeGMudXNi Y3RybHMgPSAoKkMubGlieGxfZGV2aWNlX3VzYmN0cmwpKEMubWFsbG9jKEMudWxvbmcobnVtVXNi Y3RybHMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3VzYmN0cmwpKQorCXhjLm51bV91c2JjdHJs cyA9IEMuaW50KG51bVVzYmN0cmxzKQorCWNVc2JjdHJscyA6PSAoKlsxIDw8IDI4XUMubGlieGxf ZGV2aWNlX3VzYmN0cmwpKHVuc2FmZS5Qb2ludGVyKHhjLnVzYmN0cmxzKSlbOm51bVVzYmN0cmxz Om51bVVzYmN0cmxzXQorCWZvciBpLCB2IDo9IHJhbmdlIHguVXNiY3RybHMgeworCQl0bXAsIGVy ciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fY29uZmln X2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljVXNiY3RybHNbaV0gPSB0 bXAKKwl9CisJbnVtVXNiZGV2cyA6PSBsZW4oeC5Vc2JkZXZzKQorCXhjLnVzYmRldnMgPSAoKkMu bGlieGxfZGV2aWNlX3VzYmRldikoQy5tYWxsb2MoQy51bG9uZyhudW1Vc2JkZXZzKSAqIEMuc2l6 ZW9mX2xpYnhsX2RldmljZV91c2JkZXYpKQorCXhjLm51bV91c2JkZXZzID0gQy5pbnQobnVtVXNi ZGV2cykKKwljVXNiZGV2cyA6PSAoKlsxIDw8IDI4XUMubGlieGxfZGV2aWNlX3VzYmRldikodW5z YWZlLlBvaW50ZXIoeGMudXNiZGV2cykpWzpudW1Vc2JkZXZzOm51bVVzYmRldnNdCisJZm9yIGks IHYgOj0gcmFuZ2UgeC5Vc2JkZXZzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIg IT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4YykKKwkJCXJldHVy biB4YywgZXJyCisJCX0KKwkJY1VzYmRldnNbaV0gPSB0bXAKKwl9CiAJeGMub25fcG93ZXJvZmYg PSBDLmxpYnhsX2FjdGlvbl9vbl9zaHV0ZG93bih4Lk9uUG93ZXJvZmYpCiAJeGMub25fcmVib290 ID0gQy5saWJ4bF9hY3Rpb25fb25fc2h1dGRvd24oeC5PblJlYm9vdCkKIAl4Yy5vbl93YXRjaGRv ZyA9IEMubGlieGxfYWN0aW9uX29uX3NodXRkb3duKHguT25XYXRjaGRvZykKQEAgLTI1NjYsNiAr Mjg4MiwxOCBAQCBmdW5jICh4ICpWZGlzcGxpbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF92ZGlzcGxp bmZvLCBlcnIgZXJyb3IpIHsKIAl4Yy5kZXZpZCA9IEMubGlieGxfZGV2aWQoeC5EZXZpZCkKIAl4 Yy5zdGF0ZSA9IEMuaW50KHguU3RhdGUpCiAJeGMuYmVfYWxsb2MgPSBDLmJvb2woeC5CZUFsbG9j KQorCW51bUNvbm5lY3RvcnMgOj0gbGVuKHguQ29ubmVjdG9ycykKKwl4Yy5jb25uZWN0b3JzID0g KCpDLmxpYnhsX2Nvbm5lY3RvcmluZm8pKEMubWFsbG9jKEMudWxvbmcobnVtQ29ubmVjdG9ycykg KiBDLnNpemVvZl9saWJ4bF9jb25uZWN0b3JpbmZvKSkKKwl4Yy5udW1fY29ubmVjdG9ycyA9IEMu aW50KG51bUNvbm5lY3RvcnMpCisJY0Nvbm5lY3RvcnMgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX2Nv bm5lY3RvcmluZm8pKHVuc2FmZS5Qb2ludGVyKHhjLmNvbm5lY3RvcnMpKVs6bnVtQ29ubmVjdG9y czpudW1Db25uZWN0b3JzXQorCWZvciBpLCB2IDo9IHJhbmdlIHguQ29ubmVjdG9ycyB7CisJCXRt cCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX3ZkaXNwbGlu Zm9fZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgorCQl9CisJCWNDb25uZWN0b3JzW2ld ID0gdG1wCisJfQogCXJldHVybiB4YywgbmlsCiB9CiAKQEAgLTI1OTgsNiArMjkyNiwxOCBAQCBm dW5jICh4ICpQY21pbmZvKSBmcm9tQyh4YyAqQy5saWJ4bF9wY21pbmZvKSBlcnJvciB7CiAKIGZ1 bmMgKHggKlBjbWluZm8pIHRvQygpICh4YyBDLmxpYnhsX3BjbWluZm8sIGVyciBlcnJvcikgewog CUMubGlieGxfcGNtaW5mb19pbml0KCZ4YykKKwludW1Wc25kU3RyZWFtcyA6PSBsZW4oeC5TdHJl YW1zKQorCXhjLnN0cmVhbXMgPSAoKkMubGlieGxfc3RyZWFtaW5mbykoQy5tYWxsb2MoQy51bG9u ZyhudW1Wc25kU3RyZWFtcykgKiBDLnNpemVvZl9saWJ4bF9zdHJlYW1pbmZvKSkKKwl4Yy5udW1f dnNuZF9zdHJlYW1zID0gQy5pbnQobnVtVnNuZFN0cmVhbXMpCisJY1N0cmVhbXMgOj0gKCpbMSA8 PCAyOF1DLmxpYnhsX3N0cmVhbWluZm8pKHVuc2FmZS5Qb2ludGVyKHhjLnN0cmVhbXMpKVs6bnVt VnNuZFN0cmVhbXM6bnVtVnNuZFN0cmVhbXNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5TdHJlYW1z IHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxf cGNtaW5mb19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1N0cmVhbXNb aV0gPSB0bXAKKwl9CiAJcmV0dXJuIHhjLCBuaWwKIH0KIApAQCAtMjYyOSw2ICsyOTY5LDE4IEBA IGZ1bmMgKHggKlZzbmRpbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF92c25kaW5mbywgZXJyIGVycm9y KSB7CiAJeGMuZnJvbnRlbmRfaWQgPSBDLnVpbnQzMl90KHguRnJvbnRlbmRJZCkKIAl4Yy5kZXZp ZCA9IEMubGlieGxfZGV2aWQoeC5EZXZpZCkKIAl4Yy5zdGF0ZSA9IEMuaW50KHguU3RhdGUpCisJ bnVtVnNuZFBjbXMgOj0gbGVuKHguUGNtcykKKwl4Yy5wY21zID0gKCpDLmxpYnhsX3BjbWluZm8p KEMubWFsbG9jKEMudWxvbmcobnVtVnNuZFBjbXMpICogQy5zaXplb2ZfbGlieGxfcGNtaW5mbykp CisJeGMubnVtX3ZzbmRfcGNtcyA9IEMuaW50KG51bVZzbmRQY21zKQorCWNQY21zIDo9ICgqWzEg PDwgMjhdQy5saWJ4bF9wY21pbmZvKSh1bnNhZmUuUG9pbnRlcih4Yy5wY21zKSlbOm51bVZzbmRQ Y21zOm51bVZzbmRQY21zXQorCWZvciBpLCB2IDo9IHJhbmdlIHguUGNtcyB7CisJCXRtcCwgZXJy IDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX3ZzbmRpbmZvX2Rpc3Bv c2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljUGNtc1tpXSA9IHRtcAorCX0KIAly ZXR1cm4geGMsIG5pbAogfQogCkBAIC0yNjczLDYgKzMwMjUsMTMgQEAgZnVuYyAoeCAqTnVtYWlu Zm8pIHRvQygpICh4YyBDLmxpYnhsX251bWFpbmZvLCBlcnIgZXJyb3IpIHsKIAlDLmxpYnhsX251 bWFpbmZvX2luaXQoJnhjKQogCXhjLnNpemUgPSBDLnVpbnQ2NF90KHguU2l6ZSkKIAl4Yy5mcmVl ID0gQy51aW50NjRfdCh4LkZyZWUpCisJbnVtRGlzdHMgOj0gbGVuKHguRGlzdHMpCisJeGMuZGlz dHMgPSAoKkMudWludDMyX3QpKEMubWFsbG9jKEMuc2l6ZV90KG51bURpc3RzICogbnVtRGlzdHMp KSkKKwl4Yy5udW1fZGlzdHMgPSBDLmludChudW1EaXN0cykKKwljRGlzdHMgOj0gKCpbMSA8PCAy OF1DLnVpbnQzMl90KSh1bnNhZmUuUG9pbnRlcih4Yy5kaXN0cykpWzpudW1EaXN0czpudW1EaXN0 c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LkRpc3RzIHsKKwkJY0Rpc3RzW2ldID0gQy51aW50MzJf dCh2KQorCX0KIAlyZXR1cm4geGMsIG5pbAogfQogCi0tIAoyLjE5LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs