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.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, 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 5DFEDC2D0C6 for ; Fri, 27 Dec 2019 16:33:16 +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 18840208C4 for ; Fri, 27 Dec 2019 16:33:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="aLfkVoaR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 18840208C4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.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 1iksXf-0001YQ-6W; Fri, 27 Dec 2019 16:32:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iksXd-0001Y4-VX for xen-devel@lists.xenproject.org; Fri, 27 Dec 2019 16:32:46 +0000 X-Inumbo-ID: 7ca81856-28c6-11ea-88e7-bc764e2007e4 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 7ca81856-28c6-11ea-88e7-bc764e2007e4; Fri, 27 Dec 2019 16:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1577464355; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uCBUUibjuz9XVdANOENiWfugub92k+gMayLXcES0svA=; b=aLfkVoaRDO8sK0qy+R68v1F6bosmw84gP8gWeExMvzUv5e50oGs3emqc 82ZsGZiGbCG/z3bH6itALbWvtpSAzAu/+ubF2ktPfn9yVaM0kqBUEZr3s 9It7JfssJ922E0jg7XLEZu+bzYsNZ11wiARKscTGoBO7ky8/pvWbCp3mw Q=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=george.dunlap@citrix.com; spf=Pass smtp.mailfrom=George.Dunlap@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of george.dunlap@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="George.Dunlap@citrix.com"; x-sender="george.dunlap@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.hc3370-68.iphmx.com: domain of George.Dunlap@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="George.Dunlap@citrix.com"; x-sender="George.Dunlap@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="George.Dunlap@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: WJIa6xTzrxBvysrHbE1CRFta9VLsEM598CnABBhDJifr9lJg4gTTRfwfCghyY+pAfKUdWO8LRA B0vot+9ARUkZVNE+5V78LrCjyOtOHsmy6QLzX5r3G0OSzfz8zcNyZVVy+pHAq9YWFMe1q8YjGa RMSdjS4jkv7M5s2al0p56nEAxhwIBRkbt8EirFcxKJ2+Y0s2pIhGYp9DT+C6MGtEwq1Q86sKqr 4dwrt91anpo67YJweWLBsf4f9xB6AGiiH3fuylev+9Vtv+sWTcB1NSANDPIYBbk+RuTZDDzq5H qjo= X-SBRS: 2.7 X-MesageID: 10626144 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.69,363,1571716800"; d="scan'208";a="10626144" From: George Dunlap To: Date: Fri, 27 Dec 2019 16:32:18 +0000 Message-ID: <20191227163224.4113837-3-george.dunlap@citrix.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191227163224.4113837-1-george.dunlap@citrix.com> References: <20191227163224.4113837-1-george.dunlap@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 3/9] golang/xenlight: Convert "" to NULL 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 , George Dunlap Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Qy5Hb1N0cmluZyB3aWxsIGhhbmRsZSBOVUxMIEMgc3RyaW5ncyBwcm9wZXJseSwgYnkgcGFzc2lu ZyBiYWNrICIiLgpCdXQgQy5DU3RyaW5nIHdpbGwgdGFrZSBhbiBlbXB0eSBHbyBzdHJpbmcgYW5k IGFjdHVhbGx5IGdlbmVyYXRlIGEKJ1wwJy10ZXJtaW5hdGVkIGVtcHR5IHN0cmluZy4gIFRoaXMg Y29uZnVzZXMgbGlieGwsIHdoaWNoIGlzIGV4cGVjdGluZwpub24tdmFsdWVzIHRvIGJlIE5VTEws IG5vdCAiIi4KCk9ubHkgY2FsbCBDLkNTdHJpbmcgaWYgdGhlIEdvIHN0cmluZyBpcyBub24tZW1w dHkuCgpTaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5j b20+Ci0tLQpDQzogTmljayBSb3Nicm9vayA8cm9zYnJvb2tuQGFpbmZvc2VjLmNvbT4KLS0tCiB0 b29scy9nb2xhbmcveGVubGlnaHQvZ2VuZ290eXBlcy5weSAgfCAgIDYgKy0KIHRvb2xzL2dvbGFu Zy94ZW5saWdodC9oZWxwZXJzLmdlbi5nbyB8IDYyOCArKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgNDc1IGluc2VydGlvbnMoKyksIDE1OSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvZ2VuZ290eXBlcy5weSBiL3Rvb2xz L2dvbGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5CmluZGV4IDUzNjNjYTA2MmQuLmU0ZWQ0ZDUw ZjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5CisrKyBi L3Rvb2xzL2dvbGFuZy94ZW5saWdodC9nZW5nb3R5cGVzLnB5CkBAIC00ODcsNyArNDg3LDggQEAg ZGVmIHhlbmxpZ2h0X2dvbGFuZ19kZWZpbmVfdG9fQyh0eSA9IE5vbmUsIHR5cGVuYW1lID0gTm9u ZSwgbmVzdGVkID0gRmFsc2UpOgogICAgICAgICAgICAgaWYgaXNfY2FzdGFibGU6CiAgICAgICAg ICAgICAgICAgIyBVc2UgdGhlIGNnbyBoZWxwZXIgZm9yIGNvbnZlcnRpbmcgQyBzdHJpbmdzLgog ICAgICAgICAgICAgICAgIGlmIGdvdHlwZW5hbWUgPT0gJ3N0cmluZyc6Ci0gICAgICAgICAgICAg ICAgICAgIHMgKz0gJ3hjLnt9ID0gQy5DU3RyaW5nKHgue30pXG4nLmZvcm1hdChjbmFtZSxnb25h bWUpCisgICAgICAgICAgICAgICAgICAgIHMgKz0gJ2lmIHgue30gIT0gIiIge3tcbicuZm9ybWF0 KGdvbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcyArPSAneGMue30gPSBDLkNTdHJpbmcoeC57 fSlcbn19XG4nLmZvcm1hdChjbmFtZSxnb25hbWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlCiAKICAgICAgICAgICAgICAgICBzICs9ICd4Yy57fSA9IEMue30oeC57fSlcbicuZm9ybWF0 KGNuYW1lLGN0eXBlbmFtZSxnb25hbWUpCkBAIC01NjksNyArNTcwLDggQEAgZGVmIHhlbmxpZ2h0 X2dvbGFuZ191bmlvbl90b19DKHR5ID0gTm9uZSwgdW5pb25fbmFtZSA9ICcnLAogICAgICAgICAg ICAgICAgIHMgKz0gJ3JldHVybiB4YyxlcnIgXG59XG4nCiAKICAgICAgICAgICAgIGVsaWYgZ290 eXBlbmFtZSA9PSAnc3RyaW5nJzoKLSAgICAgICAgICAgICAgICBzICs9ICd7fS57fSA9IEMuQ1N0 cmluZyh0bXAue30pXG4nLmZvcm1hdChmLm5hbWUsdWYubmFtZSxnb2ZuYW1lKQorICAgICAgICAg ICAgICAgIHMgKz0gJ2lmIHRtcC57fSAhPSAiIiB7e1xuJy5mb3JtYXQoZ29mbmFtZSkKKyAgICAg ICAgICAgICAgICBzICs9ICd7fS57fSA9IEMuQ1N0cmluZyh0bXAue30pXG59fVxuJy5mb3JtYXQo Zi5uYW1lLHVmLm5hbWUsZ29mbmFtZSkKIAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg ICAgICBzICs9ICd7fS57fSA9IEMue30odG1wLnt9KVxuJy5mb3JtYXQoZi5uYW1lLHVmLm5hbWUs Y3R5cGVuYW1lLGdvZm5hbWUpCmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvaGVs cGVycy5nZW4uZ28gYi90b29scy9nb2xhbmcveGVubGlnaHQvaGVscGVycy5nZW4uZ28KaW5kZXgg NjFjZDczNTk1ZS4uMjIzNjIyMmNjMiAxMDA2NDQKLS0tIGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0 L2hlbHBlcnMuZ2VuLmdvCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC9oZWxwZXJzLmdlbi5n bwpAQCAtOTMsOCArOTMsMTIgQEAgZnVuYyAoeCAqVm5jSW5mbykgdG9DKCkgKHhjIEMubGlieGxf dm5jX2luZm8sIGVyciBlcnJvcikgewogCQlDLmxpYnhsX3ZuY19pbmZvX2Rpc3Bvc2UoJnhjKQog CQlyZXR1cm4geGMsIGVycgogCX0KLQl4Yy5saXN0ZW4gPSBDLkNTdHJpbmcoeC5MaXN0ZW4pCi0J eGMucGFzc3dkID0gQy5DU3RyaW5nKHguUGFzc3dkKQorCWlmIHguTGlzdGVuICE9ICIiIHsKKwkJ eGMubGlzdGVuID0gQy5DU3RyaW5nKHguTGlzdGVuKQorCX0KKwlpZiB4LlBhc3N3ZCAhPSAiIiB7 CisJCXhjLnBhc3N3ZCA9IEMuQ1N0cmluZyh4LlBhc3N3ZCkKKwl9CiAJeGMuZGlzcGxheSA9IEMu aW50KHguRGlzcGxheSkKIAl4Yy5maW5kdW51c2VkLCBlcnIgPSB4LkZpbmR1bnVzZWQudG9DKCkK IAlpZiBlcnIgIT0gbmlsIHsKQEAgLTE0MCwxMyArMTQ0LDE3IEBAIGZ1bmMgKHggKlNwaWNlSW5m bykgdG9DKCkgKHhjIEMubGlieGxfc3BpY2VfaW5mbywgZXJyIGVycm9yKSB7CiAJfQogCXhjLnBv cnQgPSBDLmludCh4LlBvcnQpCiAJeGMudGxzX3BvcnQgPSBDLmludCh4LlRsc1BvcnQpCi0JeGMu aG9zdCA9IEMuQ1N0cmluZyh4Lkhvc3QpCisJaWYgeC5Ib3N0ICE9ICIiIHsKKwkJeGMuaG9zdCA9 IEMuQ1N0cmluZyh4Lkhvc3QpCisJfQogCXhjLmRpc2FibGVfdGlja2V0aW5nLCBlcnIgPSB4LkRp c2FibGVUaWNrZXRpbmcudG9DKCkKIAlpZiBlcnIgIT0gbmlsIHsKIAkJQy5saWJ4bF9zcGljZV9p bmZvX2Rpc3Bvc2UoJnhjKQogCQlyZXR1cm4geGMsIGVycgogCX0KLQl4Yy5wYXNzd2QgPSBDLkNT dHJpbmcoeC5QYXNzd2QpCisJaWYgeC5QYXNzd2QgIT0gIiIgeworCQl4Yy5wYXNzd2QgPSBDLkNT dHJpbmcoeC5QYXNzd2QpCisJfQogCXhjLmFnZW50X21vdXNlLCBlcnIgPSB4LkFnZW50TW91c2Uu dG9DKCkKIAlpZiBlcnIgIT0gbmlsIHsKIAkJQy5saWJ4bF9zcGljZV9pbmZvX2Rpc3Bvc2UoJnhj KQpAQCAtMTYzLDggKzE3MSwxMiBAQCBmdW5jICh4ICpTcGljZUluZm8pIHRvQygpICh4YyBDLmxp YnhsX3NwaWNlX2luZm8sIGVyciBlcnJvcikgewogCQlyZXR1cm4geGMsIGVycgogCX0KIAl4Yy51 c2JyZWRpcmVjdGlvbiA9IEMuaW50KHguVXNicmVkaXJlY3Rpb24pCi0JeGMuaW1hZ2VfY29tcHJl c3Npb24gPSBDLkNTdHJpbmcoeC5JbWFnZUNvbXByZXNzaW9uKQotCXhjLnN0cmVhbWluZ192aWRl byA9IEMuQ1N0cmluZyh4LlN0cmVhbWluZ1ZpZGVvKQorCWlmIHguSW1hZ2VDb21wcmVzc2lvbiAh PSAiIiB7CisJCXhjLmltYWdlX2NvbXByZXNzaW9uID0gQy5DU3RyaW5nKHguSW1hZ2VDb21wcmVz c2lvbikKKwl9CisJaWYgeC5TdHJlYW1pbmdWaWRlbyAhPSAiIiB7CisJCXhjLnN0cmVhbWluZ192 aWRlbyA9IEMuQ1N0cmluZyh4LlN0cmVhbWluZ1ZpZGVvKQorCX0KIAlyZXR1cm4geGMsIG5pbAog fQogCkBAIC0xOTMsOCArMjA1LDEyIEBAIGZ1bmMgKHggKlNkbEluZm8pIHRvQygpICh4YyBDLmxp YnhsX3NkbF9pbmZvLCBlcnIgZXJyb3IpIHsKIAkJQy5saWJ4bF9zZGxfaW5mb19kaXNwb3NlKCZ4 YykKIAkJcmV0dXJuIHhjLCBlcnIKIAl9Ci0JeGMuZGlzcGxheSA9IEMuQ1N0cmluZyh4LkRpc3Bs YXkpCi0JeGMueGF1dGhvcml0eSA9IEMuQ1N0cmluZyh4LlhhdXRob3JpdHkpCisJaWYgeC5EaXNw bGF5ICE9ICIiIHsKKwkJeGMuZGlzcGxheSA9IEMuQ1N0cmluZyh4LkRpc3BsYXkpCisJfQorCWlm IHguWGF1dGhvcml0eSAhPSAiIiB7CisJCXhjLnhhdXRob3JpdHkgPSBDLkNTdHJpbmcoeC5YYXV0 aG9yaXR5KQorCX0KIAlyZXR1cm4geGMsIG5pbAogfQogCkBAIC0yMzUsNyArMjUxLDkgQEAgZnVu YyAoeCAqRG9taW5mbykgdG9DKCkgKHhjIEMubGlieGxfZG9taW5mbywgZXJyIGVycm9yKSB7CiAJ fQogCXhjLmRvbWlkID0gQy5saWJ4bF9kb21pZCh4LkRvbWlkKQogCXhjLnNzaWRyZWYgPSBDLnVp bnQzMl90KHguU3NpZHJlZikKLQl4Yy5zc2lkX2xhYmVsID0gQy5DU3RyaW5nKHguU3NpZExhYmVs KQorCWlmIHguU3NpZExhYmVsICE9ICIiIHsKKwkJeGMuc3NpZF9sYWJlbCA9IEMuQ1N0cmluZyh4 LlNzaWRMYWJlbCkKKwl9CiAJeGMucnVubmluZyA9IEMuYm9vbCh4LlJ1bm5pbmcpCiAJeGMuYmxv Y2tlZCA9IEMuYm9vbCh4LkJsb2NrZWQpCiAJeGMucGF1c2VkID0gQy5ib29sKHguUGF1c2VkKQpA QCAtMjcxLDcgKzI4OSw5IEBAIGZ1bmMgKHggKkNwdXBvb2xpbmZvKSBmcm9tQyh4YyAqQy5saWJ4 bF9jcHVwb29saW5mbykgZXJyb3IgewogZnVuYyAoeCAqQ3B1cG9vbGluZm8pIHRvQygpICh4YyBD LmxpYnhsX2NwdXBvb2xpbmZvLCBlcnIgZXJyb3IpIHsKIAlDLmxpYnhsX2NwdXBvb2xpbmZvX2lu aXQoJnhjKQogCXhjLnBvb2xpZCA9IEMudWludDMyX3QoeC5Qb29saWQpCi0JeGMucG9vbF9uYW1l ID0gQy5DU3RyaW5nKHguUG9vbE5hbWUpCisJaWYgeC5Qb29sTmFtZSAhPSAiIiB7CisJCXhjLnBv b2xfbmFtZSA9IEMuQ1N0cmluZyh4LlBvb2xOYW1lKQorCX0KIAl4Yy5zY2hlZCA9IEMubGlieGxf c2NoZWR1bGVyKHguU2NoZWQpCiAJeGMubl9kb20gPSBDLnVpbnQzMl90KHguTkRvbSkKIAl4Yy5j cHVtYXAsIGVyciA9IHguQ3B1bWFwLnRvQygpCkBAIC0zMTgsOSArMzM4LDEzIEBAIGZ1bmMgKHgg KkNoYW5uZWxpbmZvQ29ubmVjdGlvblVuaW9uUHR5KSBmcm9tQyh4YyAqQy5saWJ4bF9jaGFubmVs aW5mbykgZXJyb3IgewogCiBmdW5jICh4ICpDaGFubmVsaW5mbykgdG9DKCkgKHhjIEMubGlieGxf Y2hhbm5lbGluZm8sIGVyciBlcnJvcikgewogCUMubGlieGxfY2hhbm5lbGluZm9faW5pdCgmeGMp Ci0JeGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tlbmQpCisJaWYgeC5CYWNrZW5kICE9ICIi IHsKKwkJeGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tlbmQpCisJfQogCXhjLmJhY2tlbmRf aWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElkKQotCXhjLmZyb250ZW5kID0gQy5DU3RyaW5nKHgu RnJvbnRlbmQpCisJaWYgeC5Gcm9udGVuZCAhPSAiIiB7CisJCXhjLmZyb250ZW5kID0gQy5DU3Ry aW5nKHguRnJvbnRlbmQpCisJfQogCXhjLmZyb250ZW5kX2lkID0gQy51aW50MzJfdCh4LkZyb250 ZW5kSWQpCiAJeGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpCiAJeGMuc3RhdGUgPSBD LmludCh4LlN0YXRlKQpAQCAtMzM1LDcgKzM1OSw5IEBAIGZ1bmMgKHggKkNoYW5uZWxpbmZvKSB0 b0MoKSAoeGMgQy5saWJ4bF9jaGFubmVsaW5mbywgZXJyIGVycm9yKSB7CiAJCQlyZXR1cm4geGMs IGVycm9ycy5OZXcoIndyb25nIHR5cGUgZm9yIHVuaW9uIGtleSBjb25uZWN0aW9uIikKIAkJfQog CQl2YXIgcHR5IEMubGlieGxfY2hhbm5lbGluZm9fY29ubmVjdGlvbl91bmlvbl9wdHkKLQkJcHR5 LnBhdGggPSBDLkNTdHJpbmcodG1wLlBhdGgpCisJCWlmIHRtcC5QYXRoICE9ICIiIHsKKwkJCXB0 eS5wYXRoID0gQy5DU3RyaW5nKHRtcC5QYXRoKQorCQl9CiAJCXB0eUJ5dGVzIDo9IEMuR29CeXRl cyh1bnNhZmUuUG9pbnRlcigmcHR5KSwgQy5zaXplb2ZfbGlieGxfY2hhbm5lbGluZm9fY29ubmVj dGlvbl91bmlvbl9wdHkpCiAJCWNvcHkoeGMudVs6XSwgcHR5Qnl0ZXMpCiAJZGVmYXVsdDoKQEAg LTM4NiwxNyArNDEyLDM1IEBAIGZ1bmMgKHggKlZlcnNpb25JbmZvKSB0b0MoKSAoeGMgQy5saWJ4 bF92ZXJzaW9uX2luZm8sIGVyciBlcnJvcikgewogCUMubGlieGxfdmVyc2lvbl9pbmZvX2luaXQo JnhjKQogCXhjLnhlbl92ZXJzaW9uX21ham9yID0gQy5pbnQoeC5YZW5WZXJzaW9uTWFqb3IpCiAJ eGMueGVuX3ZlcnNpb25fbWlub3IgPSBDLmludCh4LlhlblZlcnNpb25NaW5vcikKLQl4Yy54ZW5f dmVyc2lvbl9leHRyYSA9IEMuQ1N0cmluZyh4LlhlblZlcnNpb25FeHRyYSkKLQl4Yy5jb21waWxl ciA9IEMuQ1N0cmluZyh4LkNvbXBpbGVyKQotCXhjLmNvbXBpbGVfYnkgPSBDLkNTdHJpbmcoeC5D b21waWxlQnkpCi0JeGMuY29tcGlsZV9kb21haW4gPSBDLkNTdHJpbmcoeC5Db21waWxlRG9tYWlu KQotCXhjLmNvbXBpbGVfZGF0ZSA9IEMuQ1N0cmluZyh4LkNvbXBpbGVEYXRlKQotCXhjLmNhcGFi aWxpdGllcyA9IEMuQ1N0cmluZyh4LkNhcGFiaWxpdGllcykKLQl4Yy5jaGFuZ2VzZXQgPSBDLkNT dHJpbmcoeC5DaGFuZ2VzZXQpCisJaWYgeC5YZW5WZXJzaW9uRXh0cmEgIT0gIiIgeworCQl4Yy54 ZW5fdmVyc2lvbl9leHRyYSA9IEMuQ1N0cmluZyh4LlhlblZlcnNpb25FeHRyYSkKKwl9CisJaWYg eC5Db21waWxlciAhPSAiIiB7CisJCXhjLmNvbXBpbGVyID0gQy5DU3RyaW5nKHguQ29tcGlsZXIp CisJfQorCWlmIHguQ29tcGlsZUJ5ICE9ICIiIHsKKwkJeGMuY29tcGlsZV9ieSA9IEMuQ1N0cmlu Zyh4LkNvbXBpbGVCeSkKKwl9CisJaWYgeC5Db21waWxlRG9tYWluICE9ICIiIHsKKwkJeGMuY29t cGlsZV9kb21haW4gPSBDLkNTdHJpbmcoeC5Db21waWxlRG9tYWluKQorCX0KKwlpZiB4LkNvbXBp bGVEYXRlICE9ICIiIHsKKwkJeGMuY29tcGlsZV9kYXRlID0gQy5DU3RyaW5nKHguQ29tcGlsZURh dGUpCisJfQorCWlmIHguQ2FwYWJpbGl0aWVzICE9ICIiIHsKKwkJeGMuY2FwYWJpbGl0aWVzID0g Qy5DU3RyaW5nKHguQ2FwYWJpbGl0aWVzKQorCX0KKwlpZiB4LkNoYW5nZXNldCAhPSAiIiB7CisJ CXhjLmNoYW5nZXNldCA9IEMuQ1N0cmluZyh4LkNoYW5nZXNldCkKKwl9CiAJeGMudmlydF9zdGFy dCA9IEMudWludDY0X3QoeC5WaXJ0U3RhcnQpCiAJeGMucGFnZXNpemUgPSBDLmludCh4LlBhZ2Vz aXplKQotCXhjLmNvbW1hbmRsaW5lID0gQy5DU3RyaW5nKHguQ29tbWFuZGxpbmUpCi0JeGMuYnVp bGRfaWQgPSBDLkNTdHJpbmcoeC5CdWlsZElkKQorCWlmIHguQ29tbWFuZGxpbmUgIT0gIiIgewor CQl4Yy5jb21tYW5kbGluZSA9IEMuQ1N0cmluZyh4LkNvbW1hbmRsaW5lKQorCX0KKwlpZiB4LkJ1 aWxkSWQgIT0gIiIgeworCQl4Yy5idWlsZF9pZCA9IEMuQ1N0cmluZyh4LkJ1aWxkSWQpCisJfQog CXJldHVybiB4YywgbmlsCiB9CiAKQEAgLTQ0Nyw4ICs0OTEsMTIgQEAgZnVuYyAoeCAqRG9tYWlu Q3JlYXRlSW5mbykgdG9DKCkgKHhjIEMubGlieGxfZG9tYWluX2NyZWF0ZV9pbmZvLCBlcnIgZXJy b3IpIHsKIAkJcmV0dXJuIHhjLCBlcnIKIAl9CiAJeGMuc3NpZHJlZiA9IEMudWludDMyX3QoeC5T c2lkcmVmKQotCXhjLnNzaWRfbGFiZWwgPSBDLkNTdHJpbmcoeC5Tc2lkTGFiZWwpCi0JeGMubmFt ZSA9IEMuQ1N0cmluZyh4Lk5hbWUpCisJaWYgeC5Tc2lkTGFiZWwgIT0gIiIgeworCQl4Yy5zc2lk X2xhYmVsID0gQy5DU3RyaW5nKHguU3NpZExhYmVsKQorCX0KKwlpZiB4Lk5hbWUgIT0gIiIgewor CQl4Yy5uYW1lID0gQy5DU3RyaW5nKHguTmFtZSkKKwl9CiAJeGMudXVpZCwgZXJyID0geC5VdWlk LnRvQygpCiAJaWYgZXJyICE9IG5pbCB7CiAJCUMubGlieGxfZG9tYWluX2NyZWF0ZV9pbmZvX2Rp c3Bvc2UoJnhjKQpAQCAtNDY1LDcgKzUxMyw5IEBAIGZ1bmMgKHggKkRvbWFpbkNyZWF0ZUluZm8p IHRvQygpICh4YyBDLmxpYnhsX2RvbWFpbl9jcmVhdGVfaW5mbywgZXJyIGVycm9yKSB7CiAJCXJl dHVybiB4YywgZXJyCiAJfQogCXhjLnBvb2xpZCA9IEMudWludDMyX3QoeC5Qb29saWQpCi0JeGMu cG9vbF9uYW1lID0gQy5DU3RyaW5nKHguUG9vbE5hbWUpCisJaWYgeC5Qb29sTmFtZSAhPSAiIiB7 CisJCXhjLnBvb2xfbmFtZSA9IEMuQ1N0cmluZyh4LlBvb2xOYW1lKQorCX0KIAl4Yy5ydW5faG90 cGx1Z19zY3JpcHRzLCBlcnIgPSB4LlJ1bkhvdHBsdWdTY3JpcHRzLnRvQygpCiAJaWYgZXJyICE9 IG5pbCB7CiAJCUMubGlieGxfZG9tYWluX2NyZWF0ZV9pbmZvX2Rpc3Bvc2UoJnhjKQpAQCAtNDk1 LDcgKzU0NSw5IEBAIGZ1bmMgKHggKkRvbWFpblJlc3RvcmVQYXJhbXMpIHRvQygpICh4YyBDLmxp YnhsX2RvbWFpbl9yZXN0b3JlX3BhcmFtcywgZXJyIGVycm9yCiAJQy5saWJ4bF9kb21haW5fcmVz dG9yZV9wYXJhbXNfaW5pdCgmeGMpCiAJeGMuY2hlY2twb2ludGVkX3N0cmVhbSA9IEMuaW50KHgu Q2hlY2twb2ludGVkU3RyZWFtKQogCXhjLnN0cmVhbV92ZXJzaW9uID0gQy51aW50MzJfdCh4LlN0 cmVhbVZlcnNpb24pCi0JeGMuY29sb19wcm94eV9zY3JpcHQgPSBDLkNTdHJpbmcoeC5Db2xvUHJv eHlTY3JpcHQpCisJaWYgeC5Db2xvUHJveHlTY3JpcHQgIT0gIiIgeworCQl4Yy5jb2xvX3Byb3h5 X3NjcmlwdCA9IEMuQ1N0cmluZyh4LkNvbG9Qcm94eVNjcmlwdCkKKwl9CiAJeGMudXNlcnNwYWNl X2NvbG9fcHJveHksIGVyciA9IHguVXNlcnNwYWNlQ29sb1Byb3h5LnRvQygpCiAJaWYgZXJyICE9 IG5pbCB7CiAJCUMubGlieGxfZG9tYWluX3Jlc3RvcmVfcGFyYW1zX2Rpc3Bvc2UoJnhjKQpAQCAt MTAxMCw3ICsxMDYyLDkgQEAgZnVuYyAoeCAqRG9tYWluQnVpbGRJbmZvKSB0b0MoKSAoeGMgQy5s aWJ4bF9kb21haW5fYnVpbGRfaW5mbywgZXJyIGVycm9yKSB7CiAJeGMuaW9tbXVfbWVta2IgPSBD LnVpbnQ2NF90KHguSW9tbXVNZW1rYikKIAl4Yy5ydGNfdGltZW9mZnNldCA9IEMudWludDMyX3Qo eC5SdGNUaW1lb2Zmc2V0KQogCXhjLmV4ZWNfc3NpZHJlZiA9IEMudWludDMyX3QoeC5FeGVjU3Np ZHJlZikKLQl4Yy5leGVjX3NzaWRfbGFiZWwgPSBDLkNTdHJpbmcoeC5FeGVjU3NpZExhYmVsKQor CWlmIHguRXhlY1NzaWRMYWJlbCAhPSAiIiB7CisJCXhjLmV4ZWNfc3NpZF9sYWJlbCA9IEMuQ1N0 cmluZyh4LkV4ZWNTc2lkTGFiZWwpCisJfQogCXhjLmxvY2FsdGltZSwgZXJyID0geC5Mb2NhbHRp bWUudG9DKCkKIAlpZiBlcnIgIT0gbmlsIHsKIAkJQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mb19k aXNwb3NlKCZ4YykKQEAgLTEwMjYsNyArMTA4MCw5IEBAIGZ1bmMgKHggKkRvbWFpbkJ1aWxkSW5m bykgdG9DKCkgKHhjIEMubGlieGxfZG9tYWluX2J1aWxkX2luZm8sIGVyciBlcnJvcikgewogCQlD LmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQogCQlyZXR1cm4geGMsIGVycgog CX0KLQl4Yy5ibGtkZXZfc3RhcnQgPSBDLkNTdHJpbmcoeC5CbGtkZXZTdGFydCkKKwlpZiB4LkJs a2RldlN0YXJ0ICE9ICIiIHsKKwkJeGMuYmxrZGV2X3N0YXJ0ID0gQy5DU3RyaW5nKHguQmxrZGV2 U3RhcnQpCisJfQogCWlmIG51bVZudW1hTm9kZXMgOj0gbGVuKHguVm51bWFOb2Rlcyk7IG51bVZu dW1hTm9kZXMgPiAwIHsKIAkJeGMudm51bWFfbm9kZXMgPSAoKkMubGlieGxfdm5vZGVfaW5mbyko Qy5tYWxsb2MoQy51bG9uZyhudW1WbnVtYU5vZGVzKSAqIEMuc2l6ZW9mX2xpYnhsX3Zub2RlX2lu Zm8pKQogCQl4Yy5udW1fdm51bWFfbm9kZXMgPSBDLmludChudW1WbnVtYU5vZGVzKQpAQCAtMTA0 OCwxMCArMTEwNCwxNiBAQCBmdW5jICh4ICpEb21haW5CdWlsZEluZm8pIHRvQygpICh4YyBDLmxp YnhsX2RvbWFpbl9idWlsZF9pbmZvLCBlcnIgZXJyb3IpIHsKIAkJQy5saWJ4bF9kb21haW5fYnVp bGRfaW5mb19kaXNwb3NlKCZ4YykKIAkJcmV0dXJuIHhjLCBlcnIKIAl9Ci0JeGMuZGV2aWNlX21v ZGVsID0gQy5DU3RyaW5nKHguRGV2aWNlTW9kZWwpCisJaWYgeC5EZXZpY2VNb2RlbCAhPSAiIiB7 CisJCXhjLmRldmljZV9tb2RlbCA9IEMuQ1N0cmluZyh4LkRldmljZU1vZGVsKQorCX0KIAl4Yy5k ZXZpY2VfbW9kZWxfc3NpZHJlZiA9IEMudWludDMyX3QoeC5EZXZpY2VNb2RlbFNzaWRyZWYpCi0J eGMuZGV2aWNlX21vZGVsX3NzaWRfbGFiZWwgPSBDLkNTdHJpbmcoeC5EZXZpY2VNb2RlbFNzaWRM YWJlbCkKLQl4Yy5kZXZpY2VfbW9kZWxfdXNlciA9IEMuQ1N0cmluZyh4LkRldmljZU1vZGVsVXNl cikKKwlpZiB4LkRldmljZU1vZGVsU3NpZExhYmVsICE9ICIiIHsKKwkJeGMuZGV2aWNlX21vZGVs X3NzaWRfbGFiZWwgPSBDLkNTdHJpbmcoeC5EZXZpY2VNb2RlbFNzaWRMYWJlbCkKKwl9CisJaWYg eC5EZXZpY2VNb2RlbFVzZXIgIT0gIiIgeworCQl4Yy5kZXZpY2VfbW9kZWxfdXNlciA9IEMuQ1N0 cmluZyh4LkRldmljZU1vZGVsVXNlcikKKwl9CiAJeGMuZXh0cmEsIGVyciA9IHguRXh0cmEudG9D KCkKIAlpZiBlcnIgIT0gbmlsIHsKIAkJQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mb19kaXNwb3Nl KCZ4YykKQEAgLTExMTIsMTYgKzExNzQsMjYgQEAgZnVuYyAoeCAqRG9tYWluQnVpbGRJbmZvKSB0 b0MoKSAoeGMgQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mbywgZXJyIGVycm9yKSB7CiAJCXJldHVy biB4YywgZXJyCiAJfQogCXhjLmV2ZW50X2NoYW5uZWxzID0gQy51aW50MzJfdCh4LkV2ZW50Q2hh bm5lbHMpCi0JeGMua2VybmVsID0gQy5DU3RyaW5nKHguS2VybmVsKQotCXhjLmNtZGxpbmUgPSBD LkNTdHJpbmcoeC5DbWRsaW5lKQotCXhjLnJhbWRpc2sgPSBDLkNTdHJpbmcoeC5SYW1kaXNrKQot CXhjLmRldmljZV90cmVlID0gQy5DU3RyaW5nKHguRGV2aWNlVHJlZSkKKwlpZiB4Lktlcm5lbCAh PSAiIiB7CisJCXhjLmtlcm5lbCA9IEMuQ1N0cmluZyh4Lktlcm5lbCkKKwl9CisJaWYgeC5DbWRs aW5lICE9ICIiIHsKKwkJeGMuY21kbGluZSA9IEMuQ1N0cmluZyh4LkNtZGxpbmUpCisJfQorCWlm IHguUmFtZGlzayAhPSAiIiB7CisJCXhjLnJhbWRpc2sgPSBDLkNTdHJpbmcoeC5SYW1kaXNrKQor CX0KKwlpZiB4LkRldmljZVRyZWUgIT0gIiIgeworCQl4Yy5kZXZpY2VfdHJlZSA9IEMuQ1N0cmlu Zyh4LkRldmljZVRyZWUpCisJfQogCXhjLmFjcGksIGVyciA9IHguQWNwaS50b0MoKQogCWlmIGVy ciAhPSBuaWwgewogCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQogCQly ZXR1cm4geGMsIGVycgogCX0KLQl4Yy5ib290bG9hZGVyID0gQy5DU3RyaW5nKHguQm9vdGxvYWRl cikKKwlpZiB4LkJvb3Rsb2FkZXIgIT0gIiIgeworCQl4Yy5ib290bG9hZGVyID0gQy5DU3RyaW5n KHguQm9vdGxvYWRlcikKKwl9CiAJeGMuYm9vdGxvYWRlcl9hcmdzLCBlcnIgPSB4LkJvb3Rsb2Fk ZXJBcmdzLnRvQygpCiAJaWYgZXJyICE9IG5pbCB7CiAJCUMubGlieGxfZG9tYWluX2J1aWxkX2lu Zm9fZGlzcG9zZSgmeGMpCkBAIC0xMTUzLDcgKzEyMjUsOSBAQCBmdW5jICh4ICpEb21haW5CdWls ZEluZm8pIHRvQygpICh4YyBDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvLCBlcnIgZXJyb3IpIHsK IAkJCXJldHVybiB4YywgZXJyb3JzLk5ldygid3JvbmcgdHlwZSBmb3IgdW5pb24ga2V5IHR5cGUi KQogCQl9CiAJCXZhciBodm0gQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mb190eXBlX3VuaW9uX2h2 bQotCQlodm0uZmlybXdhcmUgPSBDLkNTdHJpbmcodG1wLkZpcm13YXJlKQorCQlpZiB0bXAuRmly bXdhcmUgIT0gIiIgeworCQkJaHZtLmZpcm13YXJlID0gQy5DU3RyaW5nKHRtcC5GaXJtd2FyZSkK KwkJfQogCQlodm0uYmlvcyA9IEMubGlieGxfYmlvc190eXBlKHRtcC5CaW9zKQogCQlodm0ucGFl LCBlcnIgPSB0bXAuUGFlLnRvQygpCiAJCWlmIGVyciAhPSBuaWwgewpAQCAtMTIwNSw3ICsxMjc5 LDkgQEAgZnVuYyAoeCAqRG9tYWluQnVpbGRJbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF9kb21haW5f YnVpbGRfaW5mbywgZXJyIGVycm9yKSB7CiAJCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rp c3Bvc2UoJnhjKQogCQkJcmV0dXJuIHhjLCBlcnIKIAkJfQotCQlodm0udGltZW9mZnNldCA9IEMu Q1N0cmluZyh0bXAuVGltZW9mZnNldCkKKwkJaWYgdG1wLlRpbWVvZmZzZXQgIT0gIiIgeworCQkJ aHZtLnRpbWVvZmZzZXQgPSBDLkNTdHJpbmcodG1wLlRpbWVvZmZzZXQpCisJCX0KIAkJaHZtLmhw ZXQsIGVyciA9IHRtcC5IcGV0LnRvQygpCiAJCWlmIGVyciAhPSBuaWwgewogCQkJQy5saWJ4bF9k b21haW5fYnVpbGRfaW5mb19kaXNwb3NlKCZ4YykKQEAgLTEyMjgsOSArMTMwNCwxNSBAQCBmdW5j ICh4ICpEb21haW5CdWlsZEluZm8pIHRvQygpICh4YyBDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZv LCBlcnIgZXJyb3IpIHsKIAkJCUMubGlieGxfZG9tYWluX2J1aWxkX2luZm9fZGlzcG9zZSgmeGMp CiAJCQlyZXR1cm4geGMsIGVycgogCQl9Ci0JCWh2bS5zeXN0ZW1fZmlybXdhcmUgPSBDLkNTdHJp bmcodG1wLlN5c3RlbUZpcm13YXJlKQotCQlodm0uc21iaW9zX2Zpcm13YXJlID0gQy5DU3RyaW5n KHRtcC5TbWJpb3NGaXJtd2FyZSkKLQkJaHZtLmFjcGlfZmlybXdhcmUgPSBDLkNTdHJpbmcodG1w LkFjcGlGaXJtd2FyZSkKKwkJaWYgdG1wLlN5c3RlbUZpcm13YXJlICE9ICIiIHsKKwkJCWh2bS5z eXN0ZW1fZmlybXdhcmUgPSBDLkNTdHJpbmcodG1wLlN5c3RlbUZpcm13YXJlKQorCQl9CisJCWlm IHRtcC5TbWJpb3NGaXJtd2FyZSAhPSAiIiB7CisJCQlodm0uc21iaW9zX2Zpcm13YXJlID0gQy5D U3RyaW5nKHRtcC5TbWJpb3NGaXJtd2FyZSkKKwkJfQorCQlpZiB0bXAuQWNwaUZpcm13YXJlICE9 ICIiIHsKKwkJCWh2bS5hY3BpX2Zpcm13YXJlID0gQy5DU3RyaW5nKHRtcC5BY3BpRmlybXdhcmUp CisJCX0KIAkJaHZtLmhkdHlwZSA9IEMubGlieGxfaGR0eXBlKHRtcC5IZHR5cGUpCiAJCWh2bS5u b2dyYXBoaWMsIGVyciA9IHRtcC5Ob2dyYXBoaWMudG9DKCkKIAkJaWYgZXJyICE9IG5pbCB7CkBA IC0xMjQ3LDcgKzEzMjksOSBAQCBmdW5jICh4ICpEb21haW5CdWlsZEluZm8pIHRvQygpICh4YyBD LmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvLCBlcnIgZXJyb3IpIHsKIAkJCUMubGlieGxfZG9tYWlu X2J1aWxkX2luZm9fZGlzcG9zZSgmeGMpCiAJCQlyZXR1cm4geGMsIGVycgogCQl9Ci0JCWh2bS5r ZXltYXAgPSBDLkNTdHJpbmcodG1wLktleW1hcCkKKwkJaWYgdG1wLktleW1hcCAhPSAiIiB7CisJ CQlodm0ua2V5bWFwID0gQy5DU3RyaW5nKHRtcC5LZXltYXApCisJCX0KIAkJaHZtLnNkbCwgZXJy ID0gdG1wLlNkbC50b0MoKQogCQlpZiBlcnIgIT0gbmlsIHsKIAkJCUMubGlieGxfZG9tYWluX2J1 aWxkX2luZm9fZGlzcG9zZSgmeGMpCkBAIC0xMjY0LDIxICsxMzQ4LDI5IEBAIGZ1bmMgKHggKkRv bWFpbkJ1aWxkSW5mbykgdG9DKCkgKHhjIEMubGlieGxfZG9tYWluX2J1aWxkX2luZm8sIGVyciBl cnJvcikgewogCQkJcmV0dXJuIHhjLCBlcnIKIAkJfQogCQlodm0uZ2Z4X3Bhc3N0aHJ1X2tpbmQg PSBDLmxpYnhsX2dmeF9wYXNzdGhydV9raW5kKHRtcC5HZnhQYXNzdGhydUtpbmQpCi0JCWh2bS5z ZXJpYWwgPSBDLkNTdHJpbmcodG1wLlNlcmlhbCkKLQkJaHZtLmJvb3QgPSBDLkNTdHJpbmcodG1w LkJvb3QpCisJCWlmIHRtcC5TZXJpYWwgIT0gIiIgeworCQkJaHZtLnNlcmlhbCA9IEMuQ1N0cmlu Zyh0bXAuU2VyaWFsKQorCQl9CisJCWlmIHRtcC5Cb290ICE9ICIiIHsKKwkJCWh2bS5ib290ID0g Qy5DU3RyaW5nKHRtcC5Cb290KQorCQl9CiAJCWh2bS51c2IsIGVyciA9IHRtcC5Vc2IudG9DKCkK IAkJaWYgZXJyICE9IG5pbCB7CiAJCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2Uo JnhjKQogCQkJcmV0dXJuIHhjLCBlcnIKIAkJfQogCQlodm0udXNidmVyc2lvbiA9IEMuaW50KHRt cC5Vc2J2ZXJzaW9uKQotCQlodm0udXNiZGV2aWNlID0gQy5DU3RyaW5nKHRtcC5Vc2JkZXZpY2Up CisJCWlmIHRtcC5Vc2JkZXZpY2UgIT0gIiIgeworCQkJaHZtLnVzYmRldmljZSA9IEMuQ1N0cmlu Zyh0bXAuVXNiZGV2aWNlKQorCQl9CiAJCWh2bS52a2JfZGV2aWNlLCBlcnIgPSB0bXAuVmtiRGV2 aWNlLnRvQygpCiAJCWlmIGVyciAhPSBuaWwgewogCQkJQy5saWJ4bF9kb21haW5fYnVpbGRfaW5m b19kaXNwb3NlKCZ4YykKIAkJCXJldHVybiB4YywgZXJyCiAJCX0KLQkJaHZtLnNvdW5kaHcgPSBD LkNTdHJpbmcodG1wLlNvdW5kaHcpCisJCWlmIHRtcC5Tb3VuZGh3ICE9ICIiIHsKKwkJCWh2bS5z b3VuZGh3ID0gQy5DU3RyaW5nKHRtcC5Tb3VuZGh3KQorCQl9CiAJCWh2bS54ZW5fcGxhdGZvcm1f cGNpLCBlcnIgPSB0bXAuWGVuUGxhdGZvcm1QY2kudG9DKCkKIAkJaWYgZXJyICE9IG5pbCB7CiAJ CQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQpAQCAtMTMxNiwxNyArMTQw OCwyNyBAQCBmdW5jICh4ICpEb21haW5CdWlsZEluZm8pIHRvQygpICh4YyBDLmxpYnhsX2RvbWFp bl9idWlsZF9pbmZvLCBlcnIgZXJyb3IpIHsKIAkJCXJldHVybiB4YywgZXJyb3JzLk5ldygid3Jv bmcgdHlwZSBmb3IgdW5pb24ga2V5IHR5cGUiKQogCQl9CiAJCXZhciBwdiBDLmxpYnhsX2RvbWFp bl9idWlsZF9pbmZvX3R5cGVfdW5pb25fcHYKLQkJcHYua2VybmVsID0gQy5DU3RyaW5nKHRtcC5L ZXJuZWwpCisJCWlmIHRtcC5LZXJuZWwgIT0gIiIgeworCQkJcHYua2VybmVsID0gQy5DU3RyaW5n KHRtcC5LZXJuZWwpCisJCX0KIAkJcHYuc2xhY2tfbWVta2IgPSBDLnVpbnQ2NF90KHRtcC5TbGFj a01lbWtiKQotCQlwdi5ib290bG9hZGVyID0gQy5DU3RyaW5nKHRtcC5Cb290bG9hZGVyKQorCQlp ZiB0bXAuQm9vdGxvYWRlciAhPSAiIiB7CisJCQlwdi5ib290bG9hZGVyID0gQy5DU3RyaW5nKHRt cC5Cb290bG9hZGVyKQorCQl9CiAJCXB2LmJvb3Rsb2FkZXJfYXJncywgZXJyID0gdG1wLkJvb3Rs b2FkZXJBcmdzLnRvQygpCiAJCWlmIGVyciAhPSBuaWwgewogCQkJQy5saWJ4bF9kb21haW5fYnVp bGRfaW5mb19kaXNwb3NlKCZ4YykKIAkJCXJldHVybiB4YywgZXJyCiAJCX0KLQkJcHYuY21kbGlu ZSA9IEMuQ1N0cmluZyh0bXAuQ21kbGluZSkKLQkJcHYucmFtZGlzayA9IEMuQ1N0cmluZyh0bXAu UmFtZGlzaykKLQkJcHYuZmVhdHVyZXMgPSBDLkNTdHJpbmcodG1wLkZlYXR1cmVzKQorCQlpZiB0 bXAuQ21kbGluZSAhPSAiIiB7CisJCQlwdi5jbWRsaW5lID0gQy5DU3RyaW5nKHRtcC5DbWRsaW5l KQorCQl9CisJCWlmIHRtcC5SYW1kaXNrICE9ICIiIHsKKwkJCXB2LnJhbWRpc2sgPSBDLkNTdHJp bmcodG1wLlJhbWRpc2spCisJCX0KKwkJaWYgdG1wLkZlYXR1cmVzICE9ICIiIHsKKwkJCXB2LmZl YXR1cmVzID0gQy5DU3RyaW5nKHRtcC5GZWF0dXJlcykKKwkJfQogCQlwdi5lODIwX2hvc3QsIGVy ciA9IHRtcC5FODIwSG9zdC50b0MoKQogCQlpZiBlcnIgIT0gbmlsIHsKIAkJCUMubGlieGxfZG9t YWluX2J1aWxkX2luZm9fZGlzcG9zZSgmeGMpCkBAIC0xMzQ2LDkgKzE0NDgsMTUgQEAgZnVuYyAo eCAqRG9tYWluQnVpbGRJbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF9kb21haW5fYnVpbGRfaW5mbywg ZXJyIGVycm9yKSB7CiAJCQlDLmxpYnhsX2RvbWFpbl9idWlsZF9pbmZvX2Rpc3Bvc2UoJnhjKQog CQkJcmV0dXJuIHhjLCBlcnIKIAkJfQotCQlwdmgucHZzaGltX3BhdGggPSBDLkNTdHJpbmcodG1w LlB2c2hpbVBhdGgpCi0JCXB2aC5wdnNoaW1fY21kbGluZSA9IEMuQ1N0cmluZyh0bXAuUHZzaGlt Q21kbGluZSkKLQkJcHZoLnB2c2hpbV9leHRyYSA9IEMuQ1N0cmluZyh0bXAuUHZzaGltRXh0cmEp CisJCWlmIHRtcC5QdnNoaW1QYXRoICE9ICIiIHsKKwkJCXB2aC5wdnNoaW1fcGF0aCA9IEMuQ1N0 cmluZyh0bXAuUHZzaGltUGF0aCkKKwkJfQorCQlpZiB0bXAuUHZzaGltQ21kbGluZSAhPSAiIiB7 CisJCQlwdmgucHZzaGltX2NtZGxpbmUgPSBDLkNTdHJpbmcodG1wLlB2c2hpbUNtZGxpbmUpCisJ CX0KKwkJaWYgdG1wLlB2c2hpbUV4dHJhICE9ICIiIHsKKwkJCXB2aC5wdnNoaW1fZXh0cmEgPSBD LkNTdHJpbmcodG1wLlB2c2hpbUV4dHJhKQorCQl9CiAJCXB2aEJ5dGVzIDo9IEMuR29CeXRlcyh1 bnNhZmUuUG9pbnRlcigmcHZoKSwgQy5zaXplb2ZfbGlieGxfZG9tYWluX2J1aWxkX2luZm9fdHlw ZV91bmlvbl9wdmgpCiAJCWNvcHkoeGMudVs6XSwgcHZoQnl0ZXMpCiAJZGVmYXVsdDoKQEAgLTEz NzgsNyArMTQ4Niw5IEBAIGZ1bmMgKHggKkRldmljZVZmYikgZnJvbUMoeGMgKkMubGlieGxfZGV2 aWNlX3ZmYikgZXJyb3IgewogZnVuYyAoeCAqRGV2aWNlVmZiKSB0b0MoKSAoeGMgQy5saWJ4bF9k ZXZpY2VfdmZiLCBlcnIgZXJyb3IpIHsKIAlDLmxpYnhsX2RldmljZV92ZmJfaW5pdCgmeGMpCiAJ eGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNrZW5kRG9taWQpCi0JeGMuYmFj a2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5hbWUpCisJaWYgeC5CYWNrZW5k RG9tbmFtZSAhPSAiIiB7CisJCXhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tl bmREb21uYW1lKQorCX0KIAl4Yy5kZXZpZCA9IEMubGlieGxfZGV2aWQoeC5EZXZpZCkKIAl4Yy52 bmMsIGVyciA9IHguVm5jLnRvQygpCiAJaWYgZXJyICE9IG5pbCB7CkBAIC0xMzkwLDcgKzE1MDAs OSBAQCBmdW5jICh4ICpEZXZpY2VWZmIpIHRvQygpICh4YyBDLmxpYnhsX2RldmljZV92ZmIsIGVy ciBlcnJvcikgewogCQlDLmxpYnhsX2RldmljZV92ZmJfZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4 YywgZXJyCiAJfQotCXhjLmtleW1hcCA9IEMuQ1N0cmluZyh4LktleW1hcCkKKwlpZiB4LktleW1h cCAhPSAiIiB7CisJCXhjLmtleW1hcCA9IEMuQ1N0cmluZyh4LktleW1hcCkKKwl9CiAJcmV0dXJu IHhjLCBuaWwKIH0KIApAQCAtMTQxNywxMCArMTUyOSwxNCBAQCBmdW5jICh4ICpEZXZpY2VWa2Ip IGZyb21DKHhjICpDLmxpYnhsX2RldmljZV92a2IpIGVycm9yIHsKIGZ1bmMgKHggKkRldmljZVZr YikgdG9DKCkgKHhjIEMubGlieGxfZGV2aWNlX3ZrYiwgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF9k ZXZpY2VfdmtiX2luaXQoJnhjKQogCXhjLmJhY2tlbmRfZG9taWQgPSBDLmxpYnhsX2RvbWlkKHgu QmFja2VuZERvbWlkKQotCXhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmRE b21uYW1lKQorCWlmIHguQmFja2VuZERvbW5hbWUgIT0gIiIgeworCQl4Yy5iYWNrZW5kX2RvbW5h bWUgPSBDLkNTdHJpbmcoeC5CYWNrZW5kRG9tbmFtZSkKKwl9CiAJeGMuZGV2aWQgPSBDLmxpYnhs X2RldmlkKHguRGV2aWQpCiAJeGMuYmFja2VuZF90eXBlID0gQy5saWJ4bF92a2JfYmFja2VuZCh4 LkJhY2tlbmRUeXBlKQotCXhjLnVuaXF1ZV9pZCA9IEMuQ1N0cmluZyh4LlVuaXF1ZUlkKQorCWlm IHguVW5pcXVlSWQgIT0gIiIgeworCQl4Yy51bmlxdWVfaWQgPSBDLkNTdHJpbmcoeC5VbmlxdWVJ ZCkKKwl9CiAJeGMuZmVhdHVyZV9kaXNhYmxlX2tleWJvYXJkID0gQy5ib29sKHguRmVhdHVyZURp c2FibGVLZXlib2FyZCkKIAl4Yy5mZWF0dXJlX2Rpc2FibGVfcG9pbnRlciA9IEMuYm9vbCh4LkZl YXR1cmVEaXNhYmxlUG9pbnRlcikKIAl4Yy5mZWF0dXJlX2Fic19wb2ludGVyID0gQy5ib29sKHgu RmVhdHVyZUFic1BvaW50ZXIpCkBAIC0xNDY3LDEyICsxNTgzLDIwIEBAIGZ1bmMgKHggKkRldmlj ZURpc2spIGZyb21DKHhjICpDLmxpYnhsX2RldmljZV9kaXNrKSBlcnJvciB7CiBmdW5jICh4ICpE ZXZpY2VEaXNrKSB0b0MoKSAoeGMgQy5saWJ4bF9kZXZpY2VfZGlzaywgZXJyIGVycm9yKSB7CiAJ Qy5saWJ4bF9kZXZpY2VfZGlza19pbml0KCZ4YykKIAl4Yy5iYWNrZW5kX2RvbWlkID0gQy5saWJ4 bF9kb21pZCh4LkJhY2tlbmREb21pZCkKLQl4Yy5iYWNrZW5kX2RvbW5hbWUgPSBDLkNTdHJpbmco eC5CYWNrZW5kRG9tbmFtZSkKLQl4Yy5wZGV2X3BhdGggPSBDLkNTdHJpbmcoeC5QZGV2UGF0aCkK LQl4Yy52ZGV2ID0gQy5DU3RyaW5nKHguVmRldikKKwlpZiB4LkJhY2tlbmREb21uYW1lICE9ICIi IHsKKwkJeGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5hbWUpCisJ fQorCWlmIHguUGRldlBhdGggIT0gIiIgeworCQl4Yy5wZGV2X3BhdGggPSBDLkNTdHJpbmcoeC5Q ZGV2UGF0aCkKKwl9CisJaWYgeC5WZGV2ICE9ICIiIHsKKwkJeGMudmRldiA9IEMuQ1N0cmluZyh4 LlZkZXYpCisJfQogCXhjLmJhY2tlbmQgPSBDLmxpYnhsX2Rpc2tfYmFja2VuZCh4LkJhY2tlbmQp CiAJeGMuZm9ybWF0ID0gQy5saWJ4bF9kaXNrX2Zvcm1hdCh4LkZvcm1hdCkKLQl4Yy5zY3JpcHQg PSBDLkNTdHJpbmcoeC5TY3JpcHQpCisJaWYgeC5TY3JpcHQgIT0gIiIgeworCQl4Yy5zY3JpcHQg PSBDLkNTdHJpbmcoeC5TY3JpcHQpCisJfQogCXhjLnJlbW92YWJsZSA9IEMuaW50KHguUmVtb3Zh YmxlKQogCXhjLnJlYWR3cml0ZSA9IEMuaW50KHguUmVhZHdyaXRlKQogCXhjLmlzX2Nkcm9tID0g Qy5pbnQoeC5Jc0Nkcm9tKQpAQCAtMTQ5MiwxMSArMTYxNiwxOSBAQCBmdW5jICh4ICpEZXZpY2VE aXNrKSB0b0MoKSAoeGMgQy5saWJ4bF9kZXZpY2VfZGlzaywgZXJyIGVycm9yKSB7CiAJCUMubGli eGxfZGV2aWNlX2Rpc2tfZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4YywgZXJyCiAJfQotCXhjLmNv bG9faG9zdCA9IEMuQ1N0cmluZyh4LkNvbG9Ib3N0KQorCWlmIHguQ29sb0hvc3QgIT0gIiIgewor CQl4Yy5jb2xvX2hvc3QgPSBDLkNTdHJpbmcoeC5Db2xvSG9zdCkKKwl9CiAJeGMuY29sb19wb3J0 ID0gQy5pbnQoeC5Db2xvUG9ydCkKLQl4Yy5jb2xvX2V4cG9ydCA9IEMuQ1N0cmluZyh4LkNvbG9F eHBvcnQpCi0JeGMuYWN0aXZlX2Rpc2sgPSBDLkNTdHJpbmcoeC5BY3RpdmVEaXNrKQotCXhjLmhp ZGRlbl9kaXNrID0gQy5DU3RyaW5nKHguSGlkZGVuRGlzaykKKwlpZiB4LkNvbG9FeHBvcnQgIT0g IiIgeworCQl4Yy5jb2xvX2V4cG9ydCA9IEMuQ1N0cmluZyh4LkNvbG9FeHBvcnQpCisJfQorCWlm IHguQWN0aXZlRGlzayAhPSAiIiB7CisJCXhjLmFjdGl2ZV9kaXNrID0gQy5DU3RyaW5nKHguQWN0 aXZlRGlzaykKKwl9CisJaWYgeC5IaWRkZW5EaXNrICE9ICIiIHsKKwkJeGMuaGlkZGVuX2Rpc2sg PSBDLkNTdHJpbmcoeC5IaWRkZW5EaXNrKQorCX0KIAlyZXR1cm4geGMsIG5pbAogfQogCkBAIC0x NTczLDcyICsxNzA1LDE4NCBAQCBmdW5jICh4ICpEZXZpY2VOaWMpIGZyb21DKHhjICpDLmxpYnhs X2RldmljZV9uaWMpIGVycm9yIHsKIGZ1bmMgKHggKkRldmljZU5pYykgdG9DKCkgKHhjIEMubGli eGxfZGV2aWNlX25pYywgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF9kZXZpY2VfbmljX2luaXQoJnhj KQogCXhjLmJhY2tlbmRfZG9taWQgPSBDLmxpYnhsX2RvbWlkKHguQmFja2VuZERvbWlkKQotCXhj LmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKQorCWlmIHguQmFj a2VuZERvbW5hbWUgIT0gIiIgeworCQl4Yy5iYWNrZW5kX2RvbW5hbWUgPSBDLkNTdHJpbmcoeC5C YWNrZW5kRG9tbmFtZSkKKwl9CiAJeGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpCiAJ eGMubXR1ID0gQy5pbnQoeC5NdHUpCi0JeGMubW9kZWwgPSBDLkNTdHJpbmcoeC5Nb2RlbCkKKwlp ZiB4Lk1vZGVsICE9ICIiIHsKKwkJeGMubW9kZWwgPSBDLkNTdHJpbmcoeC5Nb2RlbCkKKwl9CiAJ eGMubWFjLCBlcnIgPSB4Lk1hYy50b0MoKQogCWlmIGVyciAhPSBuaWwgewogCQlDLmxpYnhsX2Rl dmljZV9uaWNfZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4YywgZXJyCiAJfQotCXhjLmlwID0gQy5D U3RyaW5nKHguSXApCi0JeGMuYnJpZGdlID0gQy5DU3RyaW5nKHguQnJpZGdlKQotCXhjLmlmbmFt ZSA9IEMuQ1N0cmluZyh4LklmbmFtZSkKLQl4Yy5zY3JpcHQgPSBDLkNTdHJpbmcoeC5TY3JpcHQp CisJaWYgeC5JcCAhPSAiIiB7CisJCXhjLmlwID0gQy5DU3RyaW5nKHguSXApCisJfQorCWlmIHgu QnJpZGdlICE9ICIiIHsKKwkJeGMuYnJpZGdlID0gQy5DU3RyaW5nKHguQnJpZGdlKQorCX0KKwlp ZiB4LklmbmFtZSAhPSAiIiB7CisJCXhjLmlmbmFtZSA9IEMuQ1N0cmluZyh4LklmbmFtZSkKKwl9 CisJaWYgeC5TY3JpcHQgIT0gIiIgeworCQl4Yy5zY3JpcHQgPSBDLkNTdHJpbmcoeC5TY3JpcHQp CisJfQogCXhjLm5pY3R5cGUgPSBDLmxpYnhsX25pY190eXBlKHguTmljdHlwZSkKIAl4Yy5yYXRl X2J5dGVzX3Blcl9pbnRlcnZhbCA9IEMudWludDY0X3QoeC5SYXRlQnl0ZXNQZXJJbnRlcnZhbCkK IAl4Yy5yYXRlX2ludGVydmFsX3VzZWNzID0gQy51aW50MzJfdCh4LlJhdGVJbnRlcnZhbFVzZWNz KQotCXhjLmdhdGV3YXlkZXYgPSBDLkNTdHJpbmcoeC5HYXRld2F5ZGV2KQotCXhjLmNvbG9mdF9m b3J3YXJkZGV2ID0gQy5DU3RyaW5nKHguQ29sb2Z0Rm9yd2FyZGRldikKLQl4Yy5jb2xvX3NvY2tf bWlycm9yX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tNaXJyb3JJZCkKLQl4Yy5jb2xvX3NvY2tf bWlycm9yX2lwID0gQy5DU3RyaW5nKHguQ29sb1NvY2tNaXJyb3JJcCkKLQl4Yy5jb2xvX3NvY2tf bWlycm9yX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja01pcnJvclBvcnQpCi0JeGMuY29sb19z b2NrX2NvbXBhcmVfcHJpX2luX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tDb21wYXJlUHJpSW5J ZCkKLQl4Yy5jb2xvX3NvY2tfY29tcGFyZV9wcmlfaW5faXAgPSBDLkNTdHJpbmcoeC5Db2xvU29j a0NvbXBhcmVQcmlJbklwKQotCXhjLmNvbG9fc29ja19jb21wYXJlX3ByaV9pbl9wb3J0ID0gQy5D U3RyaW5nKHguQ29sb1NvY2tDb21wYXJlUHJpSW5Qb3J0KQotCXhjLmNvbG9fc29ja19jb21wYXJl X3NlY19pbl9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFyZVNlY0luSWQpCi0JeGMuY29s b19zb2NrX2NvbXBhcmVfc2VjX2luX2lwID0gQy5DU3RyaW5nKHguQ29sb1NvY2tDb21wYXJlU2Vj SW5JcCkKLQl4Yy5jb2xvX3NvY2tfY29tcGFyZV9zZWNfaW5fcG9ydCA9IEMuQ1N0cmluZyh4LkNv bG9Tb2NrQ29tcGFyZVNlY0luUG9ydCkKLQl4Yy5jb2xvX3NvY2tfY29tcGFyZV9ub3RpZnlfaWQg PSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVOb3RpZnlJZCkKLQl4Yy5jb2xvX3NvY2tfY29t cGFyZV9ub3RpZnlfaXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVOb3RpZnlJcCkKLQl4 Yy5jb2xvX3NvY2tfY29tcGFyZV9ub3RpZnlfcG9ydCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29t cGFyZU5vdGlmeVBvcnQpCi0JeGMuY29sb19zb2NrX3JlZGlyZWN0b3IwX2lkID0gQy5DU3RyaW5n KHguQ29sb1NvY2tSZWRpcmVjdG9yMElkKQotCXhjLmNvbG9fc29ja19yZWRpcmVjdG9yMF9pcCA9 IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjBJcCkKLQl4Yy5jb2xvX3NvY2tfcmVkaXJl Y3RvcjBfcG9ydCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjBQb3J0KQotCXhjLmNv bG9fc29ja19yZWRpcmVjdG9yMV9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjFJ ZCkKLQl4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjFfaXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1Jl ZGlyZWN0b3IxSXApCi0JeGMuY29sb19zb2NrX3JlZGlyZWN0b3IxX3BvcnQgPSBDLkNTdHJpbmco eC5Db2xvU29ja1JlZGlyZWN0b3IxUG9ydCkKLQl4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjJfaWQg PSBDLkNTdHJpbmcoeC5Db2xvU29ja1JlZGlyZWN0b3IySWQpCi0JeGMuY29sb19zb2NrX3JlZGly ZWN0b3IyX2lwID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMklwKQotCXhjLmNvbG9f c29ja19yZWRpcmVjdG9yMl9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMlBv cnQpCi0JeGMuY29sb19maWx0ZXJfbWlycm9yX3F1ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRl ck1pcnJvclF1ZXVlKQotCXhjLmNvbG9fZmlsdGVyX21pcnJvcl9vdXRkZXYgPSBDLkNTdHJpbmco eC5Db2xvRmlsdGVyTWlycm9yT3V0ZGV2KQotCXhjLmNvbG9fZmlsdGVyX3JlZGlyZWN0b3IwX3F1 ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclJlZGlyZWN0b3IwUXVldWUpCi0JeGMuY29sb19m aWx0ZXJfcmVkaXJlY3RvcjBfaW5kZXYgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyUmVkaXJlY3Rv cjBJbmRldikKLQl4Yy5jb2xvX2ZpbHRlcl9yZWRpcmVjdG9yMF9vdXRkZXYgPSBDLkNTdHJpbmco eC5Db2xvRmlsdGVyUmVkaXJlY3RvcjBPdXRkZXYpCi0JeGMuY29sb19maWx0ZXJfcmVkaXJlY3Rv cjFfcXVldWUgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyUmVkaXJlY3RvcjFRdWV1ZSkKLQl4Yy5j b2xvX2ZpbHRlcl9yZWRpcmVjdG9yMV9pbmRldiA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJSZWRp cmVjdG9yMUluZGV2KQotCXhjLmNvbG9fZmlsdGVyX3JlZGlyZWN0b3IxX291dGRldiA9IEMuQ1N0 cmluZyh4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yMU91dGRldikKLQl4Yy5jb2xvX2NvbXBhcmVfcHJp X2luID0gQy5DU3RyaW5nKHguQ29sb0NvbXBhcmVQcmlJbikKLQl4Yy5jb2xvX2NvbXBhcmVfc2Vj X2luID0gQy5DU3RyaW5nKHguQ29sb0NvbXBhcmVTZWNJbikKLQl4Yy5jb2xvX2NvbXBhcmVfb3V0 ID0gQy5DU3RyaW5nKHguQ29sb0NvbXBhcmVPdXQpCi0JeGMuY29sb19jb21wYXJlX25vdGlmeV9k ZXYgPSBDLkNTdHJpbmcoeC5Db2xvQ29tcGFyZU5vdGlmeURldikKLQl4Yy5jb2xvX3NvY2tfc2Vj X3JlZGlyZWN0b3IwX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMElkKQot CXhjLmNvbG9fc29ja19zZWNfcmVkaXJlY3RvcjBfaXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1Nl Y1JlZGlyZWN0b3IwSXApCi0JeGMuY29sb19zb2NrX3NlY19yZWRpcmVjdG9yMF9wb3J0ID0gQy5D U3RyaW5nKHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMFBvcnQpCi0JeGMuY29sb19zb2NrX3NlY19y ZWRpcmVjdG9yMV9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjFJZCkKLQl4 Yy5jb2xvX3NvY2tfc2VjX3JlZGlyZWN0b3IxX2lwID0gQy5DU3RyaW5nKHguQ29sb1NvY2tTZWNS ZWRpcmVjdG9yMUlwKQotCXhjLmNvbG9fc29ja19zZWNfcmVkaXJlY3RvcjFfcG9ydCA9IEMuQ1N0 cmluZyh4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjFQb3J0KQotCXhjLmNvbG9fZmlsdGVyX3NlY19y ZWRpcmVjdG9yMF9xdWV1ZSA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJTZWNSZWRpcmVjdG9yMFF1 ZXVlKQotCXhjLmNvbG9fZmlsdGVyX3NlY19yZWRpcmVjdG9yMF9pbmRldiA9IEMuQ1N0cmluZyh4 LkNvbG9GaWx0ZXJTZWNSZWRpcmVjdG9yMEluZGV2KQotCXhjLmNvbG9fZmlsdGVyX3NlY19yZWRp cmVjdG9yMF9vdXRkZXYgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyU2VjUmVkaXJlY3RvcjBPdXRk ZXYpCi0JeGMuY29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IxX3F1ZXVlID0gQy5DU3RyaW5nKHgu Q29sb0ZpbHRlclNlY1JlZGlyZWN0b3IxUXVldWUpCi0JeGMuY29sb19maWx0ZXJfc2VjX3JlZGly ZWN0b3IxX2luZGV2ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclNlY1JlZGlyZWN0b3IxSW5kZXYp Ci0JeGMuY29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IxX291dGRldiA9IEMuQ1N0cmluZyh4LkNv bG9GaWx0ZXJTZWNSZWRpcmVjdG9yMU91dGRldikKLQl4Yy5jb2xvX2ZpbHRlcl9zZWNfcmV3cml0 ZXIwX3F1ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclNlY1Jld3JpdGVyMFF1ZXVlKQotCXhj LmNvbG9fY2hlY2twb2ludF9ob3N0ID0gQy5DU3RyaW5nKHguQ29sb0NoZWNrcG9pbnRIb3N0KQot CXhjLmNvbG9fY2hlY2twb2ludF9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb0NoZWNrcG9pbnRQb3J0 KQorCWlmIHguR2F0ZXdheWRldiAhPSAiIiB7CisJCXhjLmdhdGV3YXlkZXYgPSBDLkNTdHJpbmco eC5HYXRld2F5ZGV2KQorCX0KKwlpZiB4LkNvbG9mdEZvcndhcmRkZXYgIT0gIiIgeworCQl4Yy5j b2xvZnRfZm9yd2FyZGRldiA9IEMuQ1N0cmluZyh4LkNvbG9mdEZvcndhcmRkZXYpCisJfQorCWlm IHguQ29sb1NvY2tNaXJyb3JJZCAhPSAiIiB7CisJCXhjLmNvbG9fc29ja19taXJyb3JfaWQgPSBD LkNTdHJpbmcoeC5Db2xvU29ja01pcnJvcklkKQorCX0KKwlpZiB4LkNvbG9Tb2NrTWlycm9ySXAg IT0gIiIgeworCQl4Yy5jb2xvX3NvY2tfbWlycm9yX2lwID0gQy5DU3RyaW5nKHguQ29sb1NvY2tN aXJyb3JJcCkKKwl9CisJaWYgeC5Db2xvU29ja01pcnJvclBvcnQgIT0gIiIgeworCQl4Yy5jb2xv X3NvY2tfbWlycm9yX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja01pcnJvclBvcnQpCisJfQor CWlmIHguQ29sb1NvY2tDb21wYXJlUHJpSW5JZCAhPSAiIiB7CisJCXhjLmNvbG9fc29ja19jb21w YXJlX3ByaV9pbl9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFyZVByaUluSWQpCisJfQor CWlmIHguQ29sb1NvY2tDb21wYXJlUHJpSW5JcCAhPSAiIiB7CisJCXhjLmNvbG9fc29ja19jb21w YXJlX3ByaV9pbl9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFyZVByaUluSXApCisJfQor CWlmIHguQ29sb1NvY2tDb21wYXJlUHJpSW5Qb3J0ICE9ICIiIHsKKwkJeGMuY29sb19zb2NrX2Nv bXBhcmVfcHJpX2luX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVQcmlJblBvcnQp CisJfQorCWlmIHguQ29sb1NvY2tDb21wYXJlU2VjSW5JZCAhPSAiIiB7CisJCXhjLmNvbG9fc29j a19jb21wYXJlX3NlY19pbl9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFyZVNlY0luSWQp CisJfQorCWlmIHguQ29sb1NvY2tDb21wYXJlU2VjSW5JcCAhPSAiIiB7CisJCXhjLmNvbG9fc29j a19jb21wYXJlX3NlY19pbl9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFyZVNlY0luSXAp CisJfQorCWlmIHguQ29sb1NvY2tDb21wYXJlU2VjSW5Qb3J0ICE9ICIiIHsKKwkJeGMuY29sb19z b2NrX2NvbXBhcmVfc2VjX2luX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVTZWNJ blBvcnQpCisJfQorCWlmIHguQ29sb1NvY2tDb21wYXJlTm90aWZ5SWQgIT0gIiIgeworCQl4Yy5j b2xvX3NvY2tfY29tcGFyZV9ub3RpZnlfaWQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVO b3RpZnlJZCkKKwl9CisJaWYgeC5Db2xvU29ja0NvbXBhcmVOb3RpZnlJcCAhPSAiIiB7CisJCXhj LmNvbG9fc29ja19jb21wYXJlX25vdGlmeV9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFy ZU5vdGlmeUlwKQorCX0KKwlpZiB4LkNvbG9Tb2NrQ29tcGFyZU5vdGlmeVBvcnQgIT0gIiIgewor CQl4Yy5jb2xvX3NvY2tfY29tcGFyZV9ub3RpZnlfcG9ydCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2Nr Q29tcGFyZU5vdGlmeVBvcnQpCisJfQorCWlmIHguQ29sb1NvY2tSZWRpcmVjdG9yMElkICE9ICIi IHsKKwkJeGMuY29sb19zb2NrX3JlZGlyZWN0b3IwX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tS ZWRpcmVjdG9yMElkKQorCX0KKwlpZiB4LkNvbG9Tb2NrUmVkaXJlY3RvcjBJcCAhPSAiIiB7CisJ CXhjLmNvbG9fc29ja19yZWRpcmVjdG9yMF9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJl Y3RvcjBJcCkKKwl9CisJaWYgeC5Db2xvU29ja1JlZGlyZWN0b3IwUG9ydCAhPSAiIiB7CisJCXhj LmNvbG9fc29ja19yZWRpcmVjdG9yMF9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVj dG9yMFBvcnQpCisJfQorCWlmIHguQ29sb1NvY2tSZWRpcmVjdG9yMUlkICE9ICIiIHsKKwkJeGMu Y29sb19zb2NrX3JlZGlyZWN0b3IxX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9y MUlkKQorCX0KKwlpZiB4LkNvbG9Tb2NrUmVkaXJlY3RvcjFJcCAhPSAiIiB7CisJCXhjLmNvbG9f c29ja19yZWRpcmVjdG9yMV9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjFJcCkK Kwl9CisJaWYgeC5Db2xvU29ja1JlZGlyZWN0b3IxUG9ydCAhPSAiIiB7CisJCXhjLmNvbG9fc29j a19yZWRpcmVjdG9yMV9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMVBvcnQp CisJfQorCWlmIHguQ29sb1NvY2tSZWRpcmVjdG9yMklkICE9ICIiIHsKKwkJeGMuY29sb19zb2Nr X3JlZGlyZWN0b3IyX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMklkKQorCX0K KwlpZiB4LkNvbG9Tb2NrUmVkaXJlY3RvcjJJcCAhPSAiIiB7CisJCXhjLmNvbG9fc29ja19yZWRp cmVjdG9yMl9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjJJcCkKKwl9CisJaWYg eC5Db2xvU29ja1JlZGlyZWN0b3IyUG9ydCAhPSAiIiB7CisJCXhjLmNvbG9fc29ja19yZWRpcmVj dG9yMl9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMlBvcnQpCisJfQorCWlm IHguQ29sb0ZpbHRlck1pcnJvclF1ZXVlICE9ICIiIHsKKwkJeGMuY29sb19maWx0ZXJfbWlycm9y X3F1ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlck1pcnJvclF1ZXVlKQorCX0KKwlpZiB4LkNv bG9GaWx0ZXJNaXJyb3JPdXRkZXYgIT0gIiIgeworCQl4Yy5jb2xvX2ZpbHRlcl9taXJyb3Jfb3V0 ZGV2ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlck1pcnJvck91dGRldikKKwl9CisJaWYgeC5Db2xv RmlsdGVyUmVkaXJlY3RvcjBRdWV1ZSAhPSAiIiB7CisJCXhjLmNvbG9fZmlsdGVyX3JlZGlyZWN0 b3IwX3F1ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclJlZGlyZWN0b3IwUXVldWUpCisJfQor CWlmIHguQ29sb0ZpbHRlclJlZGlyZWN0b3IwSW5kZXYgIT0gIiIgeworCQl4Yy5jb2xvX2ZpbHRl cl9yZWRpcmVjdG9yMF9pbmRldiA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yMElu ZGV2KQorCX0KKwlpZiB4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yME91dGRldiAhPSAiIiB7CisJCXhj LmNvbG9fZmlsdGVyX3JlZGlyZWN0b3IwX291dGRldiA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJS ZWRpcmVjdG9yME91dGRldikKKwl9CisJaWYgeC5Db2xvRmlsdGVyUmVkaXJlY3RvcjFRdWV1ZSAh PSAiIiB7CisJCXhjLmNvbG9fZmlsdGVyX3JlZGlyZWN0b3IxX3F1ZXVlID0gQy5DU3RyaW5nKHgu Q29sb0ZpbHRlclJlZGlyZWN0b3IxUXVldWUpCisJfQorCWlmIHguQ29sb0ZpbHRlclJlZGlyZWN0 b3IxSW5kZXYgIT0gIiIgeworCQl4Yy5jb2xvX2ZpbHRlcl9yZWRpcmVjdG9yMV9pbmRldiA9IEMu Q1N0cmluZyh4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yMUluZGV2KQorCX0KKwlpZiB4LkNvbG9GaWx0 ZXJSZWRpcmVjdG9yMU91dGRldiAhPSAiIiB7CisJCXhjLmNvbG9fZmlsdGVyX3JlZGlyZWN0b3Ix X291dGRldiA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yMU91dGRldikKKwl9CisJ aWYgeC5Db2xvQ29tcGFyZVByaUluICE9ICIiIHsKKwkJeGMuY29sb19jb21wYXJlX3ByaV9pbiA9 IEMuQ1N0cmluZyh4LkNvbG9Db21wYXJlUHJpSW4pCisJfQorCWlmIHguQ29sb0NvbXBhcmVTZWNJ biAhPSAiIiB7CisJCXhjLmNvbG9fY29tcGFyZV9zZWNfaW4gPSBDLkNTdHJpbmcoeC5Db2xvQ29t cGFyZVNlY0luKQorCX0KKwlpZiB4LkNvbG9Db21wYXJlT3V0ICE9ICIiIHsKKwkJeGMuY29sb19j b21wYXJlX291dCA9IEMuQ1N0cmluZyh4LkNvbG9Db21wYXJlT3V0KQorCX0KKwlpZiB4LkNvbG9D b21wYXJlTm90aWZ5RGV2ICE9ICIiIHsKKwkJeGMuY29sb19jb21wYXJlX25vdGlmeV9kZXYgPSBD LkNTdHJpbmcoeC5Db2xvQ29tcGFyZU5vdGlmeURldikKKwl9CisJaWYgeC5Db2xvU29ja1NlY1Jl ZGlyZWN0b3IwSWQgIT0gIiIgeworCQl4Yy5jb2xvX3NvY2tfc2VjX3JlZGlyZWN0b3IwX2lkID0g Qy5DU3RyaW5nKHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMElkKQorCX0KKwlpZiB4LkNvbG9Tb2Nr U2VjUmVkaXJlY3RvcjBJcCAhPSAiIiB7CisJCXhjLmNvbG9fc29ja19zZWNfcmVkaXJlY3RvcjBf aXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1NlY1JlZGlyZWN0b3IwSXApCisJfQorCWlmIHguQ29s b1NvY2tTZWNSZWRpcmVjdG9yMFBvcnQgIT0gIiIgeworCQl4Yy5jb2xvX3NvY2tfc2VjX3JlZGly ZWN0b3IwX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1NlY1JlZGlyZWN0b3IwUG9ydCkKKwl9 CisJaWYgeC5Db2xvU29ja1NlY1JlZGlyZWN0b3IxSWQgIT0gIiIgeworCQl4Yy5jb2xvX3NvY2tf c2VjX3JlZGlyZWN0b3IxX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMUlk KQorCX0KKwlpZiB4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjFJcCAhPSAiIiB7CisJCXhjLmNvbG9f c29ja19zZWNfcmVkaXJlY3RvcjFfaXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1NlY1JlZGlyZWN0 b3IxSXApCisJfQorCWlmIHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMVBvcnQgIT0gIiIgeworCQl4 Yy5jb2xvX3NvY2tfc2VjX3JlZGlyZWN0b3IxX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1Nl Y1JlZGlyZWN0b3IxUG9ydCkKKwl9CisJaWYgeC5Db2xvRmlsdGVyU2VjUmVkaXJlY3RvcjBRdWV1 ZSAhPSAiIiB7CisJCXhjLmNvbG9fZmlsdGVyX3NlY19yZWRpcmVjdG9yMF9xdWV1ZSA9IEMuQ1N0 cmluZyh4LkNvbG9GaWx0ZXJTZWNSZWRpcmVjdG9yMFF1ZXVlKQorCX0KKwlpZiB4LkNvbG9GaWx0 ZXJTZWNSZWRpcmVjdG9yMEluZGV2ICE9ICIiIHsKKwkJeGMuY29sb19maWx0ZXJfc2VjX3JlZGly ZWN0b3IwX2luZGV2ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclNlY1JlZGlyZWN0b3IwSW5kZXYp CisJfQorCWlmIHguQ29sb0ZpbHRlclNlY1JlZGlyZWN0b3IwT3V0ZGV2ICE9ICIiIHsKKwkJeGMu Y29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IwX291dGRldiA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0 ZXJTZWNSZWRpcmVjdG9yME91dGRldikKKwl9CisJaWYgeC5Db2xvRmlsdGVyU2VjUmVkaXJlY3Rv cjFRdWV1ZSAhPSAiIiB7CisJCXhjLmNvbG9fZmlsdGVyX3NlY19yZWRpcmVjdG9yMV9xdWV1ZSA9 IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJTZWNSZWRpcmVjdG9yMVF1ZXVlKQorCX0KKwlpZiB4LkNv bG9GaWx0ZXJTZWNSZWRpcmVjdG9yMUluZGV2ICE9ICIiIHsKKwkJeGMuY29sb19maWx0ZXJfc2Vj X3JlZGlyZWN0b3IxX2luZGV2ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclNlY1JlZGlyZWN0b3Ix SW5kZXYpCisJfQorCWlmIHguQ29sb0ZpbHRlclNlY1JlZGlyZWN0b3IxT3V0ZGV2ICE9ICIiIHsK KwkJeGMuY29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IxX291dGRldiA9IEMuQ1N0cmluZyh4LkNv bG9GaWx0ZXJTZWNSZWRpcmVjdG9yMU91dGRldikKKwl9CisJaWYgeC5Db2xvRmlsdGVyU2VjUmV3 cml0ZXIwUXVldWUgIT0gIiIgeworCQl4Yy5jb2xvX2ZpbHRlcl9zZWNfcmV3cml0ZXIwX3F1ZXVl ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclNlY1Jld3JpdGVyMFF1ZXVlKQorCX0KKwlpZiB4LkNv bG9DaGVja3BvaW50SG9zdCAhPSAiIiB7CisJCXhjLmNvbG9fY2hlY2twb2ludF9ob3N0ID0gQy5D U3RyaW5nKHguQ29sb0NoZWNrcG9pbnRIb3N0KQorCX0KKwlpZiB4LkNvbG9DaGVja3BvaW50UG9y dCAhPSAiIiB7CisJCXhjLmNvbG9fY2hlY2twb2ludF9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb0No ZWNrcG9pbnRQb3J0KQorCX0KIAlyZXR1cm4geGMsIG5pbAogfQogCkBAIC0xNzA4LDcgKzE5NTIs OSBAQCBmdW5jICh4ICpEZXZpY2VVc2JjdHJsKSB0b0MoKSAoeGMgQy5saWJ4bF9kZXZpY2VfdXNi Y3RybCwgZXJyIGVycm9yKSB7CiAJeGMudmVyc2lvbiA9IEMuaW50KHguVmVyc2lvbikKIAl4Yy5w b3J0cyA9IEMuaW50KHguUG9ydHMpCiAJeGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQo eC5CYWNrZW5kRG9taWQpCi0JeGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2Vu ZERvbW5hbWUpCisJaWYgeC5CYWNrZW5kRG9tbmFtZSAhPSAiIiB7CisJCXhjLmJhY2tlbmRfZG9t bmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKQorCX0KIAlyZXR1cm4geGMsIG5pbAog fQogCkBAIC0xNzcyLDcgKzIwMTgsOSBAQCBmdW5jICh4ICpEZXZpY2VEdGRldikgZnJvbUMoeGMg KkMubGlieGxfZGV2aWNlX2R0ZGV2KSBlcnJvciB7CiAKIGZ1bmMgKHggKkRldmljZUR0ZGV2KSB0 b0MoKSAoeGMgQy5saWJ4bF9kZXZpY2VfZHRkZXYsIGVyciBlcnJvcikgewogCUMubGlieGxfZGV2 aWNlX2R0ZGV2X2luaXQoJnhjKQotCXhjLnBhdGggPSBDLkNTdHJpbmcoeC5QYXRoKQorCWlmIHgu UGF0aCAhPSAiIiB7CisJCXhjLnBhdGggPSBDLkNTdHJpbmcoeC5QYXRoKQorCX0KIAlyZXR1cm4g eGMsIG5pbAogfQogCkBAIC0xNzkwLDcgKzIwMzgsOSBAQCBmdW5jICh4ICpEZXZpY2VWdHBtKSBm cm9tQyh4YyAqQy5saWJ4bF9kZXZpY2VfdnRwbSkgZXJyb3IgewogZnVuYyAoeCAqRGV2aWNlVnRw bSkgdG9DKCkgKHhjIEMubGlieGxfZGV2aWNlX3Z0cG0sIGVyciBlcnJvcikgewogCUMubGlieGxf ZGV2aWNlX3Z0cG1faW5pdCgmeGMpCiAJeGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQo eC5CYWNrZW5kRG9taWQpCi0JeGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2Vu ZERvbW5hbWUpCisJaWYgeC5CYWNrZW5kRG9tbmFtZSAhPSAiIiB7CisJCXhjLmJhY2tlbmRfZG9t bmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKQorCX0KIAl4Yy5kZXZpZCA9IEMubGli eGxfZGV2aWQoeC5EZXZpZCkKIAl4Yy51dWlkLCBlcnIgPSB4LlV1aWQudG9DKCkKIAlpZiBlcnIg IT0gbmlsIHsKQEAgLTE4MTQsMTAgKzIwNjQsMTggQEAgZnVuYyAoeCAqRGV2aWNlUDkpIGZyb21D KHhjICpDLmxpYnhsX2RldmljZV9wOSkgZXJyb3IgewogZnVuYyAoeCAqRGV2aWNlUDkpIHRvQygp ICh4YyBDLmxpYnhsX2RldmljZV9wOSwgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF9kZXZpY2VfcDlf aW5pdCgmeGMpCiAJeGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNrZW5kRG9t aWQpCi0JeGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5hbWUpCi0J eGMudGFnID0gQy5DU3RyaW5nKHguVGFnKQotCXhjLnBhdGggPSBDLkNTdHJpbmcoeC5QYXRoKQot CXhjLnNlY3VyaXR5X21vZGVsID0gQy5DU3RyaW5nKHguU2VjdXJpdHlNb2RlbCkKKwlpZiB4LkJh Y2tlbmREb21uYW1lICE9ICIiIHsKKwkJeGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHgu QmFja2VuZERvbW5hbWUpCisJfQorCWlmIHguVGFnICE9ICIiIHsKKwkJeGMudGFnID0gQy5DU3Ry aW5nKHguVGFnKQorCX0KKwlpZiB4LlBhdGggIT0gIiIgeworCQl4Yy5wYXRoID0gQy5DU3RyaW5n KHguUGF0aCkKKwl9CisJaWYgeC5TZWN1cml0eU1vZGVsICE9ICIiIHsKKwkJeGMuc2VjdXJpdHlf bW9kZWwgPSBDLkNTdHJpbmcoeC5TZWN1cml0eU1vZGVsKQorCX0KIAl4Yy5kZXZpZCA9IEMubGli eGxfZGV2aWQoeC5EZXZpZCkKIAlyZXR1cm4geGMsIG5pbAogfQpAQCAtMTgzMyw3ICsyMDkxLDkg QEAgZnVuYyAoeCAqRGV2aWNlUHZjYWxsc2lmKSBmcm9tQyh4YyAqQy5saWJ4bF9kZXZpY2VfcHZj YWxsc2lmKSBlcnJvciB7CiBmdW5jICh4ICpEZXZpY2VQdmNhbGxzaWYpIHRvQygpICh4YyBDLmxp YnhsX2RldmljZV9wdmNhbGxzaWYsIGVyciBlcnJvcikgewogCUMubGlieGxfZGV2aWNlX3B2Y2Fs bHNpZl9pbml0KCZ4YykKIAl4Yy5iYWNrZW5kX2RvbWlkID0gQy5saWJ4bF9kb21pZCh4LkJhY2tl bmREb21pZCkKLQl4Yy5iYWNrZW5kX2RvbW5hbWUgPSBDLkNTdHJpbmcoeC5CYWNrZW5kRG9tbmFt ZSkKKwlpZiB4LkJhY2tlbmREb21uYW1lICE9ICIiIHsKKwkJeGMuYmFja2VuZF9kb21uYW1lID0g Qy5DU3RyaW5nKHguQmFja2VuZERvbW5hbWUpCisJfQogCXhjLmRldmlkID0gQy5saWJ4bF9kZXZp ZCh4LkRldmlkKQogCXJldHVybiB4YywgbmlsCiB9CkBAIC0xODcxLDkgKzIxMzEsMTMgQEAgZnVu YyAoeCAqRGV2aWNlQ2hhbm5lbENvbm5lY3Rpb25VbmlvblNvY2tldCkgZnJvbUMoeGMgKkMubGli eGxfZGV2aWNlX2NoYW5uZWwpIGUKIGZ1bmMgKHggKkRldmljZUNoYW5uZWwpIHRvQygpICh4YyBD LmxpYnhsX2RldmljZV9jaGFubmVsLCBlcnIgZXJyb3IpIHsKIAlDLmxpYnhsX2RldmljZV9jaGFu bmVsX2luaXQoJnhjKQogCXhjLmJhY2tlbmRfZG9taWQgPSBDLmxpYnhsX2RvbWlkKHguQmFja2Vu ZERvbWlkKQotCXhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1l KQorCWlmIHguQmFja2VuZERvbW5hbWUgIT0gIiIgeworCQl4Yy5iYWNrZW5kX2RvbW5hbWUgPSBD LkNTdHJpbmcoeC5CYWNrZW5kRG9tbmFtZSkKKwl9CiAJeGMuZGV2aWQgPSBDLmxpYnhsX2Rldmlk KHguRGV2aWQpCi0JeGMubmFtZSA9IEMuQ1N0cmluZyh4Lk5hbWUpCisJaWYgeC5OYW1lICE9ICIi IHsKKwkJeGMubmFtZSA9IEMuQ1N0cmluZyh4Lk5hbWUpCisJfQogCXhjLmNvbm5lY3Rpb24gPSBD LmxpYnhsX2NoYW5uZWxfY29ubmVjdGlvbih4LkNvbm5lY3Rpb24pCiAJc3dpdGNoIHguQ29ubmVj dGlvbiB7CiAJY2FzZSBDaGFubmVsQ29ubmVjdGlvblNvY2tldDoKQEAgLTE4ODMsNyArMjE0Nyw5 IEBAIGZ1bmMgKHggKkRldmljZUNoYW5uZWwpIHRvQygpICh4YyBDLmxpYnhsX2RldmljZV9jaGFu bmVsLCBlcnIgZXJyb3IpIHsKIAkJCXJldHVybiB4YywgZXJyb3JzLk5ldygid3JvbmcgdHlwZSBm b3IgdW5pb24ga2V5IGNvbm5lY3Rpb24iKQogCQl9CiAJCXZhciBzb2NrZXQgQy5saWJ4bF9kZXZp Y2VfY2hhbm5lbF9jb25uZWN0aW9uX3VuaW9uX3NvY2tldAotCQlzb2NrZXQucGF0aCA9IEMuQ1N0 cmluZyh0bXAuUGF0aCkKKwkJaWYgdG1wLlBhdGggIT0gIiIgeworCQkJc29ja2V0LnBhdGggPSBD LkNTdHJpbmcodG1wLlBhdGgpCisJCX0KIAkJc29ja2V0Qnl0ZXMgOj0gQy5Hb0J5dGVzKHVuc2Fm ZS5Qb2ludGVyKCZzb2NrZXQpLCBDLnNpemVvZl9saWJ4bF9kZXZpY2VfY2hhbm5lbF9jb25uZWN0 aW9uX3VuaW9uX3NvY2tldCkKIAkJY29weSh4Yy51WzpdLCBzb2NrZXRCeXRlcykKIAlkZWZhdWx0 OgpAQCAtMTkwMiw3ICsyMTY4LDkgQEAgZnVuYyAoeCAqQ29ubmVjdG9yUGFyYW0pIGZyb21DKHhj ICpDLmxpYnhsX2Nvbm5lY3Rvcl9wYXJhbSkgZXJyb3IgewogCiBmdW5jICh4ICpDb25uZWN0b3JQ YXJhbSkgdG9DKCkgKHhjIEMubGlieGxfY29ubmVjdG9yX3BhcmFtLCBlcnIgZXJyb3IpIHsKIAlD LmxpYnhsX2Nvbm5lY3Rvcl9wYXJhbV9pbml0KCZ4YykKLQl4Yy51bmlxdWVfaWQgPSBDLkNTdHJp bmcoeC5VbmlxdWVJZCkKKwlpZiB4LlVuaXF1ZUlkICE9ICIiIHsKKwkJeGMudW5pcXVlX2lkID0g Qy5DU3RyaW5nKHguVW5pcXVlSWQpCisJfQogCXhjLndpZHRoID0gQy51aW50MzJfdCh4LldpZHRo KQogCXhjLmhlaWdodCA9IEMudWludDMyX3QoeC5IZWlnaHQpCiAJcmV0dXJuIHhjLCBuaWwKQEAg LTE5MzAsNyArMjE5OCw5IEBAIGZ1bmMgKHggKkRldmljZVZkaXNwbCkgZnJvbUMoeGMgKkMubGli eGxfZGV2aWNlX3ZkaXNwbCkgZXJyb3IgewogZnVuYyAoeCAqRGV2aWNlVmRpc3BsKSB0b0MoKSAo eGMgQy5saWJ4bF9kZXZpY2VfdmRpc3BsLCBlcnIgZXJyb3IpIHsKIAlDLmxpYnhsX2RldmljZV92 ZGlzcGxfaW5pdCgmeGMpCiAJeGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNr ZW5kRG9taWQpCi0JeGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5h bWUpCisJaWYgeC5CYWNrZW5kRG9tbmFtZSAhPSAiIiB7CisJCXhjLmJhY2tlbmRfZG9tbmFtZSA9 IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKQorCX0KIAl4Yy5kZXZpZCA9IEMubGlieGxfZGV2 aWQoeC5EZXZpZCkKIAl4Yy5iZV9hbGxvYyA9IEMuYm9vbCh4LkJlQWxsb2MpCiAJaWYgbnVtQ29u bmVjdG9ycyA6PSBsZW4oeC5Db25uZWN0b3JzKTsgbnVtQ29ubmVjdG9ycyA+IDAgewpAQCAtMjAw OSw3ICsyMjc5LDkgQEAgZnVuYyAoeCAqVnNuZFN0cmVhbSkgZnJvbUMoeGMgKkMubGlieGxfdnNu ZF9zdHJlYW0pIGVycm9yIHsKIAogZnVuYyAoeCAqVnNuZFN0cmVhbSkgdG9DKCkgKHhjIEMubGli eGxfdnNuZF9zdHJlYW0sIGVyciBlcnJvcikgewogCUMubGlieGxfdnNuZF9zdHJlYW1faW5pdCgm eGMpCi0JeGMudW5pcXVlX2lkID0gQy5DU3RyaW5nKHguVW5pcXVlSWQpCisJaWYgeC5VbmlxdWVJ ZCAhPSAiIiB7CisJCXhjLnVuaXF1ZV9pZCA9IEMuQ1N0cmluZyh4LlVuaXF1ZUlkKQorCX0KIAl4 Yy5fdHlwZSA9IEMubGlieGxfdnNuZF9zdHJlYW1fdHlwZSh4LlR5cGUpCiAJeGMucGFyYW1zLCBl cnIgPSB4LlBhcmFtcy50b0MoKQogCWlmIGVyciAhPSBuaWwgewpAQCAtMjA0MCw3ICsyMzEyLDkg QEAgZnVuYyAoeCAqVnNuZFBjbSkgZnJvbUMoeGMgKkMubGlieGxfdnNuZF9wY20pIGVycm9yIHsK IAogZnVuYyAoeCAqVnNuZFBjbSkgdG9DKCkgKHhjIEMubGlieGxfdnNuZF9wY20sIGVyciBlcnJv cikgewogCUMubGlieGxfdnNuZF9wY21faW5pdCgmeGMpCi0JeGMubmFtZSA9IEMuQ1N0cmluZyh4 Lk5hbWUpCisJaWYgeC5OYW1lICE9ICIiIHsKKwkJeGMubmFtZSA9IEMuQ1N0cmluZyh4Lk5hbWUp CisJfQogCXhjLnBhcmFtcywgZXJyID0geC5QYXJhbXMudG9DKCkKIAlpZiBlcnIgIT0gbmlsIHsK IAkJQy5saWJ4bF92c25kX3BjbV9kaXNwb3NlKCZ4YykKQEAgLTIwODgsMTAgKzIzNjIsMTYgQEAg ZnVuYyAoeCAqRGV2aWNlVnNuZCkgZnJvbUMoeGMgKkMubGlieGxfZGV2aWNlX3ZzbmQpIGVycm9y IHsKIGZ1bmMgKHggKkRldmljZVZzbmQpIHRvQygpICh4YyBDLmxpYnhsX2RldmljZV92c25kLCBl cnIgZXJyb3IpIHsKIAlDLmxpYnhsX2RldmljZV92c25kX2luaXQoJnhjKQogCXhjLmJhY2tlbmRf ZG9taWQgPSBDLmxpYnhsX2RvbWlkKHguQmFja2VuZERvbWlkKQotCXhjLmJhY2tlbmRfZG9tbmFt ZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKQorCWlmIHguQmFja2VuZERvbW5hbWUgIT0g IiIgeworCQl4Yy5iYWNrZW5kX2RvbW5hbWUgPSBDLkNTdHJpbmcoeC5CYWNrZW5kRG9tbmFtZSkK Kwl9CiAJeGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpCi0JeGMuc2hvcnRfbmFtZSA9 IEMuQ1N0cmluZyh4LlNob3J0TmFtZSkKLQl4Yy5sb25nX25hbWUgPSBDLkNTdHJpbmcoeC5Mb25n TmFtZSkKKwlpZiB4LlNob3J0TmFtZSAhPSAiIiB7CisJCXhjLnNob3J0X25hbWUgPSBDLkNTdHJp bmcoeC5TaG9ydE5hbWUpCisJfQorCWlmIHguTG9uZ05hbWUgIT0gIiIgeworCQl4Yy5sb25nX25h bWUgPSBDLkNTdHJpbmcoeC5Mb25nTmFtZSkKKwl9CiAJeGMucGFyYW1zLCBlcnIgPSB4LlBhcmFt cy50b0MoKQogCWlmIGVyciAhPSBuaWwgewogCQlDLmxpYnhsX2RldmljZV92c25kX2Rpc3Bvc2Uo JnhjKQpAQCAtMjUwOSw5ICsyNzg5LDEzIEBAIGZ1bmMgKHggKkRpc2tpbmZvKSBmcm9tQyh4YyAq Qy5saWJ4bF9kaXNraW5mbykgZXJyb3IgewogCiBmdW5jICh4ICpEaXNraW5mbykgdG9DKCkgKHhj IEMubGlieGxfZGlza2luZm8sIGVyciBlcnJvcikgewogCUMubGlieGxfZGlza2luZm9faW5pdCgm eGMpCi0JeGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tlbmQpCisJaWYgeC5CYWNrZW5kICE9 ICIiIHsKKwkJeGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tlbmQpCisJfQogCXhjLmJhY2tl bmRfaWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElkKQotCXhjLmZyb250ZW5kID0gQy5DU3RyaW5n KHguRnJvbnRlbmQpCisJaWYgeC5Gcm9udGVuZCAhPSAiIiB7CisJCXhjLmZyb250ZW5kID0gQy5D U3RyaW5nKHguRnJvbnRlbmQpCisJfQogCXhjLmZyb250ZW5kX2lkID0gQy51aW50MzJfdCh4LkZy b250ZW5kSWQpCiAJeGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpCiAJeGMuc3RhdGUg PSBDLmludCh4LlN0YXRlKQpAQCAtMjUzNiw5ICsyODIwLDEzIEBAIGZ1bmMgKHggKk5pY2luZm8p IGZyb21DKHhjICpDLmxpYnhsX25pY2luZm8pIGVycm9yIHsKIAogZnVuYyAoeCAqTmljaW5mbykg dG9DKCkgKHhjIEMubGlieGxfbmljaW5mbywgZXJyIGVycm9yKSB7CiAJQy5saWJ4bF9uaWNpbmZv X2luaXQoJnhjKQotCXhjLmJhY2tlbmQgPSBDLkNTdHJpbmcoeC5CYWNrZW5kKQorCWlmIHguQmFj a2VuZCAhPSAiIiB7CisJCXhjLmJhY2tlbmQgPSBDLkNTdHJpbmcoeC5CYWNrZW5kKQorCX0KIAl4 Yy5iYWNrZW5kX2lkID0gQy51aW50MzJfdCh4LkJhY2tlbmRJZCkKLQl4Yy5mcm9udGVuZCA9IEMu Q1N0cmluZyh4LkZyb250ZW5kKQorCWlmIHguRnJvbnRlbmQgIT0gIiIgeworCQl4Yy5mcm9udGVu ZCA9IEMuQ1N0cmluZyh4LkZyb250ZW5kKQorCX0KIAl4Yy5mcm9udGVuZF9pZCA9IEMudWludDMy X3QoeC5Gcm9udGVuZElkKQogCXhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlkKQogCXhj LnN0YXRlID0gQy5pbnQoeC5TdGF0ZSkKQEAgLTI1NjYsOSArMjg1NCwxMyBAQCBmdW5jICh4ICpW dHBtaW5mbykgZnJvbUMoeGMgKkMubGlieGxfdnRwbWluZm8pIGVycm9yIHsKIAogZnVuYyAoeCAq VnRwbWluZm8pIHRvQygpICh4YyBDLmxpYnhsX3Z0cG1pbmZvLCBlcnIgZXJyb3IpIHsKIAlDLmxp YnhsX3Z0cG1pbmZvX2luaXQoJnhjKQotCXhjLmJhY2tlbmQgPSBDLkNTdHJpbmcoeC5CYWNrZW5k KQorCWlmIHguQmFja2VuZCAhPSAiIiB7CisJCXhjLmJhY2tlbmQgPSBDLkNTdHJpbmcoeC5CYWNr ZW5kKQorCX0KIAl4Yy5iYWNrZW5kX2lkID0gQy51aW50MzJfdCh4LkJhY2tlbmRJZCkKLQl4Yy5m cm9udGVuZCA9IEMuQ1N0cmluZyh4LkZyb250ZW5kKQorCWlmIHguRnJvbnRlbmQgIT0gIiIgewor CQl4Yy5mcm9udGVuZCA9IEMuQ1N0cmluZyh4LkZyb250ZW5kKQorCX0KIAl4Yy5mcm9udGVuZF9p ZCA9IEMudWludDMyX3QoeC5Gcm9udGVuZElkKQogCXhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4 LkRldmlkKQogCXhjLnN0YXRlID0gQy5pbnQoeC5TdGF0ZSkKQEAgLTI2MDUsOSArMjg5NywxMyBA QCBmdW5jICh4ICpVc2JjdHJsaW5mbykgdG9DKCkgKHhjIEMubGlieGxfdXNiY3RybGluZm8sIGVy ciBlcnJvcikgewogCXhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlkKQogCXhjLnZlcnNp b24gPSBDLmludCh4LlZlcnNpb24pCiAJeGMucG9ydHMgPSBDLmludCh4LlBvcnRzKQotCXhjLmJh Y2tlbmQgPSBDLkNTdHJpbmcoeC5CYWNrZW5kKQorCWlmIHguQmFja2VuZCAhPSAiIiB7CisJCXhj LmJhY2tlbmQgPSBDLkNTdHJpbmcoeC5CYWNrZW5kKQorCX0KIAl4Yy5iYWNrZW5kX2lkID0gQy51 aW50MzJfdCh4LkJhY2tlbmRJZCkKLQl4Yy5mcm9udGVuZCA9IEMuQ1N0cmluZyh4LkZyb250ZW5k KQorCWlmIHguRnJvbnRlbmQgIT0gIiIgeworCQl4Yy5mcm9udGVuZCA9IEMuQ1N0cmluZyh4LkZy b250ZW5kKQorCX0KIAl4Yy5mcm9udGVuZF9pZCA9IEMudWludDMyX3QoeC5Gcm9udGVuZElkKQog CXhjLnN0YXRlID0gQy5pbnQoeC5TdGF0ZSkKIAl4Yy5ldnRjaCA9IEMuaW50KHguRXZ0Y2gpCkBA IC0yNzI0LDcgKzMwMjAsOSBAQCBmdW5jICh4ICpDb25uZWN0b3JpbmZvKSBmcm9tQyh4YyAqQy5s aWJ4bF9jb25uZWN0b3JpbmZvKSBlcnJvciB7CiAKIGZ1bmMgKHggKkNvbm5lY3RvcmluZm8pIHRv QygpICh4YyBDLmxpYnhsX2Nvbm5lY3RvcmluZm8sIGVyciBlcnJvcikgewogCUMubGlieGxfY29u bmVjdG9yaW5mb19pbml0KCZ4YykKLQl4Yy51bmlxdWVfaWQgPSBDLkNTdHJpbmcoeC5VbmlxdWVJ ZCkKKwlpZiB4LlVuaXF1ZUlkICE9ICIiIHsKKwkJeGMudW5pcXVlX2lkID0gQy5DU3RyaW5nKHgu VW5pcXVlSWQpCisJfQogCXhjLndpZHRoID0gQy51aW50MzJfdCh4LldpZHRoKQogCXhjLmhlaWdo dCA9IEMudWludDMyX3QoeC5IZWlnaHQpCiAJeGMucmVxX2V2dGNoID0gQy5pbnQoeC5SZXFFdnRj aCkKQEAgLTI3NTgsOSArMzA1NiwxMyBAQCBmdW5jICh4ICpWZGlzcGxpbmZvKSBmcm9tQyh4YyAq Qy5saWJ4bF92ZGlzcGxpbmZvKSBlcnJvciB7CiAKIGZ1bmMgKHggKlZkaXNwbGluZm8pIHRvQygp ICh4YyBDLmxpYnhsX3ZkaXNwbGluZm8sIGVyciBlcnJvcikgewogCUMubGlieGxfdmRpc3BsaW5m b19pbml0KCZ4YykKLQl4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2VuZCkKKwlpZiB4LkJh Y2tlbmQgIT0gIiIgeworCQl4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2VuZCkKKwl9CiAJ eGMuYmFja2VuZF9pZCA9IEMudWludDMyX3QoeC5CYWNrZW5kSWQpCi0JeGMuZnJvbnRlbmQgPSBD LkNTdHJpbmcoeC5Gcm9udGVuZCkKKwlpZiB4LkZyb250ZW5kICE9ICIiIHsKKwkJeGMuZnJvbnRl bmQgPSBDLkNTdHJpbmcoeC5Gcm9udGVuZCkKKwl9CiAJeGMuZnJvbnRlbmRfaWQgPSBDLnVpbnQz Ml90KHguRnJvbnRlbmRJZCkKIAl4Yy5kZXZpZCA9IEMubGlieGxfZGV2aWQoeC5EZXZpZCkKIAl4 Yy5zdGF0ZSA9IEMuaW50KHguU3RhdGUpCkBAIC0yODUxLDkgKzMxNTMsMTMgQEAgZnVuYyAoeCAq VnNuZGluZm8pIGZyb21DKHhjICpDLmxpYnhsX3ZzbmRpbmZvKSBlcnJvciB7CiAKIGZ1bmMgKHgg KlZzbmRpbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF92c25kaW5mbywgZXJyIGVycm9yKSB7CiAJQy5s aWJ4bF92c25kaW5mb19pbml0KCZ4YykKLQl4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2Vu ZCkKKwlpZiB4LkJhY2tlbmQgIT0gIiIgeworCQl4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFj a2VuZCkKKwl9CiAJeGMuYmFja2VuZF9pZCA9IEMudWludDMyX3QoeC5CYWNrZW5kSWQpCi0JeGMu ZnJvbnRlbmQgPSBDLkNTdHJpbmcoeC5Gcm9udGVuZCkKKwlpZiB4LkZyb250ZW5kICE9ICIiIHsK KwkJeGMuZnJvbnRlbmQgPSBDLkNTdHJpbmcoeC5Gcm9udGVuZCkKKwl9CiAJeGMuZnJvbnRlbmRf aWQgPSBDLnVpbnQzMl90KHguRnJvbnRlbmRJZCkKIAl4Yy5kZXZpZCA9IEMubGlieGxfZGV2aWQo eC5EZXZpZCkKIAl4Yy5zdGF0ZSA9IEMuaW50KHguU3RhdGUpCkBAIC0yODg4LDkgKzMxOTQsMTMg QEAgZnVuYyAoeCAqVmtiaW5mbykgZnJvbUMoeGMgKkMubGlieGxfdmtiaW5mbykgZXJyb3Igewog CiBmdW5jICh4ICpWa2JpbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF92a2JpbmZvLCBlcnIgZXJyb3Ip IHsKIAlDLmxpYnhsX3ZrYmluZm9faW5pdCgmeGMpCi0JeGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4 LkJhY2tlbmQpCisJaWYgeC5CYWNrZW5kICE9ICIiIHsKKwkJeGMuYmFja2VuZCA9IEMuQ1N0cmlu Zyh4LkJhY2tlbmQpCisJfQogCXhjLmJhY2tlbmRfaWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElk KQotCXhjLmZyb250ZW5kID0gQy5DU3RyaW5nKHguRnJvbnRlbmQpCisJaWYgeC5Gcm9udGVuZCAh PSAiIiB7CisJCXhjLmZyb250ZW5kID0gQy5DU3RyaW5nKHguRnJvbnRlbmQpCisJfQogCXhjLmZy b250ZW5kX2lkID0gQy51aW50MzJfdCh4LkZyb250ZW5kSWQpCiAJeGMuZGV2aWQgPSBDLmxpYnhs X2RldmlkKHguRGV2aWQpCiAJeGMuc3RhdGUgPSBDLmludCh4LlN0YXRlKQpAQCAtMzA0Miw3ICsz MzUyLDkgQEAgZnVuYyAoeCAqRG9tYWluUmVtdXNJbmZvKSB0b0MoKSAoeGMgQy5saWJ4bF9kb21h aW5fcmVtdXNfaW5mbywgZXJyIGVycm9yKSB7CiAJCUMubGlieGxfZG9tYWluX3JlbXVzX2luZm9f ZGlzcG9zZSgmeGMpCiAJCXJldHVybiB4YywgZXJyCiAJfQotCXhjLm5ldGJ1ZnNjcmlwdCA9IEMu Q1N0cmluZyh4Lk5ldGJ1ZnNjcmlwdCkKKwlpZiB4Lk5ldGJ1ZnNjcmlwdCAhPSAiIiB7CisJCXhj Lm5ldGJ1ZnNjcmlwdCA9IEMuQ1N0cmluZyh4Lk5ldGJ1ZnNjcmlwdCkKKwl9CiAJeGMuZGlza2J1 ZiwgZXJyID0geC5EaXNrYnVmLnRvQygpCiAJaWYgZXJyICE9IG5pbCB7CiAJCUMubGlieGxfZG9t YWluX3JlbXVzX2luZm9fZGlzcG9zZSgmeGMpCkBAIC0zMTYzLDcgKzM0NzUsOSBAQCBmdW5jICh4 ICpFdmVudCkgdG9DKCkgKHhjIEMubGlieGxfZXZlbnQsIGVyciBlcnJvcikgewogCQkJcmV0dXJu IHhjLCBlcnJvcnMuTmV3KCJ3cm9uZyB0eXBlIGZvciB1bmlvbiBrZXkgdHlwZSIpCiAJCX0KIAkJ dmFyIGRpc2tfZWplY3QgQy5saWJ4bF9ldmVudF90eXBlX3VuaW9uX2Rpc2tfZWplY3QKLQkJZGlz a19lamVjdC52ZGV2ID0gQy5DU3RyaW5nKHRtcC5WZGV2KQorCQlpZiB0bXAuVmRldiAhPSAiIiB7 CisJCQlkaXNrX2VqZWN0LnZkZXYgPSBDLkNTdHJpbmcodG1wLlZkZXYpCisJCX0KIAkJZGlza19l amVjdC5kaXNrLCBlcnIgPSB0bXAuRGlzay50b0MoKQogCQlpZiBlcnIgIT0gbmlsIHsKIAkJCUMu bGlieGxfZXZlbnRfZGlzcG9zZSgmeGMpCi0tIAoyLjI0LjAKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs