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.4 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,URIBL_BLOCKED,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 1F691C432C3 for ; Fri, 15 Nov 2019 19:47:10 +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 D925520740 for ; Fri, 15 Nov 2019 19:47:09 +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="I223Dh01" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D925520740 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 1iVhYI-0002SW-Ct; Fri, 15 Nov 2019 19:46:42 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iVhYG-0002Qh-QY for xen-devel@lists.xenproject.org; Fri, 15 Nov 2019 19:46:40 +0000 X-Inumbo-ID: 775ecf68-07e0-11ea-984a-bc764e2007e4 Received: from mail-qv1-xf43.google.com (unknown [2607:f8b0:4864:20::f43]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 775ecf68-07e0-11ea-984a-bc764e2007e4; Fri, 15 Nov 2019 19:45:24 +0000 (UTC) Received: by mail-qv1-xf43.google.com with SMTP id y18so4223497qve.2 for ; Fri, 15 Nov 2019 11:45:24 -0800 (PST) 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=6KvL+zGnrqJvGYsIKTQcnBaK5lTEjSmeLp1/ZvjnZbE=; b=I223Dh01Yu68RAjP2heh9eMnEEvthq3nIqq5d9j2phv6kgaWCJ62CqYQYiFQdY59cp +T4m/BREPtEKK7SzJ06pS8vRoIqMYBQXzxsnZR0vkcKhtILModyfSWAbo5ntmShFbYQR ATOmroEh1HruqGRgLXuTz/6QLDfYCcmKylfrqylj61nAdW+grvan/rkjj81e5lg0yeyK ll8LRWamoa8DbI2lAw1LOpBeGWaTJQhCThj0nc9xhRGAsEaoEI6sQwknjidsi0paTHH8 jJGwt+ke0kh6T9eFFRrpWHxs5r5oLxfVaSS8AbZmS0+GleQ22RYvV3W4h+s53bmvsh8R xpCw== 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=6KvL+zGnrqJvGYsIKTQcnBaK5lTEjSmeLp1/ZvjnZbE=; b=UUY6OOJcFWW+/zLi7aJcab6yytxS8SIvAX7bZQHIOWWS+WJ+S/D99t5YqkJFbF80z/ xJcmAWPAPlV5xzIzckyiYKQ4C39/8LtPsWBjWblFsGAB6H+eYDlHXrXpQu/6PaeB3C1Z HpgtVFyYUSjUytaGrH8xW1UH5gi19/1j0jGXtEZctR+boW8pwaagoqGASq79OPAm7G7h IRc9oa3uloHQ2Xo+icjmcZQSGot65u3Xl2n0IDy7e5iZOPhPJmHq4gPSziFcYMcepL+L vyl4sdjvHlzpdRIhoyFVIUwDxkGybzu6UyH/qTfGZ0Rjop3killydxH3wy5Rg+0uixlz glRQ== X-Gm-Message-State: APjAAAXdeltMWUF2P6bYZ9EQ0pnE4qyUiBNVIdnpkFwUHKOA8CAZAOOm mHfEe6D5ysLuhFBe/lQdGORbvdaQ X-Google-Smtp-Source: APXvYqxndbst0m1aCQc7G9bar6aeoSJLummeON6cqIYYtD0eK0tm4jsH8LPlVUX96C8gOZXw6lfRGA== X-Received: by 2002:a0c:9637:: with SMTP id 52mr14704887qvx.174.1573847123529; Fri, 15 Nov 2019 11:45:23 -0800 (PST) Received: from five.crux.rad.ainfosec.com (209-217-208-226.northland.net. [209.217.208.226]) by smtp.googlemail.com with ESMTPSA id y10sm4649679qkb.55.2019.11.15.11.45.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Nov 2019 11:45:22 -0800 (PST) From: Nick Rosbrook To: xen-devel@lists.xenproject.org Date: Fri, 15 Nov 2019 14:44:27 -0500 Message-Id: X-Mailer: git-send-email 2.19.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 20/22] 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+Ci0tLQogdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L2dlbmdvdHlwZXMucHkgIHwgIDQ0ICsrKy0KIHRvb2xzL2dvbGFuZy94ZW5s aWdodC9oZWxwZXJzLmdlbi5nbyB8IDM1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIg ZmlsZXMgY2hhbmdlZCwgNDAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvZ2VuZ290eXBlcy5weSBiL3Rvb2xzL2dvbGFuZy94 ZW5saWdodC9nZW5nb3R5cGVzLnB5CmluZGV4IDVmYTA3MGIzMjAuLmQ2N2UyMWI0N2IgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5CisrKyBiL3Rvb2xzL2dv bGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5CkBAIC01MDAsNyArNTAwLDcgQEAgZGVmIHhlbmxp Z2h0X2dvbGFuZ19kZWZpbmVfdG9fQyh0eSA9IE5vbmUsIHR5cGVuYW1lID0gTm9uZSwgbmVzdGVk ID0gRmFsc2UpOgogICAgIGZvciBmIGluIHR5LmZpZWxkczoKICAgICAgICAgaWYgZi50eXBlLnR5 cGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmLnR5cGUsIGlk bC5BcnJheSk6Ci0gICAgICAgICAgICAgICAgIyBUT0RPCisgICAgICAgICAgICAgICAgcyArPSB4 ZW5saWdodF9nb2xhbmdfYXJyYXlfdG9fQyhmLCB0eS5kaXNwb3NlX2ZuKQogICAgICAgICAgICAg ICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGdvdHlwZW5hbWUgPSB4ZW5saWdodF9nb2xhbmdf Zm10X25hbWUoZi50eXBlLnR5cGVuYW1lKQpAQCAtNjMxLDYgKzYzMSw0OCBAQCBkZWYgeGVubGln aHRfZ29sYW5nX3VuaW9uX3RvX0ModHkgPSBOb25lLCB1bmlvbl9uYW1lID0gJycsCiAKICAgICBy ZXR1cm4gcwogCitkZWYgeGVubGlnaHRfZ29sYW5nX2FycmF5X3RvX0ModHkgPSBOb25lLCBkaXNw b3NlX2ZuID0gJycpOgorICAgIHMgPSAnJworCisgICAgZ290eXBlbmFtZSA9IHhlbmxpZ2h0X2dv bGFuZ19mbXRfbmFtZSh0eS50eXBlLmVsZW1fdHlwZS50eXBlbmFtZSkKKyAgICBnb25hbWUgICAg ID0geGVubGlnaHRfZ29sYW5nX2ZtdF9uYW1lKHR5Lm5hbWUpCisgICAgY3R5cGVuYW1lICA9IHR5 LnR5cGUuZWxlbV90eXBlLnR5cGVuYW1lCisgICAgY25hbWUgICAgICA9IHR5Lm5hbWUKKyAgICBj bGVudmFyICAgID0gdHkudHlwZS5sZW52YXIubmFtZQorICAgIGdvbGVudmFyICAgPSB4ZW5saWdo dF9nb2xhbmdfZm10X25hbWUoY2xlbnZhcixleHBvcnRlZD1GYWxzZSkKKworICAgIGlzX2VudW0g PSBpc2luc3RhbmNlKHR5LnR5cGUuZWxlbV90eXBlLGlkbC5FbnVtZXJhdGlvbikKKyAgICBpZiBn b3R5cGVuYW1lIGluIGdvX2J1aWx0aW5fdHlwZXMgb3IgaXNfZW51bToKKyAgICAgICAgcyArPSAn e30gOj0gbGVuKHgue30pXG4nLmZvcm1hdChnb2xlbnZhcixnb25hbWUpCisgICAgICAgIHMgKz0g J3hjLnt9ID0gKCpDLnt9KShDLm1hbGxvYyhDLnNpemVfdCh7fSp7fSkpKVxuJy5mb3JtYXQoY25h bWUsY3R5cGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdvbGVudmFyLGdvbGVudmFyKQorICAgICAgICBzICs9 ICd4Yy57fSA9IEMuaW50KHt9KVxuJy5mb3JtYXQoY2xlbnZhcixnb2xlbnZhcikKKyAgICAgICAg cyArPSAnY3t9IDo9ICgqWzE8PDI4XUMue30pKHVuc2FmZS5Qb2ludGVyKHhjLnt9KSlbOnt9Ont9 XVxuJy5mb3JtYXQoZ29uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlbmFtZSxjbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnb2xlbnZhcixnb2xlbnZhcikKKyAgICAgICAgcyArPSAnZm9yIGksdiA6PSByYW5n ZSB4Lnt9IHt7XG4nLmZvcm1hdChnb25hbWUpCisgICAgICAgIHMgKz0gJ2N7fVtpXSA9IEMue30o dilcbicuZm9ybWF0KGdvbmFtZSxjdHlwZW5hbWUpCisgICAgICAgIHMgKz0gJ31cbicKKworICAg ICAgICByZXR1cm4gcworCisgICAgcyArPSAne30gOj0gbGVuKHgue30pXG4nLmZvcm1hdChnb2xl bnZhcixnb25hbWUpCisgICAgcyArPSAneGMue30gPSAoKkMue30pKEMubWFsbG9jKEMudWxvbmco e30pKkMuc2l6ZW9mX3t9KSlcbicuZm9ybWF0KGNuYW1lLGN0eXBlbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn b2xlbnZhcixjdHlwZW5hbWUpCisgICAgcyArPSAneGMue30gPSBDLmludCh7fSlcbicuZm9ybWF0 KGNsZW52YXIsZ29sZW52YXIpCisgICAgcyArPSAnY3t9IDo9ICgqWzE8PDI4XUMue30pKHVuc2Fm ZS5Qb2ludGVyKHhjLnt9KSlbOnt9Ont9XVxuJy5mb3JtYXQoZ29uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN0eXBlbmFtZSxjbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2xlbnZhcixnb2xlbnZhcikK KyAgICBzICs9ICdmb3IgaSx2IDo9IHJhbmdlIHgue30ge3tcbicuZm9ybWF0KGdvbmFtZSkKKyAg ICBzICs9ICd0bXAsIGVyciA6PSB2LnRvQygpXG4nCisgICAgcyArPSAnaWYgZXJyICE9IG5pbCB7 XG4nCisgICAgcyArPSAnQy57fSgmeGMpXG4nLmZvcm1hdChkaXNwb3NlX2ZuKQorICAgIHMgKz0g J3JldHVybiB4YyxlcnJcbn1cbicKKyAgICBzICs9ICdje31baV0gPSB0bXBcbicuZm9ybWF0KGdv bmFtZSkKKyAgICBzICs9ICd9XG4nCisKKyAgICByZXR1cm4gcworCiBkZWYgeGVubGlnaHRfZ29s YW5nX2ZtdF9uYW1lKG5hbWUsIGV4cG9ydGVkID0gVHJ1ZSk6CiAgICAgIiIiCiAgICAgVGFrZSBh IGdpdmVuIHR5cGUgbmFtZSBhbmQgcmV0dXJuIGFuCmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcv eGVubGlnaHQvaGVscGVycy5nZW4uZ28gYi90b29scy9nb2xhbmcveGVubGlnaHQvaGVscGVycy5n ZW4uZ28KaW5kZXggYmM5NGUxM2Q3MC4uM2Q0YmZmMWU3YiAxMDA2NDQKLS0tIGEvdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L2hlbHBlcnMuZ2VuLmdvCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC9o ZWxwZXJzLmdlbi5nbwpAQCAtNjY0LDYgKzY2NCwxOCBAQCBmdW5jICh4ICpWY3B1U2NoZWRQYXJh bXMpIGZyb21DKHhjICpDLmxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zKSBlcnJvciB7CiBmdW5jICh4 ICpWY3B1U2NoZWRQYXJhbXMpIHRvQygpICh4YyBDLmxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zLCBl cnIgZXJyb3IpIHsKIAlDLmxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2luaXQoJnhjKQogCXhjLnNj aGVkID0gQy5saWJ4bF9zY2hlZHVsZXIoeC5TY2hlZCkKKwludW1WY3B1cyA6PSBsZW4oeC5WY3B1 cykKKwl4Yy52Y3B1cyA9ICgqQy5saWJ4bF9zY2hlZF9wYXJhbXMpKEMubWFsbG9jKEMudWxvbmco bnVtVmNwdXMpICogQy5zaXplb2ZfbGlieGxfc2NoZWRfcGFyYW1zKSkKKwl4Yy5udW1fdmNwdXMg PSBDLmludChudW1WY3B1cykKKwljVmNwdXMgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX3NjaGVkX3Bh cmFtcykodW5zYWZlLlBvaW50ZXIoeGMudmNwdXMpKVs6bnVtVmNwdXM6bnVtVmNwdXNdCisJZm9y IGksIHYgOj0gcmFuZ2UgeC5WY3B1cyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJy ICE9IG5pbCB7CisJCQlDLmxpYnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2Rpc3Bvc2UoJnhjKQorCQkJ cmV0dXJuIHhjLCBlcnIKKwkJfQorCQljVmNwdXNbaV0gPSB0bXAKKwl9CiAJcmV0dXJuIHhjLCBu aWwKIH0KIApAQCAtNzEyLDYgKzcyNCwxMyBAQCBmdW5jICh4ICpWbm9kZUluZm8pIGZyb21DKHhj ICpDLmxpYnhsX3Zub2RlX2luZm8pIGVycm9yIHsKIGZ1bmMgKHggKlZub2RlSW5mbykgdG9DKCkg KHhjIEMubGlieGxfdm5vZGVfaW5mbywgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF92bm9kZV9pbmZv X2luaXQoJnhjKQogCXhjLm1lbWtiID0gQy51aW50NjRfdCh4Lk1lbWtiKQorCW51bURpc3RhbmNl cyA6PSBsZW4oeC5EaXN0YW5jZXMpCisJeGMuZGlzdGFuY2VzID0gKCpDLnVpbnQzMl90KShDLm1h bGxvYyhDLnNpemVfdChudW1EaXN0YW5jZXMgKiBudW1EaXN0YW5jZXMpKSkKKwl4Yy5udW1fZGlz dGFuY2VzID0gQy5pbnQobnVtRGlzdGFuY2VzKQorCWNEaXN0YW5jZXMgOj0gKCpbMSA8PCAyOF1D LnVpbnQzMl90KSh1bnNhZmUuUG9pbnRlcih4Yy5kaXN0YW5jZXMpKVs6bnVtRGlzdGFuY2VzOm51 bURpc3RhbmNlc10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LkRpc3RhbmNlcyB7CisJCWNEaXN0YW5j ZXNbaV0gPSBDLnVpbnQzMl90KHYpCisJfQogCXhjLnBub2RlID0gQy51aW50MzJfdCh4LlBub2Rl KQogCXhjLnZjcHVzLCBlcnIgPSB4LlZjcHVzLnRvQygpCiAJaWYgZXJyICE9IG5pbCB7CkBAIC0x MDk5LDYgKzExMTgsMzAgQEAgZnVuYyAoeCAqRG9tYWluQnVpbGRJbmZvKSB0b0MoKSAoeGMgQy5s aWJ4bF9kb21haW5fYnVpbGRfaW5mbywgZXJyIGVycm9yKSB7CiAJCUMubGlieGxfZG9tYWluX2J1 aWxkX2luZm9fZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4YywgZXJyCiAJfQorCW51bVZjcHVIYXJk QWZmaW5pdHkgOj0gbGVuKHguVmNwdUhhcmRBZmZpbml0eSkKKwl4Yy52Y3B1X2hhcmRfYWZmaW5p dHkgPSAoKkMubGlieGxfYml0bWFwKShDLm1hbGxvYyhDLnVsb25nKG51bVZjcHVIYXJkQWZmaW5p dHkpICogQy5zaXplb2ZfbGlieGxfYml0bWFwKSkKKwl4Yy5udW1fdmNwdV9oYXJkX2FmZmluaXR5 ID0gQy5pbnQobnVtVmNwdUhhcmRBZmZpbml0eSkKKwljVmNwdUhhcmRBZmZpbml0eSA6PSAoKlsx IDw8IDI4XUMubGlieGxfYml0bWFwKSh1bnNhZmUuUG9pbnRlcih4Yy52Y3B1X2hhcmRfYWZmaW5p dHkpKVs6bnVtVmNwdUhhcmRBZmZpbml0eTpudW1WY3B1SGFyZEFmZmluaXR5XQorCWZvciBpLCB2 IDo9IHJhbmdlIHguVmNwdUhhcmRBZmZpbml0eSB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJ aWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhj KQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljVmNwdUhhcmRBZmZpbml0eVtpXSA9IHRtcAor CX0KKwludW1WY3B1U29mdEFmZmluaXR5IDo9IGxlbih4LlZjcHVTb2Z0QWZmaW5pdHkpCisJeGMu dmNwdV9zb2Z0X2FmZmluaXR5ID0gKCpDLmxpYnhsX2JpdG1hcCkoQy5tYWxsb2MoQy51bG9uZyhu dW1WY3B1U29mdEFmZmluaXR5KSAqIEMuc2l6ZW9mX2xpYnhsX2JpdG1hcCkpCisJeGMubnVtX3Zj cHVfc29mdF9hZmZpbml0eSA9IEMuaW50KG51bVZjcHVTb2Z0QWZmaW5pdHkpCisJY1ZjcHVTb2Z0 QWZmaW5pdHkgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX2JpdG1hcCkodW5zYWZlLlBvaW50ZXIoeGMu dmNwdV9zb2Z0X2FmZmluaXR5KSlbOm51bVZjcHVTb2Z0QWZmaW5pdHk6bnVtVmNwdVNvZnRBZmZp bml0eV0KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlZjcHVTb2Z0QWZmaW5pdHkgeworCQl0bXAsIGVy ciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fYnVpbGRf aW5mb19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1ZjcHVTb2Z0QWZm aW5pdHlbaV0gPSB0bXAKKwl9CiAJeGMubnVtYV9wbGFjZW1lbnQsIGVyciA9IHguTnVtYVBsYWNl bWVudC50b0MoKQogCWlmIGVyciAhPSBuaWwgewogCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZv X2Rpc3Bvc2UoJnhjKQpAQCAtMTEyOSw2ICsxMTcyLDE4IEBAIGZ1bmMgKHggKkRvbWFpbkJ1aWxk SW5mbykgdG9DKCkgKHhjIEMubGlieGxfZG9tYWluX2J1aWxkX2luZm8sIGVyciBlcnJvcikgewog CQlyZXR1cm4geGMsIGVycgogCX0KIAl4Yy5ibGtkZXZfc3RhcnQgPSBDLkNTdHJpbmcoeC5CbGtk ZXZTdGFydCkKKwludW1WbnVtYU5vZGVzIDo9IGxlbih4LlZudW1hTm9kZXMpCisJeGMudm51bWFf bm9kZXMgPSAoKkMubGlieGxfdm5vZGVfaW5mbykoQy5tYWxsb2MoQy51bG9uZyhudW1WbnVtYU5v ZGVzKSAqIEMuc2l6ZW9mX2xpYnhsX3Zub2RlX2luZm8pKQorCXhjLm51bV92bnVtYV9ub2RlcyA9 IEMuaW50KG51bVZudW1hTm9kZXMpCisJY1ZudW1hTm9kZXMgOj0gKCpbMSA8PCAyOF1DLmxpYnhs X3Zub2RlX2luZm8pKHVuc2FmZS5Qb2ludGVyKHhjLnZudW1hX25vZGVzKSlbOm51bVZudW1hTm9k ZXM6bnVtVm51bWFOb2Rlc10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlZudW1hTm9kZXMgeworCQl0 bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5f YnVpbGRfaW5mb19kaXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1ZudW1h Tm9kZXNbaV0gPSB0bXAKKwl9CiAJeGMubWF4X2dyYW50X2ZyYW1lcyA9IEMudWludDMyX3QoeC5N YXhHcmFudEZyYW1lcykKIAl4Yy5tYXhfbWFwdHJhY2tfZnJhbWVzID0gQy51aW50MzJfdCh4Lk1h eE1hcHRyYWNrRnJhbWVzKQogCXhjLmRldmljZV9tb2RlbF92ZXJzaW9uID0gQy5saWJ4bF9kZXZp Y2VfbW9kZWxfdmVyc2lvbih4LkRldmljZU1vZGVsVmVyc2lvbikKQEAgLTExNjEsNiArMTIxNiwz NyBAQCBmdW5jICh4ICpEb21haW5CdWlsZEluZm8pIHRvQygpICh4YyBDLmxpYnhsX2RvbWFpbl9i dWlsZF9pbmZvLCBlcnIgZXJyb3IpIHsKIAkJQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mb19kaXNw b3NlKCZ4YykKIAkJcmV0dXJuIHhjLCBlcnIKIAl9CisJbnVtSW9wb3J0cyA6PSBsZW4oeC5Jb3Bv cnRzKQorCXhjLmlvcG9ydHMgPSAoKkMubGlieGxfaW9wb3J0X3JhbmdlKShDLm1hbGxvYyhDLnVs b25nKG51bUlvcG9ydHMpICogQy5zaXplb2ZfbGlieGxfaW9wb3J0X3JhbmdlKSkKKwl4Yy5udW1f aW9wb3J0cyA9IEMuaW50KG51bUlvcG9ydHMpCisJY0lvcG9ydHMgOj0gKCpbMSA8PCAyOF1DLmxp YnhsX2lvcG9ydF9yYW5nZSkodW5zYWZlLlBvaW50ZXIoeGMuaW9wb3J0cykpWzpudW1Jb3BvcnRz Om51bUlvcG9ydHNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5Jb3BvcnRzIHsKKwkJdG1wLCBlcnIg Oj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2J1aWxkX2lu Zm9fZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgorCQl9CisJCWNJb3BvcnRzW2ldID0g dG1wCisJfQorCW51bUlycXMgOj0gbGVuKHguSXJxcykKKwl4Yy5pcnFzID0gKCpDLnVpbnQzMl90 KShDLm1hbGxvYyhDLnNpemVfdChudW1JcnFzICogbnVtSXJxcykpKQorCXhjLm51bV9pcnFzID0g Qy5pbnQobnVtSXJxcykKKwljSXJxcyA6PSAoKlsxIDw8IDI4XUMudWludDMyX3QpKHVuc2FmZS5Q b2ludGVyKHhjLmlycXMpKVs6bnVtSXJxczpudW1JcnFzXQorCWZvciBpLCB2IDo9IHJhbmdlIHgu SXJxcyB7CisJCWNJcnFzW2ldID0gQy51aW50MzJfdCh2KQorCX0KKwludW1Jb21lbSA6PSBsZW4o eC5Jb21lbSkKKwl4Yy5pb21lbSA9ICgqQy5saWJ4bF9pb21lbV9yYW5nZSkoQy5tYWxsb2MoQy51 bG9uZyhudW1Jb21lbSkgKiBDLnNpemVvZl9saWJ4bF9pb21lbV9yYW5nZSkpCisJeGMubnVtX2lv bWVtID0gQy5pbnQobnVtSW9tZW0pCisJY0lvbWVtIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9pb21l bV9yYW5nZSkodW5zYWZlLlBvaW50ZXIoeGMuaW9tZW0pKVs6bnVtSW9tZW06bnVtSW9tZW1dCisJ Zm9yIGksIHYgOj0gcmFuZ2UgeC5Jb21lbSB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYg ZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQor CQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljSW9tZW1baV0gPSB0bXAKKwl9CiAJeGMuY2xhaW1f bW9kZSwgZXJyID0geC5DbGFpbU1vZGUudG9DKCkKIAlpZiBlcnIgIT0gbmlsIHsKIAkJQy5saWJ4 bF9kb21haW5fYnVpbGRfaW5mb19kaXNwb3NlKCZ4YykKQEAgLTE5ODcsNiArMjA3MywxOCBAQCBm dW5jICh4ICpEZXZpY2VWZGlzcGwpIHRvQygpICh4YyBDLmxpYnhsX2RldmljZV92ZGlzcGwsIGVy ciBlcnJvcikgewogCXhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21u YW1lKQogCXhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlkKQogCXhjLmJlX2FsbG9jID0g Qy5ib29sKHguQmVBbGxvYykKKwludW1Db25uZWN0b3JzIDo9IGxlbih4LkNvbm5lY3RvcnMpCisJ eGMuY29ubmVjdG9ycyA9ICgqQy5saWJ4bF9jb25uZWN0b3JfcGFyYW0pKEMubWFsbG9jKEMudWxv bmcobnVtQ29ubmVjdG9ycykgKiBDLnNpemVvZl9saWJ4bF9jb25uZWN0b3JfcGFyYW0pKQorCXhj Lm51bV9jb25uZWN0b3JzID0gQy5pbnQobnVtQ29ubmVjdG9ycykKKwljQ29ubmVjdG9ycyA6PSAo KlsxIDw8IDI4XUMubGlieGxfY29ubmVjdG9yX3BhcmFtKSh1bnNhZmUuUG9pbnRlcih4Yy5jb25u ZWN0b3JzKSlbOm51bUNvbm5lY3RvcnM6bnVtQ29ubmVjdG9yc10KKwlmb3IgaSwgdiA6PSByYW5n ZSB4LkNvbm5lY3RvcnMgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwg eworCQkJQy5saWJ4bF9kZXZpY2VfdmRpc3BsX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBl cnIKKwkJfQorCQljQ29ubmVjdG9yc1tpXSA9IHRtcAorCX0KIAlyZXR1cm4geGMsIG5pbAogfQog CkBAIC0yMDExLDYgKzIxMDksMjAgQEAgZnVuYyAoeCAqVnNuZFBhcmFtcykgZnJvbUMoeGMgKkMu bGlieGxfdnNuZF9wYXJhbXMpIGVycm9yIHsKIAogZnVuYyAoeCAqVnNuZFBhcmFtcykgdG9DKCkg KHhjIEMubGlieGxfdnNuZF9wYXJhbXMsIGVyciBlcnJvcikgewogCUMubGlieGxfdnNuZF9wYXJh bXNfaW5pdCgmeGMpCisJbnVtU2FtcGxlUmF0ZXMgOj0gbGVuKHguU2FtcGxlUmF0ZXMpCisJeGMu c2FtcGxlX3JhdGVzID0gKCpDLnVpbnQzMl90KShDLm1hbGxvYyhDLnNpemVfdChudW1TYW1wbGVS YXRlcyAqIG51bVNhbXBsZVJhdGVzKSkpCisJeGMubnVtX3NhbXBsZV9yYXRlcyA9IEMuaW50KG51 bVNhbXBsZVJhdGVzKQorCWNTYW1wbGVSYXRlcyA6PSAoKlsxIDw8IDI4XUMudWludDMyX3QpKHVu c2FmZS5Qb2ludGVyKHhjLnNhbXBsZV9yYXRlcykpWzpudW1TYW1wbGVSYXRlczpudW1TYW1wbGVS YXRlc10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlNhbXBsZVJhdGVzIHsKKwkJY1NhbXBsZVJhdGVz W2ldID0gQy51aW50MzJfdCh2KQorCX0KKwludW1TYW1wbGVGb3JtYXRzIDo9IGxlbih4LlNhbXBs ZUZvcm1hdHMpCisJeGMuc2FtcGxlX2Zvcm1hdHMgPSAoKkMubGlieGxfdnNuZF9wY21fZm9ybWF0 KShDLm1hbGxvYyhDLnNpemVfdChudW1TYW1wbGVGb3JtYXRzICogbnVtU2FtcGxlRm9ybWF0cykp KQorCXhjLm51bV9zYW1wbGVfZm9ybWF0cyA9IEMuaW50KG51bVNhbXBsZUZvcm1hdHMpCisJY1Nh bXBsZUZvcm1hdHMgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX3ZzbmRfcGNtX2Zvcm1hdCkodW5zYWZl LlBvaW50ZXIoeGMuc2FtcGxlX2Zvcm1hdHMpKVs6bnVtU2FtcGxlRm9ybWF0czpudW1TYW1wbGVG b3JtYXRzXQorCWZvciBpLCB2IDo9IHJhbmdlIHguU2FtcGxlRm9ybWF0cyB7CisJCWNTYW1wbGVG b3JtYXRzW2ldID0gQy5saWJ4bF92c25kX3BjbV9mb3JtYXQodikKKwl9CiAJeGMuY2hhbm5lbHNf bWluID0gQy51aW50MzJfdCh4LkNoYW5uZWxzTWluKQogCXhjLmNoYW5uZWxzX21heCA9IEMudWlu dDMyX3QoeC5DaGFubmVsc01heCkKIAl4Yy5idWZmZXJfc2l6ZSA9IEMudWludDMyX3QoeC5CdWZm ZXJTaXplKQpAQCAtMjA2OCw2ICsyMTgwLDE4IEBAIGZ1bmMgKHggKlZzbmRQY20pIHRvQygpICh4 YyBDLmxpYnhsX3ZzbmRfcGNtLCBlcnIgZXJyb3IpIHsKIAkJQy5saWJ4bF92c25kX3BjbV9kaXNw b3NlKCZ4YykKIAkJcmV0dXJuIHhjLCBlcnIKIAl9CisJbnVtVnNuZFN0cmVhbXMgOj0gbGVuKHgu U3RyZWFtcykKKwl4Yy5zdHJlYW1zID0gKCpDLmxpYnhsX3ZzbmRfc3RyZWFtKShDLm1hbGxvYyhD LnVsb25nKG51bVZzbmRTdHJlYW1zKSAqIEMuc2l6ZW9mX2xpYnhsX3ZzbmRfc3RyZWFtKSkKKwl4 Yy5udW1fdnNuZF9zdHJlYW1zID0gQy5pbnQobnVtVnNuZFN0cmVhbXMpCisJY1N0cmVhbXMgOj0g KCpbMSA8PCAyOF1DLmxpYnhsX3ZzbmRfc3RyZWFtKSh1bnNhZmUuUG9pbnRlcih4Yy5zdHJlYW1z KSlbOm51bVZzbmRTdHJlYW1zOm51bVZzbmRTdHJlYW1zXQorCWZvciBpLCB2IDo9IHJhbmdlIHgu U3RyZWFtcyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlD LmxpYnhsX3ZzbmRfcGNtX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQlj U3RyZWFtc1tpXSA9IHRtcAorCX0KIAlyZXR1cm4geGMsIG5pbAogfQogCkBAIC0yMTA3LDYgKzIy MzEsMTggQEAgZnVuYyAoeCAqRGV2aWNlVnNuZCkgdG9DKCkgKHhjIEMubGlieGxfZGV2aWNlX3Zz bmQsIGVyciBlcnJvcikgewogCQlDLmxpYnhsX2RldmljZV92c25kX2Rpc3Bvc2UoJnhjKQogCQly ZXR1cm4geGMsIGVycgogCX0KKwludW1Wc25kUGNtcyA6PSBsZW4oeC5QY21zKQorCXhjLnBjbXMg PSAoKkMubGlieGxfdnNuZF9wY20pKEMubWFsbG9jKEMudWxvbmcobnVtVnNuZFBjbXMpICogQy5z aXplb2ZfbGlieGxfdnNuZF9wY20pKQorCXhjLm51bV92c25kX3BjbXMgPSBDLmludChudW1Wc25k UGNtcykKKwljUGNtcyA6PSAoKlsxIDw8IDI4XUMubGlieGxfdnNuZF9wY20pKHVuc2FmZS5Qb2lu dGVyKHhjLnBjbXMpKVs6bnVtVnNuZFBjbXM6bnVtVnNuZFBjbXNdCisJZm9yIGksIHYgOj0gcmFu Z2UgeC5QY21zIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJ CUMubGlieGxfZGV2aWNlX3ZzbmRfZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgorCQl9 CisJCWNQY21zW2ldID0gdG1wCisJfQogCXJldHVybiB4YywgbmlsCiB9CiAKQEAgLTIyOTEsNiAr MjQyNywxODYgQEAgZnVuYyAoeCAqRG9tYWluQ29uZmlnKSB0b0MoKSAoeGMgQy5saWJ4bF9kb21h aW5fY29uZmlnLCBlcnIgZXJyb3IpIHsKIAkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2Uo JnhjKQogCQlyZXR1cm4geGMsIGVycgogCX0KKwludW1EaXNrcyA6PSBsZW4oeC5EaXNrcykKKwl4 Yy5kaXNrcyA9ICgqQy5saWJ4bF9kZXZpY2VfZGlzaykoQy5tYWxsb2MoQy51bG9uZyhudW1EaXNr cykgKiBDLnNpemVvZl9saWJ4bF9kZXZpY2VfZGlzaykpCisJeGMubnVtX2Rpc2tzID0gQy5pbnQo bnVtRGlza3MpCisJY0Rpc2tzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfZGlzaykodW5z YWZlLlBvaW50ZXIoeGMuZGlza3MpKVs6bnVtRGlza3M6bnVtRGlza3NdCisJZm9yIGksIHYgOj0g cmFuZ2UgeC5EaXNrcyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7 CisJCQlDLmxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVy cgorCQl9CisJCWNEaXNrc1tpXSA9IHRtcAorCX0KKwludW1OaWNzIDo9IGxlbih4Lk5pY3MpCisJ eGMubmljcyA9ICgqQy5saWJ4bF9kZXZpY2VfbmljKShDLm1hbGxvYyhDLnVsb25nKG51bU5pY3Mp ICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX25pYykpCisJeGMubnVtX25pY3MgPSBDLmludChudW1O aWNzKQorCWNOaWNzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfbmljKSh1bnNhZmUuUG9p bnRlcih4Yy5uaWNzKSlbOm51bU5pY3M6bnVtTmljc10KKwlmb3IgaSwgdiA6PSByYW5nZSB4Lk5p Y3MgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4 bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQlj Tmljc1tpXSA9IHRtcAorCX0KKwludW1QY2lkZXZzIDo9IGxlbih4LlBjaWRldnMpCisJeGMucGNp ZGV2cyA9ICgqQy5saWJ4bF9kZXZpY2VfcGNpKShDLm1hbGxvYyhDLnVsb25nKG51bVBjaWRldnMp ICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3BjaSkpCisJeGMubnVtX3BjaWRldnMgPSBDLmludChu dW1QY2lkZXZzKQorCWNQY2lkZXZzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfcGNpKSh1 bnNhZmUuUG9pbnRlcih4Yy5wY2lkZXZzKSlbOm51bVBjaWRldnM6bnVtUGNpZGV2c10KKwlmb3Ig aSwgdiA6PSByYW5nZSB4LlBjaWRldnMgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVy ciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0 dXJuIHhjLCBlcnIKKwkJfQorCQljUGNpZGV2c1tpXSA9IHRtcAorCX0KKwludW1SZG1zIDo9IGxl bih4LlJkbXMpCisJeGMucmRtcyA9ICgqQy5saWJ4bF9kZXZpY2VfcmRtKShDLm1hbGxvYyhDLnVs b25nKG51bVJkbXMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3JkbSkpCisJeGMubnVtX3JkbXMg PSBDLmludChudW1SZG1zKQorCWNSZG1zIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfcmRt KSh1bnNhZmUuUG9pbnRlcih4Yy5yZG1zKSlbOm51bVJkbXM6bnVtUmRtc10KKwlmb3IgaSwgdiA6 PSByYW5nZSB4LlJkbXMgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwg eworCQkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBl cnIKKwkJfQorCQljUmRtc1tpXSA9IHRtcAorCX0KKwludW1EdGRldnMgOj0gbGVuKHguRHRkZXZz KQorCXhjLmR0ZGV2cyA9ICgqQy5saWJ4bF9kZXZpY2VfZHRkZXYpKEMubWFsbG9jKEMudWxvbmco bnVtRHRkZXZzKSAqIEMuc2l6ZW9mX2xpYnhsX2RldmljZV9kdGRldikpCisJeGMubnVtX2R0ZGV2 cyA9IEMuaW50KG51bUR0ZGV2cykKKwljRHRkZXZzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZp Y2VfZHRkZXYpKHVuc2FmZS5Qb2ludGVyKHhjLmR0ZGV2cykpWzpudW1EdGRldnM6bnVtRHRkZXZz XQorCWZvciBpLCB2IDo9IHJhbmdlIHguRHRkZXZzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQor CQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19kaXNwb3NlKCZ4YykK KwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY0R0ZGV2c1tpXSA9IHRtcAorCX0KKwludW1WZmJz IDo9IGxlbih4LlZmYnMpCisJeGMudmZicyA9ICgqQy5saWJ4bF9kZXZpY2VfdmZiKShDLm1hbGxv YyhDLnVsb25nKG51bVZmYnMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3ZmYikpCisJeGMubnVt X3ZmYnMgPSBDLmludChudW1WZmJzKQorCWNWZmJzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZp Y2VfdmZiKSh1bnNhZmUuUG9pbnRlcih4Yy52ZmJzKSlbOm51bVZmYnM6bnVtVmZic10KKwlmb3Ig aSwgdiA6PSByYW5nZSB4LlZmYnMgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAh PSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJu IHhjLCBlcnIKKwkJfQorCQljVmZic1tpXSA9IHRtcAorCX0KKwludW1Wa2JzIDo9IGxlbih4LlZr YnMpCisJeGMudmticyA9ICgqQy5saWJ4bF9kZXZpY2VfdmtiKShDLm1hbGxvYyhDLnVsb25nKG51 bVZrYnMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3ZrYikpCisJeGMubnVtX3ZrYnMgPSBDLmlu dChudW1Wa2JzKQorCWNWa2JzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfdmtiKSh1bnNh ZmUuUG9pbnRlcih4Yy52a2JzKSlbOm51bVZrYnM6bnVtVmtic10KKwlmb3IgaSwgdiA6PSByYW5n ZSB4LlZrYnMgeworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJ Qy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJ fQorCQljVmtic1tpXSA9IHRtcAorCX0KKwludW1WdHBtcyA6PSBsZW4oeC5WdHBtcykKKwl4Yy52 dHBtcyA9ICgqQy5saWJ4bF9kZXZpY2VfdnRwbSkoQy5tYWxsb2MoQy51bG9uZyhudW1WdHBtcykg KiBDLnNpemVvZl9saWJ4bF9kZXZpY2VfdnRwbSkpCisJeGMubnVtX3Z0cG1zID0gQy5pbnQobnVt VnRwbXMpCisJY1Z0cG1zIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfdnRwbSkodW5zYWZl LlBvaW50ZXIoeGMudnRwbXMpKVs6bnVtVnRwbXM6bnVtVnRwbXNdCisJZm9yIGksIHYgOj0gcmFu Z2UgeC5WdHBtcyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJ CQlDLmxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgor CQl9CisJCWNWdHBtc1tpXSA9IHRtcAorCX0KKwludW1QOVMgOj0gbGVuKHguUDlTKQorCXhjLnA5 cyA9ICgqQy5saWJ4bF9kZXZpY2VfcDkpKEMubWFsbG9jKEMudWxvbmcobnVtUDlTKSAqIEMuc2l6 ZW9mX2xpYnhsX2RldmljZV9wOSkpCisJeGMubnVtX3A5cyA9IEMuaW50KG51bVA5UykKKwljUDlT IDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfcDkpKHVuc2FmZS5Qb2ludGVyKHhjLnA5cykp WzpudW1QOVM6bnVtUDlTXQorCWZvciBpLCB2IDo9IHJhbmdlIHguUDlTIHsKKwkJdG1wLCBlcnIg Oj0gdi50b0MoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCUMubGlieGxfZG9tYWluX2NvbmZpZ19k aXNwb3NlKCZ4YykKKwkJCXJldHVybiB4YywgZXJyCisJCX0KKwkJY1A5U1tpXSA9IHRtcAorCX0K KwludW1QdmNhbGxzaWZzIDo9IGxlbih4LlB2Y2FsbHNpZnMpCisJeGMucHZjYWxsc2lmcyA9ICgq Qy5saWJ4bF9kZXZpY2VfcHZjYWxsc2lmKShDLm1hbGxvYyhDLnVsb25nKG51bVB2Y2FsbHNpZnMp ICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3B2Y2FsbHNpZikpCisJeGMubnVtX3B2Y2FsbHNpZnMg PSBDLmludChudW1QdmNhbGxzaWZzKQorCWNQdmNhbGxzaWZzIDo9ICgqWzEgPDwgMjhdQy5saWJ4 bF9kZXZpY2VfcHZjYWxsc2lmKSh1bnNhZmUuUG9pbnRlcih4Yy5wdmNhbGxzaWZzKSlbOm51bVB2 Y2FsbHNpZnM6bnVtUHZjYWxsc2lmc10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlB2Y2FsbHNpZnMg eworCQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9k b21haW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljUHZj YWxsc2lmc1tpXSA9IHRtcAorCX0KKwludW1WZGlzcGxzIDo9IGxlbih4LlZkaXNwbHMpCisJeGMu dmRpc3BscyA9ICgqQy5saWJ4bF9kZXZpY2VfdmRpc3BsKShDLm1hbGxvYyhDLnVsb25nKG51bVZk aXNwbHMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3ZkaXNwbCkpCisJeGMubnVtX3ZkaXNwbHMg PSBDLmludChudW1WZGlzcGxzKQorCWNWZGlzcGxzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZp Y2VfdmRpc3BsKSh1bnNhZmUuUG9pbnRlcih4Yy52ZGlzcGxzKSlbOm51bVZkaXNwbHM6bnVtVmRp c3Bsc10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlZkaXNwbHMgeworCQl0bXAsIGVyciA6PSB2LnRv QygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21haW5fY29uZmlnX2Rpc3Bvc2Uo JnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljVmRpc3Bsc1tpXSA9IHRtcAorCX0KKwlu dW1Wc25kcyA6PSBsZW4oeC5Wc25kcykKKwl4Yy52c25kcyA9ICgqQy5saWJ4bF9kZXZpY2VfdnNu ZCkoQy5tYWxsb2MoQy51bG9uZyhudW1Wc25kcykgKiBDLnNpemVvZl9saWJ4bF9kZXZpY2VfdnNu ZCkpCisJeGMubnVtX3ZzbmRzID0gQy5pbnQobnVtVnNuZHMpCisJY1ZzbmRzIDo9ICgqWzEgPDwg MjhdQy5saWJ4bF9kZXZpY2VfdnNuZCkodW5zYWZlLlBvaW50ZXIoeGMudnNuZHMpKVs6bnVtVnNu ZHM6bnVtVnNuZHNdCisJZm9yIGksIHYgOj0gcmFuZ2UgeC5Wc25kcyB7CisJCXRtcCwgZXJyIDo9 IHYudG9DKCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX2RvbWFpbl9jb25maWdfZGlz cG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVycgorCQl9CisJCWNWc25kc1tpXSA9IHRtcAorCX0K KwludW1DaGFubmVscyA6PSBsZW4oeC5DaGFubmVscykKKwl4Yy5jaGFubmVscyA9ICgqQy5saWJ4 bF9kZXZpY2VfY2hhbm5lbCkoQy5tYWxsb2MoQy51bG9uZyhudW1DaGFubmVscykgKiBDLnNpemVv Zl9saWJ4bF9kZXZpY2VfY2hhbm5lbCkpCisJeGMubnVtX2NoYW5uZWxzID0gQy5pbnQobnVtQ2hh bm5lbHMpCisJY0NoYW5uZWxzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfY2hhbm5lbCko dW5zYWZlLlBvaW50ZXIoeGMuY2hhbm5lbHMpKVs6bnVtQ2hhbm5lbHM6bnVtQ2hhbm5lbHNdCisJ Zm9yIGksIHYgOj0gcmFuZ2UgeC5DaGFubmVscyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJ aWYgZXJyICE9IG5pbCB7CisJCQlDLmxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmeGMpCisJ CQlyZXR1cm4geGMsIGVycgorCQl9CisJCWNDaGFubmVsc1tpXSA9IHRtcAorCX0KKwludW1Vc2Jj dHJscyA6PSBsZW4oeC5Vc2JjdHJscykKKwl4Yy51c2JjdHJscyA9ICgqQy5saWJ4bF9kZXZpY2Vf dXNiY3RybCkoQy5tYWxsb2MoQy51bG9uZyhudW1Vc2JjdHJscykgKiBDLnNpemVvZl9saWJ4bF9k ZXZpY2VfdXNiY3RybCkpCisJeGMubnVtX3VzYmN0cmxzID0gQy5pbnQobnVtVXNiY3RybHMpCisJ Y1VzYmN0cmxzIDo9ICgqWzEgPDwgMjhdQy5saWJ4bF9kZXZpY2VfdXNiY3RybCkodW5zYWZlLlBv aW50ZXIoeGMudXNiY3RybHMpKVs6bnVtVXNiY3RybHM6bnVtVXNiY3RybHNdCisJZm9yIGksIHYg Oj0gcmFuZ2UgeC5Vc2JjdHJscyB7CisJCXRtcCwgZXJyIDo9IHYudG9DKCkKKwkJaWYgZXJyICE9 IG5pbCB7CisJCQlDLmxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4g eGMsIGVycgorCQl9CisJCWNVc2JjdHJsc1tpXSA9IHRtcAorCX0KKwludW1Vc2JkZXZzIDo9IGxl bih4LlVzYmRldnMpCisJeGMudXNiZGV2cyA9ICgqQy5saWJ4bF9kZXZpY2VfdXNiZGV2KShDLm1h bGxvYyhDLnVsb25nKG51bVVzYmRldnMpICogQy5zaXplb2ZfbGlieGxfZGV2aWNlX3VzYmRldikp CisJeGMubnVtX3VzYmRldnMgPSBDLmludChudW1Vc2JkZXZzKQorCWNVc2JkZXZzIDo9ICgqWzEg PDwgMjhdQy5saWJ4bF9kZXZpY2VfdXNiZGV2KSh1bnNhZmUuUG9pbnRlcih4Yy51c2JkZXZzKSlb Om51bVVzYmRldnM6bnVtVXNiZGV2c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlVzYmRldnMgewor CQl0bXAsIGVyciA6PSB2LnRvQygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9kb21h aW5fY29uZmlnX2Rpc3Bvc2UoJnhjKQorCQkJcmV0dXJuIHhjLCBlcnIKKwkJfQorCQljVXNiZGV2 c1tpXSA9IHRtcAorCX0KIAl4Yy5vbl9wb3dlcm9mZiA9IEMubGlieGxfYWN0aW9uX29uX3NodXRk b3duKHguT25Qb3dlcm9mZikKIAl4Yy5vbl9yZWJvb3QgPSBDLmxpYnhsX2FjdGlvbl9vbl9zaHV0 ZG93bih4Lk9uUmVib290KQogCXhjLm9uX3dhdGNoZG9nID0gQy5saWJ4bF9hY3Rpb25fb25fc2h1 dGRvd24oeC5PbldhdGNoZG9nKQpAQCAtMjU3MCw2ICsyODg2LDE4IEBAIGZ1bmMgKHggKlZkaXNw bGluZm8pIHRvQygpICh4YyBDLmxpYnhsX3ZkaXNwbGluZm8sIGVyciBlcnJvcikgewogCXhjLmRl dmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlkKQogCXhjLnN0YXRlID0gQy5pbnQoeC5TdGF0ZSkK IAl4Yy5iZV9hbGxvYyA9IEMuYm9vbCh4LkJlQWxsb2MpCisJbnVtQ29ubmVjdG9ycyA6PSBsZW4o eC5Db25uZWN0b3JzKQorCXhjLmNvbm5lY3RvcnMgPSAoKkMubGlieGxfY29ubmVjdG9yaW5mbyko Qy5tYWxsb2MoQy51bG9uZyhudW1Db25uZWN0b3JzKSAqIEMuc2l6ZW9mX2xpYnhsX2Nvbm5lY3Rv cmluZm8pKQorCXhjLm51bV9jb25uZWN0b3JzID0gQy5pbnQobnVtQ29ubmVjdG9ycykKKwljQ29u bmVjdG9ycyA6PSAoKlsxIDw8IDI4XUMubGlieGxfY29ubmVjdG9yaW5mbykodW5zYWZlLlBvaW50 ZXIoeGMuY29ubmVjdG9ycykpWzpudW1Db25uZWN0b3JzOm51bUNvbm5lY3RvcnNdCisJZm9yIGks IHYgOj0gcmFuZ2UgeC5Db25uZWN0b3JzIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBl cnIgIT0gbmlsIHsKKwkJCUMubGlieGxfdmRpc3BsaW5mb19kaXNwb3NlKCZ4YykKKwkJCXJldHVy biB4YywgZXJyCisJCX0KKwkJY0Nvbm5lY3RvcnNbaV0gPSB0bXAKKwl9CiAJcmV0dXJuIHhjLCBu aWwKIH0KIApAQCAtMjYwMiw2ICsyOTMwLDE4IEBAIGZ1bmMgKHggKlBjbWluZm8pIGZyb21DKHhj ICpDLmxpYnhsX3BjbWluZm8pIGVycm9yIHsKIAogZnVuYyAoeCAqUGNtaW5mbykgdG9DKCkgKHhj IEMubGlieGxfcGNtaW5mbywgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF9wY21pbmZvX2luaXQoJnhj KQorCW51bVZzbmRTdHJlYW1zIDo9IGxlbih4LlN0cmVhbXMpCisJeGMuc3RyZWFtcyA9ICgqQy5s aWJ4bF9zdHJlYW1pbmZvKShDLm1hbGxvYyhDLnVsb25nKG51bVZzbmRTdHJlYW1zKSAqIEMuc2l6 ZW9mX2xpYnhsX3N0cmVhbWluZm8pKQorCXhjLm51bV92c25kX3N0cmVhbXMgPSBDLmludChudW1W c25kU3RyZWFtcykKKwljU3RyZWFtcyA6PSAoKlsxIDw8IDI4XUMubGlieGxfc3RyZWFtaW5mbyko dW5zYWZlLlBvaW50ZXIoeGMuc3RyZWFtcykpWzpudW1Wc25kU3RyZWFtczpudW1Wc25kU3RyZWFt c10KKwlmb3IgaSwgdiA6PSByYW5nZSB4LlN0cmVhbXMgeworCQl0bXAsIGVyciA6PSB2LnRvQygp CisJCWlmIGVyciAhPSBuaWwgeworCQkJQy5saWJ4bF9wY21pbmZvX2Rpc3Bvc2UoJnhjKQorCQkJ cmV0dXJuIHhjLCBlcnIKKwkJfQorCQljU3RyZWFtc1tpXSA9IHRtcAorCX0KIAlyZXR1cm4geGMs IG5pbAogfQogCkBAIC0yNjMzLDYgKzI5NzMsMTggQEAgZnVuYyAoeCAqVnNuZGluZm8pIHRvQygp ICh4YyBDLmxpYnhsX3ZzbmRpbmZvLCBlcnIgZXJyb3IpIHsKIAl4Yy5mcm9udGVuZF9pZCA9IEMu dWludDMyX3QoeC5Gcm9udGVuZElkKQogCXhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlk KQogCXhjLnN0YXRlID0gQy5pbnQoeC5TdGF0ZSkKKwludW1Wc25kUGNtcyA6PSBsZW4oeC5QY21z KQorCXhjLnBjbXMgPSAoKkMubGlieGxfcGNtaW5mbykoQy5tYWxsb2MoQy51bG9uZyhudW1Wc25k UGNtcykgKiBDLnNpemVvZl9saWJ4bF9wY21pbmZvKSkKKwl4Yy5udW1fdnNuZF9wY21zID0gQy5p bnQobnVtVnNuZFBjbXMpCisJY1BjbXMgOj0gKCpbMSA8PCAyOF1DLmxpYnhsX3BjbWluZm8pKHVu c2FmZS5Qb2ludGVyKHhjLnBjbXMpKVs6bnVtVnNuZFBjbXM6bnVtVnNuZFBjbXNdCisJZm9yIGks IHYgOj0gcmFuZ2UgeC5QY21zIHsKKwkJdG1wLCBlcnIgOj0gdi50b0MoKQorCQlpZiBlcnIgIT0g bmlsIHsKKwkJCUMubGlieGxfdnNuZGluZm9fZGlzcG9zZSgmeGMpCisJCQlyZXR1cm4geGMsIGVy cgorCQl9CisJCWNQY21zW2ldID0gdG1wCisJfQogCXJldHVybiB4YywgbmlsCiB9CiAKQEAgLTI2 NzcsNiArMzAyOSwxMyBAQCBmdW5jICh4ICpOdW1haW5mbykgdG9DKCkgKHhjIEMubGlieGxfbnVt YWluZm8sIGVyciBlcnJvcikgewogCUMubGlieGxfbnVtYWluZm9faW5pdCgmeGMpCiAJeGMuc2l6 ZSA9IEMudWludDY0X3QoeC5TaXplKQogCXhjLmZyZWUgPSBDLnVpbnQ2NF90KHguRnJlZSkKKwlu dW1EaXN0cyA6PSBsZW4oeC5EaXN0cykKKwl4Yy5kaXN0cyA9ICgqQy51aW50MzJfdCkoQy5tYWxs b2MoQy5zaXplX3QobnVtRGlzdHMgKiBudW1EaXN0cykpKQorCXhjLm51bV9kaXN0cyA9IEMuaW50 KG51bURpc3RzKQorCWNEaXN0cyA6PSAoKlsxIDw8IDI4XUMudWludDMyX3QpKHVuc2FmZS5Qb2lu dGVyKHhjLmRpc3RzKSlbOm51bURpc3RzOm51bURpc3RzXQorCWZvciBpLCB2IDo9IHJhbmdlIHgu RGlzdHMgeworCQljRGlzdHNbaV0gPSBDLnVpbnQzMl90KHYpCisJfQogCXJldHVybiB4Yywgbmls CiB9CiAKLS0gCjIuMTkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2pl Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4t ZGV2ZWw=