From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id 4C0NK28jZWdaHAEAe85BDQ:P1 (envelope-from ) for ; Fri, 20 Dec 2024 07:57:35 +0000 Received: from aspmx1.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id 4C0NK28jZWdaHAEAe85BDQ (envelope-from ) for ; Fri, 20 Dec 2024 08:57:35 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=VmFzNLXJ; dkim=fail ("headers rsa verify failed") header.d=proton.me header.s=3qpem6dpbjgsrjbs7k7i6vwsfe.protonmail header.b=TAYogZAo; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1734681454; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=x+DlNk1+plEXGLFdlEXRZFEq5zAypsQVJ0CjzVeC0j8=; b=RDpebqyb2tF0B6AVzMNZYRM2UAe3kb7OKJmBm3Kr0ylMjJJEmX3y+FeCxOSmhWsy+vjf1W aV6vZGY2kcfribm8PAZGib+YUn+lbV9ZqVQMZ6sv9y+uoM4ewQDJ55Ccqzl9HIRHnlsbfB ux4CS6lVoWZwd4dn/Dedfbiz2NdBfdl5Ro3G+vXwNuJUNXfBbRVGn5/47PPD/D+nt41IeQ tq8uRbMeupYKv1q3d8B5OVdbtIrVVeWluIN2fOLwCW+fjpHnqrFljL9ZofJGyAqRXjH/uE W4oXLaYmVxka5+yazkghYkY2zOkO3a4dw7dbvXbagWfuRIl5NeHQ6HHVbhqliw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1734681454; a=rsa-sha256; cv=none; b=n/3jrn6KOArAK8rA7QHUmBKSc+uTP+3wDDE4oQ+Sgyajcec66qM8PifpJvBOkT9czLUq3g aSTUDiAjoxBUyWIU+ayntt08dp2qGvQH8OwOKeCXGG3ouFDPOgrGYCYPb4FitUMRERXszc FSOpvCms36OJEdRjm0mNl0kT7bUnejPnnZ/ez1EdznYX3wPM4pOERwoLUKYBOFRWYaZytT PkhHBoVxwozGV23LfNI6ZjOcTEbZhycaOsjCHl7JAYoZ1mvQFnR8DzWygV0zhweNlnRxly jbNnPsGp3QUQFTHjDzanqoqjY7KIKNJSls4mMdJ67LS5IBE2erRr6HsbY+gOQQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=VmFzNLXJ; dkim=fail ("headers rsa verify failed") header.d=proton.me header.s=3qpem6dpbjgsrjbs7k7i6vwsfe.protonmail header.b=TAYogZAo; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id EAB1B93DE9 for ; Fri, 20 Dec 2024 08:57:33 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tOXsi-0006Tx-AY; Fri, 20 Dec 2024 02:57:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tOXsc-0006TC-Se for guix-patches@gnu.org; Fri, 20 Dec 2024 02:57:04 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tOXsc-0002ol-Hg for guix-patches@gnu.org; Fri, 20 Dec 2024 02:57:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:From:Date:To:In-Reply-To:References:Subject; bh=x+DlNk1+plEXGLFdlEXRZFEq5zAypsQVJ0CjzVeC0j8=; b=VmFzNLXJYCclG3LjPSreXKgUTDnr+cArjnxddk8JKYpTUL5GtwzrWgHPUNG9MFB64EKTlUEECQzp+NvipoC2sLtmknmJur1qDhKiAt0Emkt7uPutKC8Y26v1hC8MLly3Zoe50rPOj0jyZ/O0OjobYCzPwwK4C+3dLEdbZr0JegjA270KEZFG7ykExaj+22ki08yWXWYiEQ9eUav+EAFmMHM4j8S1DjaHlk+918Cy15jIMK917MKw6cQsPxhpgMQs6issL79NMBI93s/2GUjBIK6kO+ECFUswMVLJF5kTbP7M4PdUn+OysWt98NOZwT5FKiOIE5IBOhx0d7LP+TPLjg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tOXsc-0001Yf-CI for guix-patches@gnu.org; Fri, 20 Dec 2024 02:57:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#74609] V2 series part 2 References: In-Reply-To: Resent-From: unmush Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 20 Dec 2024 07:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74609 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: "74609@debbugs.gnu.org" <74609@debbugs.gnu.org> Received: via spool by 74609-submit@debbugs.gnu.org id=B74609.17346813675902 (code B ref 74609); Fri, 20 Dec 2024 07:57:02 +0000 Received: (at 74609) by debbugs.gnu.org; 20 Dec 2024 07:56:07 +0000 Received: from localhost ([127.0.0.1]:41509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tOXrj-0001X8-Dz for submit@debbugs.gnu.org; Fri, 20 Dec 2024 02:56:07 -0500 Received: from mail-4325.protonmail.ch ([185.70.43.25]:13849) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tOVKt-00025h-Mg for 74609@debbugs.gnu.org; Fri, 20 Dec 2024 00:14:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=3qpem6dpbjgsrjbs7k7i6vwsfe.protonmail; t=1734671631; x=1734930831; bh=x+DlNk1+plEXGLFdlEXRZFEq5zAypsQVJ0CjzVeC0j8=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=TAYogZAoFUwpjqXFKWXpZy88+wjMGBxCYjj4hoV7npG0hO/eAxmjszvmjIb7pwrsg Or4Lflvj3qva9kAhbSdVpxRT9t8CkhQfZpYFZG2cbYeelO3YRoOxsxDwv2eQ6ZbBnZ tGWmQhUObWGn4J1FT/wihNika2L5uZ4KFvPO55BWr+kTaJD/OwkU596ZDsYZfef4k4 BDG7oo1K4JAyApNNqW7lPp57TeFD5hjDivGtod+4k6MzaIzwUZtMVwitIAP3RH0DGH 2Pde+iljxZ2Vb3cC51XrOPVGhJ04G0ankcXdoN3kMEJg9TcGJ6GvgRsDazbbdXUv64 t/V15AcDzd2nQ== Date: Fri, 20 Dec 2024 05:13:45 +0000 Message-ID: Feedback-ID: 126986417:user:proton X-Pm-Message-ID: e4aca61a1c97e973ecd832714068e5ce39163ddb MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc" X-Mailman-Approved-At: Fri, 20 Dec 2024 02:56:06 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: unmush X-ACL-Warn: , unmush via Guix-patches From: unmush via Guix-patches via Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Scanner: mx10.migadu.com X-Migadu-Spam-Score: -5.62 X-Spam-Score: -5.62 X-Migadu-Queue-Id: EAB1B93DE9 X-TUID: Ve/ZHu65Ie85 --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Here are the remaining patches --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0011-gnu-Add-mono-4.9.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0011-gnu-Add-mono-4.9.0.patch RnJvbSBhZjExM2Q2Yzk4ZTAyODU2NzgzZTliMmI2MWI5NjM3N2FkYzNmNDk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogVHVl LCAyNiBOb3YgMjAyNCAxMzoyNTowMApTdWJqZWN0OiBbUEFUQ0ggdjIgMTEvMjFdIGdudTogQWRk IG1vbm8tNC45LjAuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIChtb25vLTQuOS4wKTogTmV3 IHZhcmlhYmxlLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNC45LjAtZml4LXJ1bnRpbWVt ZXRhZGF0YXZlcnNpb24ucGF0Y2g6IE5ldyBwYXRjaC4KKiBnbnUvbG9jYWwubWsgKGRpc3RfcGF0 Y2hfREFUQSk6IHJlZ2lzdGVyIGl0LgoKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gICAgICAg ICAgICAgICAgICAgICAgIHwgMTI5ICsrKysrKysrKysrKysrKysrKwogLi4ub25vLTQuOS4wLWZp eC1ydW50aW1lbWV0YWRhdGF2ZXJzaW9uLnBhdGNoIHwgIDEzICsrCiAzIGZpbGVzIGNoYW5nZWQs IDE0MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNo ZXMvbW9uby00LjkuMC1maXgtcnVudGltZW1ldGFkYXRhdmVyc2lvbi5wYXRjaAoKZGlmZiAtLWdp dCBhL2dudS9sb2NhbC5tayBiL2dudS9sb2NhbC5tawppbmRleCA4YWViNDUzNmY1MS4uNjU3OTlh YzVlMTggMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsKQEAgLTE4 MjksNiArMTgyOSw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tb25vLTIuNC4yLjMtZml4ZXMucGF0Y2gJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRj aGVzL21vbm8tMi42LjQtZml4ZXMucGF0Y2gJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21v bm8tMi4xMS40LWZpeGVzLnBhdGNoCQkJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTQu OS4wLWZpeC1ydW50aW1lbWV0YWRhdGF2ZXJzaW9uLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9w YXRjaGVzL21vc2FpY2F0Y2hlci11bmJ1bmRsZS1odHNsaWIucGF0Y2gJXAogICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9tcnJlc2N1ZS1zdXBwb3J0LWxvdmUtMTEucGF0Y2gJCVwKICAgJUQlL3BhY2th Z2VzL3BhdGNoZXMvbXRvb2xzLW1mb3JtYXQtdW5pbml0aWFsaXplZC5wYXRjaAlcCmRpZmYgLS1n aXQgYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCmlu ZGV4IDUzNzVlYzQxMmUzLi4wMzNiOWQ5ZWM5ZiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2Rv dG5ldC5zY20KKysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTc1NSwzICs3NTUsMTMy IEBAIChkZWZpbmUtcHVibGljIG1vbm8tMy4xMi4xCiAgICAgICAgICAgICAgICAgOzsgZm9yIHNv bWUgcmVhc29uIGEgZGVmYXVsdCBpcyBvbmx5IHVzZWQgaWYgdGhpcyBpcyBlbXB0eSwgbm90CiAg ICAgICAgICAgICAgICAgOzsgaWYgaXQgaXMgdW5zZXQuCiAgICAgICAgICAgICAgICAgKHNldGVu diAiVFoiICIiKSkpKSkpKSkpCisKKyhkZWZpbmUgbW9uby00LjkuMC1leHRlcm5hbC1yZXBvLXNw ZWNzCisgIDs7IGZvcm1hdDogKHtyZXBvbmFtZSBPUiAocmVwb25hbWUgZGlyLW5hbWUpfSBjb21t aXQgc2hhMjU2KSAuLi4KKyAgJygoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAgICJlNzdi MTJlNmNjNWVkMjYwYTk4NDQ3ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZt cDNmczEyNjRkMnFrbW0zNDhtOGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgOzsgKCgicmVm ZXJlbmNlLWFzc2VtYmxpZXMiICJiaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgIDs7 ICAiNmM3NzE5NzMxOGZlODVkZmRkZjc1YTFiMzQ0YjliZjhkMDAwN2IwYiIKKyAgICA7OyAgIjEx aGJzOTUyc3JqbHNpeWluNzZ5MmxsbTVyZmprd2pjNjd5YTFpM3AwcHcxOTN6dzE0amsiKQorICAg IDs7IEFjY29yZGluZyB0byBnaXRodWIgZGVzY3JpcHRpb24gdGhpcyBpcyBhICJjdXN0b20iIGZv cmsgb2YgYm9yaW5nc3NsCisgICAgKCJib3Jpbmdzc2wiICAgICAgICAgICAgICAgICAgICAiYzA2 YWM2YjMzZDNlNzQ0MmFkODc4NDg4YjlkMTEwMDEyN2VmZjk5OCIKKyAgICAgIjE4N3pwaTFydmg5 aTZqZmNjd3pxcTMzN3J4eGkxcmdueTZtanE3OXIwOGRscmgwbHlkemMiKQorICAgICgiYnVpbGR0 b29scyIgICAgICAgICAgICAgICAgICAgIjliNmVlODY4NmJlNTVhOTgzZDg4NjkzODE2NWI2MjA2 Y2RhNTA3NzIiCisgICAgICIwc2p3M3N3YXZjbWlqeW5tYXhoNjQ3cXBranNiZ2loZHI4bGhreXpm OGRzcHJobHE0ZnhkIikKKyAgICAoImNlY2lsIiAgICAgICAgICAgICAgICAgICAgICAgICIyYjM5 ODU2ZTgwZDg1MTNmNzBiYzMyNDFlZDA1MzI1YjBkZTY3OWFlIgorICAgICAiMHZ2YXgzMnI2Ym5o dnJjdmlzODNnZHJkcWNneXhiNzA0aHoyOGc5cTB3bmF5NGtucXhkbSIpCisgICAgKCgiY2VjaWwi ICJjZWNpbC1sZWdhY3kiKSAgICAgICAiMzNkNTBiODc0ZmQ1MjcxMThiYzM2MWQ4M2RlM2Q0OTRl OGJiNTVlMSIKKyAgICAgIjFwNGhsMTc5NmliMjZ5a3lmNXNubDZjajBseDB2N21qaDB4cWhqdzZx ZGg3NTNuc2p5aGIiKQorICAgIDs7ICgiZGViaWFuLXNuYXBzaG90IiAgICAgICAgICAgICAgIjkz NDJmOGYwNTJmODFkZWFiYTc4OWYwMzBkYjIzYTg4YjQzNjk3MjQiCisgICAgOzsgICIiKQorICAg ICgiaWtkYXNtIiAgICAgICAgICAgICAgICAgICAgICAgImU0ZGVhYmY2MWMxMTk5OWYyMDBkY2Vh NmY2ZDZiNDI0NzRjYzIxMzEiCisgICAgICIxZnJiZjcweTduN2w3MmozOTNhdmRpd2s2MTUzY3Zm d3dwaWdoa2YybTQ2Y2xxbXE0aGFuIikKKyAgICAoKCJpa3ZtLWZvcmsiICJpa3ZtIikgICAgICAg ICAgICIzNjc4NjRlZjgxMDg1OWFlM2NlNjUyODY0MjMzYjM1ZjJkZDVmZGJlIgorICAgICAiMGln OTlrYm1hNHMwbXpiMTNuenNrMXZtMjAweWdmcjExcTZtemdoNmpqNDZzMmZjMzVweCIpCisgICAg KCJMdWNlbmUuTmV0LkxpZ2h0IiAgICAgICAgICAgICAiODU5NzhiN2ViOTQ3MzhmNTE2ODI0MzQx MjEzZDVlOTQwNjBmNTI4NCIKKyAgICAgIjBkMTE4aTUybTNhMHZmamhmY2k4MWEya2M0cXZuajIz Z3MwMmhydmRyZnBkMXE5MmZ5aWkiKQorICAgICgiTmV3dG9uc29mdC5Kc29uIiAgICAgICAgICAg ICAgIjQ3MWMzZTA4MDNhOWY0MGEwYWNjOGFlY2ViMzFkZTZmZjkzYTUyYzQiCisgICAgICIwZGdu Z2Q1aHFrNnlobGc0MGthYm42cWRua25tMzJ6Y3g5cTZibTJ3MzFjc25zazU5NzhzIikKKyAgICAo Im51Z2V0LWJ1aWxkdGFza3MiICAgICAgICAgICAgICIwNGJkYWI1NWQ4ZGU5ZWRjZjYyODY5NGNm ZDIwMDE1NjFlOGY4ZTYwIgorICAgICAiMW5rbHhheXhrZHNrZzV3bGZsNDRjbmR6cWtsMTh2NTYx cnowM2h3eDd3Ym41dzg5cTc3NSIpCisgICAgKCJudW5pdC1saXRlIiAgICAgICAgICAgICAgICAg ICAiNGJjNzlhNmRhMWYwZWU1Mzg1NjBiN2U0ZDBjYWZmNDZkM2M4NmU0ZiIKKyAgICAgIjA4NWZw YWJqdzQ3cm44aGI1enc2d2l6c2cyanJnZGJqOXJubGFyOWxybHM0MHdpZzI3MnEiKQorICAgICgi cngiICAgICAgICAgICAgICAgICAgICAgICAgICAgImIyOWE0YjBmZGE2MDllMGFmMzNmZjU0ZWQx MzY1MmI2Y2NmMGUwNWUiCisgICAgICIxbjFqd2htc2JrY3YyZDgwNmltbWNwemtiNzJyejA0eHk5 OG15dzM1NWE4dzVhaDI1eWl2IikpKQorCisoZGVmaW5lLXB1YmxpYyBtb25vLTQuOS4wCisgIChw YWNrYWdlCisgICAgKGluaGVyaXQgbW9uby0zLjEyLjEpCisgICAgKHZlcnNpb24gIjQuOS4wIikK KyAgICAobmFtZSAibW9ubyIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICht ZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpCisgICAgICAgICAgICAgICAoZ2l0 LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLndpbmVocS5v cmcvbW9uby9tb25vLmdpdCIpCisgICAgICAgICAgICAgICAgOzsgc29tZSBjb21taXQgY2hvc2Vu IGFmdGVyIGNvbmZpZ3VyZS5hYyB3YXMgdXBkYXRlZCB0byBtYWtlCisgICAgICAgICAgICAgICAg OzsgdGhlIHZlcnNpb24gPj0gNC45LjAKKyAgICAgICAgICAgICAgICAoY29tbWl0ICI1YTM3MzY2 MDZlNjI0M2QyYzg0ZDRkZjJjZjM1YzI4NDIxNGI4Y2M0IikpKQorICAgICAgICAgICAgICAoZmls ZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgIChzaGEy NTYKKyAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMHZxa2txa2Fxd2Jp aTRoZHpnMHZmZnl5MzFmejFrbW1zYTY3anlxd3hkc3ZncGpzemloMyIpKQorICAgICAgICAgICAg ICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAgICAgICAgICAgICAgICAg IChpY2UtOSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAgIChzbmlwcGV0ICN+KGJlZ2luCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vbm8tNC45LjAtZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICMkcHJlcGFyZS1tb25vLXNvdXJjZSkpCisgICAgICAg ICAgICAgIChwYXRjaGVzIChzZWFyY2gtcGF0Y2hlcworICAgICAgICAgICAgICAgICAgICAgICAg OzsgU2F2ZXMgdXMgYW4gZXh0cmEgaW50ZXJtZWRpYXRlIHN0ZXAKKyAgICAgICAgICAgICAgICAg ICAgICAgICJtb25vLTQuOS4wLWZpeC1ydW50aW1lbWV0YWRhdGF2ZXJzaW9uLnBhdGNoIikpKSkK KyAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRz IG1vbm8tMy4xMi4xKQorICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgIm1vbm8iIG1vbm8t My4xMi4xKQorICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0emRhdGEtZm9yLXRlc3RzKSkp CisgICAgKGFyZ3VtZW50cworICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3VtZW50cyAocGFj a2FnZS1hcmd1bWVudHMgbW9uby0zLjEyLjEpCisgICAgICAgKCgjOmNvbmZpZ3VyZS1mbGFncyBf ICNmKQorICAgICAgICA7OyAiRXh0ZXJuYWwgQm9laG0gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIg LSBJIFZJTEwgTk9UIHVzZSB0aGUKKyAgICAgICAgOzsgYnVuZGxlZCBzb2Z0d2FyZSEKKyAgICAg ICAgI34obGlzdCAiLS13aXRoLXNnZW49eWVzIgorICAgICAgICAgICAgICAgICItLWRpc2FibGUt Ym9laG0iCisgICAgICAgICAgICAgICAgIi0td2l0aC1jc2M9bWNzIikpCisgICAgICAgKCgjOnBo YXNlcyBwaGFzZXMgI34lc3RhbmRhcmQtcGhhc2VzKQorICAgICAgICAjfihtb2RpZnktcGhhc2Vz ICMkcGhhc2VzCisgICAgICAgICAgICAoYWRkLWJlZm9yZSAnY29uZmlndXJlICdzZXQtVFpESVIK KyAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG5hdGl2ZS1pbnB1dHMgaW5wdXRzICM6YWxs b3ctb3RoZXIta2V5cykKKyAgICAgICAgICAgICAgICAoc2VhcmNoLWlucHV0LWRpcmVjdG9yeSAo b3IgbmF0aXZlLWlucHV0cyBpbnB1dHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInNoYXJlL3pvbmVpbmZvIikpKQorICAgICAgICAgICAgKGFkZC1hZnRlciAndW5w YWNrICd1c2Utb2xkLW1vbm8tbGlicmFyaWVzCisgICAgICAgICAgICAgIDs7IEF0IHRoaXMgcG9p bnQgaW4gaGlzdG9yeSBtb25vIGhhZCBub3QsIHRvIG15IGtub3dsZWRnZSwKKyAgICAgICAgICAg ICAgOzsgZGVpZ25lZCB0byBncmFjZSB1cyB3aXRoIHRoZSBhY3R1YWwgc291cmNlcyB0byB0aGUg YmluYXJpZXMKKyAgICAgICAgICAgICAgOzsgc2hpcHBlZCBpbiBleHRlcm5hbC9iaW5hcnktcmVm ZXJlbmNlLWFzc2VtYmxpZXMsIHNvIGp1c3QgY29weQorICAgICAgICAgICAgICA7OyB0aGUgbGli cmFyaWVzIGZyb20gYW4gb2xkZXIgbW9ubyBmb3Igbm93IEkgZ3Vlc3MuCisgICAgICAgICAgICAg IChsYW1iZGEgXworICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAiLi9tY3MvY2xhc3MvcmVm ZXJlbmNlLWFzc2VtYmxpZXMvTWFrZWZpbGUiCisgICAgICAgICAgICAgICAgICAoKCJcXC5cXC4v XFwuXFwuL1xcLlxcLi9leHRlcm5hbC9iaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMvdiIpCisg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLW5hdGl2ZS1p bnB1dCAibW9ubyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9saWIvbW9u by8iKSkpKSkKKyAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnZGlzYWJsZS1NaWNyb3Nv ZnQuQnVpbGQuVGFza3MtdGVzdHMKKyAgICAgICAgICAgICAgKGxhbWJkYSBfCisgICAgICAgICAg ICAgICAgOzsgVGhlc2UgZmFpbCBmb3IgdW5rbm93biByZWFzb25zCisgICAgICAgICAgICAgICAg KHN1YnN0aXR1dGUqICJtY3MvY2xhc3MvTWljcm9zb2Z0LkJ1aWxkLlRhc2tzL01ha2VmaWxlIgor ICAgICAgICAgICAgICAgICAgKCgiXmluY2x1ZGUgLi4vLi4vYnVpbGQvbGlicmFyeS5tYWtlIiBh bGwpCisgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAgICAg ICAgYWxsCisgICAgICAgICAgICAgICAgICAgICJcbnJ1bi10ZXN0LXJlY3Vyc2l2ZTpcblx0QGVj aG8gc2tpcHBpbmcgdGVzdHNcbiIpKSkpKSkpKSkKKyAgICAobGljZW5zZSAobGlzdAorICAgICAg ICAgICAgICA7OyBtb3N0IG9mIG1jcy90b29scywgbW9uby9tYW4sIG1vc3Qgb2YgbWNzL2NsYXNz LCB0ZXN0cyBieQorICAgICAgICAgICAgICA7OyBkZWZhdWx0LCBtb25vL2VnbGliLCBtb25vL21l dGFkYXRhL3NnZW4qLAorICAgICAgICAgICAgICA7OyBtb25vL2FyY2gvKi9YWFgtY29kZWdlbi5o CisgICAgICAgICAgICAgIDs7IG1jcy9tY3MsIG1jcy9nbWNzIChkdWFsLWxpY2Vuc2VkIEdQTCkK KyAgICAgICAgICAgICAgOzsgc2FtcGxlcworICAgICAgICAgICAgICBsaWNlbnNlOngxMQorICAg ICAgICAgICAgICA7OyBtY3MvbWNzLCBtY3MvZ21jcyAoZHVhbC1saWNlbnNlZCBYMTEpCisgICAg ICAgICAgICAgIDs7IHNvbWUgb2YgbWNzL3Rvb2xzCisgICAgICAgICAgICAgIGxpY2Vuc2U6Z3Bs MSsgOzsgbm90ZTogLi9tY3MvTElDRU5TRS5HUEwgc3BlY2lmaWVzIG5vIHZlcnNpb24KKyAgICAg ICAgICAgICAgOzsgbW9uby9tb25vICh0aGUgbW9ubyBWTSwgSSB0aGluayB0aGV5IG1lYW50IG1v bm8vbWluaSkKKyAgICAgICAgICAgICAgOzsgbW9uby9zdXBwb3J0IChub3RlOiBkaXJlY3Rvcnkg ZG9lc24ndCBleGlzdCwgcHJvYmFibHkgbWVhbnQKKyAgICAgICAgICAgICAgOzsgLi9zdXBwb3J0 LCBidXQgdGhhdCBjb250YWlucyBhIGNvcHkgb2YgemxpYj8pCisgICAgICAgICAgICAgIGxpY2Vu c2U6bGdwbDIuMCsgOzsgbm90ZTogLi9tY3MvTElDRU5TRS5MR1BMIHNwZWNpZmllcyBubyB2ZXJz aW9uCisgICAgICAgICAgICAgIDs7IG1jcy9qYXksIG1vbm8vdXRpbHMvbWVtY2hlY2suaAorICAg ICAgICAgICAgICBsaWNlbnNlOmJzZC00CisgICAgICAgICAgICAgIDs7IG1vbm8vdXRpbHMvYnNl YXJjaC5jLCBtb25vL2lvLWxheWVyL3dhcGlfZ2xvYi57aCxjfQorICAgICAgICAgICAgICBsaWNl bnNlOmJzZC0zCisgICAgICAgICAgICAgIDs7IG1vbm8vdXRpbHMvZnJlZWJzZC17ZHdhcmYsZWxm X2NvbW1vbixlbGY2NCxlbGYzMn0uaAorICAgICAgICAgICAgICBsaWNlbnNlOmJzZC0yCisgICAg ICAgICAgICAgIDs7IG1jcy9jbGFzcy9TeXN0ZW0uQ29yZS9TeXN0ZW0vVGltZVpvbmVJbmZvLkFu ZHJvaWQuY3MKKyAgICAgICAgICAgICAgOzsgbWNzL2NsYXNzL1JhYmJpdE1RLkNsaWVudCAoZHVh bCBsaWNlbnNlZCBtcGwxLjEpCisgICAgICAgICAgICAgIGxpY2Vuc2U6YXNsMi4wCisgICAgICAg ICAgICAgIDs7IC4vc3VwcG9ydCwgY29udGFpbnMgYSBjb3B5IG9mIHpsaWIsIGluY2wuIC4vc3Vw cG9ydC9taW5pemlwCisgICAgICAgICAgICAgIGxpY2Vuc2U6emxpYgorICAgICAgICAgICAgICA7 OyBtb25vL2RvY3MvSHRtbEFnaWxpdHlQYWNrLCBtY3MvdW5pdDI0CisgICAgICAgICAgICAgIGxp Y2Vuc2U6bXMtcGwKKyAgICAgICAgICAgICAgOzsgbWNzL2NsYXNzL0kxOE4vbWtsaXN0LnNoLCBt b25vL2JlbmNobWFyay97emlwbWFyayxsb2dpY30uY3MKKyAgICAgICAgICAgICAgOzsgbWNzL2Ns YXNzL3ssQ29tcGF0Ln1JQ1NoYXJwQ29kZS5TaGFycFppcExpYgorICAgICAgICAgICAgICBsaWNl bnNlOmdwbDIrCisgICAgICAgICAgICAgIDs7IG1jcy9jbGFzcy9SYWJiaXRNUS5DbGllbnQgKGR1 YWwgbGljZW5zZWQgYXNsMi4wKQorICAgICAgICAgICAgICBsaWNlbnNlOm1wbDEuMQorICAgICAg ICAgICAgICA7OyBBUEkgRG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgICBsaWNlbnNlOmNjLWJ5 NC4wKSkpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgt cnVudGltZW1ldGFkYXRhdmVyc2lvbi5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t NC45LjAtZml4LXJ1bnRpbWVtZXRhZGF0YXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjNWJhZDlhZTEyCi0tLSAvZGV2L251bGwKKysrIGIvZ251 L3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgtcnVudGltZW1ldGFkYXRhdmVyc2lvbi5w YXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZmIC0tZ2l0IGEvbWNzL21jcy9zZXR0aW5ncy5jcyBi L21jcy9tY3Mvc2V0dGluZ3MuY3MKK2luZGV4IDEzOTNiY2Q1OGYzLi5hZjVmZWJlN2NmNiAxMDA2 NDQKKy0tLSBhL21jcy9tY3Mvc2V0dGluZ3MuY3MKKysrKyBiL21jcy9tY3Mvc2V0dGluZ3MuY3MK K0BAIC0xMTk3LDcgKzExOTcsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQl9Cisg CQkJCXJldHVybiBQYXJzZVJlc3VsdC5TdWNjZXNzOworIAorLQkJCWNhc2UgInJ1bnRpbWVtZXRh ZGF0YXZlcnNpb24iOgorKwkJCWNhc2UgIi9ydW50aW1lbWV0YWRhdGF2ZXJzaW9uIjoKKyAJCQkJ aWYgKHZhbHVlLkxlbmd0aCA9PSAwKSB7CisgCQkJCQlFcnJvcl9SZXF1aXJlc0FyZ3VtZW50IChv cHRpb24pOworIAkJCQkJcmV0dXJuIFBhcnNlUmVzdWx0LkVycm9yOwotLSAKMi40NS4yCgo= --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0012-gnu-Add-mono-5.0.1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0012-gnu-Add-mono-5.0.1.patch RnJvbSAxM2Y1NDE3MjQzMzJmMWU0MWM2YjUxNjkwY2MyY2M3ODQwNzllYjA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogVHVl LCAyNiBOb3YgMjAyNCAxMzoyNzoxNwpTdWJqZWN0OiBbUEFUQ0ggdjIgMTIvMjFdIGdudTogQWRk IG1vbm8tNS4wLjEuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCiAgKG1vbm8tNS4wLjEtZXh0 ZXJuYWwtcmVwby1zcGVjcywgbW9uby01LjAuMSk6IE5ldyB2YXJpYWJsZXMuCi0tLQogZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20gfCAxNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv Z251L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCAw MzNiOWQ5ZWM5Zi4uZmFmYzEwNjgyMmIgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQu c2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC04ODQsMyArODg0LDE0MyBAQCAo ZGVmaW5lLXB1YmxpYyBtb25vLTQuOS4wCiAgICAgICAgICAgICAgIGxpY2Vuc2U6bXBsMS4xCiAg ICAgICAgICAgICAgIDs7IEFQSSBEb2N1bWVudGF0aW9uCiAgICAgICAgICAgICAgIGxpY2Vuc2U6 Y2MtYnk0LjApKSkpCisKKyhkZWZpbmUgbW9uby01LjAuMS1leHRlcm5hbC1yZXBvLXNwZWNzCisg ICcoKCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4NDQ3 ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEyNjRkMnFrbW0zNDht OGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgOzsgc25pcHBldCBpbiB0aGUgYWN0dWFsIHBh Y2thZ2Ugd2lsbCBkZWxldGUgYWxsIGRsbHMgYW5kIGV4ZXMsIHNvIHRoaXMKKyAgICA7OyBzaG91 bGQgYmUgcmVidWlsdCBmcm9tIHNjcmF0Y2guCisgICAgKCgicmVmZXJlbmNlLWFzc2VtYmxpZXMi ICJiaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgICAiZmViYzEwMGYwMzEzZjBkYzlk NzVkZDFiY2VhNDVlODcxMzRiNWI1NSIKKyAgICAgIjBscGo5MTFtMmxxMjNyMjJkcHk0aTAyZnk0 eWtmMjdkeDhmdnFweHN4a255c2oyamw2eTQiKQorICAgICgiYm9ja2J1aWxkIiAgICAgICAgICAg ICAgICAgICAiNTEyYmE0MWE5NGJlYzM1ZmYwYzM5NWViNzFhMTgwZmRhMjNkYTk1YyIKKyAgICAg IjE2bTAwbGE4c3Z4OHYwN3N4eTR6eGJwcTBjYnE3ZDNuenk1M3c4a3FtbDhiMThoNWRhYmciKQor ICAgICgiYm9yaW5nc3NsIiAgICAgICAgICAgICAgICAgICAiYzA2YWM2YjMzZDNlNzQ0MmFkODc4 NDg4YjlkMTEwMDEyN2VmZjk5OCIKKyAgICAgIjE4N3pwaTFydmg5aTZqZmNjd3pxcTMzN3J4eGkx cmdueTZtanE3OXIwOGRscmgwbHlkemMiKQorICAgICgiYnVpbGR0b29scyIgICAgICAgICAgICAg ICAgICAiOWI2ZWU4Njg2YmU1NWE5ODNkODg2OTM4MTY1YjYyMDZjZGE1MDc3MiIKKyAgICAgIjBz anczc3dhdmNtaWp5bm1heGg2NDdxcGtqc2JnaWhkcjhsaGt5emY4ZHNwcmhscTRmeGQiKQorICAg ICgiY2VjaWwiICAgICAgICAgICAgICAgICAgICAgICAiNzgwMTUzNGRlMWJmZWQ5N2M4NDQ4MjFj MzI0NGUwNWZjN2ZmY2ZiOCIKKyAgICAgIjBkbWZ5emttNTduM2xiZ2xseDZmZno0Zzg0eDFzbGtp YjloYjRjZnAzbmh6ODUycWltN2IiKQorICAgICgoImNlY2lsIiAiY2VjaWwtbGVnYWN5IikgICAg ICAiMzNkNTBiODc0ZmQ1MjcxMThiYzM2MWQ4M2RlM2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFwNGhs MTc5NmliMjZ5a3lmNXNubDZjajBseDB2N21qaDB4cWhqdzZxZGg3NTNuc2p5aGIiKQorICAgICgi Y29yZWZ4IiAgICAgICAgICAgICAgICAgICAgICAiYmQ5NmFlNWYxNDg1YWU4NTQxZmU0NzZkZmQ5 NDRlZmRlNzZiY2Q5YyIKKyAgICAgIjBqNTFsYzU0ZG13YTRmem5hMnZqZmo0cGNkMWxrMXM1YnA1 ZGZpeDFhcWNuY3l6aXZhemkiKQorICAgICgiY29yZXJ0IiAgICAgICAgICAgICAgICAgICAgICAi ZDg3Yzk2NmQ4MGMxMjc0MzczZGRhZmUzMzc1YmYxNzMwY2Q0MzBlZCIKKyAgICAgIjA3OHY1a3M3 aW5tMmcxaGY5NngxOWs0MmpudjFxaGhoN3I4anhyZmM3ams0djRsZ21xeWYiKQorICAgICgiaWtk YXNtIiAgICAgICAgICAgICAgICAgICAgICAiZTRkZWFiZjYxYzExOTk5ZjIwMGRjZWE2ZjZkNmI0 MjQ3NGNjMjEzMSIKKyAgICAgIjFmcmJmNzB5N243bDcyajM5M2F2ZGl3azYxNTNjdmZ3d3BpZ2hr ZjJtNDZjbHFtcTRoYW4iKQorICAgICgoImlrdm0tZm9yayIgImlrdm0iKSAgICAgICAgICAiMzY3 ODY0ZWY4MTA4NTlhZTNjZTY1Mjg2NDIzM2IzNWYyZGQ1ZmRiZSIKKyAgICAgIjBpZzk5a2JtYTRz MG16YjEzbnpzazF2bTIwMHlnZnIxMXE2bXpnaDZqajQ2czJmYzM1cHgiKQorICAgICgibGlua2Vy IiAgICAgICAgICAgICAgICAgICAgICAiZTRkOTc4NGFjMzdiOWViZjQ3NTcxNzVjOTJiYzdhM2Vj OWZkODY3YSIKKyAgICAgIjBnYTdicjlscWRzeWN6MjJkbmRrYml3YmQwYzYwbWw2bmwyMnhsc25q cjdsd2RjY2ZqdmwiKQorICAgICgiTHVjZW5lLk5ldC5MaWdodCIgICAgICAgICAgICAiODU5Nzhi N2ViOTQ3MzhmNTE2ODI0MzQxMjEzZDVlOTQwNjBmNTI4NCIKKyAgICAgIjBkMTE4aTUybTNhMHZm amhmY2k4MWEya2M0cXZuajIzZ3MwMmhydmRyZnBkMXE5MmZ5aWkiKQorICAgICgiTmV3dG9uc29m dC5Kc29uIiAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZmOTNh NTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMnczMWNz bnNrNTk3OHMiKQorICAgICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1idWlsZHRhc2tzIikK KyAgICAgIjhkMzA3NDcyZWEyMTRmMmI1OTYzNjQzMWY3NzE4OTRkYmNiYTcyNTgiCisgICAgICIx aDFmcm5qMHg4azdiMjlpYzRqaXNjaDB2bHBtc21naGp3NTU0cHoyNzdmMm54YWlkbGpqIikKKyAg ICAoKCJOVW5pdExpdGUiICJudW5pdC1saXRlIikgICAgIjY5MDYwM2JlYTk4YWFlNjlmY2E5YTY1 MTMwZDg4NTkxYmM2Y2FiZWUiCisgICAgICIxZjg0NXlzanpzM3lkOWdjeXd3NjZkbmt4NDg0ejVm a25iOGwweHo3NHNqbXhrMm1uZ3djIikKKyAgICA7OyAoInJvc2x5bi1iaW5hcmllcyIgICAgICAg ICAgIjBkNDE5OGIxMjk5YmNiMDE5OTczNzQ5ZGE0ZDQ3ZTkwZjE1YTFlNDYiCisgICAgOzsgICIi KQorICAgICgicngiICAgICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRiMGZkYTYwOWUwYWYz M2ZmNTRlZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJkODA2aW1tY3B6a2I3 MnJ6MDR4eTk4bXl3MzU1YTh3NWFoMjV5aXYiKSkpCisKKyhkZWZpbmUtcHVibGljIG1vbm8tNS4w LjEKKyAgKHBhY2thZ2UKKyAgICAoaW5oZXJpdCBtb25vLTQuOS4wKQorICAgICh2ZXJzaW9uICI1 LjAuMSIpCisgICAgKG5hbWUgIm1vbm8iKQorICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAg ICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgKHVyaQorICAgICAgICAgICAg ICAgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGxhYi53 aW5laHEub3JnL21vbm8vbW9uby5naXQiKQorICAgICAgICAgICAgICAgIChjb21taXQgIm1vbm8t NS4wLjEuMSIpKSkKKyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1l IHZlcnNpb24pKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFzZTMy CisgICAgICAgICAgICAgICAgIjA1ejliZGRsanA4eHdzdzdxdzNmN2JpYzhpMjAyd3JjNjBwamI5 Zm40aWd3Zno5Mjc4bjUiKSkKKyAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCB1 dGlscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAg ICAgICAgICAgICAoc25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IyQoYWRkLWV4dGVybmFsLXJlcG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25v LTUuMC4xLWV4dGVybmFsLXJlcG8tc3BlY3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAj JEBwcmVwYXJlLW1vbm8tc291cmNlLTApKSkpCisgICAgKG5hdGl2ZS1pbnB1dHMgKG1vZGlmeS1p bnB1dHMgKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBtb25vLTQuOS4wKQorICAgICAgICAgICAgICAg ICAgICAgKHJlcGxhY2UgIm1vbm8iIG1vbm8tNC45LjApCisgICAgICAgICAgICAgICAgICAgICAo YXBwZW5kIGNtYWtlLW1pbmltYWwpKSkKKyAgICAoYXJndW1lbnRzCisgICAgIChzdWJzdGl0dXRl LWtleXdvcmQtYXJndW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50cyBtb25vLTQuOS4wKQorICAgICAg ICgoIzptYWtlLWZsYWdzIF8gI2YpCisgICAgICAgIDs7IEJ1aWxkIHN5c3RlbSBpcyBidWdneSBo ZXJlLCBpdCBkb2VzIHNvbWUgd2VpcmQgd2lsZGNhcmQgZXhwYW5zaW9uCisgICAgICAgIDs7IHRo YXQgYXNzdW1lcyB0aGVyZSdzIG9ubHkgYXQgbW9zdCBvbmUgZmlsZSBpbiBhIGRpcmVjdG9yeQor ICAgICAgICAjfihsaXN0ICJWPTEiICJTS0lQX0FPVD0xIikpCisgICAgICAgKCgjOnBoYXNlcyBw aGFzZXMgI34lc3RhbmRhcmQtcGhhc2VzKQorICAgICAgICAjfihtb2RpZnktcGhhc2VzICMkcGhh c2VzCisgICAgICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2Rpc2FibGUtcm9zbHluLWluc3Rh bGwKKyAgICAgICAgICAgICAgOzsgRm9yIHNvbWUgcmVhc29uIHRoZXJlIGlzIG5vIHByZWRlZmlu ZWQgd2F5IHRvIHBlcnN1YWRlIG1vbm8gdG8KKyAgICAgICAgICAgICAgOzsgbm90IGluc3RhbGwg dGhlIGJpbmFyeSBibG9icyBpdCBhc3N1bWVzIGFyZSB0aGVyZS4KKyAgICAgICAgICAgICAgKGxh bWJkYSBfCisgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICJtY3MvcGFja2FnZXMvTWFrZWZp bGUiCisgICAgICAgICAgICAgICAgICAoKCJeaW5zdGFsbC1sb2NhbDoiKQorICAgICAgICAgICAg ICAgICAgIChzdHJpbmctYXBwZW5kICJpbnN0YWxsLWxvY2FsOgorCWVjaG8gXCJTa2lwcGluZyBi bG9iIGluc3RhbGxcIgorCit1bnVzZWQwOiIpKSkpKQorICAgICAgICAgICAgKGRlbGV0ZSAndXNl LW9sZC1tb25vLWxpYnJhcmllcykKKyAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ2J1aWxkICdidWls ZC1yZWZlcmVuY2UtYXNzZW1ibGllcworICAgICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgbWFr ZS1mbGFncyBwYXJhbGxlbC1idWlsZD8gIzphbGxvdy1vdGhlci1rZXlzKQorICAgICAgICAgICAg ICAgIChsZXQgKCh0b3AgKGdldGN3ZCkpCisgICAgICAgICAgICAgICAgICAgICAgOzsgcGFyYWxs ZWwtYnVpbGQ/IG5lZWRzIHRvIGJlIGZhbHNlIGZvciBtb25vJ3MgYnVpbGQKKyAgICAgICAgICAg ICAgICAgICAgICA7OyBwaGFzZSwgYnV0IGl0IHNob3VsZCB3b3JrIGhlcmUuCisgICAgICAgICAg ICAgICAgICAgICAgKHBhcmFsbGVsLWJ1aWxkPyAjdCkpCisgICAgICAgICAgICAgICAgICAod2l0 aC1kaXJlY3RvcnktZXhjdXJzaW9uICJleHRlcm5hbC9iaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxp ZXMiCisgICAgICAgICAgICAgICAgICAgIDs7IE5vIGNsdWUgd2h5IGFsbCB0aGVzZSByZWZlcmVu Y2VzIGFyZSBtaXNzaW5nLCBqdXN0CisgICAgICAgICAgICAgICAgICAgIDs7IHBvd2VyIHRocm91 Z2ggSSBndWVzcy4KKyAgICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqIChmaW5kLWZpbGVz ICIuIiAiXk1ha2VmaWxlJCIpCisgICAgICAgICAgICAgICAgICAgICAgKCgiQ1NDX0NPTU1PTl9B UkdTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwg Ii1kZWxheXNpZ24rICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIklCTVxcLkRhdGFcXC5E QjJfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg YWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIk1vbm9cXC5EYXRh XFwuU3FsaXRlX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0 ZW1cXC5EYXRhXFwuRGF0YVNldEV4dGVuc2lvbnNfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAg ICAgICAgICAgICAgICgoIlN5c3RlbVxcLkRhdGFcXC5PcmFjbGVDbGllbnRfUkVGUyA6PSAiIGFs bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1s ICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLklkZW50aXR5TW9kZWxfUkVG UyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJT eXN0ZW0uQ29uZmlndXJhdGlvbiAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1c XC5EZXNpZ25fUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1h cHBlbmQgYWxsICJBY2Nlc3NpYmlsaXR5ICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5 c3RlbVxcLldlYlxcLkV4dGVuc2lvbnNcXC5EZXNpZ25fUkVGUyA6PSAiIGFsbCkKKyAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uV2luZG93cy5Gb3JtcyBT eXN0ZW0uV2ViICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLlNlcnZpY2VN b2RlbFxcLlJvdXRpbmdfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0 cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgo IlN5c3RlbVxcLldlYlxcLkFic3RyYWN0aW9uc19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSAiKSkKKyAgICAgICAgICAgICAg ICAgICAgICAoKCJTeXN0ZW1cXC5SZWFjdGl2ZVxcLldpbmRvd3NcXC5Gb3Jtc19SRUZTIDo9ICIg YWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSAi KSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5XaW5kb3dzXFwuRm9ybXNcXC5E YXRhVmlzdWFsaXphdGlvbl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZCBhbGwgIkFjY2Vzc2liaWxpdHkgIikpCisgICAgICAgICAgICAgICAgICAg ICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5TZXJ2aWNlTW9kZWxcXC5QcmltaXRpdmVzX1JFRlMgOj0g IiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVt LlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLkR5bmFt aWNcXC5SdW50aW1lX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJp bmctYXBwZW5kIGFsbCAiU3lzdGVtICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2Fk ZXMvU3lzdGVtXFwuWG1sXFwuWERvY3VtZW50X1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlJ1bnRpbWVcXC5TZXJpYWxpemF0aW9uLlht bF9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBh bGwgIlN5c3RlbS5YbWwgIikpKQorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgaW52b2tlICJt YWtlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgsQChpZiBwYXJhbGxlbC1idWlsZD8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgiLWoiICwobnVtYmVyLT5zdHJp bmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVs LWpvYi1jb3VudCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoc3RyaW5nLWFwcGVuZCAiQ1NDPU1PTk9fUEFU SD0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgIi9t Y3MvY2xhc3MvbGliL2J1aWxkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0b3AgIi9ydW50aW1lL21vbm8td3JhcHBlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdG9wICIvbWNzL2NsYXNzL2xpYi9idWlsZC9tY3MuZXhlIikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLEBtYWtlLWZsYWdzKSkpKSkpKSkpKSkpCi0tIAoyLjQ1LjIK Cg== --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0014-gnu-Add-mono-5.2.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0014-gnu-Add-mono-5.2.0.patch RnJvbSA2YzNhYWQ3MGJhNjU3NmZjNjEyOTY3ZTY4YTBkZjRjZGNjNWYzYWNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogVHVl LCAyNiBOb3YgMjAyNCAxMzozMzozOApTdWJqZWN0OiBbUEFUQ0ggdjIgMTQvMjFdIGdudTogQWRk IG1vbm8tNS4yLjAuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCiAgKG1vbm8tNS4yLjAtZXh0 ZXJuYWwtcmVwby1zcGVjcywgbW9uby01LjIuMCk6IE5ldyB2YXJpYWJsZXMuCgotLS0KIGdudS9w YWNrYWdlcy9kb3RuZXQuc2NtIHwgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv Z251L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCBl NzBhNmYwZTU1Zi4uYmYxNDE0MzY4YjMgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQu c2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0xMDkyLDMgKzEwOTIsNzAgQEAg KGRlZmluZS1wdWJsaWMgbW9uby01LjEuMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRA cHJlcGFyZS1tb25vLXNvdXJjZS0wKSkpKQogICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnktaW5w dXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjAuMSkKICAgICAgICAgICAgICAgICAg ICAgIChyZXBsYWNlICJtb25vIiBtb25vLTUuMC4xKSkpKSkKKworKGRlZmluZSBtb25vLTUuMi4w LWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAg ImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMzN2U0NGUyOTkiCisgICAgICIwcmtzMzQ0 cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3ejRsOTRpaWlyd24xZnExIikKKyAgICAoKCJy ZWZlcmVuY2UtYXNzZW1ibGllcyIgImJpbmFyeS1yZWZlcmVuY2UtYXNzZW1ibGllcyIpCisgICAg ICIxNDJjYmViNjJmZmFiZjFkZDljMTQxNGQ4ZGQ3NmY5M2JjYmVkMGMyIgorICAgICAiMXdrZDU4 OWhnYjE2bTV6dm1wOXliNTdhZ3l5cnlhYTFqajh2aGw0dzIwaTJocDIyd2FkOSIpCisgICAgKCJi b2NrYnVpbGQiICAgICAgICAgICAgICAgICAgICI0NWFhMTQyZmEzMjJmNWI0MTA1MWU3ZjQwMDA4 ZjAzMzQ2YTFlMTE5IgorICAgICAiMXNqbGd6aDNocTI1MWs3MjlhMXB4NzA3YzFxMmduZmF5Z2hn eDF6NXF5ZGRueWF4bmEyMCIpCisgICAgKCJib3Jpbmdzc2wiICAgICAgICAgICAgICAgICAgICIz ZTA3NzBlMTg4MzU3MTQ3MDg4NjBiYTlmZTFhZjA0YTkzMjk3MWZmIgorICAgICAiMTM5YTBnbDkx YTUyazJyNm5hNmlhbHprcXlrYWoxcms4OHpqcmthejNzZHh4N25tbWc2eSIpCisgICAgKCJidWls ZHRvb2xzIiAgICAgICAgICAgICAgICAgICJiNWNjNmU2YWI1ZjcxZjZjMGJlN2I3MzAwNThiNDI2 ZTkyNTI4NDc5IgorICAgICAiMGxkajVsNHA0cThqOWRoazBuaWZyM20waTY0Y3N2YjU2d2xjMnhk NHp5ODBzZmdtam4wNiIpCisgICAgKCJjZWNpbCIgICAgICAgICAgICAgICAgICAgICAgICIzNjJl MmJiMDBmYTY5M2QwNGMyZDE0MGE0Y2QzMTNlYjgyYzc4ZDk1IgorICAgICAiMGJ2YWF2bG5sZHJq YThpeGI2NmJnMzNrejA1OTUwdm01c2s0cHowazB6amdzcGZncGN2ZCIpCisgICAgKCgiY2VjaWwi ICJjZWNpbC1sZWdhY3kiKSAgICAgICIzM2Q1MGI4NzRmZDUyNzExOGJjMzYxZDgzZGUzZDQ5NGU4 YmI1NWUxIgorICAgICAiMXA0aGwxNzk2aWIyNnlreWY1c25sNmNqMGx4MHY3bWpoMHhxaGp3NnFk aDc1M25zanloYiIpCisgICAgKCJjb3JlZngiICAgICAgICAgICAgICAgICAgICAgICI3ODM2MGIy MmU3MWI3MGRlMWQ4Y2M5NTg4Y2I0ZWYwMDQwNDQ5YzMxIgorICAgICAiMXdyc3phZnlhcjdxMWNk ZmJhNjh4ZDZiNGQ1NHAzaWltMmN6bXhibG1zMXl3MTl5Y3FtNyIpCisgICAgKCJjb3JlcnQiICAg ICAgICAgICAgICAgICAgICAgICJlZDYyOTZkZmJiODhkNjZmMDg2MDFjMDEzY2FlZTMwYzg4YzQx YWZhIgorICAgICAiMTc5cTFhaXE0NGJ6ZGNrZzF4cW02aXd5eDgzNWNwNjE2MXc1dmdzZnJnYncw cDNraWR4ciIpCisgICAgKCJpa2Rhc20iICAgICAgICAgICAgICAgICAgICAgICI4OGI2N2M0MmNh OGI3ZDU4MTQxYzE3NmI0Njc0OTgxOWJmY2VmMTY2IgorICAgICAiMGIwYjFkaGc4MHI2NDBuODFp cWF3d2t4aTFrMjg5bjR6eGpmajBsZGQ5cmt2Znh2bHdhdyIpCisgICAgKCgiaWt2bS1mb3JrIiAi aWt2bSIpICAgICAgICAgICI3YzFlNjFiZWM4YzA2OWIyY2M5ZTIxNGMzMDk0YjE0N2Q3NmJiZjgy IgorICAgICAiMHZtYzVyNGo3NmhrZDR6aXMxNzY5cHBkbDFoMWw3ejhjbGQweTRwMW02NG44Nmdo a3pmbiIpCisgICAgKCJsaW5rZXIiICAgICAgICAgICAgICAgICAgICAgICJjNzQ1MGNhMjY2OWJl Y2RkZmZkZWE3ZGNkY2MwNjY5MmU1Nzk4OWUxIgorICAgICAiMHZkMXZ3NmhxbTFwMTI3bTYwNzlw OW40eHJja3JmNGlha3ZqNDFobnFmd3dzOTR3NW12MSIpCisgICAgKCJMdWNlbmUuTmV0LkxpZ2h0 IiAgICAgICAgICAgICI4NTk3OGI3ZWI5NDczOGY1MTY4MjQzNDEyMTNkNWU5NDA2MGY1Mjg0Igor ICAgICAiMGQxMThpNTJtM2EwdmZqaGZjaTgxYTJrYzRxdm5qMjNnczAyaHJ2ZHJmcGQxcTkyZnlp aSIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICI0NzFjM2UwODAzYTlmNDBh MGFjYzhhZWNlYjMxZGU2ZmY5M2E1MmM0IgorICAgICAiMGRnbmdkNWhxazZ5aGxnNDBrYWJuNnFk bmtubTMyemN4OXE2Ym0ydzMxY3Nuc2s1OTc4cyIpCisgICAgKCgiTnVHZXQuQnVpbGRUYXNrcyIg Im51Z2V0LWJ1aWxkdGFza3MiKQorICAgICAiOGQzMDc0NzJlYTIxNGYyYjU5NjM2NDMxZjc3MTg5 NGRiY2JhNzI1OCIKKyAgICAgIjFoMWZybmoweDhrN2IyOWljNGppc2NoMHZscG1zbWdoanc1NTRw ejI3N2YybnhhaWRsamoiKQorICAgICgoIk5Vbml0TGl0ZSIgIm51bml0LWxpdGUiKSAgICAiNjkw NjAzYmVhOThhYWU2OWZjYTlhNjUxMzBkODg1OTFiYzZjYWJlZSIKKyAgICAgIjFmODQ1eXNqenMz eWQ5Z2N5d3c2NmRua3g0ODR6NWZrbmI4bDB4ejc0c2pteGsybW5nd2MiKQorICAgIDs7ICgicm9z bHluLWJpbmFyaWVzIiAgICAgICAgICAiZGNiMGEwNTM0ZDUxMDRlYWY5NDVkM2QxZjMxOWRjMzMw NDRiN2JiZSIKKyAgICA7OyAgIiIpCisgICAgKCJyeCIgICAgICAgICAgICAgICAgICAgICAgICAg ICJiMjlhNGIwZmRhNjA5ZTBhZjMzZmY1NGVkMTM2NTJiNmNjZjBlMDVlIgorICAgICAiMW4xando bXNia2N2MmQ4MDZpbW1jcHprYjcycnowNHh5OThteXczNTVhOHc1YWgyNXlpdiIpCisgICAgOzsg KCJ4dW5pdC1iaW5hcmllcyIgICAgICAgICAgICJiOGUyMGQyNjViMzY4ZGQ2MjUyNzAzZDVhZmQw MzhkMGIwMjhlMzg4IgorICAgIDs7ICAiIikKKyAgICApKQorCisoZGVmaW5lLXB1YmxpYyBtb25v LTUuMi4wCisgIChwYWNrYWdlCisgICAgKGluaGVyaXQgbW9uby01LjEuMCkKKyAgICAodmVyc2lv biAiNS4yLjAuMjI0IikKKyAgICAobmFtZSAibW9ubyIpCisgICAgKHNvdXJjZSAob3JpZ2luCisg ICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpCisgICAg ICAgICAgICAgICAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8v Z2l0bGFiLndpbmVocS5vcmcvbW9uby9tb25vLmdpdCIpCisgICAgICAgICAgICAgICAgKGNvbW1p dCAibW9uby01LjIuMC4yMjQiKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxl LW5hbWUgbmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAg ICAgKGJhc2UzMgorICAgICAgICAgICAgICAgICIwenNnZnF5amtwaXgwNWd2Z3ZocXl5cWN3Y2pw NXhsdmN5djQ3MXEzMnFmMzA3ZGNjYmZhIikpCisgICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1 aXggYnVpbGQgdXRpbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1m dW4pKSkKKyAgICAgICAgICAgICAgKHNuaXBwZXQgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICMkKGFkZC1leHRlcm5hbC1yZXBvcworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbW9uby01LjIuMC1leHRlcm5hbC1yZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyRAcHJlcGFyZS1tb25vLXNvdXJjZS0wKSkpKQorICAgIChuYXRpdmUtaW5wdXRz IChtb2RpZnktaW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjEuMCkKKyAgICAg ICAgICAgICAgICAgICAgIChyZXBsYWNlICJtb25vIiBtb25vLTUuMS4wKSkpKSkKLS0gCjIuNDUu MgoK --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0017-gnu-Add-mono-5.8.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0017-gnu-Add-mono-5.8.0.patch RnJvbSAwNjZhNDAzNWNlMjg1ZThmN2ZiMzA1NzdiMzE0M2E5MjFhNTI2Nzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogV2Vk LCAyNyBOb3YgMjAyNCAwMDo0NzowOQpTdWJqZWN0OiBbUEFUQ0ggdjIgMTcvMjFdIGdudTogQWRk IG1vbm8tNS44LjAuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCiAgKG1vbm8tNS44LjAtZXh0 ZXJuYWwtcmVwby1zcGVjcywgbW9uby01LjguMCk6IE5ldyB2YXJpYWJsZXMuCiogZ251L3BhY2th Z2VzL3BhdGNoZXMvbW9uby01LjguMC1wYXRjaGVzLnBhdGNoOiBOZXcgcGF0Y2guCiogZ251L2xv Y2FsLm1rIChkaXN0X3BhdGNoX0RBVEEpOiBSZWdpc3RlciBuZXcgcGF0Y2guCi0tLQogZ251L2xv Y2FsLm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGdudS9wYWNr YWdlcy9kb3RuZXQuc2NtICAgICAgICAgICAgICAgICAgICAgICB8IDEzMCArKysrKysrKysrKysr KysrKysKIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS44LjAtcGF0Y2hlcy5wYXRjaCB8ICA2 MCArKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS44LjAtcGF0Y2hlcy5wYXRjaAoK ZGlmZiAtLWdpdCBhL2dudS9sb2NhbC5tayBiL2dudS9sb2NhbC5tawppbmRleCAyYTVjZWNhZWZl NC4uNzEwZDZkMGE1NjggMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwu bWsKQEAgLTE4MzMsNiArMTgzMyw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUv cGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuMTEuNC1maXhlcy5wYXRjaAkJCVwKICAgJUQlL3BhY2th Z2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgtcnVudGltZW1ldGFkYXRhdmVyc2lvbi5wYXRjaAkJ XAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2gJCVwKKyAg JUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjguMC1wYXRjaGVzLnBhdGNoCQlcCiAgICVEJS9w YWNrYWdlcy9wYXRjaGVzL21vc2FpY2F0Y2hlci11bmJ1bmRsZS1odHNsaWIucGF0Y2gJXAogICAl RCUvcGFja2FnZXMvcGF0Y2hlcy9tcnJlc2N1ZS1zdXBwb3J0LWxvdmUtMTEucGF0Y2gJCVwKICAg JUQlL3BhY2thZ2VzL3BhdGNoZXMvbXRvb2xzLW1mb3JtYXQtdW5pbml0aWFsaXplZC5wYXRjaAlc CmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3Ru ZXQuc2NtCmluZGV4IDA5MGRiMWU4ZThlLi4wOGYxMDg2YTVjMCAxMDA2NDQKLS0tIGEvZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20KKysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTEzMzAs MyArMTMzMCwxMzMgQEAgKGRlZmluZS1wdWJsaWMgbW9uby1wcmUtNS44LjAKICAgICAgICAgICgo IzpwaGFzZXMgcGhhc2VzICN+JXN0YW5kYXJkLXBoYXNlcykKICAgICAgICAgICAjfihtb2RpZnkt cGhhc2VzICMkcGhhc2VzCiAgICAgICAgICAgICAgIChkZWxldGUgJ3BhdGNoLXN1Yi1hdXRvZ2Vu LnNoLXNoZWJhbmcpKSkpKSkpKQorCisoZGVmaW5lIG1vbm8tNS44LjAtZXh0ZXJuYWwtcmVwby1z cGVjcworICAnKCgiYXBpLWRvYy10b29scyIgICAgICAgICAgICAgICAiZDAzZTgxOTgzOGM2MjQx ZjkyZjkwNjU1Y2I0NDhjYzQ3YzllODc5MSIKKyAgICAgIjFyaWtpNzlmM2lnM2N4aWd2aXNzODFk ejYwMWhuOTJhMWdpZmdsbTBtempiczc2c2YzZmoiCisgICAgICM6cmVjdXJzaXZlPyAjdCkKKyAg ICAoImFwaS1zbmFwc2hvdCIgICAgICAgICAgICAgICAgIjY2NjhjODBhOTQ5OTIxOGMwYjhjYzQx ZjQ4YTllMjQyNTg3ZGY3NTYiCisgICAgICIwdmJ3YndhMWhyNGpsajcyODN3OGJrM3Y1aThzNDNo ODQxM3IycGtoNGhmMzhiMnJrczdkIikKKyAgICAoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAg ICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMzN2U0NGUyOTkiCisgICAgICIwcmtz MzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3ejRsOTRpaWlyd24xZnExIikKKyAgICAo KCJyZWZlcmVuY2UtYXNzZW1ibGllcyIgImJpbmFyeS1yZWZlcmVuY2UtYXNzZW1ibGllcyIpCisg ICAgICJlMDQ4ZmU0YTg4ZDIzN2QxMDVhZTAyZmUwMzYzYTY4Mjk2MDk5MzYyIgorICAgICAiMGk4 N2kzeDY5NGY0ZzhzMmZsZmx2MGFoODhibHhkczdnYml5cndybXNjcWRqc2lmaHk0OSIpCisgICAg KCJib2NrYnVpbGQiICAgICAgICAgICAgICAgICAgICJjYjQ1NDU0MDlkYWZlMTZkZmU4NmM3ZDhl NjU0OGE2OWMzNjllMmEyIgorICAgICAiMHN2ZGZ2NjFkNnBwd2Q0emdraTEyOXI5cHJmNzVmbnNx aWhuYTI1M3pmd2ZwenBpbmd4NyIpCisgICAgKCJib3Jpbmdzc2wiICAgICAgICAgICAgICAgICAg ICIzZTA3NzBlMTg4MzU3MTQ3MDg4NjBiYTlmZTFhZjA0YTkzMjk3MWZmIgorICAgICAiMTM5YTBn bDkxYTUyazJyNm5hNmlhbHprcXlrYWoxcms4OHpqcmthejNzZHh4N25tbWc2eSIpCisgICAgKCJj ZWNpbCIgICAgICAgICAgICAgICAgICAgICAgICI3NmZmY2RhYmFlNjYwZTk1ODYyNzNjOWI0MGRi MTgwYTBkYzhkNGM4IgorICAgICAiMGYzYnNmcmkyOHB4bW5iMG02MDc0Ym5tbWpnc3I3Y2ppeHY5 ZmhucDZhaW1odnk0bDVwNCIpCisgICAgKCgiY2VjaWwiICJjZWNpbC1sZWdhY3kiKSAgICAgICIz M2Q1MGI4NzRmZDUyNzExOGJjMzYxZDgzZGUzZDQ5NGU4YmI1NWUxIgorICAgICAiMXA0aGwxNzk2 aWIyNnlreWY1c25sNmNqMGx4MHY3bWpoMHhxaGp3NnFkaDc1M25zanloYiIpCisgICAgKCJjb3Jl ZngiICAgICAgICAgICAgICAgICAgICAgICJiOTY1ZDFmOGI1MjgxNzEyYzQ0MDBlZjI4ZWQ5NzY3 MGZmZDQ4ODBkIgorICAgICAiMHI5aHIwYnMzajNhZ3FpMnBxNG4xa205amZ5Y2FxdnhmNjc1Nnk3 cjVsM3lrcXNkNndzciIpCisgICAgKCJjb3JlcnQiICAgICAgICAgICAgICAgICAgICAgICI0OGRi YTczODAxZTgwNGU4OWYwMDMxMWRhOTlkODczZjljNTUwMjc4IgorICAgICAiMXp3NDdqZjRjd3Ft YWl4eWxpc3hpNzN4ZjZjYXA0MWJ3Zjl2bG1weGFuenhhcWtsenN2ayIpCisgICAgKCJpa2Rhc20i ICAgICAgICAgICAgICAgICAgICAgICI0NjVjMDgxNTU1OGZkNDNjMDExMGY4ZDAwZmMxODZhYzAw NDRhYzZhIgorICAgICAiMHhpcjdwY2dxMDRoYjdzOGc5d3NxZHJ5cGI2bDI5cmFqM2l6NXJjcXpk bTAwNTZrNzV3MiIpCisgICAgKCgiaWt2bS1mb3JrIiAiaWt2bSIpICAgICAgICAgICI4NDdlMDVm Y2VkNWM5YTQxZmYwZjI0ZjFmOWQ0MGQ1YThhNTc3MmMxIgorICAgICAiMWZsOWJtM2xtemY4aXF2 M3g0aXFrejlmYzU0bXdkdnJ4aXN4ZzJudnd3Y3NpNHNhZmZwaSIpCisgICAgKCJsaW5rZXIiICAg ICAgICAgICAgICAgICAgICAgICJjNjIzMzVjMzUwZjM5MDJmZjA0NTkxMTJmN2VmYzhiOTI2ZjRm MTVkIgorICAgICAiMDE1MTkxc2R3OWk3dm5obHN5Y3Y2NXB3OG5uZnBrZDY1azExancxeTliaWti NHgzYWo4eCIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICI0NzFjM2UwODAz YTlmNDBhMGFjYzhhZWNlYjMxZGU2ZmY5M2E1MmM0IgorICAgICAiMGRnbmdkNWhxazZ5aGxnNDBr YWJuNnFkbmtubTMyemN4OXE2Ym0ydzMxY3Nuc2s1OTc4cyIpCisgICAgKCgiTnVHZXQuQnVpbGRU YXNrcyIgIm51Z2V0LWJ1aWxkdGFza3MiKQorICAgICAiYjJjMzBiYzgxYjJhNzczM2E0ZWViMjUy YTU1ZjZiNGQ1MGNmYzNhMSIKKyAgICAgIjAxdmFqcmZ4NnkxMmY1MjV4ZGl3ZmJuOXF6bXltMnM2 NXJiaXFweTlkOXh3MHBucTdnYmwiKQorICAgICgoIk5Vbml0TGl0ZSIgIm51bml0LWxpdGUiKSAg ICAiNzY0NjU2Y2RhZmRiM2FjZDI1ZGY4Y2I1MmE0ZTBlYTE0NzYwZmNjZCIKKyAgICAgIjBwYzds azNwOTE2aXM4Y240bmdhcXZqbG1senYzdnZqcHlrc3k0cHZiM3FiNWlpYXcwdnEiKQorICAgIDs7 ICgicm9zbHluLWJpbmFyaWVzIiAgICAgICAgICAiZTQ4NGM3NWUyZWRkM2MzZjE4NzBhMjQ2OGE3 MWE1NjIyMGNmMWY3ZiIKKyAgICA7OyAgIiIpCisgICAgKCJyeCIgICAgICAgICAgICAgICAgICAg ICAgICAgICJiMjlhNGIwZmRhNjA5ZTBhZjMzZmY1NGVkMTM2NTJiNmNjZjBlMDVlIgorICAgICAi MW4xandobXNia2N2MmQ4MDZpbW1jcHprYjcycnowNHh5OThteXczNTVhOHc1YWgyNXlpdiIpCisg ICAgOzsgKCJ4dW5pdC1iaW5hcmllcyIgICAgICAgICAgICJkNDQzM2IwOTcyZjQwY2IzZWZhYTNm YmJhNTI4NjliZGU1ZGY4ZmE4IgorICAgIDs7ICAiIikKKyAgICApKQorCisoZGVmaW5lLXB1Ymxp YyBtb25vLTUuOC4wCisgIChwYWNrYWdlCisgICAgKGluaGVyaXQgbW9uby1wcmUtNS44LjApCisg ICAgKHZlcnNpb24gIjUuOC4wLjEyOSIpCisgICAgKG5hbWUgIm1vbm8iKQorICAgIChzb3VyY2Ug KG9yaWdpbgorICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAg KHVyaQorICAgICAgICAgICAgICAgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAodXJs ICJodHRwczovL2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9uby5naXQiKQorICAgICAgICAgICAg ICAgIChjb21taXQgIm1vbm8tNS44LjAuMTI5IikpKQorICAgICAgICAgICAgICAoZmlsZS1uYW1l IChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgIChzaGEyNTYKKyAg ICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMDEzMHZkMzN5enA0dzc1NzBx dzl4anEyZzdiMnhtYWNqYnBrbXpycGJoeThhczVoeTR6NiIpKQorICAgICAgICAgICAgICAobW9k dWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpY2Ut OSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAgIChzbmlwcGV0ICN+KGJlZ2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1vbm8tNS44LjAtZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpCisgICAgICAgICAg ICAgIChwYXRjaGVzCisgICAgICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1vbm8tNS44LjAt cGF0Y2hlcy5wYXRjaCIpKSkpCisgICAgKG5hdGl2ZS1pbnB1dHMgKG1vZGlmeS1pbnB1dHMgKHBh Y2thZ2UtbmF0aXZlLWlucHV0cyBtb25vLXByZS01LjguMCkKKyAgICAgICAgICAgICAgICAgICAg IChyZXBsYWNlICJtb25vIiBtb25vLXByZS01LjguMCkpKQorICAgIChhcmd1bWVudHMKKyAgICAg KHN1YnN0aXR1dGUta2V5d29yZC1hcmd1bWVudHMgKHBhY2thZ2UtYXJndW1lbnRzIG1vbm8tcHJl LTUuOC4wKQorICAgICAgICgoIzpwaGFzZXMgcGhhc2VzICN+JXN0YW5kYXJkLXBoYXNlcykKKyAg ICAgICAgI34obW9kaWZ5LXBoYXNlcyAjJHBoYXNlcworICAgICAgICAgICAgKHJlcGxhY2UgJ2J1 aWxkLXJlZmVyZW5jZS1hc3NlbWJsaWVzCisgICAgICAgICAgICAgIDs7IE1vcmUgcmVmZXJlbmNl cyBuZWVkIHVwZGF0aW5nIHRoaXMgdGltZS4uLgorICAgICAgICAgICAgICAobGFtYmRhKiAoIzpr ZXkgbWFrZS1mbGFncyBwYXJhbGxlbC1idWlsZD8gIzphbGxvdy1vdGhlci1rZXlzKQorICAgICAg ICAgICAgICAgIChsZXQgKCh0b3AgKGdldGN3ZCkpCisgICAgICAgICAgICAgICAgICAgICAgOzsg cGFyYWxsZWwtYnVpbGQ/IG5lZWRzIHRvIGJlIGZhbHNlIGZvciBtb25vJ3MgYnVpbGQKKyAgICAg ICAgICAgICAgICAgICAgICA7OyBwaGFzZSwgYnV0IGl0IHNob3VsZCB3b3JrIGhlcmUuCisgICAg ICAgICAgICAgICAgICAgICAgKHBhcmFsbGVsLWJ1aWxkPyAjdCkpCisgICAgICAgICAgICAgICAg ICAod2l0aC1kaXJlY3RvcnktZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgImV4dGVy bmFsL2JpbmFyeS1yZWZlcmVuY2UtYXNzZW1ibGllcyIKKyAgICAgICAgICAgICAgICAgICAgKHN1 YnN0aXR1dGUqIChmaW5kLWZpbGVzICIuIiAiXk1ha2VmaWxlJCIpCisgICAgICAgICAgICAgICAg ICAgICAgKCgiQ1NDX0NPTU1PTl9BUkdTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLWFwcGVuZCBhbGwgIi1kZWxheXNpZ24rICIpKQorICAgICAgICAgICAgICAgICAg ICAgICgoIklCTVxcLkRhdGFcXC5EQjJfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAg ICAgICAgICgoIk1vbm9cXC5EYXRhXFwuU3FsaXRlX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAg ICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAg ICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5EYXRhXFwuRGF0YVNldEV4dGVuc2lvbnNfUkVGUyA6 PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0 ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLkRhdGFcXC5PcmFj bGVDbGllbnRfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1h cHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3Rl bVxcLklkZW50aXR5TW9kZWxfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uQ29uZmlndXJhdGlvbiAiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoKCJTeXN0ZW1cXC5EZXNpZ25fUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJBY2Nlc3NpYmlsaXR5ICIpKQorICAgICAg ICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLldlYlxcLkV4dGVuc2lvbnNcXC5EZXNpZ25fUkVG UyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJT eXN0ZW0uV2luZG93cy5Gb3JtcyBTeXN0ZW0uV2ViICIpKQorICAgICAgICAgICAgICAgICAgICAg ICgoIlN5c3RlbVxcLlNlcnZpY2VNb2RlbFxcLlJvdXRpbmdfUkVGUyA6PSAiIGFsbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAg ICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLldlYlxcLkFic3RyYWN0aW9uc19SRUZTIDo9 ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3Rl bSAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5SZWFjdGl2ZVxcLldpbmRv d3NcXC5Gb3Jtc19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n LWFwcGVuZCBhbGwgIlN5c3RlbSAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1c XC5XaW5kb3dzXFwuRm9ybXNcXC5EYXRhVmlzdWFsaXphdGlvbl9SRUZTIDo9ICIgYWxsKQorICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIkFjY2Vzc2liaWxpdHkgIikp CisgICAgICAgICAgICAgICAgICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5TZXJ2aWNlTW9kZWxc XC5QcmltaXRpdmVzX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJp bmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJG YWNhZGVzL1N5c3RlbVxcLkR5bmFtaWNcXC5SdW50aW1lX1JFRlMgOj0gIiBhbGwpCisgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtICIpKQorICAgICAgICAg ICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuWG1sXFwuWERvY3VtZW50X1JFRlMgOj0g IiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVt LlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlJ1bnRp bWVcXC5TZXJpYWxpemF0aW9uLlhtbF9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAg ICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAg ICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5EYXRhXFwuQ29tbW9uX1JFRlMgOj0gIiBhbGwpCisg ICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtIFN5c3RlbS5Y bWwgIikpKQorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgaW52b2tlICJtYWtlIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgYCgsQChpZiBwYXJhbGxlbC1idWlsZD8KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYCgiLWoiICwobnVtYmVyLT5zdHJpbmcKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVsLWpvYi1jb3VudCkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICwoc3RyaW5nLWFwcGVuZCAiQ1NDPU1PTk9fUEFUSD0iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgIi9tY3MvY2xhc3MvbGli L2J1aWxkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgIi9ydW50 aW1lL21vbm8td3JhcHBlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG9wICIvbWNzL2NsYXNzL2xpYi9idWlsZC9tY3MuZXhlIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLEBtYWtlLWZsYWdzKSkpKSkpKSkpKSkpCmRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvcGF0Y2hlcy9tb25vLTUuOC4wLXBhdGNoZXMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hl cy9tb25vLTUuOC4wLXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmY3M2M1MWQ5MmY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3Bh dGNoZXMvbW9uby01LjguMC1wYXRjaGVzLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK2RpZmYgLS1n aXQgYS9tY3MvY2xhc3MvU3lzdGVtL01vbm8uQXBwbGVUbHMvQXBwbGVUbHNDb250ZXh0LmNzIGIv bWNzL2NsYXNzL1N5c3RlbS9Nb25vLkFwcGxlVGxzL0FwcGxlVGxzQ29udGV4dC5jcworaW5kZXgg MGNjNjllNDc2NDguLjUxZGVkNzEzYmE2IDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL1N5c3RlbS9N b25vLkFwcGxlVGxzL0FwcGxlVGxzQ29udGV4dC5jcworKysrIGIvbWNzL2NsYXNzL1N5c3RlbS9N b25vLkFwcGxlVGxzL0FwcGxlVGxzQ29udGV4dC5jcworQEAgLTc3NSw3ICs3NzUsNyBAQCBuYW1l c3BhY2UgTW9uby5BcHBsZVRscworIAkJW0RsbEltcG9ydCAoU2VjdXJpdHlMaWJyYXJ5KV0KKyAJ CWV4dGVybiB1bnNhZmUgc3RhdGljIC8qIE9TU3RhdHVzICovIFNzbFN0YXR1cyBTU0xSZWFkICgv KiBTU0xDb250ZXh0UmVmICovIEludFB0ciBjb250ZXh0LCAvKiBjb25zdCB2b2lkKiAqLyBieXRl KiBkYXRhLCAvKiBzaXplX3QgKi8gSW50UHRyIGRhdGFMZW5ndGgsIC8qIHNpemVfdCogKi8gb3V0 IEludFB0ciBwcm9jZXNzZWQpOworIAorLQkJcHVibGljIG92ZXJyaWRlIHVuc2FmZSAoaW50IHJl dCwgYm9vbCB3YW50TW9yZSkgUmVhZCAoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IGNv dW50KQorKwkJcHVibGljIG92ZXJyaWRlIHVuc2FmZSBTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJv b2w+IFJlYWQgKGJ5dGVbXSBidWZmZXIsIGludCBvZmZzZXQsIGludCBjb3VudCkKKyAJCXsKKyAJ CQlpZiAoSW50ZXJsb2NrZWQuRXhjaGFuZ2UgKHJlZiBwZW5kaW5nSU8sIDEpID09IDEpCisgCQkJ CXRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uICgpOworQEAgLTgxNiw3ICs4MTYs NyBAQCBuYW1lc3BhY2UgTW9uby5BcHBsZVRscworIAkJW0RsbEltcG9ydCAoU2VjdXJpdHlMaWJy YXJ5KV0KKyAJCWV4dGVybiB1bnNhZmUgc3RhdGljIC8qIE9TU3RhdHVzICovIFNzbFN0YXR1cyBT U0xXcml0ZSAoLyogU1NMQ29udGV4dFJlZiAqLyBJbnRQdHIgY29udGV4dCwgLyogY29uc3Qgdm9p ZCogKi8gYnl0ZSogZGF0YSwgLyogc2l6ZV90ICovIEludFB0ciBkYXRhTGVuZ3RoLCAvKiBzaXpl X3QqICovIG91dCBJbnRQdHIgcHJvY2Vzc2VkKTsKKyAKKy0JCXB1YmxpYyBvdmVycmlkZSB1bnNh ZmUgKGludCByZXQsIGJvb2wgd2FudE1vcmUpIFdyaXRlIChieXRlW10gYnVmZmVyLCBpbnQgb2Zm c2V0LCBpbnQgY291bnQpCisrCQlwdWJsaWMgb3ZlcnJpZGUgdW5zYWZlIFN5c3RlbS5WYWx1ZVR1 cGxlPGludCwgYm9vbD4gV3JpdGUgKGJ5dGVbXSBidWZmZXIsIGludCBvZmZzZXQsIGludCBjb3Vu dCkKKyAJCXsKKyAJCQlpZiAoSW50ZXJsb2NrZWQuRXhjaGFuZ2UgKHJlZiBwZW5kaW5nSU8sIDEp ID09IDEpCisgCQkJCXRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uICgpOworZGlm ZiAtLWdpdCBhL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5CdGxzL01vbm9CdGxzQ29udGV4dC5jcyBi L21jcy9jbGFzcy9TeXN0ZW0vTW9uby5CdGxzL01vbm9CdGxzQ29udGV4dC5jcworaW5kZXggNTU5 ZGI0YWNhNWQuLmI3MDIzOWM1MTYzIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL1N5c3RlbS9Nb25v LkJ0bHMvTW9ub0J0bHNDb250ZXh0LmNzCisrKysgYi9tY3MvY2xhc3MvU3lzdGVtL01vbm8uQnRs cy9Nb25vQnRsc0NvbnRleHQuY3MKK0BAIC0zMDAsNyArMzAwLDcgQEAgbmFtZXNwYWNlIE1vbm8u QnRscworIAkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKKyAJCX0KKyAK Ky0JCXB1YmxpYyBvdmVycmlkZSAoaW50IHJldCwgYm9vbCB3YW50TW9yZSkgUmVhZCAoYnl0ZVtd IGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IHNpemUpCisrCQlwdWJsaWMgb3ZlcnJpZGUgU3lzdGVt LlZhbHVlVHVwbGU8aW50LCBib29sPiBSZWFkIChieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBp bnQgc2l6ZSkKKyAJCXsKKyAJCQlEZWJ1ZyAoIlJlYWQ6IHswfSB7MX0gezJ9IiwgYnVmZmVyLkxl bmd0aCwgb2Zmc2V0LCBzaXplKTsKKyAKK0BAIC0zMjksNyArMzI5LDcgQEAgbmFtZXNwYWNlIE1v bm8uQnRscworIAkJCX0KKyAJCX0KKyAKKy0JCXB1YmxpYyBvdmVycmlkZSAoaW50IHJldCwgYm9v bCB3YW50TW9yZSkgV3JpdGUgKGJ5dGVbXSBidWZmZXIsIGludCBvZmZzZXQsIGludCBzaXplKQor KwkJcHVibGljIG92ZXJyaWRlIFN5c3RlbS5WYWx1ZVR1cGxlPGludCwgYm9vbD4gV3JpdGUgKGJ5 dGVbXSBidWZmZXIsIGludCBvZmZzZXQsIGludCBzaXplKQorIAkJeworIAkJCURlYnVnICgiV3Jp dGU6IHswfSB7MX0gezJ9IiwgYnVmZmVyLkxlbmd0aCwgb2Zmc2V0LCBzaXplKTsKKyAKK2RpZmYg LS1naXQgYS9tY3MvY2xhc3MvU3lzdGVtL01vbm8uTmV0LlNlY3VyaXR5L01vYmlsZVRsc0NvbnRl eHQuY3MgYi9tY3MvY2xhc3MvU3lzdGVtL01vbm8uTmV0LlNlY3VyaXR5L01vYmlsZVRsc0NvbnRl eHQuY3MKK2luZGV4IDc0NDEwOTc2YTg1Li40NmYwZWI1OWI5YyAxMDA2NDQKKy0tLSBhL21jcy9j bGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkvTW9iaWxlVGxzQ29udGV4dC5jcworKysrIGIv bWNzL2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Nb2JpbGVUbHNDb250ZXh0LmNzCitA QCAtMTY1LDkgKzE2NSw5IEBAIG5hbWVzcGFjZSBNb25vLk5ldC5TZWN1cml0eQorIAorIAkJcHVi bGljIGFic3RyYWN0IHZvaWQgRmx1c2ggKCk7CisgCistCQlwdWJsaWMgYWJzdHJhY3QgKGludCBy ZXQsIGJvb2wgd2FudE1vcmUpIFJlYWQgKGJ5dGVbXSBidWZmZXIsIGludCBvZmZzZXQsIGludCBj b3VudCk7CisrCQlwdWJsaWMgYWJzdHJhY3QgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBib29sPiBS ZWFkIChieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpOworIAorLQkJcHVibGlj IGFic3RyYWN0IChpbnQgcmV0LCBib29sIHdhbnRNb3JlKSBXcml0ZSAoYnl0ZVtdIGJ1ZmZlciwg aW50IG9mZnNldCwgaW50IGNvdW50KTsKKysJCXB1YmxpYyBhYnN0cmFjdCBTeXN0ZW0uVmFsdWVU dXBsZTxpbnQsIGJvb2w+IFdyaXRlIChieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgY291 bnQpOworIAorIAkJcHVibGljIGFic3RyYWN0IHZvaWQgU2h1dGRvd24gKCk7CisgCi0tIAoyLjQ1 LjIKCg== --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0013-gnu-Add-mono-5.1.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0013-gnu-Add-mono-5.1.0.patch RnJvbSBiMTZkMzcyMDM4YjY3ZjQzYmU4ZTU2NWIxYzQzNTExMTY3MDE4YTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogVHVl LCAyNiBOb3YgMjAyNCAxMzoyOTozMQpTdWJqZWN0OiBbUEFUQ0ggdjIgMTMvMjFdIGdudTogQWRk IG1vbm8tNS4xLjAuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCiAgKG1vbm8tNS4xLjAtZXh0 ZXJuYWwtcmVwby1zcGVjcywgbW9uby01LjEuMCk6IE5ldyB2YXJpYWJsZXMuCi0tLQogZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20gfCA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9n bnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCmluZGV4IGZh ZmMxMDY4MjJiLi5lNzBhNmYwZTU1ZiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2RvdG5ldC5z Y20KKysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTEwMjQsMyArMTAyNCw3MSBAQCAo ZGVmaW5lLXB1YmxpYyBtb25vLTUuMC4xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRvcCAiL21jcy9jbGFzcy9saWIvYnVpbGQvbWNzLmV4ZSIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICxAbWFrZS1mbGFncykpKSkpKSkpKSkpKQorCisoZGVmaW5lIG1vbm8t NS4xLjAtZXh0ZXJuYWwtcmVwby1zcGVjcworICAnKCgiYXNwbmV0d2Vic3RhY2siICAgICAgICAg ICAgICAiZTc3YjEyZTZjYzVlZDI2MGE5ODQ0N2Y2MDllODg3MzM3ZTQ0ZTI5OSIKKyAgICAgIjBy a3MzNDRxcjRmbXAzZnMxMjY0ZDJxa21tMzQ4bThkMWtqZDd6NGw5NGlpaXJ3bjFmcTEiKQorICAg ICgoInJlZmVyZW5jZS1hc3NlbWJsaWVzIiAiYmluYXJ5LXJlZmVyZW5jZS1hc3NlbWJsaWVzIikK KyAgICAgImZlYmMxMDBmMDMxM2YwZGM5ZDc1ZGQxYmNlYTQ1ZTg3MTM0YjViNTUiCisgICAgICIw bHBqOTExbTJscTIzcjIyZHB5NGkwMmZ5NHlrZjI3ZHg4ZnZxcHhzeGtueXNqMmpsNnk0IikKKyAg ICAoImJvY2tidWlsZCIgICAgICAgICAgICAgICAgICAgImZkMWQ2YzQwNGQ3NjNjOThiNmYwZTY0 ZTk4YWI2NWY5MmU4MDgyNDUiCisgICAgICIwbDJuOTg2M2o1eTIwbHAzZmpjcGJiMGE5amNmazBr cW1uemxzdzIwcWNoZDA1cmpneWIwIikKKyAgICAoImJvcmluZ3NzbCIgICAgICAgICAgICAgICAg ICAgImMwNmFjNmIzM2QzZTc0NDJhZDg3ODQ4OGI5ZDExMDAxMjdlZmY5OTgiCisgICAgICIxODd6 cGkxcnZoOWk2amZjY3d6cXEzMzdyeHhpMXJnbnk2bWpxNzlyMDhkbHJoMGx5ZHpjIikKKyAgICAo ImJ1aWxkdG9vbHMiICAgICAgICAgICAgICAgICAgImI1Y2M2ZTZhYjVmNzFmNmMwYmU3YjczMDA1 OGI0MjZlOTI1Mjg0NzkiCisgICAgICIwbGRqNWw0cDRxOGo5ZGhrMG5pZnIzbTBpNjRjc3ZiNTZ3 bGMyeGQ0enk4MHNmZ21qbjA2IikKKyAgICAoImNlY2lsIiAgICAgICAgICAgICAgICAgICAgICAg IjQ0YmM4NjIyMzUzMGEwN2ZhNzRhYjg3MDA3Y2YyNjRlNTNkNjM0MDAiCisgICAgICIwc21zYThp NDcwOXkxbmt5M2hzaGo3YXl4aGpjYzE3d2xuZmR2aGZheTdseTVkeG1sODRnIikKKyAgICAoKCJj ZWNpbCIgImNlY2lsLWxlZ2FjeSIpICAgICAgIjMzZDUwYjg3NGZkNTI3MTE4YmMzNjFkODNkZTNk NDk0ZThiYjU1ZTEiCisgICAgICIxcDRobDE3OTZpYjI2eWt5ZjVzbmw2Y2owbHgwdjdtamgweHFo anc2cWRoNzUzbnNqeWhiIikKKyAgICAoImNvcmVmeCIgICAgICAgICAgICAgICAgICAgICAgIjYz YzUxZTcyNjI5MjE0OWI0ODY4ZGI3MWJhYTg4M2U1YWQxNzM3NjYiCisgICAgICIxNDA2cmJyYTgz azZndzJkbm5zZnFjZndpeTFoODl5NmxxNjRtYTVyY2ttYjVkcmIwbmc5IikKKyAgICAoImNvcmVy dCIgICAgICAgICAgICAgICAgICAgICAgIjMxZWRhMjYxOTkxZjlmNmMxYWRkMTY4NmI2ZDM3OTlm ODM1YjI5NzgiCisgICAgICIwczBwZDRtOTA3MHhseDIzOGZkaHFmMmIzaXlkMnZ6ZmYzZjBzeGx5 aThzMGxoc3JsOHp2IikKKyAgICAoImlrZGFzbSIgICAgICAgICAgICAgICAgICAgICAgIjg4YjY3 YzQyY2E4YjdkNTgxNDFjMTc2YjQ2NzQ5ODE5YmZjZWYxNjYiCisgICAgICIwYjBiMWRoZzgwcjY0 MG44MWlxYXd3a3hpMWsyODluNHp4amZqMGxkZDlya3ZmeHZsd2F3IikKKyAgICAoKCJpa3ZtLWZv cmsiICJpa3ZtIikgICAgICAgICAgIjdjMWU2MWJlYzhjMDY5YjJjYzllMjE0YzMwOTRiMTQ3ZDc2 YmJmODIiCisgICAgICIwdm1jNXI0ajc2aGtkNHppczE3NjlwcGRsMWgxbDd6OGNsZDB5NHAxbTY0 bjg2Z2hremZuIikKKyAgICAoImxpbmtlciIgICAgICAgICAgICAgICAgICAgICAgIjFiZGNmNmI3 YmZiZTNiMDNmZGFhNzZmNjEyNGQwZDczNzRmMDg2MTUiCisgICAgICIxeHg2czhkY2djejgwM3l2 cWd6aGNnbWoxNmM5czh2cnZ2bDhrNHkweG1hNXc1MWtuMjNrIikKKyAgICAoIkx1Y2VuZS5OZXQu TGlnaHQiICAgICAgICAgICAgIjg1OTc4YjdlYjk0NzM4ZjUxNjgyNDM0MTIxM2Q1ZTk0MDYwZjUy ODQiCisgICAgICIwZDExOGk1Mm0zYTB2ZmpoZmNpODFhMmtjNHF2bmoyM2dzMDJocnZkcmZwZDFx OTJmeWlpIikKKyAgICAoIk5ld3RvbnNvZnQuSnNvbiIgICAgICAgICAgICAgIjQ3MWMzZTA4MDNh OWY0MGEwYWNjOGFlY2ViMzFkZTZmZjkzYTUyYzQiCisgICAgICIwZGduZ2Q1aHFrNnlobGc0MGth Ym42cWRua25tMzJ6Y3g5cTZibTJ3MzFjc25zazU5NzhzIikKKyAgICAoKCJOdUdldC5CdWlsZFRh c2tzIiAibnVnZXQtYnVpbGR0YXNrcyIpCisgICAgICIwNGJkYWI1NWQ4ZGU5ZWRjZjYyODY5NGNm ZDIwMDE1NjFlOGY4ZTYwIgorICAgICAiMW5rbHhheXhrZHNrZzV3bGZsNDRjbmR6cWtsMTh2NTYx cnowM2h3eDd3Ym41dzg5cTc3NSIpCisgICAgKCgiTlVuaXRMaXRlIiAibnVuaXQtbGl0ZSIpICAg ICI2OTA2MDNiZWE5OGFhZTY5ZmNhOWE2NTEzMGQ4ODU5MWJjNmNhYmVlIgorICAgICAiMWY4NDV5 c2p6czN5ZDlnY3l3dzY2ZG5reDQ4NHo1ZmtuYjhsMHh6NzRzam14azJtbmd3YyIpCisgICAgOzsg KCJyb3NseW4tYmluYXJpZXMiICAgICAgICAgICIwZDQxOThiMTI5OWJjYjAxOTk3Mzc0OWRhNGQ0 N2U5MGYxNWExZTQ2IgorICAgIDs7ICAiIikKKyAgICAoInJ4IiAgICAgICAgICAgICAgICAgICAg ICAgICAgImIyOWE0YjBmZGE2MDllMGFmMzNmZjU0ZWQxMzY1MmI2Y2NmMGUwNWUiCisgICAgICIx bjFqd2htc2JrY3YyZDgwNmltbWNwemtiNzJyejA0eHk5OG15dzM1NWE4dzVhaDI1eWl2IikKKyAg ICA7OyAoInh1bml0LWJpbmFyaWVzIiAgICAgICAgICAgImI4ZTIwZDI2NWIzNjhkZDYyNTI3MDNk NWFmZDAzOGQwYjAyOGUzODgiCisgICAgOzsgICIiKQorICAgICkpCisKKyhkZWZpbmUtcHVibGlj IG1vbm8tNS4xLjAKKyAgKHBhY2thZ2UKKyAgICAoaW5oZXJpdCBtb25vLTUuMC4xKQorICAgICh2 ZXJzaW9uICI1LjEuMCIpCisgICAgKG5hbWUgIm1vbm8iKQorICAgIChzb3VyY2UgKG9yaWdpbgor ICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgKHVyaQorICAg ICAgICAgICAgICAgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAodXJsICJodHRwczov L2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9uby5naXQiKQorICAgICAgICAgICAgICAgIChjb21t aXQKKyAgICAgICAgICAgICAgICAgIjZmYWZkMDhiNTA3YzU2ZjExYTJlYjY1NzA3MDNhMzllNWJk YzBhODEiKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2 ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMgor ICAgICAgICAgICAgICAgICIxc3hxNDBuYXk1Z2hobWZiZGxuOThpcmkxOXkwaDdxMzZyM3Bxbnht eG5tOTRsaXZ4Mms1IikpCisgICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRp bHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkKKyAgICAg ICAgICAgICAgKHNuaXBwZXQgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICMk KGFkZC1leHRlcm5hbC1yZXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uby01 LjEuMC1leHRlcm5hbC1yZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRA cHJlcGFyZS1tb25vLXNvdXJjZS0wKSkpKQorICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnktaW5w dXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjAuMSkKKyAgICAgICAgICAgICAgICAg ICAgIChyZXBsYWNlICJtb25vIiBtb25vLTUuMC4xKSkpKSkKLS0gCjIuNDUuMgoK --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0020-gnu-Add-libgdiplus.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0020-gnu-Add-libgdiplus.patch RnJvbSA5YTFkYTUwZTNhYmM3MzYyNDA4M2RjOGY4MjdhYTNlYjhmOWNiNDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogV2Vk LCAyNyBOb3YgMjAyNCAwMDo1NjowMApTdWJqZWN0OiBbUEFUQ0ggdjIgMjAvMjFdIGdudTogQWRk IGxpYmdkaXBsdXMuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIChsaWJnZGlwbHVzKTogTmV3 IHZhcmlhYmxlLgotLS0KIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwgNDQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0NCBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2Fn ZXMvZG90bmV0LnNjbQppbmRleCAzMjFiNzEyMzZkOC4uOWMzOGE4M2NjNjQgMTAwNjQ0Ci0tLSBh L2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBA IC0xNjYxLDMgKzE2NjEsNDcgQEAgKGRlZmluZS1wdWJsaWMgbW9uby01LjEwLjAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJygpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiQ1NDPW1jcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEBtYWtlLWZsYWdz KSkpKSkpKSkpKSkpCisKKyhkZWZpbmUtcHVibGljIGxpYmdkaXBsdXMKKyAgKHBhY2thZ2UKKyAg ICAobmFtZSAibGliZ2RpcGx1cyIpCisgICAgKHZlcnNpb24gIjYuMiIpCisgICAgKHNvdXJjZQor ICAgICAob3JpZ2luCisgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgKHVyaSAoZ2l0 LXJlZmVyZW5jZQorCSAgICAgKHVybCAiaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbGliZ2RpcGx1 cy5naXQiKQorCSAgICAgKGNvbW1pdCAiOTRhNDk4NzU0ODdlMjk2Mzc2ZjIwOWZlNjRiOTIxYzYw MjBmNzRjMCIpKSkKKyAgICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lv bikpCisgICAgICAgKHNoYTI1NgorCShiYXNlMzIKKwkgIjFnd21ocmRkcjhrZGxmcHJqcWNkNmdx aXk4cDV2OHNsOTIxNWRiZDk0OWoxbDc2c3psOXYiKSkKKyAgICAgICAobW9kdWxlcyAnKChndWl4 IGJ1aWxkIHV0aWxzKSkpCisgICAgICAgKHNuaXBwZXQgI34oc3Vic3RpdHV0ZSogIi4vTWFrZWZp bGUuYW0iCisgICAgICAgICAgICAgICAgICAgICgoIlxcLi91cGRhdGVfc3VibW9kdWxlc1xcLnNo IikKKyAgICAgICAgICAgICAgICAgICAgICI6IikpKSkpCisgICAgKGJ1aWxkLXN5c3RlbSBnbnUt YnVpbGQtc3lzdGVtKQorICAgIChuYXRpdmUtaW5wdXRzCisgICAgIChsaXN0IGF1dG9tYWtlCisg ICAgICAgICAgIGF1dG9jb25mCisgICAgICAgICAgIGdvb2dsZXRlc3QtMS44CisgICAgICAgICAg IGxpYnRvb2wKKyAgICAgICAgICAgcGtnLWNvbmZpZworICAgICAgICAgICB3aGljaCkpCisgICAg KGlucHV0cyAobGlzdCBjYWlybworICAgICAgICAgICAgICAgICAgZnJlZXR5cGUKKyAgICAgICAg ICAgICAgICAgIGZvbnRjb25maWcKKyAgICAgICAgICAgICAgICAgIGdldHRleHQtbWluaW1hbAor ICAgICAgICAgICAgICAgICAgZ2lmbGliCisgICAgICAgICAgICAgICAgICBnbGliCisgICAgICAg ICAgICAgICAgICBsaWJleGlmCisgICAgICAgICAgICAgICAgICBsaWJqcGVnLXR1cmJvCisgICAg ICAgICAgICAgICAgICBsaWJwbmcKKyAgICAgICAgICAgICAgICAgIGxpYnRpZmYKKyAgICAgICAg ICAgICAgICAgIGxpYngxMSkpCisgICAgKHN5bm9wc2lzICJPcGVuIFNvdXJjZSBpbXBsZW1lbnRh dGlvbiBvZiB0aGUgR0RJKyBBUEkiKQorICAgIChkZXNjcmlwdGlvbiAiTGliZ2RpcGx1cyBpcyB0 aGUgTW9ubyBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYQorR0RJKy1jb21wYXRpYmxlIEFQSSBvbiBu b24tV2luZG93cyBvcGVyYXRpbmcgc3lzdGVtcy4gIEl0IHVzZXMgQ2Fpcm8gdG8gZG8KK21vc3Qg b2YgdGhlIGhlYXZ5IGxpZnRpbmcuIikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5j b20vbW9uby9saWJnZGlwbHVzIikKKyAgICAobGljZW5zZSBsaWNlbnNlOmV4cGF0KSkpCi0tIAoy LjQ1LjIKCg== --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0016-gnu-Add-mono-pre-5.8.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0016-gnu-Add-mono-pre-5.8.0.patch RnJvbSAyZTMxYjZkZDRmOTc2MGUxY2E3MDgwYzZkNTk2OGRiZGU3ZmU3ZWFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogVHVl LCAyNiBOb3YgMjAyNCAxMzo0MjozOQpTdWJqZWN0OiBbUEFUQ0ggdjIgMTYvMjFdIGdudTogQWRk IG1vbm8tcHJlLTUuOC4wLgoKKiBnbnUvcGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLXByZS01 LjguMC1leHRlcm5hbC1yZXBvLXNwZWNzLCBtb25vLXByZS01LjguMCk6IE5ldyB2YXJpYWJsZS4K KiBnbnUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby1wcmUtNS44LjAtcGF0Y2hlcy5wYXRj aDogTmV3IHBhdGNoLgoqIGdudS9sb2NhbC5tayAoZGlzdF9wYXRjaF9EQVRBKTogUmVnaXN0ZXIg bmV3IHBhdGNoLgoKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAxICsKIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNzkgKwogLi4uL2NvcmVmeC1tb25vLXByZS01LjguMC1wYXRjaGVzLnBhdGNoICAg ICAgIHwgMTM0OSArKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNDI5IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngt bW9uby1wcmUtNS44LjAtcGF0Y2hlcy5wYXRjaAoKZGlmZiAtLWdpdCBhL2dudS9sb2NhbC5tayBi L2dudS9sb2NhbC5tawppbmRleCBiMTEwOGY3OWU0ZS4uMmE1Y2VjYWVmZTQgMTAwNjQ0Ci0tLSBh L2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsKQEAgLTExMTgsNiArMTExOCw3IEBAIGRp c3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jb29sLXJldHJv LXRlcm0td2N0eXBlLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2NvcS1hdXRvc3Vi c3QtMS44LXJlbW92ZS1kZXByZWNhdGVkLWZpbGVzLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9w YXRjaGVzL2NvcmVmeC1tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2gJCVwKKyAgJUQlL3BhY2thZ2Vz L3BhdGNoZXMvY29yZWZ4LW1vbm8tcHJlLTUuOC4wLXBhdGNoZXMucGF0Y2gJXAogICAlRCUvcGFj a2FnZXMvcGF0Y2hlcy9jb3JldXRpbHMtZ251bGliLXRlc3RzLnBhdGNoCQlcCiAgICVEJS9wYWNr YWdlcy9wYXRjaGVzL2NwcGNoZWNrLWRpc2FibGUtY2hhci1zaWduZWRuZXNzLXRlc3QucGF0Y2gJ XAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jcHBkYXAtYWRkLUNQUERBUF9VU0VfRVhURVJOQUxf R1RFU1RfUEFDS0FHRS5wYXRjaFwKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2Nt IGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KaW5kZXggOTQ3NTYyMzdlMjQuLjA5MGRiMWU4ZThl IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMv ZG90bmV0LnNjbQpAQCAtMTI1MSwzICsxMjUxLDgyIEBAIChkZWZpbmUtcHVibGljIG1vbm8tNS40 LjAKICAgICAgICAgICAgICAgICAibW9uby01LjQuMC1wYXRjaGVzLnBhdGNoIikpKSkKICAgICAo bmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8t NS4yLjApCiAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby01LjIuMCkp KSkpCisKKyhkZWZpbmUgbW9uby1wcmUtNS44LjAtZXh0ZXJuYWwtcmVwby1zcGVjcworICAnKCgi YXBpLWRvYy10b29scyIgICAgICAgICAgICAgICAiZDAzZTgxOTgzOGM2MjQxZjkyZjkwNjU1Y2I0 NDhjYzQ3YzllODc5MSIKKyAgICAgIjFyaWtpNzlmM2lnM2N4aWd2aXNzODFkejYwMWhuOTJhMWdp ZmdsbTBtempiczc2c2YzZmoiCisgICAgICM6cmVjdXJzaXZlPyAjdCkKKyAgICAoImFwaS1zbmFw c2hvdCIgICAgICAgICAgICAgICAgImU3OTBhOWI3NzAzMWVmMWQ4ZWJmMDkzZWY4ODg0MGVkZWEx MWVkNzMiCisgICAgICIxYzRucDJmcWQ5bXBjMWkxeDhic3hueXBhY3A1OHZrdmdkd3BubXZtbHlq ZHZiajVheDZxIikKKyAgICAoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAgImU3N2IxMmU2 Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMzN2U0NGUyOTkiCisgICAgICIwcmtzMzQ0cXI0Zm1wM2Zz MTI2NGQycWttbTM0OG04ZDFramQ3ejRsOTRpaWlyd24xZnExIikKKyAgICAoKCJyZWZlcmVuY2Ut YXNzZW1ibGllcyIgImJpbmFyeS1yZWZlcmVuY2UtYXNzZW1ibGllcyIpCisgICAgICIxNDJjYmVi NjJmZmFiZjFkZDljMTQxNGQ4ZGQ3NmY5M2JjYmVkMGMyIgorICAgICAiMXdrZDU4OWhnYjE2bTV6 dm1wOXliNTdhZ3l5cnlhYTFqajh2aGw0dzIwaTJocDIyd2FkOSIpCisgICAgKCJib2NrYnVpbGQi ICAgICAgICAgICAgICAgICAgICJiNDQ1MDE3MzA5YWFjNzQxYTI2ZDhjNTFiYjA2MzYyMzQwODRi ZjIzIgorICAgICAiMWp6aHZhdmQxajBuN3N5MXdhY3pnanYwa21yYnIzNWdremQ3NmZobG1xdnN5 MHNyOTY5NSIpCisgICAgKCJib3Jpbmdzc2wiICAgICAgICAgICAgICAgICAgICIzZTA3NzBlMTg4 MzU3MTQ3MDg4NjBiYTlmZTFhZjA0YTkzMjk3MWZmIgorICAgICAiMTM5YTBnbDkxYTUyazJyNm5h NmlhbHprcXlrYWoxcms4OHpqcmthejNzZHh4N25tbWc2eSIpCisgICAgKCJjZWNpbCIgICAgICAg ICAgICAgICAgICAgICAgICJjNzZiYTdiNDEwNDQ3ZmEzNzA5MzE1MGNiN2JjNzcyY2JhMjhhMGFl IgorICAgICAiMHlkaTdybjhhanF5dm5qOWFneW43NGxsYjRxZ2Q5a2dkY2czZ2FqZGZ5YjJrbHh4 NnphOCIpCisgICAgKCgiY2VjaWwiICJjZWNpbC1sZWdhY3kiKSAgICAgICIzM2Q1MGI4NzRmZDUy NzExOGJjMzYxZDgzZGUzZDQ5NGU4YmI1NWUxIgorICAgICAiMXA0aGwxNzk2aWIyNnlreWY1c25s NmNqMGx4MHY3bWpoMHhxaGp3NnFkaDc1M25zanloYiIpCisgICAgKCJjb3JlZngiICAgICAgICAg ICAgICAgICAgICAgICI3NGNjZDhhYTAwZDdkMjcxMTkxY2EzYjljNGY4MTgyNjhkYzM2YzI4Igor ICAgICAiMG5tNDFxZHB2ajYycjhieG5mOTJtN2tpbWptMWk1NDR5Z2RxejVhN3BnYzZ6Zjk5YXM2 aiIKKyAgICAgIzpwYXRjaGVzICgiY29yZWZ4LW1vbm8tcHJlLTUuOC4wLXBhdGNoZXMucGF0Y2gi KSkKKyAgICAoImNvcmVydCIgICAgICAgICAgICAgICAgICAgICAgIjQ4ZGJhNzM4MDFlODA0ZTg5 ZjAwMzExZGE5OWQ4NzNmOWM1NTAyNzgiCisgICAgICIxenc0N2pmNGN3cW1haXh5bGlzeGk3M3hm NmNhcDQxYndmOXZsbXB4YW56eGFxa2x6c3ZrIikKKyAgICAoImlrZGFzbSIgICAgICAgICAgICAg ICAgICAgICAgIjNhZWY5Y2RkNjAxM2ZjMDYyMGExODE3ZjBiMTFkOGZiOTBlZDJlMGYiCisgICAg ICIwNzhjYWkzM3g4YzcxOTY5aXdpN2htYnFkZndwaWNwbWFtMmFnM2syYmtscHZhMnZuc3p2IikK KyAgICAoKCJpa3ZtLWZvcmsiICJpa3ZtIikgICAgICAgICAgIjg0N2UwNWZjZWQ1YzlhNDFmZjBm MjRmMWY5ZDQwZDVhOGE1NzcyYzEiCisgICAgICIxZmw5Ym0zbG16ZjhpcXYzeDRpcWt6OWZjNTRt d2R2cnhpc3hnMm52d3djc2k0c2FmZnBpIikKKyAgICAoImxpbmtlciIgICAgICAgICAgICAgICAg ICAgICAgIjIxZTQ0NWMyNmM2OWFjM2EyZTE0NDFiZWZhMDJkMGJkMTA1ZmY4NDkiCisgICAgICIx aHgzaWswc2c3MHlzYzJ5OGpkanhtMmxqcWwwMDY5aTA1aThmcDFsYWt4N3M3ejdieXdjIikKKyAg ICAoIk5ld3RvbnNvZnQuSnNvbiIgICAgICAgICAgICAgIjQ3MWMzZTA4MDNhOWY0MGEwYWNjOGFl Y2ViMzFkZTZmZjkzYTUyYzQiCisgICAgICIwZGduZ2Q1aHFrNnlobGc0MGthYm42cWRua25tMzJ6 Y3g5cTZibTJ3MzFjc25zazU5NzhzIikKKyAgICAoKCJOdUdldC5CdWlsZFRhc2tzIiAibnVnZXQt YnVpbGR0YXNrcyIpCisgICAgICI4ZDMwNzQ3MmVhMjE0ZjJiNTk2MzY0MzFmNzcxODk0ZGJjYmE3 MjU4IgorICAgICAiMWgxZnJuajB4OGs3YjI5aWM0amlzY2gwdmxwbXNtZ2hqdzU1NHB6Mjc3ZjJu eGFpZGxqaiIpCisgICAgKCgiTlVuaXRMaXRlIiAibnVuaXQtbGl0ZSIpICAgICI2OTA2MDNiZWE5 OGFhZTY5ZmNhOWE2NTEzMGQ4ODU5MWJjNmNhYmVlIgorICAgICAiMWY4NDV5c2p6czN5ZDlnY3l3 dzY2ZG5reDQ4NHo1ZmtuYjhsMHh6NzRzam14azJtbmd3YyIpCisgICAgOzsgKCJyb3NseW4tYmlu YXJpZXMiICAgICAgICAgICI4MGI4NmYzNDBiN2Y2ZmI3YWZlODQ0NDMyMTRlMWNiZDdmZjcwNjIw IgorICAgIDs7ICAiIikKKyAgICAoInJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgImIyOWE0 YjBmZGE2MDllMGFmMzNmZjU0ZWQxMzY1MmI2Y2NmMGUwNWUiCisgICAgICIxbjFqd2htc2JrY3Yy ZDgwNmltbWNwemtiNzJyejA0eHk5OG15dzM1NWE4dzVhaDI1eWl2IikKKyAgICA7OyAoInh1bml0 LWJpbmFyaWVzIiAgICAgICAgICAgImQ0NDMzYjA5NzJmNDBjYjNlZmFhM2ZiYmE1Mjg2OWJkZTVk ZjhmYTgiCisgICAgOzsgICIiKQorICAgICkpCisKKyhkZWZpbmUtcHVibGljIG1vbm8tcHJlLTUu OC4wCisgIChsZXQgKChjb21taXQgImQwZjUxYjRlODM0MDQyY2ZhNTkzNzQ4YWRhOTQyMDMzYjQ1 OGNjNDAiKQorICAgICAgICAodmVyc2lvbiAiNS40LjAuMjAxIikKKyAgICAgICAgKHJldmlzaW9u ICIwIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChpbmhlcml0IG1vbm8tNS40LjApCisgICAgICAo dmVyc2lvbiAoZ2l0LXZlcnNpb24gdmVyc2lvbiByZXZpc2lvbiBjb21taXQpKQorICAgICAgKG5h bWUgIm1vbm8iKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhv ZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaQorICAgICAgICAgICAgICAgICAoZ2l0 LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhx Lm9yZy9tb25vL21vbm8uZ2l0IikKKyAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkp CisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24p KQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMgorICAg ICAgICAgICAgICAgICAgIjBhejVzeWsxbm45Z2Q1aW1rYm1wYjEzcW05cTZpYnIyZDJrc2R6cHdz YXJrZnlwNGljNTMiKSkKKyAgICAgICAgICAgICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0 aWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkKKyAg ICAgICAgICAgICAgICAoc25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbW9uby1wcmUtNS44LjAtZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyRAcHJlcGFyZS1tb25vLXNvdXJjZS0wKSkKKyAgICAgICAgICAgICAgICAo cGF0Y2hlcworICAgICAgICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1vbm8tNS40LjAtcGF0 Y2hlcy5wYXRjaCIpKSkpCisgICAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFj a2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8tNS40LjApCisgICAgICAgICAgICAgICAgICAgICAgIChy ZXBsYWNlICJtb25vIiBtb25vLTUuNC4wKSkpCisgICAgICAoYXJndW1lbnRzCisgICAgICAgKHN1 YnN0aXR1dGUta2V5d29yZC1hcmd1bWVudHMgKHBhY2thZ2UtYXJndW1lbnRzIG1vbm8tNS40LjAp CisgICAgICAgICAoKCM6cGhhc2VzIHBoYXNlcyAjfiVzdGFuZGFyZC1waGFzZXMpCisgICAgICAg ICAgI34obW9kaWZ5LXBoYXNlcyAjJHBoYXNlcworICAgICAgICAgICAgICAoZGVsZXRlICdwYXRj aC1zdWItYXV0b2dlbi5zaC1zaGViYW5nKSkpKSkpKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdl cy9wYXRjaGVzL2NvcmVmeC1tb25vLXByZS01LjguMC1wYXRjaGVzLnBhdGNoIGIvZ251L3BhY2th Z2VzL3BhdGNoZXMvY29yZWZ4LW1vbm8tcHJlLTUuOC4wLXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA0ZGNjNmM1YTUwCi0tLSAvZGV2L251bGwK KysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvY29yZWZ4LW1vbm8tcHJlLTUuOC4wLXBhdGNoZXMu cGF0Y2gKQEAgLTAsMCArMSwxMzQ5IEBACitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9FeHByZXNzaW9uVHJlZUNhbGxS ZXdyaXRlci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvRXhwcmVzc2lvblRyZWVDYWxsUmV3cml0ZXIuY3MKK2luZGV4IGFhOGFmYTVh MWIuLjNhMjUxODI0NmEgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL0V4cHJlc3Npb25UcmVlQ2FsbFJld3JpdGVyLmNz CisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1l QmluZGVyL0V4cHJlc3Npb25UcmVlQ2FsbFJld3JpdGVyLmNzCitAQCAtMjQ2LDggKzI0Niw5IEBA IG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBF eHByQXJyYXlJbml0IGFycmluaXQ7CisgCisgICAgICAgICAgICAgRXhwckxpc3QgbGlzdCA9IChF eHByTGlzdClwRXhwci5PcHRpb25hbEFyZ3VtZW50czsKKy0gICAgICAgICAgICBpZiAobGlzdC5P cHRpb25hbE5leHRMaXN0Tm9kZSBpcyBFeHByTGlzdCBuZXh0KQorKyAgICAgICAgICAgIGlmIChs aXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlIGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgRXhwckxpc3QgbmV4dCA9IChFeHByTGlzdClsaXN0Lk9wdGlvbmFsTmV4 dExpc3ROb2RlOworICAgICAgICAgICAgICAgICBtZXRoaW5mbyA9IChFeHByTWV0aG9kSW5mbylu ZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAgICAgICAgICAgYXJyaW5pdCA9IChFeHByQXJy YXlJbml0KW5leHQuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgfQorQEAgLTM4 Miw4ICszODMsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisg ICAgICAgICAgICAgRXhwciBuZXh0Tm9kZSA9IGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7Cisg ICAgICAgICAgICAgRXhwclByb3BlcnR5SW5mbyBwcm9waW5mbzsKKyAgICAgICAgICAgICBFeHBy QXJyYXlJbml0IGFyZ3VtZW50czsKKy0gICAgICAgICAgICBpZiAobmV4dE5vZGUgaXMgRXhwckxp c3QgbmV4dExpc3QpCisrICAgICAgICAgICAgaWYgKG5leHROb2RlIGlzIEV4cHJMaXN0KQorICAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckxpc3QgbmV4dExpc3QgPSAoRXhwckxp c3QpbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAgICAgcHJvcGluZm8g PSBuZXh0TGlzdC5PcHRpb25hbEVsZW1lbnQgYXMgRXhwclByb3BlcnR5SW5mbzsKKyAgICAgICAg ICAgICAgICAgYXJndW1lbnRzID0gbmV4dExpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUgYXMgRXhw ckFycmF5SW5pdDsKKyAgICAgICAgICAgICB9CitAQCAtNTUzLDggKzU1NSw5IEBAIG5hbWVzcGFj ZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBsaXN0ID0gKEV4 cHJMaXN0KWxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgTWV0aG9kSW5m byBtZXRob2RJbmZvOworICAgICAgICAgICAgIGJvb2wgYklzTGlmdGVkID0gZmFsc2U7CistICAg ICAgICAgICAgaWYgKGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUgaXMgRXhwckxpc3QgbmV4dCkK KysgICAgICAgICAgICBpZiAobGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSBpcyBFeHByTGlzdCkK KyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJMaXN0IG5leHQgPSAoRXhwckxp c3QpbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAgICAgRXhwckNvbnN0 YW50IGlzTGlmdGVkID0gKEV4cHJDb25zdGFudCluZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAg ICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGlzTGlmdGVkICE9IG51bGwpOworICAgICAgICAgICAg ICAgICBiSXNMaWZ0ZWQgPSBpc0xpZnRlZC5WYWwuSW50MzJWYWwgPT0gMTsKK0BAIC02NzcsOCAr NjgwLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorIAorICAg ICAgICAgcHJpdmF0ZSBFeHByZXNzaW9uIEdldEV4cHJlc3Npb24oRXhwciBwRXhwcikKKyAgICAg ICAgIHsKKy0gICAgICAgICAgICBpZiAocEV4cHIgaXMgRXhwcldyYXAgd3JhcCkKKysgICAgICAg ICAgICBpZiAocEV4cHIgaXMgRXhwcldyYXApCisgICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICBFeHByV3JhcCB3cmFwID0gKEV4cHJXcmFwKSBwRXhwcjsKKyAgICAgICAgICAgICAgICAg cmV0dXJuIF9EaWN0aW9uYXJ5T2ZQYXJhbWV0ZXJzWyhFeHByQ2FsbCl3cmFwLk9wdGlvbmFsRXhw cmVzc2lvbl07CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlz IEV4cHJDb25zdGFudCkKK0BAIC04NzUsMjAgKzg3OSwyNCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0 LkNTaGFycC5SdW50aW1lQmluZGVyCisgICAgICAgICB7CisgICAgICAgICAgICAgZm9yICg7OykK KyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2FzdCBj YXN0KQorKyAgICAgICAgICAgICAgICBpZiAocEV4cHIgaXMgRXhwckNhc3QpCisgICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJDYXN0IGNhc3QgPSAoRXhwckNhc3Qp IHBFeHByOworICAgICAgICAgICAgICAgICAgICAgcEV4cHIgPSBjYXN0LkFyZ3VtZW50OworICAg ICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJU eXBlT2YgdHlwZU9mKQorKyAgICAgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByVHlw ZU9mKQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByVHlwZU9m IHR5cGVPZiA9IChFeHByVHlwZU9mKSBwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0eXBlT2YuU291cmNlVHlwZS5UeXBlLkFzc29jaWF0ZWRTeXN0ZW1UeXBlOworICAgICAgICAg ICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJNZXRob2RJ bmZvIG1ldGhvZEluZm8pCisrICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJN ZXRob2RJbmZvKQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHBy TWV0aG9kSW5mbyBtZXRob2RJbmZvID0gKEV4cHJNZXRob2RJbmZvKSBwRXhwcjsKKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHZXRNZXRob2RJbmZvRnJvbUV4cHIobWV0aG9kSW5mbyk7Cisg ICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhw ckNvbnN0YW50IGNvbnN0YW50KQorKyAgICAgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBF eHByQ29uc3RhbnQpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4 cHJDb25zdGFudCBjb25zdGFudCA9IChFeHByQ29uc3RhbnQpIHBFeHByOworICAgICAgICAgICAg ICAgICAgICAgQ29uc3RWYWwgdmFsID0gY29uc3RhbnQuVmFsOworICAgICAgICAgICAgICAgICAg ICAgQ1R5cGUgdW5kZXJseWluZ1R5cGUgPSBwRXhwci5UeXBlOworICAgICAgICAgICAgICAgICAg ICAgb2JqZWN0IG9ianZhbDsKK0BAIC05NTQsOCArOTYyLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29m dC5DU2hhcnAuUnVudGltZUJpbmRlcgorIAorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBF eHByLlR5cGUuaXNFbnVtVHlwZSgpID8gRW51bS5Ub09iamVjdChwRXhwci5UeXBlLkFzc29jaWF0 ZWRTeXN0ZW1UeXBlLCBvYmp2YWwpIDogb2JqdmFsOworICAgICAgICAgICAgICAgICB9CistICAg ICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJaZXJvSW5pdCB6ZXJvSW5pdCkKKysg ICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwclplcm9Jbml0KQorICAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByWmVyb0luaXQgemVyb0luaXQgPSAo RXhwclplcm9Jbml0KSBwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgocEV4cHIgPSB6 ZXJvSW5pdC5PcHRpb25hbEFyZ3VtZW50KSA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBY3RpdmF0b3IuQ3JlYXRlSW5zdGFu Y2UoemVyb0luaXQuVHlwZS5Bc3NvY2lhdGVkU3lzdGVtVHlwZSk7CitAQCAtOTgxLDggKzk5MCw5 IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAg ICAgICAgRXhwciBwID0gbGlzdDsKKyAgICAgICAgICAgICAgICAgd2hpbGUgKGxpc3QgIT0gbnVs bCkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3QgaXMg RXhwckxpc3QgcExpc3QpCisrICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlz dCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBFeHBy TGlzdCBwTGlzdCA9IChFeHByTGlzdCkgbGlzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBw ID0gcExpc3QuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qg PSBwTGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAgICAgICAgIH0KK2Rp ZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50 aW1lQmluZGVyL1J1bnRpbWVCaW5kZXIuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1J1bnRpbWVCaW5kZXIuY3MKK2luZGV4IGE2MjNi ZmMwYmYuLjRhNzQyMTU2YjkgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMv TWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1J1bnRpbWVCaW5kZXIuY3MKKysrKyBiL3Ny Yy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvUnVu dGltZUJpbmRlci5jcworQEAgLTE4OSw3ICsxODksOCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyCisgICAgICAgICAgICAgTG9jYWxWYXJpYWJsZVN5bWJvbFtdIGxv Y2FscyA9IFBvcHVsYXRlTG9jYWxTY29wZShwYXlsb2FkLCBwU2NvcGUsIGFyZ3VtZW50cywgcGFy YW1ldGVycyk7CisgCisgICAgICAgICAgICAgLy8gKDEuNSkgLSBDaGVjayB0byBzZWUgaWYgd2Ug bmVlZCB0byBkZWZlci4KKy0gICAgICAgICAgICBpZiAoRGVmZXJCaW5kaW5nKHBheWxvYWQsIGFy Z3VtZW50cywgYXJncywgbG9jYWxzLCBvdXQgRHluYW1pY01ldGFPYmplY3QgbykpCisrICAgICAg ICAgICAgRHluYW1pY01ldGFPYmplY3QgbzsKKysgICAgICAgICAgICBpZiAoRGVmZXJCaW5kaW5n KHBheWxvYWQsIGFyZ3VtZW50cywgYXJncywgbG9jYWxzLCBvdXQgbykpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBkZWZlcnJlZEJpbmRpbmcgPSBvOworICAgICAgICAgICAgICAg ICByZXR1cm4gbnVsbDsKK0BAIC0xMDMwLDggKzEwMzEsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0 LkNTaGFycC5SdW50aW1lQmluZGVyCisgCisgICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIENo ZWNrRm9yQ29uZGl0aW9uYWxNZXRob2RFcnJvcihFeHByIHBFeHByKQorICAgICAgICAgeworLSAg ICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2FsbCBjYWxsKQorKyAgICAgICAgICAgIGlmIChw RXhwciBpcyBFeHByQ2FsbCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJD YWxsIGNhbGwgPSAoRXhwckNhbGwpcEV4cHI7CisgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWlt aWNzIHRoZSBiZWhhdmlvciBvZiB0aGUgbmF0aXZlIENvbXBpbGVyU3ltYm9sTG9hZGVyIGluIEdl dENvbmRpdGlvbmFsU3ltYm9scy4gT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgLy8gbWV0aG9k cyBjYW5ub3QgaGF2ZSB0aGUgY29uZGl0aW9uYWwgYXR0cmlidXRlLCBidXQgaW1wbGljaXRseSBh Y3F1aXJlIGl0IGZyb20gdGhlaXIgc2xvdC4KKyAKK0BAIC0xMDY0LDggKzEwNjYsOSBAQCBuYW1l c3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgICAgICAgICAgICAgRXhwck1l bWJlckdyb3VwIG1lbWdyb3VwOworICAgICAgICAgICAgIFR5cGVBcnJheSB0eXBlQXJnczsKKyAK Ky0gICAgICAgICAgICBpZiAocFJlc3VsdCBpcyBFeHByQ2FsbCBjYWxsKQorKyAgICAgICAgICAg IGlmIChwUmVzdWx0IGlzIEV4cHJDYWxsKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgRXhwckNhbGwgY2FsbCA9IChFeHByQ2FsbCkgcFJlc3VsdDsKKyAgICAgICAgICAgICAgICAg dHlwZSA9IGNhbGwuTWV0aFdpdGhJbnN0LkF0czsKKyAgICAgICAgICAgICAgICAgbWV0aHByb3Ag PSBjYWxsLk1ldGhXaXRoSW5zdC5NZXRoKCk7CisgICAgICAgICAgICAgICAgIG1lbWdyb3VwID0g Y2FsbC5NZW1iZXJHcm91cDsKK0BAIC0xMTMyLDEyICsxMTM1LDE1IEBAIG5hbWVzcGFjZSBNaWNy b3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAKKyAgICAgICAgIHByaXZhdGUgRXhwciBTdHJp cE5hbWVkQXJndW1lbnQoRXhwciBwQXJnKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmIChw QXJnIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCkKKysgICAgICAgICAg ICBpZiAocEFyZyBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pCisgICAgICAgICAg ICAgeworKyAgICAgICAgICAgICAgICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFt ZWQgPQorKyAgICAgICAgICAgICAgICAgICAgKEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlv bikgcEFyZzsKKyAgICAgICAgICAgICAgICAgcEFyZyA9IG5hbWVkLlZhbHVlOworICAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICBlbHNlIGlmIChwQXJnIGlzIEV4cHJBcnJheUluaXQgaW5pdCkK KysgICAgICAgICAgICBlbHNlIGlmIChwQXJnIGlzIEV4cHJBcnJheUluaXQpCisgICAgICAgICAg ICAgeworKyAgICAgICAgICAgICAgICBFeHByQXJyYXlJbml0IGluaXQgPSAoRXhwckFycmF5SW5p dCkgcEFyZzsKKyAgICAgICAgICAgICAgICAgaW5pdC5PcHRpb25hbEFyZ3VtZW50cyA9IFN0cmlw TmFtZWRBcmd1bWVudHMoaW5pdC5PcHRpb25hbEFyZ3VtZW50cyk7CisgICAgICAgICAgICAgfQor IAorQEAgLTExNDYsMTQgKzExNTIsMTYgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVu dGltZUJpbmRlcgorIAorICAgICAgICAgcHJpdmF0ZSBFeHByIFN0cmlwTmFtZWRBcmd1bWVudHMo RXhwciBwQXJnKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmIChwQXJnIGlzIEV4cHJMaXN0 IGxpc3QpCisrICAgICAgICAgICAgaWYgKHBBcmcgaXMgRXhwckxpc3QpCisgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICBFeHByTGlzdCBsaXN0ID0gKEV4cHJMaXN0KSBwQXJnOworICAg ICAgICAgICAgICAgICBmb3IoOzspCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgIGxpc3QuT3B0aW9uYWxFbGVtZW50ID0gU3RyaXBOYW1lZEFyZ3VtZW50KGxpc3QuT3B0 aW9uYWxFbGVtZW50KTsKKyAKKy0gICAgICAgICAgICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFs TmV4dExpc3ROb2RlIGlzIEV4cHJMaXN0IG5leHQpCisrICAgICAgICAgICAgICAgICAgICBpZiAo bGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0 KWxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlz dCA9IG5leHQ7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBl bHNlCitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hh cnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmluZGluZy9CZXR0ZXIuY3MgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9C aW5kaW5nL0JldHRlci5jcworaW5kZXggY2ViZmNkOTRlMS4uMTc5YWMyMTYyMCAxMDA2NDQKKy0t LSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5k ZXIvU2VtYW50aWNzL0JpbmRpbmcvQmV0dGVyLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFy cC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0Jl dHRlci5jcworQEAgLTE1Nyw4ICsxNTcsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5S dW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIC8vIFdlIHRoZW4gZ28gb3ZlciB0 aGUgc3BlY2lmaWVkIGFyZ3VtZW50cyBhbmQgcHV0IHRoZSB0eXBlIGZvciBhbnkgbmFtZWQgYXJn dW1lbnQgaW4gdGhlIHJpZ2h0IHBvc2l0aW9uIGluIHRoZSBhcnJheS4KKyAgICAgICAgICAgICBm b3IgKGludCBpUGFyYW0gPSAwOyBpUGFyYW0gPCBhcmdzLmNhcmc7IGlQYXJhbSsrKQorICAgICAg ICAgICAgIHsKKy0gICAgICAgICAgICAgICAgaWYgKHByZ2V4cHJbaVBhcmFtXSBpcyBFeHByTmFt ZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQpCisrICAgICAgICAgICAgICAgIGlmIChwcmdl eHByW2lQYXJhbV0gaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKQorICAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmlj YXRpb24gbmFtZWQgPSAoRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKXByZ2V4cHJbaVBh cmFtXTsKKyAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZpbmQgdGhlIGluZGV4IG9mIHRoZSB0 eXBlIG9mIHRoZSBhcmd1bWVudCBpbiB0aGUgbWV0aG9kIHBhcmFtZXRlciBsaXN0IGFuZCBzdG9y ZSB0aGF0IGluIGEgdGVtcAorICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gRmluZE5h bWUobWV0aFByb3AuUGFyYW1ldGVyTmFtZXMsIG5hbWVkLk5hbWUpOworICAgICAgICAgICAgICAg ICAgICAgQ1R5cGUgdGVtcFR5cGUgPSBwdGFbaW5kZXhdOworZGlmZiAtLWdpdCBhL3NyYy9NaWNy b3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNz L0JpbmRpbmcvRXJyb3JSZXBvcnRpbmcuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0Vycm9yUmVwb3J0 aW5nLmNzCitpbmRleCBjNDA2YWY0M2RlLi4wZWE4MWVmMjFjIDEwMDY0NAorLS0tIGEvc3JjL01p Y3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRp Y3MvQmluZGluZy9FcnJvclJlcG9ydGluZy5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAv c3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmluZGluZy9FcnJv clJlcG9ydGluZy5jcworQEAgLTc2LDIyICs3NiwyNSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgRGVidWcuQXNzZXJ0KGV4cHIgIT0gbnVsbCk7CisgCistICAgICAgICAgICAgICAgIGlm IChleHByIGlzIEV4cHJMb2NhbCBsb2NhbCAmJiBsb2NhbC5Jc09LKQorKyAgICAgICAgICAgICAg ICBpZiAoZXhwciBpcyBFeHByTG9jYWwgJiYgKChFeHByTG9jYWwpZXhwcikuSXNPSykKKyAgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckxvY2FsIGxvY2FsID0gKEV4 cHJMb2NhbClleHByOworICAgICAgICAgICAgICAgICAgICAgUmVwb3J0TG9jYWxFcnJvcihsb2Nh bC5Mb2NhbCwga2luZCwgaXNOZXN0ZWQpOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgRXhwciBwT2JqZWN0 ID0gbnVsbDsKKyAKKy0gICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwclByb3BlcnR5IHBy b3ApCisrICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJQcm9wZXJ0eSkKKyAgICAgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwclByb3BlcnR5IHByb3AgPSAoRXhw clByb3BlcnR5KWV4cHI7CisgICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHJl cG9ydGVkIHJlYWQtb25seS1wcm9wZXJ0eSBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICBE ZWJ1Zy5Bc3NlcnQocHJvcC5NZXRoV2l0aFR5cGVTZXQgIT0gbnVsbCk7CisgICAgICAgICAgICAg ICAgICAgICBwT2JqZWN0ID0gcHJvcC5NZW1iZXJHcm91cC5PcHRpb25hbE9iamVjdDsKKyAgICAg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBlbHNlIGlmIChleHByIGlzIEV4cHJGaWVs ZCBmaWVsZCkKKysgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBFeHByRmllbGQpCisg ICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJGaWVsZCBmaWVsZCA9 IChFeHByRmllbGQpZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5GaWVsZFdp dGhUeXBlLkZpZWxkKCkuaXNSZWFkT25seSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBSZXBvcnRSZWFkT25seUVycm9yKGZpZWxkLCBraW5kLCBpc05l c3RlZCk7CitAQCAtMTA1LDggKzEwOCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1 bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgCisgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0ICE9 IG51bGwgJiYgcE9iamVjdC5UeXBlLmlzU3RydWN0T3JFbnVtKCkpCisgICAgICAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0IGlzIElFeHByV2l0aEFyZ3Mgd2l0 aEFyZ3MpCisrICAgICAgICAgICAgICAgICAgICBpZiAocE9iamVjdCBpcyBJRXhwcldpdGhBcmdz KQorICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIElFeHBy V2l0aEFyZ3Mgd2l0aEFyZ3MgPSAoSUV4cHJXaXRoQXJncylwT2JqZWN0OworICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGFzc2lnbmluZyB0byBSSFMgb2YgbWV0aG9kIG9yIHByb3BlcnR5IGdl dHRlciByZXR1cm5pbmcgYSB2YWx1ZS10eXBlIG9uIHRoZSBzdGFjayBvcgorICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHBhc3NpbmcgUkhTIG9mIG1ldGhvZCBvciBwcm9wZXJ0eSBnZXR0ZXIg cmV0dXJuaW5nIGEgdmFsdWUtdHlwZSBvbiB0aGUgc3RhY2ssIGFzIHJlZiBvciBvdXQKKyAgICAg ICAgICAgICAgICAgICAgICAgICBFcnJvckNvbnRleHQuRXJyb3IoRXJyb3JDb2RlLkVSUl9SZXR1 cm5Ob3RMVmFsdWUsIHdpdGhBcmdzLkdldFN5bVdpdGhUeXBlKCkpOworZGlmZiAtLWdpdCBhL3Ny Yy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2Vt YW50aWNzL0NvbnZlcnNpb24uY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0 L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9Db252ZXJzaW9uLmNzCitpbmRleCAyNzU2 NTM4NzcwLi45OWFkZjQ4OGIzIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3Jj L01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQ29udmVyc2lvbi5jcwor KysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJp bmRlci9TZW1hbnRpY3MvQ29udmVyc2lvbi5jcworQEAgLTM4Miw5ICszODIsMTAgQEAgbmFtZXNw YWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAg ICAgICAgRlVORFRZUEUgZnRTcmMgPSBleHByLlR5cGUuZnVuZFR5cGUoKTsKKyAgICAgICAgICAg ICAgICAgRlVORFRZUEUgZnREZXN0ID0gZGVzdC5mdW5kVHlwZSgpOworIAorLSAgICAgICAgICAg ICAgICBpZiAoZXhwciBpcyBFeHByQ29uc3RhbnQgY29uc3RhbnQgJiYgY29uc3RhbnQuSXNPSyAm JgorKyAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByQ29uc3RhbnQgJiYgKChFeHByQ29u c3RhbnQpZXhwcikuSXNPSyAmJgorICAgICAgICAgICAgICAgICAgICAgZXhwci5UeXBlLmlzU2lt cGxlVHlwZSgpICYmIGRlc3QuaXNTaW1wbGVUeXBlKCkpCisgICAgICAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgICAgIEV4cHJDb25zdGFudCBjb25zdGFudCA9IChFeHByQ29uc3RhbnQp IGV4cHI7CisgICAgICAgICAgICAgICAgICAgICBpZiAoKGZ0U3JjID09IEZVTkRUWVBFLkZUX0k0 ICYmIChmdERlc3QgPD0gRlVORFRZUEUuRlRfTEFTVE5PTkxPTkcgfHwgZnREZXN0ID09IEZVTkRU WVBFLkZUX1U4KSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZnRTcmMgPT0gRlVORFRZ UEUuRlRfSTggJiYgZnREZXN0ID09IEZVTkRUWVBFLkZUX1U4KSkKKyAgICAgICAgICAgICAgICAg ICAgIHsKK0BAIC00MTIsOCArNDEzLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVu dGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29udGV4dC5F cnJvcihkZXN0IGlzIFR5cGVQYXJhbWV0ZXJUeXBlID8gRXJyb3JDb2RlLkVSUl9UeXBlVmFyQ2Fu dEJlTnVsbCA6IEVycm9yQ29kZS5FUlJfVmFsdWVDYW50QmVOdWxsLCBkZXN0KTsKKyAgICAgICAg ICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAgICBlbHNlIGlmIChleHByIGlzIEV4cHJNZW1i ZXJHcm91cCBtZW1HcnApCisrICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4cHIgaXMgRXhwck1l bWJlckdyb3VwKQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHBy TWVtYmVyR3JvdXAgbWVtR3JwID0gKEV4cHJNZW1iZXJHcm91cCkgZXhwcjsKKyAgICAgICAgICAg ICAgICAgICAgIEJpbmRHcnBDb252ZXJzaW9uKG1lbUdycCwgZGVzdCwgdHJ1ZSk7CisgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2FuQ2FzdChleHByLlR5cGUs IGRlc3QsIGZsYWdzKSkKK0BAIC01NDYsOCArNTQ4LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5D U2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvbnRleHQuRXJyb3IoRXJyb3JDb2RlLkVSUl9W YWx1ZUNhbnRCZU51bGwsIGRlc3QpOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBFeHByTWVtYmVyR3JvdXAgbWVtR3JwKQorKyAg ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBFeHByTWVtYmVyR3JvdXApCisgICAg ICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgRXhwck1lbWJlckdy b3VwIG1lbUdycCA9IChFeHByTWVtYmVyR3JvdXApZXhwcjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICBCaW5kR3JwQ29udmVyc2lvbihtZW1HcnAsIGRlc3QsIHRydWUpOworICAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZQorQEAgLTEzODcsOCArMTM5MCw5 IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisg ICAgICAgICAgICAgZm9yICg7OykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIERl YnVnLkFzc2VydChwRXhwciAhPSBudWxsKTsKKy0gICAgICAgICAgICAgICAgaWYgKHBFeHByIGlz IEV4cHJDYWxsIGNhbGwpCisrICAgICAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2FsbCkK KyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNhbGwgY2FsbCA9 IChFeHByQ2FsbClwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2FsbC5OdWxs YWJsZUNhbGxMaWZ0S2luZCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlIE51bGxhYmxlQ2FsbExpZnRLaW5kLk5vdExpZnRlZDoKK0BAIC0xNDAy LDggKzE0MDYsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNl bWFudGljcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBlbHNl IGlmIChwRXhwciBpcyBFeHByVXNlckRlZmluZWRDb252ZXJzaW9uIHVkYykKKysgICAgICAgICAg ICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbikKKyAgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwclVzZXJEZWZpbmVkQ29udmVy c2lvbiB1ZGMgPSAoRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbilwRXhwcjsKKyAgICAgICAgICAg ICAgICAgICAgIHBFeHByID0gdWRjLlVzZXJEZWZpbmVkQ2FsbDsKKyAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jv c29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3Mv RVhQUkV4dGVuc2lvbnMuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FWFBSRXh0ZW5zaW9ucy5jcworaW5kZXggMDc1 ZWQyM2ExMS4uNjQwOGRmNGMzNiAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3Ny Yy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0VYUFJFeHRlbnNpb25z LmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50 aW1lQmluZGVyL1NlbWFudGljcy9FWFBSRXh0ZW5zaW9ucy5jcworQEAgLTMzLDggKzMzLDkgQEAg bmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAg ICAgICAgICBFeHByIGV4cHJDdXIgPSBleHByOworICAgICAgICAgICAgIHdoaWxlIChleHByQ3Vy ICE9IG51bGwpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAoZXhwckN1ciBp cyBFeHByTGlzdCBsaXN0KQorKyAgICAgICAgICAgICAgICBpZiAoZXhwckN1ciBpcyBFeHByTGlz dCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckxpc3QgbGlz dCA9IChFeHByTGlzdClleHByQ3VyOworICAgICAgICAgICAgICAgICAgICAgeWllbGQgcmV0dXJu IGxpc3QuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAgICAgICAgZXhwckN1ciA9IGxp c3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgICAgIH0KK0BAIC02MSwxMiAr NjIsMTIgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRp Y3MKKyAgICAgICAgIH0KKyAgICAgICAgIHB1YmxpYyBzdGF0aWMgYm9vbCBpc051bGwodGhpcyBF eHByIGV4cHIpCisgICAgICAgICB7CistICAgICAgICAgICAgcmV0dXJuIGV4cHIgaXMgRXhwckNv bnN0YW50IGNvbnN0YW50ICYmIGNvbnN0YW50LklzT0sgJiYgKGV4cHIuVHlwZS5mdW5kVHlwZSgp ID09IEZVTkRUWVBFLkZUX1JFRikgJiYgY29uc3RhbnQuVmFsLklzTnVsbFJlZjsKKysgICAgICAg ICAgICByZXR1cm4gZXhwciBpcyBFeHByQ29uc3RhbnQgJiYgKChFeHByQ29uc3RhbnQpZXhwciku SXNPSyAmJiAoZXhwci5UeXBlLmZ1bmRUeXBlKCkgPT0gRlVORFRZUEUuRlRfUkVGKSAmJiAoKEV4 cHJDb25zdGFudClleHByKS5WYWwuSXNOdWxsUmVmOworICAgICAgICAgfQorIAorICAgICAgICAg cHVibGljIHN0YXRpYyBib29sIElzWmVybyh0aGlzIEV4cHIgZXhwcikKKyAgICAgICAgIHsKKy0g ICAgICAgICAgICByZXR1cm4gZXhwciBpcyBFeHByQ29uc3RhbnQgY29uc3RhbnQgJiYgY29uc3Rh bnQuSXNPSyAmJiBjb25zdGFudC5Jc1plcm87CisrICAgICAgICAgICAgcmV0dXJuIGV4cHIgaXMg RXhwckNvbnN0YW50ICYmICgoRXhwckNvbnN0YW50KWV4cHIpLklzT0sgJiYgKChFeHByQ29uc3Rh bnQpZXhwcikuSXNaZXJvOworICAgICAgICAgfQorIAorICAgICAgICAgcHJpdmF0ZSBzdGF0aWMg RXhwciBHZXRTZXFWYWwodGhpcyBFeHByIGV4cHIpCitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhw bGljaXRDb252ZXJzaW9uLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNzCitpbmRl eCBiNTVjZjA3MDc4Li45YWZlYWFjNjIyIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRD b252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHBsaWNpdENvbnZlcnNpb24uY3MKK0BAIC0y MDcsOCArMjA3LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlNGQUlMKCJCaW5kRXhwbGlj aXRDb252ZXJzaW9uIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAg ICAgICAgICAgICAgICAgICAgICBpZiAoX2V4cHJEZXN0IGlzIEV4cHJVc2VyRGVmaW5lZENvbnZl cnNpb24gdWRjKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZXhwckRlc3QgaXMgRXhw clVzZXJEZWZpbmVkQ29udmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24gdWRjID0g KEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24pX2V4cHJEZXN0OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1ZGMuQXJndW1lbnQgPSBfZXhwclNyYzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhw ckZhY3RvcnkuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9S dW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByRmFjdG9yeS5jcworaW5kZXggMTU5ZjE1N2Y0My4u NGEwZTNjYjQ3OSAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3Nv ZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0V4cHJGYWN0b3J5LmNzCisrKysgYi9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1Nl bWFudGljcy9FeHByRmFjdG9yeS5jcworQEAgLTE3LDMzICsxNywzMyBAQCBuYW1lc3BhY2UgTWlj cm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIERlYnVn LkFzc2VydChnbG9iYWxTeW1ib2xDb250ZXh0ICE9IG51bGwpOworICAgICAgICAgICAgIF9nbG9i YWxTeW1ib2xDb250ZXh0ID0gZ2xvYmFsU3ltYm9sQ29udGV4dDsKKyAgICAgICAgIH0KKy0gICAg ICAgIHByaXZhdGUgVHlwZU1hbmFnZXIgVHlwZXMgPT4gX2dsb2JhbFN5bWJvbENvbnRleHQuR2V0 VHlwZXMoKTsKKysgICAgICAgIHByaXZhdGUgVHlwZU1hbmFnZXIgVHlwZXMgeyBnZXQgeyByZXR1 cm4gX2dsb2JhbFN5bWJvbENvbnRleHQuR2V0VHlwZXMoKTsgfSB9CisgCistICAgICAgICBwcml2 YXRlIEJTWU1NR1IgR2xvYmFsU3ltYm9scyA9PiBfZ2xvYmFsU3ltYm9sQ29udGV4dC5HZXRHbG9i YWxTeW1ib2xzKCk7CisrICAgICAgICBwcml2YXRlIEJTWU1NR1IgR2xvYmFsU3ltYm9scyB7IGdl dCB7IHJldHVybiBfZ2xvYmFsU3ltYm9sQ29udGV4dC5HZXRHbG9iYWxTeW1ib2xzKCk7IH0gfQor IAorLSAgICAgICAgcHVibGljIEV4cHJDYWxsIENyZWF0ZUNhbGwoRVhQUkZMQUcgZmxhZ3MsIENU eXBlIHR5cGUsIEV4cHIgYXJndW1lbnRzLCBFeHByTWVtYmVyR3JvdXAgbWVtYmVyR3JvdXAsIE1l dGhXaXRoSW5zdCBtZXRob2QpID0+IAorLSAgICAgICAgICAgIG5ldyBFeHByQ2FsbCh0eXBlLCBm bGFncywgYXJndW1lbnRzLCBtZW1iZXJHcm91cCwgbWV0aG9kKTsKKysgICAgICAgIHB1YmxpYyBF eHByQ2FsbCBDcmVhdGVDYWxsKEVYUFJGTEFHIGZsYWdzLCBDVHlwZSB0eXBlLCBFeHByIGFyZ3Vt ZW50cywgRXhwck1lbWJlckdyb3VwIG1lbWJlckdyb3VwLCBNZXRoV2l0aEluc3QgbWV0aG9kKSAK KysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByQ2FsbCh0eXBlLCBmbGFncywgYXJndW1lbnRzLCBt ZW1iZXJHcm91cCwgbWV0aG9kKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJGaWVsZCBDcmVh dGVGaWVsZChDVHlwZSB0eXBlLCBFeHByIG9wdGlvbmFsT2JqZWN0LCBGaWVsZFdpdGhUeXBlIGZp ZWxkLCBib29sIGlzTFZhbHVlKSA9PiAKKy0gICAgICAgICAgICBuZXcgRXhwckZpZWxkKHR5cGUs IG9wdGlvbmFsT2JqZWN0LCBmaWVsZCwgaXNMVmFsdWUpOworKyAgICAgICAgcHVibGljIEV4cHJG aWVsZCBDcmVhdGVGaWVsZChDVHlwZSB0eXBlLCBFeHByIG9wdGlvbmFsT2JqZWN0LCBGaWVsZFdp dGhUeXBlIGZpZWxkLCBib29sIGlzTFZhbHVlKSAKKysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHBy RmllbGQodHlwZSwgb3B0aW9uYWxPYmplY3QsIGZpZWxkLCBpc0xWYWx1ZSk7IH0KKyAKKy0gICAg ICAgIHB1YmxpYyBFeHByRnVuY1B0ciBDcmVhdGVGdW5jdGlvblBvaW50ZXIoRVhQUkZMQUcgZmxh Z3MsIENUeXBlIHR5cGUsIEV4cHIgb2JqLCBNZXRoV2l0aEluc3QgbWV0aG9kKSA9PiAKKy0gICAg ICAgICAgICBuZXcgRXhwckZ1bmNQdHIodHlwZSwgZmxhZ3MsIG9iaiwgbWV0aG9kKTsKKysgICAg ICAgIHB1YmxpYyBFeHByRnVuY1B0ciBDcmVhdGVGdW5jdGlvblBvaW50ZXIoRVhQUkZMQUcgZmxh Z3MsIENUeXBlIHR5cGUsIEV4cHIgb2JqLCBNZXRoV2l0aEluc3QgbWV0aG9kKQorKyAgICAgICAg eyByZXR1cm4gbmV3IEV4cHJGdW5jUHRyKHR5cGUsIGZsYWdzLCBvYmosIG1ldGhvZCk7IH0KKyAK Ky0gICAgICAgIHB1YmxpYyBFeHByQXJyYXlJbml0IENyZWF0ZUFycmF5SW5pdChDVHlwZSB0eXBl LCBFeHByIGFyZ3VtZW50cywgRXhwciBhcmd1bWVudERpbWVuc2lvbnMsIGludFtdIGRpbVNpemVz LCBpbnQgZGltU2l6ZSkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJBcnJheUluaXQodHlwZSwg YXJndW1lbnRzLCBhcmd1bWVudERpbWVuc2lvbnMsIGRpbVNpemVzLCBkaW1TaXplKTsKKysgICAg ICAgIHB1YmxpYyBFeHByQXJyYXlJbml0IENyZWF0ZUFycmF5SW5pdChDVHlwZSB0eXBlLCBFeHBy IGFyZ3VtZW50cywgRXhwciBhcmd1bWVudERpbWVuc2lvbnMsIGludFtdIGRpbVNpemVzLCBpbnQg ZGltU2l6ZSkKKysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByQXJyYXlJbml0KHR5cGUsIGFyZ3Vt ZW50cywgYXJndW1lbnREaW1lbnNpb25zLCBkaW1TaXplcywgZGltU2l6ZSk7IH0KKyAKKy0gICAg ICAgIHB1YmxpYyBFeHByUHJvcGVydHkgQ3JlYXRlUHJvcGVydHkoQ1R5cGUgdHlwZSwgRXhwciBv cHRpb25hbE9iamVjdCkgPT4gCistICAgICAgICAgICAgQ3JlYXRlUHJvcGVydHkodHlwZSwgbnVs bCwgbnVsbCwgQ3JlYXRlTWVtR3JvdXAob3B0aW9uYWxPYmplY3QsIG5ldyBNZXRoUHJvcFdpdGhJ bnN0KCkpLCBudWxsLCBudWxsKTsKKysgICAgICAgIHB1YmxpYyBFeHByUHJvcGVydHkgQ3JlYXRl UHJvcGVydHkoQ1R5cGUgdHlwZSwgRXhwciBvcHRpb25hbE9iamVjdCkKKysgICAgICAgIHsgcmV0 dXJuIENyZWF0ZVByb3BlcnR5KHR5cGUsIG51bGwsIG51bGwsIENyZWF0ZU1lbUdyb3VwKG9wdGlv bmFsT2JqZWN0LCBuZXcgTWV0aFByb3BXaXRoSW5zdCgpKSwgbnVsbCwgbnVsbCk7IH0KKyAKKy0g ICAgICAgIHB1YmxpYyBFeHByUHJvcGVydHkgQ3JlYXRlUHJvcGVydHkoQ1R5cGUgdHlwZSwgRXhw ciBvcHRpb25hbE9iamVjdFRocm91Z2gsIEV4cHIgYXJndW1lbnRzLCBFeHByTWVtYmVyR3JvdXAg bWVtYmVyR3JvdXAsIFByb3BXaXRoVHlwZSBwcm9wZXJ0eSwgTWV0aFdpdGhUeXBlIHNldE1ldGhv ZCkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJQcm9wZXJ0eSh0eXBlLCBvcHRpb25hbE9iamVj dFRocm91Z2gsIGFyZ3VtZW50cywgbWVtYmVyR3JvdXAsIHByb3BlcnR5LCBzZXRNZXRob2QpOwor KyAgICAgICAgcHVibGljIEV4cHJQcm9wZXJ0eSBDcmVhdGVQcm9wZXJ0eShDVHlwZSB0eXBlLCBF eHByIG9wdGlvbmFsT2JqZWN0VGhyb3VnaCwgRXhwciBhcmd1bWVudHMsIEV4cHJNZW1iZXJHcm91 cCBtZW1iZXJHcm91cCwgUHJvcFdpdGhUeXBlIHByb3BlcnR5LCBNZXRoV2l0aFR5cGUgc2V0TWV0 aG9kKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJQcm9wZXJ0eSh0eXBlLCBvcHRpb25hbE9i amVjdFRocm91Z2gsIGFyZ3VtZW50cywgbWVtYmVyR3JvdXAsIHByb3BlcnR5LCBzZXRNZXRob2Qp OyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckV2ZW50IENyZWF0ZUV2ZW50KENUeXBlIHR5cGUs IEV4cHIgb3B0aW9uYWxPYmplY3QsIEV2ZW50V2l0aFR5cGUgZXZlbnRXaXRoVHlwZSkgPT4gCist ICAgICAgICAgICAgbmV3IEV4cHJFdmVudCh0eXBlLCBvcHRpb25hbE9iamVjdCwgZXZlbnRXaXRo VHlwZSk7CisrICAgICAgICBwdWJsaWMgRXhwckV2ZW50IENyZWF0ZUV2ZW50KENUeXBlIHR5cGUs IEV4cHIgb3B0aW9uYWxPYmplY3QsIEV2ZW50V2l0aFR5cGUgZXZlbnRXaXRoVHlwZSkgIAorKyAg ICAgICAgeyByZXR1cm4gbmV3IEV4cHJFdmVudCh0eXBlLCBvcHRpb25hbE9iamVjdCwgZXZlbnRX aXRoVHlwZSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByTWVtYmVyR3JvdXAgQ3JlYXRlTWVt R3JvdXAoRVhQUkZMQUcgZmxhZ3MsIE5hbWUgbmFtZSwgVHlwZUFycmF5IHR5cGVBcmdzLCBTWU1L SU5EIHN5bUtpbmQsIENUeXBlIHBhcmVudFR5cGUsIE1ldGhvZE9yUHJvcGVydHlTeW1ib2wgbWVt YmVyU3ltYm9sLCBFeHByIG9iaiwgQ01lbWJlckxvb2t1cFJlc3VsdHMgbWVtYmVyTG9va3VwUmVz dWx0cykgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJNZW1iZXJHcm91cChUeXBlcy5HZXRNZXRo R3JwVHlwZSgpLCBmbGFncywgbmFtZSwgdHlwZUFyZ3MsIHN5bUtpbmQsIHBhcmVudFR5cGUsIG1l bWJlclN5bWJvbCwgb2JqLCBtZW1iZXJMb29rdXBSZXN1bHRzKTsKKysgICAgICAgIHB1YmxpYyBF eHByTWVtYmVyR3JvdXAgQ3JlYXRlTWVtR3JvdXAoRVhQUkZMQUcgZmxhZ3MsIE5hbWUgbmFtZSwg VHlwZUFycmF5IHR5cGVBcmdzLCBTWU1LSU5EIHN5bUtpbmQsIENUeXBlIHBhcmVudFR5cGUsIE1l dGhvZE9yUHJvcGVydHlTeW1ib2wgbWVtYmVyU3ltYm9sLCBFeHByIG9iaiwgQ01lbWJlckxvb2t1 cFJlc3VsdHMgbWVtYmVyTG9va3VwUmVzdWx0cykKKysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHBy TWVtYmVyR3JvdXAoVHlwZXMuR2V0TWV0aEdycFR5cGUoKSwgZmxhZ3MsIG5hbWUsIHR5cGVBcmdz LCBzeW1LaW5kLCBwYXJlbnRUeXBlLCBtZW1iZXJTeW1ib2wsIG9iaiwgbWVtYmVyTG9va3VwUmVz dWx0cyk7IH0KKyAKKyAgICAgICAgIHB1YmxpYyBFeHByTWVtYmVyR3JvdXAgQ3JlYXRlTWVtR3Jv dXAoRXhwciBvYmosIE1ldGhQcm9wV2l0aEluc3QgbWV0aG9kKQorICAgICAgICAgeworQEAgLTU3 LDI1ICs1NywyNSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNl bWFudGljcworICAgICAgICAgICAgICAgICBvYmosIG5ldyBDTWVtYmVyTG9va3VwUmVzdWx0cyhH bG9iYWxTeW1ib2xzLkFsbG9jUGFyYW1zKDEsIG5ld1tdIHt0eXBlfSksIG5hbWUpKTsKKyAgICAg ICAgIH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByVXNlckRlZmluZWRDb252ZXJzaW9uIENyZWF0 ZVVzZXJEZWZpbmVkQ29udmVyc2lvbihFeHByIGFyZywgRXhwciBjYWxsLCBNZXRoV2l0aEluc3Qg bWV0aG9kKSA9PiAKKy0gICAgICAgICAgICBuZXcgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbihh cmcsIGNhbGwsIG1ldGhvZCk7CisrICAgICAgICBwdWJsaWMgRXhwclVzZXJEZWZpbmVkQ29udmVy c2lvbiBDcmVhdGVVc2VyRGVmaW5lZENvbnZlcnNpb24oRXhwciBhcmcsIEV4cHIgY2FsbCwgTWV0 aFdpdGhJbnN0IG1ldGhvZCkKKysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByVXNlckRlZmluZWRD b252ZXJzaW9uKGFyZywgY2FsbCwgbWV0aG9kKTsgfQorIAorICAgICAgICAgcHVibGljIEV4cHJD YXN0IENyZWF0ZUNhc3QoQ1R5cGUgdHlwZSwgRXhwciBhcmd1bWVudCkgPT4gQ3JlYXRlQ2FzdCgw LCBDcmVhdGVDbGFzcyh0eXBlKSwgYXJndW1lbnQpOworIAorLSAgICAgICAgcHVibGljIEV4cHJD YXN0IENyZWF0ZUNhc3QoRVhQUkZMQUcgZmxhZ3MsIEV4cHJDbGFzcyB0eXBlLCBFeHByIGFyZ3Vt ZW50KSA9PiBuZXcgRXhwckNhc3QoZmxhZ3MsIHR5cGUsIGFyZ3VtZW50KTsKKysgICAgICAgIHB1 YmxpYyBFeHByQ2FzdCBDcmVhdGVDYXN0KEVYUFJGTEFHIGZsYWdzLCBFeHByQ2xhc3MgdHlwZSwg RXhwciBhcmd1bWVudCkgeyByZXR1cm4gbmV3IEV4cHJDYXN0KGZsYWdzLCB0eXBlLCBhcmd1bWVu dCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByUmV0dXJuIENyZWF0ZVJldHVybihFeHByIG9w dGlvbmFsT2JqZWN0KSA9PiBuZXcgRXhwclJldHVybihvcHRpb25hbE9iamVjdCk7CisrICAgICAg ICBwdWJsaWMgRXhwclJldHVybiBDcmVhdGVSZXR1cm4oRXhwciBvcHRpb25hbE9iamVjdCkgeyBy ZXR1cm4gbmV3IEV4cHJSZXR1cm4ob3B0aW9uYWxPYmplY3QpOyB9CisgCistICAgICAgICBwdWJs aWMgRXhwckxvY2FsIENyZWF0ZUxvY2FsKExvY2FsVmFyaWFibGVTeW1ib2wgbG9jYWwpID0+IG5l dyBFeHByTG9jYWwobG9jYWwpOworKyAgICAgICAgcHVibGljIEV4cHJMb2NhbCBDcmVhdGVMb2Nh bChMb2NhbFZhcmlhYmxlU3ltYm9sIGxvY2FsKSB7IHJldHVybiBuZXcgRXhwckxvY2FsKGxvY2Fs KTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJCb3VuZExhbWJkYSBDcmVhdGVBbm9ueW1vdXNN ZXRob2QoQWdncmVnYXRlVHlwZSBkZWxlZ2F0ZVR5cGUsIFNjb3BlIGFyZ3VtZW50U2NvcGUpID0+ IAorLSAgICAgICAgICAgIG5ldyBFeHByQm91bmRMYW1iZGEoZGVsZWdhdGVUeXBlLCBhcmd1bWVu dFNjb3BlKTsKKysgICAgICAgIHB1YmxpYyBFeHByQm91bmRMYW1iZGEgQ3JlYXRlQW5vbnltb3Vz TWV0aG9kKEFnZ3JlZ2F0ZVR5cGUgZGVsZWdhdGVUeXBlLCBTY29wZSBhcmd1bWVudFNjb3BlKQor KyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJCb3VuZExhbWJkYShkZWxlZ2F0ZVR5cGUsIGFyZ3Vt ZW50U2NvcGUpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckhvaXN0ZWRMb2NhbEV4cHIgQ3Jl YXRlSG9pc3RlZExvY2FsSW5FeHByZXNzaW9uKCkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJI b2lzdGVkTG9jYWxFeHByKFR5cGVzLkdldE9wdFByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9F WFBSRVNTSU9OKS5nZXRUaGlzVHlwZSgpKTsKKysgICAgICAgIHB1YmxpYyBFeHBySG9pc3RlZExv Y2FsRXhwciBDcmVhdGVIb2lzdGVkTG9jYWxJbkV4cHJlc3Npb24oKQorKyAgICAgICAgeyByZXR1 cm4gbmV3IEV4cHJIb2lzdGVkTG9jYWxFeHByKFR5cGVzLkdldE9wdFByZWRlZkFnZyhQcmVkZWZp bmVkVHlwZS5QVF9FWFBSRVNTSU9OKS5nZXRUaGlzVHlwZSgpKTsgfQorIAorLSAgICAgICAgcHVi bGljIEV4cHJNZXRob2RJbmZvIENyZWF0ZU1ldGhvZEluZm8oTWV0aFByb3BXaXRoSW5zdCBtd2kp ID0+IAorLSAgICAgICAgICAgIENyZWF0ZU1ldGhvZEluZm8obXdpLk1ldGgoKSwgbXdpLkdldFR5 cGUoKSwgbXdpLlR5cGVBcmdzKTsKKysgICAgICAgIHB1YmxpYyBFeHByTWV0aG9kSW5mbyBDcmVh dGVNZXRob2RJbmZvKE1ldGhQcm9wV2l0aEluc3QgbXdpKQorKyAgICAgICAgeyByZXR1cm4gQ3Jl YXRlTWV0aG9kSW5mbyhtd2kuTWV0aCgpLCBtd2kuR2V0VHlwZSgpLCBtd2kuVHlwZUFyZ3MpOyB9 CisgCisgICAgICAgICBwdWJsaWMgRXhwck1ldGhvZEluZm8gQ3JlYXRlTWV0aG9kSW5mbyhNZXRo b2RTeW1ib2wgbWV0aG9kLCBBZ2dyZWdhdGVUeXBlIG1ldGhvZFR5cGUsIFR5cGVBcnJheSBtZXRo b2RQYXJhbWV0ZXJzKQorICAgICAgICAgeworQEAgLTg0LDE5ICs4NCwxOSBAQCBuYW1lc3BhY2Ug TWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAg ICBtZXRob2QsIG1ldGhvZFR5cGUsIG1ldGhvZFBhcmFtZXRlcnMpOworICAgICAgICAgfQorIAor LSAgICAgICAgcHVibGljIEV4cHJQcm9wZXJ0eUluZm8gQ3JlYXRlUHJvcGVydHlJbmZvKFByb3Bl cnR5U3ltYm9sIHByb3AsIEFnZ3JlZ2F0ZVR5cGUgcHJvcGVydHlUeXBlKSA9PiAKKy0gICAgICAg ICAgICBuZXcgRXhwclByb3BlcnR5SW5mbyhUeXBlcy5HZXRPcHRQcmVkZWZBZ2coUHJlZGVmaW5l ZFR5cGUuUFRfUFJPUEVSVFlJTkZPKS5nZXRUaGlzVHlwZSgpLCBwcm9wLCBwcm9wZXJ0eVR5cGUp OworKyAgICAgICAgcHVibGljIEV4cHJQcm9wZXJ0eUluZm8gQ3JlYXRlUHJvcGVydHlJbmZvKFBy b3BlcnR5U3ltYm9sIHByb3AsIEFnZ3JlZ2F0ZVR5cGUgcHJvcGVydHlUeXBlKQorKyAgICAgICAg eyByZXR1cm4gbmV3IEV4cHJQcm9wZXJ0eUluZm8oVHlwZXMuR2V0T3B0UHJlZGVmQWdnKFByZWRl ZmluZWRUeXBlLlBUX1BST1BFUlRZSU5GTykuZ2V0VGhpc1R5cGUoKSwgcHJvcCwgcHJvcGVydHlU eXBlKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJGaWVsZEluZm8gQ3JlYXRlRmllbGRJbmZv KEZpZWxkU3ltYm9sIGZpZWxkLCBBZ2dyZWdhdGVUeXBlIGZpZWxkVHlwZSkgPT4gCistICAgICAg ICAgICAgbmV3IEV4cHJGaWVsZEluZm8oZmllbGQsIGZpZWxkVHlwZSwgVHlwZXMuR2V0T3B0UHJl ZGVmQWdnKFByZWRlZmluZWRUeXBlLlBUX0ZJRUxESU5GTykuZ2V0VGhpc1R5cGUoKSk7CisrICAg ICAgICBwdWJsaWMgRXhwckZpZWxkSW5mbyBDcmVhdGVGaWVsZEluZm8oRmllbGRTeW1ib2wgZmll bGQsIEFnZ3JlZ2F0ZVR5cGUgZmllbGRUeXBlKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJG aWVsZEluZm8oZmllbGQsIGZpZWxkVHlwZSwgVHlwZXMuR2V0T3B0UHJlZGVmQWdnKFByZWRlZmlu ZWRUeXBlLlBUX0ZJRUxESU5GTykuZ2V0VGhpc1R5cGUoKSk7IH0KKyAKKy0gICAgICAgIHByaXZh dGUgRXhwclR5cGVPZiBDcmVhdGVUeXBlT2YoRXhwckNsYXNzIHNvdXJjZVR5cGUpID0+IAorLSAg ICAgICAgICAgIG5ldyBFeHByVHlwZU9mKFR5cGVzLkdldFJlcVByZWRlZkFnZyhQcmVkZWZpbmVk VHlwZS5QVF9UWVBFKS5nZXRUaGlzVHlwZSgpLCBzb3VyY2VUeXBlKTsKKysgICAgICAgIHByaXZh dGUgRXhwclR5cGVPZiBDcmVhdGVUeXBlT2YoRXhwckNsYXNzIHNvdXJjZVR5cGUpCisrICAgICAg ICB7IHJldHVybiBuZXcgRXhwclR5cGVPZihUeXBlcy5HZXRSZXFQcmVkZWZBZ2coUHJlZGVmaW5l ZFR5cGUuUFRfVFlQRSkuZ2V0VGhpc1R5cGUoKSwgc291cmNlVHlwZSk7IH0KKyAKKy0gICAgICAg IHB1YmxpYyBFeHByVHlwZU9mIENyZWF0ZVR5cGVPZihDVHlwZSBzb3VyY2VUeXBlKSA9PiBDcmVh dGVUeXBlT2YoQ3JlYXRlQ2xhc3Moc291cmNlVHlwZSkpOworKyAgICAgICAgcHVibGljIEV4cHJU eXBlT2YgQ3JlYXRlVHlwZU9mKENUeXBlIHNvdXJjZVR5cGUpIHsgcmV0dXJuIENyZWF0ZVR5cGVP ZihDcmVhdGVDbGFzcyhzb3VyY2VUeXBlKSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByVXNl ckxvZ2ljYWxPcCBDcmVhdGVVc2VyTG9nT3AoQ1R5cGUgdHlwZSwgRXhwciB0cnVlRmFsc2VDYWxs LCBFeHByQ2FsbCBvcGVyYXRvckNhbGwpID0+IAorLSAgICAgICAgICAgIG5ldyBFeHByVXNlckxv Z2ljYWxPcCh0eXBlLCB0cnVlRmFsc2VDYWxsLCBvcGVyYXRvckNhbGwpOworKyAgICAgICAgcHVi bGljIEV4cHJVc2VyTG9naWNhbE9wIENyZWF0ZVVzZXJMb2dPcChDVHlwZSB0eXBlLCBFeHByIHRy dWVGYWxzZUNhbGwsIEV4cHJDYWxsIG9wZXJhdG9yQ2FsbCkKKysgICAgICAgIHsgcmV0dXJuIG5l dyBFeHByVXNlckxvZ2ljYWxPcCh0eXBlLCB0cnVlRmFsc2VDYWxsLCBvcGVyYXRvckNhbGwpOyB9 CisgCisgICAgICAgICBwdWJsaWMgRXhwclVzZXJMb2dpY2FsT3AgQ3JlYXRlVXNlckxvZ09wRXJy b3IoQ1R5cGUgdHlwZSwgRXhwciB0cnVlRmFsc2VDYWxsLCBFeHByQ2FsbCBvcGVyYXRvckNhbGwp CisgICAgICAgICB7CitAQCAtMTA1LDE2ICsxMDUsMTYgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5D U2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICByZXR1cm4gcnZhbDsK KyAgICAgICAgIH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQ29uY2F0IENyZWF0ZUNvbmNhdChF eHByIGZpcnN0LCBFeHByIHNlY29uZCkgPT4gbmV3IEV4cHJDb25jYXQoZmlyc3QsIHNlY29uZCk7 CisrICAgICAgICBwdWJsaWMgRXhwckNvbmNhdCBDcmVhdGVDb25jYXQoRXhwciBmaXJzdCwgRXhw ciBzZWNvbmQpIHsgcmV0dXJuIG5ldyBFeHByQ29uY2F0KGZpcnN0LCBzZWNvbmQpOyB9CisgCist ICAgICAgICBwdWJsaWMgRXhwckNvbnN0YW50IENyZWF0ZVN0cmluZ0NvbnN0YW50KHN0cmluZyBz dHIpID0+IAorLSAgICAgICAgICAgIENyZWF0ZUNvbnN0YW50KFR5cGVzLkdldFJlcVByZWRlZkFn ZyhQcmVkZWZpbmVkVHlwZS5QVF9TVFJJTkcpLmdldFRoaXNUeXBlKCksIENvbnN0VmFsLkdldChz dHIpKTsKKysgICAgICAgIHB1YmxpYyBFeHByQ29uc3RhbnQgQ3JlYXRlU3RyaW5nQ29uc3RhbnQo c3RyaW5nIHN0cikKKysgICAgICAgIHsgcmV0dXJuIENyZWF0ZUNvbnN0YW50KFR5cGVzLkdldFJl cVByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9TVFJJTkcpLmdldFRoaXNUeXBlKCksIENvbnN0 VmFsLkdldChzdHIpKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJNdWx0aUdldCBDcmVhdGVN dWx0aUdldChFWFBSRkxBRyBmbGFncywgQ1R5cGUgdHlwZSwgRXhwck11bHRpIG11bHRpKSA9PiAK Ky0gICAgICAgICAgICBuZXcgRXhwck11bHRpR2V0KHR5cGUsIGZsYWdzLCBtdWx0aSk7CisrICAg ICAgICBwdWJsaWMgRXhwck11bHRpR2V0IENyZWF0ZU11bHRpR2V0KEVYUFJGTEFHIGZsYWdzLCBD VHlwZSB0eXBlLCBFeHByTXVsdGkgbXVsdGkpCisrICAgICAgICB7IHJldHVybiBuZXcgRXhwck11 bHRpR2V0KHR5cGUsIGZsYWdzLCBtdWx0aSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByTXVs dGkgQ3JlYXRlTXVsdGkoRVhQUkZMQUcgZmxhZ3MsIENUeXBlIHR5cGUsIEV4cHIgbGVmdCwgRXhw ciBvcCkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJNdWx0aSh0eXBlLCBmbGFncywgbGVmdCwg b3ApOworKyAgICAgICAgcHVibGljIEV4cHJNdWx0aSBDcmVhdGVNdWx0aShFWFBSRkxBRyBmbGFn cywgQ1R5cGUgdHlwZSwgRXhwciBsZWZ0LCBFeHByIG9wKQorKyAgICAgICAgeyByZXR1cm4gbmV3 IEV4cHJNdWx0aSh0eXBlLCBmbGFncywgbGVmdCwgb3ApOyB9CisgCisgICAgICAgICAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworICAgICAgICAgLy8KK0BAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNw YWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgIC8v CisgICAgICAgICAvLyBUaGlzIHJldHVybnMgYSBudWxsIGZvciByZWZlcmVuY2UgdHlwZXMgYW5k IGFuIEVYUFJaRVJPSU5JVCBmb3IgYWxsIG90aGVycy4KKyAKKy0gICAgICAgIHB1YmxpYyBFeHBy IENyZWF0ZVplcm9Jbml0KENUeXBlIHR5cGUpID0+IENyZWF0ZVplcm9Jbml0KENyZWF0ZUNsYXNz KHR5cGUpLCBudWxsLCBmYWxzZSk7CisrICAgICAgICBwdWJsaWMgRXhwciBDcmVhdGVaZXJvSW5p dChDVHlwZSB0eXBlKSB7IHJldHVybiBDcmVhdGVaZXJvSW5pdChDcmVhdGVDbGFzcyh0eXBlKSwg bnVsbCwgZmFsc2UpOyB9CisgCisgICAgICAgICBwcml2YXRlIEV4cHIgQ3JlYXRlWmVyb0luaXQo RXhwckNsYXNzIHR5cGVFeHByLCBFeHByIG9yaWdpbmFsQ29uc3RydWN0b3JDYWxsLCBib29sIGlz Q29uc3RydWN0b3IpCisgICAgICAgICB7CitAQCAtMTg3LDE1ICsxODcsMTUgQEAgbmFtZXNwYWNl IE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBy ZXR1cm4gbmV3IEV4cHJaZXJvSW5pdCh0eXBlLCBvcmlnaW5hbENvbnN0cnVjdG9yQ2FsbCwgaXND b25zdHJ1Y3RvciwgaXNFcnJvcik7CisgICAgICAgICB9CisgCistICAgICAgICBwdWJsaWMgRXhw ckNvbnN0YW50IENyZWF0ZUNvbnN0YW50KENUeXBlIHR5cGUsIENvbnN0VmFsIGNvbnN0VmFsKSA9 PiBuZXcgRXhwckNvbnN0YW50KHR5cGUsIGNvbnN0VmFsKTsKKysgICAgICAgIHB1YmxpYyBFeHBy Q29uc3RhbnQgQ3JlYXRlQ29uc3RhbnQoQ1R5cGUgdHlwZSwgQ29uc3RWYWwgY29uc3RWYWwpIHsg cmV0dXJuIG5ldyBFeHByQ29uc3RhbnQodHlwZSwgY29uc3RWYWwpOyB9CisgCistICAgICAgICBw dWJsaWMgRXhwckNvbnN0YW50IENyZWF0ZUludGVnZXJDb25zdGFudChpbnQgeCkgPT4KKy0gICAg ICAgICAgICBDcmVhdGVDb25zdGFudChUeXBlcy5HZXRSZXFQcmVkZWZBZ2coUHJlZGVmaW5lZFR5 cGUuUFRfSU5UKS5nZXRUaGlzVHlwZSgpLCBDb25zdFZhbC5HZXQoeCkpOworKyAgICAgICAgcHVi bGljIEV4cHJDb25zdGFudCBDcmVhdGVJbnRlZ2VyQ29uc3RhbnQoaW50IHgpCisrICAgICAgICB7 IHJldHVybiBDcmVhdGVDb25zdGFudChUeXBlcy5HZXRSZXFQcmVkZWZBZ2coUHJlZGVmaW5lZFR5 cGUuUFRfSU5UKS5nZXRUaGlzVHlwZSgpLCBDb25zdFZhbC5HZXQoeCkpOyB9CisgCistICAgICAg ICBwdWJsaWMgRXhwckNvbnN0YW50IENyZWF0ZUJvb2xDb25zdGFudChib29sIGIpID0+IAorLSAg ICAgICAgICAgIENyZWF0ZUNvbnN0YW50KFR5cGVzLkdldFJlcVByZWRlZkFnZyhQcmVkZWZpbmVk VHlwZS5QVF9CT09MKS5nZXRUaGlzVHlwZSgpLCBDb25zdFZhbC5HZXQoYikpOworKyAgICAgICAg cHVibGljIEV4cHJDb25zdGFudCBDcmVhdGVCb29sQ29uc3RhbnQoYm9vbCBiKQorKyAgICAgICAg eyByZXR1cm4gQ3JlYXRlQ29uc3RhbnQoVHlwZXMuR2V0UmVxUHJlZGVmQWdnKFByZWRlZmluZWRU eXBlLlBUX0JPT0wpLmdldFRoaXNUeXBlKCksIENvbnN0VmFsLkdldChiKSk7IH0KKyAKKy0gICAg ICAgIHB1YmxpYyBFeHByQmxvY2sgQ3JlYXRlQmxvY2soRXhwclN0YXRlbWVudCBwT3B0aW9uYWxT dGF0ZW1lbnRzKSA9PiBuZXcgRXhwckJsb2NrKHBPcHRpb25hbFN0YXRlbWVudHMpOworKyAgICAg ICAgcHVibGljIEV4cHJCbG9jayBDcmVhdGVCbG9jayhFeHByU3RhdGVtZW50IHBPcHRpb25hbFN0 YXRlbWVudHMpIHsgcmV0dXJuIG5ldyBFeHByQmxvY2socE9wdGlvbmFsU3RhdGVtZW50cyk7IH0K KyAKKyAgICAgICAgIHB1YmxpYyBFeHByQXJyYXlJbmRleCBDcmVhdGVBcnJheUluZGV4KEV4cHIg YXJyYXksIEV4cHIgaW5kZXgpCisgICAgICAgICB7CitAQCAtMjEyLDExICsyMTIsMTEgQEAgbmFt ZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAg ICAgICByZXR1cm4gbmV3IEV4cHJBcnJheUluZGV4KHR5cGUsIGFycmF5LCBpbmRleCk7CisgICAg ICAgICB9CisgCistICAgICAgICBwdWJsaWMgRXhwckJpbk9wIENyZWF0ZUJpbm9wKEV4cHJlc3Np b25LaW5kIGV4cHJLaW5kLCBDVHlwZSB0eXBlLCBFeHByIGxlZnQsIEV4cHIgcmlnaHQpID0+IAor LSAgICAgICAgICAgIG5ldyBFeHByQmluT3AoZXhwcktpbmQsIHR5cGUsIGxlZnQsIHJpZ2h0KTsK KysgICAgICAgIHB1YmxpYyBFeHByQmluT3AgQ3JlYXRlQmlub3AoRXhwcmVzc2lvbktpbmQgZXhw cktpbmQsIENUeXBlIHR5cGUsIEV4cHIgbGVmdCwgRXhwciByaWdodCkgCisrICAgICAgICB7IHJl dHVybiBuZXcgRXhwckJpbk9wKGV4cHJLaW5kLCB0eXBlLCBsZWZ0LCByaWdodCk7IH0KKyAKKy0g ICAgICAgIHB1YmxpYyBFeHByVW5hcnlPcCBDcmVhdGVVbmFyeU9wKEV4cHJlc3Npb25LaW5kIGV4 cHJLaW5kLCBDVHlwZSB0eXBlLCBFeHByIG9wZXJhbmQpID0+IAorLSAgICAgICAgICAgIG5ldyBF eHByVW5hcnlPcChleHByS2luZCwgdHlwZSwgb3BlcmFuZCk7CisrICAgICAgICBwdWJsaWMgRXhw clVuYXJ5T3AgQ3JlYXRlVW5hcnlPcChFeHByZXNzaW9uS2luZCBleHByS2luZCwgQ1R5cGUgdHlw ZSwgRXhwciBvcGVyYW5kKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJVbmFyeU9wKGV4cHJL aW5kLCB0eXBlLCBvcGVyYW5kKTsgfQorIAorICAgICAgICAgcHVibGljIEV4cHJPcGVyYXRvciBD cmVhdGVPcGVyYXRvcihFeHByZXNzaW9uS2luZCBleHByS2luZCwgQ1R5cGUgdHlwZSwgRXhwciBh cmcxLCBFeHByIGFyZzIpCisgICAgICAgICB7CitAQCAtMjI4LDEyICsyMjgsMTIgQEAgbmFtZXNw YWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgIH0K KyAKKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQmluT3AgQ3JlYXRlVXNlckRlZmluZWRCaW5vcChF eHByZXNzaW9uS2luZCBleHByS2luZCwgQ1R5cGUgdHlwZSwgRXhwciBsZWZ0LCBFeHByIHJpZ2h0 LCBFeHByIGNhbGwsIE1ldGhQcm9wV2l0aEluc3QgdXNlck1ldGhvZCkgPT4gCistICAgICAgICAg ICAgbmV3IEV4cHJCaW5PcChleHByS2luZCwgdHlwZSwgbGVmdCwgcmlnaHQsIGNhbGwsIHVzZXJN ZXRob2QpOworKyAgICAgICAgcHVibGljIEV4cHJCaW5PcCBDcmVhdGVVc2VyRGVmaW5lZEJpbm9w KEV4cHJlc3Npb25LaW5kIGV4cHJLaW5kLCBDVHlwZSB0eXBlLCBFeHByIGxlZnQsIEV4cHIgcmln aHQsIEV4cHIgY2FsbCwgTWV0aFByb3BXaXRoSW5zdCB1c2VyTWV0aG9kKQorKyAgICAgICAgeyBy ZXR1cm4gbmV3IEV4cHJCaW5PcChleHByS2luZCwgdHlwZSwgbGVmdCwgcmlnaHQsIGNhbGwsIHVz ZXJNZXRob2QpOyB9CisgCisgICAgICAgICAvLyBUaGUgY2FsbCBtYXkgYmUgbGlmdGVkLCBidXQg d2UgZG8gbm90IG1hcmsgdGhlIG91dGVyIGJpbm9wIGFzIGxpZnRlZC4KKy0gICAgICAgIHB1Ymxp YyBFeHByVW5hcnlPcCBDcmVhdGVVc2VyRGVmaW5lZFVuYXJ5T3BlcmF0b3IoRXhwcmVzc2lvbktp bmQgZXhwcktpbmQsIENUeXBlIHR5cGUsIEV4cHIgb3BlcmFuZCwgRXhwckNhbGwgY2FsbCwgTWV0 aFByb3BXaXRoSW5zdCB1c2VyTWV0aG9kKSA9PiAKKy0gICAgICAgICAgICBuZXcgRXhwclVuYXJ5 T3AoZXhwcktpbmQsIHR5cGUsIG9wZXJhbmQsIGNhbGwsIHVzZXJNZXRob2QpOworKyAgICAgICAg cHVibGljIEV4cHJVbmFyeU9wIENyZWF0ZVVzZXJEZWZpbmVkVW5hcnlPcGVyYXRvcihFeHByZXNz aW9uS2luZCBleHByS2luZCwgQ1R5cGUgdHlwZSwgRXhwciBvcGVyYW5kLCBFeHByQ2FsbCBjYWxs LCBNZXRoUHJvcFdpdGhJbnN0IHVzZXJNZXRob2QpCisrICAgICAgICB7IHJldHVybiBuZXcgRXhw clVuYXJ5T3AoZXhwcktpbmQsIHR5cGUsIG9wZXJhbmQsIGNhbGwsIHVzZXJNZXRob2QpOyB9Cisg CisgICAgICAgICBwdWJsaWMgRXhwclVuYXJ5T3AgQ3JlYXRlTmVnKEVYUFJGTEFHIGZsYWdzLCBF eHByIG9wZXJhbmQpCisgICAgICAgICB7CitAQCAtMjQ2LDIzICsyNDYsMjIgQEAgbmFtZXNwYWNl IE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgIC8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQgZXZhbHVh dGVzIHRoZSBmaXJzdCwgZXZhbHVhdGVzIHRoZSBzZWNvbmQsIHJlc3VsdHMgaW4gdGhlIHNlY29u ZC4KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQmluT3AgQ3JlYXRlU2VxdWVuY2UoRXhwciBmaXJz dCwgRXhwciBzZWNvbmQpID0+CistICAgICAgICAgICAgQ3JlYXRlQmlub3AoRXhwcmVzc2lvbktp bmQuU2VxdWVuY2UsIHNlY29uZC5UeXBlLCBmaXJzdCwgc2Vjb25kKTsKKysgICAgICAgIHB1Ymxp YyBFeHByQmluT3AgQ3JlYXRlU2VxdWVuY2UoRXhwciBmaXJzdCwgRXhwciBzZWNvbmQpCisrICAg ICAgICB7IHJldHVybiBDcmVhdGVCaW5vcChFeHByZXNzaW9uS2luZC5TZXF1ZW5jZSwgc2Vjb25k LlR5cGUsIGZpcnN0LCBzZWNvbmQpOyB9CisgCisgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLworICAgICAgICAgLy8gQ3JlYXRlIGEgbm9kZSB0aGF0IGV2YWx1YXRlcyB0aGUgZmlyc3Qs IGV2YWx1YXRlcyB0aGUgc2Vjb25kLCByZXN1bHRzIGluIHRoZSBmaXJzdC4KKyAKKy0gICAgICAg IHB1YmxpYyBFeHByQmluT3AgQ3JlYXRlUmV2ZXJzZVNlcXVlbmNlKEV4cHIgZmlyc3QsIEV4cHIg c2Vjb25kKSA9PgorLSAgICAgICAgICAgIENyZWF0ZUJpbm9wKEV4cHJlc3Npb25LaW5kLlNlcXVl bmNlUmV2ZXJzZSwgZmlyc3QuVHlwZSwgZmlyc3QsIHNlY29uZCk7CisrICAgICAgICBwdWJsaWMg RXhwckJpbk9wIENyZWF0ZVJldmVyc2VTZXF1ZW5jZShFeHByIGZpcnN0LCBFeHByIHNlY29uZCkK KysgICAgICAgIHsgcmV0dXJuIENyZWF0ZUJpbm9wKEV4cHJlc3Npb25LaW5kLlNlcXVlbmNlUmV2 ZXJzZSwgZmlyc3QuVHlwZSwgZmlyc3QsIHNlY29uZCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBF eHByQXNzaWdubWVudCBDcmVhdGVBc3NpZ25tZW50KEV4cHIgbGVmdCwgRXhwciByaWdodCkgPT4g bmV3IEV4cHJBc3NpZ25tZW50KGxlZnQsIHJpZ2h0KTsKKysgICAgICAgIHB1YmxpYyBFeHByQXNz aWdubWVudCBDcmVhdGVBc3NpZ25tZW50KEV4cHIgbGVmdCwgRXhwciByaWdodCkgeyByZXR1cm4g bmV3IEV4cHJBc3NpZ25tZW50KGxlZnQsIHJpZ2h0KTsgfQorIAorICAgICAgICAgLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByTmFtZWRBcmd1bWVudFNwZWNp ZmljYXRpb24gQ3JlYXRlTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24oTmFtZSBuYW1lLCBFeHBy IHZhbHVlKSA9PgorLSAgICAgICAgICAgIG5ldyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24obmFtZSwgdmFsdWUpOworKyAgICAgICAgcHVibGljIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lm aWNhdGlvbiBDcmVhdGVOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbihOYW1lIG5hbWUsIEV4cHIg dmFsdWUpIHsgcmV0dXJuIG5ldyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24obmFtZSwg dmFsdWUpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwcldyYXAgQ3JlYXRlV3JhcChFeHByIGV4 cHJlc3Npb24pID0+IG5ldyBFeHByV3JhcChleHByZXNzaW9uKTsKKysgICAgICAgIHB1YmxpYyBF eHByV3JhcCBDcmVhdGVXcmFwKEV4cHIgZXhwcmVzc2lvbikgeyByZXR1cm4gbmV3IEV4cHJXcmFw KGV4cHJlc3Npb24pOyB9CisgCisgICAgICAgICBwdWJsaWMgRXhwckJpbk9wIENyZWF0ZVNhdmUo RXhwcldyYXAgd3JhcCkKKyAgICAgICAgIHsKK0BAIC0yNzIsNyArMjcxLDcgQEAgbmFtZXNwYWNl IE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBy ZXR1cm4gZXhwcjsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQ29uc3RhbnQg Q3JlYXRlTnVsbCgpID0+IENyZWF0ZUNvbnN0YW50KFR5cGVzLkdldE51bGxUeXBlKCksIGRlZmF1 bHQoQ29uc3RWYWwpKTsKKysgICAgICAgIHB1YmxpYyBFeHByQ29uc3RhbnQgQ3JlYXRlTnVsbCgp IHsgcmV0dXJuIENyZWF0ZUNvbnN0YW50KFR5cGVzLkdldE51bGxUeXBlKCksIGRlZmF1bHQoQ29u c3RWYWwpKTsgfQorIAorICAgICAgICAgcHVibGljIHZvaWQgQXBwZW5kSXRlbVRvTGlzdCgKKyAg ICAgICAgICAgICBFeHByIG5ld0l0ZW0sCitAQCAtMzA2LDE0ICszMDUsMTMgQEAgbmFtZXNwYWNl IE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBs YXN0ID0gbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAg IHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4cHIgb3AxLCBFeHByIG9wMikgPT4gbmV3IEV4 cHJMaXN0KG9wMSwgb3AyKTsKKysgICAgICAgIHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4 cHIgb3AxLCBFeHByIG9wMikgeyByZXR1cm4gbmV3IEV4cHJMaXN0KG9wMSwgb3AyKTsgfQorIAor LSAgICAgICAgcHVibGljIEV4cHJMaXN0IENyZWF0ZUxpc3QoRXhwciBvcDEsIEV4cHIgb3AyLCBF eHByIG9wMykgPT4gQ3JlYXRlTGlzdChvcDEsIENyZWF0ZUxpc3Qob3AyLCBvcDMpKTsKKysgICAg ICAgIHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4cHIgb3AxLCBFeHByIG9wMiwgRXhwciBv cDMpIHsgcmV0dXJuIENyZWF0ZUxpc3Qob3AxLCBDcmVhdGVMaXN0KG9wMiwgb3AzKSk7IH0KKyAK Ky0gICAgICAgIHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4cHIgb3AxLCBFeHByIG9wMiwg RXhwciBvcDMsIEV4cHIgb3A0KSA9PgorLSAgICAgICAgICAgIENyZWF0ZUxpc3Qob3AxLCBDcmVh dGVMaXN0KG9wMiwgQ3JlYXRlTGlzdChvcDMsIG9wNCkpKTsKKysgICAgICAgIHB1YmxpYyBFeHBy TGlzdCBDcmVhdGVMaXN0KEV4cHIgb3AxLCBFeHByIG9wMiwgRXhwciBvcDMsIEV4cHIgb3A0KSB7 IHJldHVybiBDcmVhdGVMaXN0KG9wMSwgQ3JlYXRlTGlzdChvcDIsIENyZWF0ZUxpc3Qob3AzLCBv cDQpKSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQ2xhc3MgQ3JlYXRlQ2xhc3MoQ1R5cGUg dHlwZSkgPT4gbmV3IEV4cHJDbGFzcyh0eXBlKTsKKysgICAgICAgIHB1YmxpYyBFeHByQ2xhc3Mg Q3JlYXRlQ2xhc3MoQ1R5cGUgdHlwZSkgeyByZXR1cm4gbmV3IEV4cHJDbGFzcyh0eXBlKTsgfQor ICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNy b3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0V4cHJlc3Npb25CaW5kZXIuY3Mg Yi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVy L1NlbWFudGljcy9FeHByZXNzaW9uQmluZGVyLmNzCitpbmRleCBlZTc1ZTdiMzhlLi5iZDdjNTJm ODdlIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hh cnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwcmVzc2lvbkJpbmRlci5jcworKysrIGIvc3Jj L01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1h bnRpY3MvRXhwcmVzc2lvbkJpbmRlci5jcworQEAgLTYwMSwxMCArNjAxLDExIEBAIG5hbWVzcGFj ZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAg Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGNvbXBpbGUgdGltZSBjb25zdGFudC4gSWYgd2UgZG8sIGNy ZWF0ZSBhIGNvbnN0YW50IGZvciBpdCBhbmQgc2V0IHRoZQorICAgICAgICAgICAgIC8vIG9yaWdp bmFsIHRyZWUgdG8gdGhlIGNhc3QuCisgCistICAgICAgICAgICAgaWYgKGV4cHJDb25zdCBpcyBF eHByQ29uc3RhbnQgY29uc3RhbnQgJiYgZXhwckZsYWdzID09IDAgJiYKKysgICAgICAgICAgICBp ZiAoZXhwckNvbnN0IGlzIEV4cHJDb25zdGFudCAmJiBleHByRmxhZ3MgPT0gMCAmJgorICAgICAg ICAgICAgICAgICBleHByU3JjLlR5cGUuZnVuZFR5cGUoKSA9PSB0eXBlRGVzdC5mdW5kVHlwZSgp ICYmCistICAgICAgICAgICAgICAgICghZXhwclNyYy5UeXBlLmlzUHJlZGVmVHlwZShQcmVkZWZp bmVkVHlwZS5QVF9TVFJJTkcpIHx8IGNvbnN0YW50LlZhbC5Jc051bGxSZWYpKQorKyAgICAgICAg ICAgICAgICAoIWV4cHJTcmMuVHlwZS5pc1ByZWRlZlR5cGUoUHJlZGVmaW5lZFR5cGUuUFRfU1RS SU5HKSB8fCAoKEV4cHJDb25zdGFudClleHByQ29uc3QpLlZhbC5Jc051bGxSZWYpKQorICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckNvbnN0YW50IGNvbnN0YW50ID0gKEV4cHJD b25zdGFudClleHByQ29uc3Q7CisgICAgICAgICAgICAgICAgIEV4cHJDb25zdGFudCBleHByID0g R2V0RXhwckZhY3RvcnkoKS5DcmVhdGVDb25zdGFudCh0eXBlRGVzdCwgY29uc3RhbnQuVmFsKTsK KyAgICAgICAgICAgICAgICAgcGV4cHJEZXN0ID0gZXhwcjsKKyAgICAgICAgICAgICAgICAgcmV0 dXJuOworQEAgLTExOTEsOCArMTE5Miw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1 bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgd2hpbGUgKGxpc3QgIT0gbnVsbCkK KyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIEV4cHIgYXJnOworLSAgICAgICAgICAg ICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCBuZXh0KQorKyAgICAgICAgICAgICAgICBpZiAobGlz dCBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAg RXhwckxpc3QgbmV4dCA9IChFeHByTGlzdClsaXN0OworICAgICAgICAgICAgICAgICAgICAgYXJn ID0gbmV4dC5PcHRpb25hbEVsZW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV4 dC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAgICAgfQorQEAgLTEyNjUsOCAr MTI2Nyw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50 aWNzCisgCisgICAgICAgICBwcml2YXRlIEV4cHIgVW53cmFwRXhwcmVzc2lvbihFeHByIHBFeHBy ZXNzaW9uKQorICAgICAgICAgeworLSAgICAgICAgICAgIHdoaWxlIChwRXhwcmVzc2lvbiBpcyBF eHByV3JhcCB3cmFwKQorKyAgICAgICAgICAgIHdoaWxlIChwRXhwcmVzc2lvbiBpcyBFeHByV3Jh cCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJXcmFwIHdyYXAgPSAoRXhw cldyYXApcEV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgIEV4cHIgd3JhcHBlZCA9IHdyYXAu T3B0aW9uYWxFeHByZXNzaW9uOworICAgICAgICAgICAgICAgICBpZiAod3JhcHBlZCA9PSBudWxs KQorICAgICAgICAgICAgICAgICB7CitAQCAtMTM0NCw4ICsxMzQ3LDkgQEAgbmFtZXNwYWNlIE1p Y3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgIGlmIChleHByLmlzTHZhbHVlKCkpCisgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByUHJvcGVydHkgcHJvcCkK KysgICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwclByb3BlcnR5KQorICAgICAgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByUHJvcGVydHkgcHJvcCA9IChFeHByUHJv cGVydHkpZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIENoZWNrTHZhbHVlUHJvcChwcm9wKTsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBtYXJrRmllbGRBc3NpZ25lZChl eHByKTsKK0BAIC0xNTcwLDkgKzE1NzQsMTAgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAu UnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUg aW52b2tpbmcgY29kZSBvbiBhIHN0cnVjdC12YWx1ZWQgZmllbGQsIG1hcmsgdGhlIHN0cnVjdCBh cyBhc3NpZ25lZCAodG8KKyAgICAgICAgICAgICAgICAgLy8gYXZvaWQgd2FybmluZyBDUzA2NDkp LgorLSAgICAgICAgICAgICAgICBpZiAocE9iamVjdCBpcyBFeHByRmllbGQgZmllbGQgJiYgIWZp ZWxkLkZpZWxkV2l0aFR5cGUuRmllbGQoKS5pc0Fzc2lnbmVkICYmICFzd3QuU3ltLklzRmllbGRT eW1ib2woKSAmJgorKyAgICAgICAgICAgICAgICBpZiAocE9iamVjdCBpcyBFeHByRmllbGQgJiYg ISgoRXhwckZpZWxkKXBPYmplY3QpLkZpZWxkV2l0aFR5cGUuRmllbGQoKS5pc0Fzc2lnbmVkICYm ICFzd3QuU3ltLklzRmllbGRTeW1ib2woKSAmJgorICAgICAgICAgICAgICAgICAgICAgdHlwZU9i ai5pc1N0cnVjdFR5cGUoKSAmJiAhdHlwZU9iai5pc1ByZWRlZmluZWQoKSkKKyAgICAgICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckZpZWxkIGZpZWxkID0gKEV4cHJGaWVs ZCkgcE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkV2l0aFR5cGUuRmll bGQoKS5pc0Fzc2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorIAorQEAgLTE3Nzks OCArMTc4NCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2Vt YW50aWNzCisgCisgICAgICAgICAgICAgICAgICAgICBFeHByIGFyZ3VtZW50ID0gaW5kaXI7Cisg ICAgICAgICAgICAgICAgICAgICBFeHByIHJ2YWw7CistICAgICAgICAgICAgICAgICAgICBpZiAo YXJndW1lbnQgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkKQorKyAgICAg ICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50IGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNh dGlvbikKKyAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQgPSAoRXhwck5hbWVkQXJndW1lbnRT cGVjaWZpY2F0aW9uKWFyZ3VtZW50OworICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRl eCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgbmFtZWQsIGxvb2sg Zm9yIHRoZSB0eXBlIG9mIHRoZSBtYXRjaGluZyBuYW1lLgorICAgICAgICAgICAgICAgICAgICAg ICAgIGZvcmVhY2ggKE5hbWUgaSBpbiBtb3N0RGVyaXZlZE1ldGhvZC5QYXJhbWV0ZXJOYW1lcykK K0BAIC0xOTE4LDggKzE5MjQsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAgRXhwciBleHByID0gaXQuQ3Vy cmVudCgpOworICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKKyAKKy0gICAgICAgICAgICAg ICAgICAgIGlmIChleHByIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCkK KysgICAgICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lm aWNhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQgPSAoRXhwck5hbWVkQXJndW1l bnRTcGVjaWZpY2F0aW9uKWV4cHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWQuVmFs dWUgPSB0cnlDb252ZXJ0KG5hbWVkLlZhbHVlLCBlbGVtZW50VHlwZSk7CisgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBlbHNlCitAQCAtMTk0MSw4ICsxOTQ4LDkg QEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAK KyAgICAgICAgIHByaXZhdGUgdm9pZCBtYXJrRmllbGRBc3NpZ25lZChFeHByIGV4cHIpCisgICAg ICAgICB7CistICAgICAgICAgICAgaWYgKDAgIT0gKGV4cHIuRmxhZ3MgJiBFWFBSRkxBRy5FWEZf TFZBTFVFKSAmJiBleHByIGlzIEV4cHJGaWVsZCBmaWVsZCkKKysgICAgICAgICAgICBpZiAoMCAh PSAoZXhwci5GbGFncyAmIEVYUFJGTEFHLkVYRl9MVkFMVUUpICYmIGV4cHIgaXMgRXhwckZpZWxk KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckZpZWxkIGZpZWxkID0gKEV4 cHJGaWVsZCkgZXhwcjsKKyAgICAgICAgICAgICAgICAgRmllbGRTeW1ib2wgc3ltYm9sOworICAg ICAgICAgICAgICAgICBkbworICAgICAgICAgICAgICAgICB7CitAQCAtMjAwOSw4ICsyMDE3LDkg QEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAg ICAgICAgICAgICBmb3IgKEV4cHIgbGlzdCA9IGFyZ3M7IGxpc3QgIT0gbnVsbDsgaWFyZysrKQor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRXhwciBhcmc7CistICAgICAgICAgICAg ICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0IG5leHQpCisrICAgICAgICAgICAgICAgIGlmIChsaXN0 IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBF eHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3Q7CisgICAgICAgICAgICAgICAgICAgICBhcmcg PSBuZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0 Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICB9CitAQCAtMjM2NCw4ICsy MzczLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRp Y3MKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIEV4cHIgYXJnOworIAorLSAgICAg ICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCBuZXh0KQorKyAgICAgICAgICAgICAgICBp ZiAobGlzdCBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgRXhwckxpc3QgbmV4dCA9IChFeHByTGlzdClsaXN0OworICAgICAgICAgICAgICAgICAg ICAgYXJnID0gbmV4dC5PcHRpb25hbEVsZW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICBsaXN0 ID0gbmV4dC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAgICAgfQorZGlmZiAt LWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVC aW5kZXIvU2VtYW50aWNzL0dyb3VwVG9BcmdzQmluZGVyLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvR3JvdXBUb0Fy Z3NCaW5kZXIuY3MKK2luZGV4IDI1YThkNDAzNDEuLmQxN2RlMzk3N2QgMTAwNjQ0CistLS0gYS9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1Nl bWFudGljcy9Hcm91cFRvQXJnc0JpbmRlci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAv c3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvR3JvdXBUb0FyZ3NC aW5kZXIuY3MKK0BAIC01MTAsNyArNTEwLDcgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAu UnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gbGV0 IHVzIHRocm91Z2guCisgICAgICAgICAgICAgICAgICAgICBpZiAobWV0aHByb3AuaXNQYXJhbUFy cmF5ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBwQXJndW1lbnRzLmNhcmcg JiYKKy0gICAgICAgICAgICAgICAgICAgICAgICBwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdIGlz IEV4cHJBcnJheUluaXQgYXJyYXlJbml0ICYmIGFycmF5SW5pdC5HZW5lcmF0ZWRGb3JQYXJhbUFy cmF5KQorKyAgICAgICAgICAgICAgICAgICAgICAgIHBBcmd1bWVudHMucHJnZXhwcltpbmRleF0g aXMgRXhwckFycmF5SW5pdCAmJiAoKEV4cHJBcnJheUluaXQpcEFyZ3VtZW50cy5wcmdleHByW2lu ZGV4XSkuR2VuZXJhdGVkRm9yUGFyYW1BcnJheSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUFycmF5QXJndW1lbnQgPSBwQXJndW1lbnRzLnBy Z2V4cHJbaW5kZXhdOworICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTUxOCw3ICs1MTgsNyBA QCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAg ICAgICAgICAgICAgICAgICAgLy8gUG9zaXRpb25hbC4KKyAgICAgICAgICAgICAgICAgICAgIGlm IChpbmRleCA8IHBBcmd1bWVudHMuY2FyZyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICEo cEFyZ3VtZW50cy5wcmdleHByW2luZGV4XSBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24pICYmCistICAgICAgICAgICAgICAgICAgICAgICAgIShwQXJndW1lbnRzLnByZ2V4cHJbaW5k ZXhdIGlzIEV4cHJBcnJheUluaXQgYXJyYXlJbml0UG9zICYmIGFycmF5SW5pdFBvcy5HZW5lcmF0 ZWRGb3JQYXJhbUFycmF5KSkKKysgICAgICAgICAgICAgICAgICAgICAgICAhKHBBcmd1bWVudHMu cHJnZXhwcltpbmRleF0gaXMgRXhwckFycmF5SW5pdCAmJiAoKEV4cHJBcnJheUluaXQpcEFyZ3Vt ZW50cy5wcmdleHByW2luZGV4XSkuR2VuZXJhdGVkRm9yUGFyYW1BcnJheSkpCisgICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcEV4cHJBcmd1bWVudHNbaW5k ZXhdID0gcEFyZ3VtZW50cy5wcmdleHByW2luZGV4KytdOworICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOworQEAgLTgzOSw3ICs4MzksNyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IHBBcmd1bWVudHMuY2FyZzsgaSsrKQorICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICBFeHByIGV4cHIgPSBwcmdleHByW2ldOworLSAgICAgICAgICAgICAg ICAgICAgaWYgKGV4cHIgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkICYm IG5hbWVkLk5hbWUgPT0gcE5hbWUpCisrICAgICAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gJiYgKChFeHByTmFtZWRBcmd1bWVudFNwZWNp ZmljYXRpb24pZXhwcikuTmFtZSA9PSBwTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwcjsKKyAgICAgICAgICAgICAgICAgICAg IH0KK0BAIC04NjEsNyArODYxLDggQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGlt ZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgSGFzaFNldDxOYW1lPiBuYW1lcyA9 IG5ldyBIYXNoU2V0PE5hbWU+KCk7CisgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgX3BBcmd1bWVudHMuY2FyZzsgaSsrKQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgICAgICBpZiAoIShfcEFyZ3VtZW50cy5wcmdleHByW2ldIGlzIEV4cHJOYW1lZEFyZ3Vt ZW50U3BlY2lmaWNhdGlvbiBuYW1lZCkpCisrICAgICAgICAgICAgICAgICAgICBFeHByTmFtZWRB cmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQ7CisrICAgICAgICAgICAgICAgICAgICBpZiAoIShf cEFyZ3VtZW50cy5wcmdleHByW2ldIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikp CisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFj dXJyZW50UG9zaXRpb24uSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKK0BA IC04NjksNiArODcwLDcgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl ci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg ICAgICAgICBuYW1lZCA9IChFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pIF9wQXJndW1l bnRzLnByZ2V4cHJbaV07CisgCisgICAgICAgICAgICAgICAgICAgICBOYW1lIG5hbWUgPSBuYW1l ZC5OYW1lOworICAgICAgICAgICAgICAgICAgICAgaWYgKCFtZXRocHJvcC5QYXJhbWV0ZXJOYW1l cy5Db250YWlucyhuYW1lKSkKK0BAIC0xMDgwLDggKzEwODIsOSBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFeHByIHBBcmd1bWVudCA9IF9wQXJndW1lbnRzLnByZ2V4cHJbaXZhcl07CisgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBuYW1lZCBhcmd1bWVu dCwgc3RyaXAgaXQgdG8gZG8gdGhlIGNvbnZlcnNpb24uCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChwQXJndW1lbnQgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5h bWVkKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFyZ3VtZW50IGlzIEV4cHJO YW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwck5hbWVkQXJndW1lbnRTcGVj aWZpY2F0aW9uIG5hbWVkID0gKEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbilwQXJndW1l bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQXJndW1lbnQgPSBuYW1lZC5W YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorZGlmZiAtLWdpdCBhL3Ny Yy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2Vt YW50aWNzL0ltcGxpY2l0Q29udmVyc2lvbi5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0ltcGxpY2l0Q29udmVyc2lv bi5jcworaW5kZXggYzllYjVhZTIxZC4uY2RlNTMzZDc1MCAxMDA2NDQKKy0tLSBhL3NyYy9NaWNy b3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNz L0ltcGxpY2l0Q29udmVyc2lvbi5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01p Y3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvSW1wbGljaXRDb252ZXJzaW9u LmNzCitAQCAtMTcyLDggKzE3Miw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRp bWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgICAgICAgICAgVlNGQUlMKCJCYWQg dHlwZSBzeW1ib2wga2luZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgICAgICAgY2FzZSBUeXBlS2luZC5US19NZXRob2RHcm91cFR5cGU6CistICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKF9leHByU3JjIGlzIEV4cHJNZW1iZXJHcm91cCBtZW1H cnApCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9leHByU3JjIGlzIEV4cHJNZW1iZXJH cm91cCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEV4cHJNZW1iZXJHcm91cCBtZW1HcnAgPSAoRXhwck1lbWJlckdyb3VwKV9leHByU3Jj OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByQ2FsbCBvdXRFeHByOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldFZhbCA9IF9iaW5kZXIuQmluZEdycENvbnZl cnNpb24obWVtR3JwLCBfdHlwZURlc3QsIF9uZWVkc0V4cHJEZXN0LCBvdXQgb3V0RXhwciwgZmFs c2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXhwckRlc3QgPSBvdXRFeHByOwor QEAgLTczNywxMCArNzM4LDEwIEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVC aW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgIC8vICogICBBIGNvbnN0YW50LWV4cHJl c3Npb24gb2YgdHlwZSBsb25nIGNhbiBiZSBjb252ZXJ0ZWQgdG8gdHlwZSB1bG9uZywgcHJvdmlk ZWQgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgIC8vICAgICB0aGUgY29uc3RhbnQtZXhw cmVzc2lvbiBpcyBub3QgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgIC8vIE5vdGU6IERvbid0 IHVzZSBHZXRDb25zdCBoZXJlIHNpbmNlIHRoZSBjb252ZXJzaW9uIG9ubHkgYXBwbGllcyB0byBi b25hLWZpZGUgY29tcGlsZSB0aW1lIGNvbnN0YW50cy4KKy0gICAgICAgICAgICAgICAgaWYgKF9l eHByU3JjIGlzIEV4cHJDb25zdGFudCBjb25zdGFudCAmJiBfZXhwclNyYy5Jc09LICYmCisrICAg ICAgICAgICAgICAgIGlmIChfZXhwclNyYyBpcyBFeHByQ29uc3RhbnQgJiYgX2V4cHJTcmMuSXNP SyAmJgorICAgICAgICAgICAgICAgICAgICAgKChwdFNyYyA9PSBQcmVkZWZpbmVkVHlwZS5QVF9J TlQgJiYgcHREZXN0ICE9IFByZWRlZmluZWRUeXBlLlBUX0JPT0wgJiYgcHREZXN0ICE9IFByZWRl ZmluZWRUeXBlLlBUX0NIQVIpIHx8CisgICAgICAgICAgICAgICAgICAgICAocHRTcmMgPT0gUHJl ZGVmaW5lZFR5cGUuUFRfTE9ORyAmJiBwdERlc3QgPT0gUHJlZGVmaW5lZFR5cGUuUFRfVUxPTkcp KSAmJgorLSAgICAgICAgICAgICAgICAgICAgaXNDb25zdGFudEluUmFuZ2UoY29uc3RhbnQsIF90 eXBlRGVzdCkpCisrICAgICAgICAgICAgICAgICAgICBpc0NvbnN0YW50SW5SYW5nZSgoKEV4cHJD b25zdGFudClfZXhwclNyYyksIF90eXBlRGVzdCkpCisgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSAoQ0xSIDYuMS42KTogaWYgaW50ZWdyYWwg Y29uc3RhbnQgaXMgaW4gcmFuZ2UsIHRoZSBjb252ZXJzaW9uIGlzIGEgbGVnYWwgaW1wbGljaXQg Y29udmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRLaW5kID0gQ29udktpbmQu SW1wbGljaXQ7CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29m dC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvTWV0aG9kVHlwZUluZmVycmVyLmNzIGIv c3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9T ZW1hbnRpY3MvTWV0aG9kVHlwZUluZmVycmVyLmNzCitpbmRleCA1MmQzNTRhYzUzLi5mNDM2ODQ2 OTBkIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hh cnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvTWV0aG9kVHlwZUluZmVycmVyLmNzCisrKysgYi9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1Nl bWFudGljcy9NZXRob2RUeXBlSW5mZXJyZXIuY3MKK0BAIC0xMDYzLDEwICsxMDYzLDExIEBAIG5h bWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAg ICAgICAgLy8gU1BFQzogICB5aWVsZHMgYSBzaW5nbGUgbWV0aG9kIHdpdGggcmV0dXJuIENUeXBl IFUgdGhlbiBhIGxvd2VyLWJvdW5kCisgICAgICAgICAgICAgLy8gU1BFQzogICBpbmZlcmVuY2Ug aXMgbWFkZSBmcm9tIFUgdG8gVGIuCisgCistICAgICAgICAgICAgaWYgKCEocFNvdXJjZSBpcyBF eHByTWVtYmVyR3JvdXAgbWVtR3JwKSkKKysgICAgICAgICAgICBpZiAoIShwU291cmNlIGlzIEV4 cHJNZW1iZXJHcm91cCkpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIEV4cHJNZW1iZXJHcm91cCBtZW1H cnAgPSAoRXhwck1lbWJlckdyb3VwKXBTb3VyY2U7CisgICAgICAgICAgICAgcFR5cGUgPSBwVHlw ZS5HZXREZWxlZ2F0ZVR5cGVPZlBvc3NpYmxlRXhwcmVzc2lvbigpOworICAgICAgICAgICAgIGlm ICghcFR5cGUuaXNEZWxlZ2F0ZVR5cGUoKSkKKyAgICAgICAgICAgICB7CitkaWZmIC0tZ2l0IGEv c3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9T ZW1hbnRpY3MvTnVsbGFibGUuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0 L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9OdWxsYWJsZS5jcworaW5kZXggYjIzZmM0 NDUwOS4uN2RiZTgyMjdjYSAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL051bGxhYmxlLmNzCisrKysg Yi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVy L1NlbWFudGljcy9OdWxsYWJsZS5jcworQEAgLTI5LDggKzI5LDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBEZWJ1Zy5Bc3NlcnQoZXhwciAhPSBudWxsKTsKKyAKKy0gICAgICAgICAgICBpZiAoZXhw ciBpcyBFeHByQ2FsbCBwQ2FsbCAmJiBwQ2FsbC5NZW1iZXJHcm91cC5PcHRpb25hbE9iamVjdCA9 PSBudWxsKQorKyAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJDYWxsICYmICgoRXhwckNhbGwp ZXhwcikuTWVtYmVyR3JvdXAuT3B0aW9uYWxPYmplY3QgPT0gbnVsbCkKKyAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgIEV4cHJDYWxsIHBDYWxsID0gKEV4cHJDYWxsKWV4cHI7CisgICAg ICAgICAgICAgICAgIE1ldGhvZFN5bWJvbCBtZXRoID0gcENhbGwuTWV0aFdpdGhJbnN0Lk1ldGgo KTsKKyAgICAgICAgICAgICAgICAgaWYgKG1ldGggIT0gbnVsbCAmJiBtZXRoLklzTnVsbGFibGVD b25zdHJ1Y3RvcigpKQorICAgICAgICAgICAgICAgICB7CitAQCAtNDUsNyArNDYsOCBAQCBuYW1l c3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworIAorICAgICAg ICAgcHVibGljIHN0YXRpYyBFeHByIFN0cmlwTnVsbGFibGVDb25zdHJ1Y3RvcihFeHByIHBFeHBy KQorICAgICAgICAgeworLSAgICAgICAgICAgIHdoaWxlIChJc051bGxhYmxlQ29uc3RydWN0b3Io cEV4cHIsIG91dCBFeHByQ2FsbCBjYWxsKSkKKysgICAgICAgICAgICBFeHByQ2FsbCBjYWxsOwor KyAgICAgICAgICAgIHdoaWxlIChJc051bGxhYmxlQ29uc3RydWN0b3IocEV4cHIsIG91dCBjYWxs KSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHBFeHByID0gY2FsbC5PcHRpb25h bEFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHBFeHByICE9IG51bGwg JiYgIShwRXhwciBpcyBFeHByTGlzdCkpOworQEAgLTYwLDcgKzYyLDggQEAgbmFtZXNwYWNlIE1p Y3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBEZWJ1 Zy5Bc3NlcnQoZXhwclNyYyAhPSBudWxsICYmIGV4cHJTcmMuVHlwZS5Jc051bGxhYmxlVHlwZSgp KTsKKyAKKyAgICAgICAgICAgICAvLyBGb3IgbmV3IFQ/KHgpLCB0aGUgYW5zd2VyIGlzIHguCist ICAgICAgICAgICAgaWYgKElzTnVsbGFibGVDb25zdHJ1Y3RvcihleHByU3JjLCBvdXQgRXhwckNh bGwgY2FsbCkpCisrICAgICAgICAgICAgRXhwckNhbGwgY2FsbDsKKysgICAgICAgICAgICBpZiAo SXNOdWxsYWJsZUNvbnN0cnVjdG9yKGV4cHJTcmMsIG91dCBjYWxsKSkKKyAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gY2FsbC5PcHRpb25hbEFyZ3VtZW50czsKKyAg ICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGFyZ3MgIT0gbnVsbCAmJiAhKGFyZ3MgaXMgRXhw ckxpc3QpKTsKK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0 L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL0V4cHJlc3Npb25JdGVyYXRvci5j cyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5k ZXIvU2VtYW50aWNzL1RyZWUvRXhwcmVzc2lvbkl0ZXJhdG9yLmNzCitpbmRleCA5NmVlMDMyNDIy Li45Mzk3NTQzZGU2IDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jv c29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9FeHByZXNzaW9uSXRlcmF0 b3IuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvRXhwcmVzc2lvbkl0ZXJhdG9yLmNzCitAQCAtODMs OCArODMsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFu dGljcworICAgICAgICAgICAgICAgICBfcExpc3QgPSBudWxsOworICAgICAgICAgICAgICAgICBf cEN1cnJlbnQgPSBudWxsOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlIGlmIChw RXhwciBpcyBFeHByTGlzdCBwTGlzdCkKKysgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBF eHByTGlzdCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJMaXN0IHBMaXN0 ID0gKEV4cHJMaXN0KXBFeHByOworICAgICAgICAgICAgICAgICBfcExpc3QgPSBwTGlzdDsKKyAg ICAgICAgICAgICAgICAgX3BDdXJyZW50ID0gcExpc3QuT3B0aW9uYWxFbGVtZW50OworICAgICAg ICAgICAgIH0KK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0 L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL1Zpc2l0b3JzL0V4cHJWaXNpdG9y QmFzZS5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRp bWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwclZpc2l0b3JCYXNlLmNzCitpbmRl eCAyYWJhYzRjZWNjLi44NGJjMGUxZDRjIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9WaXNp dG9ycy9FeHByVmlzaXRvckJhc2UuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhw clZpc2l0b3JCYXNlLmNzCitAQCAtMjEsOCArMjEsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICByZXR1cm4gcFJl c3VsdDsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJT dGF0ZW1lbnQgc3RhdGVtZW50KQorKyAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByU3RhdGVt ZW50KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwclN0YXRlbWVudCBzdGF0 ZW1lbnQgPSAoRXhwclN0YXRlbWVudClwRXhwcjsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIENh Y2hlRXhwck1hcHBpbmcocEV4cHIsIERpc3BhdGNoU3RhdGVtZW50TGlzdChzdGF0ZW1lbnQpKTsK KyAgICAgICAgICAgICB9CisgCitAQCAtMjc1LDExICsyNzYsMTMgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAg ICAgICAgICAgICAgICAgICBpZiAoIShuZXh0Tm9kZSBpcyBFeHByTGlzdCBuZXh0KSkKKysgICAg ICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0OworKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICghKG5leHROb2RlIGlzIEV4cHJMaXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5v ZGUgPSBWaXNpdChuZXh0Tm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAg bmV4dCA9IChFeHByTGlzdCluZXh0Tm9kZTsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICBs aXN0ID0gbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9UcmVlL1Zpc2l0b3JzL0V4cHJlc3Npb25UcmVlUmV3cml0ZXIuY3MgYi9zcmMvTWljcm9zb2Z0 LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVl L1Zpc2l0b3JzL0V4cHJlc3Npb25UcmVlUmV3cml0ZXIuY3MKK2luZGV4IDk2MDc1YjZkMzguLmUw NTgxZmQxNGUgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0 L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL1Zpc2l0b3JzL0V4cHJlc3Npb25U cmVlUmV3cml0ZXIuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQv Q1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwcmVzc2lvblRy ZWVSZXdyaXRlci5jcworQEAgLTUwLDggKzUwLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hh cnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAvLyBGb3IgYXNzaWdubWVu dHMsIHdlIGVpdGhlciBoYXZlIGEgbWVtYmVyIGFzc2lnbm1lbnQgb3IgYW4gaW5kZXhlZCBhc3Np Z25tZW50LgorICAgICAgICAgICAgIC8vRGVidWcuQXNzZXJ0KGFzc2lnbm1lbnQuR2V0TEhTKCku aXNQUk9QKCkgfHwgYXNzaWdubWVudC5HZXRMSFMoKS5pc0ZJRUxEKCkgfHwgYXNzaWdubWVudC5H ZXRMSFMoKS5pc0FSUkFZSU5ERVgoKSB8fCBhc3NpZ25tZW50LkdldExIUygpLmlzTE9DQUwoKSk7 CisgICAgICAgICAgICAgRXhwciBsaHM7CistICAgICAgICAgICAgaWYgKGFzc2lnbm1lbnQuTEhT IGlzIEV4cHJQcm9wZXJ0eSBwcm9wKQorKyAgICAgICAgICAgIGlmIChhc3NpZ25tZW50LkxIUyBp cyBFeHByUHJvcGVydHkpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByUHJv cGVydHkgcHJvcCA9IChFeHByUHJvcGVydHkpYXNzaWdubWVudC5MSFM7CisgICAgICAgICAgICAg ICAgIGlmIChwcm9wLk9wdGlvbmFsQXJndW1lbnRzPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBwcm9wZXJ0eS4KK0BAIC0zMDQsOCAr MzA1LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRp Y3MKKyAgICAgICAgICAgICAgICAgLy8gY2FuIGhhbmRsZSBpbiB0aGUgZ2VuZXJhbCBjYXNlIGFs bCBpbXBsaWNpdCBib3hpbmcgY29udmVyc2lvbnMuIFJpZ2h0IG5vdyBpdCAKKyAgICAgICAgICAg ICAgICAgLy8gcmVxdWlyZXMgdGhhdCBhbGwgYXJndW1lbnRzIHRvIGEgY2FsbCB0aGF0IG5lZWQg dG8gYmUgYm94ZWQgYmUgZXhwbGljaXRseSBib3hlZC4KKyAKKy0gICAgICAgICAgICAgICAgaWYg KHBPYmplY3QgIT0gbnVsbCAmJiBwT2JqZWN0IGlzIEV4cHJDYXN0IGNhc3QgJiYgY2FzdC5Jc0Jv eGluZ0Nhc3QpCisrICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0ICE9IG51bGwgJiYgcE9iamVj dCBpcyBFeHByQ2FzdCAmJiAoKEV4cHJDYXN0KXBPYmplY3QpLklzQm94aW5nQ2FzdCkKKyAgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNhc3QgY2FzdCA9IChFeHBy Q2FzdCkgcE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgIHBPYmplY3QgPSBjYXN0LkFyZ3Vt ZW50OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHBPYmplY3QgPSBWaXNp dChwT2JqZWN0KTsKK0BAIC01NzYsOCArNTc4LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hh cnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBpZiAodWRjYWxsICE9IG51 bGwpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQodWRjYWxs LktpbmQgPT0gRXhwcmVzc2lvbktpbmQuQ2FsbCB8fCB1ZGNhbGwuS2luZCA9PSBFeHByZXNzaW9u S2luZC5Vc2VyTG9naWNhbE9wKTsKKy0gICAgICAgICAgICAgICAgaWYgKHVkY2FsbCBpcyBFeHBy Q2FsbCBhc2NhbGwpCisrICAgICAgICAgICAgICAgIGlmICh1ZGNhbGwgaXMgRXhwckNhbGwpCisg ICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJDYWxsIGFzY2FsbCA9 IChFeHByQ2FsbCl1ZGNhbGw7CisgICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBhcmdzID0g KEV4cHJMaXN0KWFzY2FsbC5PcHRpb25hbEFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICAgICAg IERlYnVnLkFzc2VydChhcmdzLk9wdGlvbmFsTmV4dExpc3ROb2RlLktpbmQgIT0gRXhwcmVzc2lv bktpbmQuTGlzdCk7CisgICAgICAgICAgICAgICAgICAgICBwMSA9IGFyZ3MuT3B0aW9uYWxFbGVt ZW50OworQEAgLTcwOCw4ICs3MTEsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50 aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIEV4cHJCbG9jayBib2R5ID0gYW5vbm1l dGguT3B0aW9uYWxCb2R5OworIAorICAgICAgICAgICAgIC8vIFRoZSBtb3N0IGxpa2VseSBjYXNl OgorLSAgICAgICAgICAgIGlmIChib2R5Lk9wdGlvbmFsU3RhdGVtZW50cyBpcyBFeHByUmV0dXJu IHJldCkKKysgICAgICAgICAgICBpZiAoYm9keS5PcHRpb25hbFN0YXRlbWVudHMgaXMgRXhwclJl dHVybikKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJSZXR1cm4gcmV0ID0g KEV4cHJSZXR1cm4pYm9keS5PcHRpb25hbFN0YXRlbWVudHM7CisgICAgICAgICAgICAgICAgIERl YnVnLkFzc2VydChyZXQuT3B0aW9uYWxPYmplY3QgIT0gbnVsbCk7CisgICAgICAgICAgICAgICAg IHJldHVybiBWaXNpdChyZXQuT3B0aW9uYWxPYmplY3QpOworICAgICAgICAgICAgIH0KK0BAIC04 MzEsOCArODM1LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgRXhwciBwVURDb252ZXJzaW9uID0gY2FsbD8uUENv bnZlcnNpb25zOworICAgICAgICAgICAgICAgICBpZiAocFVEQ29udmVyc2lvbiAhPSBudWxsKQor ICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBpZiAocFVEQ29udmVyc2lv biBpcyBFeHByQ2FsbCBjb252Q2FsbCkKKysgICAgICAgICAgICAgICAgICAgIGlmIChwVURDb252 ZXJzaW9uIGlzIEV4cHJDYWxsKQorICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICAgICAgICAgIEV4cHJDYWxsIGNvbnZDYWxsID0gKEV4cHJDYWxsKXBVRENvbnZlcnNpb247 CisgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciBwVURDb252ZXJzaW9uQXJndW1lbnQgPSBj b252Q2FsbC5PcHRpb25hbEFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo SXNOdWxsYWJsZVZhbHVlQWNjZXNzKHBVRENvbnZlcnNpb25Bcmd1bWVudCwgcEFyZ3VtZW50KSkK KyAgICAgICAgICAgICAgICAgICAgICAgICB7CitAQCAtMTE3NCwyMyArMTE3OSwyNSBAQCBuYW1l c3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAg cHJpdmF0ZSBib29sIElzTnVsbGFibGVWYWx1ZUFjY2VzcyhFeHByIHBFeHByLCBFeHByIHBPYmpl Y3QpCisgICAgICAgICB7CisgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHBFeHByICE9IG51bGwp OworLSAgICAgICAgICAgIHJldHVybiBwRXhwciBpcyBFeHByUHJvcGVydHkgcHJvcCAmJiBwcm9w Lk1lbWJlckdyb3VwLk9wdGlvbmFsT2JqZWN0ID09IHBPYmplY3QgJiYgcE9iamVjdC5UeXBlLklz TnVsbGFibGVUeXBlKCk7CisrICAgICAgICAgICAgcmV0dXJuIHBFeHByIGlzIEV4cHJQcm9wZXJ0 eSAmJiAoKEV4cHJQcm9wZXJ0eSlwRXhwcikuTWVtYmVyR3JvdXAuT3B0aW9uYWxPYmplY3QgPT0g cE9iamVjdCAmJiBwT2JqZWN0LlR5cGUuSXNOdWxsYWJsZVR5cGUoKTsKKyAgICAgICAgIH0KKyAK KyAgICAgICAgIHByaXZhdGUgYm9vbCBJc0RlbGVnYXRlQ29uc3RydWN0b3JDYWxsKEV4cHIgcEV4 cHIpCisgICAgICAgICB7CisgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHBFeHByICE9IG51bGwp OworLSAgICAgICAgICAgIGlmICghKHBFeHByIGlzIEV4cHJDYWxsIHBDYWxsKSkKKysgICAgICAg ICAgICBFeHByQ2FsbCBwQ2FsbDsKKysgICAgICAgICAgICBpZiAoIShwRXhwciBpcyBFeHByQ2Fs bCkpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIHBDYWxsID0gKEV4cHJDYWxsKXBFeHByOworIAorICAg ICAgICAgICAgIHJldHVybiBwQ2FsbC5NZXRoV2l0aEluc3QuTWV0aCgpICE9IG51bGwgJiYKKyAg ICAgICAgICAgICAgICAgcENhbGwuTWV0aFdpdGhJbnN0Lk1ldGgoKS5Jc0NvbnN0cnVjdG9yKCkg JiYKKyAgICAgICAgICAgICAgICAgcENhbGwuVHlwZS5pc0RlbGVnYXRlVHlwZSgpICYmCisgICAg ICAgICAgICAgICAgIHBDYWxsLk9wdGlvbmFsQXJndW1lbnRzICE9IG51bGwgJiYKKy0gICAgICAg ICAgICAgICAgcENhbGwuT3B0aW9uYWxBcmd1bWVudHMgaXMgRXhwckxpc3QgbGlzdCAmJgorLSAg ICAgICAgICAgICAgICBsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlLktpbmQgPT0gRXhwcmVzc2lv bktpbmQuRnVuY3Rpb25Qb2ludGVyOworKyAgICAgICAgICAgICAgICAocENhbGwuT3B0aW9uYWxB cmd1bWVudHMgaXMgRXhwckxpc3QpICYmCisrICAgICAgICAgICAgICAgICgoRXhwckxpc3QpcENh bGwuT3B0aW9uYWxBcmd1bWVudHMpLk9wdGlvbmFsTmV4dExpc3ROb2RlLktpbmQgPT0gRXhwcmVz c2lvbktpbmQuRnVuY3Rpb25Qb2ludGVyOworICAgICAgICAgfQorICAgICAgICAgcHJpdmF0ZSBz dGF0aWMgYm9vbCBpc0VudW1Ub0RlY2ltYWxDb252ZXJzaW9uKENUeXBlIGFyZ3R5cGUsIENUeXBl IGRlc3R0eXBlKQorICAgICAgICAgeworZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uQ29sbGVjdGlv bnMvc3JjL1N5c3RlbS9Db2xsZWN0aW9ucy9HZW5lcmljL1NvcnRlZFNldC5UcmVlU3ViU2V0LmNz IGIvc3JjL1N5c3RlbS5Db2xsZWN0aW9ucy9zcmMvU3lzdGVtL0NvbGxlY3Rpb25zL0dlbmVyaWMv U29ydGVkU2V0LlRyZWVTdWJTZXQuY3MKK2luZGV4IDRlYjgxN2MwYWYuLjY3MTYzNmY0MjggMTAw NjQ0CistLS0gYS9zcmMvU3lzdGVtLkNvbGxlY3Rpb25zL3NyYy9TeXN0ZW0vQ29sbGVjdGlvbnMv R2VuZXJpYy9Tb3J0ZWRTZXQuVHJlZVN1YlNldC5jcworKysrIGIvc3JjL1N5c3RlbS5Db2xsZWN0 aW9ucy9zcmMvU3lzdGVtL0NvbGxlY3Rpb25zL0dlbmVyaWMvU29ydGVkU2V0LlRyZWVTdWJTZXQu Y3MKK0BAIC0zNTIsNyArMzUyLDEwIEBAIG5hbWVzcGFjZSBTeXN0ZW0uQ29sbGVjdGlvbnMuR2Vu ZXJpYworICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGxhdGZvcm1Ob3RTdXBwb3J0ZWRFeGNl cHRpb24oKTsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgcHJvdGVjdGVkIG92ZXJy aWRlIHZvaWQgT25EZXNlcmlhbGl6YXRpb24oT2JqZWN0IHNlbmRlcikgPT4gdGhyb3cgbmV3IFBs YXRmb3JtTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7CisrICAgICAgICAgICAgcHJvdGVjdGVkIG92 ZXJyaWRlIHZvaWQgT25EZXNlcmlhbGl6YXRpb24oT2JqZWN0IHNlbmRlcikKKysgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgIHRocm93IG5ldyBQbGF0Zm9ybU5vdFN1cHBvcnRlZEV4Y2Vw dGlvbigpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIH0KK2RpZmYgLS1n aXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9CcnVzaC5j cyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0JydXNoLmNz CitpbmRleCAwODkwNjllZDY0Li5iMjAyZWY3NzM2IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5E cmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvQnJ1c2guY3MKKysrKyBiL3NyYy9TeXN0 ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0JydXNoLmNzCitAQCAtNjIsNiAr NjIsNiBAQCBuYW1lc3BhY2UgU3lzdGVtLkRyYXdpbmcKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9CisgCistICAgICAgICB+QnJ1c2goKSA9PiBEaXNwb3NlKGZhbHNlKTsKKysgICAgICAgIH5C cnVzaCgpIHsgRGlzcG9zZShmYWxzZSk7IH0KKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9zcmMv U3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EZXNpZ24vQ2F0ZWdvcnlO YW1lQ29sbGVjdGlvbi5jcyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9E cmF3aW5nL0Rlc2lnbi9DYXRlZ29yeU5hbWVDb2xsZWN0aW9uLmNzCitpbmRleCAwNjU0OThjM2Fk Li5mY2M0ZjhiMmI2IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMv U3lzdGVtL0RyYXdpbmcvRGVzaWduL0NhdGVnb3J5TmFtZUNvbGxlY3Rpb24uY3MKKysrKyBiL3Ny Yy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0Rlc2lnbi9DYXRlZ29y eU5hbWVDb2xsZWN0aW9uLmNzCitAQCAtMTYsMzQgKzE2LDM0IEBAIG5hbWVzcGFjZSBTeXN0ZW0u RHJhd2luZy5EZXNpZ24KKyAgICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBv ZiA8c2VlIGNyZWY9J0NhdGVnb3J5TmFtZUNvbGxlY3Rpb24nLz4gYmFzZWQgb24gYW5vdGhlcgor ICAgICAgICAgLy8vIDxzZWUgY3JlZj0nQ2F0ZWdvcnlOYW1lQ29sbGVjdGlvbicvPi4KKyAgICAg ICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAgICBwdWJsaWMgQ2F0ZWdvcnlOYW1lQ29sbGVjdGlv bihDYXRlZ29yeU5hbWVDb2xsZWN0aW9uIHZhbHVlKSA9PiBJbm5lckxpc3QuQWRkUmFuZ2UodmFs dWUpOworKyAgICAgICAgcHVibGljIENhdGVnb3J5TmFtZUNvbGxlY3Rpb24oQ2F0ZWdvcnlOYW1l Q29sbGVjdGlvbiB2YWx1ZSkgeyBJbm5lckxpc3QuQWRkUmFuZ2UodmFsdWUpOyB9CisgCisgICAg ICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFu Y2Ugb2YgPHNlZSBjcmVmPSdDYXRlZ29yeU5hbWVDb2xsZWN0aW9uJy8+IGNvbnRhaW5pbmcgYW55 IGFycmF5IG9mCisgICAgICAgICAvLy8gPHNlZSBjcmVmPSdzdHJpbmcnLz4gb2JqZWN0cy4KKyAg ICAgICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAgICBwdWJsaWMgQ2F0ZWdvcnlOYW1lQ29sbGVj dGlvbihzdHJpbmdbXSB2YWx1ZSkgPT4gSW5uZXJMaXN0LkFkZFJhbmdlKHZhbHVlKTsKKysgICAg ICAgIHB1YmxpYyBDYXRlZ29yeU5hbWVDb2xsZWN0aW9uKHN0cmluZ1tdIHZhbHVlKSB7IElubmVy TGlzdC5BZGRSYW5nZSh2YWx1ZSk7IH0KKyAKKyAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAg ICAgIC8vLyBSZXByZXNlbnRzIHRoZSBlbnRyeSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9mIHRo ZSA8c2VlIGNyZWY9J3N0cmluZycvPi4KKyAgICAgICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAg ICBwdWJsaWMgc3RyaW5nIHRoaXNbaW50IGluZGV4XSA9PiAoKHN0cmluZykoSW5uZXJMaXN0W2lu ZGV4XSkpOworKyAgICAgICAgcHVibGljIHN0cmluZyB0aGlzW2ludCBpbmRleF0geyBnZXQgeyBy ZXR1cm4gKChzdHJpbmcpKElubmVyTGlzdFtpbmRleF0pKTsgfSB9CisgCisgICAgICAgICAvLy8g PHN1bW1hcnk+CisgICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0 aGUgIDxzZWUgY3JlZj0nQ2F0ZWdvcnlOYW1lQ29sbGVjdGlvbicvPiBjb250YWlucyB0aGUgc3Bl Y2lmaWVkCisgICAgICAgICAvLy8gPHNlZSBjcmVmPSdzdHJpbmcnLz4uCisgICAgICAgICAvLy8g PC9zdW1tYXJ5PgorLSAgICAgICAgcHVibGljIGJvb2wgQ29udGFpbnMoc3RyaW5nIHZhbHVlKSA9 PiBJbm5lckxpc3QuQ29udGFpbnModmFsdWUpOworKyAgICAgICAgcHVibGljIGJvb2wgQ29udGFp bnMoc3RyaW5nIHZhbHVlKSB7IHJldHVybiBJbm5lckxpc3QuQ29udGFpbnModmFsdWUpOyB9Cisg CisgICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgICAvLy8gQ29waWVzIHRoZSA8c2VlIGNy ZWY9J0NhdGVnb3J5TmFtZUNvbGxlY3Rpb24nLz4gdmFsdWVzIHRvIGEgb25lLWRpbWVuc2lvbmFs IDxzZWUgY3JlZj0nQXJyYXknLz4gaW5zdGFuY2UKKyAgICAgICAgIC8vLyBhdCB0aGUgc3BlY2lm aWVkIGluZGV4LgorICAgICAgICAgLy8vIDwvc3VtbWFyeT4KKy0gICAgICAgIHB1YmxpYyB2b2lk IENvcHlUbyhzdHJpbmdbXSBhcnJheSwgaW50IGluZGV4KSA9PiBJbm5lckxpc3QuQ29weVRvKGFy cmF5LCBpbmRleCk7CisrICAgICAgICBwdWJsaWMgdm9pZCBDb3B5VG8oc3RyaW5nW10gYXJyYXks IGludCBpbmRleCkgeyBJbm5lckxpc3QuQ29weVRvKGFycmF5LCBpbmRleCk7IH0KKyAKKyAgICAg ICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgIC8vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBhIDxz ZWUgY3JlZj0nc3RyaW5nJy8+IGluICB0aGUgPHNlZSBjcmVmPSdDYXRlZ29yeU5hbWVDb2xsZWN0 aW9uJy8+IC4KKyAgICAgICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAgICBwdWJsaWMgaW50IElu ZGV4T2Yoc3RyaW5nIHZhbHVlKSA9PiBJbm5lckxpc3QuSW5kZXhPZih2YWx1ZSk7CisrICAgICAg ICBwdWJsaWMgaW50IEluZGV4T2Yoc3RyaW5nIHZhbHVlKSB7IHJldHVybiBJbm5lckxpc3QuSW5k ZXhPZih2YWx1ZSk7IH0KKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkRyYXdp bmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5nMkQvQ3VzdG9tTGluZUNhcC5jcyBi L3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9D dXN0b21MaW5lQ2FwLmNzCitpbmRleCAxNTI0NzQxMTdkLi5kOTc2OTc3OGM3IDEwMDY0NAorLS0t IGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvRHJhd2luZzJE L0N1c3RvbUxpbmVDYXAuY3MKKysrKyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5 c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9DdXN0b21MaW5lQ2FwLmNzCitAQCAtMzgsNyArMzgsNyBA QCBuYW1lc3BhY2UgU3lzdGVtLkRyYXdpbmcuRHJhd2luZzJECisgICAgICAgICAgICAgU2V0TmF0 aXZlTGluZUNhcChuYXRpdmVMaW5lQ2FwKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGludGVy bmFsIEN1c3RvbUxpbmVDYXAoSW50UHRyIG5hdGl2ZUxpbmVDYXApID0+IFNldE5hdGl2ZUxpbmVD YXAobmF0aXZlTGluZUNhcCk7CisrICAgICAgICBpbnRlcm5hbCBDdXN0b21MaW5lQ2FwKEludFB0 ciBuYXRpdmVMaW5lQ2FwKSB7IFNldE5hdGl2ZUxpbmVDYXAobmF0aXZlTGluZUNhcCk7IH0KKyAK KyAgICAgICAgIGludGVybmFsIHZvaWQgU2V0TmF0aXZlTGluZUNhcChJbnRQdHIgaGFuZGxlKQor ICAgICAgICAgeworQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLkRy YXdpbmcyRAorICAgICAgICAgICAgIF9kaXNwb3NlZCA9IHRydWU7CisgICAgICAgICB9CisgCist ICAgICAgICB+Q3VzdG9tTGluZUNhcCgpID0+IERpc3Bvc2UoZmFsc2UpOworKyAgICAgICAgfkN1 c3RvbUxpbmVDYXAoKSB7IERpc3Bvc2UoZmFsc2UpOyB9CisgCisgICAgICAgICBwdWJsaWMgb2Jq ZWN0IENsb25lKCkKKyAgICAgICAgIHsKK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcu Q29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5nMkQvR3JhcGhpY3NQYXRoSXRlcmF0b3Iu Y3MgYi9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5n MkQvR3JhcGhpY3NQYXRoSXRlcmF0b3IuY3MKK2luZGV4IGNiOWMzNGM2MmEuLjNiNTUyZjFiYWYg MTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2lu Zy9EcmF3aW5nMkQvR3JhcGhpY3NQYXRoSXRlcmF0b3IuY3MKKysrKyBiL3NyYy9TeXN0ZW0uRHJh d2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9HcmFwaGljc1BhdGhJdGVy YXRvci5jcworQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLkRyYXdp bmcyRAorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0gICAgICAgIH5HcmFwaGljc1Bh dGhJdGVyYXRvcigpID0+IERpc3Bvc2UoZmFsc2UpOworKyAgICAgICAgfkdyYXBoaWNzUGF0aEl0 ZXJhdG9yKCkgeyBEaXNwb3NlKGZhbHNlKTsgfQorIAorICAgICAgICAgcHVibGljIGludCBOZXh0 U3VicGF0aChvdXQgaW50IHN0YXJ0SW5kZXgsIG91dCBpbnQgZW5kSW5kZXgsIG91dCBib29sIGlz Q2xvc2VkKQorICAgICAgICAgeworZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21t b24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9HcmFwaGljc1N0YXRlLmNzIGIvc3JjL1N5 c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvRHJhd2luZzJEL0dyYXBoaWNz U3RhdGUuY3MKK2luZGV4IGM3ZDA4Njc1NmUuLjYxZGU5NDhiMmQgMTAwNjQ0CistLS0gYS9zcmMv U3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5nMkQvR3JhcGhp Y3NTdGF0ZS5jcworKysrIGIvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0Ry YXdpbmcvRHJhd2luZzJEL0dyYXBoaWNzU3RhdGUuY3MKK0BAIC04LDcgKzgsNyBAQCBuYW1lc3Bh Y2UgU3lzdGVtLkRyYXdpbmcuRHJhd2luZzJECisgICAgIHsKKyAgICAgICAgIGludGVybmFsIGlu dCBuYXRpdmVTdGF0ZTsKKyAKKy0gICAgICAgIGludGVybmFsIEdyYXBoaWNzU3RhdGUoaW50IG5h dGl2ZVN0YXRlKSA9PiB0aGlzLm5hdGl2ZVN0YXRlID0gbmF0aXZlU3RhdGU7CisrICAgICAgICBp bnRlcm5hbCBHcmFwaGljc1N0YXRlKGludCBuYXRpdmVTdGF0ZSkgeyB0aGlzLm5hdGl2ZVN0YXRl ID0gbmF0aXZlU3RhdGU7IH0KKyAgICAgfQorIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVt LkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5nMkQvUmVnaW9uRGF0YS5j cyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcy RC9SZWdpb25EYXRhLmNzCitpbmRleCA1OTZiODYyMmViLi5kZmEyNDQ2Yzg3IDEwMDY0NAorLS0t IGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvRHJhd2luZzJE L1JlZ2lvbkRhdGEuY3MKKysrKyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3Rl bS9EcmF3aW5nL0RyYXdpbmcyRC9SZWdpb25EYXRhLmNzCitAQCAtNiw3ICs2LDcgQEAgbmFtZXNw YWNlIFN5c3RlbS5EcmF3aW5nLkRyYXdpbmcyRAorIHsKKyAgICAgcHVibGljIHNlYWxlZCBjbGFz cyBSZWdpb25EYXRhCisgICAgIHsKKy0gICAgICAgIGludGVybmFsIFJlZ2lvbkRhdGEoYnl0ZVtd IGRhdGEpID0+IERhdGEgPSBkYXRhOworKyAgICAgICAgaW50ZXJuYWwgUmVnaW9uRGF0YShieXRl W10gZGF0YSkgeyBEYXRhID0gZGF0YTsgfQorIAorICAgICAgICAgcHVibGljIGJ5dGVbXSBEYXRh IHsgZ2V0OyBzZXQ7IH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uRHJhd2luZy5D b21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL1RleHQvRm9udENvbGxlY3Rpb24uY3MgYi9zcmMvU3lz dGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9UZXh0L0ZvbnRDb2xsZWN0aW9u LmNzCitpbmRleCBkZjJhYzVjOGMyLi5hNDUxZGM2MjFkIDEwMDY0NAorLS0tIGEvc3JjL1N5c3Rl bS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvVGV4dC9Gb250Q29sbGVjdGlvbi5j cworKysrIGIvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvVGV4 dC9Gb250Q29sbGVjdGlvbi5jcworQEAgLTE0LDcgKzE0LDcgQEAgbmFtZXNwYWNlIFN5c3RlbS5E cmF3aW5nLlRleHQKKyAgICAgeworICAgICAgICAgaW50ZXJuYWwgSW50UHRyIF9uYXRpdmVGb250 Q29sbGVjdGlvbjsKKyAKKy0gICAgICAgIGludGVybmFsIEZvbnRDb2xsZWN0aW9uKCkgPT4gX25h dGl2ZUZvbnRDb2xsZWN0aW9uID0gSW50UHRyLlplcm87CisrICAgICAgICBpbnRlcm5hbCBGb250 Q29sbGVjdGlvbigpIHsgX25hdGl2ZUZvbnRDb2xsZWN0aW9uID0gSW50UHRyLlplcm87IH0KKyAK KyAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgIC8vLyBEaXNwb3NlcyBvZiB0aGlzIDxz ZWUgY3JlZj0nU3lzdGVtLkRyYXdpbmcuVGV4dC5Gb250Q29sbGVjdGlvbicvPgorQEAgLTU4LDYg KzU4LDYgQEAgbmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLlRleHQKKyAgICAgICAgICAgICB9Cisg ICAgICAgICB9CisgCistICAgICAgICB+Rm9udENvbGxlY3Rpb24oKSA9PiBEaXNwb3NlKGZhbHNl KTsKKysgICAgICAgIH5Gb250Q29sbGVjdGlvbigpIHsgRGlzcG9zZShmYWxzZSk7IH0KKyAgICAg fQorIH0KK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3Rl bS9EeW5hbWljL1V0aWxzL1R5cGVFeHRlbnNpb25zLmNzIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJl c3Npb25zL3NyYy9TeXN0ZW0vRHluYW1pYy9VdGlscy9UeXBlRXh0ZW5zaW9ucy5jcworaW5kZXgg YzQ1Y2FiYTA5My4uZWY5YTI1MjAzZCAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0ZW0uTGlucS5FeHBy ZXNzaW9ucy9zcmMvU3lzdGVtL0R5bmFtaWMvVXRpbHMvVHlwZUV4dGVuc2lvbnMuY3MKKysrKyBi L3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0R5bmFtaWMvVXRpbHMvVHlw ZUV4dGVuc2lvbnMuY3MKK0BAIC02NSw3ICs2NSw4IEBAIG5hbWVzcGFjZSBTeXN0ZW0uRHluYW1p Yy5VdGlscworICAgICAgICAgaW50ZXJuYWwgc3RhdGljIFBhcmFtZXRlckluZm9bXSBHZXRQYXJh bWV0ZXJzQ2FjaGVkKHRoaXMgTWV0aG9kQmFzZSBtZXRob2QpCisgICAgICAgICB7CisgICAgICAg ICAgICAgQ2FjaGVEaWN0PE1ldGhvZEJhc2UsIFBhcmFtZXRlckluZm9bXT4gcGljID0gc19wYXJh bUluZm9DYWNoZTsKKy0gICAgICAgICAgICBpZiAoIXBpYy5UcnlHZXRWYWx1ZShtZXRob2QsIG91 dCBQYXJhbWV0ZXJJbmZvW10gcGlzKSkKKysgICAgICAgICAgICBQYXJhbWV0ZXJJbmZvW10gcGlz OworKyAgICAgICAgICAgIGlmICghcGljLlRyeUdldFZhbHVlKG1ldGhvZCwgb3V0IHBpcykpCisg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBwaXMgPSBtZXRob2QuR2V0UGFyYW1ldGVy cygpOworIAorZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lz dGVtL0xpbnEvRXhwcmVzc2lvbnMvQ29tcGlsZXIvTGFtYmRhQ29tcGlsZXIuRXhwcmVzc2lvbnMu Y3MgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Np b25zL0NvbXBpbGVyL0xhbWJkYUNvbXBpbGVyLkV4cHJlc3Npb25zLmNzCitpbmRleCBkOGIxYzYx Zjc0Li44Y2VmYmQ0ZjE5IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25z L3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9Db21waWxlci9MYW1iZGFDb21waWxlci5FeHBy ZXNzaW9ucy5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0v TGlucS9FeHByZXNzaW9ucy9Db21waWxlci9MYW1iZGFDb21waWxlci5FeHByZXNzaW9ucy5jcwor QEAgLTk1Miw4ICs5NTIsOSBAQCBuYW1lc3BhY2UgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMuQ29t cGlsZXIKKyAgICAgICAgIHByaXZhdGUgdm9pZCBFbWl0TWVtYmVyQXNzaWdubWVudChNZW1iZXJB c3NpZ25tZW50IGJpbmRpbmcsIFR5cGUgb2JqZWN0VHlwZSkKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBFbWl0RXhwcmVzc2lvbihiaW5kaW5nLkV4cHJlc3Npb24pOworLSAgICAgICAgICAgIGlm IChiaW5kaW5nLk1lbWJlciBpcyBGaWVsZEluZm8gZmkpCisrICAgICAgICAgICAgaWYgKGJpbmRp bmcuTWVtYmVyIGlzIEZpZWxkSW5mbykKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IEZpZWxkSW5mbyBmaSA9IChGaWVsZEluZm8pYmluZGluZy5NZW1iZXI7CisgICAgICAgICAgICAg ICAgIF9pbGcuRW1pdChPcENvZGVzLlN0ZmxkLCBmaSk7CisgICAgICAgICAgICAgfQorICAgICAg ICAgICAgIGVsc2UKK0BAIC0xMDk3LDcgKzEwOTgsNyBAQCBuYW1lc3BhY2UgU3lzdGVtLkxpbnEu RXhwcmVzc2lvbnMuQ29tcGlsZXIKKyAgICAgICAgIHByaXZhdGUgc3RhdGljIFR5cGUgR2V0TWVt YmVyVHlwZShNZW1iZXJJbmZvIG1lbWJlcikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBEZWJ1 Zy5Bc3NlcnQobWVtYmVyIGlzIEZpZWxkSW5mbyB8fCBtZW1iZXIgaXMgUHJvcGVydHlJbmZvKTsK Ky0gICAgICAgICAgICByZXR1cm4gbWVtYmVyIGlzIEZpZWxkSW5mbyBmaSA/IGZpLkZpZWxkVHlw ZSA6IChtZW1iZXIgYXMgUHJvcGVydHlJbmZvKS5Qcm9wZXJ0eVR5cGU7CisrICAgICAgICAgICAg cmV0dXJuIG1lbWJlciBpcyBGaWVsZEluZm8gPyAoKEZpZWxkSW5mbyltZW1iZXIpLkZpZWxkVHlw ZSA6IChtZW1iZXIgYXMgUHJvcGVydHlJbmZvKS5Qcm9wZXJ0eVR5cGU7CisgICAgICAgICB9Cisg CisgICAgICAgICAjZW5kcmVnaW9uCitkaWZmIC0tZ2l0IGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJl c3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJBc3NpZ25tZW50LmNzIGIv c3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9N ZW1iZXJBc3NpZ25tZW50LmNzCitpbmRleCA0NzVhNmM2M2NjLi4wNzg3YjEwMTg2IDEwMDY0NAor LS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNz aW9ucy9NZW1iZXJBc3NpZ25tZW50LmNzCisrKysgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lv bnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01lbWJlckFzc2lnbm1lbnQuY3MKK0BAIC05 MywyMyArOTMsMjMgQEAgbmFtZXNwYWNlIFN5c3RlbS5MaW5xLkV4cHJlc3Npb25zCisgCisgICAg ICAgICAgICAgLy8gTnVsbCBwYXJhbU5hbWUgYXMgdGhlcmUgYXJlIHR3byBwYXRocyBoZXJlIHdp dGggZGlmZmVyZW50IHBhcmFtZXRlciBuYW1lcyBhdCB0aGUgQVBJCisgICAgICAgICAgICAgVHlw ZVV0aWxzLlZhbGlkYXRlVHlwZShkZWNUeXBlLCBudWxsKTsKKy0gICAgICAgICAgICBzd2l0Y2gg KG1lbWJlcikKKysgICAgICAgICAgICBpZiAobWVtYmVyIGlzIFByb3BlcnR5SW5mbykKKyAgICAg ICAgICAgICB7CistICAgICAgICAgICAgICAgIGNhc2UgUHJvcGVydHlJbmZvIHBpOgorLSAgICAg ICAgICAgICAgICAgICAgaWYgKCFwaS5DYW5Xcml0ZSkKKy0gICAgICAgICAgICAgICAgICAgIHsK Ky0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvci5Qcm9wZXJ0eURvZXNOb3RIYXZl U2V0dGVyKHBpLCBuYW1lb2YobWVtYmVyKSk7CistICAgICAgICAgICAgICAgICAgICB9CistCist ICAgICAgICAgICAgICAgICAgICBtZW1iZXJUeXBlID0gcGkuUHJvcGVydHlUeXBlOworLSAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CistCistICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbmZv IGZpOgorLSAgICAgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9IGZpLkZpZWxkVHlwZTsKKy0g ICAgICAgICAgICAgICAgICAgIGJyZWFrOworLQorLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogor LSAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuQXJndW1lbnRNdXN0QmVGaWVsZEluZm9P clByb3BlcnR5SW5mbyhuYW1lb2YobWVtYmVyKSk7CisrICAgICAgICAgICAgICAgIFByb3BlcnR5 SW5mbyBwaSA9IChQcm9wZXJ0eUluZm8pIG1lbWJlcjsKKysgICAgICAgICAgICAgICAgaWYgKCFw aS5DYW5Xcml0ZSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgdGhy b3cgRXJyb3IuUHJvcGVydHlEb2VzTm90SGF2ZVNldHRlcihwaSwgbmFtZW9mKG1lbWJlcikpOwor KyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBwaS5Qcm9w ZXJ0eVR5cGU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYgKG1lbWJlciBp cyBGaWVsZEluZm8pCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBGaWVsZEluZm8g ZmkgPSAoRmllbGRJbmZvKSBtZW1iZXI7CisrICAgICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBm aS5GaWVsZFR5cGU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgIHRocm93IEVycm9yLkFyZ3VtZW50TXVzdEJlRmllbGRJ bmZvT3JQcm9wZXJ0eUluZm8obmFtZW9mKG1lbWJlcikpOworICAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9z cmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyQmluZGluZy5jcyBiL3NyYy9TeXN0ZW0u TGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyQmluZGlu Zy5jcworaW5kZXggYzFjNTg4NDYxOC4uNDNjMDY5OGY5MCAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0 ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyQmlu ZGluZy5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlu cS9FeHByZXNzaW9ucy9NZW1iZXJCaW5kaW5nLmNzCitAQCAtNjEsNiArNjEsOSBAQCBuYW1lc3Bh Y2UgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMKKyAgICAgICAgICAgICByZXR1cm4gRXhwcmVzc2lv blN0cmluZ0J1aWxkZXIuTWVtYmVyQmluZGluZ1RvU3RyaW5nKHRoaXMpOworICAgICAgICAgfQor IAorLSAgICAgICAgaW50ZXJuYWwgdmlydHVhbCB2b2lkIFZhbGlkYXRlQXNEZWZpbmVkSGVyZShp bnQgaW5kZXgpID0+IHRocm93IEVycm9yLlVua25vd25CaW5kaW5nVHlwZShpbmRleCk7CisrICAg ICAgICBpbnRlcm5hbCB2aXJ0dWFsIHZvaWQgVmFsaWRhdGVBc0RlZmluZWRIZXJlKGludCBpbmRl eCkKKysgICAgICAgIHsKKysgICAgICAgICAgICB0aHJvdyBFcnJvci5Vbmtub3duQmluZGluZ1R5 cGUoaW5kZXgpOworKyAgICAgICAgfQorICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3NyYy9TeXN0 ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyTWVt YmVyQmluZGluZy5jcyBiL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xp bnEvRXhwcmVzc2lvbnMvTWVtYmVyTWVtYmVyQmluZGluZy5jcworaW5kZXggZjM5ODFhMmIxZi4u NzVkZDcxNDFkYSAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMv U3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyTWVtYmVyQmluZGluZy5jcworKysrIGIvc3Jj L1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1i ZXJNZW1iZXJCaW5kaW5nLmNzCitAQCAtMTI3LDIzICsxMjcsMjQgQEAgbmFtZXNwYWNlIFN5c3Rl bS5MaW5xLkV4cHJlc3Npb25zCisgCisgICAgICAgICAgICAgLy8gTnVsbCBwYXJhbU5hbWUgYXMg dGhlcmUgYXJlIHNldmVyYWwgcGF0aHMgaGVyZSB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXIgbmFt ZXMgYXQgdGhlIEFQSQorICAgICAgICAgICAgIFR5cGVVdGlscy5WYWxpZGF0ZVR5cGUoZGVjVHlw ZSwgbnVsbCwgYWxsb3dCeVJlZjogdHJ1ZSwgYWxsb3dQb2ludGVyOiB0cnVlKTsKKy0gICAgICAg ICAgICBzd2l0Y2ggKG1lbWJlcikKKysgICAgICAgICAgICBpZiAobWVtYmVyIGlzIFByb3BlcnR5 SW5mbykKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGNhc2UgUHJvcGVydHlJbmZv IHBpOgorLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwaS5DYW5SZWFkKQorLSAgICAgICAgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yLlByb3BlcnR5 RG9lc05vdEhhdmVHZXR0ZXIocGksIG5hbWVvZihtZW1iZXIpKTsKKy0gICAgICAgICAgICAgICAg ICAgIH0KKy0KKy0gICAgICAgICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBwaS5Qcm9wZXJ0eVR5 cGU7CistICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0KKy0gICAgICAgICAgICAgICAgY2Fz ZSBGaWVsZEluZm8gZmk6CistICAgICAgICAgICAgICAgICAgICBtZW1iZXJUeXBlID0gZmkuRmll bGRUeXBlOworLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIFBy b3BlcnR5SW5mbyBwaSA9IChQcm9wZXJ0eUluZm8pbWVtYmVyOworKyAgICAgICAgICAgICAgICBp ZiAoIXBpLkNhblJlYWQpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg IHRocm93IEVycm9yLlByb3BlcnR5RG9lc05vdEhhdmVHZXR0ZXIocGksIG5hbWVvZihtZW1iZXIp KTsKKysgICAgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAgICBkZWZhdWx0OgorLSAg ICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuQXJndW1lbnRNdXN0QmVGaWVsZEluZm9PclBy b3BlcnR5SW5mbyhuYW1lb2YobWVtYmVyKSk7CisrICAgICAgICAgICAgICAgIG1lbWJlclR5cGUg PSBwaS5Qcm9wZXJ0eVR5cGU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYg KG1lbWJlciBpcyBGaWVsZEluZm8pCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBG aWVsZEluZm8gZmkgPSAoRmllbGRJbmZvKW1lbWJlcjsKKysgICAgICAgICAgICAgICAgbWVtYmVy VHlwZSA9IGZpLkZpZWxkVHlwZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQor KyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuQXJndW1lbnRNdXN0 QmVGaWVsZEluZm9PclByb3BlcnR5SW5mbyhuYW1lb2YobWVtYmVyKSk7CisgICAgICAgICAgICAg fQorICAgICAgICAgfQorIAorZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uTGlucS9zcmMvU3lzdGVt L0xpbnEvUmV2ZXJzZS5jcyBiL3NyYy9TeXN0ZW0uTGlucS9zcmMvU3lzdGVtL0xpbnEvUmV2ZXJz ZS5jcworaW5kZXggZTY4YTRmNDJlZS4uYTYzNTI3NzliMCAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0 ZW0uTGlucS9zcmMvU3lzdGVtL0xpbnEvUmV2ZXJzZS5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5x L3NyYy9TeXN0ZW0vTGlucS9SZXZlcnNlLmNzCitAQCAtMTAzLDE5ICsxMDMsMjQgQEAgbmFtZXNw YWNlIFN5c3RlbS5MaW5xCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpZiAob25s eUlmQ2hlYXApCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIHN3aXRj aCAoX3NvdXJjZSkKKysgICAgICAgICAgICAgICAgICAgIGlmIChfc291cmNlIGlzIElJTGlzdFBy b3ZpZGVyPFRTb3VyY2U+KQorICAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAg ICAgICAgICAgIGNhc2UgSUlMaXN0UHJvdmlkZXI8VFNvdXJjZT4gbGlzdFByb3Y6CistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0UHJvdi5HZXRDb3VudChvbmx5SWZDaGVh cDogdHJ1ZSk7CistCistICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJQ29sbGVjdGlvbjxU U291cmNlPiBjb2xUOgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sVC5D b3VudDsKKy0KKy0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElDb2xsZWN0aW9uIGNvbDoK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbC5Db3VudDsKKy0KKy0gICAg ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLTE7CisrICAgICAgICAgICAgICAgICAgICAgICAgSUlMaXN0UHJvdmlkZXI8VFNv dXJjZT4gbGlzdFByb3YgPSAoSUlMaXN0UHJvdmlkZXI8VFNvdXJjZT4pX3NvdXJjZTsKKysgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdFByb3YuR2V0Q291bnQob25seUlmQ2hlYXA6 IHRydWUpOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgZWxz ZSBpZiAoX3NvdXJjZSBpcyBJQ29sbGVjdGlvbjxUU291cmNlPikKKysgICAgICAgICAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBJQ29sbGVjdGlvbjxUU291cmNlPiBjb2xU ID0gKElDb2xsZWN0aW9uPFRTb3VyY2U+KSBfc291cmNlOworKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBjb2xULkNvdW50OworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgICAgICAgICAgZWxzZSBpZiAoX3NvdXJjZSBpcyBJQ29sbGVjdGlvbikKKysgICAgICAgICAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBJQ29sbGVjdGlvbiBjb2wgPSAo SUNvbGxlY3Rpb24pIF9zb3VyY2U7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNv bC5Db3VudDsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIGVs c2UKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLTE7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAKK2Rp ZmYgLS1naXQgYS9zcmMvU3lzdGVtLk5ldC5IdHRwTGlzdGVuZXIvc3JjL1N5c3RlbS9OZXQvV2Vi U29ja2V0cy9IdHRwTGlzdGVuZXJXZWJTb2NrZXRDb250ZXh0LmNzIGIvc3JjL1N5c3RlbS5OZXQu SHR0cExpc3RlbmVyL3NyYy9TeXN0ZW0vTmV0L1dlYlNvY2tldHMvSHR0cExpc3RlbmVyV2ViU29j a2V0Q29udGV4dC5jcworaW5kZXggNTMyMTU3ODk0Ni4uZmY1NDY3NzAyNyAxMDA2NDQKKy0tLSBh L3NyYy9TeXN0ZW0uTmV0Lkh0dHBMaXN0ZW5lci9zcmMvU3lzdGVtL05ldC9XZWJTb2NrZXRzL0h0 dHBMaXN0ZW5lcldlYlNvY2tldENvbnRleHQuY3MKKysrKyBiL3NyYy9TeXN0ZW0uTmV0Lkh0dHBM aXN0ZW5lci9zcmMvU3lzdGVtL05ldC9XZWJTb2NrZXRzL0h0dHBMaXN0ZW5lcldlYlNvY2tldENv bnRleHQuY3MKK0BAIC05NCw4ICs5NCw5IEBAIG5hbWVzcGFjZSBTeXN0ZW0uTmV0LldlYlNvY2tl dHMKKyAgICAgICAgICAgICAgICAgaWYgKCEodXNlciBpcyBXaW5kb3dzUHJpbmNpcGFsKSkKKyAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgLy8gQXV0aGVudGljYXRpb25T Y2hlbWVzLkJhc2ljLgorLSAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXIuSWRlbnRpdHkgaXMg SHR0cExpc3RlbmVyQmFzaWNJZGVudGl0eSBiYXNpY0lkZW50aXR5KQorKyAgICAgICAgICAgICAg ICAgICAgaWYgKHVzZXIuSWRlbnRpdHkgaXMgSHR0cExpc3RlbmVyQmFzaWNJZGVudGl0eSkKKyAg ICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBIdHRwTGlzdGVu ZXJCYXNpY0lkZW50aXR5IGJhc2ljSWRlbnRpdHkgPSAoSHR0cExpc3RlbmVyQmFzaWNJZGVudGl0 eSl1c2VyLklkZW50aXR5OworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR2Vu ZXJpY1ByaW5jaXBhbChuZXcgSHR0cExpc3RlbmVyQmFzaWNJZGVudGl0eShiYXNpY0lkZW50aXR5 Lk5hbWUsIGJhc2ljSWRlbnRpdHkuUGFzc3dvcmQpLCBudWxsKTsKKyAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgfQotLSAKMi40NS4yCgo= --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0021-gnu-Add-mono-6.12.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0021-gnu-Add-mono-6.12.0.patch RnJvbSA1NzEyMjIwZTA3ZDcyNzk4YzJlYjhiZTI2ZTQwMjVhNzc2MjA1MWMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogV2Vk LCAyNyBOb3YgMjAyNCAwMTozNzo0MApTdWJqZWN0OiBbUEFUQ0ggdjIgMjEvMjFdIGdudTogQWRk IG1vbm8tNi4xMi4wLgoKVGhpcyBpbmNsdWRlcyBhIHBhdGNoIHRvIGFkZCBzdXBwb3J0IGZvciBh IDxydW5wYXRoPiBlbGVtZW50IHRvCm1vbm8ncyAqLmRsbC5jb25maWcgYW5kICouZXhlLmNvbmZp ZyBmaWxlcy4gIFNlZSBtb25vLTYuMTIuMC1hZGQtcnVucGF0aC5wYXRjaApmb3IgZGV0YWlscy4K CiogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KICAobW9uby02LjEyLjAtZXh0ZXJuYWwtcmVwby1z cGVjcywgbW9uby02LjEyLjApOiBOZXcgdmFyaWFibGUuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMv bW9uby02LjEyLjAte2FkZC1ydW5wYXRoLGZpeC1Bc3NlbWJseVJlc29sdmVyLGZpeC1Db25kaXRp b25QYXJzZXJ9LnBhdGNoOiBOZXcgcGF0Y2hlcy4KKiBnbnUvbG9jYWwubWsgKGRpc3RfcGF0Y2hf REFUQSk6IFJlZ2lzdGVyIG5ldyBwYXRjaGVzLgoKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20g ICAgICAgICAgICAgICAgICAgICAgIHwgMTk3ICsrKysrKysrKysrKysrKwogLi4uL3BhdGNoZXMv bW9uby02LjEyLjAtYWRkLXJ1bnBhdGgucGF0Y2ggICAgIHwgMTg1ICsrKysrKysrKysrKysrCiAu Li4vbW9uby02LjEyLjAtZml4LUFzc2VtYmx5UmVzb2x2ZXIucGF0Y2ggICAgfCAyMzYgKysrKysr KysrKysrKysrKysrCiAuLi4vbW9uby02LjEyLjAtZml4LUNvbmRpdGlvblBhcnNlci5wYXRjaCAg ICAgfCAgNDYgKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA2NjcgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNi4xMi4wLWFkZC1ydW5wYXRo LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEy LjAtZml4LUFzc2VtYmx5UmVzb2x2ZXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1maXgtQ29uZGl0aW9uUGFyc2VyLnBhdGNoCgpkaWZm IC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IDA0Y2Y4ZGM1NzhlLi42 MzBiYWM3ZTk1ZCAxMDA2NDQKLS0tIGEvZ251L2xvY2FsLm1rCisrKyBiL2dudS9sb2NhbC5tawpA QCAtMTgzNSw2ICsxODM1LDkgQEAgZGlzdF9wYXRjaF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNr YWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tb25vLTUuOC4wLXBhdGNoZXMucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNo ZXMvbW9uby01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2gJXAorICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tb25vLTYuMTIuMC1hZGQtcnVucGF0aC5wYXRjaAkJXAorICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tb25vLTYuMTIuMC1maXgtQXNzZW1ibHlSZXNvbHZlci5wYXRjaAlcCisgICVEJS9w YWNrYWdlcy9wYXRjaGVzL21vbm8tNi4xMi4wLWZpeC1Db25kaXRpb25QYXJzZXIucGF0Y2gJXAog ICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLW1jcy1wYXRjaGVzLWZyb20tNS4xMC4wLnBhdGNo CVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9zYWljYXRjaGVyLXVuYnVuZGxlLWh0c2xpYi5w YXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21ycmVzY3VlLXN1cHBvcnQtbG92ZS0xMS5w YXRjaAkJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2Fn ZXMvZG90bmV0LnNjbQppbmRleCA5YzM4YTgzY2M2NC4uNzU5ZDM0YmExOTUgMTAwNjQ0Ci0tLSBh L2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBA IC0xNzA1LDMgKzE3MDUsMjAwIEBAIChkZWZpbmUtcHVibGljIGxpYmdkaXBsdXMKIG1vc3Qgb2Yg dGhlIGhlYXZ5IGxpZnRpbmcuIikKICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20v bW9uby9saWJnZGlwbHVzIikKICAgICAobGljZW5zZSBsaWNlbnNlOmV4cGF0KSkpCisKKyhkZWZp bmUgbW9uby02LjEyLjAtZXh0ZXJuYWwtcmVwby1zcGVjcworICAnKCgiYXBpLWRvYy10b29scyIg ICAgICAgICAgICAgICAiNWRhODEyN2FmOWU2OGM5ZDU4YTkwYWE5ZGUyMWY1NzQ5MWQ4MTI2MSIK KyAgICAgIjBycThkeG15NWF2MzZuZDI5OGs2MGQ4czM4NnpocWx3NjN5bjJ5d2MwNDE2eHNmbHNj ZzQiCisgICAgICM6cmVjdXJzaXZlPyAjdCkKKyAgICAoImFwaS1zbmFwc2hvdCIgICAgICAgICAg ICAgICAgIjgwOGU4YTllNGJlOGQzOGUwOTdkMmIwOTE5Y2FjMzdiYzE5NTg0NGEiCisgICAgICIx aTVtaWdkdzY0OWJteHFpaTk5cTJoZDZ2a2ExMXdsY3BoZnJtOThrYjdwcHJ6NGs0MDFhIikKKyAg ICAoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdm NjA5ZTg4NzMzN2U0NGUyOTkiCisgICAgICIwcmtzMzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04 ZDFramQ3ejRsOTRpaWlyd24xZnExIikKKyAgICA7OyAoKCJodHRwczovL2dpdGh1Yi5jb20vVW5p dHktVGVjaG5vbG9naWVzL2Jkd2djIiAiYmR3Z2MiKQorICAgIDs7ICAiYTI3ZWRkYjgzN2Q2MTNj YjRjZjQzNjQwNWMyM2NlMzllZDE2YTg2ZCIKKyAgICA7OyAgIiIpCisgICAgKCgicmVmZXJlbmNl LWFzc2VtYmxpZXMiICJiaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgICAiZTY4MDQ2 ZDUxMDZhYTAzNDljMjNmOTU4MjE0NTY5NTVmYzE1Yjk2YiIKKyAgICAgIjFtcXB6Mjc0cWRobDg0 eTZ4OGJhenJmbWFqY2Y2cWFnaWtzMmcwZ3lnNHF5cXdncnA0OTAiKQorICAgICgiYm9ja2J1aWxk IiAgICAgICAgICAgICAgICAgICAiM2JkNDRmNjc4NGI4NWIxZWNlOGIwMGIxM2QxMmNmNDE2ZjVh ODdlNyIKKyAgICAgIjB6M2Q4cXlsZndubGtscGN2c21zZ3k1bjI0OGdjZmY1dm16cWp6YWxmajdk MWg3dmNqeHMiKQorICAgICgiYm9yaW5nc3NsIiAgICAgICAgICAgICAgICAgICAiMjk2MTM3Y2Y5 ODk2ODhiMDNlZDg5ZjcyY2Q3YmZkODZkNDcwNDQxZSIKKyAgICAgIjExZ2hkYXlmY3Z5c25oMTYx N2JqNDc4aHhyZzdiNDNqcGs3dmdhZm02amI3eWtweGw4ZmEiKQorICAgICgiY2VjaWwiICAgICAg ICAgICAgICAgICAgICAgICAiODAyMWYzZmJlNzU3MTVhMTc2MmU3MjU1OTRkOGMwMGNjZTM2Nzlk OCIKKyAgICAgIjBqMTlsd2JzMzB5Mnh6OG15azBmYnhzNGhiYWwxcDh2cWptbmt2bjMwMXYweHhh Y3lueG0iKQorICAgICgoImNlY2lsIiAiY2VjaWwtbGVnYWN5IikgICAgICAiMzNkNTBiODc0ZmQ1 MjcxMThiYzM2MWQ4M2RlM2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFwNGhsMTc5NmliMjZ5a3lmNXNu bDZjajBseDB2N21qaDB4cWhqdzZxZGg3NTNuc2p5aGIiKQorICAgICgiY29yZWZ4IiAgICAgICAg ICAgICAgICAgICAgICAiYzRlZWFiOWZjMmZhYTAxOTVhODEyZTU1MmNkNzNlZTI5OGQzOTM4NiIK KyAgICAgIjAzNTMwcGY2ZGRkcWxpaHZiODNtOXozNGJhcms4bXpyZmZucmNscTcyNmduZGZnNHZx czgiKQorICAgICgiY29yZXJ0IiAgICAgICAgICAgICAgICAgICAgICAiMTExMzZhZDU1NzY3NDg1 MDYzMjI2YmUwOGNmYmQzMmVkNTc0Y2E0MyIKKyAgICAgIjFnMHE4M2ZmZjEzMjM3bndzZmNtazdm bXp3eDBrdjkzenNxcXliY2lnd2lwNXg2YW5pOGYiKQorICAgICgiaGVsaXgtYmluYXJpZXMiICAg ICAgICAgICAgICAiNjRiM2E2NzYzMWFjOGEwOGZmODJkNjEwODdjZmJmYzY2NGViNGFmOCIKKyAg ICAgIjFmNmtrcGJ6ajNieDlwMWhiMzZrempxMHBwY2trNHJwbWpucjgyaHlxN3kxOGZ3aWtmZDci KQorICAgICgiaWtkYXNtIiAgICAgICAgICAgICAgICAgICAgICAiZjBmZDY2ZWEwNjM5MjllZjVk NTFhYWZkYjEwODMyMTY0ODM1YmIwZiIKKyAgICAgIjAzMTNwdm1tamgwMWg5YjMwNmpkNmNkNmZj Ym5ieGFnbGFqODFtMGwwYWNmNHluN3piMTAiKQorICAgICgoImlrdm0tZm9yayIgImlrdm0iKSAg ICAgICAgICAiMDgyNjZhYzhjMGI2MjBjYzkyOWZmYWViMWYyM2FjMzc2MjljZTgyNSIKKyAgICAg IjFnMHYxdjhudnhrd3E3dzlxeXFoZjlrZ214cTNxbTZyc3c0YWw4eDB3M2RtYmd4amhxanYiKQor ICAgICgiaWxsaW5rZXItdGVzdC1hc3NldHMiICAgICAgICJlYzllYjUxYWYyZWIwN2RiZTUwYTI3 MjRkYjgyNmJmM2JmYjkzMGE2IgorICAgICAiMWI0dnE0amJnbmw0bHpmZmcwMm41dzFzcHBnMms2 YmZrczAxNTBwajQwM3Nibm1sODVnbCIpCisgICAgKCJsaW5rZXIiICAgICAgICAgICAgICAgICAg ICAgICJlZDRhOTQxMzQ4OWFhMjlhNzBlNDFmOTRjM2RhYzU2MjEwOTlmNzM0IgorICAgICAiMTZy ZHBjaDlhbmFybmhjemk0NDFhOXpuYTRyejkzandwYjMxeDBkenJiNGowM2N4YWpnMiIpCisgICAg OzsgKCgiaHR0cHM6Ly9naXRodWIuY29tL2RvdG5ldC9sbHZtLXByb2plY3QiICJsbHZtLXByb2pl Y3QiKQorICAgIDs7ICAiN2RmZGVhMTI2N2YwYTQwOTU1ZTAyNTY3ZGNiY2QxYmNiOTg3ZTgyNSIK KyAgICA7OyAgIiIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICI0NzFjM2Uw ODAzYTlmNDBhMGFjYzhhZWNlYjMxZGU2ZmY5M2E1MmM0IgorICAgICAiMGRnbmdkNWhxazZ5aGxn NDBrYWJuNnFkbmtubTMyemN4OXE2Ym0ydzMxY3Nuc2s1OTc4cyIpCisgICAgKCgiTnVHZXQuQnVp bGRUYXNrcyIgIm51Z2V0LWJ1aWxkdGFza3MiKQorICAgICAiOTk1NTg0Nzk1NzhiMWQ2YWYwZjQ0 M2JiNDExYmMzNTIwZmNiYWU1YyIKKyAgICAgIjE0MzRtNno5c2I3YnZraTliYTZpaW5xcG1oNGE0 aXlsZDc2anoxMHF6MDdzeWNrbGZscTMiKQorICAgICgoIk5Vbml0TGl0ZSIgIm51bml0LWxpdGUi KSAgICAiYTk3N2NhNTc1NzJjNTQ1ZTEwOGI1NmVmMzJhYTNmN2ZmODI4NzYxMSIKKyAgICAgIjAy endkZnB3OHBhemxsd2JwNGhrenF3ZnFsOThnNDg1NGRpeWtxZGI5d2EwdnJiOHc0c2oiKQorICAg IDs7ICgicm9zbHluLWJpbmFyaWVzIiAgICAgICAgICAgICAiMWM2NDgyNDcwY2QyMTlkY2M3NTAz MjU5YTIwZjI2YTE3MjNmMjBlYyIKKyAgICA7OyAgIiIpCisgICAgKCJyeCIgICAgICAgICAgICAg ICAgICAgICAgICAgICJiMjlhNGIwZmRhNjA5ZTBhZjMzZmY1NGVkMTM2NTJiNmNjZjBlMDVlIgor ICAgICAiMW4xandobXNia2N2MmQ4MDZpbW1jcHprYjcycnowNHh5OThteXczNTVhOHc1YWgyNXlp diIpCisgICAgOzsgKCJ4dW5pdC1iaW5hcmllcyIgICAgICAgICAgICAgICI4ZjZlNjJlMWMwMTZk ZmIxNTQyMDg1MmUyMjBlMDcwOTE5MjM3MzRhIgorICAgIDs7ICAiIikKKyAgICApKQorCisoZGVm aW5lLXB1YmxpYyBtb25vLTYuMTIuMAorICAocGFja2FnZQorICAgIChpbmhlcml0IG1vbm8tNS4x MC4wKQorICAgICh2ZXJzaW9uICI2LjEyLjAuMjA2IikKKyAgICAobmFtZSAibW9ubyIpCisgICAg KHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAg ICAgICAgICAodXJpCisgICAgICAgICAgICAgICAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAg ICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLndpbmVocS5vcmcvbW9uby9tb25vLmdpdCIpCisgICAg ICAgICAgICAgICAgKGNvbW1pdCAoc3RyaW5nLWFwcGVuZCAibW9uby0iICI2LjEyLjAuMjA2Iikp KSkKKyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24p KQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAg ICAgICAgICAgIjFjdzl2NTNiZ2JjNnY3eG1wNWlqNzZ5NmluYjZzejFnMXp4MmprODI1cnhzaHE5 NmFsdmsiKSkKKyAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAgICAgICAgICAg ICAoc25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyQoYWRkLWV4 dGVybmFsLXJlcG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLTYuMTIuMC1l eHRlcm5hbC1yZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRAcHJlcGFy ZS1tb25vLXNvdXJjZS0wKSkKKyAgICAgICAgICAgICAgKHBhdGNoZXMKKyAgICAgICAgICAgICAg IChzZWFyY2gtcGF0Y2hlcworICAgICAgICAgICAgICAgICJtb25vLTYuMTIuMC1maXgtQ29uZGl0 aW9uUGFyc2VyLnBhdGNoIgorICAgICAgICAgICAgICAgICJtb25vLTYuMTIuMC1hZGQtcnVucGF0 aC5wYXRjaCIKKyAgICAgICAgICAgICAgICAibW9uby02LjEyLjAtZml4LUFzc2VtYmx5UmVzb2x2 ZXIucGF0Y2giKSkpKQorICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdl LW5hdGl2ZS1pbnB1dHMgbW9uby01LjEwLjApCisgICAgICAgICAgICAgICAgICAgICAocmVwbGFj ZSAibW9ubyIgbW9uby01LjEwLjApCisgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIChkZWZh dWx0LXB5dGhvbikpKSkKKyAgICAoaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLWlucHV0 cyBtb25vLTUuMTAuMCkKKyAgICAgICAgICAgICAgKGFwcGVuZCBsaWJnZGlwbHVzKSkpCisgICAg KGFyZ3VtZW50cworICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3VtZW50cyAocGFja2FnZS1h cmd1bWVudHMgbW9uby01LjEwLjApCisgICAgICAgKCgjOnBhcmFsbGVsLWJ1aWxkPyBfKSAjdCkK KyAgICAgICAoKCM6bWFrZS1mbGFncyBtYWtlLWZsYWdzICN+JygpKQorICAgICAgICAjfihhcHBl bmQgIyRtYWtlLWZsYWdzCisgICAgICAgICAgICAgICAgICAobGlzdAorICAgICAgICAgICAgICAg ICAgIChzdHJpbmctYXBwZW5kICJQTEFURk9STV9ESVNBQkxFRF9URVNUUz0iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2VnZmF1bHRzICghKSwgcmVhc29uIHVua25vd24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FmZWhhbmRsZS4yLmV4ZSIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB1bmNsZWFyIHdoeSB0aGVzZSBmYWls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1Zy0xMDgzNC5leGUiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1Zy02MDg0OC5leGUiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGhlc2UgYXJlIHRlc3RzIG9mIG1pY3Jvc29mdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRlbGVtZXRyeS4gIFRoZXkgZmFp bCBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbWljcm9zb2Z0 IHRlbGVtZXRyeSBpcyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg ZW5hYmxlZCBvbiBPU1guICBObyBpZGVhIHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IHRoZXNlIHRlc3RzIGFyZSBydW4gYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAibWVycC1jcmFzaC10ZXN0LmV4ZSIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAibWVycC1qc29uLXZhbGlkLmV4ZSIpKSkpCisgICAgICAgKCgj OnBoYXNlcyBwaGFzZXMgI34lc3RhbmRhcmQtcGhhc2VzKQorICAgICAgICAjfihtb2RpZnktcGhh c2VzICMkcGhhc2VzCisgICAgICAgICAgICAoZGVsZXRlICdwYXRjaC1zdWItYXV0b2dlbi5zaC1z aGViYW5nKQorICAgICAgICAgICAgOzsgT3VyIDUuMTAuMCBjb21waWxlciBoYXMgYmVlbiByYXRo ZXIgc291cGVkIHVwLgorICAgICAgICAgICAgKGFkZC1hZnRlciAndW5wYWNrICdkaXNhYmxlLXBy b2ZpbGUtdmVyc2lvbi1jaGVjaworICAgICAgICAgICAgICAobGFtYmRhIF8KKyAgICAgICAgICAg ICAgICAoc3Vic3RpdHV0ZSogIm1jcy9idWlsZC9jb21tb24vYmFzaWMtcHJvZmlsZS1jaGVjay5j cyIKKyAgICAgICAgICAgICAgICAgICgoIm1pbl9tb25vX3ZlcnNpb24gPSAuKiIpCisgICAgICAg ICAgICAgICAgICAgIm1pbl9tb25vX3ZlcnNpb24gPSBuZXcgVmVyc2lvbiAoMCwgMCk7XG4iKSkp KQorICAgICAgICAgICAgKGFkZC1hZnRlciAndW5wYWNrICdkaXNhYmxlLWMjLTguMC10ZXN0cwor ICAgICAgICAgICAgICA7OyBUaGVzZSBhcmVuJ3QgY29tcGlsYWJsZSBieSBtY3MKKyAgICAgICAg ICAgICAgKGxhbWJkYSBfCisgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICJtb25vL21pbmkv TWFrZWZpbGUuYW0uaW4iCisgICAgICAgICAgICAgICAgICAoKCItbGFuZ3ZlcnNpb246OFxcLjAi KQorICAgICAgICAgICAgICAgICAgICIiKSkKKyAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSog Im1vbm8vdGVzdHMvTWFrZWZpbGUuYW0iCisgICAgICAgICAgICAgICAgICAoKCIJKGRpbS1nZW5l cmljfGRpbS1pc3N1ZS0xODkxN3xpbnRlcmZhY2UtMnxkZWxlZ2F0ZTE4fGdlbmVyaWMtdW5tYW5h Z2VkLWNvbnN0cmFpbnR8YXN5bmMtZ2VuZXJpYy1lbnVtKVxcLmNzLioiKQorICAgICAgICAgICAg ICAgICAgICIiKSkpKQorICAgICAgICAgICAgKGFkZC1hZnRlciAndW5wYWNrICdkaXNhYmxlLXZl cmlmaWNhdGlvbi1lcnJvcgorICAgICAgICAgICAgICAobGFtYmRhIF8KKyAgICAgICAgICAgICAg ICA7OyBGb3Igc29tZSByZWFzb24gdmVyaWZpY2F0aW9uIGZhaWxzIGNvbXBsYWluaW5nIGFib3V0 IGEgYnVuY2gKKyAgICAgICAgICAgICAgICA7OyBvZiBtaXNzaW5nIGljYWxscy4KKyAgICAgICAg ICAgICAgICAoc3Vic3RpdHV0ZSogInJ1bnRpbWUvTWFrZWZpbGUuYW0iCisgICAgICAgICAgICAg ICAgICAoKCIJICAgIGZpOyBkb25lOyBkb25lOyIpCisgICAgICAgICAgICAgICAgICAgIgkgICAg Zmk7IGRvbmU7IGRvbmU7IG9rPTo7IikpKSkKKyAgICAgICAgICAgIDs7IFRoaXMgcmVxdWlyZXMg YmluYXJ5IGJsb2JzIHRvIGJlIHVzZWQsIGl0IGRvZXNuJ3QgcHJvdmlkZSBhCisgICAgICAgICAg ICA7OyBjbGVhciB3YXkgdG8gcmVnZW5lcmF0ZSB0aGVtIGFuZCBubyBjb3JyZXNwb25kaW5nIHNv dXJjZSBpcworICAgICAgICAgICAgOzsgbGlua2VkLCBwbHVzIGZyb20gd2hhdCBsaXR0bGUgSSBr bm93IG9mIGl0IGl0IHNvdW5kcyBsaWtlIGl0J3MKKyAgICAgICAgICAgIDs7IG5vdCBzb21ldGhp bmcgd2UgbmVlZCBhdCBhbGw/CisgICAgICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2Rpc2Fi bGUtaGVsaXgtY2xpZW50CisgICAgICAgICAgICAgIChsYW1iZGEgXworICAgICAgICAgICAgICAg IChzdWJzdGl0dXRlKiAibWNzL3Rvb2xzL01ha2VmaWxlIgorICAgICAgICAgICAgICAgICAgKCgi bW9uby1oZWxpeC1jbGllbnQiKQorICAgICAgICAgICAgICAgICAgICIiKSkpKQorICAgICAgICAg ICAgKHJlcGxhY2UgJ2J1aWxkLXJlZmVyZW5jZS1hc3NlbWJsaWVzCisgICAgICAgICAgICAgIChs YW1iZGEqICgjOmtleSBtYWtlLWZsYWdzICM6YWxsb3ctb3RoZXIta2V5cykKKyAgICAgICAgICAg ICAgICAobGV0ICgodG9wIChnZXRjd2QpKSkKKyAgICAgICAgICAgICAgICAgICh3aXRoLWRpcmVj dG9yeS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuYWwvYmluYXJ5LXJl ZmVyZW5jZS1hc3NlbWJsaWVzIgorICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogKGZp bmQtZmlsZXMgIi4iICJeTWFrZWZpbGUkIikKKyAgICAgICAgICAgICAgICAgICAgICAoKCJDU0Nf Q09NTU9OX0FSR1MgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kIGFsbCAiLWRlbGF5c2lnbisgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiSUJNXFwu RGF0YVxcLkRCMl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n LWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiTW9u b1xcLkRhdGFcXC5TcWxpdGVfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAg ICgoIlN5c3RlbVxcLkRhdGFcXC5EYXRhU2V0RXh0ZW5zaW9uc19SRUZTIDo9ICIgYWxsKQorICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisg ICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuRGF0YVxcLk9yYWNsZUNsaWVudF9SRUZT IDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5 c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuSWRlbnRpdHlN b2RlbF9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVu ZCBhbGwgIlN5c3RlbS5Db25maWd1cmF0aW9uICIpKQorICAgICAgICAgICAgICAgICAgICAgICgo IlN5c3RlbVxcLkRlc2lnbl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZCBhbGwgIkFjY2Vzc2liaWxpdHkgIikpCisgICAgICAgICAgICAgICAgICAg ICAgKCgiU3lzdGVtXFwuV2ViXFwuRXh0ZW5zaW9uc1xcLkRlc2lnbl9SRUZTIDo9ICIgYWxsKQor ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5XaW5kb3dz LkZvcm1zIFN5c3RlbS5XZWIgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwu U2VydmljZU1vZGVsXFwuUm91dGluZ19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAg ICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAg ICAgICAgKCgiU3lzdGVtXFwuV2ViXFwuQWJzdHJhY3Rpb25zX1JFRlMgOj0gIiBhbGwpCisgICAg ICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtICIpKQorICAgICAg ICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLlJlYWN0aXZlXFwuV2luZG93c1xcLkZvcm1zX1JF RlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAi U3lzdGVtICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLldpbmRvd3NcXC5G b3Jtc1xcLkRhdGFWaXN1YWxpemF0aW9uX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiQWNjZXNzaWJpbGl0eSAiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlNlcnZpY2VNb2RlbFxcLlByaW1pdGl2ZXNf UkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxs ICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVt XFwuRHluYW1pY1xcLlJ1bnRpbWVfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAg ICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0gIikpCisgICAgICAgICAgICAgICAgICAgICAg KCgiRmFjYWRlcy9TeXN0ZW1cXC5YbWxcXC5YRG9jdW1lbnRfUkVGUyA6PSAiIGFsbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAg ICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuUnVudGltZVxcLlNlcmlhbGl6 YXRpb24uWG1sX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJGYWNh ZGVzL1N5c3RlbVxcLkRhdGFcXC5Db21tb25fUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0gU3lzdGVtLlhtbCAiKSkpCisgICAg ICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAiYnVpbGQvbW9ub2Ryb2lkL01ha2VmaWxlIgor ICAgICAgICAgICAgICAgICAgICAgICgoIkVDTUFfS0VZIDo9IFxcLlxcLi9cXC5cXC4vXFwuXFwu L1xcLlxcLi9cXC5cXC4vbW9uby8iKQorICAgICAgICAgICAgICAgICAgICAgICA7OyBpdCBzaG91 bGQgb25seSBiZSA0IGRpcmVjdG9yaWVzIHVwLCBhbmQgaXQncyBpbgorICAgICAgICAgICAgICAg ICAgICAgICA7OyBtY3MvLCBub3QgbW9uby9tY3MvCisgICAgICAgICAgICAgICAgICAgICAgICJF Q01BX0tFWSA6PSAuLi8uLi8uLi8uLi8iKSkKKyAgICAgICAgICAgICAgICAgICAgKGFwcGx5IGlu dm9rZSAibWFrZSIgIi1qIiAobnVtYmVyLT5zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVsLWpvYi1jb3VudCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAiQ1NDPW1jcyIgbWFrZS1mbGFncykpKSkpCisgICAgICAgICAgICAo cmVwbGFjZSAnY2hlY2sKKyAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IHRlc3RzPyAobWFr ZS1mbGFncyAnKCkpICM6YWxsb3ctb3RoZXIta2V5cykKKyAgICAgICAgICAgICAgICAod2hlbiB0 ZXN0cz8KKyAgICAgICAgICAgICAgICAgIDs7IFRoZXJlIGFyZSBtb3JlIHRlc3RzIHRoYW4gdGhl c2UsIGJ1dCB0aGV5IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICAgOzsgZXh0ZXJuYWwveHVu aXQtYmluYXJpZXMsIHNvIHdlIGxpbWl0IG91cnNlbHZlcyB0byB0aGUKKyAgICAgICAgICAgICAg ICAgIDs7IHRlc3RzIHRoYXQgZGViaWFuIHJ1bnMuCisgICAgICAgICAgICAgICAgICAod2l0aC1k aXJlY3RvcnktZXhjdXJzaW9uICJtb25vL21pbmkiCisgICAgICAgICAgICAgICAgICAgIChhcHBs eSBpbnZva2UgIm1ha2UiICJjaGVjayIgbWFrZS1mbGFncykpCisgICAgICAgICAgICAgICAgICAo d2l0aC1kaXJlY3RvcnktZXhjdXJzaW9uICJtb25vL3Rlc3RzIgorICAgICAgICAgICAgICAgICAg ICAoYXBwbHkgaW52b2tlICJtYWtlIiAiY2hlY2siIG1ha2UtZmxhZ3MpKSkpKSkpKSkpKQpkaWZm IC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtYWRkLXJ1bnBhdGgucGF0 Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1hZGQtcnVucGF0aC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzA2MmJkNmEwZGUKLS0tIC9k ZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1hZGQtcnVucGF0 aC5wYXRjaApAQCAtMCwwICsxLDE4NSBAQAorbW9ubzogbWV0YWRhdGE6IGFkZCA8cnVucGF0aD4g ZWxlbWVudCB0byAuY29uZmlnIGZpbGVzLgorCitUaGlzIG5ldyBlbGVtZW50IGlzIG9mIHRoZSBm b3JtOgorCis8cnVucGF0aCBwYXRoPSIvcGF0aDEvdG8vbGliczovcGF0aDIvdG8vbGliczouLi4i Lz4KKworKHRoZSA6IHdpbGwgYWN0dWFsbHkgYmUgd2hhdGV2ZXIgR19TRUFSQ0hQQVRIX1NFUEFS QVRPUl9TIGlzLCBzbyBsaWtlbHkgOyBvbgord2luZG93cyBhbmQgOiBlbHNld2hlcmUpLgorCisq IG1vbm8vbWV0YWRhdGEvbWV0YWRhdGEtaW50ZXJuYWxzLmggKHN0cnVjdCBfTW9ub0ltYWdlKTog bmV3ICdydW5wYXRoJyBmaWVsZC4KKyogbW9uby9tZXRhZGF0YS9tb25vLWNvbmZpZy5jIChydW5w YXRoX2luaXQsIHJ1bnBhdGhfc3RhcnQsIHJ1bnBhdGhfaGFuZGxlcik6CisgIG5ldyBmdW5jdGlv bnMgYW5kIHBhcnNlciB1c2luZyB0aGVtIHRvIHBvcHVsYXRlIHJ1bnBhdGggZmllbGQgZnJvbSA8 cnVucGF0aD4KKyAgZWxlbWVudC4KKyAgKG1vbm9fY29uZmlnX2luaXQpOiByZWdpc3RlciBydW5w YXRoX2hhbmRsZXIuCisqIG1vbm8vbWV0YWRhdGEvYXNzZW1ibHkuYyAobW9ub19hc3NlbWJseV9s b2FkX2Z1bGxfZ2FjX2Jhc2VfZGVmYXVsdCk6IG5ldworICAncmVxdWVzdGluZycgcGFyYW1ldGVy LCB1c2UgaXQgdG8gc2VhcmNoIHRoZSByZXF1ZXN0aW5nIGFzc2VtYmx5J3MgcnVucGF0aAorICBm aXJzdC4KKyAgKG1vbm9fYXNzZW1ibHlfcmVxdWVzdF9ieW5hbWVfbm9zZWFyY2gpOiB1c2UgaXQu CisKKworZGlmZiAtLWdpdCBhL21vbm8vbWV0YWRhdGEvYXNzZW1ibHkuYyBiL21vbm8vbWV0YWRh dGEvYXNzZW1ibHkuYworaW5kZXggZjlmZWFhY2YyYzEuLjhjNzFhZDBlYjk1IDEwMDY0NAorLS0t IGEvbW9uby9tZXRhZGF0YS9hc3NlbWJseS5jCisrKysgYi9tb25vL21ldGFkYXRhL2Fzc2VtYmx5 LmMKK0BAIC0zNzYsNyArMzc2LDcgQEAgbW9ub19hc3NlbWJseV9pbnZva2Vfc2VhcmNoX2hvb2tf aW50ZXJuYWwgKE1vbm9Bc3NlbWJseUxvYWRDb250ZXh0ICphbGMsIE1vbm9Bc3MKKyBzdGF0aWMg TW9ub0Fzc2VtYmx5KgorIG1vbm9fYXNzZW1ibHlfcmVxdWVzdF9ieW5hbWVfbm9zZWFyY2ggKE1v bm9Bc3NlbWJseU5hbWUgKmFuYW1lLCBjb25zdCBNb25vQXNzZW1ibHlCeU5hbWVSZXF1ZXN0ICpy ZXEsIE1vbm9JbWFnZU9wZW5TdGF0dXMgKnN0YXR1cyk7Cisgc3RhdGljIE1vbm9Bc3NlbWJseSoK Ky1tb25vX2Fzc2VtYmx5X2xvYWRfZnVsbF9nYWNfYmFzZV9kZWZhdWx0IChNb25vQXNzZW1ibHlO YW1lICphbmFtZSwgY29uc3QgY2hhciAqYmFzZWRpciwgTW9ub0Fzc2VtYmx5TG9hZENvbnRleHQg KmFsYywgTW9ub0Fzc2VtYmx5Q29udGV4dEtpbmQgYXNtY3R4LCBNb25vSW1hZ2VPcGVuU3RhdHVz ICpzdGF0dXMpOworK21vbm9fYXNzZW1ibHlfbG9hZF9mdWxsX2dhY19iYXNlX2RlZmF1bHQgKE1v bm9Bc3NlbWJseU5hbWUgKmFuYW1lLCBNb25vQXNzZW1ibHkgKnJlcXVlc3RpbmcsIGNvbnN0IGNo YXIgKmJhc2VkaXIsIE1vbm9Bc3NlbWJseUxvYWRDb250ZXh0ICphbGMsIE1vbm9Bc3NlbWJseUNv bnRleHRLaW5kIGFzbWN0eCwgTW9ub0ltYWdlT3BlblN0YXR1cyAqc3RhdHVzKTsKKyBzdGF0aWMg TW9ub0Fzc2VtYmx5KgorIGNoYWluX3JlZGlyZWN0aW9uc19sb2FkZnJvbSAoTW9ub0Fzc2VtYmx5 TG9hZENvbnRleHQgKmFsYywgTW9ub0ltYWdlICppbWFnZSwgTW9ub0ltYWdlT3BlblN0YXR1cyAq b3V0X3N0YXR1cyk7Cisgc3RhdGljIE1vbm9Bc3NlbWJseSoKK0BAIC00NjU1LDcgKzQ2NTUsNyBA QCBtb25vX2Fzc2VtYmx5X3JlcXVlc3RfYnluYW1lX25vc2VhcmNoIChNb25vQXNzZW1ibHlOYW1l ICphbmFtZSwKKyAJfQorIAorICNpZm5kZWYgRU5BQkxFX05FVENPUkUKKy0JcmVzdWx0ID0gbW9u b19hc3NlbWJseV9sb2FkX2Z1bGxfZ2FjX2Jhc2VfZGVmYXVsdCAoYW5hbWUsIHJlcS0+YmFzZWRp ciwgcmVxLT5yZXF1ZXN0LmFsYywgcmVxLT5yZXF1ZXN0LmFzbWN0eCwgc3RhdHVzKTsKKysJcmVz dWx0ID0gbW9ub19hc3NlbWJseV9sb2FkX2Z1bGxfZ2FjX2Jhc2VfZGVmYXVsdCAoYW5hbWUsIHJl cS0+cmVxdWVzdGluZ19hc3NlbWJseSwgcmVxLT5iYXNlZGlyLCByZXEtPnJlcXVlc3QuYWxjLCBy ZXEtPnJlcXVlc3QuYXNtY3R4LCBzdGF0dXMpOworICNlbmRpZgorIAlyZXR1cm4gcmVzdWx0Owor IH0KK0BAIC00NjY3LDYgKzQ2NjcsNyBAQCBtb25vX2Fzc2VtYmx5X3JlcXVlc3RfYnluYW1lX25v c2VhcmNoIChNb25vQXNzZW1ibHlOYW1lICphbmFtZSwKKyAgKi8KKyBNb25vQXNzZW1ibHkqCisg bW9ub19hc3NlbWJseV9sb2FkX2Z1bGxfZ2FjX2Jhc2VfZGVmYXVsdCAoTW9ub0Fzc2VtYmx5TmFt ZSAqYW5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9u b0Fzc2VtYmx5ICpyZXF1ZXN0aW5nLAorIAkJCQkJICBjb25zdCBjaGFyICpiYXNlZGlyLAorIAkJ CQkJICBNb25vQXNzZW1ibHlMb2FkQ29udGV4dCAqYWxjLAorIAkJCQkJICBNb25vQXNzZW1ibHlD b250ZXh0S2luZCBhc21jdHgsCitAQCAtNDcxOCw2ICs0NzE5LDIzIEBAIG1vbm9fYXNzZW1ibHlf bG9hZF9mdWxsX2dhY19iYXNlX2RlZmF1bHQgKE1vbm9Bc3NlbWJseU5hbWUgKmFuYW1lLAorIAkJ CWZpbGVuYW1lID0gZ19zdHJjb25jYXQgKGFuYW1lLT5uYW1lLCBleHQsIChjb25zdCBjaGFyKilO VUxMKTsKKyAJCX0KKyAKKysgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RpbmcKKysgICAgICAg ICAgICAgICAgICAgICYmIHJlcXVlc3RpbmctPmltYWdlCisrICAgICAgICAgICAgICAgICAgICAm JiByZXF1ZXN0aW5nLT5pbWFnZS0+cnVucGF0aCkgeworKyAgICAgICAgICAgICAgICAgICAgY2hh ciAqKnJ1bnBhdGggPSByZXF1ZXN0aW5nLT5pbWFnZS0+cnVucGF0aDsKKysgICAgICAgICAgICAg ICAgICAgIGludCBqOworKyAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgcnVucGF0aFtq XTsgaisrKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHBhdGggPSBnX2J1aWxkX2Zp bGVuYW1lIChydW5wYXRoW2pdLCBmaWxlbmFtZSwgTlVMTCk7CisrICAgICAgICAgICAgICAgICAg ICAgICAgcmVzdWx0ID0gbW9ub19hc3NlbWJseV9yZXF1ZXN0X29wZW4gKGZ1bGxwYXRoLCAmcmVx LCBzdGF0dXMpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGdfZnJlZSAoZnVsbHBhdGgpOwor KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzdWx0LT5pbl9nYWMgPSBGQUxTRTsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ19mcmVlIChmaWxlbmFtZSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiByZXN1bHQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrCisgI2lmbmRlZiBESVNBQkxFX0dBQwor IAkJY29uc3QgZ2Jvb2xlYW4gcmVmb25seSA9IGFzbWN0eCA9PSBNT05PX0FTTUNUWF9SRUZPTkxZ OworIAorZGlmZiAtLWdpdCBhL21vbm8vbWV0YWRhdGEvaW1hZ2UuYyBiL21vbm8vbWV0YWRhdGEv aW1hZ2UuYworaW5kZXggZTBiODZkZDNkMDkuLjEyYTgwOTRlNGUwIDEwMDY0NAorLS0tIGEvbW9u by9tZXRhZGF0YS9pbWFnZS5jCisrKysgYi9tb25vL21ldGFkYXRhL2ltYWdlLmMKK0BAIC0yMzYz LDYgKzIzNjMsOSBAQCBtb25vX2ltYWdlX2Nsb3NlX2V4Y2VwdF9wb29scyAoTW9ub0ltYWdlICpp bWFnZSkKKyAKKyAJbW9ub19tZXRhZGF0YV9jbGVhbl9mb3JfaW1hZ2UgKGltYWdlKTsKKyAKKysg ICAgICAgIGlmIChpbWFnZS0+cnVucGF0aCkKKysgICAgICAgICAgICBnX3N0cmZyZWV2IChpbWFn ZS0+cnVucGF0aCk7CisrCisgCS8qCisgCSAqIFRoZSBjYWNoZXMgaW5zaWRlIGEgTW9ub0ltYWdl IG1pZ2h0IHJlZmVyIHRvIG1ldGFkYXRhIHdoaWNoIGlzIHN0b3JlZCBpbiByZWZlcmVuY2VkIAor IAkgKiBhc3NlbWJsaWVzLCBzbyB3ZSBjYW4ndCByZWxlYXNlIHRoZXNlIHJlZmVyZW5jZXMgaW4g bW9ub19hc3NlbWJseV9jbG9zZSAoKSBzaW5jZSB0aGUKK2RpZmYgLS1naXQgYS9tb25vL21ldGFk YXRhL21ldGFkYXRhLWludGVybmFscy5oIGIvbW9uby9tZXRhZGF0YS9tZXRhZGF0YS1pbnRlcm5h bHMuaAoraW5kZXggOTM4OGQ2OWIwZmQuLjkzZjRiODgwYzYxIDEwMDY0NAorLS0tIGEvbW9uby9t ZXRhZGF0YS9tZXRhZGF0YS1pbnRlcm5hbHMuaAorKysrIGIvbW9uby9tZXRhZGF0YS9tZXRhZGF0 YS1pbnRlcm5hbHMuaAorQEAgLTQyMyw2ICs0MjMsMTIgQEAgc3RydWN0IF9Nb25vSW1hZ2Ugewor IAkvKiovCisgCU1vbm9UYWJsZUluZm8gICAgICAgIHRhYmxlcyBbTU9OT19UQUJMRV9OVU1dOwor IAorKyAgICAvKgorKyAgICAgIFNlYXJjaCBwYXRoIHRvIGJlIHRyaWVkIGZpcnN0IHdoZW4gbG9v a2luZyBmb3IgYXNzZW1ibGllcyByZWZlcmVuY2VkIGJ5CisrICAgICAgdGhpcyBpbWFnZSwgb3Ig TlVMTC4gSXMgYSBOVUxMLXRlcm1pbmF0ZWQgdmVjdG9yLgorKyAgICAgKi8KKysgICAgICAgIGNo YXIgICAgICAgICAgICAgICAqKnJ1bnBhdGg7CisrCisgCS8qCisgCSAqIHJlZmVyZW5jZXMgaXMg aW5pdGlhbGl6ZWQgb25seSBieSB1c2luZyB0aGUgbW9ub19hc3NlbWJseV9vcGVuCisgCSAqIGZ1 bmN0aW9uLCBhbmQgbm90IGJ5IHVzaW5nIHRoZSBsb3dsZXZlbCBtb25vX2ltYWdlX29wZW4uCitk aWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9tb25vLWNvbmZpZy5jIGIvbW9uby9tZXRhZGF0YS9t b25vLWNvbmZpZy5jCitpbmRleCBkOTczZGU1M2M4Yy4uODg4OGM3YjRmYWMgMTAwNjQ0CistLS0g YS9tb25vL21ldGFkYXRhL21vbm8tY29uZmlnLmMKKysrKyBiL21vbm8vbWV0YWRhdGEvbW9uby1j b25maWcuYworQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAibW9uby9tZXRhZGF0YS9tZXRh ZGF0YS1pbnRlcm5hbHMuaCIKKyAjaW5jbHVkZSAibW9uby9tZXRhZGF0YS9vYmplY3QtaW50ZXJu YWxzLmgiCisgI2luY2x1ZGUgIm1vbm8vdXRpbHMvbW9uby1sb2dnZXItaW50ZXJuYWxzLmgiCisr I2luY2x1ZGUgIm1vbm8vdXRpbHMvbW9uby1wYXRoLmgiCisgCisgI2lmIGRlZmluZWQoVEFSR0VU X1BTMykKKyAjZGVmaW5lIENPTkZJR19PUyAiQ2VsbE9TIgorQEAgLTQ2NCw2ICs0NjUsNTkgQEAg YW90X2NhY2hlX2hhbmRsZXIgPSB7CisgCU5VTEwsIC8qIGZpbmlzaCAqLworIH07CisgCisrc3Rh dGljIHZvaWQqCisrcnVucGF0aF9pbml0IChNb25vSW1hZ2UgKmFzc2VtYmx5KQorK3sKKysgICAg cmV0dXJuIGFzc2VtYmx5OworK30KKysKKytzdGF0aWMgdm9pZAorK3J1bnBhdGhfc3RhcnQgKGdw b2ludGVyIHVzZXJfZGF0YSwKKysgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICpl bGVtZW50X25hbWUsCisrICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICoqYXR0cmli dXRlX25hbWVzLAorKyAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqKmF0dHJpYnV0 ZV92YWx1ZXMpCisreworKyAgICBNb25vSW1hZ2UgKmFzc2VtYmx5ID0gKE1vbm9JbWFnZSAqKSB1 c2VyX2RhdGE7CisrICAgIGludCBpOworKworKyAgICBpZiAoc3RyY21wIChlbGVtZW50X25hbWUs ICJydW5wYXRoIikgIT0gMCkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgZm9yIChpID0gMDsg YXR0cmlidXRlX25hbWVzW2ldOyBpKyspCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYoIXN0 cmNtcCAoYXR0cmlidXRlX25hbWVzIFtpXSwgInBhdGgiKSkKKysgICAgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICAgICAgY2hhciAqKnNwbGl0dGVkLCAqKmRlc3Q7CisrCisrICAgICAg ICAgICAgICAgICAgICBzcGxpdHRlZCA9IGdfc3Ryc3BsaXQgKGF0dHJpYnV0ZV92YWx1ZXNbaV0s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfU0VBUkNIUEFU SF9TRVBBUkFUT1JfUywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTAwMCk7CisrICAgICAgICAgICAgICAgICAgICBpZiAoYXNzZW1ibHktPnJ1bnBhdGgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgZ19zdHJmcmVldiAoYXNzZW1ibHktPnJ1bnBhdGgpOwor KyAgICAgICAgICAgICAgICAgICAgYXNzZW1ibHktPnJ1bnBhdGggPSBkZXN0ID0gc3BsaXR0ZWQ7 CisrICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnNwbGl0dGVkKSB7CisrICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqdG1wID0gKnNwbGl0dGVkOworKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICgqdG1wKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdCsrID0gbW9u b19wYXRoX2Nhbm9uaWNhbGl6ZSAodG1wKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBnX2Zy ZWUgKHRtcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXR0ZWQrKzsKKysgICAgICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICpkZXN0ID0gKnNwbGl0dGVkOwor KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAg IH0KKyt9CisrCisrc3RhdGljIGNvbnN0IE1vbm9QYXJzZUhhbmRsZXIKKytydW5wYXRoX2hhbmRs ZXIgPSB7CisrICAgICJydW5wYXRoIiwKKysgICAgcnVucGF0aF9pbml0LAorKyAgICBydW5wYXRo X3N0YXJ0LAorKyAgICBOVUxMLCAvKiB0ZXh0ICovCisrICAgIE5VTEwsIC8qIGVuZCAqLworKyAg ICBOVUxMLCAvKiBmaW5pc2ggKi8KKyt9OworKworIHN0YXRpYyBpbnQgaW5pdGVkID0gMDsKKyAK KyBzdGF0aWMgdm9pZAorQEAgLTQ3Niw2ICs1MzAsNyBAQCBtb25vX2NvbmZpZ19pbml0ICh2b2lk KQorICNlbmRpZgorIAlnX2hhc2hfdGFibGVfaW5zZXJ0IChjb25maWdfaGFuZGxlcnMsIChncG9p bnRlcikgbGVnYWN5VUVQX2hhbmRsZXIuZWxlbWVudF9uYW1lLCAoZ3BvaW50ZXIpICZsZWdhY3lV RVBfaGFuZGxlcik7CisgCWdfaGFzaF90YWJsZV9pbnNlcnQgKGNvbmZpZ19oYW5kbGVycywgKGdw b2ludGVyKSBhb3RfY2FjaGVfaGFuZGxlci5lbGVtZW50X25hbWUsIChncG9pbnRlcikgJmFvdF9j YWNoZV9oYW5kbGVyKTsKKysgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKGNvbmZpZ19oYW5k bGVycywgKGdwb2ludGVyKSBydW5wYXRoX2hhbmRsZXIuZWxlbWVudF9uYW1lLCAoZ3BvaW50ZXIp ICZydW5wYXRoX2hhbmRsZXIpOworIH0KKyAKKyAvKioKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdl cy9wYXRjaGVzL21vbm8tNi4xMi4wLWZpeC1Bc3NlbWJseVJlc29sdmVyLnBhdGNoIGIvZ251L3Bh Y2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtZml4LUFzc2VtYmx5UmVzb2x2ZXIucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA1ZGI3YjljZGQzCi0tLSAvZGV2 L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtZml4LUFzc2VtYmx5 UmVzb2x2ZXIucGF0Y2gKQEAgLTAsMCArMSwyMzYgQEAKK2RpZmYgLS1naXQgYS9tY3MvY2xhc3Mv TWljcm9zb2Z0LkJ1aWxkLlRhc2tzL01pY3Jvc29mdC5CdWlsZC5UYXNrcy9Bc3NlbWJseVJlc29s dmVyLmNzIGIvbWNzL2NsYXNzL01pY3Jvc29mdC5CdWlsZC5UYXNrcy9NaWNyb3NvZnQuQnVpbGQu VGFza3MvQXNzZW1ibHlSZXNvbHZlci5jcworaW5kZXggNWUwZWM0ODA5NTYuLjlkYWY5ZDY5MjBi IDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL01pY3Jvc29mdC5CdWlsZC5UYXNrcy9NaWNyb3NvZnQu QnVpbGQuVGFza3MvQXNzZW1ibHlSZXNvbHZlci5jcworKysrIGIvbWNzL2NsYXNzL01pY3Jvc29m dC5CdWlsZC5UYXNrcy9NaWNyb3NvZnQuQnVpbGQuVGFza3MvQXNzZW1ibHlSZXNvbHZlci5jcwor QEAgLTY3LDU0ICs2Nyw1NiBAQCBwdWJsaWMgdm9pZCBSZXNldFNlYXJjaExvZ2dlciAoKQorIAkJ CQlzZWFyY2hfbG9nLkNsZWFyICgpOworIAkJfQorIAorLQkJc3RyaW5nIEdldEdhY1BhdGggKCkK KysJCXN0cmluZ1tdIEdldEdhY1BhdGhzICgpCisgCQl7CisgCQkJLy8gTk9URTogY29kZSBmcm9t IG1jcy90b29scy9nYWN1dGlsL2RyaXZlci5jcworLQkJCVByb3BlcnR5SW5mbyBnYWMgPSB0eXBl b2YgKFN5c3RlbS5FbnZpcm9ubWVudCkuR2V0UHJvcGVydHkgKCJHYWNQYXRoIiwgQmluZGluZ0Zs YWdzLlN0YXRpYyB8IEJpbmRpbmdGbGFncy5Ob25QdWJsaWMpOworKwkJCVByb3BlcnR5SW5mbyBn YWNzID0gdHlwZW9mIChTeXN0ZW0uRW52aXJvbm1lbnQpLkdldFByb3BlcnR5ICgiR2FjUGF0aHMi LCBCaW5kaW5nRmxhZ3MuU3RhdGljIHwgQmluZGluZ0ZsYWdzLk5vblB1YmxpYyk7CisgCistCQkJ aWYgKGdhYyA9PSBudWxsKQorKwkJCWlmIChnYWNzID09IG51bGwpCisgCQkJCXJldHVybiBudWxs OworIAorLQkJCU1ldGhvZEluZm8gZ2V0X2dhYyA9IGdhYy5HZXRHZXRNZXRob2QgKHRydWUpOwor LQkJCXJldHVybiAoc3RyaW5nKSBnZXRfZ2FjLkludm9rZSAobnVsbCwgbnVsbCk7CisrCQkJTWV0 aG9kSW5mbyBnZXRfZ2FjcyA9IGdhY3MuR2V0R2V0TWV0aG9kICh0cnVlKTsKKysJCQlyZXR1cm4g KHN0cmluZ1tdKSBnZXRfZ2Fjcy5JbnZva2UgKG51bGwsIG51bGwpOworIAkJfQorIAorIAkJdm9p ZCBHYXRoZXJHYWNBc3NlbWJsaWVzICgpCisgCQl7CistCQkJc3RyaW5nIGdhY19wYXRoID0gR2V0 R2FjUGF0aCAoKTsKKy0JCQlpZiAoZ2FjX3BhdGggPT0gbnVsbCkKKy0JCQkJdGhyb3cgbmV3IElu dmFsaWRPcGVyYXRpb25FeGNlcHRpb24gKCJYQnVpbGQgbXVzdCBiZSBydW4gb24gTW9ubyBydW50 aW1lIik7CistCQkJaWYgKCFEaXJlY3RvcnkuRXhpc3RzIChnYWNfcGF0aCkpCistCQkJCXJldHVy bjsgLy8gaW4gY2FzZSBtb25vIGlzbid0ICJpbnN0YWxsZWQiLgorLQorLQkJCVZlcnNpb24gdmVy c2lvbjsKKy0JCQlEaXJlY3RvcnlJbmZvIHZlcnNpb25faW5mbywgYXNzZW1ibHlfaW5mbzsKKy0K Ky0JCQlmb3JlYWNoIChzdHJpbmcgYXNzZW1ibHlfbmFtZSBpbiBEaXJlY3RvcnkuR2V0RGlyZWN0 b3JpZXMgKGdhY19wYXRoKSkgeworLQkJCQlhc3NlbWJseV9pbmZvID0gbmV3IERpcmVjdG9yeUlu Zm8gKGFzc2VtYmx5X25hbWUpOworLQkJCQlmb3JlYWNoIChzdHJpbmcgdmVyc2lvbl90b2tlbiBp biBEaXJlY3RvcnkuR2V0RGlyZWN0b3JpZXMgKGFzc2VtYmx5X25hbWUpKSB7CistCQkJCQlmb3Jl YWNoIChzdHJpbmcgZmlsZSBpbiBEaXJlY3RvcnkuR2V0RmlsZXMgKHZlcnNpb25fdG9rZW4sICIq LmRsbCIpKSB7CistCQkJCQkJdmVyc2lvbl9pbmZvID0gbmV3IERpcmVjdG9yeUluZm8gKHZlcnNp b25fdG9rZW4pOworLQkJCQkJCXZlcnNpb24gPSBuZXcgVmVyc2lvbiAodmVyc2lvbl9pbmZvLk5h bWUuU3BsaXQgKAorLQkJCQkJCQluZXcgY2hhciBbXSB7J18nfSwgU3RyaW5nU3BsaXRPcHRpb25z LlJlbW92ZUVtcHR5RW50cmllcykgWzBdKTsKKy0KKy0JCQkJCQlEaWN0aW9uYXJ5PFZlcnNpb24s IHN0cmluZz4gYXNzZW1ibGllc0J5VmVyc2lvbiA9IG5ldyBEaWN0aW9uYXJ5IDxWZXJzaW9uLCBz dHJpbmc+ICgpOworLQkJCQkJCWlmICghZ2FjLlRyeUdldFZhbHVlIChhc3NlbWJseV9pbmZvLk5h bWUsIG91dCBhc3NlbWJsaWVzQnlWZXJzaW9uKSkgeworLQkJCQkJCQlhc3NlbWJsaWVzQnlWZXJz aW9uID0gbmV3IERpY3Rpb25hcnkgPFZlcnNpb24sIHN0cmluZz4gKCk7CistCQkJCQkJCWdhYy5B ZGQgKGFzc2VtYmx5X2luZm8uTmFtZSwgYXNzZW1ibGllc0J5VmVyc2lvbik7CistCQkJCQkJfQor LQorLQkJCQkJCXN0cmluZyBmb3VuZF9maWxlOworLQkJCQkJCWlmIChhc3NlbWJsaWVzQnlWZXJz aW9uLlRyeUdldFZhbHVlICh2ZXJzaW9uLCBvdXQgZm91bmRfZmlsZSkgJiYKKy0JCQkJCQkJRmls ZS5HZXRMYXN0V3JpdGVUaW1lIChmaWxlKSA8PSBGaWxlLkdldExhc3RXcml0ZVRpbWUgKGZvdW5k X2ZpbGUpKQorLQkJCQkJCQkJLy8gRHVwbGljYXRlIGZvdW5kLCB0YWtlIHRoZSBuZXdlciBmaWxl CistCQkJCQkJCQljb250aW51ZTsKKy0KKy0JCQkJCQlhc3NlbWJsaWVzQnlWZXJzaW9uIFt2ZXJz aW9uXSA9IGZpbGU7CistCQkJCQl9CistCQkJCX0KKy0JCQl9CistCQl9CisrICAgICAgICAgICAg c3RyaW5nW10gZ2FjX3BhdGhzID0gR2V0R2FjUGF0aHMgKCk7CisrICAgICAgICAgICAgaWYgKGdh Y19wYXRocyA9PSBudWxsKQorKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJh dGlvbkV4Y2VwdGlvbiAoIlhCdWlsZCBtdXN0IGJlIHJ1biBvbiBNb25vIHJ1bnRpbWUiKTsKKysg ICAgICAgICAgICBpZiAoZ2FjX3BhdGhzLkxlbmd0aCA9PSAwIHx8ICFEaXJlY3RvcnkuRXhpc3Rz IChnYWNfcGF0aHNbMF0pKQorKyAgICAgICAgICAgICAgICByZXR1cm47IC8vIGluIGNhc2UgbW9u byBpc24ndCAiaW5zdGFsbGVkIi4KKysKKysgICAgICAgICAgICBWZXJzaW9uIHZlcnNpb247Cisr ICAgICAgICAgICAgRGlyZWN0b3J5SW5mbyB2ZXJzaW9uX2luZm8sIGFzc2VtYmx5X2luZm87Cisr CisrICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGdhY19wYXRoIGluIGdhY19wYXRocykgewor KyAgICAgICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgYXNzZW1ibHlfbmFtZSBpbiBEaXJlY3Rv cnkuR2V0RGlyZWN0b3JpZXMgKGdhY19wYXRoKSkgeworKyAgICAgICAgICAgICAgICAgICAgYXNz ZW1ibHlfaW5mbyA9IG5ldyBEaXJlY3RvcnlJbmZvIChhc3NlbWJseV9uYW1lKTsKKysgICAgICAg ICAgICAgICAgICAgIGZvcmVhY2ggKHN0cmluZyB2ZXJzaW9uX3Rva2VuIGluIERpcmVjdG9yeS5H ZXREaXJlY3RvcmllcyAoYXNzZW1ibHlfbmFtZSkpIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICBmb3JlYWNoIChzdHJpbmcgZmlsZSBpbiBEaXJlY3RvcnkuR2V0RmlsZXMgKHZlcnNpb25fdG9r ZW4sICIqLmRsbCIpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25faW5m byA9IG5ldyBEaXJlY3RvcnlJbmZvICh2ZXJzaW9uX3Rva2VuKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmVyc2lvbiA9IG5ldyBWZXJzaW9uICh2ZXJzaW9uX2luZm8uTmFtZS5TcGxp dCAoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ldyBjaGFyIFtdIHsnXyd9LCBTdHJpbmdTcGxpdE9wdGlvbnMuUmVtb3ZlRW1wdHlFbnRy aWVzKSBbMF0pOworKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWN0aW9uYXJ5PFZl cnNpb24sIHN0cmluZz4gYXNzZW1ibGllc0J5VmVyc2lvbiA9IG5ldyBEaWN0aW9uYXJ5IDxWZXJz aW9uLCBzdHJpbmc+ICgpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdhYy5U cnlHZXRWYWx1ZSAoYXNzZW1ibHlfaW5mby5OYW1lLCBvdXQgYXNzZW1ibGllc0J5VmVyc2lvbikp IHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxpZXNCeVZlcnNpb24g PSBuZXcgRGljdGlvbmFyeSA8VmVyc2lvbiwgc3RyaW5nPiAoKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdhYy5BZGQgKGFzc2VtYmx5X2luZm8uTmFtZSwgYXNzZW1ibGllc0J5 VmVyc2lvbik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyaW5nIGZvdW5kX2ZpbGU7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChhc3NlbWJsaWVzQnlWZXJzaW9uLlRyeUdldFZhbHVlICh2ZXJzaW9uLCBv dXQgZm91bmRfZmlsZSkgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUu R2V0TGFzdFdyaXRlVGltZSAoZmlsZSkgPD0gRmlsZS5HZXRMYXN0V3JpdGVUaW1lIChmb3VuZF9m aWxlKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIER1cGxpY2F0ZSBmb3Vu ZCwgdGFrZSB0aGUgbmV3ZXIgZmlsZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxpZXNCeVZl cnNpb24gW3ZlcnNpb25dID0gZmlsZTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9Cisr ICAgICAgICB9CisgCisgCQlwdWJsaWMgUmVzb2x2ZWRSZWZlcmVuY2UgRmluZEluVGFyZ2V0RnJh bWV3b3JrIChJVGFza0l0ZW0gcmVmZXJlbmNlLCBzdHJpbmcgZnJhbWV3b3JrX2RpciwgYm9vbCBz cGVjaWZpY192ZXJzaW9uKQorIAkJeworZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9jb3JsaWIvU3lz dGVtL0Vudmlyb25tZW50LmNzIGIvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0vRW52aXJvbm1lbnQu Y3MKK2luZGV4IGZkOTM2YWIyMWE0Li5iNWE1Yzc3YzFhMyAxMDA2NDQKKy0tLSBhL21jcy9jbGFz cy9jb3JsaWIvU3lzdGVtL0Vudmlyb25tZW50LmNzCisrKysgYi9tY3MvY2xhc3MvY29ybGliL1N5 c3RlbS9FbnZpcm9ubWVudC5jcworQEAgLTk4NCw5ICs5ODQsMTggQEAgcHJpdmF0ZSBzdGF0aWMg c3RyaW5nIEdhY1BhdGggeworIAkJCQlyZXR1cm4gUGF0aC5Db21iaW5lIChQYXRoLkNvbWJpbmUg KGludGVybmFsR2V0R2FjUGF0aCAoKSwgIm1vbm8iKSwgImdhYyIpOworIAkJCX0KKyAJCX0KKysK KysgICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZ1tdIEdhY1BhdGhzIHsKKysgICAgICAgICAg ICBnZXQgeworKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxHZXRHYWNQYXRocyAoKTsK KysgICAgICAgICAgICB9CisrICAgICAgICB9CisgI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTY5 CisgCQlbTWV0aG9kSW1wbEF0dHJpYnV0ZSAoTWV0aG9kSW1wbE9wdGlvbnMuSW50ZXJuYWxDYWxs KV0KKyAJCWludGVybmFsIGV4dGVybiBzdGF0aWMgc3RyaW5nIGludGVybmFsR2V0R2FjUGF0aCAo KTsKKysKKysgICAgICAgIFtNZXRob2RJbXBsQXR0cmlidXRlIChNZXRob2RJbXBsT3B0aW9ucy5J bnRlcm5hbENhbGwpXQorKwkJaW50ZXJuYWwgZXh0ZXJuIHN0YXRpYyBzdHJpbmcgW10gaW50ZXJu YWxHZXRHYWNQYXRocyAoKTsKKyAjZW5kaWYKKyAJCVtNZXRob2RJbXBsQXR0cmlidXRlIChNZXRo b2RJbXBsT3B0aW9ucy5JbnRlcm5hbENhbGwpXQorIAkJaW50ZXJuYWwgZXh0ZXJuIHN0YXRpYyBz dHJpbmcgW10gR2V0TG9naWNhbERyaXZlc0ludGVybmFsICgpOworZGlmZiAtLWdpdCBhL21vbm8v bWV0YWRhdGEvYXNzZW1ibHkuYyBiL21vbm8vbWV0YWRhdGEvYXNzZW1ibHkuYworaW5kZXggOGM3 MWFkMGViOTUuLjc1OWQ1YWVmYmNmIDEwMDY0NAorLS0tIGEvbW9uby9tZXRhZGF0YS9hc3NlbWJs eS5jCisrKysgYi9tb25vL21ldGFkYXRhL2Fzc2VtYmx5LmMKK0BAIC04NTQsNiArODU0LDExIEBA IG1vbm9fYXNzZW1ibHlfZ2V0cm9vdGRpciAodm9pZCkKKyAJcmV0dXJuIGRlZmF1bHRfcGF0aCBb MF07CisgfQorIAorK2NoYXIgKiptb25vX2Fzc2VtYmx5X2dldF9leHRyYV9nYWNfcGF0aHMoKQor K3sKKysgICAgcmV0dXJuIGV4dHJhX2dhY19wYXRoczsKKyt9CisrCisgLyoqCisgICogbW9ub19u YXRpdmVfZ2V0cm9vdGRpcjoKKyAgKiAKK2RpZmYgLS1naXQgYS9tb25vL21ldGFkYXRhL2Fzc2Vt Ymx5LmggYi9tb25vL21ldGFkYXRhL2Fzc2VtYmx5LmgKK2luZGV4IGU5YzAyZWUyNmY1Li5lNWYw NjBlODIzOCAxMDA2NDQKKy0tLSBhL21vbm8vbWV0YWRhdGEvYXNzZW1ibHkuaAorKysrIGIvbW9u by9tZXRhZGF0YS9hc3NlbWJseS5oCitAQCAtNTAsNiArNTAsNyBAQCBNT05PX0FQSSBNT05PX1JU X0VYVEVSTkFMX09OTFkgTW9ub0ltYWdlKiAgICBtb25vX2Fzc2VtYmx5X2xvYWRfbW9kdWxlIChN b25vQXNzZQorIE1PTk9fQVBJIHZvaWQgICAgICAgICAgbW9ub19hc3NlbWJseV9jbG9zZSAgICAg IChNb25vQXNzZW1ibHkgKmFzc2VtYmx5KTsKKyBNT05PX0FQSSB2b2lkICAgICAgICAgIG1vbm9f YXNzZW1ibHlfc2V0cm9vdGRpciAoY29uc3QgY2hhciAqcm9vdF9kaXIpOworIE1PTk9fQVBJIE1P Tk9fQ09OU1RfUkVUVVJOIGNoYXIgKm1vbm9fYXNzZW1ibHlfZ2V0cm9vdGRpciAodm9pZCk7Cisr TU9OT19BUEkgY2hhciAqKm1vbm9fYXNzZW1ibHlfZ2V0X2V4dHJhX2dhY19wYXRocyAodm9pZCk7 CisgTU9OT19BUEkgY2hhciAgICAgICAgICptb25vX25hdGl2ZV9nZXRyb290ZGlyICh2b2lkKTsK KyBNT05PX0FQSSB2b2lkCSAgICAgICBtb25vX2Fzc2VtYmx5X2ZvcmVhY2ggICAgKE1vbm9GdW5j IGZ1bmMsIHZvaWQqIHVzZXJfZGF0YSk7CisgTU9OT19BUEkgdm9pZCAgICAgICAgICBtb25vX2Fz c2VtYmx5X3NldF9tYWluICAgKE1vbm9Bc3NlbWJseSAqYXNzZW1ibHkpOworZGlmZiAtLWdpdCBh L21vbm8vbWV0YWRhdGEvaWNhbGwtZGVjbC5oIGIvbW9uby9tZXRhZGF0YS9pY2FsbC1kZWNsLmgK K2luZGV4IGE3N2ZjZjM4NTk4Li4zZjBmMTc1OGVjMiAxMDA2NDQKKy0tLSBhL21vbm8vbWV0YWRh dGEvaWNhbGwtZGVjbC5oCisrKysgYi9tb25vL21ldGFkYXRhL2ljYWxsLWRlY2wuaAorQEAgLTE1 Miw2ICsxNTIsNyBAQCBJQ0FMTF9FWFBPUlQgZ2ludDMyIHZlc19pY2FsbF9TeXN0ZW1fRW52aXJv bm1lbnRfZ2V0X1RpY2tDb3VudCAodm9pZCk7CisgI2lmIEVOQUJMRV9ORVRDT1JFCisgSUNBTExf RVhQT1JUIGdpbnQ2NCB2ZXNfaWNhbGxfU3lzdGVtX0Vudmlyb25tZW50X2dldF9UaWNrQ291bnQ2 NCAodm9pZCk7CisgI2VuZGlmCisrSUNBTExfRVhQT1JUIE1vbm9BcnJheSAqdmVzX2ljYWxsX1N5 c3RlbV9FbnZpcm9ubWVudF9HZXRHYWNQYXRocyAodm9pZCk7CisgSUNBTExfRVhQT1JUIGdpbnQ2 NCB2ZXNfaWNhbGxfU3lzdGVtX0RhdGVUaW1lX0dldFN5c3RlbVRpbWVBc0ZpbGVUaW1lICh2b2lk KTsKKyBJQ0FMTF9FWFBPUlQgZ2ludDY0IHZlc19pY2FsbF9TeXN0ZW1fRGlhZ25vc3RpY3NfUHJv Y2Vzc19HZXRQcm9jZXNzRGF0YSAoaW50LCBnaW50MzIsIE1vbm9Qcm9jZXNzRXJyb3IqKTsKKyBJ Q0FMTF9FWFBPUlQgZ2ludDY0IHZlc19pY2FsbF9TeXN0ZW1fRGlhZ25vc3RpY3NfU3RvcHdhdGNo X0dldFRpbWVzdGFtcCAodm9pZCk7CitkaWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9pY2FsbC1k ZWYuaCBiL21vbm8vbWV0YWRhdGEvaWNhbGwtZGVmLmgKK2luZGV4IDBhNDQ3Mjk2NzRiLi41OWM4 MDNiYTQ4OCAxMDA2NDQKKy0tLSBhL21vbm8vbWV0YWRhdGEvaWNhbGwtZGVmLmgKKysrKyBiL21v bm8vbWV0YWRhdGEvaWNhbGwtZGVmLmgKK0BAIC0zMjcsNiArMzI3LDcgQEAgSEFORExFUyhFTlZf MTZiLCAiZ2V0X2J1bmRsZWRfbWFjaGluZV9jb25maWciLCB2ZXNfaWNhbGxfU3lzdGVtX0Vudmly b25tZW50X2dldF8KKyBIQU5ETEVTKEVOVl8xNm0sICJpbnRlcm5hbEJyb2FkY2FzdFNldHRpbmdD aGFuZ2UiLCB2ZXNfaWNhbGxfU3lzdGVtX0Vudmlyb25tZW50X0Jyb2FkY2FzdFNldHRpbmdDaGFu Z2UsIHZvaWQsIDAsICgpKQorIEhBTkRMRVMoRU5WXzE3LCAiaW50ZXJuYWxHZXRFbnZpcm9ubWVu dFZhcmlhYmxlX25hdGl2ZSIsIHZlc19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfR2V0RW52aXJv bm1lbnRWYXJpYWJsZV9uYXRpdmUsIE1vbm9TdHJpbmcsIDEsIChjb25zdF9jaGFyX3B0cikpCisg SEFORExFUyhFTlZfMTgsICJpbnRlcm5hbEdldEdhY1BhdGgiLCB2ZXNfaWNhbGxfU3lzdGVtX0Vu dmlyb25tZW50X0dldEdhY1BhdGgsIE1vbm9TdHJpbmcsIDAsICgpKQorK05PSEFORExFUyhJQ0FM TChFTlZfMThfMSwgImludGVybmFsR2V0R2FjUGF0aHMiLCB2ZXNfaWNhbGxfU3lzdGVtX0Vudmly b25tZW50X0dldEdhY1BhdGhzKSkKKyBIQU5ETEVTKEVOVl8xOSwgImludGVybmFsR2V0SG9tZSIs IHZlc19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfSW50ZXJuYWxHZXRIb21lLCBNb25vU3RyaW5n LCAwLCAoKSkKKyBOT0hBTkRMRVMoSUNBTEwoRU5WXzIwLCAic2V0X0V4aXRDb2RlIiwgbW9ub19l bnZpcm9ubWVudF9leGl0Y29kZV9zZXQpKQorIElDQUxMX1RZUEUoR0MsICJTeXN0ZW0uR0MiLCBH Q18xMCkKK2RpZmYgLS1naXQgYS9tb25vL21ldGFkYXRhL2ljYWxsLmMgYi9tb25vL21ldGFkYXRh L2ljYWxsLmMKK2luZGV4IDZkMTZiOWMzNTQwLi4xZTU5MmMzMGUyNyAxMDA2NDQKKy0tLSBhL21v bm8vbWV0YWRhdGEvaWNhbGwuYworKysrIGIvbW9uby9tZXRhZGF0YS9pY2FsbC5jCitAQCAtNzc4 MSw2ICs3NzgxLDU2IEBAIHZlc19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfR2V0R2FjUGF0aCAo TW9ub0Vycm9yICplcnJvcikKKyB9CisgI2VuZGlmCisgCisrSUNBTExfRVhQT1JUIE1vbm9BcnJh eSAqCisrdmVzX2ljYWxsX1N5c3RlbV9FbnZpcm9ubWVudF9HZXRHYWNQYXRocyAoKQorK3sKKysg ICAgY2hhciAqKmV4dHJhX2dhY19wYXRocyA9IG1vbm9fYXNzZW1ibHlfZ2V0X2V4dHJhX2dhY19w YXRocygpOworKyAgICBjb25zdCBjaGFyICpyb290ZGlyID0gbW9ub19hc3NlbWJseV9nZXRyb290 ZGlyICgpOworKyAgICBjaGFyICoqZTsKKysgICAgaW50IG47CisrICAgIE1vbm9Eb21haW4gKmRv bWFpbjsKKysgICAgTW9ub0FycmF5ICpvdXQ7CisrICAgIE1vbm9TdHJpbmcgKnN0cjsKKysgICAg Z2NoYXIgKnRtcDsKKysgICAgTW9ub0Vycm9yIGVycm9yOworKyAgICBuID0gMDsKKysgICAgaWYg KHJvb3RkaXIpIG4rKzsKKysgICAgaWYgKGV4dHJhX2dhY19wYXRocykgeworKyAgICAgICAgZm9y IChlID0gZXh0cmFfZ2FjX3BhdGhzOyAqZSAhPSAwOyBlKyspOworKyAgICAgICAgbiArPSAoZSAt IGV4dHJhX2dhY19wYXRocyk7CisrICAgIH0KKysKKysgICAgZG9tYWluID0gbW9ub19kb21haW5f Z2V0ICgpOworKyAgICBvdXQgPSBtb25vX2FycmF5X25ld19jaGVja2VkIChkb21haW4sIG1vbm9f ZGVmYXVsdHMuc3RyaW5nX2NsYXNzLCBuLCAmZXJyb3IpOworKworKyAgICBpZiAobW9ub19lcnJv cl9zZXRfcGVuZGluZ19leGNlcHRpb24gKCZlcnJvcikpCisrICAgICAgICByZXR1cm4gTlVMTDsK KysKKysgICAgbiA9IDA7CisrICAgIGlmIChyb290ZGlyKSB7CisrICAgICAgICB0bXAgPSBnX2J1 aWxkX3BhdGggKEdfRElSX1NFUEFSQVRPUl9TLCByb290ZGlyLCAibW9ubyIsICJnYWMiLCBOVUxM KTsKKysgICAgICAgIHN0ciA9IG1vbm9fc3RyaW5nX25ld19jaGVja2VkIChkb21haW4sIHRtcCwg JmVycm9yKTsKKysgICAgICAgIGdfZnJlZSAodG1wKTsKKysgICAgICAgIGlmIChtb25vX2Vycm9y X3NldF9wZW5kaW5nX2V4Y2VwdGlvbiAoJmVycm9yKSkKKysgICAgICAgICAgICByZXR1cm4gTlVM TDsKKysgICAgICAgIG1vbm9fYXJyYXlfc2V0cmVmX2ludGVybmFsIChvdXQsIG4sIHN0cik7Cisr ICAgICAgICBuKys7CisrICAgIH0KKysgICAgaWYgKGV4dHJhX2dhY19wYXRocykgeworKyAgICAg ICAgZm9yIChlID0gZXh0cmFfZ2FjX3BhdGhzOyAqZSAhPSAwOyBlKyspIHsKKysgICAgICAgICAg ICB0bXAgPSBnX2J1aWxkX3BhdGggKEdfRElSX1NFUEFSQVRPUl9TLCAqZSwgImxpYiIsICJtb25v IiwgImdhYyIsIE5VTEwpOworKyAgICAgICAgICAgIHN0ciA9IG1vbm9fc3RyaW5nX25ld19jaGVj a2VkIChkb21haW4sIHRtcCwgJmVycm9yKTsKKysgICAgICAgICAgICBnX2ZyZWUgKHRtcCk7Cisr ICAgICAgICAgICAgaWYgKG1vbm9fZXJyb3Jfc2V0X3BlbmRpbmdfZXhjZXB0aW9uICgmZXJyb3Ip KQorKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgICAgICBtb25vX2FycmF5 X3NldHJlZl9pbnRlcm5hbCAob3V0LCBuLCBzdHIpOworKyAgICAgICAgICAgIG4rKzsKKysgICAg ICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gb3V0OworK30KKysKKyAjaWZuZGVmIEhPU1Rf V0lOMzIKKyBzdGF0aWMgaW5saW5lIE1vbm9TdHJpbmdIYW5kbGUKKyBtb25vX2ljYWxsX2dldF93 aW5kb3dzX2ZvbGRlcl9wYXRoIChpbnQgZm9sZGVyLCBNb25vRXJyb3IgKmVycm9yKQpkaWZmIC0t Z2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtZml4LUNvbmRpdGlvblBhcnNl ci5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNi4xMi4wLWZpeC1Db25kaXRpb25Q YXJzZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRlY2Rl MDdkNDI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEy LjAtZml4LUNvbmRpdGlvblBhcnNlci5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitkaWZmIC0tZ2l0 IGEvbWNzL2NsYXNzL01pY3Jvc29mdC5CdWlsZC5FbmdpbmUvTWljcm9zb2Z0LkJ1aWxkLkJ1aWxk RW5naW5lL0NvbmRpdGlvblBhcnNlci5jcyBiL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQuRW5n aW5lL01pY3Jvc29mdC5CdWlsZC5CdWlsZEVuZ2luZS9Db25kaXRpb25QYXJzZXIuY3MKK2luZGV4 IGI1ZTJlODA5YWU0Li43NTc0OTJkMTVlNCAxMDA2NDQKKy0tLSBhL21jcy9jbGFzcy9NaWNyb3Nv ZnQuQnVpbGQuRW5naW5lL01pY3Jvc29mdC5CdWlsZC5CdWlsZEVuZ2luZS9Db25kaXRpb25QYXJz ZXIuY3MKKysrKyBiL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQuRW5naW5lL01pY3Jvc29mdC5C dWlsZC5CdWlsZEVuZ2luZS9Db25kaXRpb25QYXJzZXIuY3MKK0BAIC0yMDUsMTkgKzIwNSwzMCBA QCBDb25kaXRpb25FeHByZXNzaW9uIFBhcnNlRnVuY3Rpb25FeHByZXNzaW9uIChzdHJpbmcgZnVu Y3Rpb25fbmFtZSkKKyAJCXsKKyAJCQlMaXN0IDxDb25kaXRpb25GYWN0b3JFeHByZXNzaW9uPiBs aXN0ID0gbmV3IExpc3QgPENvbmRpdGlvbkZhY3RvckV4cHJlc3Npb24+ICgpOworIAkJCUNvbmRp dGlvbkZhY3RvckV4cHJlc3Npb24gZTsKKy0JCQkKKysKKysgICAgICAgICAgICAvKiBzdGFydHMg bG9va2luZyBhdCB0aGUgb3BlbiBwYXJlbiwgbW92ZSBwYXN0IGl0ICovCisrICAgICAgICAgICAg dG9rZW5pemVyLkdldE5leHRUb2tlbiAoKTsKKysgICAgICAgICAgICBpZiAodG9rZW5pemVyLlRv a2VuLlR5cGUgPT0gVG9rZW5UeXBlLlJpZ2h0UGFyZW4pIHsKKysgICAgICAgICAgICAgICAgLyog bGVhdmUgdXMgbG9va2luZyBwYXN0IHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IGxpc3QgKi8KKysg ICAgICAgICAgICAgICAgdG9rZW5pemVyLkdldE5leHRUb2tlbiAoKTsKKysgICAgICAgICAgICAg ICAgcmV0dXJuIGxpc3Q7CisrICAgICAgICAgICAgfQorIAkJCXdoaWxlICh0cnVlKSB7CistCQkJ CXRva2VuaXplci5HZXROZXh0VG9rZW4gKCk7CistCQkJCWlmICh0b2tlbml6ZXIuVG9rZW4uVHlw ZSA9PSBUb2tlblR5cGUuUmlnaHRQYXJlbikgeworLQkJCQkJdG9rZW5pemVyLkdldE5leHRUb2tl biAoKTsKKy0JCQkJCWJyZWFrOworLQkJCQl9CistCQkJCWlmICh0b2tlbml6ZXIuVG9rZW4uVHlw ZSA9PSBUb2tlblR5cGUuQ29tbWEpCisrICAgICAgICAgICAgICAgIGUgPSAoQ29uZGl0aW9uRmFj dG9yRXhwcmVzc2lvbikgUGFyc2VGYWN0b3JFeHByZXNzaW9uICgpOworKyAgICAgICAgICAgICAg ICBsaXN0LkFkZCAoZSk7CisrICAgICAgICAgICAgICAgIC8qIFBhcnNlRmFjdG9yRXhwcmVzc2lv biBsZWF2ZXMgdXMgbG9va2luZyBhdCB3aGF0IGZvbGxvd3MgdGhlCisrICAgICAgICAgICAgICAg ICAqIGV4cHJlc3Npb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKHRva2VuaXplci5Ub2tlbi5U eXBlID09IFRva2VuVHlwZS5SaWdodFBhcmVuKSB7CisrICAgICAgICAgICAgICAgICAgICAvKiBs ZWF2ZSB1cyBsb29raW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYXJndW1lbnQgbGlzdCAqLworKyAg ICAgICAgICAgICAgICAgICAgdG9rZW5pemVyLkdldE5leHRUb2tlbiAoKTsKKysgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlm ICh0b2tlbml6ZXIuVG9rZW4uVHlwZSA9PSBUb2tlblR5cGUuQ29tbWEpIHsKKysgICAgICAgICAg ICAgICAgICAgIHRva2VuaXplci5HZXROZXh0VG9rZW4gKCk7CisgCQkJCQljb250aW51ZTsKKy0J CQkJCQorLQkJCQl0b2tlbml6ZXIuUHV0YmFjayAodG9rZW5pemVyLlRva2VuKTsKKy0JCQkJZSA9 IChDb25kaXRpb25GYWN0b3JFeHByZXNzaW9uKSBQYXJzZUZhY3RvckV4cHJlc3Npb24gKCk7Cist CQkJCWxpc3QuQWRkIChlKTsKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAg ICB0aHJvdyBuZXcgRXhwcmVzc2lvblBhcnNlRXhjZXB0aW9uIChTdHJpbmcuRm9ybWF0ICgiVW5l eHBlY3RlZCB0b2tlbiB7MH0gaW4gYXJndW1lbnQgbGlzdCB3aGlsZSBwYXJzaW5nIGNvbmRpdGlv biBcInsxfVwiIiwgdG9rZW5pemVyLlRva2VuLCBjb25kaXRpb25TdHIpKTsKKyAJCQl9CisgCQkJ CisgCQkJcmV0dXJuIGxpc3Q7Ci0tIAoyLjQ1LjIKCg== --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0018-gnu-Add-mono-pre-5.10.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0018-gnu-Add-mono-pre-5.10.0.patch RnJvbSA3Yjg4YjBhMmIyNDUwN2FhMjdkZWU1ZmZhYWZhZDVkY2Q1YzAxZGZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogV2Vk LCAyNyBOb3YgMjAyNCAwMDo1MjowNQpTdWJqZWN0OiBbUEFUQ0ggdjIgMTgvMjFdIGdudTogQWRk IG1vbm8tcHJlLTUuMTAuMC4KCiogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KICAobW9uby1wcmUt NS4xMC4wLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1vbm8tcHJlLTUuMTAuMCk6IE5ldyB2YXJpYWJs ZXMuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAuMC5w YXRjaDogTmV3IHBhdGNoLgoqIGdudS9sb2NhbC5tayAoZGlzdF9wYXRjaF9EQVRBKTogUmVnaXN0 ZXIgbmV3IHBhdGNoLgotLS0KIGdudS9sb2NhbC5tayAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gICAgICAgICAgICAgICAg ICAgICAgIHwgICA3MyArCiAuLi4vbW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAuMC5wYXRjaCAg ICAgICAgfCA0MjE4ICsrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQyOTIgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t bWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2gKCmRpZmYgLS1naXQgYS9nbnUvbG9jYWwubWsg Yi9nbnUvbG9jYWwubWsKaW5kZXggNzEwZDZkMGE1NjguLmNiMDk0NTAyODQwIDEwMDY0NAotLS0g YS9nbnUvbG9jYWwubWsKKysrIGIvZ251L2xvY2FsLm1rCkBAIC0xODM0LDYgKzE4MzQsNyBAQCBk aXN0X3BhdGNoX0RBVEEgPQkJCQkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby00Ljku MC1maXgtcnVudGltZW1ldGFkYXRhdmVyc2lvbi5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0 Y2hlcy9tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv bW9uby01LjguMC1wYXRjaGVzLnBhdGNoCQlcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t bWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9t b3NhaWNhdGNoZXItdW5idW5kbGUtaHRzbGliLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNo ZXMvbXJyZXNjdWUtc3VwcG9ydC1sb3ZlLTExLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRj aGVzL210b29scy1tZm9ybWF0LXVuaW5pdGlhbGl6ZWQucGF0Y2gJXApkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCAwOGYx MDg2YTVjMC4uZmEwNTg5ZTYyZDggMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2Nt CisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0xNDYwLDMgKzE0NjAsNzYgQEAgKGRl ZmluZS1wdWJsaWMgbW9uby01LjguMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0b3AgIi9tY3MvY2xhc3MvbGliL2J1aWxkL21jcy5leGUiKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAsQG1ha2UtZmxhZ3MpKSkpKSkpKSkpKSkKKworKGRlZmluZSBtb25vLXBy ZS01LjEwLjAtZXh0ZXJuYWwtcmVwby1zcGVjcworICAnKCgiYXBpLWRvYy10b29scyIgICAgICAg ICAgICAgICAiZDAzZTgxOTgzOGM2MjQxZjkyZjkwNjU1Y2I0NDhjYzQ3YzllODc5MSIKKyAgICAg IjFyaWtpNzlmM2lnM2N4aWd2aXNzODFkejYwMWhuOTJhMWdpZmdsbTBtempiczc2c2YzZmoiCisg ICAgICM6cmVjdXJzaXZlPyAjdCkKKyAgICAoImFwaS1zbmFwc2hvdCIgICAgICAgICAgICAgICAg IjYyNzMzM2NhZTg0ZjAyYTM2ZWU5Y2E2MDVjOTZkYWM0NTU3ZDlmMzUiCisgICAgICIwcDljNmJy eGl3eDM4eXZhZjU1amQwbDFteGZqM2I1YWgweGFzMmh2NmZya3o4MHlycWRsIikKKyAgICAoImFz cG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4 NzMzN2U0NGUyOTkiCisgICAgICIwcmtzMzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3 ejRsOTRpaWlyd24xZnExIikKKyAgICAoKCJyZWZlcmVuY2UtYXNzZW1ibGllcyIgImJpbmFyeS1y ZWZlcmVuY2UtYXNzZW1ibGllcyIpCisgICAgICI5YzVjYzdmMDUxYTBiYmEyZTQxMzQxYTViYWVi ZmM0ZDJjMjEzM2VmIgorICAgICAiMTRiZm4xcXZuaThneWZ4andtdnlreWpqeTNqNW5nNGZuYmxq ZGFkaTlkbTRiOWFsMHdnMSIpCisgICAgKCJib2NrYnVpbGQiICAgICAgICAgICAgICAgICAgICIy OTAyMmFmNWQ4YTk0NjUxYjJlZWNlOTNmOTEwNTU5YjI1NGVjM2YwIgorICAgICAiMGxjbGMxc21t cmo2eHczMmRsbDA3M214dzRkZGlpeHY5YXJ2MDJ5dzN3NWgxMzVheTd3NCIpCisgICAgKCJib3Jp bmdzc2wiICAgICAgICAgICAgICAgICAgICIzZTA3NzBlMTg4MzU3MTQ3MDg4NjBiYTlmZTFhZjA0 YTkzMjk3MWZmIgorICAgICAiMTM5YTBnbDkxYTUyazJyNm5hNmlhbHprcXlrYWoxcms4OHpqcmth ejNzZHh4N25tbWc2eSIpCisgICAgKCJjZWNpbCIgICAgICAgICAgICAgICAgICAgICAgICJiYzEx ZjQ3Mjk1NDY5NGViZDkyYWU0OTU2ZjExMGMxMDM2YTdjMmUwIgorICAgICAiMTIybm5wNXBjbncx OHBqNmFtbnFrcXhscm1hcGQ0dnk5eHM2NWhkMGJxeXFqaDU2YnduZCIpCisgICAgKCgiY2VjaWwi ICJjZWNpbC1sZWdhY3kiKSAgICAgICIzM2Q1MGI4NzRmZDUyNzExOGJjMzYxZDgzZGUzZDQ5NGU4 YmI1NWUxIgorICAgICAiMXA0aGwxNzk2aWIyNnlreWY1c25sNmNqMGx4MHY3bWpoMHhxaGp3NnFk aDc1M25zanloYiIpCisgICAgKCJjb3JlZngiICAgICAgICAgICAgICAgICAgICAgICJjYjFiMDQ5 Yzk1MjI3NDY1YzE3OTFiODU3Y2I1YmE4NjM4NWQ5ZjI5IgorICAgICAiMXByMHFqbGd4ZjYzenMx ZzgwZ3FkNngzcWhsZ2Iwd2xjYzh6bTh6OGFtNWF5d3J2Z2I1MyIpCisgICAgKCJjb3JlcnQiICAg ICAgICAgICAgICAgICAgICAgICI0OGRiYTczODAxZTgwNGU4OWYwMDMxMWRhOTlkODczZjljNTUw Mjc4IgorICAgICAiMXp3NDdqZjRjd3FtYWl4eWxpc3hpNzN4ZjZjYXA0MWJ3Zjl2bG1weGFuenhh cWtsenN2ayIpCisgICAgKCJpa2Rhc20iICAgICAgICAgICAgICAgICAgICAgICI0NjVjMDgxNTU1 OGZkNDNjMDExMGY4ZDAwZmMxODZhYzAwNDRhYzZhIgorICAgICAiMHhpcjdwY2dxMDRoYjdzOGc5 d3NxZHJ5cGI2bDI5cmFqM2l6NXJjcXpkbTAwNTZrNzV3MiIpCisgICAgKCgiaWt2bS1mb3JrIiAi aWt2bSIpICAgICAgICAgICI4NDdlMDVmY2VkNWM5YTQxZmYwZjI0ZjFmOWQ0MGQ1YThhNTc3MmMx IgorICAgICAiMWZsOWJtM2xtemY4aXF2M3g0aXFrejlmYzU0bXdkdnJ4aXN4ZzJudnd3Y3NpNHNh ZmZwaSIpCisgICAgKCJsaW5rZXIiICAgICAgICAgICAgICAgICAgICAgICI5OTM1NGJmNWMxM2I4 MDU1MjA5Y2IwODJjZGRjNTBjODA0N2FiMDg4IgorICAgICAiMDV6bGFqbnFmODN4ZnZuMndoaDlu cWw2ajg1c3ExMmF3MjZzcW15cXo3emNwbWwxNzFtaiIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24i ICAgICAgICAgICAgICI0NzFjM2UwODAzYTlmNDBhMGFjYzhhZWNlYjMxZGU2ZmY5M2E1MmM0Igor ICAgICAiMGRnbmdkNWhxazZ5aGxnNDBrYWJuNnFkbmtubTMyemN4OXE2Ym0ydzMxY3Nuc2s1OTc4 cyIpCisgICAgKCgiTnVHZXQuQnVpbGRUYXNrcyIgIm51Z2V0LWJ1aWxkdGFza3MiKQorICAgICAi YjU4YmE0MjgyMzc3YmNlZmQ0OGFiZGMyZDYyY2U2MzMwZTA3OWFiZSIKKyAgICAgIjFzYXkwM2Zu cWtqc3g5N3phY2FueTNzYTVqNG1oZms4Mjdoa3dwMjNpYjAycTE4ZjdsdnAiKQorICAgICgoIk5V bml0TGl0ZSIgIm51bml0LWxpdGUiKSAgICAiNzY0NjU2Y2RhZmRiM2FjZDI1ZGY4Y2I1MmE0ZTBl YTE0NzYwZmNjZCIKKyAgICAgIjBwYzdsazNwOTE2aXM4Y240bmdhcXZqbG1senYzdnZqcHlrc3k0 cHZiM3FiNWlpYXcwdnEiKQorICAgIDs7ICgicm9zbHluLWJpbmFyaWVzIiAgICAgICAgICAiMTkw NGM3ZDA2ODJhODc4ZTJkMjViNGQ0OWYzNDc1ZDEyZmJiOWNjNiIKKyAgICA7OyAgIiIpCisgICAg KCJyeCIgICAgICAgICAgICAgICAgICAgICAgICAgICJiMjlhNGIwZmRhNjA5ZTBhZjMzZmY1NGVk MTM2NTJiNmNjZjBlMDVlIgorICAgICAiMW4xandobXNia2N2MmQ4MDZpbW1jcHprYjcycnowNHh5 OThteXczNTVhOHc1YWgyNXlpdiIpCisgICAgOzsgKCJ4dW5pdC1iaW5hcmllcyIgICAgICAgICAg ICJkNDQzM2IwOTcyZjQwY2IzZWZhYTNmYmJhNTI4NjliZGU1ZGY4ZmE4IgorICAgIDs7ICAiIikK KyAgICApKQorCisoZGVmaW5lLXB1YmxpYyBtb25vLXByZS01LjEwLjAKKyAgKGxldCAoKGNvbW1p dCAiM2U5ZDdkNmU5Y2Y4ZGMzM2ViMjljNDk3YzM1MGExY2Q3ZGYzYTA1NyIpCisgICAgICAgICh2 ZXJzaW9uICI1LjguMC4xMjkiKQorICAgICAgICAocmV2aXNpb24gIjAiKSkKKyAgICAocGFja2Fn ZQorICAgICAgKGluaGVyaXQgbW9uby01LjguMCkKKyAgICAgICh2ZXJzaW9uIChnaXQtdmVyc2lv biB2ZXJzaW9uIHJldmlzaW9uIGNvbW1pdCkpCisgICAgICAobmFtZSAibW9ubyIpCisgICAgICAo c291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAg ICAgICAgICAgICAodXJpCisgICAgICAgICAgICAgICAgIChnaXQtcmVmZXJlbmNlCisgICAgICAg ICAgICAgICAgICAodXJsICJodHRwczovL2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9uby5naXQi KQorICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAo ZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgICAg KHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAgICAgICAgICAgICAiMG04 aTB6Z3poMGZnYjNzc3k5NXY5Y3prMWMwcmw3NnEwamo3ODM0czVmam5rZGo4bDRqYiIpKQorICAg ICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAgICAgICAgICAgICAgIChzbmlw cGV0ICN+KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkKGFkZC1leHRlcm5h bC1yZXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLXByZS01LjEwLjAt ZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRAcHJl cGFyZS1tb25vLXNvdXJjZS0wKSkKKyAgICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAgICAg ICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1vbm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0 Y2giKSkpKQorICAgICAgKG5hdGl2ZS1pbnB1dHMgKG1vZGlmeS1pbnB1dHMgKHBhY2thZ2UtbmF0 aXZlLWlucHV0cyBtb25vLTUuOC4wKQorICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAi bW9ubyIgbW9uby01LjguMCkpKSkpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMv bW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAuMC5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVz L21vbm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjQxZGZlZDdkZjdmCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3Bh Y2thZ2VzL3BhdGNoZXMvbW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAuMC5wYXRjaApAQCAtMCww ICsxLDQyMTggQEAKK0luY2x1ZGVzIHRoZSBmb2xsb3dpbmcgY29tbWl0czoKKzZmNWJmZTVjZjVh CiszODEyZDFjMTNmYworYTgwZjNkMGQ4N2MKK2IyZjA1MWYwYjE5CisyYTIwMmE4NDc4YgorNGQ3 ZDE2MDZkNzMKK2Q5OTcwMzA1NzMxCis5NGU4MGZjOGQ3ZgorMGI5MjgwMDgzYTkKKzA3ZDFlNWYz NmE1Cis1ZjI3OWYxNGFhMgorODg5NDIxZjNiZWYKK2Y0YzBmZDNkYzExCis3MWRmNWM2M2I0Ngor ZDZlNWJmMTY3ODIKKzIwN2Y1YzJjZDZkCitjNTEyNzUyYTQxNgorOWFjYThkNWZlNGIKK2RpZmYg LS1naXQgYS9tY3MvY2xhc3MvTW9uby5DU2hhcnAvVGVzdC9FdmFsdWF0b3IvVHlwZXNUZXN0LmNz IGIvbWNzL2NsYXNzL01vbm8uQ1NoYXJwL1Rlc3QvRXZhbHVhdG9yL1R5cGVzVGVzdC5jcworaW5k ZXggOTdmOWUwNDdlNmQuLmY4YmY2MzQ1NWRlIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL01vbm8u Q1NoYXJwL1Rlc3QvRXZhbHVhdG9yL1R5cGVzVGVzdC5jcworKysrIGIvbWNzL2NsYXNzL01vbm8u Q1NoYXJwL1Rlc3QvRXZhbHVhdG9yL1R5cGVzVGVzdC5jcworQEAgLTEzMSw1ICsxMzEsMTcgQEAg bmFtZXNwYWNlIE1vbm9UZXN0cy5FdmFsdWF0b3JUZXN0CisgCQl7CisgCQkJRXZhbHVhdG9yLlJ1 biAoInB1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeyBwcml2YXRlIFRlc3RFbnVtIF90ZTsgcHVibGlj IHN0cmluZyBHZXQoKSB7IHJldHVybiBfdGUuVG9TdHJpbmcoKTsgfSB9IHB1YmxpYyBlbnVtIFRl c3RFbnVtIHsgRmlyc3QsIFNlY29uZCB9Iik7CisgCQl9CisrCisrCQlbVGVzdF0KKysJCXB1Ymxp YyB2b2lkIEVudW1UeXBlV2l0aE9yZGVyRGVwZW5kZW5jeSAoKQorKwkJeworKwkJCUV2YWx1YXRv ci5SdW4gKCJwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsgcHVibGljIGVudW0gVGVzdEVudW0geyBW YWwxLCBWYWwyLCBWYWwzIH0gcHVibGljIFRlc3RFbnVtIHRlc3Q7IHB1YmxpYyBUZXN0Q2xhc3Mo KSB7IHRlc3QgPSBUZXN0RW51bS5WYWwzOyB9IH0iKTsKKysJCQlvYmplY3QgcmVzID0gRXZhbHVh dG9yLkV2YWx1YXRlICgibmV3IFRlc3RDbGFzcygpIik7CisrCisrCQkJdmFyIGZpZWxkcyA9IHJl cy5HZXRUeXBlICgpLkdldEZpZWxkcyAoKTsKKysJCQlmb3JlYWNoICh2YXIgZmllbGQgaW4gZmll bGRzKSB7CisrCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgkIntmaWVsZC5OYW1lfSA9IHtmaWVsZC5N ZW1iZXJUeXBlfSIpOworKwkJCX0KKysJCX0KKyAJfQorIH0KK1wgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMDIzLTMwLmNzIGIvbWNzL2Vycm9y cy9jczAwMjMtMzAuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4u ZmMxOWNjMjRlM2UKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwMDIzLTMwLmNz CitAQCAtMCwwICsxLDExIEBACisrLy8gQ1MwMDIzOiBUaGUgYGlzJyBvcGVyYXRvciBjYW5ub3Qg YmUgYXBwbGllZCB0byBvcGVyYW5kIG9mIHR5cGUgYGRlZmF1bHQnCisrLy8gTGluZTogOQorKy8v IENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysKKytjbGFzcyBDCisrewor KwlzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCWJvb2wgZCA9IGRlZmF1bHQgaXMgQzsKKysJ fQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJv cnMvY3MwMDI5LTM5LmNzIGIvbWNzL2Vycm9ycy9jczAwMjktMzkuY3MKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMGVkMjAwMDM2ZGMKKy0tLSAvZGV2L251bGwKKysr KyBiL21jcy9lcnJvcnMvY3MwMDI5LTM5LmNzCitAQCAtMCwwICsxLDE1IEBACisrLy8gQ1MwMDI5 OiBDYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYFMnIHRvIGBvYmplY3QnCisrLy8gTGlu ZTogMTMKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrcHVi bGljIHJlZiBzdHJ1Y3QgUworK3sKKyt9CisrCisrY2xhc3MgVGVzdAorK3sKKysJcHVibGljIHN0 YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJb2JqZWN0IG8gPSBuZXcgUyAoKTsKKysJfQorK30K K1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3Mw MDI5LTQwLmNzIGIvbWNzL2Vycm9ycy9jczAwMjktNDAuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwMC4uNmQ5MTY3YzMxZmEKKy0tLSAvZGV2L251bGwKKysrKyBiL21j cy9lcnJvcnMvY3MwMDI5LTQwLmNzCitAQCAtMCwwICsxLDE5IEBACisrLy8gQ1MwMDI5OiBDYW5u b3QgaW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYFMnIHRvIGBTeXN0ZW0uVmFsdWVUeXBlJworKy8v IExpbmU6IDE2CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKwor K3VzaW5nIFN5c3RlbTsKKysKKytwdWJsaWMgcmVmIHN0cnVjdCBTCisreworK30KKysKKytjbGFz cyBUZXN0CisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQl2YXIgcyA9 IGRlZmF1bHQgKFMpOworKwkJVmFsdWVUeXBlIHMyID0gczsKKysJCXZhciByZXMgPSBkZWZhdWx0 IChTKS5Ub1N0cmluZyAoKTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor ZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMDI5LTQxLmNzIGIvbWNzL2Vycm9ycy9jczAwMjkt NDEuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMWE2NWY1MmY3 MzcKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwMDI5LTQxLmNzCitAQCAtMCww ICsxLDEyIEBACisrLy8gQ1MwMDI5OiBDYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYFN5 c3RlbS5UeXBlZFJlZmVyZW5jZScgdG8gYG9iamVjdCcKKysvLyBMaW5lOiAxMAorKworK3VzaW5n IFN5c3RlbTsKKysKKytjbGFzcyBUZXN0CisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAo KQorKwl7CisrCQl2YXIgcmVzID0gZGVmYXVsdCAoVHlwZWRSZWZlcmVuY2UpLlRvU3RyaW5nICgp OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNz L2Vycm9ycy9jczAwMjktNDIuY3MgYi9tY3MvZXJyb3JzL2NzMDAyOS00Mi5jcworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jNzY3MTAwMGM3NgorLS0tIC9kZXYvbnVs bAorKysrIGIvbWNzL2Vycm9ycy9jczAwMjktNDIuY3MKK0BAIC0wLDAgKzEsMTAgQEAKKysvLyBD UzAwMjk6IENhbm5vdCBpbXBsaWNpdGx5IGNvbnZlcnQgdHlwZSBgc3RyaW5nJyB0byBgaW50Jwor Ky8vIExpbmU6IDgKKysKKytjbGFzcyBDCisreworKwl2b2lkIEV4aXN0cyAoaW50IF8pCisrCXsK KysJCV8gPSAiMiI7CisrCX0JCisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZm IC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAwMzAtMTcuY3MgYi9tY3MvZXJyb3JzL2NzMDAzMC0xNy5j cworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5iNzJiOGJmNzFlNQor LS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAwMzAtMTcuY3MKK0BAIC0wLDAgKzEs MTUgQEAKKysvLyBDUzAwMzA6IENhbm5vdCBjb252ZXJ0IHR5cGUgYG9iamVjdCcgdG8gYFMnCisr Ly8gTGluZTogMTMKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0Cisr CisrcmVmIHN0cnVjdCBTCisreworK30KKysKKytjbGFzcyBYCisreworKwlwdWJsaWMgc3RhdGlj IHZvaWQgRm9vIChvYmplY3QgbykKKysJeworKwkJdmFyIHJlcyA9IChTKSBvOworKwl9CisrfQor XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAx MDMtMTguY3MgYi9tY3MvZXJyb3JzL2NzMDEwMy0xOC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAwLi44Y2VjNzU1ZDIzZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNz L2Vycm9ycy9jczAxMDMtMTguY3MKK0BAIC0wLDAgKzEsMTAgQEAKKysvLyBDUzAxMDM6IFRoZSBu YW1lIGBfJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgY3VycmVudCBjb250ZXh0CisrLy8gTGluZTog OAorKworK2NsYXNzIEMKKyt7CisrCXZvaWQgVGVzdCAoKQorKwl7CisrCQlfLlRvU3RyaW5nICgp OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNz L2Vycm9ycy9jczAxMjMtMTAuY3MgYi9tY3MvZXJyb3JzL2NzMDEyMy0xMC5jcworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi40M2Q1ZTVkNjM2OAorLS0tIC9kZXYvbnVs bAorKysrIGIvbWNzL2Vycm9ycy9jczAxMjMtMTAuY3MKK0BAIC0wLDAgKzEsMTggQEAKKysvLyBD UzAxMjM6IEEgbWV0aG9kIG9yIGRlbGVnYXRlIGBvYmplY3QuVG9TdHJpbmcoKScgcGFyYW1ldGVy cyBkbyBub3QgbWF0Y2ggZGVsZWdhdGUgYFN5c3RlbS5GdW5jPHN0cmluZz4oKScgcGFyYW1ldGVy cworKy8vIExpbmU6IDE2CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVz dAorKworK3VzaW5nIFN5c3RlbTsKKysKKytwdWJsaWMgcmVmIHN0cnVjdCBTCisreworK30KKysK KytjbGFzcyBUZXN0CisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQl2 YXIgcyA9IG5ldyBTICgpOworKwkJRnVuYzxzdHJpbmc+IGYgPSBzLlRvU3RyaW5nOworKwl9Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9j czAxMjMtMTEuY3MgYi9tY3MvZXJyb3JzL2NzMDEyMy0xMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAwMDAwLi40MjdiNjI4YzE1OQorLS0tIC9kZXYvbnVsbAorKysrIGIv bWNzL2Vycm9ycy9jczAxMjMtMTEuY3MKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDUzAxMjM6IEEg bWV0aG9kIG9yIGRlbGVnYXRlIGBvYmplY3QuVG9TdHJpbmcoKScgcGFyYW1ldGVycyBkbyBub3Qg bWF0Y2ggZGVsZWdhdGUgYFN5c3RlbS5GdW5jPHN0cmluZz4oKScgcGFyYW1ldGVycworKy8vIExp bmU6IDE2CisrCisrdXNpbmcgU3lzdGVtOworKworK2NsYXNzIFRlc3QKKyt7CisrCXB1YmxpYyBz dGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCUZ1bmM8c3RyaW5nPiBmID0gZGVmYXVsdCAoVHlw ZWRSZWZlcmVuY2UpLlRvU3RyaW5nOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMzMtMi5jcyBiL21jcy9lcnJvcnMvY3Mw MTMzLTIuY3MKK2luZGV4IGI3YTM3MTgyZDczLi40ODQ4ODg3NmY3ZSAxMDA2NDQKKy0tLSBhL21j cy9lcnJvcnMvY3MwMTMzLTIuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MwMTMzLTIuY3MKK0BAIC0x LDQgKzEsNCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8g YGMnIG11c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6IFRoZSBleHByZXNzaW9uIGJlaW5nIGFz c2lnbmVkIHRvIGBjJyBtdXN0IGJlIGEgY29uc3RhbnQgb3IgZGVmYXVsdCB2YWx1ZQorIC8vIExp bmU6IDEwCisgCisgY2xhc3MgQworZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMTMzLTMuY3Mg Yi9tY3MvZXJyb3JzL2NzMDEzMy0zLmNzCitpbmRleCBjYWFlM2JkZTY4Yy4uMmY3ZGFjNjg4MGQg MTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMDEzMy0zLmNzCisrKysgYi9tY3MvZXJyb3JzL2Nz MDEzMy0zLmNzCitAQCAtMSw1ICsxLDUgQEAKKy0vLyBDUzAxMzM6IFRoZSBleHByZXNzaW9uIGJl aW5nIGFzc2lnbmVkIHRvIGBGb28nIG11c3QgYmUgY29uc3RhbnQKKy0vLyBMaW5lOiAxMgorKy8v IENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYEZvbycgbXVzdCBiZSBh IGNvbnN0YW50IG9yIGRlZmF1bHQgdmFsdWUKKysvLyBMaW5lOiA4CisgCisgY2xhc3MgVAorIHsK K2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMDEzMy00LmNzIGIvbWNzL2Vycm9ycy9jczAxMzMt NC5jcworaW5kZXggNDFmZTYzOWI0NDYuLjU0MTYyZDU0NGNhIDEwMDY0NAorLS0tIGEvbWNzL2Vy cm9ycy9jczAxMzMtNC5jcworKysrIGIvbWNzL2Vycm9ycy9jczAxMzMtNC5jcworQEAgLTEsNCAr MSw0IEBACistLy8gQ1MwMTMzOiBUaGUgZXhwcmVzc2lvbiBiZWluZyBhc3NpZ25lZCB0byBgUy5w YXRoTmFtZScgbXVzdCBiZSBjb25zdGFudAorKy8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVp bmcgYXNzaWduZWQgdG8gYFMucGF0aE5hbWUnIG11c3QgYmUgYSBjb25zdGFudCBvciBkZWZhdWx0 IHZhbHVlCisgLy8gTGluZTogMTIKKyAvLyBDb21waWxlciBvcHRpb25zOiAtdW5zYWZlCisgCitk aWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMzMtNS5jcyBiL21jcy9lcnJvcnMvY3MwMTMzLTUu Y3MKK2luZGV4IGE0OWYyNjVjNjkwLi4zMmU2YmZkZjQxNiAxMDA2NDQKKy0tLSBhL21jcy9lcnJv cnMvY3MwMTMzLTUuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MwMTMzLTUuY3MKK0BAIC0xLDQgKzEs NCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYGInIG11 c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6IFRoZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVk IHRvIGBiJyBtdXN0IGJlIGEgY29uc3RhbnQgb3IgZGVmYXVsdCB2YWx1ZQorIC8vIExpbmU6IDgK KyAKKyBjbGFzcyBYCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMzMtNi5jcyBiL21jcy9l cnJvcnMvY3MwMTMzLTYuY3MKK2luZGV4IGE1MjMxNjljZGJkLi4yODQ0OGRkNmRlOCAxMDA2NDQK Ky0tLSBhL21jcy9lcnJvcnMvY3MwMTMzLTYuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MwMTMzLTYu Y3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNz aWduZWQgdG8gYG8nIG11c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6IFRoZSBleHByZXNzaW9u IGJlaW5nIGFzc2lnbmVkIHRvIGBvJyBtdXN0IGJlIGEgY29uc3RhbnQgb3IgZGVmYXVsdCB2YWx1 ZQorIC8vIExpbmU6IDgKKyAKKyBjbGFzcyBYCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAx MzMtNy5jcyBiL21jcy9lcnJvcnMvY3MwMTMzLTcuY3MKK2luZGV4IDEwZDgyZDlmZTVlLi4wMjRi YzE0ODIyOSAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MwMTMzLTcuY3MKKysrKyBiL21jcy9l cnJvcnMvY3MwMTMzLTcuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJl c3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYG8nIG11c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6 IFRoZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGBvJyBtdXN0IGJlIGEgY29uc3RhbnQg b3IgZGVmYXVsdCB2YWx1ZQorIC8vIExpbmU6IDgKKyAKKyBjbGFzcyBYCitkaWZmIC0tZ2l0IGEv bWNzL2Vycm9ycy9jczAxMzMuY3MgYi9tY3MvZXJyb3JzL2NzMDEzMy5jcworaW5kZXggMDk0MTk0 ZGVhYmIuLmYwZGRhOWVlM2NiIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9jczAxMzMuY3MKKysr KyBiL21jcy9lcnJvcnMvY3MwMTMzLmNzCitAQCAtMSw1ICsxLDYgQEAKKy0vLyBDUzAxMzM6IFRo ZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGB4JyBtdXN0IGJlIGNvbnN0YW50CistLy8g TGluZTogNgorKy8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYHgn IG11c3QgYmUgYSBjb25zdGFudCBvciBkZWZhdWx0IHZhbHVlCisrLy8gTGluZTogNworKworIGNs YXNzIFggeworIAlYIChpbnQgYXJnKQorIAl7CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAz MDYtNC5jcyBiL21jcy9lcnJvcnMvY3MwMzA2LTQuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwMDAwMC4uNDY1MzUxMmU1NWIKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9l cnJvcnMvY3MwMzA2LTQuY3MKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBDUzAzMDY6IFRoZSB0eXBl IGBTJyBtYXkgbm90IGJlIHVzZWQgYXMgYSB0eXBlIGFyZ3VtZW50CisrLy8gTGluZTogMTMKKysv LyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrcHVibGljIHJlZiBz dHJ1Y3QgUworK3sKKyt9CisrCisrY2xhc3MgVGVzdDxUPgorK3sKKysJcHVibGljIHN0YXRpYyB2 b2lkIEZvbyAoKQorKwl7CisrCQlUZXN0PFM+IGxvY2FsOworKwl9CisrfQorXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczA2MTEtMy5jcyBiL21j cy9lcnJvcnMvY3MwNjExLTMuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwMC4uNmVkYTc3M2RkMjQKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwNjEx LTMuY3MKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBDUzA2MTE6IEFycmF5IGVsZW1lbnRzIGNhbm5v dCBiZSBvZiB0eXBlIGBTJworKy8vIExpbmU6IDEzCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxh bmd2ZXJzaW9uOmxhdGVzdAorKworK3B1YmxpYyByZWYgc3RydWN0IFMKKyt7CisrfQorKworK2Ns YXNzIFRlc3QKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCXZhciB4 ID0gbmV3IFNbMF07CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYg LS1naXQgYS9tY3MvZXJyb3JzL2NzMDgxNS05LmNzIGIvbWNzL2Vycm9ycy9jczA4MTUtOS5jcwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mNTQ3MDMzNDliZQorLS0t IC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczA4MTUtOS5jcworQEAgLTAsMCArMSwxMSBA QAorKy8vIENTMDgxNTogQW4gaW1wbGljaXRseSB0eXBlZCBsb2NhbCB2YXJpYWJsZSBkZWNsYXJh dGlvbiBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgd2l0aCBgZGVmYXVsdCcKKysvLyBMaW5lOiA5Cisr Ly8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK3N0YXRpYyBjbGFz cyBYCisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQl2YXIgeCA9IGRl ZmF1bHQ7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQg YS9tY3MvZXJyb3JzL2NzMTUwMi0xMS5jcyBiL21jcy9lcnJvcnMvY3MxNTAyLTExLmNzCitkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDgyZGNiM2EyYzE3Li4wMDAwMDAwMDAwMAorLS0t IGEvbWNzL2Vycm9ycy9jczE1MDItMTEuY3MKKysrKyAvZGV2L251bGwKK0BAIC0xLDExICswLDAg QEAKKy0vLyBDUzE1MDI6IFRoZSBiZXN0IG92ZXJsb2FkZWQgbWV0aG9kIG1hdGNoIGZvciBgc3Ry aW5nLlN0cmluZyhjaGFyKiknIGhhcyBzb21lIGludmFsaWQgYXJndW1lbnRzCistLy8gTGluZTog OAorLQorLWNsYXNzIEMKKy17CistCXN0YXRpYyBzdHJpbmcgUHJvcCB7CistCQlnZXQgeworLQkJ CXJldHVybiBuZXcgc3RyaW5nICgicyIpOworLQkJfQorLSAgICB9CistfQorZGlmZiAtLWdpdCBh L21jcy9lcnJvcnMvY3MxNTk5LTIuY3MgYi9tY3MvZXJyb3JzL2NzMTU5OS0yLmNzCitpbmRleCA5 NDFmZjZiYjBkNi4uMjhhYTA1YjJlZDMgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTU5OS0y LmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTU5OS0yLmNzCitAQCAtMSw0ICsxLDQgQEAKKy0vLyBD UzE1OTk6IE1ldGhvZCBvciBkZWxlZ2F0ZSBjYW5ub3QgcmV0dXJuIHR5cGUgYFN5c3RlbS5BcmdJ dGVyYXRvcicKKysvLyBDUzE1OTk6IFRoZSByZXR1cm4gdHlwZSBvZiBgU3lzdGVtLkFyZ0l0ZXJh dG9yJyBpcyBub3QgYWxsb3dlZAorIC8vIExpbmU6IDgKKyAKKyB1c2luZyBTeXN0ZW07CitkaWZm IC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE1OTktMy5jcyBiL21jcy9lcnJvcnMvY3MxNTk5LTMuY3MK K2luZGV4IGU0ODY5ZGNhZjcwLi45ZDM3ODA5OWQ4MiAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMv Y3MxNTk5LTMuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MxNTk5LTMuY3MKK0BAIC0xLDQgKzEsNCBA QAorLS8vIENTMTU5OTogTWV0aG9kIG9yIGRlbGVnYXRlIGNhbm5vdCByZXR1cm4gdHlwZSBgU3lz dGVtLkFyZ0l0ZXJhdG9yJworKy8vIENTMTU5OTogVGhlIHJldHVybiB0eXBlIG9mIGBTeXN0ZW0u QXJnSXRlcmF0b3InIGlzIG5vdCBhbGxvd2VkCisgLy8gTGluZTogOAorIAorIHVzaW5nIFN5c3Rl bTsKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTU5OS00LmNzIGIvbWNzL2Vycm9ycy9jczE1 OTktNC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4zNThlZWU1 OWExMworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE1OTktNC5jcworQEAgLTAs MCArMSwxMiBAQAorKy8vIENTMTU5OTogVGhlIHJldHVybiB0eXBlIG9mIGBTeXN0ZW0uVHlwZWRS ZWZlcmVuY2UnIGlzIG5vdCBhbGxvd2VkCisrLy8gTGluZTogOAorKworK3VzaW5nIFN5c3RlbTsK KysKKytwdWJsaWMgY2xhc3MgUHJvZ3JhbQorK3sKKysgICAgcHVibGljIHN0YXRpYyBUeXBlZFJl ZmVyZW5jZSBvcGVyYXRvciArIChpbnQgYSwgUHJvZ3JhbSBiKQorKyAgICB7CisrICAgIAl0aHJv dyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24gKCk7CisrICAgIH0KKyt9CitcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTU5OS5jcyBiL21jcy9l cnJvcnMvY3MxNTk5LmNzCitpbmRleCA1Y2VmMzJkN2Y5Ny4uODcxZDlmYjNlN2EgMTAwNjQ0Cist LS0gYS9tY3MvZXJyb3JzL2NzMTU5OS5jcworKysrIGIvbWNzL2Vycm9ycy9jczE1OTkuY3MKK0BA IC0xLDQgKzEsNCBAQAorLS8vIENTMTU5OTogTWV0aG9kIG9yIGRlbGVnYXRlIGNhbm5vdCByZXR1 cm4gdHlwZSBgU3lzdGVtLlR5cGVkUmVmZXJlbmNlJworKy8vIENTMTU5OTogVGhlIHJldHVybiB0 eXBlIG9mIGBTeXN0ZW0uVHlwZWRSZWZlcmVuY2UnIGlzIG5vdCBhbGxvd2VkCisgLy8gTGluZTog OAorIAorIHVzaW5nIFN5c3RlbTsKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTY0NC01Ny5j cyBiL21jcy9lcnJvcnMvY3MxNjQ0LTU3LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMDAuLjdlZTk4MzczMDgwCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3Jz L2NzMTY0NC01Ny5jcworQEAgLTAsMCArMSw3IEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGByZWYg c3RydWN0cycgY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBpdCBpcyBub3QgcGFydCBvZiB0aGUgQyMg Ny4wIGxhbmd1YWdlIHNwZWNpZmljYXRpb24KKysvLyBMaW5lOiA1CisrLy8gQ29tcGlsZXIgb3B0 aW9uczogLWxhbmd2ZXJzaW9uOjcKKysKKytyZWYgc3RydWN0IFMKKyt7CisrfQorXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE2NDQtNTguY3Mg Yi9tY3MvZXJyb3JzL2NzMTY0NC01OC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAwMDAwLi5lOTk0Y2YzMzhiZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9j czE2NDQtNTguY3MKK0BAIC0wLDAgKzEsOCBAQAorKy8vIENTMTY0NDogRmVhdHVyZSBgZGVmYXVs dCBsaXRlcmFsJyBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBD IyA3LjAgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbgorKy8vIExpbmU6IDcKKysvLyBDb21waWxlciBv cHRpb25zOiAtbGFuZ3ZlcnNpb246NworKworK2NsYXNzIFgKKyt7CisrCWludCBpID0gZGVmYXVs dDsKKyt9CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE2NDQtNTkuY3MgYi9tY3MvZXJyb3Jz L2NzMTY0NC01OS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4y ZjhhZWQ2Yjk1OAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE2NDQtNTkuY3MK K0BAIC0wLDAgKzEsMTMgQEAKKysvLyBDUzE2NDQ6IEZlYXR1cmUgYHJlYWRvbmx5IHJlZmVyZW5j ZXMnIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgbm90IHBhcnQgb2YgdGhlIEMjIDcuMCBs YW5ndWFnZSBzcGVjaWZpY2F0aW9uCisrLy8gTGluZTogOQorKy8vIENvbXBpbGVyIG9wdGlvbnM6 IC1sYW5ndmVyc2lvbjo3CisrCisrY2xhc3MgWAorK3sKKysJaW50IGk7CisrCisrCXJlZiByZWFk b25seSBpbnQgVGVzdCAoKQorKwl7CisrCQlyZXR1cm4gcmVmIGk7CisrCX0KKyt9CitkaWZmIC0t Z2l0IGEvbWNzL2Vycm9ycy9jczE2NDQtNjAuY3MgYi9tY3MvZXJyb3JzL2NzMTY0NC02MC5jcwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jYTk1NDdiYzU2MQorLS0t IC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE2NDQtNjAuY3MKK0BAIC0wLDAgKzEsMTEg QEAKKysvLyBDUzE2NDQ6IEZlYXR1cmUgYGRpc2NhcmRzJyBjYW5ub3QgYmUgdXNlZCBiZWNhdXNl IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA2LjAgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbgorKy8v IExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246NgorKworK2NsYXNz IFgKKyt7CisrCWludCBUZXN0ICgpCisrCXsKKysJCV8gPSAyOworKwl9CisrfQorZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3MxNzM4LTIuY3MgYi9tY3MvZXJyb3JzL2NzMTczOC0yLmNzCitpbmRl eCBmNTkyMjFmNGM3YS4uNDRiM2Y2ZDFiMTQgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTcz OC0yLmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTczOC0yLmNzCitAQCAtMSw0ICsxLDQgQEAKKy0v LyBDUzE3Mzg6IE5hbWVkIGFyZ3VtZW50cyBtdXN0IGFwcGVhciBhZnRlciB0aGUgcG9zaXRpb25h bCBhcmd1bWVudHMKKysvLyBDUzE3Mzg6IE5hbWVkIGFyZ3VtZW50cyBtdXN0IGFwcGVhciBhZnRl ciB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgd2hlbiB1c2luZyBsYW5ndWFnZSB2ZXJzaW9uIG9s ZGVyIHRoYW4gNy4yCisgLy8gTGluZTogMTMKKyAKKyB1c2luZyBTeXN0ZW07CitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczE3MzgtMy5jcyBiL21jcy9lcnJvcnMvY3MxNzM4LTMuY3MKK2luZGV4 IDUzYzRlZmMzNTUzLi45MDFhYzBlNWQ1OSAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNzM4 LTMuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MxNzM4LTMuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8v IENTMTczODogTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVyIHRoZSBwb3NpdGlvbmFs IGFyZ3VtZW50cworKy8vIENTMTczODogTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVy IHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3aGVuIHVzaW5nIGxhbmd1YWdlIHZlcnNpb24gb2xk ZXIgdGhhbiA3LjIKKyAvLyBMaW5lOiAxNAorIAorIGNsYXNzIEMKK2RpZmYgLS1naXQgYS9tY3Mv ZXJyb3JzL2NzMTczOC5jcyBiL21jcy9lcnJvcnMvY3MxNzM4LmNzCitpbmRleCBkYWI5YTYxMTYw Yi4uNTM3YmMxN2I5MTcgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTczOC5jcworKysrIGIv bWNzL2Vycm9ycy9jczE3MzguY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMTczODogTmFtZWQg YXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cworKy8v IENTMTczODogTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVyIHRoZSBwb3NpdGlvbmFs IGFyZ3VtZW50cyB3aGVuIHVzaW5nIGxhbmd1YWdlIHZlcnNpb24gb2xkZXIgdGhhbiA3LjIKKyAv LyBMaW5lOiAxMgorIAorIGNsYXNzIEMKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTk4My5j cyBiL21jcy9lcnJvcnMvY3MxOTgzLmNzCitpbmRleCBhMmVmNmMxNTBkNi4uNzZkMmRiNGU2Nzcg MTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTk4My5jcworKysrIGIvbWNzL2Vycm9ycy9jczE5 ODMuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMTk4MzogVGhlIHJldHVybiB0eXBlIG9mIGFu IGFzeW5jIG1ldGhvZCBtdXN0IGJlIHZvaWQsIFRhc2ssIG9yIFRhc2s8VD4KKysvLyBDUzE5ODM6 IFRoZSByZXR1cm4gdHlwZSBvZiBhbiBhc3luYyBtZXRob2QgbXVzdCBiZSB2b2lkIG9yIHRhc2sg dHlwZQorIC8vIExpbmU6IDYKKyAKKyBjbGFzcyBDCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9j czQwMTItMy5jcyBiL21jcy9lcnJvcnMvY3M0MDEyLTMuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwMC4uZmIzZDFkYzI3NmYKKy0tLSAvZGV2L251bGwKKysrKyBiL21j cy9lcnJvcnMvY3M0MDEyLTMuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKysvLyBDUzQwMTI6IFBhcmFt ZXRlcnMgb3IgbG9jYWwgdmFyaWFibGVzIG9mIHR5cGUgYFMnIGNhbm5vdCBiZSBkZWNsYXJlZCBp biBhc3luYyBtZXRob2RzIG9yIGl0ZXJhdG9ycworKy8vIExpbmU6IDE2CisrLy8gQ29tcGlsZXIg b3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK3VzaW5nIFN5c3RlbTsKKyt1c2luZyBT eXN0ZW0uVGhyZWFkaW5nLlRhc2tzOworKworK3B1YmxpYyByZWYgc3RydWN0IFMKKyt7CisrfQor KworK2NsYXNzIEMKKyt7CisrCXB1YmxpYyBhc3luYyB2b2lkIFRlc3QgKCkKKysJeworKwkJdmFy IHRyID0gbmV3IFMgKCk7CisrCQlhd2FpdCBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKCgpID0+IDYp OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNz L2Vycm9ycy9jczgxNzUtMi5jcyBiL21jcy9lcnJvcnMvY3M4MTc1LTIuY3MKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMjdjNGJhYmY4YmYKKy0tLSAvZGV2L251bGwK KysrKyBiL21jcy9lcnJvcnMvY3M4MTc1LTIuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKysvLyBDUzgx NzU6IENhbm5vdCB1c2UgYnktcmVmZXJlbmNlIHZhcmlhYmxlIGBzJyBpbnNpZGUgYW4gYW5vbnlt b3VzIG1ldGhvZCwgbGFtYmRhIGV4cHJlc3Npb24sIG9yIHF1ZXJ5IGV4cHJlc3Npb24KKysvLyBM aW5lOiAxNworKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysKKyt1 c2luZyBTeXN0ZW07CisrCisrcHVibGljIHJlZiBzdHJ1Y3QgUworK3sKKyt9CisrCisrY2xhc3Mg VGVzdAorK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJdmFyIHMgPSBu ZXcgUyAoKTsKKysKKysJCUFjdGlvbiBhID0gKCkgPT4gQ29uc29sZS5Xcml0ZUxpbmUgKHMpOwor Kwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vy cm9ycy9jczgxODMuY3MgYi9tY3MvZXJyb3JzL2NzODE4My5jcworbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mOWU5MDA0YjczNworLS0tIC9kZXYvbnVsbAorKysrIGIv bWNzL2Vycm9ycy9jczgxODMuY3MKK0BAIC0wLDAgKzEsMTEgQEAKKysvLyBDUzgxODM6IENhbm5v dCBpbmZlciB0aGUgdHlwZSBvZiBpbXBsaWNpdGx5LXR5cGVkIGRpc2NhcmQKKysvLyBMaW5lOiA5 CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworK2NsYXNzIFgKKyt7 CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCV8gPSBkZWZhdWx0OworKwl9 CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9y cy9jczgxODQuY3MgYi9tY3MvZXJyb3JzL2NzODE4NC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAwLi4xOWE0Njg1ZDdiZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNz L2Vycm9ycy9jczgxODQuY3MKK0BAIC0wLDAgKzEsMTAgQEAKKysvLyBDUzgxODQ6IEEgZGVjb25z dHJ1Y3Rpb24gY2Fubm90IG1peCBkZWNsYXJhdGlvbnMgYW5kIGV4cHJlc3Npb25zIG9uIHRoZSBs ZWZ0LWhhbmQtc2lkZQorKy8vIExpbmU6IDgKKysKKytjbGFzcyBYCisreworKwlwdWJsaWMgc3Rh dGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQkoaW50IGEsIGIpID0gKDEsIDIpOworKwl9CisrfQor XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgy MDcuY3MgYi9tY3MvZXJyb3JzL2NzODIwNy5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAwLi4zMTA5MDk0OGI0NQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9y cy9jczgyMDcuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKysvLyBDUzgyMDc6IEFuIGV4cHJlc3Npb24g dHJlZSBjYW5ub3QgY29udGFpbiBhIGRpc2NhcmQKKysvLyBMaW5lOiAxMQorKworK3VzaW5nIFN5 c3RlbTsKKyt1c2luZyBTeXN0ZW0uTGlucS5FeHByZXNzaW9uczsKKysKKytjbGFzcyBYCisrewor Kwl2b2lkIFRlc3QgKCkKKysJeworKwkJRXhwcmVzc2lvbjxGdW5jPGJvb2w+PiBlID0gKCkgPT4g VHJ5R2V0VmFsdWUgKG91dCBfKTsKKysJfQorKworKwlib29sIFRyeUdldFZhbHVlIChvdXQgaW50 IGFyZykKKysJeworKwkJYXJnID0gMzsKKysJCXJldHVybiB0cnVlOworKwl9CisrfQorZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3M4MjA5LmNzIGIvbWNzL2Vycm9ycy9jczgyMDkuY3MKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uM2E0NmEyMDZjOGUKKy0tLSAvZGV2 L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MjA5LmNzCitAQCAtMCwwICsxLDEwIEBACisrLy8g Q1M4MjA5OiBDYW5ub3QgYXNzaWduIHZvaWQgdG8gYSBkaXNjYXJkCisrLy8gTGluZTogOAorKwor K2NsYXNzIEMKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCV8gPSBN YWluICgpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczgzMTAuY3MgYi9tY3MvZXJyb3JzL2NzODMxMC5jcworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4xMzQ2MjRjMDNiNworLS0tIC9kZXYvbnVs bAorKysrIGIvbWNzL2Vycm9ycy9jczgzMTAuY3MKK0BAIC0wLDAgKzEsMTEgQEAKKysvLyBDUzgz MTA6IE9wZXJhdG9yIGArJyBjYW5ub3QgYmUgYXBwbGllZCB0byBvcGVyYW5kIGBkZWZhdWx0Jwor Ky8vIExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0Cisr CisrY2xhc3MgQworK3sKKysJc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlpbnQgaCA9IDEg KyBkZWZhdWx0OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0t Z2l0IGEvbWNzL2Vycm9ycy9jczgzMTEuY3MgYi9tY3MvZXJyb3JzL2NzODMxMS5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi41YjM1MjI5NDQyZAorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMTEuY3MKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBD UzgzMTE6IENhbm5vdCB1c2UgYSBkZWZhdWx0IGxpdGVyYWwgYXMgYW4gYXJndW1lbnQgdG8gYSBk eW5hbWljYWxseSBkaXNwYXRjaGVkIG9wZXJhdGlvbgorKy8vIExpbmU6IDEwCisrLy8gQ29tcGls ZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK2NsYXNzIEMKKyt7CisrICAgIHN0 YXRpYyB2b2lkIE1haW4gKCkKKysgICAgeworKyAgICAgICAgZHluYW1pYyBkID0gbnVsbDsKKysg ICAgICAgIGQuTTIgKGRlZmF1bHQpOworKyAgICB9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMTIuY3MgYi9tY3MvZXJyb3JzL2Nz ODMxMi5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5kMmFkM2Y1 MmYwMgorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMTIuY3MKK0BAIC0wLDAg KzEsMTIgQEAKKysvLyBDUzgzMTI6IFVzZSBvZiBkZWZhdWx0IGxpdGVyYWwgaXMgbm90IHZhbGlk IGluIHRoaXMgY29udGV4dAorKy8vIExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFu Z3ZlcnNpb246bGF0ZXN0CisrCisrY2xhc3MgQworK3sKKysJc3RhdGljIHZvaWQgTWFpbiAoKQor Kwl7CisrCQlmb3JlYWNoICh2YXIgeCBpbiBkZWZhdWx0KSB7CisrCQl9CisrCX0KKyt9CitcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzODMxNS5j cyBiL21jcy9lcnJvcnMvY3M4MzE1LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMDAwMDAuLmM0MGJmODYxM2I0CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2Nz ODMxNS5jcworQEAgLTAsMCArMSwxMSBAQAorKy8vIENTODMxNTogT3BlcmF0b3IgYD09JyBpcyBh bWJpZ3VvdXMgb24gb3BlcmFuZHMgYGRlZmF1bHQnIGFuZCBgZGVmYXVsdCcKKysvLyBMaW5lOiA5 CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK2NsYXNzIEMK Kyt7CisrCXN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJYm9vbCBkID0gZGVmYXVsdCA9PSBk ZWZhdWx0OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczgzMjMuY3MgYi9tY3MvZXJyb3JzL2NzODMyMy5jcworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jNmM5MzA5ZWMwZAorLS0tIC9kZXYvbnVs bAorKysrIGIvbWNzL2Vycm9ycy9jczgzMjMuY3MKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBDUzgz MjM6IE5hbWVkIGFyZ3VtZW50IGBzdHInIGlzIHVzZWQgb3V0IG9mIHBvc2l0aW9uIGJ1dCBpcyBm b2xsb3dlZCBieSBwb3NpdGlvbmFsIGFyZ3VtZW50CisrLy8gTGluZTogOQorKy8vIENvbXBpbGVy IG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIKKysKKytjbGFzcyBYCisreworKwlwdWJsaWMgc3Rh dGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlUZXN0IChzdHI6ICIiLCAiIik7CisrCX0KKysKKysJ c3RhdGljIHZvaWQgVGVzdCAoaW50IGFyZywgc3RyaW5nIHN0cikKKysJeworKwl9CisrfQorXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMjQu Y3MgYi9tY3MvZXJyb3JzL2NzODMyNC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAwMDAwLi44YTBiZTFhZWZiOQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9j czgzMjQuY3MKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDUzgzMjQ6IE5hbWVkIGFyZ3VtZW50IHNw ZWNpZmljYXRpb25zIG11c3QgYXBwZWFyIGFmdGVyIGFsbCBmaXhlZCBhcmd1bWVudHMgaGF2ZSBi ZWVuIHNwZWNpZmllZCBpbiBhIGR5bmFtaWMgaW52b2NhdGlvbgorKy8vIExpbmU6IDEwCisrLy8g Q29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworK2NsYXNzIEMKKyt7CisrCXZv aWQgTSAoKQorKwl7CisrCQlkeW5hbWljIGQgPSBuZXcgb2JqZWN0ICgpOworKwkJZC5NIChhcmc6 IDEsICIiKTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3M4MzQzLmNzIGIvbWNzL2Vycm9ycy9jczgzNDMuY3MKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uYjZhYThlODNhMDkKKy0tLSAvZGV2L251 bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MzQzLmNzCitAQCAtMCwwICsxLDEyIEBACisrLy8gQ1M4 MzQzOiBgUyc6IHJlZiBzdHJ1Y3RzIGNhbm5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlcworKy8vIExp bmU6IDcKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrdXNp bmcgU3lzdGVtOworKworK3B1YmxpYyByZWYgc3RydWN0IFMgOiBJRGlzcG9zYWJsZQorK3sKKysJ cHVibGljIHZvaWQgRGlzcG9zZSAoKQorKwl7CQkJCisrCX0KKyt9CitkaWZmIC0tZ2l0IGEvbWNz L2Vycm9ycy9jczgzNDUtMi5jcyBiL21jcy9lcnJvcnMvY3M4MzQ1LTIuY3MKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uM2Y2MTM3YjFiNTYKKy0tLSAvZGV2L251bGwK KysrKyBiL21jcy9lcnJvcnMvY3M4MzQ1LTIuY3MKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDUzgz NDU6IEZpZWxkIG9yIGF1dG8taW1wbGVtZW50ZWQgcHJvcGVydHkgY2Fubm90IGJlIG9mIHR5cGUg YFMnIHVubGVzcyBpdCBpcyBhbiBpbnN0YW5jZSBtZW1iZXIgb2YgYSByZWYgc3RydWN0CisrLy8g TGluZTogMTEKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisr cHVibGljIHJlZiBzdHJ1Y3QgUworK3sKKyt9CisrCisrcmVmIHN0cnVjdCBUZXN0CisreworKwlz dGF0aWMgUyBmaWVsZDsKKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1n aXQgYS9tY3MvZXJyb3JzL2NzODM0NS5jcyBiL21jcy9lcnJvcnMvY3M4MzQ1LmNzCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjBiNWJkMDU1MThmCistLS0gL2Rldi9u dWxsCisrKysgYi9tY3MvZXJyb3JzL2NzODM0NS5jcworQEAgLTAsMCArMSwxMiBAQAorKy8vIENT ODM0NTogRmllbGQgb3IgYXV0by1pbXBsZW1lbnRlZCBwcm9wZXJ0eSBjYW5ub3QgYmUgb2YgdHlw ZSBgUycgdW5sZXNzIGl0IGlzIGFuIGluc3RhbmNlIG1lbWJlciBvZiBhIHJlZiBzdHJ1Y3QKKysv LyBMaW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysK KytwdWJsaWMgcmVmIHN0cnVjdCBTCisreworK30KKysKKytzdHJ1Y3QgVGVzdAorK3sKKysJUyBm aWVsZDsKKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3Mv ZXJyb3JzL2NzODM0Ni5jcyBiL21jcy9lcnJvcnMvY3M4MzQ2LmNzCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjU4ZTIyYTJhZTdmCistLS0gL2Rldi9udWxsCisrKysg Yi9tY3MvZXJyb3JzL2NzODM0Ni5jcworQEAgLTAsMCArMSwxMyBAQAorKy8vIENTODM0NjogQ2Fu bm90IGNvbnZlcnQgYSBzdGFja2FsbG9jIGV4cHJlc3Npb24gb2YgdHlwZSBgYnl0ZScgdG8gdHlw ZSBgU3lzdGVtLlNwYW48aW50PicKKysvLyBMaW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6 IC1sYW5ndmVyc2lvbjo3LjIKKysKKyt1c2luZyBTeXN0ZW07CisrCisrY2xhc3MgWAorK3sKKysJ cHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJU3BhbjxpbnQ+IHN0YWNrU3BhbiA9 IHN0YWNrYWxsb2MgYnl0ZVsxXTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorZGlmZiAtLWdpdCBhL21jcy9tY3MvYXJndW1lbnQuY3MgYi9tY3MvbWNzL2FyZ3VtZW50LmNz CitpbmRleCA4NDIxYjRkZmJmYy4uNWIxMDAzZGJhZGYgMTAwNjQ0CistLS0gYS9tY3MvbWNzL2Fy Z3VtZW50LmNzCisrKysgYi9tY3MvbWNzL2FyZ3VtZW50LmNzCitAQCAtMTA2LDExICsxMDYsNiBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJCXB1YmxpYyB2aXJ0dWFsIEV4cHJlc3Npb24g Q3JlYXRlRXhwcmVzc2lvblRyZWUgKFJlc29sdmVDb250ZXh0IHJjKQorIAkJeworLQkJCWlmIChU eXBlLktpbmQgPT0gTWVtYmVyS2luZC5CeVJlZikgeworLQkJCQlyYy5SZXBvcnQuRXJyb3IgKDgx NTMsIEV4cHIuTG9jYXRpb24sICJBbiBleHByZXNzaW9uIHRyZWUgbGFtYmRhIGNhbm5vdCBjb250 YWluIGEgY2FsbCB0byBhIG1ldGhvZCwgcHJvcGVydHksIG9yIGluZGV4ZXIgdGhhdCByZXR1cm5z IGJ5IHJlZmVyZW5jZSIpOworLQkJCQlyZXR1cm4gbnVsbDsKKy0JCQl9CistCisgCQkJaWYgKEFy Z1R5cGUgPT0gQVR5cGUuRGVmYXVsdCkKKyAJCQkJcmMuUmVwb3J0LkVycm9yICg4NTQsIEV4cHIu TG9jYXRpb24sICJBbiBleHByZXNzaW9uIHRyZWUgY2Fubm90IGNvbnRhaW4gYW4gaW52b2NhdGlv biB3aGljaCB1c2VzIG9wdGlvbmFsIHBhcmFtZXRlciIpOworIAorZGlmZiAtLWdpdCBhL21jcy9t Y3MvYXNzaWduLmNzIGIvbWNzL21jcy9hc3NpZ24uY3MKK2luZGV4IGEwN2M4YzBlZjM5Li41OTY2 MjNmZWFlNCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXNzaWduLmNzCisrKysgYi9tY3MvbWNzL2Fz c2lnbi5jcworQEAgLTM5MSw5ICszOTEsMjEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJ CQlyZXR1cm4gU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMuRXhwcmVzc2lvbi5Bc3NpZ24gKHRhcmdl dF9vYmplY3QsIHNvdXJjZV9vYmplY3QpOworIAkJfQorIAorLQkJcHJvdGVjdGVkIHZpcnR1YWwg RXhwcmVzc2lvbiBSZXNvbHZlQ29udmVyc2lvbnMgKFJlc29sdmVDb250ZXh0IGVjKQorKwkJcHJv dGVjdGVkIHZpcnR1YWwgRXhwcmVzc2lvbiBSZXNvbHZlQ29udmVyc2lvbnMgKFJlc29sdmVDb250 ZXh0IHJjKQorIAkJeworLQkJCXNvdXJjZSA9IENvbnZlcnQuSW1wbGljaXRDb252ZXJzaW9uUmVx dWlyZWQgKGVjLCBzb3VyY2UsIHRhcmdldC5UeXBlLCBzb3VyY2UuTG9jYXRpb24pOworKwkJCXZh ciB0dHlwZSA9IHRhcmdldC5UeXBlOworKwkJCXZhciBzdGFja0FsbG9jID0gc291cmNlIGFzIFN0 YWNrQWxsb2M7CisrCQkJaWYgKHN0YWNrQWxsb2MgIT0gbnVsbCAmJiB0dHlwZS5Bcml0eSA9PSAx ICYmIHR0eXBlLkdldERlZmluaXRpb24gKCkgPT0gcmMuTW9kdWxlLlByZWRlZmluZWRUeXBlcy5T cGFuR2VuZXJpYy5UeXBlU3BlYyAmJgorKwkJCSAgICByYy5Nb2R1bGUuQ29tcGlsZXIuU2V0dGlu Z3MuVmVyc2lvbiA+PSBMYW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKysKKysJCQkJdmFyIGV0eXBl ID0gdHR5cGUuVHlwZUFyZ3VtZW50cyBbMF07CisrCQkJCXZhciBzdHlwZSA9ICgoUG9pbnRlckNv bnRhaW5lcilzb3VyY2UuVHlwZSkuRWxlbWVudDsKKysJCQkJaWYgKGV0eXBlID09IHN0eXBlICYm IHN0YWNrQWxsb2MuUmVzb2x2ZVNwYW5Db252ZXJzaW9uIChyYywgdHR5cGUpKSB7CisrCQkJCQly ZXR1cm4gdGhpczsKKysJCQkJfQorKwkJCX0KKysKKysJCQlzb3VyY2UgPSBDb252ZXJ0LkltcGxp Y2l0Q29udmVyc2lvblJlcXVpcmVkIChyYywgc291cmNlLCB0dHlwZSwgc291cmNlLkxvY2F0aW9u KTsKKyAJCQlpZiAoc291cmNlID09IG51bGwpCisgCQkJCXJldHVybiBudWxsOworIAorZGlmZiAt LWdpdCBhL21jcy9tY3MvYXN5bmMuY3MgYi9tY3MvbWNzL2FzeW5jLmNzCitpbmRleCBmZDY0OTkz NDZlOC4uNjQzYWVkNWU1NjggMTAwNjQ0CistLS0gYS9tY3MvbWNzL2FzeW5jLmNzCisrKysgYi9t Y3MvbWNzL2FzeW5jLmNzCitAQCAtNjI4LDU4ICs2MjgsMTEyIEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAorIAkJcHJvdGVjdGVkIG92ZXJyaWRlIGJvb2wgRG9EZWZpbmVNZW1iZXJzICgpCisg CQl7CistCQkJUHJlZGVmaW5lZFR5cGUgYnVpbGRlcl90eXBlOworLQkJCVByZWRlZmluZWRNZW1i ZXI8TWV0aG9kU3BlYz4gYmY7CistCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBiczsK Ky0JCQlQcmVkZWZpbmVkTWVtYmVyPE1ldGhvZFNwZWM+IHNyOworLQkJCVByZWRlZmluZWRNZW1i ZXI8TWV0aG9kU3BlYz4gc2U7CistCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBzbTsK KysJCQlUeXBlU3BlYyBidDsKKyAJCQlib29sIGhhc190YXNrX3JldHVybl90eXBlID0gZmFsc2U7 CistCQkJdmFyIHByZWRfbWVtYmVycyA9IE1vZHVsZS5QcmVkZWZpbmVkTWVtYmVyczsKKysJCQl2 YXIgaXN0YXRlX21hY2hpbmUgPSBNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLklBc3luY1N0YXRlTWFj aGluZTsKKysJCQlNZXRob2RTcGVjIHNldF9zdGF0ZW1hY2hpbmU7CisgCistCQkJaWYgKHJldHVy bl90eXBlLktpbmQgPT0gTWVtYmVyS2luZC5Wb2lkKSB7CistCQkJCWJ1aWxkZXJfdHlwZSA9IE1v ZHVsZS5QcmVkZWZpbmVkVHlwZXMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlcjsKKy0JCQkJYmYgPSBw cmVkX21lbWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlckNyZWF0ZTsKKy0JCQkJYnMgPSBwcmVk X21lbWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlclN0YXJ0OworLQkJCQlzciA9IHByZWRfbWVt YmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0UmVzdWx0OworLQkJCQlzZSA9IHByZWRfbWVt YmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0RXhjZXB0aW9uOworLQkJCQlzbSA9IHByZWRf bWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0U3RhdGVNYWNoaW5lOworLQkJCX0gZWxz ZSBpZiAocmV0dXJuX3R5cGUgPT0gTW9kdWxlLlByZWRlZmluZWRUeXBlcy5UYXNrLlR5cGVTcGVj KSB7CistCQkJCWJ1aWxkZXJfdHlwZSA9IE1vZHVsZS5QcmVkZWZpbmVkVHlwZXMuQXN5bmNUYXNr TWV0aG9kQnVpbGRlcjsKKy0JCQkJYmYgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVp bGRlckNyZWF0ZTsKKy0JCQkJYnMgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVpbGRl clN0YXJ0OworLQkJCQlzciA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyU2V0 UmVzdWx0OworLQkJCQlzZSA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyU2V0 RXhjZXB0aW9uOworLQkJCQlzbSA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVy U2V0U3RhdGVNYWNoaW5lOworLQkJCQl0YXNrID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhv ZEJ1aWxkZXJUYXNrLkdldCAoKTsKKysJCQlpZiAocmV0dXJuX3R5cGUuSXNDdXN0b21UYXNrVHlw ZSAoKSkgeworKwkJCQkvLworKwkJCQkvLyBUT0RPOiBXb3VsZCBiZSBuaWNlIHRvIGNhY2hlIGFs bCB0aGlzIG9uIHBlci10eXBlIGJhc2lzCisrCQkJCS8vCisrCQkJCXZhciBidHlwZXMgPSBDb21w aWxlci5CdWlsdGluVHlwZXM7CisrCQkJCWJ0ID0gcmV0dXJuX3R5cGUuTWVtYmVyRGVmaW5pdGlv bi5HZXRBc3luY01ldGhvZEJ1aWxkZXIgKCk7CisrCQkJCVR5cGVTcGVjIGJ0X2luZmxhdGVkOwor KwkJCQlpZiAocmV0dXJuX3R5cGUuSXNHZW5lcmljKSB7CisrCQkJCQlidF9pbmZsYXRlZCA9IGJ0 Lk1ha2VHZW5lcmljVHlwZSAoTW9kdWxlLCBidC5NZW1iZXJEZWZpbml0aW9uLlR5cGVQYXJhbWV0 ZXJzKTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCWJ0X2luZmxhdGVkID0gYnQ7CisrCQkJCX0KKysK KysJCQkJdmFyIHNldF9yZXN1bHRfc2lnbiA9IE1lbWJlckZpbHRlci5NZXRob2QgKCJTZXRSZXN1 bHQiLCAwLCBQYXJhbWV0ZXJzQ29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoYnQuTWVtYmVy RGVmaW5pdGlvbi5UeXBlUGFyYW1ldGVycyksIGJ0eXBlcy5Wb2lkKTsKKysJCQkJc2V0X3Jlc3Vs dCA9IG5ldyBQcmVkZWZpbmVkTWVtYmVyPE1ldGhvZFNwZWM+IChNb2R1bGUsIGJ0LCBzZXRfcmVz dWx0X3NpZ24pLlJlc29sdmUgKExvY2F0aW9uKTsKKysKKysJCQkJdmFyIHNldF9leGNlcHRpb25f c2lnbiA9IE1lbWJlckZpbHRlci5NZXRob2QgKCJTZXRFeGNlcHRpb24iLCAwLCBQYXJhbWV0ZXJz Q29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoYnR5cGVzLkV4Y2VwdGlvbiksIGJ0eXBlcy5W b2lkKTsKKysJCQkJc2V0X2V4Y2VwdGlvbiA9IG5ldyBQcmVkZWZpbmVkTWVtYmVyPE1ldGhvZFNw ZWM+IChNb2R1bGUsIGJ0LCBzZXRfZXhjZXB0aW9uX3NpZ24pLlJlc29sdmUgKExvY2F0aW9uKTsK KysKKysJCQkJdmFyIGJ1aWxkZXJfZmFjdG9yeV9zaWduID0gTWVtYmVyRmlsdGVyLk1ldGhvZCAo IkNyZWF0ZSIsIDAsIFBhcmFtZXRlcnNDb21waWxlZC5FbXB0eVJlYWRPbmx5UGFyYW1ldGVycywg YnRfaW5mbGF0ZWQpOworKwkJCQlidWlsZGVyX2ZhY3RvcnkgPSBuZXcgUHJlZGVmaW5lZE1lbWJl cjxNZXRob2RTcGVjPiAoTW9kdWxlLCBidCwgYnVpbGRlcl9mYWN0b3J5X3NpZ24pLlJlc29sdmUg KExvY2F0aW9uKTsKKysJCQkJaWYgKGJ1aWxkZXJfZmFjdG9yeT8uSXNTdGF0aWMgPT0gZmFsc2Up CisrCQkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCJyZXBvcnQgYmV0dGVy IGVycm9yIG1lc3NhZ2UiKTsKKysKKysJCQkJdmFyIGJ1aWxkZXJfc3RhcnRfc2lnbiA9IE1lbWJl ckZpbHRlci5NZXRob2QgKCJTdGFydCIsIDEsIG5ldyBQYXJhbWV0ZXJzSW1wb3J0ZWQgKAorKwkJ CQkJCW5ldyBbXSB7CisrCQkJCQkJCQluZXcgUGFyYW1ldGVyRGF0YSAobnVsbCwgUGFyYW1ldGVy Lk1vZGlmaWVyLlJFRiksCisrCQkJCQkJCX0sCisrCQkJCQkJbmV3IFtdIHsKKysJCQkJCQkJCW5l dyBUeXBlUGFyYW1ldGVyU3BlYyAoMCwgbnVsbCwgU3BlY2lhbENvbnN0cmFpbnQuTm9uZSwgVmFy aWFuY2UuTm9uZSwgbnVsbCksCisrCQkJCQkJCX0sIGZhbHNlKSwKKysJCQkJCWJ0eXBlcy5Wb2lk KTsKKysJCQkJYnVpbGRlcl9zdGFydCA9IG5ldyBQcmVkZWZpbmVkTWVtYmVyPE1ldGhvZFNwZWM+ IChNb2R1bGUsIGJ0LCBidWlsZGVyX3N0YXJ0X3NpZ24pLlJlc29sdmUgKExvY2F0aW9uKTsKKysK KysJCQkJaWYgKCFpc3RhdGVfbWFjaGluZS5EZWZpbmUgKCkpCisrCQkJCQlyZXR1cm4gZmFsc2U7 CisrCisrCQkJCXZhciBzZXRfc3RhdGVtYWNoaW5lX3NpZ24gPSBNZW1iZXJGaWx0ZXIuTWV0aG9k ICgiU2V0U3RhdGVNYWNoaW5lIiwgMCwgUGFyYW1ldGVyc0NvbXBpbGVkLkNyZWF0ZUZ1bGx5UmVz b2x2ZWQgKGlzdGF0ZV9tYWNoaW5lLlR5cGVTcGVjKSwgYnR5cGVzLlZvaWQpOworKwkJCQlzZXRf c3RhdGVtYWNoaW5lID0gbmV3IFByZWRlZmluZWRNZW1iZXI8TWV0aG9kU3BlYz4gKE1vZHVsZSwg YnQsIHNldF9zdGF0ZW1hY2hpbmVfc2lnbikuUmVzb2x2ZSAoTG9jYXRpb24pOyA7CisrCisrCQkJ CXZhciB0YXNrX3NpZ24gPSBNZW1iZXJGaWx0ZXIuUHJvcGVydHkgKCJUYXNrIiwgcmV0dXJuX3R5 cGUuTWVtYmVyRGVmaW5pdGlvbiBhcyBUeXBlU3BlYyk7CisrCQkJCXRhc2sgPSBuZXcgUHJlZGVm aW5lZE1lbWJlcjxQcm9wZXJ0eVNwZWM+IChNb2R1bGUsIGJ0LCB0YXNrX3NpZ24pLlJlc29sdmUg KExvY2F0aW9uKTsKKysKKysJCQkJaWYgKHNldF9yZXN1bHQgPT0gbnVsbCB8fCBzZXRfZXhjZXB0 aW9uID09IG51bGwgfHwgYnVpbGRlcl9mYWN0b3J5ID09IG51bGwgfHwgYnVpbGRlcl9zdGFydCA9 PSBudWxsIHx8IHNldF9zdGF0ZW1hY2hpbmUgPT0gbnVsbCB8fCB0YXNrID09IG51bGwgfHwKKysJ CQkJCSFNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLklOb3RpZnlDb21wbGV0aW9uLkRlZmluZSAoKSkg eworKwkJCQkJcmV0dXJuIGZhbHNlOworKwkJCQl9CisrCisrCQkJCWhhc190YXNrX3JldHVybl90 eXBlID0gcmV0dXJuX3R5cGUuSXNHZW5lcmljOworIAkJCX0gZWxzZSB7CistCQkJCWJ1aWxkZXJf dHlwZSA9IE1vZHVsZS5QcmVkZWZpbmVkVHlwZXMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVy aWM7CistCQkJCWJmID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmlj Q3JlYXRlOworLQkJCQlicyA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyR2Vu ZXJpY1N0YXJ0OworLQkJCQlzciA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVy R2VuZXJpY1NldFJlc3VsdDsKKy0JCQkJc2UgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9k QnVpbGRlckdlbmVyaWNTZXRFeGNlcHRpb247CistCQkJCXNtID0gcHJlZF9tZW1iZXJzLkFzeW5j VGFza01ldGhvZEJ1aWxkZXJHZW5lcmljU2V0U3RhdGVNYWNoaW5lOworLQkJCQl0YXNrID0gcHJl ZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmljVGFzay5HZXQgKCk7CistCQkJ CWhhc190YXNrX3JldHVybl90eXBlID0gdHJ1ZTsKKy0JCQl9CisrCQkJCVByZWRlZmluZWRUeXBl IGJ1aWxkZXJfdHlwZTsKKysJCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBiZjsKKysJ CQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBiczsKKysJCQkJUHJlZGVmaW5lZE1lbWJl cjxNZXRob2RTcGVjPiBzcjsKKysJCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBzZTsK KysJCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBzbTsKKysJCQkJdmFyIHByZWRfbWVt YmVycyA9IE1vZHVsZS5QcmVkZWZpbmVkTWVtYmVyczsKKysKKysJCQkJaWYgKHJldHVybl90eXBl LktpbmQgPT0gTWVtYmVyS2luZC5Wb2lkKSB7CisrCQkJCQlidWlsZGVyX3R5cGUgPSBNb2R1bGUu UHJlZGVmaW5lZFR5cGVzLkFzeW5jVm9pZE1ldGhvZEJ1aWxkZXI7CisrCQkJCQliZiA9IHByZWRf bWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyQ3JlYXRlOworKwkJCQkJYnMgPSBwcmVkX21l bWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlclN0YXJ0OworKwkJCQkJc3IgPSBwcmVkX21lbWJl cnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlclNldFJlc3VsdDsKKysJCQkJCXNlID0gcHJlZF9tZW1i ZXJzLkFzeW5jVm9pZE1ldGhvZEJ1aWxkZXJTZXRFeGNlcHRpb247CisrCQkJCQlzbSA9IHByZWRf bWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0U3RhdGVNYWNoaW5lOworKwkJCQl9IGVs c2UgaWYgKHJldHVybl90eXBlID09IE1vZHVsZS5QcmVkZWZpbmVkVHlwZXMuVGFzay5UeXBlU3Bl YykgeworKwkJCQkJYnVpbGRlcl90eXBlID0gTW9kdWxlLlByZWRlZmluZWRUeXBlcy5Bc3luY1Rh c2tNZXRob2RCdWlsZGVyOworKwkJCQkJYmYgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9k QnVpbGRlckNyZWF0ZTsKKysJCQkJCWJzID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1 aWxkZXJTdGFydDsKKysJCQkJCXNyID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1aWxk ZXJTZXRSZXN1bHQ7CisrCQkJCQlzZSA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWls ZGVyU2V0RXhjZXB0aW9uOworKwkJCQkJc20gPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9k QnVpbGRlclNldFN0YXRlTWFjaGluZTsKKysJCQkJCXRhc2sgPSBwcmVkX21lbWJlcnMuQXN5bmNU YXNrTWV0aG9kQnVpbGRlclRhc2suR2V0ICgpOworKwkJCQl9IGVsc2UgeworKwkJCQkJYnVpbGRl cl90eXBlID0gTW9kdWxlLlByZWRlZmluZWRUeXBlcy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyR2Vu ZXJpYzsKKysJCQkJCWJmID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1aWxkZXJHZW5l cmljQ3JlYXRlOworKwkJCQkJYnMgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVpbGRl ckdlbmVyaWNTdGFydDsKKysJCQkJCXNyID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1 aWxkZXJHZW5lcmljU2V0UmVzdWx0OworKwkJCQkJc2UgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNr TWV0aG9kQnVpbGRlckdlbmVyaWNTZXRFeGNlcHRpb247CisrCQkJCQlzbSA9IHByZWRfbWVtYmVy cy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyR2VuZXJpY1NldFN0YXRlTWFjaGluZTsKKysJCQkJCXRh c2sgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVyaWNUYXNrLkdldCAo KTsKKysJCQkJCWhhc190YXNrX3JldHVybl90eXBlID0gdHJ1ZTsKKysJCQkJfQorIAorLQkJCXNl dF9yZXN1bHQgPSBzci5HZXQgKCk7CistCQkJc2V0X2V4Y2VwdGlvbiA9IHNlLkdldCAoKTsKKy0J CQlidWlsZGVyX2ZhY3RvcnkgPSBiZi5HZXQgKCk7CistCQkJYnVpbGRlcl9zdGFydCA9IGJzLkdl dCAoKTsKKysJCQkJc2V0X3Jlc3VsdCA9IHNyLkdldCAoKTsKKysJCQkJc2V0X2V4Y2VwdGlvbiA9 IHNlLkdldCAoKTsKKysJCQkJYnVpbGRlcl9mYWN0b3J5ID0gYmYuR2V0ICgpOworKwkJCQlidWls ZGVyX3N0YXJ0ID0gYnMuR2V0ICgpOworIAorLQkJCXZhciBpc3RhdGVfbWFjaGluZSA9IE1vZHVs ZS5QcmVkZWZpbmVkVHlwZXMuSUFzeW5jU3RhdGVNYWNoaW5lOworLQkJCXZhciBzZXRfc3RhdGVt YWNoaW5lID0gc20uR2V0ICgpOworLQorLQkJCWlmICghYnVpbGRlcl90eXBlLkRlZmluZSAoKSB8 fCAhaXN0YXRlX21hY2hpbmUuRGVmaW5lICgpIHx8IHNldF9yZXN1bHQgPT0gbnVsbCB8fCBidWls ZGVyX2ZhY3RvcnkgPT0gbnVsbCB8fAorLQkJCQlzZXRfZXhjZXB0aW9uID09IG51bGwgfHwgc2V0 X3N0YXRlbWFjaGluZSA9PSBudWxsIHx8IGJ1aWxkZXJfc3RhcnQgPT0gbnVsbCB8fAorLQkJCQkh TW9kdWxlLlByZWRlZmluZWRUeXBlcy5JTm90aWZ5Q29tcGxldGlvbi5EZWZpbmUgKCkpIHsKKy0J CQkJUmVwb3J0LkVycm9yICgxOTkzLCBMb2NhdGlvbiwKKy0JCQkJCSJDYW5ub3QgZmluZCBjb21w aWxlciByZXF1aXJlZCB0eXBlcyBmb3IgYXN5bmNocm9ub3VzIGZ1bmN0aW9ucyBzdXBwb3J0LiBB cmUgeW91IHRhcmdldGluZyB0aGUgd3JvbmcgZnJhbWV3b3JrIHZlcnNpb24/Iik7CistCQkJCXJl dHVybiBiYXNlLkRvRGVmaW5lTWVtYmVycyAoKTsKKy0JCQl9CisrCQkJCXNldF9zdGF0ZW1hY2hp bmUgPSBzbS5HZXQgKCk7CisrCisrCQkJCWlmICghYnVpbGRlcl90eXBlLkRlZmluZSAoKSB8fCAh aXN0YXRlX21hY2hpbmUuRGVmaW5lICgpIHx8IHNldF9yZXN1bHQgPT0gbnVsbCB8fCBidWlsZGVy X2ZhY3RvcnkgPT0gbnVsbCB8fAorKwkJCQkJc2V0X2V4Y2VwdGlvbiA9PSBudWxsIHx8IHNldF9z dGF0ZW1hY2hpbmUgPT0gbnVsbCB8fCBidWlsZGVyX3N0YXJ0ID09IG51bGwgfHwKKysJCQkJCSFN b2R1bGUuUHJlZGVmaW5lZFR5cGVzLklOb3RpZnlDb21wbGV0aW9uLkRlZmluZSAoKSkgeworKwkJ CQkJUmVwb3J0LkVycm9yICgxOTkzLCBMb2NhdGlvbiwKKysJCQkJCQkiQ2Fubm90IGZpbmQgY29t cGlsZXIgcmVxdWlyZWQgdHlwZXMgZm9yIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMgc3VwcG9ydC4g QXJlIHlvdSB0YXJnZXRpbmcgdGhlIHdyb25nIGZyYW1ld29yayB2ZXJzaW9uPyIpOworKwkJCQkJ cmV0dXJuIGJhc2UuRG9EZWZpbmVNZW1iZXJzICgpOworKwkJCQl9CisgCistCQkJdmFyIGJ0ID0g YnVpbGRlcl90eXBlLlR5cGVTcGVjOworKwkJCQlidCA9IGJ1aWxkZXJfdHlwZS5UeXBlU3BlYzsK KysJCQl9CisgCisgCQkJLy8KKyAJCQkvLyBJbmZsYXRlIGdlbmVyaWMgVGFzayB0eXBlcworQEAg LTgyNSw5ICs4NzksMjYgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCXByZWRlZmluZWQg PSB1bnNhZmVWZXJzaW9uID8gcG0uQXN5bmNWb2lkTWV0aG9kQnVpbGRlck9uQ29tcGxldGVkVW5z YWZlIDogcG0uQXN5bmNWb2lkTWV0aG9kQnVpbGRlck9uQ29tcGxldGVkOworIAkJCX0gZWxzZSBp ZiAocmV0dXJuX3R5cGUgPT0gTW9kdWxlLlByZWRlZmluZWRUeXBlcy5UYXNrLlR5cGVTcGVjKSB7 CisgCQkJCXByZWRlZmluZWQgPSB1bnNhZmVWZXJzaW9uID8gcG0uQXN5bmNUYXNrTWV0aG9kQnVp bGRlck9uQ29tcGxldGVkVW5zYWZlIDogcG0uQXN5bmNUYXNrTWV0aG9kQnVpbGRlck9uQ29tcGxl dGVkOworLQkJCX0gZWxzZSB7CisrCQkJfSBlbHNlIGlmIChyZXR1cm5fdHlwZS5Jc0dlbmVyaWNU YXNrKSB7CisgCQkJCXByZWRlZmluZWQgPSB1bnNhZmVWZXJzaW9uID8gcG0uQXN5bmNUYXNrTWV0 aG9kQnVpbGRlckdlbmVyaWNPbkNvbXBsZXRlZFVuc2FmZSA6IHBtLkFzeW5jVGFza01ldGhvZEJ1 aWxkZXJHZW5lcmljT25Db21wbGV0ZWQ7CisgCQkJCWhhc190YXNrX3JldHVybl90eXBlID0gdHJ1 ZTsKKysJCQl9IGVsc2UgeworKwkJCQl2YXIgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzSW1w b3J0ZWQgKAorKwkJCQkJbmV3IFtdIHsKKysJCQkJCQkJCW5ldyBQYXJhbWV0ZXJEYXRhIChudWxs LCBQYXJhbWV0ZXIuTW9kaWZpZXIuUkVGKSwKKysJCQkJCQkJCW5ldyBQYXJhbWV0ZXJEYXRhIChu dWxsLCBQYXJhbWV0ZXIuTW9kaWZpZXIuUkVGKQorKwkJCQkJCX0sCisrCQkJCQluZXcgW10gewor KwkJCQkJCQkJbmV3IFR5cGVQYXJhbWV0ZXJTcGVjICgwLCBudWxsLCBTcGVjaWFsQ29uc3RyYWlu dC5Ob25lLCBWYXJpYW5jZS5Ob25lLCBudWxsKSwKKysJCQkJCQkJCW5ldyBUeXBlUGFyYW1ldGVy U3BlYyAoMSwgbnVsbCwgU3BlY2lhbENvbnN0cmFpbnQuTm9uZSwgVmFyaWFuY2UuTm9uZSwgbnVs bCkKKysJCQkJCX0sIGZhbHNlKTsKKysKKysJCQkJdmFyIG9uX2NvbXBsZXRlZF9zaWduID0gdW5z YWZlVmVyc2lvbiA/CisrCQkJCQlNZW1iZXJGaWx0ZXIuTWV0aG9kICgiQXdhaXRVbnNhZmVPbkNv bXBsZXRlZCIsIDIsIHBhcmFtZXRlcnMsIENvbXBpbGVyLkJ1aWx0aW5UeXBlcy5Wb2lkKSA6Cisr CQkJCSAgICBNZW1iZXJGaWx0ZXIuTWV0aG9kICgiQXdhaXRPbkNvbXBsZXRlZCIsIDIsIHBhcmFt ZXRlcnMsIENvbXBpbGVyLkJ1aWx0aW5UeXBlcy5Wb2lkKTsKKysJCQkJCisrCQkJCXByZWRlZmlu ZWQgPSBuZXcgUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiAoTW9kdWxlLCByZXR1cm5fdHlw ZS5NZW1iZXJEZWZpbml0aW9uLkdldEFzeW5jTWV0aG9kQnVpbGRlciAoKSwgb25fY29tcGxldGVk X3NpZ24pOworKwkJCQloYXNfdGFza19yZXR1cm5fdHlwZSA9IHJldHVybl90eXBlLklzR2VuZXJp YzsKKyAJCQl9CisgCisgCQkJdmFyIG9uX2NvbXBsZXRlZCA9IHByZWRlZmluZWQuUmVzb2x2ZSAo TG9jYXRpb24pOworQEAgLTg4NywxMSArOTU4LDE0IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCS8vIHN0YXRlTWFjaGluZS4kYnVpbGRlci5TdGFydDx7c3RvcmV5LXR5cGV9PihyZWYgc3Rh dGVNYWNoaW5lKTsKKyAJCQkvLworIAkJCWluc3RhbmNlLkFkZHJlc3NPZiAoZWMsIEFkZHJlc3NP cC5TdG9yZSk7CistCQkJZWMuRW1pdCAoT3BDb2Rlcy5MZGZsZGEsIGJ1aWxkZXJfZmllbGQpOwor KworKwkJCWJvb2wgc3RydWN0X2J1aWxkZXIgPSBidWlsZGVyLk1lbWJlclR5cGUuSXNTdHJ1Y3Q7 CisrCisrCQkJZWMuRW1pdCAoc3RydWN0X2J1aWxkZXIgPyBPcENvZGVzLkxkZmxkYSA6IE9wQ29k ZXMuTGRmbGQsIGJ1aWxkZXJfZmllbGQpOworIAkJCWlmIChUYXNrICE9IG51bGwpCisgCQkJCWVj LkVtaXQgKE9wQ29kZXMuRHVwKTsKKyAJCQlpbnN0YW5jZS5BZGRyZXNzT2YgKGVjLCBBZGRyZXNz T3AuU3RvcmUpOworLQkJCWVjLkVtaXQgKE9wQ29kZXMuQ2FsbCwgYnVpbGRlcl9zdGFydC5NYWtl R2VuZXJpY01ldGhvZCAoTW9kdWxlLCBpbnN0YW5jZS5UeXBlKSk7CisrCQkJZWMuRW1pdCAoc3Ry dWN0X2J1aWxkZXIgPyBPcENvZGVzLkNhbGwgOiBPcENvZGVzLkNhbGx2aXJ0LCBidWlsZGVyX3N0 YXJ0Lk1ha2VHZW5lcmljTWV0aG9kIChNb2R1bGUsIGluc3RhbmNlLlR5cGUpKTsKKyAKKyAJCQkv LworIAkJCS8vIEVtaXRzIHJldHVybiBzdGF0ZU1hY2hpbmUuJGJ1aWxkZXIuVGFzazsKK0BAIC0x MDI5LDQgKzExMDMsMjAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJRW1pdEFzc2lnbiAo ZWMsIG5ldyBOdWxsQ29uc3RhbnQgKHR5cGUsIGxvYyksIGZhbHNlLCBmYWxzZSk7CisgCQl9Cisg CX0KKysKKysJc3RhdGljIGNsYXNzIFR5cGVTcGVjQXN5bmNFeHRlbnNpb25zCisrCXsKKysJCXB1 YmxpYyBzdGF0aWMgYm9vbCBJc0N1c3RvbVRhc2tUeXBlICh0aGlzIFR5cGVTcGVjIHR5cGUpCisr CQl7CisrCQkJLy8gTEFNRVNQRUM6IEFyaXR5IGlzIG5vdCBtZW50aW9uZWQKKysJCQlpZiAodHlw ZS5Bcml0eSA+IDEpCisrCQkJCXJldHVybiBmYWxzZTsKKysJCQkKKysJCQl2YXIgYW1iID0gdHlw ZS5NZW1iZXJEZWZpbml0aW9uLkdldEFzeW5jTWV0aG9kQnVpbGRlciAoKTsKKysJCQlpZiAoYW1i ID09IG51bGwpCisrCQkJCXJldHVybiBmYWxzZTsKKysKKysJCQlyZXR1cm4gYW1iLkFyaXR5ID09 IHR5cGUuQXJpdHk7CisrCQl9CisrCX0KKyB9CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9hdHRyaWJ1 dGUuY3MgYi9tY3MvbWNzL2F0dHJpYnV0ZS5jcworaW5kZXggM2ZmMmQ2OGNjYjUuLjgzZDQwMzEx OGFkIDEwMDY0NAorLS0tIGEvbWNzL21jcy9hdHRyaWJ1dGUuY3MKKysrKyBiL21jcy9tY3MvYXR0 cmlidXRlLmNzCitAQCAtNzg5LDYgKzc4OSwxNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgewor IAkJCXJldHVybiAoKEJvb2xDb25zdGFudCkgcG9zX2FyZ3NbMF0uRXhwcikuVmFsdWU7CisgCQl9 CisgCisrCQlwdWJsaWMgVHlwZVNwZWMgR2V0QXN5bmNNZXRob2RCdWlsZGVyVmFsdWUgKCkKKysJ CXsKKysJCQlpZiAoIWFyZ19yZXNvbHZlZCkKKysJCQkJUmVzb2x2ZSAoKTsKKysKKysJCQlpZiAo cmVzb2x2ZV9lcnJvcikKKysJCQkJcmV0dXJuIG51bGw7CisrCisrCQkJcmV0dXJuIEdldEFyZ3Vt ZW50VHlwZSAoKTsKKysJCX0KKysKKyAJCXB1YmxpYyBUeXBlU3BlYyBHZXRDb0NsYXNzQXR0cmli dXRlVmFsdWUgKCkKKyAJCXsKKyAJCQlpZiAoIWFyZ19yZXNvbHZlZCkKK0BAIC0xNzU0LDkgKzE3 NjUsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAKKyAJCS8vIE5ldyBpbiAuTkVUIDQu NworIAkJcHVibGljIHJlYWRvbmx5IFByZWRlZmluZWRUdXBsZUVsZW1lbnROYW1lc0F0dHJpYnV0 ZSBUdXBsZUVsZW1lbnROYW1lczsKKysJCXB1YmxpYyByZWFkb25seSBQcmVkZWZpbmVkQXR0cmli dXRlIEFzeW5jTWV0aG9kQnVpbGRlcjsKKyAKKyAJCS8vIE5ldyBpbiAuTkVUIDQuNy4xCisgCQlw dWJsaWMgcmVhZG9ubHkgUHJlZGVmaW5lZEF0dHJpYnV0ZSBJc1JlYWRPbmx5OworKwkJcHVibGlj IHJlYWRvbmx5IFByZWRlZmluZWRBdHRyaWJ1dGUgSXNCeVJlZkxpa2U7CisgCisgCQkvLworIAkJ Ly8gT3B0aW9uYWwgdHlwZXMgd2hpY2ggYXJlIHVzZWQgYXMgdHlwZXMgYW5kIGZvciBtZW1iZXIg bG9va3VwCitAQCAtMTgzNyw4ICsxODUwLDEwIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7Cisg CQkJQ2FsbGVyTGluZU51bWJlckF0dHJpYnV0ZSA9IG5ldyBQcmVkZWZpbmVkQXR0cmlidXRlICht b2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwgIkNhbGxlckxpbmVOdW1i ZXJBdHRyaWJ1dGUiKTsKKyAJCQlDYWxsZXJGaWxlUGF0aEF0dHJpYnV0ZSA9IG5ldyBQcmVkZWZp bmVkQXR0cmlidXRlIChtb2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwg IkNhbGxlckZpbGVQYXRoQXR0cmlidXRlIik7CisgCisrCQkJQXN5bmNNZXRob2RCdWlsZGVyID0g bmV3IFByZWRlZmluZWRBdHRyaWJ1dGUgKG1vZHVsZSwgIlN5c3RlbS5SdW50aW1lLkNvbXBpbGVy U2VydmljZXMiLCAiQXN5bmNNZXRob2RCdWlsZGVyQXR0cmlidXRlIik7CisgCQkJVHVwbGVFbGVt ZW50TmFtZXMgPSBuZXcgUHJlZGVmaW5lZFR1cGxlRWxlbWVudE5hbWVzQXR0cmlidXRlIChtb2R1 bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwgIlR1cGxlRWxlbWVudE5hbWVz QXR0cmlidXRlIik7CisgCQkJSXNSZWFkT25seSA9IG5ldyBQcmVkZWZpbmVkQXR0cmlidXRlICht b2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwgIklzUmVhZE9ubHlBdHRy aWJ1dGUiKTsKKysJCQlJc0J5UmVmTGlrZSA9IG5ldyBQcmVkZWZpbmVkQXR0cmlidXRlIChtb2R1 bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwgIklzQnlSZWZMaWtlQXR0cmli dXRlIik7CisgCisgCQkJLy8gVE9ETzogU2hvdWxkIGRlZmluZSBvbmx5IGF0dHJpYnV0ZXMgd2hp Y2ggYXJlIHVzZWQgZm9yIGNvbXBhcmlzb24KKyAJCQljb25zdCBTeXN0ZW0uUmVmbGVjdGlvbi5C aW5kaW5nRmxhZ3MgYWxsX2ZpZWxkcyA9IFN5c3RlbS5SZWZsZWN0aW9uLkJpbmRpbmdGbGFncy5Q dWJsaWMgfAorZGlmZiAtLWdpdCBhL21jcy9tY3MvY2xhc3MuY3MgYi9tY3MvbWNzL2NsYXNzLmNz CitpbmRleCA5YWZiMzJjNmZlNS4uNmIxYWRjMjk3YTMgMTAwNjQ0CistLS0gYS9tY3MvbWNzL2Ns YXNzLmNzCisrKysgYi9tY3MvbWNzL2NsYXNzLmNzCitAQCAtMjI0LDYgKzIyNCwyNCBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlwdWJsaWMgdm9pZCBDbG9zZUNv bnRhaW5lckVhcmx5Rm9yUmVmbGVjdGlvbkVtaXQgKCkKKysJCXsKKysJCQlpZiAoY29udGFpbmVy cyAhPSBudWxsKSB7CisrCQkJCWZvcmVhY2ggKFR5cGVDb250YWluZXIgdGMgaW4gY29udGFpbmVy cykgeworKwkJCQkJLy8KKysJCQkJCS8vIFNSRSByZXF1aXJlcyBkdWUgdG8gaW50ZXJuYWwgY2hl Y2tzIHRoYXQgYW55IGZpZWxkIG9mIGVudW0gdHlwZSBpcworKwkJCQkJLy8gYmFrZWQuIFdlIGNs b3NlIGFsbCBlbnVtIHR5cGVzIGJlZm9yZSBjbG9zaW5nIGFueSBvdGhlciB0eXBlcyB0bworKwkJ CQkJLy8gd29ya2Fyb3VuZCB0aGlzIGxpbWl0YXRpb24KKysJCQkJCS8vCisrCQkJCQlpZiAodGMu S2luZCA9PSBNZW1iZXJLaW5kLkVudW0pIHsKKysJCQkJCQl0Yy5DbG9zZUNvbnRhaW5lciAoKTsK KysJCQkJCX0gZWxzZSB7CisrCQkJCQkJdGMuQ2xvc2VDb250YWluZXJFYXJseUZvclJlZmxlY3Rp b25FbWl0ICgpOworKwkJCQkJfQorKwkJCQl9CisrCQkJfQorKwkJfQorKworIAkJcHVibGljIHZp cnR1YWwgdm9pZCBDcmVhdGVNZXRhZGF0YU5hbWUgKFN0cmluZ0J1aWxkZXIgc2IpCisgCQl7Cisg CQkJaWYgKFBhcmVudCAhPSBudWxsICYmIFBhcmVudC5NZW1iZXJOYW1lICE9IG51bGwpCitAQCAt MTEwMiw2ICsxMTIwLDE4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQltZW1iZXIuR2Vu ZXJhdGVEb2NDb21tZW50IChidWlsZGVyKTsKKyAJCX0KKyAKKysJCXB1YmxpYyBUeXBlU3BlYyBH ZXRBc3luY01ldGhvZEJ1aWxkZXIgKCkKKysJCXsKKysJCQlpZiAoT3B0QXR0cmlidXRlcyA9PSBu dWxsKQorKwkJCQlyZXR1cm4gbnVsbDsKKysKKysJCQlBdHRyaWJ1dGUgYSA9IE9wdEF0dHJpYnV0 ZXMuU2VhcmNoIChNb2R1bGUuUHJlZGVmaW5lZEF0dHJpYnV0ZXMuQXN5bmNNZXRob2RCdWlsZGVy KTsKKysJCQlpZiAoYSA9PSBudWxsKQorKwkJCQlyZXR1cm4gbnVsbDsKKysKKysJCQlyZXR1cm4g YS5HZXRBc3luY01ldGhvZEJ1aWxkZXJWYWx1ZSAoKTsKKysJCX0KKysKKyAJCXB1YmxpYyBUeXBl U3BlYyBHZXRBdHRyaWJ1dGVDb0NsYXNzICgpCisgCQl7CisgCQkJaWYgKE9wdEF0dHJpYnV0ZXMg PT0gbnVsbCkKK0BAIC0yMTcxLDcgKzIyMDEsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAK KyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXQgKCkKKyAJCXsKKy0JCQlpZiAoSW50ZXJmYWNl cyAhPSBudWxsKSB7CisrCQkJaWYgKEludGVyZmFjZXMgIT0gbnVsbCAmJiAoTW9kRmxhZ3MgJiBN b2RpZmllcnMuUFJJVkFURSkgPT0gMCkgeworIAkJCQlmb3JlYWNoICh2YXIgaWZhY2UgaW4gSW50 ZXJmYWNlcykgeworIAkJCQkJaWYgKGlmYWNlLkhhc05hbWVkVHVwbGVFbGVtZW50KSB7CisgCQkJ CQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgibmFtZWQgdHVwbGVzIGZvciAu aW50ZXJmYWNlaW1wbCIpOworQEAgLTMwMjMsNyArMzA1Myw4IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAkJCU1vZGlmaWVycy5JTlRFUk5BTCAgfAorIAkJCU1vZGlmaWVycy5VTlNBRkUgICAg fAorIAkJCU1vZGlmaWVycy5QUklWQVRFICAgfAorLQkJCU1vZGlmaWVycy5SRUFET05MWTsKKysJ CQlNb2RpZmllcnMuUkVBRE9OTFkgIHwKKysJCQlNb2RpZmllcnMuUkVGOworIAorIAkJcHVibGlj IFN0cnVjdCAoVHlwZUNvbnRhaW5lciBwYXJlbnQsIE1lbWJlck5hbWUgbmFtZSwgTW9kaWZpZXJz IG1vZCwgQXR0cmlidXRlcyBhdHRycykKKyAJCQk6IGJhc2UgKHBhcmVudCwgbmFtZSwgYXR0cnMs IE1lbWJlcktpbmQuU3RydWN0KQorQEAgLTMxMzksNiArMzE3MCw5IEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycAorIAkJCWlmICgoTW9kRmxhZ3MgJiBNb2RpZmllcnMuUkVBRE9OTFkpICE9IDApCisg CQkJCU1vZHVsZS5QcmVkZWZpbmVkQXR0cmlidXRlcy5Jc1JlYWRPbmx5LkVtaXRBdHRyaWJ1dGUg KFR5cGVCdWlsZGVyKTsKKyAKKysJCQlpZiAoKE1vZEZsYWdzICYgTW9kaWZpZXJzLlJFRikgIT0g MCkKKysJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLklzQnlSZWZMaWtlLkVtaXRBdHRy aWJ1dGUgKFR5cGVCdWlsZGVyKTsKKysKKyAJCQlDaGVja1N0cnVjdEN5Y2xlcyAoKTsKKyAKKyAJ CQliYXNlLkVtaXQgKCk7CitAQCAtMzIxMyw2ICszMjQ3LDEwIEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFR5cGVTcGVjW10gUmVzb2x2ZUJhc2VUeXBlcyAo b3V0IEZ1bGxOYW1lZEV4cHJlc3Npb24gYmFzZV9jbGFzcykKKyAJCXsKKyAJCQl2YXIgaWZhY2Vz ID0gYmFzZS5SZXNvbHZlQmFzZVR5cGVzIChvdXQgYmFzZV9jbGFzcyk7CisrCQkJaWYgKGlmYWNl cyAhPSBudWxsICYmIChNb2RGbGFncyAmIE1vZGlmaWVycy5SRUYpICE9IDApIHsKKysJCQkJUmVw b3J0LkVycm9yICg4MzQzLCBMb2NhdGlvbiwgImB7MH0nOiByZWYgc3RydWN0cyBjYW5ub3QgaW1w bGVtZW50IGludGVyZmFjZXMiLCBHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisrCQkJfQorKwor IAkJCWJhc2VfdHlwZSA9IENvbXBpbGVyLkJ1aWx0aW5UeXBlcy5WYWx1ZVR5cGU7CisgCQkJcmV0 dXJuIGlmYWNlczsKKyAJCX0KK0BAIC0zOTE1LDcgKzM5NTMsNyBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAKKyAJCXByb3RlY3RlZCB2b2lkIElzVHlwZVBlcm1pdHRlZCAoKQorIAkJeworLQkJ CWlmIChNZW1iZXJUeXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlKSB7CisrCQkJaWYgKE1lbWJlclR5 cGUuSXNTcGVjaWFsUnVudGltZVR5cGUgfHwgTWVtYmVyVHlwZS5Jc0J5UmVmTGlrZSkgeworIAkJ CQlpZiAoUGFyZW50IGlzIFN0YXRlTWFjaGluZSkgeworIAkJCQkJUmVwb3J0LkVycm9yICg0MDEy LCBMb2NhdGlvbiwKKyAJCQkJCQkiUGFyYW1ldGVycyBvciBsb2NhbCB2YXJpYWJsZXMgb2YgdHlw ZSBgezB9JyBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYXN5bmMgbWV0aG9kcyBvciBpdGVyYXRvcnMi LAorQEAgLTM5MjQsNiArMzk2MiwxOSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCVJl cG9ydC5FcnJvciAoNDAxMywgTG9jYXRpb24sCisgCQkJCQkJIkxvY2FsIHZhcmlhYmxlcyBvZiB0 eXBlIGB7MH0nIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhbm9ueW1vdXMgbWV0aG9kcywgbGFtYmRh IGV4cHJlc3Npb25zIG9yIHF1ZXJ5IGV4cHJlc3Npb25zIiwKKyAJCQkJCQlNZW1iZXJUeXBlLkdl dFNpZ25hdHVyZUZvckVycm9yICgpKTsKKysJCQkJfSBlbHNlIGlmIChNZW1iZXJUeXBlLklzQnlS ZWZMaWtlKSB7CisrCQkJCQlpZiAoKE1vZEZsYWdzICYgKE1vZGlmaWVycy5BQlNUUkFDVCB8IE1v ZGlmaWVycy5FWFRFUk4pKSAhPSAwKQorKwkJCQkJCXJldHVybjsKKysKKysJCQkJCWlmICgoTW9k RmxhZ3MgJiBNb2RpZmllcnMuQXV0b1Byb3BlcnR5KSA9PSAwICYmIHRoaXMgaXMgUHJvcGVydHkp CisrCQkJCQkJcmV0dXJuOworKworKwkJCQkJaWYgKChNb2RGbGFncyAmIE1vZGlmaWVycy5TVEFU SUMpID09IDAgJiYgKFBhcmVudC5Nb2RGbGFncyAmIE1vZGlmaWVycy5SRUYpICE9IDApCisrCQkJ CQkJcmV0dXJuOworKworKwkJCQkJUmVwb3J0LkVycm9yICg4MzQ1LCBMb2NhdGlvbiwKKysJCQkJ CQkiRmllbGQgb3IgYXV0by1pbXBsZW1lbnRlZCBwcm9wZXJ0eSBjYW5ub3QgYmUgb2YgdHlwZSBg ezB9JyB1bmxlc3MgaXQgaXMgYW4gaW5zdGFuY2UgbWVtYmVyIG9mIGEgcmVmIHN0cnVjdCIsCisr CQkJCQkJTWVtYmVyVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisgCQkJCX0gZWxzZSB7 CisgCQkJCQlSZXBvcnQuRXJyb3IgKDYxMCwgTG9jYXRpb24sIAorIAkJCQkJCSJGaWVsZCBvciBw cm9wZXJ0eSBjYW5ub3QgYmUgb2YgdHlwZSBgezB9JyIsIE1lbWJlclR5cGUuR2V0U2lnbmF0dXJl Rm9yRXJyb3IgKCkpOworZGlmZiAtLWdpdCBhL21jcy9tY3MvY29uc3QuY3MgYi9tY3MvbWNzL2Nv bnN0LmNzCitpbmRleCAwNDZhZWMyNGMxYi4uNjU4ZjE1ZWM1N2EgMTAwNjQ0CistLS0gYS9tY3Mv bWNzL2NvbnN0LmNzCisrKysgYi9tY3MvbWNzL2NvbnN0LmNzCitAQCAtMjA2LDcgKzIwNiw5IEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQljID0gZmllbGQuQ29udmVydEluaXRpYWxp emVyIChyYywgYyk7CisgCisgCQkJCWlmIChjID09IG51bGwpIHsKKy0JCQkJCWlmIChUeXBlU3Bl Yy5Jc1JlZmVyZW5jZVR5cGUgKGZpZWxkLk1lbWJlclR5cGUpKQorKwkJCQkJaWYgKGV4cHIgaXMg RGVmYXVsdExpdGVyYWxFeHByZXNzaW9uKSB7CisrCQkJCQkJLy8gSXQncyBoYW5kbGVkIGJlbGxv dyBpbiBOZXcuQ29uc3RhbnRpZnkKKysJCQkJCX0gZWxzZSBpZiAoVHlwZVNwZWMuSXNSZWZlcmVu Y2VUeXBlIChmaWVsZC5NZW1iZXJUeXBlKSkKKyAJCQkJCQlFcnJvcl9Db25zdGFudENhbkJlSW5p dGlhbGl6ZWRXaXRoTnVsbE9ubHkgKHJjLCBmaWVsZC5NZW1iZXJUeXBlLCBleHByLkxvY2F0aW9u LCBHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisgCQkJCQllbHNlIGlmICghKGV4cHIgaXMgQ29u c3RhbnQpKQorIAkJCQkJCUVycm9yX0V4cHJlc3Npb25NdXN0QmVDb25zdGFudCAocmMsIGV4cHIu TG9jYXRpb24sIEdldFNpZ25hdHVyZUZvckVycm9yICgpKTsKK2RpZmYgLS1naXQgYS9tY3MvbWNz L2NvbnZlcnQuY3MgYi9tY3MvbWNzL2NvbnZlcnQuY3MKK2luZGV4IGIxMTQ3N2MxMDQzLi5hZTE1 M2ZjNDllOCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvY29udmVydC5jcworKysrIGIvbWNzL21jcy9j b252ZXJ0LmNzCitAQCAtMzkyLDYgKzM5Miw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7Cisg CQkJCWlmICghVHlwZVNwZWMuSXNWYWx1ZVR5cGUgKGV4cHJfdHlwZSkpCisgCQkJCQlyZXR1cm4g bnVsbDsKKyAKKysJCQkJaWYgKGV4cHJfdHlwZS5Jc0J5UmVmTGlrZSkKKysJCQkJCXJldHVybiBu dWxsOworKworIAkJCQlyZXR1cm4gZXhwciA9PSBudWxsID8gRW1wdHlFeHByZXNzaW9uLk51bGwg OiBuZXcgQm94ZWRDYXN0IChleHByLCB0YXJnZXRfdHlwZSk7CisgCisgCQkJY2FzZSBCdWlsdGlu VHlwZVNwZWMuVHlwZS5FbnVtOgorQEAgLTgxNiw3ICs4MTksNyBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAgeworIAkJCWlmIChleHByX3R5cGUgPT0gdGFyZ2V0X3R5cGUpCisgCQkJCXJldHVybiB0 cnVlOworIAorLQkJCWlmIChleHByX3R5cGUgPT0gSW50ZXJuYWxUeXBlLlRocm93RXhwcikKKysJ CQlpZiAoZXhwcl90eXBlID09IEludGVybmFsVHlwZS5UaHJvd0V4cHIgfHwgZXhwcl90eXBlID09 IEludGVybmFsVHlwZS5EZWZhdWx0VHlwZSkKKyAJCQkJcmV0dXJuIHRhcmdldF90eXBlLktpbmQg IT0gTWVtYmVyS2luZC5JbnRlcm5hbENvbXBpbGVyVHlwZTsKKyAKKyAJCQlpZiAodGFyZ2V0X3R5 cGUuSXNOdWxsYWJsZVR5cGUpCitAQCAtMTQ3OCw2ICsxNDgxLDEwIEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycCB7CisgCQkJCXJldHVybiB0YXJnZXRfdHlwZS5LaW5kID09IE1lbWJlcktpbmQuSW50 ZXJuYWxDb21waWxlclR5cGUgPyBudWxsIDogRW1wdHlDYXN0LkNyZWF0ZSAoZXhwciwgdGFyZ2V0 X3R5cGUpOworIAkJCX0KKyAKKysJCQlpZiAoZXhwcl90eXBlID09IEludGVybmFsVHlwZS5EZWZh dWx0VHlwZSkgeworKwkJCQlyZXR1cm4gbmV3IERlZmF1bHRWYWx1ZUV4cHJlc3Npb24gKG5ldyBU eXBlRXhwcmVzc2lvbiAodGFyZ2V0X3R5cGUsIGV4cHIuTG9jYXRpb24pLCBleHByLkxvY2F0aW9u KS5SZXNvbHZlIChlYyk7CisrCQkJfQorKworIAkJCWlmICh0YXJnZXRfdHlwZS5Jc051bGxhYmxl VHlwZSkKKyAJCQkJcmV0dXJuIEltcGxpY2l0TnVsYWJsZUNvbnZlcnNpb24gKGVjLCBleHByLCB0 YXJnZXRfdHlwZSk7CisgCitAQCAtMTk2Nyw3ICsxOTc0LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1No YXJwIHsKKyAJCQkvLyBGcm9tIG9iamVjdCBvciBkeW5hbWljIHRvIGFueSByZWZlcmVuY2UgdHlw ZSBvciB2YWx1ZSB0eXBlICh1bmJveGluZykKKyAJCQkvLworIAkJCWlmIChzb3VyY2VfdHlwZS5C dWlsdGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5PYmplY3QgfHwgc291cmNlX3R5cGUu QnVpbHRpblR5cGUgPT0gQnVpbHRpblR5cGVTcGVjLlR5cGUuRHluYW1pYykgeworLQkJCQlpZiAo dGFyZ2V0X3R5cGUuSXNQb2ludGVyKQorKwkJCQlpZiAodGFyZ2V0X3R5cGUuSXNQb2ludGVyIHx8 IHRhcmdldF90eXBlLklzQnlSZWZMaWtlKQorIAkJCQkJcmV0dXJuIG51bGw7CisgCisgCQkJCXJl dHVybgorZGlmZiAtLWdpdCBhL21jcy9tY3MvY3MtcGFyc2VyLmpheSBiL21jcy9tY3MvY3MtcGFy c2VyLmpheQoraW5kZXggMjg2OGQyZmQ4ZjYuLjRkNmZjYjQ0YzBkIDEwMDY0NAorLS0tIGEvbWNz L21jcy9jcy1wYXJzZXIuamF5CisrKysgYi9tY3MvbWNzL2NzLXBhcnNlci5qYXkKK0BAIC0xNjks NyArMTY5LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgJXRva2VuIENPTlNUCQorICV0b2tl biBDT05USU5VRQkKKyAldG9rZW4gREVDSU1BTAkKKy0ldG9rZW4gREVGQVVMVAkKKysldG9rZW4g REVGQVVMVAorKyV0b2tlbiBERUZBVUxUX1ZBTFVFCisgJXRva2VuIERFTEVHQVRFCQorICV0b2tl biBETwkKKyAldG9rZW4gRE9VQkxFCQorQEAgLTMzNiw2ICszMzcsNyBAQCBuYW1lc3BhY2UgTW9u by5DU2hhcnAKKyAldG9rZW4gREVGQVVMVF9DT0xPTgorICV0b2tlbiBPUEVOX0JSQUNLRVRfRVhQ UgorICV0b2tlbiBPUEVOX1BBUkVOU19ERUNPTlNUUlVDVAorKyV0b2tlbiBSRUZfU1RSVUNUCisg CisgLy8gTWFrZSB0aGUgcGFyc2VyIGdvIGludG8gZXZhbCBtb2RlIHBhcnNpbmcgKHN0YXRlbWVu dHMgYW5kIGNvbXBpbGF0aW9uIHVuaXRzKS4KKyAldG9rZW4gRVZBTF9TVEFURU1FTlRfUEFSU0VS CitAQCAtODYzLDcgKzg2NSw3IEBAIGF0dHJpYnV0ZV9hcmd1bWVudHMKKyAJCX0KKyAJCQorIAkJ QXJndW1lbnRzIGFyZ3MgPSAoKEFyZ3VtZW50cykgbyBbMF0pOworLQkJaWYgKGFyZ3MuQ291bnQg PiAwICYmICEoJDMgaXMgTmFtZWRBcmd1bWVudCkgJiYgYXJncyBbYXJncy5Db3VudCAtIDFdIGlz IE5hbWVkQXJndW1lbnQpCisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZf N18yICYmIGFyZ3MuQ291bnQgPiAwICYmICEoJDMgaXMgTmFtZWRBcmd1bWVudCkgJiYgYXJncyBb YXJncy5Db3VudCAtIDFdIGlzIE5hbWVkQXJndW1lbnQpCisgCQkJRXJyb3JfTmFtZWRBcmd1bWVu dEV4cGVjdGVkICgoTmFtZWRBcmd1bWVudCkgYXJncyBbYXJncy5Db3VudCAtIDFdKTsKKyAJCQor IAkJYXJncy5BZGQgKChBcmd1bWVudCkgJDMpOworQEAgLTEwMTUsMTcgKzEwMTcsMzQgQEAgcHJp bWFyeV9jb25zdHJ1Y3Rvcl9ib2R5CisgCSAgfQorIAk7CisgCisrc3RydWN0X2tleXdvcmQKKysJ OiBTVFJVQ1QKKysJICB7CisrCQkkJCA9IG51bGw7CisrCSAgfQorKwl8IFJFRl9TVFJVQ1QKKysJ ICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfN18yKSB7CisrCQkJ RmVhdHVyZUlzTm90QXZhaWxhYmxlIChHZXRMb2NhdGlvbiAoJDEpLCAicmVmIHN0cnVjdHMiKTsK KysJCX0KKysKKysJCSQkID0gdGhpczsKKysJICB9CisrCTsKKysKKyBzdHJ1Y3RfZGVjbGFyYXRp b24KKyAJOiBvcHRfYXR0cmlidXRlcworIAkgIG9wdF9tb2RpZmllcnMKKyAJICBvcHRfcGFydGlh bAorLQkgIFNUUlVDVAorKwkgIHN0cnVjdF9rZXl3b3JkCisgCSAgdHlwZV9kZWNsYXJhdGlvbl9u YW1lCisgCSAgeworIAkJdmFyIG1vZHMgPSAoTW9kaWZpZXJzKSAkMjsKKyAJCWlmICgobW9kcyAm IE1vZGlmaWVycy5SRUFET05MWSkgIT0gMCAmJiBsYW5nX3ZlcnNpb24gPCBMYW5ndWFnZVZlcnNp b24uVl83XzIpIHsKKyAJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0aW9uICgkNCks ICJyZWFkb25seSBzdHJ1Y3RzIik7CisgCQl9CisrCQlpZiAoJDQgIT0gbnVsbCkKKysJCQltb2Rz IHw9IE1vZGlmaWVycy5SRUY7CisgCisgCQlsZXhlci5Db25zdHJhaW50c1BhcnNpbmcgPSB0cnVl OworIAkJdmFsaWRfcGFyYW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlByaW1hcnlDb25z dHJ1Y3RvcjsKK0BAIC0xMDcxLDcgKzEwOTAsNyBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KKyAJCX0K KyAJCSQkID0gcG9wX2N1cnJlbnRfY2xhc3MgKCk7CisgCSAgfQorLQl8IG9wdF9hdHRyaWJ1dGVz IG9wdF9tb2RpZmllcnMgb3B0X3BhcnRpYWwgU1RSVUNUIGVycm9yCisrCXwgb3B0X2F0dHJpYnV0 ZXMgb3B0X21vZGlmaWVycyBvcHRfcGFydGlhbCBzdHJ1Y3Rfa2V5d29yZCBlcnJvcgorIAkgIHsK KyAJCUVycm9yX1N5bnRheEVycm9yICh5eVRva2VuKTsKKyAJICB9CitAQCAtMTM4NCw2ICsxNDAz LDE4IEBAIHJlZl9tZW1iZXJfdHlwZQorIAorIAkJJCQgPSBuZXcgUmVmZXJlbmNlVHlwZUV4cHIg KChGdWxsTmFtZWRFeHByZXNzaW9uKSAkMywgR2V0TG9jYXRpb24gKCQxKSk7CisgCSAgfQorKwl8 IFJFRiBSRUFET05MWQorKwkgIHsKKysJCWxleGVyLnBhcnNpbmdfZ2VuZXJpY19kZWNsYXJhdGlv biA9IHRydWU7CisrCSAgfQorKwkgIHR5cGUKKysJICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwg TGFuZ3VhZ2VWZXJzaW9uLlZfN18yKSB7CisrCQkJRmVhdHVyZUlzTm90QXZhaWxhYmxlIChHZXRM b2NhdGlvbiAoJDIpLCAicmVhZG9ubHkgcmVmZXJlbmNlcyIpOworKwkJfQorKworKwkJJCQgPSBu ZXcgUmVmZXJlbmNlVHlwZUV4cHIgKChGdWxsTmFtZWRFeHByZXNzaW9uKSAkNCwgdHJ1ZSwgR2V0 TG9jYXRpb24gKCQxKSk7CisrCSAgfQorIAk7CisgCisgbWV0aG9kX2hlYWRlcgorQEAgLTM0NDgs NiArMzQ3OSw3IEBAIHByaW1hcnlfZXhwcmVzc2lvbgorIAl8IGFub255bW91c19tZXRob2RfZXhw cmVzc2lvbgorIAl8IHVuZG9jdW1lbnRlZF9leHByZXNzaW9ucworIAl8IGludGVycG9sYXRlZF9z dHJpbmcKKysJfCBkZWZhdWx0X2xpdGVyYWwKKyAJOworIAorIHR5cGVfbmFtZV9leHByZXNzaW9u CitAQCAtMzgyNCw3ICszODU2LDcgQEAgYXJndW1lbnRfbGlzdAorIAl8IGFyZ3VtZW50X2xpc3Qg Q09NTUEgYXJndW1lbnQKKyAJICB7CisgCQlBcmd1bWVudHMgbGlzdCA9IChBcmd1bWVudHMpICQx OworLQkJaWYgKGxpc3QgW2xpc3QuQ291bnQgLSAxXSBpcyBOYW1lZEFyZ3VtZW50KQorKwkJaWYg KGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMiAmJiBsaXN0IFtsaXN0LkNvdW50 IC0gMV0gaXMgTmFtZWRBcmd1bWVudCkKKyAJCQlFcnJvcl9OYW1lZEFyZ3VtZW50RXhwZWN0ZWQg KChOYW1lZEFyZ3VtZW50KSBsaXN0IFtsaXN0LkNvdW50IC0gMV0pOworIAkJCisgCQlsaXN0LkFk ZCAoKEFyZ3VtZW50KSAkMyk7CitAQCAtMzk2OSw3ICs0MDAxLDcgQEAgZXhwcmVzc2lvbl9saXN0 X2FyZ3VtZW50cworIAl8IGV4cHJlc3Npb25fbGlzdF9hcmd1bWVudHMgQ09NTUEgZXhwcmVzc2lv bl9saXN0X2FyZ3VtZW50CisgCSAgeworIAkJQXJndW1lbnRzIGFyZ3MgPSAoQXJndW1lbnRzKSAk MTsKKy0JCWlmIChhcmdzIFthcmdzLkNvdW50IC0gMV0gaXMgTmFtZWRBcmd1bWVudCAmJiAhKCQz IGlzIE5hbWVkQXJndW1lbnQpKQorKwkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lv bi5WXzdfMiAmJiBhcmdzIFthcmdzLkNvdW50IC0gMV0gaXMgTmFtZWRBcmd1bWVudCAmJiAhKCQz IGlzIE5hbWVkQXJndW1lbnQpKQorIAkJCUVycm9yX05hbWVkQXJndW1lbnRFeHBlY3RlZCAoKE5h bWVkQXJndW1lbnQpIGFyZ3MgW2FyZ3MuQ291bnQgLSAxXSk7CisgCSAgCisgCQlhcmdzLkFkZCAo KEFyZ3VtZW50KSAkMyk7CitAQCAtNDM4Niw3ICs0NDE4LDcgQEAgYW5vbnltb3VzX21ldGhvZF9z aWduYXR1cmUKKyAJOworIAorIGRlZmF1bHRfdmFsdWVfZXhwcmVzc2lvbgorLQk6IERFRkFVTFQg b3Blbl9wYXJlbnNfYW55IHR5cGUgQ0xPU0VfUEFSRU5TCisrCTogREVGQVVMVF9WQUxVRSBvcGVu X3BhcmVuc19hbnkgdHlwZSBDTE9TRV9QQVJFTlMKKyAJICB7CisgCQlpZiAobGFuZ192ZXJzaW9u IDwgTGFuZ3VhZ2VWZXJzaW9uLklTT18yKQorIAkJCUZlYXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0 TG9jYXRpb24gKCQxKSwgImRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiIpOworQEAgLTQzOTYsNiAr NDQyOCwxNiBAQCBkZWZhdWx0X3ZhbHVlX2V4cHJlc3Npb24KKyAJICB9CisgCTsKKyAKKytkZWZh dWx0X2xpdGVyYWwKKysJOiBERUZBVUxUCisrCSAgeworKwkJaWYgKGxhbmdfdmVyc2lvbiA8IExh bmd1YWdlVmVyc2lvbi5WXzdfMSkKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0 aW9uICgkMSksICJkZWZhdWx0IGxpdGVyYWwiKTsKKysKKysJCSQkID0gbmV3IERlZmF1bHRMaXRl cmFsRXhwcmVzc2lvbiAoR2V0TG9jYXRpb24gKCQxKSk7CisrCSAgfQorKwk7CisrCisgdW5hcnlf ZXhwcmVzc2lvbgorIAk6IHByaW1hcnlfZXhwcmVzc2lvbgorIAl8IEJBTkcgcHJlZml4ZWRfdW5h cnlfZXhwcmVzc2lvbgorQEAgLTQ3NTAsNyArNDc5Miw3IEBAIHBhdHRlcm5fbGlzdAorIAl8IHBh dHRlcm5fbGlzdCBDT01NQSBwYXR0ZXJuX2FyZ3VtZW50CisgCSAgeworIAkJQXJndW1lbnRzIGFy Z3MgPSAoQXJndW1lbnRzKSAkMTsKKy0JCWlmIChhcmdzIFthcmdzLkNvdW50IC0gMV0gaXMgTmFt ZWRBcmd1bWVudCAmJiAhKCQzIGlzIE5hbWVkQXJndW1lbnQpKQorKwkJaWYgKGxhbmdfdmVyc2lv biA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMiAmJiBhcmdzIFthcmdzLkNvdW50IC0gMV0gaXMgTmFt ZWRBcmd1bWVudCAmJiAhKCQzIGlzIE5hbWVkQXJndW1lbnQpKQorIAkJCUVycm9yX05hbWVkQXJn dW1lbnRFeHBlY3RlZCAoKE5hbWVkQXJndW1lbnQpIGFyZ3MgW2FyZ3MuQ291bnQgLSAxXSk7Cisg CisgCQlhcmdzLkFkZCAoKEFyZ3VtZW50KSAkMyk7CitAQCAtNTA2NywxNyArNTEwOSwyNSBAQCBh c3NpZ25tZW50X2V4cHJlc3Npb24KKyAJCSQkID0gbmV3IENvbXBvdW5kQXNzaWduIChCaW5hcnku T3BlcmF0b3IuRXhjbHVzaXZlT3IsIChFeHByZXNzaW9uKSAkMSwgKEV4cHJlc3Npb24pICQzKTsK KyAJCWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDIpKTsKKyAJICB9CistCXwg T1BFTl9QQVJFTlNfREVDT05TVFJVQ1QgZGVjb25zdHJ1Y3RfZXhwcnMgQ0xPU0VfUEFSRU5TIEFT U0lHTiBleHByZXNzaW9uCisrCXwgT1BFTl9QQVJFTlNfREVDT05TVFJVQ1QgZGVjb25zdHJ1Y3Rf YXNzaWdubWVudCBDTE9TRV9QQVJFTlMgQVNTSUdOIGV4cHJlc3Npb24KKyAJICB7CisgCQlpZiAo bGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykKKyAJCQlGZWF0dXJlSXNOb3RBdmFp bGFibGUgKEdldExvY2F0aW9uICgkMSksICJ0dXBsZXMiKTsKKyAKKy0JICAJdmFyIGV4cHJzID0g KExpc3Q8RXhwcmVzc2lvbj4pICQyOworKwkJdmFyIGV4cHJzID0gKExpc3Q8RXhwcmVzc2lvbj4p ICQyOworKwkJJCQgPSBuZXcgVHVwbGVEZWNvbnN0cnVjdCAoZXhwcnMsIChFeHByZXNzaW9uKSAk NSwgR2V0TG9jYXRpb24gKCQ0KSk7CisrCSAgfQorKwl8IE9QRU5fUEFSRU5TX0RFQ09OU1RSVUNU IGRlY29uc3RydWN0X2RlY2xhcmF0aW9uIENMT1NFX1BBUkVOUyBBU1NJR04gZXhwcmVzc2lvbgor KwkgIHsKKysJCWlmIChsYW5nX3ZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83KQorKwkJCUZl YXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgInR1cGxlcyIpOworKworKwkJ dmFyIGV4cHJzID0gKExpc3Q8QmxvY2tWYXJpYWJsZT4pICQyOworIAkJJCQgPSBuZXcgVHVwbGVE ZWNvbnN0cnVjdCAoZXhwcnMsIChFeHByZXNzaW9uKSAkNSwgR2V0TG9jYXRpb24gKCQ0KSk7Cisg CSAgfQorIAk7CisgCistZGVjb25zdHJ1Y3RfZXhwcnMKKytkZWNvbnN0cnVjdF9hc3NpZ25tZW50 CisgCTogZXhwcmVzc2lvbiBDT01NQSBleHByZXNzaW9uCisgCSAgeworIAkJJCQgPSBuZXcgTGlz dDxFeHByZXNzaW9uPiAoKSB7CitAQCAtNTA4NSw3ICs1MTM1LDcgQEAgZGVjb25zdHJ1Y3RfZXhw cnMKKyAJCQkoRXhwcmVzc2lvbikgJDMKKyAJICAJfTsKKyAJICB9CistCXwgZGVjb25zdHJ1Y3Rf ZXhwcnMgQ09NTUEgZXhwcmVzc2lvbgorKwl8IGRlY29uc3RydWN0X2Fzc2lnbm1lbnQgQ09NTUEg ZXhwcmVzc2lvbgorIAkgIHsKKyAJCXZhciBzcmMgPSAoTGlzdDxFeHByZXNzaW9uPikgJDE7Cisg CQlzcmMuQWRkICgoRXhwcmVzc2lvbikgJDMpOworQEAgLTUwOTMsNiArNTE0Myw0MyBAQCBkZWNv bnN0cnVjdF9leHBycworIAkgIH0KKyAJOworIAorK2RlY29uc3RydWN0X2RlY2xhcmF0aW9uCisr CTogdmFyaWFibGVfdHlwZSBpZGVudGlmaWVyX2luc2lkZV9ib2R5CisrCSAgeworKwkJdmFyIGx0 ID0gKExvY2F0ZWRUb2tlbikgJDI7CisrCQl2YXIgbGkgPSBuZXcgTG9jYWxWYXJpYWJsZSAoY3Vy cmVudF9ibG9jaywgbHQuVmFsdWUsIGx0LkxvY2F0aW9uKTsKKysJCWN1cnJlbnRfYmxvY2suQWRk TG9jYWxOYW1lIChsaSk7CisrCQkkJCA9IG5ldyBMaXN0PEJsb2NrVmFyaWFibGU+ICgyKSB7Cisr CQkJbmV3IEJsb2NrVmFyaWFibGUgKChGdWxsTmFtZWRFeHByZXNzaW9uKSAkMSwgbGkpCisrCQl9 OworKwkgIH0KKysJfCBkZWNvbnN0cnVjdF9kZWNsYXJhdGlvbiBDT01NQSB2YXJpYWJsZV90eXBl IGlkZW50aWZpZXJfaW5zaWRlX2JvZHkKKysJICB7CisrCQl2YXIgbHQgPSAoTG9jYXRlZFRva2Vu KSAkNDsKKysJCXZhciBsaSA9IG5ldyBMb2NhbFZhcmlhYmxlIChjdXJyZW50X2Jsb2NrLCBsdC5W YWx1ZSwgbHQuTG9jYXRpb24pOworKwkJY3VycmVudF9ibG9jay5BZGRMb2NhbE5hbWUgKGxpKTsK KysKKysJCXZhciBzcmMgPSAoTGlzdDxCbG9ja1ZhcmlhYmxlPikgJDE7CisrCQlzcmMuQWRkIChu ZXcgQmxvY2tWYXJpYWJsZSAoKEZ1bGxOYW1lZEV4cHJlc3Npb24pICQzLCBsaSkpOworKwkJJCQg PSBzcmM7CisrCSAgfQorKwl8IGRlY29uc3RydWN0X2RlY2xhcmF0aW9uIENPTU1BIGlkZW50aWZp ZXJfaW5zaWRlX2JvZHkKKysJICB7CisrCQl2YXIgbHQgPSAoTG9jYXRlZFRva2VuKSAkMzsKKysJ CXZhciBsaSA9IG5ldyBMb2NhbFZhcmlhYmxlIChjdXJyZW50X2Jsb2NrLCBsdC5WYWx1ZSwgbHQu TG9jYXRpb24pOworKworKwkJaWYgKGx0LlZhbHVlICE9ICJfIikgeworKwkJCXJlcG9ydC5FcnJv ciAoODE4NCwgbHQuTG9jYXRpb24sICJBIGRlY29uc3RydWN0aW9uIGNhbm5vdCBtaXggZGVjbGFy YXRpb25zIGFuZCBleHByZXNzaW9ucyBvbiB0aGUgbGVmdC1oYW5kLXNpZGUiKTsKKysJCX0gZWxz ZSB7CisrCQkJbGkuVHlwZSA9IEludGVybmFsVHlwZS5EaXNjYXJkOworKwkJfQorKworKwkJdmFy IHNyYyA9IChMaXN0PEJsb2NrVmFyaWFibGU+KSAkMTsKKysJCXNyYy5BZGQgKG5ldyBCbG9ja1Zh cmlhYmxlIChuZXcgVHlwZUV4cHJlc3Npb24gKGxpLlR5cGUsIGx0LkxvY2F0aW9uKSwgbGkpKTsK KysJCSQkID0gc3JjOworKwkgIH0KKysJOworKworIGxhbWJkYV9wYXJhbWV0ZXJfbGlzdAorIAk6 IGxhbWJkYV9wYXJhbWV0ZXIKKyAJICB7CitAQCAtNjAwOCw2ICs2MDk1LDI4IEBAIGJsb2NrX3Zh cmlhYmxlX2RlY2xhcmF0aW9uCisgCQkJbGJhZy5BZGRMb2NhdGlvbiAoJCQsIEdldExvY2F0aW9u ICgkNykpOworIAkJfQorIAkgIH0KKysJfCBSRUYgUkVBRE9OTFkgdmFyaWFibGVfdHlwZSBpZGVu dGlmaWVyX2luc2lkZV9ib2R5CisrCSAgeworKwkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdl VmVyc2lvbi5WXzdfMikgeworKwkJCUZlYXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24g KCQyKSwgInJlYWRvbmx5IHJlZmVyZW5jZXMiKTsKKysJCX0KKysKKysJCXZhciBsdCA9IChMb2Nh dGVkVG9rZW4pICQ0OworKwkJdmFyIGxpID0gbmV3IExvY2FsVmFyaWFibGUgKGN1cnJlbnRfYmxv Y2ssIGx0LlZhbHVlLCBMb2NhbFZhcmlhYmxlLkZsYWdzLkJ5UmVmIHwgTG9jYWxWYXJpYWJsZS5G bGFncy5SZWFkb25seU1hc2ssIGx0LkxvY2F0aW9uKTsKKysJCWN1cnJlbnRfYmxvY2suQWRkTG9j YWxOYW1lIChsaSk7CisrCQljdXJyZW50X3ZhcmlhYmxlID0gbmV3IEJsb2NrVmFyaWFibGUgKChG dWxsTmFtZWRFeHByZXNzaW9uKSAkMywgbGkpOworKwkgIH0KKysJICBvcHRfbG9jYWxfdmFyaWFi bGVfaW5pdGlhbGl6ZXIgb3B0X3ZhcmlhYmxlX2RlY2xhcmF0b3JzIFNFTUlDT0xPTgorKwkgIHsK KysJCSQkID0gY3VycmVudF92YXJpYWJsZTsKKysJCWN1cnJlbnRfdmFyaWFibGUgPSBudWxsOwor KwkJaWYgKCQ2ICE9IG51bGwpIHsKKysJCQlsYmFnLkFkZExvY2F0aW9uICgkJCwgUG9wTG9jYXRp b24gKCksIEdldExvY2F0aW9uICgkOCkpOworKwkJfSBlbHNlIHsKKysJCQlyZXBvcnQuRXJyb3Ig KDgxNzQsIEdldExvY2F0aW9uICgkMyksICJBIGRlY2xhcmF0aW9uIG9mIGEgYnktcmVmZXJlbmNl IHZhcmlhYmxlIG11c3QgaGF2ZSBhbiBpbml0aWFsaXplciIpOworKwkJCWxiYWcuQWRkTG9jYXRp b24gKCQkLCBHZXRMb2NhdGlvbiAoJDgpKTsKKysJCX0KKysJICB9CisgCTsKKyAKKyBvcHRfbG9j YWxfdmFyaWFibGVfaW5pdGlhbGl6ZXIKK0BAIC03NzMxLDcgKzc4NDAsNyBAQCB2b2lkIFdhcm5p bmdfRW1wdHlTdGF0ZW1lbnQgKExvY2F0aW9uIGxvYykKKyAKKyB2b2lkIEVycm9yX05hbWVkQXJn dW1lbnRFeHBlY3RlZCAoTmFtZWRBcmd1bWVudCBhKQorIHsKKy0JcmVwb3J0LkVycm9yICgxNzM4 LCBhLkxvY2F0aW9uLCAiTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVyIHRoZSBwb3Np dGlvbmFsIGFyZ3VtZW50cyIpOworKwlyZXBvcnQuRXJyb3IgKDE3MzgsIGEuTG9jYXRpb24sICJO YW1lZCBhcmd1bWVudHMgbXVzdCBhcHBlYXIgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRz IHdoZW4gdXNpbmcgbGFuZ3VhZ2UgdmVyc2lvbiBvbGRlciB0aGFuIDcuMiIpOworIH0KKyAKKyB2 b2lkIEVycm9yX01pc3NpbmdJbml0aWFsaXplciAoTG9jYXRpb24gbG9jKQorQEAgLTgyNTUsNiAr ODM2NCw3IEBAIHN0YXRpYyBzdHJpbmcgR2V0VG9rZW5OYW1lIChpbnQgdG9rZW4pCisgCWNhc2Ug VG9rZW4uQ09OVElOVUU6CisgCQlyZXR1cm4gImNvbnRpbnVlIjsKKyAJY2FzZSBUb2tlbi5ERUZB VUxUOgorKwljYXNlIFRva2VuLkRFRkFVTFRfVkFMVUU6CisgCQlyZXR1cm4gImRlZmF1bHQiOwor IAljYXNlIFRva2VuLkRFTEVHQVRFOgorIAkJcmV0dXJuICJkZWxlZ2F0ZSI7CitAQCAtODMzNCw2 ICs4NDQ0LDcgQEAgc3RhdGljIHN0cmluZyBHZXRUb2tlbk5hbWUgKGludCB0b2tlbikKKyAJY2Fz ZSBUb2tlbi5TVEFUSUM6CisgCQlyZXR1cm4gInN0YXRpYyI7CisgCWNhc2UgVG9rZW4uU1RSVUNU OgorKwljYXNlIFRva2VuLlJFRl9TVFJVQ1Q6CisgCQlyZXR1cm4gInN0cnVjdCI7CisgCWNhc2Ug VG9rZW4uU1dJVENIOgorIAkJcmV0dXJuICJzd2l0Y2giOworZGlmZiAtLWdpdCBhL21jcy9tY3Mv Y3MtdG9rZW5pemVyLmNzIGIvbWNzL21jcy9jcy10b2tlbml6ZXIuY3MKK2luZGV4IGQ2ZDAwZDMx NDAwLi4zN2VkYjVjMTIyNCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvY3MtdG9rZW5pemVyLmNzCisr KysgYi9tY3MvbWNzL2NzLXRva2VuaXplci5jcworQEAgLTcxNiw5ICs3MTYsMTggQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwCisgCQkJCQlyZXMgPSBUb2tlbi5FWFRFUk5fQUxJQVM7CisgCQkJCWJy ZWFrOworIAkJCWNhc2UgVG9rZW4uREVGQVVMVDoKKy0JCQkJaWYgKHBlZWtfdG9rZW4gKCkgPT0g VG9rZW4uQ09MT04pIHsKKy0JCQkJCXRva2VuICgpOworLQkJCQkJcmVzID0gVG9rZW4uREVGQVVM VF9DT0xPTjsKKysJCQkJc3dpdGNoIChwZWVrX3Rva2VuICgpKSB7CisrCQkJCWNhc2UgVG9rZW4u Q09MT046CisrCQkJCQkvLyBTcGVjaWFsIGNhc2U6IGZvbyA9PSBudWxsID8gZGVmYXVsdCA6IDE7 CisrCQkJCQlpZiAoY3VycmVudF90b2tlbiAhPSBUb2tlbi5JTlRFUlIpIHsKKysJCQkJCQl0b2tl biAoKTsKKysJCQkJCQlyZXMgPSBUb2tlbi5ERUZBVUxUX0NPTE9OOworKwkJCQkJfQorKwkJCQkJ YnJlYWs7CisrCQkJCWNhc2UgVG9rZW4uT1BFTl9QQVJFTlM6CisrCQkJCWNhc2UgVG9rZW4uT1BF Tl9QQVJFTlNfQ0FTVDoKKysJCQkJCXJlcyA9IFRva2VuLkRFRkFVTFRfVkFMVUU7CisrCQkJCQli cmVhazsKKyAJCQkJfQorIAkJCQlicmVhazsKKyAJCQljYXNlIFRva2VuLldIRU46CitAQCAtODEy LDEwICs4MjEsMTIgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCVB1c2hQb3NpdGlvbiAo KTsKKyAKKyAJCQkJbmV4dF90b2tlbiA9IHRva2VuICgpOworLQkJCQlib29sIG9rID0gKG5leHRf dG9rZW4gPT0gVG9rZW4uQ0xBU1MpIHx8CistCQkJCQkobmV4dF90b2tlbiA9PSBUb2tlbi5TVFJV Q1QpIHx8CistCQkJCQkobmV4dF90b2tlbiA9PSBUb2tlbi5JTlRFUkZBQ0UpIHx8CistCQkJCQko bmV4dF90b2tlbiA9PSBUb2tlbi5WT0lEKTsKKysJCQkJYm9vbCBvayA9CisrCQkJCQluZXh0X3Rv a2VuID09IFRva2VuLkNMQVNTIHx8CisrCQkJCQluZXh0X3Rva2VuID09IFRva2VuLlNUUlVDVCB8 fAorKwkJCQkJbmV4dF90b2tlbiA9PSBUb2tlbi5JTlRFUkZBQ0UgfHwKKysJCQkJCW5leHRfdG9r ZW4gPT0gVG9rZW4uVk9JRCB8fAorKwkJCQkJbmV4dF90b2tlbiA9PSBUb2tlbi5SRUZfU1RSVUNU OworIAorIAkJCQlQb3BQb3NpdGlvbiAoKTsKKyAKK0BAIC05MDMsNiArOTE0LDEyIEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCQkJYnJlYWs7CisgCQkJCX0KKyAKKysJCQkJYnJlYWs7Cisr CQkJY2FzZSBUb2tlbi5SRUY6CisrCQkJCWlmIChwZWVrX3Rva2VuICgpID09IFRva2VuLlNUUlVD VCkgeworKwkJCQkJdG9rZW4gKCk7CisrCQkJCQlyZXMgPSBUb2tlbi5SRUZfU1RSVUNUOworKwkJ CQl9CisgCQkJCWJyZWFrOworIAkJCX0KKyAKK0BAIC0xMDk0LDYgKzExMTEsNyBAQCBuYW1lc3Bh Y2UgTW9uby5DU2hhcnAKKyAJCQkJCQljYXNlIFRva2VuLlVOQ0hFQ0tFRDoKKyAJCQkJCQljYXNl IFRva2VuLlVOU0FGRToKKyAJCQkJCQljYXNlIFRva2VuLkRFRkFVTFQ6CisrCQkJCQkJY2FzZSBU b2tlbi5ERUZBVUxUX1ZBTFVFOgorIAkJCQkJCWNhc2UgVG9rZW4uQVdBSVQ6CisgCisgCQkJCQkJ Ly8KK0BAIC0xMjczLDE0ICsxMjkxLDIxIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJ CQlyZXR1cm4gZmFsc2U7CisgCQkJY2FzZSBUb2tlbi5PUEVOX1BBUkVOUzoKKy0JCQkJaWYgKCFw YXJzaW5nX2dlbmVyaWNfZGVjbGFyYXRpb24pCistCQkJCQlyZXR1cm4gZmFsc2U7CistCQkJCQor KwkJCQlpbnQgcGFyZW5zX2NvdW50ID0gMTsKKyAJCQkJd2hpbGUgKHRydWUpIHsKKyAJCQkJCXN3 aXRjaCAodG9rZW4gKCkpIHsKKyAJCQkJCWNhc2UgVG9rZW4uQ09NTUE6CisgCQkJCQkJLy8gdHVw bGUgZGVjbGFyYXRpb24gYWZ0ZXIgPAorLQkJCQkJCXJldHVybiB0cnVlOworKwkJCQkJCWlmIChw YXJlbnNfY291bnQgPT0gMSkKKysJCQkJCQkJcmV0dXJuIHRydWU7CisrCQkJCQkJY29udGludWU7 CisrCQkJCQljYXNlIFRva2VuLk9QRU5fUEFSRU5TOgorKwkJCQkJCSsrcGFyZW5zX2NvdW50Owor KwkJCQkJCWNvbnRpbnVlOworKwkJCQkJY2FzZSBUb2tlbi5DTE9TRV9QQVJFTlM6CisrCQkJCQkJ aWYgKC0tcGFyZW5zX2NvdW50IDw9IDApCisrCQkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCQlj b250aW51ZTsKKyAJCQkJCWNhc2UgVG9rZW4uT1BfR0VORVJJQ1NfR1Q6CisgCQkJCQljYXNlIFRv a2VuLkVPRjoKKyAJCQkJCQlyZXR1cm4gZmFsc2U7CitAQCAtMTM4MCw2ICsxNDA1LDcgQEAgbmFt ZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJY2FzZSBUb2tlbi5ORVc6CisgCQkJY2FzZSBUb2tlbi5J TlRFUlBPTEFURURfU1RSSU5HOgorIAkJCWNhc2UgVG9rZW4uVEhST1c6CisrCQkJY2FzZSBUb2tl bi5ERUZBVUxUX0NPTE9OOgorIAkJCQluZXh0X3Rva2VuID0gVG9rZW4uSU5URVJSOworIAkJCQli cmVhazsKKyAJCQkJCitAQCAtMzUwMiw2ICszNTI4LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJw CisgCQkJCQkJY2FzZSBUb2tlbi5TV0lUQ0g6CisgCQkJCQkJY2FzZSBUb2tlbi5VU0lORzoKKyAJ CQkJCQljYXNlIFRva2VuLkRFRkFVTFQ6CisrCQkJCQkJY2FzZSBUb2tlbi5ERUZBVUxUX1ZBTFVF OgorIAkJCQkJCWNhc2UgVG9rZW4uREVMRUdBVEU6CisgCQkJCQkJY2FzZSBUb2tlbi5PUF9HRU5F UklDU19HVDoKKyAJCQkJCQljYXNlIFRva2VuLlJFRlZBTFVFOgorQEAgLTM5NjMsMjYgKzM5OTAs MjkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQl7CisgCQkJaW50IGQ7CisgCistCQkJLy8g U2F2ZSBjdXJyZW50IHBvc2l0aW9uIGFuZCBwYXJzZSBuZXh0IHRva2VuLgorLQkJCVB1c2hQb3Np dGlvbiAoKTsKKy0JCQlpbnQgZ2VuZXJpY19kaW1lbnNpb24gPSAwOworLQkJCWlmIChwYXJzZV9s ZXNzX3RoYW4gKHJlZiBnZW5lcmljX2RpbWVuc2lvbikpIHsKKy0JCQkJaWYgKHBhcnNpbmdfZ2Vu ZXJpY19kZWNsYXJhdGlvbiAmJiAocGFyc2luZ19nZW5lcmljX2RlY2xhcmF0aW9uX2RvYyB8fCB0 b2tlbiAoKSAhPSBUb2tlbi5ET1QpKSB7CistCQkJCQlkID0gVG9rZW4uT1BfR0VORVJJQ1NfTFRf REVDTDsKKy0JCQkJfSBlbHNlIHsKKy0JCQkJCWlmIChnZW5lcmljX2RpbWVuc2lvbiA+IDApIHsK Ky0JCQkJCQl2YWwgPSBnZW5lcmljX2RpbWVuc2lvbjsKKy0JCQkJCQlEaXNjYXJkUG9zaXRpb24g KCk7CistCQkJCQkJcmV0dXJuIFRva2VuLkdFTkVSSUNfRElNRU5TSU9OOworLQkJCQkJfQorKwkJ CWlmIChjdXJyZW50X3Rva2VuICE9IFRva2VuLk9QRVJBVE9SKSB7CisrCQkJCS8vIFNhdmUgY3Vy cmVudCBwb3NpdGlvbiBhbmQgcGFyc2UgbmV4dCB0b2tlbi4KKysJCQkJUHVzaFBvc2l0aW9uICgp OworKwkJCQlpbnQgZ2VuZXJpY19kaW1lbnNpb24gPSAwOworKwkJCQlpZiAocGFyc2VfbGVzc190 aGFuIChyZWYgZ2VuZXJpY19kaW1lbnNpb24pKSB7CisrCQkJCQlpZiAocGFyc2luZ19nZW5lcmlj X2RlY2xhcmF0aW9uICYmIChwYXJzaW5nX2dlbmVyaWNfZGVjbGFyYXRpb25fZG9jIHx8IHRva2Vu ICgpICE9IFRva2VuLkRPVCkpIHsKKysJCQkJCQlkID0gVG9rZW4uT1BfR0VORVJJQ1NfTFRfREVD TDsKKysJCQkJCX0gZWxzZSB7CisrCQkJCQkJaWYgKGdlbmVyaWNfZGltZW5zaW9uID4gMCkgewor KwkJCQkJCQl2YWwgPSBnZW5lcmljX2RpbWVuc2lvbjsKKysJCQkJCQkJRGlzY2FyZFBvc2l0aW9u ICgpOworKwkJCQkJCQlyZXR1cm4gVG9rZW4uR0VORVJJQ19ESU1FTlNJT047CisrCQkJCQkJfQor IAorLQkJCQkJZCA9IFRva2VuLk9QX0dFTkVSSUNTX0xUOworKwkJCQkJCWQgPSBUb2tlbi5PUF9H RU5FUklDU19MVDsKKysJCQkJCX0KKysJCQkJCVBvcFBvc2l0aW9uICgpOworKwkJCQkJcmV0dXJu IGQ7CisgCQkJCX0KKysKKyAJCQkJUG9wUG9zaXRpb24gKCk7CistCQkJCXJldHVybiBkOworIAkJ CX0KKyAKKy0JCQlQb3BQb3NpdGlvbiAoKTsKKyAJCQlwYXJzaW5nX2dlbmVyaWNfbGVzc190aGFu ID0gMDsKKyAKKyAJCQlkID0gcGVla19jaGFyICgpOworZGlmZiAtLWdpdCBhL21jcy9tY3MvZGVs ZWdhdGUuY3MgYi9tY3MvbWNzL2RlbGVnYXRlLmNzCitpbmRleCA4MGViN2UyNjVmMS4uNTJjZWU4 ZjM0NTUgMTAwNjQ0CistLS0gYS9tY3MvbWNzL2RlbGVnYXRlLmNzCisrKysgYi9tY3MvbWNzL2Rl bGVnYXRlLmNzCitAQCAtMTg4LDggKzE4OCw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7Cisg CisgCQkJQ2hlY2tQcm90ZWN0ZWRNb2RpZmllciAoKTsKKyAKKy0JCQlpZiAoQ29tcGlsZXIuU2V0 dGluZ3MuU3RkTGliICYmIHJldF90eXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlKSB7CistCQkJCU1l dGhvZC5FcnJvcjE1OTkgKExvY2F0aW9uLCByZXRfdHlwZSwgUmVwb3J0KTsKKysJCQlpZiAocmV0 X3R5cGUuSXNTcGVjaWFsUnVudGltZVR5cGUgJiYgQ29tcGlsZXIuU2V0dGluZ3MuU3RkTGliKSB7 CisrCQkJCU1ldGhvZC5FcnJvcl9SZXR1cm5UeXBlQ2FudEJlUmVmQW55IChMb2NhdGlvbiwgcmV0 X3R5cGUsIFJlcG9ydCk7CisgCQkJCXJldHVybiBmYWxzZTsKKyAJCQl9CisgCitAQCAtMzM4LDYg KzMzOCw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQlNb2R1bGUuUHJlZGVmaW5l ZEF0dHJpYnV0ZXMuRHluYW1pYy5FbWl0QXR0cmlidXRlIChDcmVhdGVSZXR1cm5CdWlsZGVyICgp LkJ1aWxkZXIpOworIAkJCQl9IGVsc2UgaWYgKHJ0eXBlLkhhc0R5bmFtaWNFbGVtZW50KSB7Cisg CQkJCQlNb2R1bGUuUHJlZGVmaW5lZEF0dHJpYnV0ZXMuRHluYW1pYy5FbWl0QXR0cmlidXRlIChD cmVhdGVSZXR1cm5CdWlsZGVyICgpLkJ1aWxkZXIsIHJ0eXBlLCBMb2NhdGlvbik7CisrCQkJCX0g ZWxzZSBpZiAocnR5cGUgaXMgUmVhZE9ubHlSZWZlcmVuY2VDb250YWluZXIpIHsKKysJCQkJCU1v ZHVsZS5QcmVkZWZpbmVkQXR0cmlidXRlcy5Jc1JlYWRPbmx5LkVtaXRBdHRyaWJ1dGUgKENyZWF0 ZVJldHVybkJ1aWxkZXIgKCkuQnVpbGRlcik7CisgCQkJCX0KKyAKKyAJCQkJaWYgKHJ0eXBlLkhh c05hbWVkVHVwbGVFbGVtZW50KSB7CitAQCAtNjAzLDggKzYwNSwxNCBAQCBuYW1lc3BhY2UgTW9u by5DU2hhcnAgeworIAkJCX0KKyAKKyAJCQl2YXIgZXhwciA9IG1ldGhvZF9ncm91cC5JbnN0YW5j ZUV4cHJlc3Npb247CistCQkJaWYgKGV4cHIgIT0gbnVsbCAmJiAoZXhwci5UeXBlLklzR2VuZXJp Y1BhcmFtZXRlciB8fCAhVHlwZVNwZWMuSXNSZWZlcmVuY2VUeXBlIChleHByLlR5cGUpKSkKKysJ CQlpZiAoZXhwciAhPSBudWxsICYmIChleHByLlR5cGUuSXNHZW5lcmljUGFyYW1ldGVyIHx8ICFU eXBlU3BlYy5Jc1JlZmVyZW5jZVR5cGUgKGV4cHIuVHlwZSkpKSB7CisrCQkJCWlmIChleHByLlR5 cGUuSXNCeVJlZkxpa2UgfHwgZXhwci5UeXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlKSB7CisrCQkJ CQkvLyBDU0M6IFNob3VsZCBiZSBiZXR0ZXIgZXJyb3IgY29kZQorKwkJCQkJRXJyb3JfQ29udmVy c2lvbkZhaWxlZCAoZWMsIGRlbGVnYXRlX21ldGhvZCwgbnVsbCk7CisrCQkJCX0KKysKKyAJCQkJ bWV0aG9kX2dyb3VwLkluc3RhbmNlRXhwcmVzc2lvbiA9IG5ldyBCb3hlZENhc3QgKGV4cHIsIGVj LkJ1aWx0aW5UeXBlcy5PYmplY3QpOworKwkJCX0KKyAKKyAJCQllY2xhc3MgPSBFeHByQ2xhc3Mu VmFsdWU7CisgCQkJcmV0dXJuIHRoaXM7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9keW5hbWljLmNz IGIvbWNzL21jcy9keW5hbWljLmNzCitpbmRleCBmZDQ2NjJiMmZlZC4uZjgzMTRiMmYzY2QgMTAw NjQ0CistLS0gYS9tY3MvbWNzL2R5bmFtaWMuY3MKKysrKyBiL21jcy9tY3MvZHluYW1pYy5jcwor QEAgLTI3OSwxMSArMjc5LDE5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJcHJvdGVj dGVkIGJvb2wgRG9SZXNvbHZlQ29yZSAoUmVzb2x2ZUNvbnRleHQgcmMpCisgCQl7CisrCQkJaW50 IGkgPSAwOworIAkJCWZvcmVhY2ggKHZhciBhcmcgaW4gYXJndW1lbnRzKSB7CisgCQkJCWlmIChh cmcuVHlwZSA9PSBJbnRlcm5hbFR5cGUuVmFyT3V0VHlwZSkgeworIAkJCQkJLy8gU2hvdWxkIGJl IHNwZWNpYWwgZXJyb3IgbWVzc2FnZSBhYm91dCBkeW5hbWljIGRpc3BhdGNoCisgCQkJCQlyYy5S ZXBvcnQuRXJyb3IgKDgxOTcsIGFyZy5FeHByLkxvY2F0aW9uLCAiQ2Fubm90IGluZmVyIHRoZSB0 eXBlIG9mIGltcGxpY2l0bHktdHlwZWQgb3V0IHZhcmlhYmxlIGB7MH0nIiwgKChEZWNsYXJhdGlv bkV4cHJlc3Npb24pIGFyZy5FeHByKS5WYXJpYWJsZS5OYW1lKTsKKysJCQkJfSBlbHNlIGlmIChh cmcuVHlwZSA9PSBJbnRlcm5hbFR5cGUuRGVmYXVsdFR5cGUpIHsKKysJCQkJCXJjLlJlcG9ydC5F cnJvciAoODMxMSwgYXJnLkV4cHIuTG9jYXRpb24sICJDYW5ub3QgdXNlIGEgZGVmYXVsdCBsaXRl cmFsIGFzIGFuIGFyZ3VtZW50IHRvIGEgZHluYW1pY2FsbHkgZGlzcGF0Y2hlZCBvcGVyYXRpb24i KTsKKyAJCQkJfQorKworKwkJCQkvLyBGb3JjZWQgbGltaXRhdGlvbiBiZWNhdXNlIE1pY3Jvc29m dC5DU2hhcnAgbmVlZHMgdG8gY2F0Y2ggdXAKKysJCQkJaWYgKGkgPiAwICYmIGFyZ3VtZW50cyBb aSAtIDFdIGlzIE5hbWVkQXJndW1lbnQgJiYgIShhcmd1bWVudHMgW2ldIGlzIE5hbWVkQXJndW1l bnQpKQorKwkJCQkJcmMuUmVwb3J0LkVycm9yICg4MzI0LCBsb2MsICJOYW1lZCBhcmd1bWVudCBz cGVjaWZpY2F0aW9ucyBtdXN0IGFwcGVhciBhZnRlciBhbGwgZml4ZWQgYXJndW1lbnRzIGhhdmUg YmVlbiBzcGVjaWZpZWQgaW4gYSBkeW5hbWljIGludm9jYXRpb24iKTsKKysJCQkJKytpOworIAkJ CX0KKyAKKyAJCQlpZiAocmMuQ3VycmVudFR5cGVQYXJhbWV0ZXJzICE9IG51bGwgJiYgcmMuQ3Vy cmVudFR5cGVQYXJhbWV0ZXJzWzBdLklzTWV0aG9kVHlwZVBhcmFtZXRlcikKK2RpZmYgLS1naXQg YS9tY3MvbWNzL2Vjb3JlLmNzIGIvbWNzL21jcy9lY29yZS5jcworaW5kZXggMzRmZjlhMzBkYWIu LjIwZWU5ZTczYjE5IDEwMDY0NAorLS0tIGEvbWNzL21jcy9lY29yZS5jcworKysrIGIvbWNzL21j cy9lY29yZS5jcworQEAgLTI1NSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgewor IAorIAkJcHVibGljIHZvaWQgRXJyb3JfRXhwcmVzc2lvbk11c3RCZUNvbnN0YW50IChSZXNvbHZl Q29udGV4dCByYywgTG9jYXRpb24gbG9jLCBzdHJpbmcgZV9uYW1lKQorIAkJeworLQkJCXJjLlJl cG9ydC5FcnJvciAoMTMzLCBsb2MsICJUaGUgZXhwcmVzc2lvbiBiZWluZyBhc3NpZ25lZCB0byBg ezB9JyBtdXN0IGJlIGNvbnN0YW50IiwgZV9uYW1lKTsKKysJCQlyYy5SZXBvcnQuRXJyb3IgKDEz MywgbG9jLCAiVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYHswfScgbXVzdCBiZSBh IGNvbnN0YW50IG9yIGRlZmF1bHQgdmFsdWUiLCBlX25hbWUpOworIAkJfQorIAorIAkJcHVibGlj IHZvaWQgRXJyb3JfQ29uc3RhbnRDYW5CZUluaXRpYWxpemVkV2l0aE51bGxPbmx5IChSZXNvbHZl Q29udGV4dCByYywgVHlwZVNwZWMgdHlwZSwgTG9jYXRpb24gbG9jLCBzdHJpbmcgbmFtZSkKK0BA IC0yOTU3LDYgKzI5NTcsMTMgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJaWYgKChy ZXN0cmljdGlvbnMgJiBNZW1iZXJMb29rdXBSZXN0cmljdGlvbnMuTmFtZU9mRXhjbHVkZWQpID09 IDAgJiYgTmFtZSA9PSAibmFtZW9mIikKKyAJCQkJCXJldHVybiBuZXcgTmFtZU9mICh0aGlzKTsK KyAKKysJCQkJaWYgKChyZXN0cmljdGlvbnMgJiBNZW1iZXJMb29rdXBSZXN0cmljdGlvbnMuUmVh ZEFjY2VzcykgPT0gMCAmJiBOYW1lID09ICJfIikgeworKwkJCQkJaWYgKHJjLk1vZHVsZS5Db21w aWxlci5TZXR0aW5ncy5WZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykKKysJCQkJCQlyYy5S ZXBvcnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChyYy5Nb2R1bGUuQ29tcGlsZXIsIGxvYywgImRp c2NhcmRzIik7CisrCisrCQkJCQlyZXR1cm4gbmV3IERpc2NhcmQgKGxvYykuUmVzb2x2ZSAocmMp OworKwkJCQl9CisrCisgCQkJCWlmIChlcnJvck1vZGUpIHsKKyAJCQkJCWlmICh2YXJpYWJsZV9m b3VuZCkgeworIAkJCQkJCXJjLlJlcG9ydC5FcnJvciAoODQxLCBsb2MsICJBIGxvY2FsIHZhcmlh YmxlIGB7MH0nIGNhbm5vdCBiZSB1c2VkIGJlZm9yZSBpdCBpcyBkZWNsYXJlZCIsIE5hbWUpOwor QEAgLTQwMjksNiArNDAzNiwxMyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCXJldHVy biBNZXRob2RzLkZpcnN0ICgpLkdldFNpZ25hdHVyZUZvckVycm9yICgpOworIAkJfQorIAorKwkJ c3RhdGljIE1ldGhvZFNwZWMgQ2FuZGlkYXRlRGV2aXJ0dWFsaXphdGlvbiAoVHlwZVNwZWMgdHlw ZSwgTWV0aG9kU3BlYyBtZXRob2QpCisrCQl7CisrCQkJLy8gQXNzdW1lcyBubyBnZW5lcmljcyBn ZXQgaW52b2x2ZWQKKysJCQl2YXIgZmlsdGVyID0gbmV3IE1lbWJlckZpbHRlciAobWV0aG9kLk5h bWUsIG1ldGhvZC5Bcml0eSwgTWVtYmVyS2luZC5NZXRob2QsIG1ldGhvZC5QYXJhbWV0ZXJzLCBu dWxsKTsKKysJCQlyZXR1cm4gTWVtYmVyQ2FjaGUuRmluZE1lbWJlciAodHlwZSwgZmlsdGVyLCBC aW5kaW5nUmVzdHJpY3Rpb24uSW5zdGFuY2VPbmx5IHwgQmluZGluZ1Jlc3RyaWN0aW9uLk92ZXJy aWRlT25seSB8IEJpbmRpbmdSZXN0cmljdGlvbi5EZWNsYXJlZE9ubHkpIGFzIE1ldGhvZFNwZWM7 CisrCQl9CisrCisgCQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVzc2lvbiBDcmVhdGVFeHByZXNzaW9u VHJlZSAoUmVzb2x2ZUNvbnRleHQgZWMpCisgCQl7CisgCQkJaWYgKGJlc3RfY2FuZGlkYXRlID09 IG51bGwpIHsKK0BAIC00MTc3LDYgKzQxOTEsMjIgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsK KyAJCQkJCQl9CisgCisgCQkJCQkJSW5zdGFuY2VFeHByZXNzaW9uLlJlc29sdmUgKGVjLCBSZXNv bHZlRmxhZ3MuVmFyaWFibGVPclZhbHVlIHwgUmVzb2x2ZUZsYWdzLk1ldGhvZEdyb3VwIHwgUmVz b2x2ZUZsYWdzLlR5cGUpOworKworKwkJCQkJCXZhciBleHByX3R5cGUgPSBJbnN0YW5jZUV4cHJl c3Npb24uVHlwZTsKKysJCQkJCQlpZiAoKGV4cHJfdHlwZS5Jc0J5UmVmTGlrZSB8fCBleHByX3R5 cGUuSXNTcGVjaWFsUnVudGltZVR5cGUpICYmIGJlc3RfY2FuZGlkYXRlLkRlY2xhcmluZ1R5cGUg IT0gZXhwcl90eXBlKSB7CisrCQkJCQkJCU1ldGhvZFNwZWMgZGV2aXJ0ID0gbnVsbDsKKysJCQkJ CQkJaWYgKChiZXN0X2NhbmRpZGF0ZS5Nb2RpZmllcnMgJiAoTW9kaWZpZXJzLlZJUlRVQUwgfCBN b2RpZmllcnMuQUJTVFJBQ1QgfCBNb2RpZmllcnMuT1ZFUlJJREUpKSAhPSAwKSB7CisrCQkJCQkJ CQlkZXZpcnQgPSBDYW5kaWRhdGVEZXZpcnR1YWxpemF0aW9uIChleHByX3R5cGUsIGJlc3RfY2Fu ZGlkYXRlKTsKKysJCQkJCQkJfQorKworKwkJCQkJCQlpZiAoZGV2aXJ0ID09IG51bGwpIHsKKysJ CQkJCQkJCS8vIENTQzogU2hvdWxkIGJlIGJldHRlciBlcnJvciBtZXNzYWdlCisrCQkJCQkJCQll Yy5SZXBvcnQuRXJyb3IgKDI5LCBJbnN0YW5jZUV4cHJlc3Npb24uTG9jYXRpb24sICJDYW5ub3Qg aW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYHswfScgdG8gYHsxfSciLAorKwkJCQkJCQkJCQkJCSBJ bnN0YW5jZUV4cHJlc3Npb24uVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSwgYmVzdF9jYW5k aWRhdGUuRGVjbGFyaW5nVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisrCQkJCQkJCX0g ZWxzZSB7CisrCQkJCQkJCQliZXN0X2NhbmRpZGF0ZSA9IGRldmlydDsKKysJCQkJCQkJfQorKwkJ CQkJCX0KKyAJCQkJCX0KKyAJCQkJfQorIAorQEAgLTU0MTksNyArNTQ0OSw3IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycCB7CisgCQkJCX0KKyAKKyAJCQkJaWYgKGFyZ190eXBlICE9IHBhcmFtZXRl cikgeworLQkJCQkJaWYgKGFyZ190eXBlID09IEludGVybmFsVHlwZS5WYXJPdXRUeXBlKQorKwkJ CQkJaWYgKGFyZ190eXBlID09IEludGVybmFsVHlwZS5WYXJPdXRUeXBlIHx8IGFyZ190eXBlID09 IEludGVybmFsVHlwZS5EaXNjYXJkKQorIAkJCQkJCXJldHVybiAwOworIAorIAkJCQkJdmFyIHJl Zl9hcmdfdHlwZSA9IGFyZ190eXBlIGFzIFJlZmVyZW5jZUNvbnRhaW5lcjsKK0BAIC02MDI4LDYg KzYwNTgsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJCQljb250aW51ZTsKKyAJ CQkJCX0KKyAKKysJCQkJCWlmIChhcmdfdHlwZSA9PSBJbnRlcm5hbFR5cGUuRGlzY2FyZCkgewor KwkJCQkJCWEuRXhwci5UeXBlID0gcHQ7CisrCQkJCQkJY29udGludWU7CisrCQkJCQl9CisrCisg CQkJCQl2YXIgcmVmX2FyZ190eXBlID0gYXJnX3R5cGUgYXMgUmVmZXJlbmNlQ29udGFpbmVyOwor IAkJCQkJaWYgKHJlZl9hcmdfdHlwZSAhPSBudWxsKSB7CisgCQkJCQkJaWYgKHJlZl9hcmdfdHlw ZS5FbGVtZW50ICE9IHB0KQorQEAgLTYwNjEsOSArNjA5NiwxNSBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAgeworIAkJCQkJCWVsc2UKKyAJCQkJCQkJZWMuUmVwb3J0LlN5bWJvbFJlbGF0ZWRUb1By ZXZpb3VzRXJyb3IgKG1lbWJlcik7CisgCistCQkJCQkJZWMuUmVwb3J0LkVycm9yICgxNzQ0LCBu YS5Mb2NhdGlvbiwKKy0JCQkJCQkJIk5hbWVkIGFyZ3VtZW50IGB7MH0nIGNhbm5vdCBiZSB1c2Vk IGZvciBhIHBhcmFtZXRlciB3aGljaCBoYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZWQi LAorLQkJCQkJCQluYS5OYW1lKTsKKysJCQkJCQlpZiAobmFtZV9pbmRleCA+IGFfaWR4KSB7Cisr CQkJCQkJCWVjLlJlcG9ydC5FcnJvciAoODMyMywgbmEuTG9jYXRpb24sCisrCQkJCQkJCQkiTmFt ZWQgYXJndW1lbnQgYHswfScgaXMgdXNlZCBvdXQgb2YgcG9zaXRpb24gYnV0IGlzIGZvbGxvd2Vk IGJ5IHBvc2l0aW9uYWwgYXJndW1lbnQiLAorKwkJCQkJCQkJbmEuTmFtZSk7CisrCQkJCQkJfSBl bHNlIHsKKysJCQkJCQkJZWMuUmVwb3J0LkVycm9yICgxNzQ0LCBuYS5Mb2NhdGlvbiwKKysJCQkJ CQkJCSJOYW1lZCBhcmd1bWVudCBgezB9JyBjYW5ub3QgYmUgdXNlZCBmb3IgYSBwYXJhbWV0ZXIg d2hpY2ggaGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVkIiwKKysJCQkJCQkJCW5hLk5h bWUpOworKwkJCQkJCX0KKyAJCQkJCX0KKyAJCQkJfQorIAkJCQkKK0BAIC03MzUwLDYgKzczOTEs OSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWlmICghUmVzb2x2ZUdldHRlciAoZWMp KQorIAkJCQlyZXR1cm4gbnVsbDsKKyAKKysJCQlpZiAodHlwZS5LaW5kID09IE1lbWJlcktpbmQu QnlSZWYpCisrCQkJCXJldHVybiBCeVJlZkRlcmVmZXJlbmNlLkNyZWF0ZSAodGhpcykuUmVzb2x2 ZSAoZWMpOworKworIAkJCXJldHVybiB0aGlzOworIAkJfQorIAorQEAgLTczNTksMTIgKzc0MDMs MTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJRXJyb3JfTnVsbFByb3BhZ2F0aW5n TFZhbHVlIChyYyk7CisgCisgCQkJaWYgKHJpZ2h0X3NpZGUgPT0gRW1wdHlFeHByZXNzaW9uLk91 dEFjY2VzcykgeworLQkJCQlpZiAoYmVzdF9jYW5kaWRhdGU/Lk1lbWJlclR5cGUuS2luZCA9PSBN ZW1iZXJLaW5kLkJ5UmVmKSB7CistCQkJCQlpZiAoQXJndW1lbnRzPy5Db250YWluc0VtaXRXaXRo QXdhaXQgKCkgPT0gdHJ1ZSkgeworLQkJCQkJCXJjLlJlcG9ydC5FcnJvciAoODE3OCwgbG9jLCAi YGF3YWl0JyBjYW5ub3QgYmUgdXNlZCBpbiBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSBjYWxs IHRvIGB7MH0nIGJlY2F1c2UgaXQgcmV0dXJucyBieSByZWZlcmVuY2UiLAorLQkJCQkJCQlHZXRT aWduYXR1cmVGb3JFcnJvciAoKSk7CistCQkJCQl9CisrCQkJCWlmIChPdmVybG9hZFJlc29sdmUg KHJjLCBudWxsKSA9PSBudWxsKQorKwkJCQkJcmV0dXJuIG51bGw7CisgCisrCQkJCWlmIChiZXN0 X2NhbmRpZGF0ZT8uTWVtYmVyVHlwZS5LaW5kID09IE1lbWJlcktpbmQuQnlSZWYpIHsKKysJCQkJ CWdldHRlciA9IENhbmRpZGF0ZVRvQmFzZU92ZXJyaWRlIChyYywgYmVzdF9jYW5kaWRhdGUuR2V0 KTsKKyAJCQkJCXJldHVybiB0aGlzOworIAkJCQl9CisgCitAQCAtNzM5Niw3ICs3NDM5LDcgQEAg bmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAKKyAJCQkJaWYgKGJlc3RfY2FuZGlkYXRlLk1lbWJl clR5cGUuS2luZCA9PSBNZW1iZXJLaW5kLkJ5UmVmKSB7CisgCQkJCQlnZXR0ZXIgPSBDYW5kaWRh dGVUb0Jhc2VPdmVycmlkZSAocmMsIGJlc3RfY2FuZGlkYXRlLkdldCk7CistCQkJCQlyZXR1cm4g QnlSZWZEZXJlZmVyZW5jZS5DcmVhdGUodGhpcykuUmVzb2x2ZShyYyk7CisrCQkJCQlyZXR1cm4g QnlSZWZEZXJlZmVyZW5jZS5DcmVhdGUgKHRoaXMpLlJlc29sdmUgKHJjKTsKKyAJCQkJfQorIAor IAkJCQlyYy5SZXBvcnQuRXJyb3IgKDIwMCwgbG9jLCAiUHJvcGVydHkgb3IgaW5kZXhlciBgezB9 JyBjYW5ub3QgYmUgYXNzaWduZWQgdG8gKGl0IGlzIHJlYWQtb25seSkiLAorZGlmZiAtLWdpdCBh L21jcy9tY3MvZXZhbC5jcyBiL21jcy9tY3MvZXZhbC5jcworaW5kZXggNjBlMGM2ZDY0YTAuLjA3 NTY5N2JiMWRmIDEwMDY0NAorLS0tIGEvbWNzL21jcy9ldmFsLmNzCisrKysgYi9tY3MvbWNzL2V2 YWwuY3MKK0BAIC03ODgsNiArNzg4LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCXJl dHVybiBudWxsOworIAkJCX0KKyAKKysJCQltb2R1bGUuQ2xvc2VDb250YWluZXJFYXJseUZvclJl ZmxlY3Rpb25FbWl0ICgpOworIAkJCW1vZHVsZS5DbG9zZUNvbnRhaW5lciAoKTsKKyAJCQlpZiAo aG9zdCAhPSBudWxsKQorIAkJCQlob3N0LkNsb3NlQ29udGFpbmVyICgpOworZGlmZiAtLWdpdCBh L21jcy9tY3MvZXhwcmVzc2lvbi5jcyBiL21jcy9tY3MvZXhwcmVzc2lvbi5jcworaW5kZXggNzMy ZWUzZWU5MzQuLjUxOGNjYzhlZjQzIDEwMDY0NAorLS0tIGEvbWNzL21jcy9leHByZXNzaW9uLmNz CisrKysgYi9tY3MvbWNzL2V4cHJlc3Npb24uY3MKK0BAIC0xMjIwLDYgKzEyMjAsNyBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJZXhwciA9IGV4cHIuUmVzb2x2ZUxWYWx1ZSAoZWMsIGV4 cHIpOworIAkJCX0gZWxzZSB7CisgCQkJCWVjLlJlcG9ydC5FcnJvciAoMTA1OSwgbG9jLCAiVGhl IG9wZXJhbmQgb2YgYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBvcGVyYXRvciBtdXN0IGJlIGEg dmFyaWFibGUsIHByb3BlcnR5IG9yIGluZGV4ZXIiKTsKKysJCQkJcmV0dXJuIG51bGw7CisgCQkJ fQorIAorIAkJCS8vCitAQCAtMTQ3Nyw2ICsxNDc4LDExIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJCQlyZXR1cm4gbnVsbDsKKyAJCQl9CisgCisrCQkJaWYgKGV4cHIuVHlwZSA9PSBJbnRl cm5hbFR5cGUuRGVmYXVsdFR5cGUpIHsKKysJCQkJRXJyb3JfT3BlcmF0b3JDYW5ub3RCZUFwcGxp ZWQgKHJjLCBsb2MsIE9wZXJhdG9yTmFtZSwgZXhwci5UeXBlKTsKKysJCQkJcmV0dXJuIG51bGw7 CisrCQkJfQorKworIAkJCXJldHVybiB0aGlzOworIAkJfQorIAorQEAgLTQzMDQsOSArNDMxMCwz MiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJQ2hlY2tPdXRPZlJhbmdlQ29tcGFyaXNv biAoZWMsIHJjLCBsZWZ0LlR5cGUpOworIAkJCX0KKyAKKy0JCQlpZiAobGVmdC5UeXBlLkJ1aWx0 aW5UeXBlID09IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLkR5bmFtaWMgfHwgcmlnaHQuVHlwZS5CdWls dGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5EeW5hbWljKQorKwkJCXZhciBsdHlwZSA9 IGxlZnQuVHlwZTsKKysJCQl2YXIgcnR5cGUgPSByaWdodC5UeXBlOworKwkJCWlmIChsdHlwZS5C dWlsdGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5EeW5hbWljIHx8IHJ0eXBlLkJ1aWx0 aW5UeXBlID09IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLkR5bmFtaWMpCisgCQkJCXJldHVybiBEb1Jl c29sdmVEeW5hbWljIChlYyk7CisgCisrCQkJLy8KKysJCQkvLyBPbmx5IGRlZmF1bHQgd2l0aCA9 PSBhbmQgIT0gaXMgZXhwbGljaXRseSBhbGxvd2VkCisrCQkJLy8KKysJCQlpZiAobHR5cGUgPT0g SW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBlIHx8IHJ0eXBlID09IEludGVybmFsVHlwZS5EZWZhdWx0 VHlwZSkgeworKwkJCQlpZiAoKE9wZXIgJiBPcGVyYXRvci5FcXVhbGl0eU1hc2spID09IDApIHsK KysJCQkJCWVjLlJlcG9ydC5FcnJvciAoODMxMCwgbG9jLCAiT3BlcmF0b3IgYHswfScgY2Fubm90 IGJlIGFwcGxpZWQgdG8gb3BlcmFuZCBgZGVmYXVsdCciLCBPcGVyTmFtZSAoT3BlcikpOworKwkJ CQkJcmV0dXJuIG51bGw7CisrCQkJCX0KKysKKysJCQkJaWYgKGx0eXBlID09IHJ0eXBlKSB7Cisr CQkJCQllYy5SZXBvcnQuRXJyb3IgKDgzMTUsIGxvYywgIk9wZXJhdG9yIGB7MH0nIGlzIGFtYmln dW91cyBvbiBvcGVyYW5kcyBgZGVmYXVsdCcgYW5kIGBkZWZhdWx0JyIsIE9wZXJOYW1lIChPcGVy KSk7CisrCQkJCQlyZXR1cm4gbnVsbDsKKysJCQkJfQorKworKwkJCQlpZiAocnR5cGUgPT0gSW50 ZXJuYWxUeXBlLkRlZmF1bHRUeXBlKSB7CisrCQkJCQlyaWdodCA9IG5ldyBEZWZhdWx0VmFsdWVF eHByZXNzaW9uIChuZXcgVHlwZUV4cHJlc3Npb24gKGx0eXBlLCByaWdodC5Mb2NhdGlvbiksIHJp Z2h0LkxvY2F0aW9uKS5SZXNvbHZlIChlYyk7CisrCQkJCX0gZWxzZSB7CisrCQkJCQlsZWZ0ID0g bmV3IERlZmF1bHRWYWx1ZUV4cHJlc3Npb24gKG5ldyBUeXBlRXhwcmVzc2lvbiAocnR5cGUsIGxl ZnQuTG9jYXRpb24pLCBsZWZ0LkxvY2F0aW9uKS5SZXNvbHZlIChlYyk7CisrCQkJCX0KKysJCQl9 CisrCisgCQkJcmV0dXJuIERvUmVzb2x2ZUNvcmUgKGVjLCBsZWZ0LCByaWdodCk7CisgCQl9Cisg CitAQCAtNjc0NCwxMCArNjc3MywxNCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCWVj LlJlcG9ydC5FcnJvciAoMTc2NCwgbG9jLAorIAkJCQkJCSJDYW5ub3QgdXNlIGZpeGVkIHZhcmlh YmxlIGB7MH0nIGluc2lkZSBhbiBhbm9ueW1vdXMgbWV0aG9kLCBsYW1iZGEgZXhwcmVzc2lvbiBv ciBxdWVyeSBleHByZXNzaW9uIiwKKyAJCQkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7Cist CQkJCX0gZWxzZSBpZiAobG9jYWxfaW5mby5Jc0J5UmVmKSB7CistCQkJCQllYy5SZXBvcnQuRXJy b3IgKDgxNzUsIGxvYywKKy0JCQkJCQkiQ2Fubm90IHVzZSBieS1yZWZlcmVuY2UgdmFyaWFibGUg YHswfScgaW5zaWRlIGFuIGFub255bW91cyBtZXRob2QsIGxhbWJkYSBleHByZXNzaW9uLCBvciBx dWVyeSBleHByZXNzaW9uIiwKKy0JCQkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisrCQkJ CX0gZWxzZSBpZiAobG9jYWxfaW5mby5Jc0J5UmVmIHx8IGxvY2FsX2luZm8uVHlwZS5Jc0J5UmVm TGlrZSkgeworKwkJCQkJaWYgKGVjLkN1cnJlbnRBbm9ueW1vdXNNZXRob2QgaXMgU3RhdGVNYWNo aW5lSW5pdGlhbGl6ZXIpIHsKKysJCQkJCQkvLyBJdCdzIHJlcG9ydGVkIGxhdGVyIGFzIDQwMTIv NDAxMworKwkJCQkJfSBlbHNlIHsKKysJCQkJCQllYy5SZXBvcnQuRXJyb3IgKDgxNzUsIGxvYywK KysJCQkJCQkJIkNhbm5vdCB1c2UgYnktcmVmZXJlbmNlIHZhcmlhYmxlIGB7MH0nIGluc2lkZSBh biBhbm9ueW1vdXMgbWV0aG9kLCBsYW1iZGEgZXhwcmVzc2lvbiwgb3IgcXVlcnkgZXhwcmVzc2lv biIsCisrCQkJCQkJCUdldFNpZ25hdHVyZUZvckVycm9yICgpKTsKKysJCQkJCX0KKyAJCQkJfQor IAorIAkJCQlpZiAoZWMuSXNWYXJpYWJsZUNhcHR1cmluZ1JlcXVpcmVkKSB7CitAQCAtNjc4Myw3 ICs2ODE2LDkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCWxvY2FsX2luZm8uU2V0SXNV c2VkICgpOworIAorIAkJCWlmIChsb2NhbF9pbmZvLklzUmVhZG9ubHkgJiYgIWVjLkhhc0FueSAo UmVzb2x2ZUNvbnRleHQuT3B0aW9ucy5GaWVsZEluaXRpYWxpemVyU2NvcGUgfCBSZXNvbHZlQ29u dGV4dC5PcHRpb25zLlVzaW5nSW5pdGlhbGl6ZXJTY29wZSkpIHsKKy0JCQkJaWYgKHJocyA9PSBF bXB0eUV4cHJlc3Npb24uTFZhbHVlTWVtYmVyQWNjZXNzKSB7CisrCQkJCWlmIChsb2NhbF9pbmZv LklzQnlSZWYpIHsKKysJCQkJCS8vIE9LIGJlY2F1c2UgaXQgY2Fubm90IGJlIHJlYXNzaWduZWQK KysJCQkJfSBlbHNlIGlmIChyaHMgPT0gRW1wdHlFeHByZXNzaW9uLkxWYWx1ZU1lbWJlckFjY2Vz cykgeworIAkJCQkJLy8gQ1MxNjU0IGFscmVhZHkgcmVwb3J0ZWQKKyAJCQkJfSBlbHNlIHsKKyAJ CQkJCWludCBjb2RlOworQEAgLTcxNzUsOCArNzIxMCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJeworIAkJCXZhciBzbiA9IGV4cHIgYXMgU2ltcGxlTmFtZTsKKyAJCQlpZiAoc24gIT0g bnVsbCAmJiBzbi5OYW1lID09ICJ2YXIiICYmIHNuLkFyaXR5ID09IDAgJiYgYXJndW1lbnRzPy5D b3VudCA+IDEpIHsKKy0JCQkJdmFyIHRhcmdldHMgPSBuZXcgTGlzdDxFeHByZXNzaW9uPiAoYXJn dW1lbnRzLkNvdW50KTsKKy0JCQkJdmFyIHZhcmlhYmxlcyA9IG5ldyBMaXN0PExvY2FsVmFyaWFi bGU+IChhcmd1bWVudHMuQ291bnQpOworKwkJCQl2YXIgdmFyaWFibGVzID0gbmV3IExpc3Q8Qmxv Y2tWYXJpYWJsZT4gKGFyZ3VtZW50cy5Db3VudCk7CisgCQkJCWZvcmVhY2ggKHZhciBhcmcgaW4g YXJndW1lbnRzKSB7CisgCQkJCQl2YXIgYXJnX3NuID0gYXJnLkV4cHIgYXMgU2ltcGxlTmFtZTsK KyAJCQkJCWlmIChhcmdfc24gPT0gbnVsbCB8fCBhcmdfc24uQXJpdHkgIT0gMCkgeworQEAgLTcx ODYsMTIgKzcyMjAsMTAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJCQl2YXIgbHYg PSBuZXcgTG9jYWxWYXJpYWJsZSAocmMuQ3VycmVudEJsb2NrLCBhcmdfc24uTmFtZSwgYXJnLkV4 cHIuTG9jYXRpb24pOworIAkJCQkJcmMuQ3VycmVudEJsb2NrLkFkZExvY2FsTmFtZSAobHYpOwor LQkJCQkJdmFyaWFibGVzLkFkZCAobHYpOworLQorLQkJCQkJdGFyZ2V0cy5BZGQgKG5ldyBMb2Nh bFZhcmlhYmxlUmVmZXJlbmNlIChsdiwgYXJnX3NuLkxvY2F0aW9uKSk7CisrCQkJCQl2YXJpYWJs ZXMuQWRkIChuZXcgQmxvY2tWYXJpYWJsZSAobmV3IFZhckV4cHIgKGx2LkxvY2F0aW9uKSwgbHYp KTsKKyAJCQkJfQorIAorLQkJCQl2YXIgcmVzID0gbmV3IFR1cGxlRGVjb25zdHJ1Y3QgKHRhcmdl dHMsIHZhcmlhYmxlcywgcmlnaHRfc2lkZSwgbG9jKTsKKysJCQkJdmFyIHJlcyA9IG5ldyBUdXBs ZURlY29uc3RydWN0ICh2YXJpYWJsZXMsIHJpZ2h0X3NpZGUsIGxvYyk7CisgCQkJCXJldHVybiBy ZXMuUmVzb2x2ZSAocmMpOworIAkJCX0KKyAKK0BAIC03MzA2LDE1ICs3MzM4LDggQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwCisgCQkJCisgCQkJZWNsYXNzID0gRXhwckNsYXNzLlZhbHVlOworIAor LQkJCWlmICh0eXBlLktpbmQgPT0gTWVtYmVyS2luZC5CeVJlZikgeworLQkJCQlpZiAocmhzID09 IG51bGwgJiYgYXJndW1lbnRzPy5Db250YWluc0VtaXRXaXRoQXdhaXQgKCkgPT0gdHJ1ZSkgewor LQkJCQkJZWMuUmVwb3J0LkVycm9yICg4MTc4LCBsb2MsICJgYXdhaXQnIGNhbm5vdCBiZSB1c2Vk IGluIGFuIGV4cHJlc3Npb24gY29udGFpbmluZyBhIGNhbGwgdG8gYHswfScgYmVjYXVzZSBpdCBy ZXR1cm5zIGJ5IHJlZmVyZW5jZSIsCistCQkJCQkJR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOwor LQkJCQl9CistCistCQkJCWlmIChyaHMgIT0gRW1wdHlFeHByZXNzaW9uLk91dEFjY2VzcykKKy0J CQkJCXJldHVybiBCeVJlZkRlcmVmZXJlbmNlLkNyZWF0ZSAodGhpcykuUmVzb2x2ZSAoZWMpOwor LQkJCX0KKysJCQlpZiAodHlwZS5LaW5kID09IE1lbWJlcktpbmQuQnlSZWYgJiYgcmhzICE9IEVt cHR5RXhwcmVzc2lvbi5PdXRBY2Nlc3MpCisrCQkJCXJldHVybiBCeVJlZkRlcmVmZXJlbmNlLkNy ZWF0ZSAodGhpcykuUmVzb2x2ZSAoZWMpOworIAorIAkJCXJldHVybiB0aGlzOworIAkJfQorQEAg LTkwMzQsNyArOTA1OSw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWlmIChlY2xhc3Mg PT0gRXhwckNsYXNzLlVucmVzb2x2ZWQpCisgCQkJCVJlc29sdmVCYXNlIChlYyk7CisgCistCQkJ aWYgKHR5cGUuSXNDbGFzcyB8fCB0eXBlLklzUmVhZE9ubHkpIHsKKysJCQlpZiAodHlwZS5Jc0Ns YXNzIHx8ICh0eXBlLklzUmVhZE9ubHkgJiYgIWVjLkhhc1NldCAoUmVzb2x2ZUNvbnRleHQuT3B0 aW9ucy5Db25zdHJ1Y3RvclNjb3BlKSkpIHsKKyAJCQkJaWYgKHJpZ2h0X3NpZGUgPT0gRW1wdHlF eHByZXNzaW9uLlVuYXJ5QWRkcmVzcykKKyAJCQkJCWVjLlJlcG9ydC5FcnJvciAoNDU5LCBsb2Ms ICJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBgdGhpcycgYmVjYXVzZSBpdCBpcyByZWFkLW9u bHkiKTsKKyAJCQkJZWxzZSBpZiAocmlnaHRfc2lkZSA9PSBFbXB0eUV4cHJlc3Npb24uT3V0QWNj ZXNzKQorQEAgLTk5MDgsNyArOTkzMyw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJcHVi bGljIHN0YXRpYyBib29sIElzVmFsaWREb3RFeHByZXNzaW9uIChUeXBlU3BlYyB0eXBlKQorIAkJ eworIAkJCWNvbnN0IE1lbWJlcktpbmQgZG90X2tpbmRzID0gTWVtYmVyS2luZC5DbGFzcyB8IE1l bWJlcktpbmQuU3RydWN0IHwgTWVtYmVyS2luZC5EZWxlZ2F0ZSB8IE1lbWJlcktpbmQuRW51bSB8 CistCQkJCU1lbWJlcktpbmQuSW50ZXJmYWNlIHwgTWVtYmVyS2luZC5UeXBlUGFyYW1ldGVyIHwg TWVtYmVyS2luZC5BcnJheVR5cGU7CisrCQkJCU1lbWJlcktpbmQuSW50ZXJmYWNlIHwgTWVtYmVy S2luZC5UeXBlUGFyYW1ldGVyIHwgTWVtYmVyS2luZC5BcnJheVR5cGUgIHwgTWVtYmVyS2luZC5C eVJlZjsKKyAKKyAJCQlyZXR1cm4gKHR5cGUuS2luZCAmIGRvdF9raW5kcykgIT0gMCB8fCB0eXBl LkJ1aWx0aW5UeXBlID09IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLkR5bmFtaWM7CisgCQl9CitAQCAt MTE2MTQsNyArMTE2MzksNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQl9CisgCisgCQkJ aWYgKHNpbmdsZV9zcGVjICE9IG51bGwgJiYgc2luZ2xlX3NwZWMuRGltZW5zaW9uID4gMCkgewor LQkJCQlpZiAodHlwZS5Jc1NwZWNpYWxSdW50aW1lVHlwZSkgeworKwkJCQlpZiAodHlwZS5Jc1Nw ZWNpYWxSdW50aW1lVHlwZSB8fCB0eXBlLklzQnlSZWZMaWtlKSB7CisgCQkJCQllYy5Nb2R1bGUu Q29tcGlsZXIuUmVwb3J0LkVycm9yICg2MTEsIGxvYywgIkFycmF5IGVsZW1lbnRzIGNhbm5vdCBi ZSBvZiB0eXBlIGB7MH0nIiwgdHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisgCQkJCX0g ZWxzZSBpZiAodHlwZS5Jc1N0YXRpYykgeworIAkJCQkJZWMuTW9kdWxlLkNvbXBpbGVyLlJlcG9y dC5TeW1ib2xSZWxhdGVkVG9QcmV2aW91c0Vycm9yICh0eXBlKTsKK0BAIC0xMTY1MCw2ICsxMTY3 NSwxMyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJY2xhc3MgUmVmZXJlbmNlVHlwZUV4cHIg OiBUeXBlRXhwcgorIAl7CisgCQlGdWxsTmFtZWRFeHByZXNzaW9uIGVsZW1lbnQ7CisrCQlyZWFk b25seSBib29sIHJlYWRPbmx5OworKworKwkJcHVibGljIFJlZmVyZW5jZVR5cGVFeHByIChGdWxs TmFtZWRFeHByZXNzaW9uIGVsZW1lbnQsIGJvb2wgcmVhZE9ubHksIExvY2F0aW9uIGxvYykKKysJ CQk6IHRoaXMgKGVsZW1lbnQsIGxvYykKKysJCXsKKysJCQl0aGlzLnJlYWRPbmx5ID0gcmVhZE9u bHk7CisrCQl9CisgCisgCQlwdWJsaWMgUmVmZXJlbmNlVHlwZUV4cHIgKEZ1bGxOYW1lZEV4cHJl c3Npb24gZWxlbWVudCwgTG9jYXRpb24gbG9jKQorIAkJeworQEAgLTExNjY0LDE0ICsxMTY5Niwx NyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJcmV0dXJuIG51bGw7CisgCisgCQkJZWNs YXNzID0gRXhwckNsYXNzLlR5cGU7CistCQkJdHlwZSA9IFJlZmVyZW5jZUNvbnRhaW5lci5NYWtl VHlwZSAobWMuTW9kdWxlLCB0eXBlKTsKKysJCQl0eXBlID0gcmVhZE9ubHkgPworKwkJCQlSZWFk T25seVJlZmVyZW5jZUNvbnRhaW5lci5NYWtlVHlwZSAobWMuTW9kdWxlLCB0eXBlKSA6CisrCQkJ CVJlZmVyZW5jZUNvbnRhaW5lci5NYWtlVHlwZSAobWMuTW9kdWxlLCB0eXBlKTsKKyAKKyAJCQly ZXR1cm4gdHlwZTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSBzdHJpbmcgR2V0U2lnbmF0 dXJlRm9yRXJyb3IgKCkKKyAJCXsKKy0JCQlyZXR1cm4gInJlZiAiICsgZWxlbWVudC5HZXRTaWdu YXR1cmVGb3JFcnJvciAoKTsKKysJCQl2YXIgcHJlZml4ID0gcmVhZE9ubHkgPyAicmVmICIgOiAi cmVmIHJlYWRvbmx5ICI7CisrCQkJcmV0dXJuIHByZWZpeCArIGVsZW1lbnQuR2V0U2lnbmF0dXJl Rm9yRXJyb3IgKCk7CisgCQl9CisgCisgCQlwdWJsaWMgb3ZlcnJpZGUgb2JqZWN0IEFjY2VwdCAo U3RydWN0dXJhbFZpc2l0b3IgdmlzaXRvcikKK0BAIC0xMTc4Myw2ICsxMTgxOCw3IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJVHlwZVNwZWMgb3R5cGU7CisgCQlFeHByZXNzaW9uIHRleHBy OworIAkJRXhwcmVzc2lvbiBjb3VudDsKKysJCU1ldGhvZFNwZWMgY3RvcjsKKyAJCQorIAkJcHVi bGljIFN0YWNrQWxsb2MgKEV4cHJlc3Npb24gdHlwZSwgRXhwcmVzc2lvbiBjb3VudCwgTG9jYXRp b24gbCkKKyAJCXsKK0BAIC0xMTg1Miw2ICsxMTg4OCwxMSBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAKKyAJCQlpbnQgc2l6ZSA9IEJ1aWx0aW5UeXBlU3BlYy5HZXRTaXplIChvdHlwZSk7CisgCisg CQkJY291bnQuRW1pdCAoZWMpOworKwkJCWJvb2wgY291bnRfb25fc3RhY2sgPSBmYWxzZTsKKysJ CQlpZiAoY3RvciAhPSBudWxsICYmICFFeHByZXNzaW9uQW5hbHl6ZXIuSXNJbmV4cGVuc2l2ZUxv YWQgKGNvdW50KSkgeworKwkJCQllYy5FbWl0IChPcENvZGVzLkR1cCk7CisrCQkJCWNvdW50X29u X3N0YWNrID0gdHJ1ZTsKKysJCQl9CisgCisgCQkJaWYgKHNpemUgPT0gMCkKKyAJCQkJZWMuRW1p dCAoT3BDb2Rlcy5TaXplb2YsIG90eXBlKTsKK0BAIC0xMTg2MCw2ICsxMTkwMSwxOSBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJCQllYy5FbWl0IChPcENvZGVzLk11bF9PdmZfVW4pOwor IAkJCWVjLkVtaXQgKE9wQ29kZXMuTG9jYWxsb2MpOworKworKwkJCWlmIChjdG9yICE9IG51bGwp IHsKKysJCQkJaWYgKCFjb3VudF9vbl9zdGFjaykKKysJCQkJCWNvdW50LkVtaXQgKGVjKTsKKysJ CQkJZWMuRW1pdCAoT3BDb2Rlcy5OZXdvYmosIGN0b3IpOworKwkJCX0KKysJCX0KKysKKysJCXB1 YmxpYyBvdmVycmlkZSB2b2lkIEVycm9yX1ZhbHVlQ2Fubm90QmVDb252ZXJ0ZWQgKFJlc29sdmVD b250ZXh0IHJjLCBUeXBlU3BlYyB0YXJnZXQsIGJvb2wgZXhwbCkKKysJCXsKKysJCQl2YXIgZXR5 cGUgPSAoKFBvaW50ZXJDb250YWluZXIpdHlwZSkuRWxlbWVudDsKKysJCQlyYy5SZXBvcnQuRXJy b3IgKDgzNDYsIGxvYywgIkNhbm5vdCBjb252ZXJ0IGEgc3RhY2thbGxvYyBleHByZXNzaW9uIG9m IHR5cGUgYHswfScgdG8gdHlwZSBgezF9JyIsCisrCQkJICAgICAgICAgICAgICAgICBldHlwZS5H ZXRTaWduYXR1cmVGb3JFcnJvciAoKSwgdGFyZ2V0LkdldFNpZ25hdHVyZUZvckVycm9yICgpKTsK KyAJCX0KKyAKKyAJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIENsb25lVG8gKENsb25lQ29udGV4 dCBjbG9uZWN0eCwgRXhwcmVzc2lvbiB0KQorQEAgLTExODczLDYgKzExOTI3LDE2IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJeworIAkJCXJldHVybiB2aXNpdG9yLlZpc2l0ICh0aGlzKTsK KyAJCX0KKysKKysJCXB1YmxpYyBib29sIFJlc29sdmVTcGFuQ29udmVyc2lvbiAoUmVzb2x2ZUNv bnRleHQgcmMsIFR5cGVTcGVjIHNwYW5UeXBlKQorKwkJeworKwkJCWN0b3IgPSBNZW1iZXJDYWNo ZS5GaW5kTWVtYmVyIChzcGFuVHlwZSwgTWVtYmVyRmlsdGVyLkNvbnN0cnVjdG9yIChQYXJhbWV0 ZXJzQ29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoUG9pbnRlckNvbnRhaW5lci5NYWtlVHlw ZSAocmMuTW9kdWxlLCByYy5Nb2R1bGUuQ29tcGlsZXIuQnVpbHRpblR5cGVzLlZvaWQpLCByYy5N b2R1bGUuQ29tcGlsZXIuQnVpbHRpblR5cGVzLkludCkpLCBCaW5kaW5nUmVzdHJpY3Rpb24uRGVj bGFyZWRPbmx5KSBhcyBNZXRob2RTcGVjOworKwkJCWlmIChjdG9yID09IG51bGwpCisrCQkJCXJl dHVybiBmYWxzZTsKKysJCQkKKysJCQl0aGlzLnR5cGUgPSBzcGFuVHlwZTsKKysJCQlyZXR1cm4g dHJ1ZTsKKysJCX0KKyAJfQorIAorIAkvLworQEAgLTEzMDkzLDYgKzEzMTU3LDEyIEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCWV4cHIuRW1pdCAoZWMpOworIAkJfQorIAorKwkJcHVibGlj IG92ZXJyaWRlIEV4cHJlc3Npb24gQ3JlYXRlRXhwcmVzc2lvblRyZWUgKFJlc29sdmVDb250ZXh0 IHJjKQorKwkJeworKwkJCXJjLlJlcG9ydC5FcnJvciAoODE1MywgTG9jYXRpb24sICJBbiBleHBy ZXNzaW9uIHRyZWUgbGFtYmRhIGNhbm5vdCBjb250YWluIGEgY2FsbCB0byBhIG1ldGhvZCwgcHJv cGVydHksIG9yIGluZGV4ZXIgdGhhdCByZXR1cm5zIGJ5IHJlZmVyZW5jZSIpOworKwkJCXJldHVy biBudWxsOworKwkJfQorKworIAkJcHVibGljIHZvaWQgRW1pdCAoRW1pdENvbnRleHQgZWMsIGJv b2wgbGVhdmVfY29weSkKKyAJCXsKKyAJCQlFbWl0IChlYyk7CitAQCAtMTMxMzMsNiArMTMyMDMs MTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVz c2lvbiBEb1Jlc29sdmVMVmFsdWUgKFJlc29sdmVDb250ZXh0IHJjLCBFeHByZXNzaW9uIHJpZ2h0 X3NpZGUpCisgCQl7CisrCQkJaWYgKGV4cHIuQ29udGFpbnNFbWl0V2l0aEF3YWl0ICgpKSB7Cisr CQkJCXJjLlJlcG9ydC5FcnJvciAoODE3OCwgbG9jLCAiYGF3YWl0JyBjYW5ub3QgYmUgdXNlZCBp biBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSBjYWxsIHRvIGB7MH0nIGJlY2F1c2UgaXQgcmV0 dXJucyBieSByZWZlcmVuY2UiLAorKwkJCQkJZXhwci5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7 CisrCQkJfQorKworIAkJCXJldHVybiBEb1Jlc29sdmUgKHJjKTsKKyAJCX0KKyAKK0BAIC0xMzE0 OSw0ICsxMzIyNCw5OCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQlyZXR1cm4gdmlzaXRv ci5WaXNpdCAodGhpcyk7CisgCQl9CisgCX0KKysKKysJY2xhc3MgRGVmYXVsdExpdGVyYWxFeHBy ZXNzaW9uIDogRXhwcmVzc2lvbgorKwl7CisrCQlwdWJsaWMgRGVmYXVsdExpdGVyYWxFeHByZXNz aW9uIChMb2NhdGlvbiBsb2MpCisrCQl7CisrCQkJdGhpcy5sb2MgPSBsb2M7CisrCQl9CisrCisr CQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVzc2lvbiBDcmVhdGVFeHByZXNzaW9uVHJlZSAoUmVzb2x2 ZUNvbnRleHQgZWMpCisrCQl7CisrCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9u ICgpOworKwkJfQorKworKwkJcHJvdGVjdGVkIG92ZXJyaWRlIEV4cHJlc3Npb24gRG9SZXNvbHZl IChSZXNvbHZlQ29udGV4dCByYykKKysJCXsKKysJCQl0eXBlID0gSW50ZXJuYWxUeXBlLkRlZmF1 bHRUeXBlOworKwkJCWVjbGFzcyA9IEV4cHJDbGFzcy5WYWx1ZTsKKysJCQlyZXR1cm4gdGhpczsK KysJCX0KKysKKysJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXQgKEVtaXRDb250ZXh0IGVjKQor KwkJeworKwkJCXRocm93IG5ldyBOb3RTdXBwb3J0ZWRFeGNlcHRpb24gKCk7CisrCQl9CisrCX0K KysKKysJY2xhc3MgRGlzY2FyZCA6IEV4cHJlc3Npb24sIElBc3NpZ25NZXRob2QsIElNZW1vcnlM b2NhdGlvbgorKwl7CisrCQlwdWJsaWMgRGlzY2FyZCAoTG9jYXRpb24gbG9jKQorKwkJeworKwkJ CXRoaXMubG9jID0gbG9jOworKwkJfQorKworKwkJcHVibGljIG92ZXJyaWRlIEV4cHJlc3Npb24g Q3JlYXRlRXhwcmVzc2lvblRyZWUgKFJlc29sdmVDb250ZXh0IHJjKQorKwkJeworKwkJCXJjLlJl cG9ydC5FcnJvciAoODIwNywgbG9jLCAiQW4gZXhwcmVzc2lvbiB0cmVlIGNhbm5vdCBjb250YWlu IGEgZGlzY2FyZCIpOworKwkJCXJldHVybiBudWxsOworKwkJfQorKworKwkJcHJvdGVjdGVkIG92 ZXJyaWRlIEV4cHJlc3Npb24gRG9SZXNvbHZlIChSZXNvbHZlQ29udGV4dCByYykKKysJCXsKKysJ CQl0eXBlID0gSW50ZXJuYWxUeXBlLkRpc2NhcmQ7CisrCQkJZWNsYXNzID0gRXhwckNsYXNzLlZh cmlhYmxlOworKwkJCXJldHVybiB0aGlzOworKwkJfQorKworKwkJcHVibGljIG92ZXJyaWRlIEV4 cHJlc3Npb24gRG9SZXNvbHZlTFZhbHVlIChSZXNvbHZlQ29udGV4dCByYywgRXhwcmVzc2lvbiBy aWdodF9zaWRlKQorKwkJeworKwkJCWlmIChyaWdodF9zaWRlLlR5cGUgPT0gSW50ZXJuYWxUeXBl LkRlZmF1bHRUeXBlKSB7CisrCQkJCXJjLlJlcG9ydC5FcnJvciAoODE4MywgbG9jLCAiQ2Fubm90 IGluZmVyIHRoZSB0eXBlIG9mIGltcGxpY2l0bHktdHlwZWQgZGlzY2FyZCIpOworKwkJCQl0eXBl ID0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZTsKKysJCQkJcmV0dXJuIHRoaXM7CisrCQkJfQorKwor KwkJCWlmIChyaWdodF9zaWRlLlR5cGUuS2luZCA9PSBNZW1iZXJLaW5kLlZvaWQpIHsKKysJCQkJ cmMuUmVwb3J0LkVycm9yICg4MjA5LCBsb2MsICJDYW5ub3QgYXNzaWduIHZvaWQgdG8gYSBkaXNj YXJkIik7CisrCQkJCXR5cGUgPSBJbnRlcm5hbFR5cGUuRXJyb3JUeXBlOworKwkJCQlyZXR1cm4g dGhpczsKKysJCQl9CisrCisrCQkJaWYgKHJpZ2h0X3NpZGUgIT0gRW1wdHlFeHByZXNzaW9uLk91 dEFjY2VzcykgeworKwkJCQl0eXBlID0gcmlnaHRfc2lkZS5UeXBlOworKwkJCX0KKysKKysJCQly ZXR1cm4gdGhpczsKKysJCX0KKysKKysJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXQgKEVtaXRD b250ZXh0IGVjKQorKwkJeworKwkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAo KTsKKysJCX0KKysKKysJCXB1YmxpYyB2b2lkIEVtaXQgKEVtaXRDb250ZXh0IGVjLCBib29sIGxl YXZlX2NvcHkpCisrCQl7CisrCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgp OworKwkJfQorKworKwkJcHVibGljIHZvaWQgRW1pdEFzc2lnbiAoRW1pdENvbnRleHQgZWMsIEV4 cHJlc3Npb24gc291cmNlLCBib29sIGxlYXZlX2NvcHksIGJvb2wgaXNDb21wb3VuZCkKKysJCXsK KysJCQlpZiAobGVhdmVfY29weSkKKysJCQkJc291cmNlLkVtaXQgKGVjKTsKKysJCQllbHNlCisr CQkJCXNvdXJjZS5FbWl0U2lkZUVmZmVjdCAoZWMpOworKwkJfQorKworKwkJcHVibGljIHZvaWQg QWRkcmVzc09mIChFbWl0Q29udGV4dCBlYywgQWRkcmVzc09wIG1vZGUpCisrCQl7CisrCQkJdmFy IHRlbXAgPSBlYy5HZXRUZW1wb3JhcnlMb2NhbCAodHlwZSk7CisrCQkJZWMuRW1pdCAoT3BDb2Rl cy5MZGxvY2EsIHRlbXApOworKworKwkJCS8vIFRPRE86IFNob3VsZCBmcmVlIGl0IG9uIG5leHQg c3RhdGVtZW50IGJ1dCBkb24ndCBoYXZlIG1lY2hhbmlzbSBmb3IgdGhhdCB5ZXQKKysJCQkvLyBl Yy5GcmVlVGVtcG9yYXJ5TG9jYWwgKHRlbXAsIHR5cGUpOworKwkJfQorKwl9CisgfQorZGlmZiAt LWdpdCBhL21jcy9tY3MvZ2VuZXJpYy5jcyBiL21jcy9tY3MvZ2VuZXJpYy5jcworaW5kZXggNjI1 Y2QwYzc3M2YuLmVjMjk2NWRmNjNiIDEwMDY0NAorLS0tIGEvbWNzL21jcy9nZW5lcmljLmNzCisr KysgYi9tY3MvbWNzL2dlbmVyaWMuY3MKK0BAIC02OTMsNiArNjkzLDExIEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycCB7CisgCQkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAoKSwgbWMuR2V0U2lnbmF0 dXJlRm9yRXJyb3IgKCksIGlucHV0X3ZhcmlhbmNlLCBndHlwZV92YXJpYW5jZSwgcGFyYW1ldGVy cyk7CisgCQl9CisgCisrCQlwdWJsaWMgVHlwZVNwZWMgR2V0QXN5bmNNZXRob2RCdWlsZGVyICgp CisrCQl7CisrCQkJcmV0dXJuIG51bGw7CisrCQl9CisrCisgCQlwdWJsaWMgVHlwZVNwZWMgR2V0 QXR0cmlidXRlQ29DbGFzcyAoKQorIAkJeworIAkJCXJldHVybiBudWxsOworQEAgLTIyOTIsNyAr MjI5Nyw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQlvayA9IGZhbHNlOworIAkJ CQl9CisgCistCQkJCWlmICh0ZS5Jc1BvaW50ZXIgfHwgdGUuSXNTcGVjaWFsUnVudGltZVR5cGUp IHsKKysJCQkJaWYgKHRlLklzUG9pbnRlciB8fCB0ZS5Jc1NwZWNpYWxSdW50aW1lVHlwZSB8fCB0 ZS5Jc0J5UmVmTGlrZSkgeworIAkJCQkJZWMuTW9kdWxlLkNvbXBpbGVyLlJlcG9ydC5FcnJvciAo MzA2LCBhcmdzW2ldLkxvY2F0aW9uLAorIAkJCQkJCSJUaGUgdHlwZSBgezB9JyBtYXkgbm90IGJl IHVzZWQgYXMgYSB0eXBlIGFyZ3VtZW50IiwKKyAJCQkJCQl0ZS5HZXRTaWduYXR1cmVGb3JFcnJv ciAoKSk7CitAQCAtMzEwMiw3ICszMTA3LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJ CQkvLworIAkJCS8vIFNvbWUgdHlwZXMgY2Fubm90IGJlIHVzZWQgYXMgdHlwZSBhcmd1bWVudHMK KyAJCQkvLworLQkJCWlmICgoYm91bmQuVHlwZS5LaW5kID09IE1lbWJlcktpbmQuVm9pZCAmJiAh dm9pZEFsbG93ZWQpIHx8IGJvdW5kLlR5cGUuSXNQb2ludGVyIHx8IGJvdW5kLlR5cGUuSXNTcGVj aWFsUnVudGltZVR5cGUgfHwKKysJCQlpZiAoKGJvdW5kLlR5cGUuS2luZCA9PSBNZW1iZXJLaW5k LlZvaWQgJiYgIXZvaWRBbGxvd2VkKSB8fCBib3VuZC5UeXBlLklzUG9pbnRlciB8fCBib3VuZC5U eXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlIHx8IGJvdW5kLlR5cGUuSXNCeVJlZkxpa2UgfHwKKyAJ CQkgICAgYm91bmQuVHlwZSA9PSBJbnRlcm5hbFR5cGUuTWV0aG9kR3JvdXAgfHwgYm91bmQuVHlw ZSA9PSBJbnRlcm5hbFR5cGUuQW5vbnltb3VzTWV0aG9kIHx8IGJvdW5kLlR5cGUgPT0gSW50ZXJu YWxUeXBlLlZhck91dFR5cGUgfHwKKyAJCQkgICAgYm91bmQuVHlwZSA9PSBJbnRlcm5hbFR5cGUu VGhyb3dFeHByKQorIAkJCQlyZXR1cm47CitAQCAtMzExMCw2ICszMTE1LDkgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwIHsKKyAJCQlpZiAoYm91bmQuVHlwZS5Jc1R1cGxlVHlwZSAmJiBUdXBsZUxp dGVyYWwuQ29udGFpbnNOb1R5cGVFbGVtZW50IChib3VuZC5UeXBlKSkKKyAJCQkJcmV0dXJuOwor IAorKwkJCWlmIChib3VuZC5UeXBlID09IEludGVybmFsVHlwZS5EZWZhdWx0VHlwZSkKKysJCQkJ cmV0dXJuOworKworIAkJCXZhciBhID0gYm91bmRzIFtpbmRleF07CisgCQkJaWYgKGEgPT0gbnVs bCkgeworIAkJCQlhID0gbmV3IExpc3Q8Qm91bmRJbmZvPiAoMik7CitkaWZmIC0tZ2l0IGEvbWNz L21jcy9pbXBvcnQuY3MgYi9tY3MvbWNzL2ltcG9ydC5jcworaW5kZXggMWNkZGY3YzAxZjQuLmY3 YzRmZDc0YjA4IDEwMDY0NAorLS0tIGEvbWNzL21jcy9pbXBvcnQuY3MKKysrKyBiL21jcy9tY3Mv aW1wb3J0LmNzCitAQCAtOTc1LDYgKzk3NSwxMCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJ CQkJCQltb2QgfD0gTW9kaWZpZXJzLlJFQURPTkxZOworIAkJCQkJfQorIAorKwkJCQkJaWYgKEhh c0F0dHJpYnV0ZSAoQ3VzdG9tQXR0cmlidXRlRGF0YS5HZXRDdXN0b21BdHRyaWJ1dGVzICh0eXBl KSwgIklzQnlSZWZMaWtlQXR0cmlidXRlIiwgQ29tcGlsZXJTZXJ2aWNlc05hbWVzcGFjZSkpIHsK KysJCQkJCQltb2QgfD0gTW9kaWZpZXJzLlJFRjsKKysJCQkJCX0KKysKKyAJCQkJCWJyZWFrOwor IAkJCQl9CisgCQkJfQorQEAgLTE0MDEsNiArMTQwNSw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJCXB1YmxpYyBzdHJpbmcgRGVmYXVsdEluZGV4ZXJOYW1lOworIAkJCXB1YmxpYyBib29s PyBDTFNBdHRyaWJ1dGVWYWx1ZTsKKyAJCQlwdWJsaWMgVHlwZVNwZWMgQ29DbGFzczsKKysJCQlw dWJsaWMgVHlwZVNwZWMgQXN5bmNNZXRob2RCdWlsZGVyOworIAorIAkJCXN0YXRpYyBib29sIEhh c01pc3NpbmdUeXBlIChDb25zdHJ1Y3RvckluZm8gY3RvcikKKyAJCQl7CitAQCAtMTUyMiw2ICsx NTI3LDIwIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQkJCQliYWcuQ29DbGFzcyA9IGlt cG9ydGVyLkltcG9ydFR5cGUgKChNZXRhVHlwZSkgYS5Db25zdHJ1Y3RvckFyZ3VtZW50c1swXS5W YWx1ZSk7CisgCQkJCQkJCWNvbnRpbnVlOworIAkJCQkJCX0KKysKKysJCQkJCQlpZiAobmFtZSA9 PSAiQXN5bmNNZXRob2RCdWlsZGVyQXR0cmlidXRlIikgeworKwkJCQkJCQlpZiAoZHQuTmFtZXNw YWNlICE9ICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIikKKysJCQkJCQkJCWNvbnRp bnVlOworKworKwkJCQkJCQlpZiAoSGFzTWlzc2luZ1R5cGUgKGEuQ29uc3RydWN0b3IpKQorKwkJ CQkJCQkJY29udGludWU7CisrCisrCQkJCQkJCWlmIChiYWcgPT0gbnVsbCkKKysJCQkJCQkJCWJh ZyA9IG5ldyBBdHRyaWJ1dGVzQmFnICgpOworKworKwkJCQkJCQliYWcuQXN5bmNNZXRob2RCdWls ZGVyID0gaW1wb3J0ZXIuSW1wb3J0VHlwZSAoKE1ldGFUeXBlKWEuQ29uc3RydWN0b3JBcmd1bWVu dHMgWzBdLlZhbHVlKTsKKysJCQkJCQkJY29udGludWU7CisrCQkJCQkJfQorIAkJCQkJfQorIAkJ CQl9CisgCitAQCAtMjEyOSw2ICsyMTQ4LDE0IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJ CX0KKyAJCX0KKyAKKysJCXB1YmxpYyBUeXBlU3BlYyBHZXRBc3luY01ldGhvZEJ1aWxkZXIgKCkK KysJCXsKKysJCQlpZiAoY2F0dHJzID09IG51bGwpCisrCQkJCVJlYWRBdHRyaWJ1dGVzICgpOwor KworKwkJCXJldHVybiBjYXR0cnMuQXN5bmNNZXRob2RCdWlsZGVyOworKwkJfQorKworIAkJcHVi bGljIFR5cGVTcGVjIEdldEF0dHJpYnV0ZUNvQ2xhc3MgKCkKKyAJCXsKKyAJCQlpZiAoY2F0dHJz ID09IG51bGwpCitAQCAtMjQ0NSw2ICsyNDcyLDExIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAorIAkJI2VuZHJlZ2lvbgorIAorKwkJcHVibGljIFR5cGVTcGVjIEdldEFzeW5jTWV0aG9kQnVp bGRlciAoKQorKwkJeworKwkJCXJldHVybiBudWxsOworKwkJfQorKworIAkJcHVibGljIFR5cGVT cGVjIEdldEF0dHJpYnV0ZUNvQ2xhc3MgKCkKKyAJCXsKKyAJCQlyZXR1cm4gbnVsbDsKK2RpZmYg LS1naXQgYS9tY3MvbWNzL21lbWJlcmNhY2hlLmNzIGIvbWNzL21jcy9tZW1iZXJjYWNoZS5jcwor aW5kZXggZWViZjcxYjg0NGIuLmNhMDVkMmQ3YWZjIDEwMDY0NAorLS0tIGEvbWNzL21jcy9tZW1i ZXJjYWNoZS5jcworKysrIGIvbWNzL21jcy9tZW1iZXJjYWNoZS5jcworQEAgLTMwOSw3ICszMDks NiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkvLworIAkJCQlpZiAoIUJ1aWx0aW5U eXBlU3BlYy5Jc1ByaW1pdGl2ZVR5cGUgKGR0KSB8fCBkdC5CdWlsdGluVHlwZSA9PSBCdWlsdGlu VHlwZVNwZWMuVHlwZS5DaGFyKSB7CisgCQkJCQlzd2l0Y2ggKGR0LkJ1aWx0aW5UeXBlKSB7Cist CQkJCQljYXNlIEJ1aWx0aW5UeXBlU3BlYy5UeXBlLlN0cmluZzoKKyAJCQkJCWNhc2UgQnVpbHRp blR5cGVTcGVjLlR5cGUuRGVsZWdhdGU6CisgCQkJCQljYXNlIEJ1aWx0aW5UeXBlU3BlYy5UeXBl Lk11bHRpY2FzdERlbGVnYXRlOgorIAkJCQkJCWJyZWFrOworQEAgLTMxNyw2ICszMTYsOSBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJCWlmIChuYW1lID09IE9wZXJhdG9yLkdldE1l dGFkYXRhTmFtZSAoT3BlcmF0b3IuT3BUeXBlLkltcGxpY2l0KSB8fCBuYW1lID09IE9wZXJhdG9y LkdldE1ldGFkYXRhTmFtZSAoT3BlcmF0b3IuT3BUeXBlLkV4cGxpY2l0KSkgeworIAkJCQkJCQlz dGF0ZSB8PSBTdGF0ZUZsYWdzLkhhc0NvbnZlcnNpb25PcGVyYXRvcjsKKyAJCQkJCQl9IGVsc2Ug eworKwkJCQkJCQlpZiAoZHQuQnVpbHRpblR5cGUgPT0gQnVpbHRpblR5cGVTcGVjLlR5cGUuU3Ry aW5nKQorKwkJCQkJCQkJYnJlYWs7CisrCisgCQkJCQkJCXN0YXRlIHw9IFN0YXRlRmxhZ3MuSGFz VXNlck9wZXJhdG9yOworIAkJCQkJCX0KKyAKK2RpZmYgLS1naXQgYS9tY3MvbWNzL21ldGhvZC5j cyBiL21jcy9tY3MvbWV0aG9kLmNzCitpbmRleCBjY2Q0ODk4ZTkxYy4uMWZjYTEwZGQ2ZDAgMTAw NjQ0CistLS0gYS9tY3MvbWNzL21ldGhvZC5jcworKysrIGIvbWNzL21jcy9tZXRob2QuY3MKK0BA IC03MDEsNiArNzAxLDEwIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJaWYgKE1lbWJl clR5cGUuSXNTdGF0aWMpIHsKKyAJCQkJRXJyb3JfU3RhdGljUmV0dXJuVHlwZSAoKTsKKyAJCQl9 CisrCisrCQkJaWYgKE1lbWJlclR5cGUuSXNTcGVjaWFsUnVudGltZVR5cGUgJiYgQ29tcGlsZXIu U2V0dGluZ3MuU3RkTGliKSB7CisrCQkJCUVycm9yX1JldHVyblR5cGVDYW50QmVSZWZBbnkgKExv Y2F0aW9uLCBSZXR1cm5UeXBlLCBSZXBvcnQpOworKwkJCX0KKyAJCX0KKyAKKyAJCXB1YmxpYyBv dmVycmlkZSB2b2lkIEVtaXQgKCkKK0BAIC03MTYsNiArNzIwLDggQEAgbmFtZXNwYWNlIE1vbm8u Q1NoYXJwIHsKKyAJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLkR5bmFtaWMuRW1pdEF0 dHJpYnV0ZSAoQ3JlYXRlUmV0dXJuQnVpbGRlciAoKS5CdWlsZGVyKTsKKyAJCQl9IGVsc2UgaWYg KFJldHVyblR5cGUuSGFzRHluYW1pY0VsZW1lbnQpIHsKKyAJCQkJTW9kdWxlLlByZWRlZmluZWRB dHRyaWJ1dGVzLkR5bmFtaWMuRW1pdEF0dHJpYnV0ZSAoQ3JlYXRlUmV0dXJuQnVpbGRlciAoKS5C dWlsZGVyLCBSZXR1cm5UeXBlLCBMb2NhdGlvbik7CisrCQkJfSBlbHNlIGlmIChSZXR1cm5UeXBl IGlzIFJlYWRPbmx5UmVmZXJlbmNlQ29udGFpbmVyKSB7CisrCQkJCU1vZHVsZS5QcmVkZWZpbmVk QXR0cmlidXRlcy5Jc1JlYWRPbmx5LkVtaXRBdHRyaWJ1dGUgKENyZWF0ZVJldHVybkJ1aWxkZXIg KCkuQnVpbGRlcik7CisgCQkJfQorIAorIAkJCWlmIChSZXR1cm5UeXBlLkhhc05hbWVkVHVwbGVF bGVtZW50KSB7CitAQCAtNzY0LDYgKzc3MCwxMSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgewor IAkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisgCQl9CisgCisrCQlwdWJsaWMgc3RhdGlj IHZvaWQgRXJyb3JfUmV0dXJuVHlwZUNhbnRCZVJlZkFueSAoTG9jYXRpb24gbG9jLCBUeXBlU3Bl YyB0LCBSZXBvcnQgUmVwb3J0KQorKwkJeworKwkJCVJlcG9ydC5FcnJvciAoMTU5OSwgbG9jLCAi VGhlIHJldHVybiB0eXBlIG9mIGB7MH0nIGlzIG5vdCBhbGxvd2VkIiwgdC5HZXRTaWduYXR1cmVG b3JFcnJvciAoKSk7CisrCQl9CisrCisgCQlwdWJsaWMgYm9vbCBJc1BhcnRpYWxEZWZpbml0aW9u IHsKKyAJCQlnZXQgeworIAkJCQlyZXR1cm4gKE1vZEZsYWdzICYgTW9kaWZpZXJzLlBBUlRJQUwp ICE9IDAgJiYgQmxvY2sgPT0gbnVsbDsKK0BAIC0xMjMxLDExICsxMjQyLDYgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwIHsKKyAJCQkJCSJJbnRyb2R1Y2luZyBgRmluYWxpemUnIG1ldGhvZCBjYW4g aW50ZXJmZXJlIHdpdGggZGVzdHJ1Y3RvciBpbnZvY2F0aW9uLiBEaWQgeW91IGludGVuZCB0byBk ZWNsYXJlIGEgZGVzdHJ1Y3Rvcj8iKTsKKyAJCQl9CisgCistCQkJaWYgKENvbXBpbGVyLlNldHRp bmdzLlN0ZExpYiAmJiBSZXR1cm5UeXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlKSB7CistCQkJCUVy cm9yMTU5OSAoTG9jYXRpb24sIFJldHVyblR5cGUsIFJlcG9ydCk7CistCQkJCXJldHVybiBmYWxz ZTsKKy0JCQl9CistCisgCQkJaWYgKEN1cnJlbnRUeXBlUGFyYW1ldGVycyA9PSBudWxsKSB7Cisg CQkJCWlmIChiYXNlX21ldGhvZCAhPSBudWxsICYmICFJc0V4cGxpY2l0SW1wbCkgeworIAkJCQkJ aWYgKHBhcmFtZXRlcnMuQ291bnQgPT0gMSAmJiBQYXJhbWV0ZXJUeXBlc1swXS5CdWlsdGluVHlw ZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5PYmplY3QgJiYgTWVtYmVyTmFtZS5OYW1lID09ICJF cXVhbHMiKQorQEAgLTEyNjEsOCArMTI2Nyw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7Cisg CQkJCWlmICgoTW9kRmxhZ3MgJiBNb2RpZmllcnMuQVNZTkMpICE9IDApIHsKKyAJCQkJCWlmIChS ZXR1cm5UeXBlLktpbmQgIT0gTWVtYmVyS2luZC5Wb2lkICYmCisgCQkJCQkJUmV0dXJuVHlwZSAh PSBNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLlRhc2suVHlwZVNwZWMgJiYKKy0JCQkJCQkhUmV0dXJu VHlwZS5Jc0dlbmVyaWNUYXNrKSB7CistCQkJCQkJUmVwb3J0LkVycm9yICgxOTgzLCBMb2NhdGlv biwgIlRoZSByZXR1cm4gdHlwZSBvZiBhbiBhc3luYyBtZXRob2QgbXVzdCBiZSB2b2lkLCBUYXNr LCBvciBUYXNrPFQ+Iik7CisrCQkJCQkJIVJldHVyblR5cGUuSXNHZW5lcmljVGFzayAmJgorKwkJ CQkJICAgICFSZXR1cm5UeXBlLklzQ3VzdG9tVGFza1R5cGUgKCkpIHsKKysJCQkJCQlSZXBvcnQu RXJyb3IgKDE5ODMsIExvY2F0aW9uLCAiVGhlIHJldHVybiB0eXBlIG9mIGFuIGFzeW5jIG1ldGhv ZCBtdXN0IGJlIHZvaWQgb3IgdGFzayB0eXBlIik7CisgCQkJCQl9CisgCisgCQkJCQlibG9jayA9 IChUb3BsZXZlbEJsb2NrKSBibG9jay5Db252ZXJ0VG9Bc3luY1Rhc2sgKHRoaXMsIFBhcmVudC5Q YXJ0aWFsQ29udGFpbmVyLCBwYXJhbWV0ZXJzLCBSZXR1cm5UeXBlLCBudWxsLCBMb2NhdGlvbik7 CitAQCAtMTM5NiwxMSArMTQwMyw2IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJcmV0 dXJuIGJhc2UuRW5hYmxlT3ZlcmxvYWRDaGVja3MgKG92ZXJsb2FkKTsKKyAJCX0KKyAKKy0JCXB1 YmxpYyBzdGF0aWMgdm9pZCBFcnJvcjE1OTkgKExvY2F0aW9uIGxvYywgVHlwZVNwZWMgdCwgUmVw b3J0IFJlcG9ydCkKKy0JCXsKKy0JCQlSZXBvcnQuRXJyb3IgKDE1OTksIGxvYywgIk1ldGhvZCBv ciBkZWxlZ2F0ZSBjYW5ub3QgcmV0dXJuIHR5cGUgYHswfSciLCB0LkdldFNpZ25hdHVyZUZvckVy cm9yICgpKTsKKy0JCX0KKy0KKyAJCXByb3RlY3RlZCBvdmVycmlkZSBib29sIFJlc29sdmVNZW1i ZXJUeXBlICgpCisgCQl7CisgCQkJaWYgKEN1cnJlbnRUeXBlUGFyYW1ldGVycyAhPSBudWxsKSB7 CitAQCAtMjQ2Nyw2ICsyNDY5LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJTW9k dWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLkR5bmFtaWMuRW1pdEF0dHJpYnV0ZSAoQ3JlYXRlUmV0 dXJuQnVpbGRlciAoKS5CdWlsZGVyKTsKKyAJCQl9IGVsc2UgaWYgKFJldHVyblR5cGUuSGFzRHlu YW1pY0VsZW1lbnQpIHsKKyAJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLkR5bmFtaWMu RW1pdEF0dHJpYnV0ZSAoQ3JlYXRlUmV0dXJuQnVpbGRlciAoKS5CdWlsZGVyLCBSZXR1cm5UeXBl LCBMb2NhdGlvbik7CisrCQkJfSBlbHNlIGlmIChSZXR1cm5UeXBlIGlzIFJlYWRPbmx5UmVmZXJl bmNlQ29udGFpbmVyKSB7CisrCQkJCU1vZHVsZS5QcmVkZWZpbmVkQXR0cmlidXRlcy5Jc1JlYWRP bmx5LkVtaXRBdHRyaWJ1dGUgKENyZWF0ZVJldHVybkJ1aWxkZXIgKCkuQnVpbGRlcik7CisgCQkJ fQorIAorIAkJCWlmIChSZXR1cm5UeXBlLkhhc05hbWVkVHVwbGVFbGVtZW50KSB7CitkaWZmIC0t Z2l0IGEvbWNzL21jcy9tb2RpZmllcnMuY3MgYi9tY3MvbWNzL21vZGlmaWVycy5jcworaW5kZXgg YmZhZTU5ODVhMDMuLjkyNmFiNWQxODQ4IDEwMDY0NAorLS0tIGEvbWNzL21jcy9tb2RpZmllcnMu Y3MKKysrKyBiL21jcy9tY3MvbW9kaWZpZXJzLmNzCitAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3Bh Y2UgTW9uby5DU2hhcnAKKyAJCURFQlVHR0VSX0hJRERFTgkJCT0gMHg0MDAwMDAsCisgCQlERUJV R0dFUl9TVEVQX1RIUk9VR0gJPSAweDgwMDAwMCwKKyAJCUF1dG9Qcm9wZXJ0eQkJCT0gMHgxMDAw MDAwLAorKwkJUkVGICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAwMDAsCisgCisgCQlBY2Nl c3NpYmlsaXR5TWFzayA9IFBVQkxJQyB8IFBST1RFQ1RFRCB8IElOVEVSTkFMIHwgUFJJVkFURSwK KyAJCUFsbG93ZWRFeHBsaWNpdEltcGxGbGFncyA9IFVOU0FGRSB8IEVYVEVSTiwKK2RpZmYgLS1n aXQgYS9tY3MvbWNzL21vZHVsZS5jcyBiL21jcy9tY3MvbW9kdWxlLmNzCitpbmRleCAwMGFmYWM2 YzYwNC4uMjI5M2Q4MjViMzYgMTAwNjQ0CistLS0gYS9tY3MvbWNzL21vZHVsZS5jcworKysrIGIv bWNzL21jcy9tb2R1bGUuY3MKK0BAIC0yNjUsNiArMjY1LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1No YXJwCisgCQlyZWFkb25seSBEaWN0aW9uYXJ5PEFycmF5Q29udGFpbmVyLlR5cGVSYW5rUGFpciwg QXJyYXlDb250YWluZXI+IGFycmF5X3R5cGVzOworIAkJcmVhZG9ubHkgRGljdGlvbmFyeTxUeXBl U3BlYywgUG9pbnRlckNvbnRhaW5lcj4gcG9pbnRlcl90eXBlczsKKyAJCXJlYWRvbmx5IERpY3Rp b25hcnk8VHlwZVNwZWMsIFJlZmVyZW5jZUNvbnRhaW5lcj4gcmVmZXJlbmNlX3R5cGVzOworKwkJ cmVhZG9ubHkgRGljdGlvbmFyeTxUeXBlU3BlYywgUmVhZE9ubHlSZWZlcmVuY2VDb250YWluZXI+ IHJlYWRvbmx5X3JlZmVyZW5jZV90eXBlczsKKyAJCXJlYWRvbmx5IERpY3Rpb25hcnk8VHlwZVNw ZWMsIE1ldGhvZFNwZWM+IGF0dHJzX2NhY2hlOworIAkJcmVhZG9ubHkgRGljdGlvbmFyeTxUeXBl U3BlYywgQXdhaXRlckRlZmluaXRpb24+IGF3YWl0ZXJzOworIAkJcmVhZG9ubHkgRGljdGlvbmFy eTxUeXBlU3BlYywgVHlwZUluZm8+IHR5cGVfaW5mb19jYWNoZTsKK0BAIC0zMDEsNiArMzAyLDcg QEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJYXJyYXlfdHlwZXMgPSBuZXcgRGljdGlvbmFy eTxBcnJheUNvbnRhaW5lci5UeXBlUmFua1BhaXIsIEFycmF5Q29udGFpbmVyPiAoKTsKKyAJCQlw b2ludGVyX3R5cGVzID0gbmV3IERpY3Rpb25hcnk8VHlwZVNwZWMsIFBvaW50ZXJDb250YWluZXI+ ICgpOworIAkJCXJlZmVyZW5jZV90eXBlcyA9IG5ldyBEaWN0aW9uYXJ5PFR5cGVTcGVjLCBSZWZl cmVuY2VDb250YWluZXI+ICgpOworKwkJCXJlYWRvbmx5X3JlZmVyZW5jZV90eXBlcyA9IG5ldyBE aWN0aW9uYXJ5PFR5cGVTcGVjLCBSZWFkT25seVJlZmVyZW5jZUNvbnRhaW5lcj4gKCk7CisgCQkJ YXR0cnNfY2FjaGUgPSBuZXcgRGljdGlvbmFyeTxUeXBlU3BlYywgTWV0aG9kU3BlYz4gKCk7Cisg CQkJYXdhaXRlcnMgPSBuZXcgRGljdGlvbmFyeTxUeXBlU3BlYywgQXdhaXRlckRlZmluaXRpb24+ ICgpOworIAkJCXR5cGVfaW5mb19jYWNoZSA9IG5ldyBEaWN0aW9uYXJ5PFR5cGVTcGVjLCBUeXBl SW5mbz4gKCk7CitAQCAtNDI3LDYgKzQyOSwxMiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJ CQl9CisgCQl9CisgCisrCQlpbnRlcm5hbCBEaWN0aW9uYXJ5PFR5cGVTcGVjLCBSZWFkT25seVJl ZmVyZW5jZUNvbnRhaW5lcj4gUmVhZG9ubHlSZWZlcmVuY2VUeXBlc0NhY2hlIHsKKysJCQlnZXQg eworKwkJCQlyZXR1cm4gcmVhZG9ubHlfcmVmZXJlbmNlX3R5cGVzOworKwkJCX0KKysJCX0KKysK KyAJCWludGVybmFsIERpY3Rpb25hcnk8VHlwZVNwZWMsIFR5cGVJbmZvPiBUeXBlSW5mb0NhY2hl IHsKKyAJCQlnZXQgeworIAkJCQlyZXR1cm4gdHlwZV9pbmZvX2NhY2hlOworZGlmZiAtLWdpdCBh L21jcy9tY3MvcGFyYW1ldGVyLmNzIGIvbWNzL21jcy9wYXJhbWV0ZXIuY3MKK2luZGV4IDJiZDJh NDk4YTkxLi5jYzEwZWVlMTYyYiAxMDA2NDQKKy0tLSBhL21jcy9tY3MvcGFyYW1ldGVyLmNzCisr KysgYi9tY3MvbWNzL3BhcmFtZXRlci5jcworQEAgLTE0NDcsNyArMTQ0Nyw3IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycCB7CisgCisgCQkJZXhwciA9IENoaWxkOworIAorLQkJCWlmICghKGV4cHIg aXMgQ29uc3RhbnQgfHwgZXhwciBpcyBEZWZhdWx0VmFsdWVFeHByZXNzaW9uIHx8IChleHByIGlz IE5ldyAmJiAoKE5ldykgZXhwcikuSXNHZW5lcmF0ZWRTdHJ1Y3RDb25zdHJ1Y3RvcikpKSB7Cisr CQkJaWYgKCEoZXhwciBpcyBDb25zdGFudCB8fCBleHByIGlzIERlZmF1bHRWYWx1ZUV4cHJlc3Np b24gfHwgZXhwciBpcyBEZWZhdWx0TGl0ZXJhbEV4cHJlc3Npb24gfHwgKGV4cHIgaXMgTmV3ICYm ICgoTmV3KSBleHByKS5Jc0dlbmVyYXRlZFN0cnVjdENvbnN0cnVjdG9yKSkpIHsKKyAJCQkJaWYg KCEoZXhwciBpcyBFcnJvckV4cHJlc3Npb24pKSB7CisgCQkJCQlyYy5SZXBvcnQuRXJyb3IgKDE3 MzYsIExvY2F0aW9uLAorIAkJCQkJCSJUaGUgZXhwcmVzc2lvbiBiZWluZyBhc3NpZ25lZCB0byBv cHRpb25hbCBwYXJhbWV0ZXIgYHswfScgbXVzdCBiZSBhIGNvbnN0YW50IG9yIGRlZmF1bHQgdmFs dWUiLAorZGlmZiAtLWdpdCBhL21jcy9tY3Mvc3RhdGVtZW50LmNzIGIvbWNzL21jcy9zdGF0ZW1l bnQuY3MKK2luZGV4IDU4YmEyNzk1ZTRiLi45YzUxMTI4NTQ4ZiAxMDA2NDQKKy0tLSBhL21jcy9t Y3Mvc3RhdGVtZW50LmNzCisrKysgYi9tY3MvbWNzL3N0YXRlbWVudC5jcworQEAgLTExNjAsNyAr MTE2MCw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCS8vCisgCQkJCWlmIChlYy5D dXJyZW50QW5vbnltb3VzTWV0aG9kIGlzIEFzeW5jSW5pdGlhbGl6ZXIpIHsKKyAJCQkJCXZhciBz dG9yZXkgPSAoQXN5bmNUYXNrU3RvcmV5KSBlYy5DdXJyZW50QW5vbnltb3VzTWV0aG9kLlN0b3Jl eTsKKy0JCQkJCWlmIChzdG9yZXkuUmV0dXJuVHlwZSA9PSBlYy5Nb2R1bGUuUHJlZGVmaW5lZFR5 cGVzLlRhc2suVHlwZVNwZWMpIHsKKysJCQkJCXZhciBzX3JldHVybl90eXBlID0gc3RvcmV5LlJl dHVyblR5cGU7CisrCQkJCQlpZiAoc19yZXR1cm5fdHlwZSA9PSBlYy5Nb2R1bGUuUHJlZGVmaW5l ZFR5cGVzLlRhc2suVHlwZVNwZWMpIHsKKyAJCQkJCQkvLworIAkJCQkJCS8vIEV4dHJhIHRyaWNr IG5vdCB0byBlbWl0IHJldC9sZWF2ZSBpbnNpZGUgYXdhaXRlciBib2R5CisgCQkJCQkJLy8KK0BA IC0xMTY4LDggKzExNjksOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJCXJldHVy biB0cnVlOworIAkJCQkJfQorIAorLQkJCQkJaWYgKHN0b3JleS5SZXR1cm5UeXBlLklzR2VuZXJp Y1Rhc2spCistCQkJCQkJYmxvY2tfcmV0dXJuX3R5cGUgPSBzdG9yZXkuUmV0dXJuVHlwZS5UeXBl QXJndW1lbnRzWzBdOworKwkJCQkJaWYgKHNfcmV0dXJuX3R5cGUuSXNHZW5lcmljVGFzayB8fCAo c19yZXR1cm5fdHlwZS5Bcml0eSA9PSAxICYmIHNfcmV0dXJuX3R5cGUuSXNDdXN0b21UYXNrVHlw ZSAoKSkpCisrCQkJCQkgICAgYmxvY2tfcmV0dXJuX3R5cGUgPSBzX3JldHVybl90eXBlLlR5cGVB cmd1bWVudHNbMF07CisgCQkJCX0KKyAKKyAJCQkJaWYgKGVjLkN1cnJlbnRJdGVyYXRvciAhPSBu dWxsKSB7CitAQCAtMTIyMCw3ICsxMjIxLDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJ CQkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQkJCX0KKyAKKy0JCQkJCQlpZiAoIWFzeW5jX3R5cGUu SXNHZW5lcmljVGFzaykgeworKwkJCQkJCWlmICghYXN5bmNfdHlwZS5Jc0dlbmVyaWMpIHsKKyAJ CQkJCQkJaWYgKHRoaXMgaXMgQ29udGV4dHVhbFJldHVybikKKyAJCQkJCQkJCXJldHVybiB0cnVl OworIAorQEAgLTIzNjgsNyArMjM2OSwxMiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJ CWlmIChpbml0aWFsaXplciA9PSBudWxsKQorIAkJCQlyZXR1cm4gbnVsbDsKKyAKKy0JCQl2YXIg YyA9IGluaXRpYWxpemVyIGFzIENvbnN0YW50OworKwkJCUNvbnN0YW50IGM7CisrCQkJaWYgKGlu aXRpYWxpemVyLlR5cGUgPT0gSW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBlKQorKwkJCQljID0gTmV3 LkNvbnN0YW50aWZ5IChsaS5UeXBlLCBpbml0aWFsaXplci5Mb2NhdGlvbik7CisrCQkJZWxzZQor KwkJCQljID0gaW5pdGlhbGl6ZXIgYXMgQ29uc3RhbnQ7CisrCisgCQkJaWYgKGMgPT0gbnVsbCkg eworIAkJCQlpbml0aWFsaXplci5FcnJvcl9FeHByZXNzaW9uTXVzdEJlQ29uc3RhbnQgKGJjLCBp bml0aWFsaXplci5Mb2NhdGlvbiwgbGkuTmFtZSk7CisgCQkJCXJldHVybiBudWxsOworQEAgLTI0 MDcsMTQgKzI0MTMsMTQgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQlBZGRyZXNzVGFr ZW4gPSAxIDw8IDIsCisgCQkJQ29tcGlsZXJHZW5lcmF0ZWQgPSAxIDw8IDMsCisgCQkJQ29uc3Rh bnQgPSAxIDw8IDQsCistCQkJRm9yZWFjaFZhcmlhYmxlID0gMSA8PCA1LAorLQkJCUZpeGVkVmFy aWFibGUgPSAxIDw8IDYsCistCQkJVXNpbmdWYXJpYWJsZSA9IDEgPDwgNywKKysJCQlGb3JlYWNo VmFyaWFibGUgPSAxIDw8IDUgfCBSZWFkb25seU1hc2ssCisrCQkJRml4ZWRWYXJpYWJsZSA9IDEg PDwgNiB8IFJlYWRvbmx5TWFzaywKKysJCQlVc2luZ1ZhcmlhYmxlID0gMSA8PCA3IHwgUmVhZG9u bHlNYXNrLAorIAkJCUlzTG9ja2VkID0gMSA8PCA4LAorIAkJCVN5bWJvbEZpbGVIaWRkZW4gPSAx IDw8IDksCisgCQkJQnlSZWYgPSAxIDw8IDEwLAorIAorLQkJCVJlYWRvbmx5TWFzayA9IEZvcmVh Y2hWYXJpYWJsZSB8IEZpeGVkVmFyaWFibGUgfCBVc2luZ1ZhcmlhYmxlCisrCQkJUmVhZG9ubHlN YXNrID0gMSA8PCAyMAorIAkJfQorIAorIAkJVHlwZVNwZWMgdHlwZTsKK0BAIC0yNTM0LDcgKzI1 NDAsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAorIAkJcHVibGljIGJvb2wgSXNGaXhl ZCB7CisgCQkJZ2V0IHsKKy0JCQkJcmV0dXJuIChmbGFncyAmIEZsYWdzLkZpeGVkVmFyaWFibGUp ICE9IDA7CisrCQkJCXJldHVybiAoZmxhZ3MgJiBGbGFncy5GaXhlZFZhcmlhYmxlKSA9PSBGbGFn cy5GaXhlZFZhcmlhYmxlOworIAkJCX0KKyAJCQlzZXQgeworIAkJCQlmbGFncyA9IHZhbHVlID8g ZmxhZ3MgfCBGbGFncy5GaXhlZFZhcmlhYmxlIDogZmxhZ3MgJiB+RmxhZ3MuRml4ZWRWYXJpYWJs ZTsKK0BAIC0yNjcyLDcgKzI2NzgsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAorIAkJ cHVibGljIHN0cmluZyBHZXRSZWFkT25seUNvbnRleHQgKCkKKyAJCXsKKy0JCQlzd2l0Y2ggKGZs YWdzICYgRmxhZ3MuUmVhZG9ubHlNYXNrKSB7CisrCQkJc3dpdGNoIChmbGFncyAmIChGbGFncy5G b3JlYWNoVmFyaWFibGUgfCBGbGFncy5GaXhlZFZhcmlhYmxlIHwgRmxhZ3MuVXNpbmdWYXJpYWJs ZSkpIHsKKyAJCQljYXNlIEZsYWdzLkZpeGVkVmFyaWFibGU6CisgCQkJCXJldHVybiAiZml4ZWQg dmFyaWFibGUiOworIAkJCWNhc2UgRmxhZ3MuRm9yZWFjaFZhcmlhYmxlOgorQEAgLTgxOTEsNyAr ODE5Nyw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCX0KKyAKKyAJCQkJaWYgKGlm YWNlX2NhbmRpZGF0ZSA9PSBudWxsKSB7CistCQkJCQlpZiAoZXhwci5UeXBlICE9IEludGVybmFs VHlwZS5FcnJvclR5cGUpIHsKKysJCQkJCWlmIChleHByLlR5cGUgPT0gSW50ZXJuYWxUeXBlLkRl ZmF1bHRUeXBlKSB7CisrCQkJCQkJcmMuUmVwb3J0LkVycm9yICg4MzEyLCBsb2MsICJVc2Ugb2Yg ZGVmYXVsdCBsaXRlcmFsIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQiKTsKKysJCQkJCX0g ZWxzZSBpZiAoZXhwci5UeXBlICE9IEludGVybmFsVHlwZS5FcnJvclR5cGUpIHsKKyAJCQkJCQly Yy5SZXBvcnQuRXJyb3IgKDE1NzksIGxvYywKKyAJCQkJCQkJImZvcmVhY2ggc3RhdGVtZW50IGNh bm5vdCBvcGVyYXRlIG9uIHZhcmlhYmxlcyBvZiB0eXBlIGB7MH0nIGJlY2F1c2UgaXQgZG9lcyBu b3QgY29udGFpbiBhIGRlZmluaXRpb24gZm9yIGB7MX0nIG9yIGlzIGluYWNjZXNzaWJsZSIsCisg CQkJCQkJCWV4cHIuVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSwgIkdldEVudW1lcmF0b3Ii KTsKK2RpZmYgLS1naXQgYS9tY3MvbWNzL3R1cGxlcy5jcyBiL21jcy9tY3MvdHVwbGVzLmNzCitp bmRleCBiYjdmYWY3MzRkZi4uOTAxZWZkYzk1NDEgMTAwNjQ0CistLS0gYS9tY3MvbWNzL3R1cGxl cy5jcworKysrIGIvbWNzL21jcy90dXBsZXMuY3MKK0BAIC00MzIsNyArNDMyLDcgQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwCisgCXsKKyAJCUV4cHJlc3Npb24gc291cmNlOworIAkJTGlzdDxFeHBy ZXNzaW9uPiB0YXJnZXRFeHByczsKKy0JCUxpc3Q8TG9jYWxWYXJpYWJsZT4gdmFyaWFibGVzVG9J bmZlcjsKKysJCUxpc3Q8QmxvY2tWYXJpYWJsZT4gdmFyaWFibGVzOworIAkJRXhwcmVzc2lvbiBp bnN0YW5jZTsKKyAKKyAJCXB1YmxpYyBUdXBsZURlY29uc3RydWN0IChMaXN0PEV4cHJlc3Npb24+ IHRhcmdldEV4cHJzLCBFeHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24gbG9jKQorQEAgLTQ0Miwx MCArNDQyLDExIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCXRoaXMubG9jID0gbG9jOwor IAkJfQorIAorLQkJcHVibGljIFR1cGxlRGVjb25zdHJ1Y3QgKExpc3Q8RXhwcmVzc2lvbj4gdGFy Z2V0RXhwcnMsIExpc3Q8TG9jYWxWYXJpYWJsZT4gdmFyaWFibGVzLCBFeHByZXNzaW9uIHNvdXJj ZSwgTG9jYXRpb24gbG9jKQorLQkJCTogdGhpcyAodGFyZ2V0RXhwcnMsIHNvdXJjZSwgbG9jKQor KwkJcHVibGljIFR1cGxlRGVjb25zdHJ1Y3QgKExpc3Q8QmxvY2tWYXJpYWJsZT4gdmFyaWFibGVz LCBFeHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24gbG9jKQorIAkJeworLQkJCXRoaXMudmFyaWFi bGVzVG9JbmZlciA9IHZhcmlhYmxlczsKKysJCQl0aGlzLnNvdXJjZSA9IHNvdXJjZTsKKysJCQl0 aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlczsKKysJCQl0aGlzLmxvYyA9IGxvYzsKKyAJCX0KKyAK KyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0ZUV4cHJlc3Npb25UcmVlIChSZXNv bHZlQ29udGV4dCBlYykKK0BAIC00NjksOSArNDcwLDE4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJCXZhciBzcmNfdHlwZSA9IHNyYy5UeXBlOworIAorIAkJCWlmIChzcmNfdHlwZS5Jc1R1 cGxlVHlwZSkgeworLQkJCQlpZiAoc3JjX3R5cGUuQXJpdHkgIT0gdGFyZ2V0RXhwcnMuQ291bnQp IHsKKysJCQkJaW50IHRhcmdldF9jb3VudDsKKysKKysJCQkJaWYgKHRhcmdldEV4cHJzID09IG51 bGwpIHsKKysJCQkJCXRhcmdldF9jb3VudCA9IHZhcmlhYmxlcy5Db3VudDsKKysJCQkJCXRhcmdl dEV4cHJzID0gbmV3IExpc3Q8RXhwcmVzc2lvbj4gKHRhcmdldF9jb3VudCk7CisrCQkJCX0gZWxz ZSB7CisrCQkJCQl0YXJnZXRfY291bnQgPSB0YXJnZXRFeHBycy5Db3VudDsKKysJCQkJfQorKwor KwkJCQlpZiAoc3JjX3R5cGUuQXJpdHkgIT0gdGFyZ2V0X2NvdW50KSB7CisgCQkJCQlyYy5SZXBv cnQuRXJyb3IgKDgxMzIsIGxvYywgIkNhbm5vdCBkZWNvbnN0cnVjdCBhIHR1cGxlIG9mIGB7MH0n IGVsZW1lbnRzIGludG8gYHsxfScgdmFyaWFibGVzIiwKKy0JCQkJCQlzcmNfdHlwZS5Bcml0eS5U b1N0cmluZyAoKSwgdGFyZ2V0RXhwcnMuQ291bnQuVG9TdHJpbmcgKCkpOworKwkJCQkJCXNyY190 eXBlLkFyaXR5LlRvU3RyaW5nIChDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSwgdGFyZ2V0 X2NvdW50LlRvU3RyaW5nIChDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSk7CisgCQkJCQly ZXR1cm4gbnVsbDsKKyAJCQkJfQorIAorQEAgLTQ4MiwyNyArNDkyLDQ0IEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycAorIAkJCQkJaW5zdGFuY2UgPSBleHByX3ZhcmlhYmxlLkNyZWF0ZVJlZmVyZW5j ZUV4cHJlc3Npb24gKHJjLCBsb2MpOworIAkJCQl9CisgCistCQkJCWZvciAoaW50IGkgPSAwOyBp IDwgdGFyZ2V0RXhwcnMuQ291bnQ7ICsraSkgeworKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IHRh cmdldF9jb3VudDsgKytpKSB7CisgCQkJCQl2YXIgdGxlID0gc3JjX3R5cGUuVHlwZUFyZ3VtZW50 cyBbaV07CisgCistCQkJCQl2YXIgbHYgPSB2YXJpYWJsZXNUb0luZmVyPyBbaV07CistCQkJCQlp ZiAobHYgIT0gbnVsbCkgeworLQkJCQkJCWlmIChJbnRlcm5hbFR5cGUuSGFzTm9UeXBlICh0bGUp KSB7CistCQkJCQkJCXJjLlJlcG9ydC5FcnJvciAoODEzMCwgTG9jYXRpb24sICJDYW5ub3QgaW5m ZXIgdGhlIHR5cGUgb2YgaW1wbGljaXRseS10eXBlZCBkZWNvbnN0cnVjdGlvbiB2YXJpYWJsZSBg ezB9JyIsIGx2Lk5hbWUpOworLQkJCQkJCQlsdi5UeXBlID0gSW50ZXJuYWxUeXBlLkVycm9yVHlw ZTsKKysJCQkJCWlmICh2YXJpYWJsZXMgIT0gbnVsbCkgeworKwkJCQkJCXZhciB2YXJpYWJsZSA9 IHZhcmlhYmxlcyBbaV0uVmFyaWFibGU7CisrCisrCQkJCQkJaWYgKHZhcmlhYmxlLlR5cGUgPT0g SW50ZXJuYWxUeXBlLkRpc2NhcmQpIHsKKysJCQkJCQkJdmFyaWFibGVzIFtpXSA9IG51bGw7Cisr CQkJCQkJCXRhcmdldEV4cHJzLkFkZCAoRW1wdHlFeHByZXNzaW9uU3RhdGVtZW50Lkluc3RhbmNl KTsKKyAJCQkJCQkJY29udGludWU7CisgCQkJCQkJfQorIAorLQkJCQkJCWx2LlR5cGUgPSB0bGU7 CistCQkJCQkJbHYuUHJlcGFyZUFzc2lnbm1lbnRBbmFseXNpcyAoKEJsb2NrQ29udGV4dCkgcmMp OworLQkJCQkJfQorKwkJCQkJCXZhciB2YXJpYWJsZV90eXBlID0gdmFyaWFibGVzIFtpXS5UeXBl RXhwcmVzc2lvbjsKKysKKysJCQkJCQl0YXJnZXRFeHBycy5BZGQgKG5ldyBMb2NhbFZhcmlhYmxl UmVmZXJlbmNlICh2YXJpYWJsZSwgdmFyaWFibGUuTG9jYXRpb24pKTsKKysKKysJCQkJCQlpZiAo dmFyaWFibGVfdHlwZSBpcyBWYXJFeHByKSB7CisrCQkJCQkJCWlmIChJbnRlcm5hbFR5cGUuSGFz Tm9UeXBlICh0bGUpKSB7CisrCQkJCQkJCQlyYy5SZXBvcnQuRXJyb3IgKDgxMzAsIExvY2F0aW9u LCAiQ2Fubm90IGluZmVyIHRoZSB0eXBlIG9mIGltcGxpY2l0bHktdHlwZWQgZGVjb25zdHJ1Y3Rp b24gdmFyaWFibGUgYHswfSciLCB2YXJpYWJsZS5OYW1lKTsKKysJCQkJCQkJCXRsZSA9IEludGVy bmFsVHlwZS5FcnJvclR5cGU7CisrCQkJCQkJCX0KKyAKKysJCQkJCQkJdmFyaWFibGUuVHlwZSA9 IHRsZTsKKysJCQkJCQl9IGVsc2UgeworKwkJCQkJCQl2YXJpYWJsZS5UeXBlID0gdmFyaWFibGVf dHlwZS5SZXNvbHZlQXNUeXBlIChyYyk7CisrCQkJCQkJfQorKworKwkJCQkJCXZhcmlhYmxlLlBy ZXBhcmVBc3NpZ25tZW50QW5hbHlzaXMgKChCbG9ja0NvbnRleHQpcmMpOworKwkJCQkJfQorIAor IAkJCQkJdmFyIGVsZW1lbnRfc3JjID0gdHVwbGVMaXRlcmFsID09IG51bGwgPyBuZXcgTWVtYmVy QWNjZXNzIChpbnN0YW5jZSwgTmFtZWRUdXBsZVNwZWMuR2V0RWxlbWVudFByb3BlcnR5TmFtZSAo aSkpIDogdHVwbGVMaXRlcmFsLkVsZW1lbnRzIFtpXS5FeHByOworIAkJCQkJdGFyZ2V0RXhwcnMg W2ldID0gbmV3IFNpbXBsZUFzc2lnbiAodGFyZ2V0RXhwcnMgW2ldLCBlbGVtZW50X3NyYykuUmVz b2x2ZSAocmMpOworIAkJCQl9CisgCisgCQkJCWVjbGFzcyA9IEV4cHJDbGFzcy5WYWx1ZTsKKysK KysJCQkJLy8gVE9ETzogVGhlIHR5cGUgaXMgc2FtZSBvbmx5IGlmIHRoZXJlIGlzIG5vIHRhcmdl dCBlbGVtZW50IGNvbnZlcnNpb24KKysJCQkJLy8gdmFyIHJlcyA9ICgvKmJ5dGUqLyBiLCAvKnNo b3J0Ki8gcykgPSAoMiwgNCk7CisgCQkJCXR5cGUgPSBzcmMuVHlwZTsKKyAJCQkJcmV0dXJuIHRo aXM7CisgCQkJfQorQEAgLTUyNywxMSArNTU0LDI0IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAorIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW1pdCAoRW1pdENvbnRleHQgZWMpCisgCQl7Cist CQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOworKwkJCWlmIChpbnN0YW5j ZSAhPSBudWxsKQorKwkJCQkoKEV4cHJlc3Npb25TdGF0ZW1lbnQpc291cmNlKS5FbWl0U3RhdGVt ZW50IChlYyk7CisrCisrCQkJZm9yZWFjaCAoRXhwcmVzc2lvblN0YXRlbWVudCBleHByIGluIHRh cmdldEV4cHJzKQorKwkJCQlleHByLkVtaXQgKGVjKTsKKysKKysJCQl2YXIgY3RvciA9IE1lbWJl ckNhY2hlLkZpbmRNZW1iZXIgKHR5cGUsIE1lbWJlckZpbHRlci5Db25zdHJ1Y3RvciAobnVsbCks IEJpbmRpbmdSZXN0cmljdGlvbi5EZWNsYXJlZE9ubHkgfCBCaW5kaW5nUmVzdHJpY3Rpb24uSW5z dGFuY2VPbmx5KSBhcyBNZXRob2RTcGVjOworKwkJCWVjLkVtaXQgKE9wQ29kZXMuTmV3b2JqLCBj dG9yKTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXRTdGF0ZW1lbnQgKEVt aXRDb250ZXh0IGVjKQorIAkJeworKwkJCWlmICh2YXJpYWJsZXMgIT0gbnVsbCkgeworKwkJCQlm b3JlYWNoICh2YXIgbHYgaW4gdmFyaWFibGVzKSB7CisrCQkJCQlsdj8uVmFyaWFibGUuQ3JlYXRl QnVpbGRlciAoZWMpOworKwkJCQl9CisrCQkJfQorKwkJCQorIAkJCWlmIChpbnN0YW5jZSAhPSBu dWxsKQorIAkJCQkoKEV4cHJlc3Npb25TdGF0ZW1lbnQpIHNvdXJjZSkuRW1pdFN0YXRlbWVudCAo ZWMpOworIAkJCQorQEAgLTU0OSw5ICs1ODksNiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJ CQlpZiAobGVhdmVfY29weSkKKyAJCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9u ICgpOworIAorLQkJCWZvcmVhY2ggKHZhciBsdiBpbiB2YXJpYWJsZXNUb0luZmVyKQorLQkJCQls di5DcmVhdGVCdWlsZGVyIChlYyk7CistCisgCQkJRW1pdFN0YXRlbWVudCAoZWMpOworIAkJfQor IAorQEAgLTU2MywxMSArNjAwLDExIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJcHVi bGljIHZvaWQgU2V0R2VuZXJhdGVkRmllbGRBc3NpZ25lZCAoRmxvd0FuYWx5c2lzQ29udGV4dCBm YykKKyAJCXsKKy0JCQlpZiAodmFyaWFibGVzVG9JbmZlciA9PSBudWxsKQorKwkJCWlmICh2YXJp YWJsZXMgPT0gbnVsbCkKKyAJCQkJcmV0dXJuOworIAorLQkJCWZvcmVhY2ggKHZhciBsdiBpbiB2 YXJpYWJsZXNUb0luZmVyKQorLQkJCQlmYy5TZXRWYXJpYWJsZUFzc2lnbmVkIChsdi5WYXJpYWJs ZUluZm8pOworKwkJCWZvcmVhY2ggKHZhciBsdiBpbiB2YXJpYWJsZXMpCisrCQkJCWZjLlNldFZh cmlhYmxlQXNzaWduZWQgKGx2LlZhcmlhYmxlLlZhcmlhYmxlSW5mbyk7CisgCQl9CisgCX0KKyB9 CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvbWNzL3R5cGVt YW5hZ2VyLmNzIGIvbWNzL21jcy90eXBlbWFuYWdlci5jcworaW5kZXggYjZhZmYxNGUxYzAuLjdh MTZjZGEyNzc0IDEwMDY0NAorLS0tIGEvbWNzL21jcy90eXBlbWFuYWdlci5jcworKysrIGIvbWNz L21jcy90eXBlbWFuYWdlci5jcworQEAgLTI0Miw2ICsyNDIsNyBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAKKyAJCS8vIEMjIDcuMAorIAkJcHVibGljIHJlYWRvbmx5IFByZWRlZmluZWRUeXBl W10gVHVwbGVzOworKwkJcHVibGljIHJlYWRvbmx5IFByZWRlZmluZWRUeXBlIFNwYW5HZW5lcmlj OworIAorIAkJcHVibGljIFByZWRlZmluZWRUeXBlcyAoTW9kdWxlQ29udGFpbmVyIG1vZHVsZSkK KyAJCXsKK0BAIC0zMDEsNiArMzAyLDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJRm9y bWF0dGFibGVTdHJpbmcgPSBuZXcgUHJlZGVmaW5lZFR5cGUgKG1vZHVsZSwgTWVtYmVyS2luZC5D bGFzcywgIlN5c3RlbSIsICJGb3JtYXR0YWJsZVN0cmluZyIpOworIAkJCUZvcm1hdHRhYmxlU3Ry aW5nRmFjdG9yeSA9IG5ldyBQcmVkZWZpbmVkVHlwZSAobW9kdWxlLCBNZW1iZXJLaW5kLkNsYXNz LCAiU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcyIsICJGb3JtYXR0YWJsZVN0cmluZ0Zh Y3RvcnkiKTsKKyAKKysJCQlTcGFuR2VuZXJpYyA9IG5ldyBQcmVkZWZpbmVkVHlwZSAobW9kdWxl LCBNZW1iZXJLaW5kLlN0cnVjdCwgIlN5c3RlbSIsICJTcGFuIiwgMSk7CisrCisgCQkJLy8KKyAJ CQkvLyBEZWZpbmUgdHlwZXMgd2hpY2ggYXJlIHVzZWQgZm9yIGNvbXBhcmlzb24uIEl0IGRvZXMg bm90IG1hdHRlcgorIAkJCS8vIGlmIHRoZXkgZG9uJ3QgZXhpc3QgYXMgbm8gZXJyb3IgcmVwb3J0 IGlzIG5lZWRlZAorQEAgLTM0OCw2ICszNTEsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJ CQkJaWYgKHB0LkRlZmluZSAoKSkKKyAJCQkJCXB0LlR5cGVTcGVjLklzVHVwbGVUeXBlID0gdHJ1 ZTsKKyAJCQl9CisrCisrCQkJU3BhbkdlbmVyaWMuRGVmaW5lICgpOworIAkJfQorIAl9CisgCitA QCAtNDMwLDYgKzQzNSw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCUFycmF5RW1wdHkg PSBuZXcgUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiAobW9kdWxlLCB0eXBlcy5BcnJheSwK KyAJCQkJTWVtYmVyRmlsdGVyLk1ldGhvZCAoIkVtcHR5IiwgMSwgUGFyYW1ldGVyc0NvbXBpbGVk LkVtcHR5UmVhZE9ubHlQYXJhbWV0ZXJzLCBudWxsKSk7CisgCisrCQkJLy8gVE9ETzogTXVzdCBt ZSBzdGF0aWMKKyAJCQlBc3luY1Rhc2tNZXRob2RCdWlsZGVyQ3JlYXRlID0gbmV3IFByZWRlZmlu ZWRNZW1iZXI8TWV0aG9kU3BlYz4gKG1vZHVsZSwgdHlwZXMuQXN5bmNUYXNrTWV0aG9kQnVpbGRl ciwKKyAJCQkJTWVtYmVyRmlsdGVyLk1ldGhvZCAoIkNyZWF0ZSIsIDAsIFBhcmFtZXRlcnNDb21w aWxlZC5FbXB0eVJlYWRPbmx5UGFyYW1ldGVycywgdHlwZXMuQXN5bmNUYXNrTWV0aG9kQnVpbGRl ci5UeXBlU3BlYykpOworIAorQEAgLTQ4NSw2ICs0OTEsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAKKyAJCQlBc3luY1Rhc2tNZXRob2RCdWlsZGVyVGFzayA9IG5ldyBQcmVkZWZpbmVkTWVtYmVy PFByb3BlcnR5U3BlYz4gKG1vZHVsZSwgdHlwZXMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlciwKKyAJ CQkJTWVtYmVyRmlsdGVyLlByb3BlcnR5ICgiVGFzayIsIG51bGwpKTsKKyAKKysJCQkvLyBUT0RP OiBNdXN0IG1lIHN0YXRpYworIAkJCUFzeW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmljQ3JlYXRl ID0gbmV3IFByZWRlZmluZWRNZW1iZXI8TWV0aG9kU3BlYz4gKG1vZHVsZSwgdHlwZXMuQXN5bmNU YXNrTWV0aG9kQnVpbGRlckdlbmVyaWMsCisgCQkJCU1lbWJlckZpbHRlci5NZXRob2QgKCJDcmVh dGUiLCAwLCBQYXJhbWV0ZXJzQ29tcGlsZWQuRW1wdHlSZWFkT25seVBhcmFtZXRlcnMsIHR5cGVz LkFzeW5jVm9pZE1ldGhvZEJ1aWxkZXIuVHlwZVNwZWMpKTsKKyAKK0BAIC01NDIsNiArNTQ5LDcg QEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVy aWNUYXNrID0gbmV3IFByZWRlZmluZWRNZW1iZXI8UHJvcGVydHlTcGVjPiAobW9kdWxlLCB0eXBl cy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyR2VuZXJpYywKKyAJCQkJTWVtYmVyRmlsdGVyLlByb3Bl cnR5ICgiVGFzayIsIG51bGwpKTsKKyAKKysJCQkvLyBUT0RPOiBNdXN0IG1lIHN0YXRpYworIAkJ CUFzeW5jVm9pZE1ldGhvZEJ1aWxkZXJDcmVhdGUgPSBuZXcgUHJlZGVmaW5lZE1lbWJlcjxNZXRo b2RTcGVjPiAobW9kdWxlLCB0eXBlcy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyLAorIAkJCQlNZW1i ZXJGaWx0ZXIuTWV0aG9kICgiQ3JlYXRlIiwgMCwgUGFyYW1ldGVyc0NvbXBpbGVkLkVtcHR5UmVh ZE9ubHlQYXJhbWV0ZXJzLCB0eXBlcy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyLlR5cGVTcGVjKSk7 CisgCitAQCAtMTAwNiw5ICsxMDE0LDYgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQlw dWJsaWMgVCBSZXNvbHZlIChMb2NhdGlvbiBsb2MpCisgCQl7CistCQkJaWYgKG1lbWJlciAhPSBu dWxsKQorLQkJCQlyZXR1cm4gbWVtYmVyOworLQorIAkJCWlmIChHZXQgKCkgIT0gbnVsbCkKKyAJ CQkJcmV0dXJuIG1lbWJlcjsKKyAKK2RpZmYgLS1naXQgYS9tY3MvbWNzL3R5cGVzcGVjLmNzIGIv bWNzL21jcy90eXBlc3BlYy5jcworaW5kZXggZDE0ZTFlYWQzZTMuLmE1OGEwZmU1MTc4IDEwMDY0 NAorLS0tIGEvbWNzL21jcy90eXBlc3BlYy5jcworKysrIGIvbWNzL21jcy90eXBlc3BlYy5jcwor QEAgLTIyNSw2ICsyMjUsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQl9CisgCQl9Cisg CisrCQlwdWJsaWMgYm9vbCBJc0J5UmVmTGlrZSA9PiAobW9kaWZpZXJzICYgTW9kaWZpZXJzLlJF RikgIT0gMDsKKysKKyAJCS8vCisgCQkvLyBSZXR1cm5zIHRydWUgZm9yIGluc3RhbmNlcyBvZiBT eXN0ZW0uVGhyZWFkaW5nLlRhc2tzLlRhc2s8VD4KKyAJCS8vCitAQCAtMTQ1Miw2ICsxNDU0LDcg QEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQlpbnQgVHlwZVBhcmFtZXRlcnNDb3VudCB7IGdl dDsgfQorIAkJVHlwZVBhcmFtZXRlclNwZWNbXSBUeXBlUGFyYW1ldGVycyB7IGdldDsgfQorIAor KwkJVHlwZVNwZWMgR2V0QXN5bmNNZXRob2RCdWlsZGVyICgpOworIAkJVHlwZVNwZWMgR2V0QXR0 cmlidXRlQ29DbGFzcyAoKTsKKyAJCXN0cmluZyBHZXRBdHRyaWJ1dGVEZWZhdWx0TWVtYmVyICgp OworIAkJQXR0cmlidXRlVXNhZ2VBdHRyaWJ1dGUgR2V0QXR0cmlidXRlVXNhZ2UgKFByZWRlZmlu ZWRBdHRyaWJ1dGUgcGEpOworQEAgLTE0NjEsNiArMTQ2NCwyOSBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAKKyAJY2xhc3MgSW50ZXJuYWxUeXBlIDogVHlwZVNwZWMsIElUeXBlRGVmaW5pdGlv bgorIAl7CisrCQlzZWFsZWQgY2xhc3MgSW50ZXJuYWxUeXBlQXNzZW1ibHkgOiBJQXNzZW1ibHlE ZWZpbml0aW9uCisrCQl7CisrCQkJcHVibGljIHN0YXRpYyByZWFkb25seSBJbnRlcm5hbFR5cGVB c3NlbWJseSBJbnN0YW5jZSA9IG5ldyBJbnRlcm5hbFR5cGVBc3NlbWJseSAoKTsKKysKKysJCQlw dWJsaWMgc3RyaW5nIEZ1bGxOYW1lID0+IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlv biAoKTsKKysKKysJCQlwdWJsaWMgYm9vbCBJc0NMU0NvbXBsaWFudCA9PiBmYWxzZTsKKysKKysJ CQlwdWJsaWMgYm9vbCBJc01pc3NpbmcgPT4gZmFsc2U7CisrCisrCQkJcHVibGljIHN0cmluZyBO YW1lID0+IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKKysKKysJCQlwdWJs aWMgYnl0ZSBbXSBHZXRQdWJsaWNLZXlUb2tlbiAoKQorKwkJCXsKKysJCQkJdGhyb3cgbmV3IE5v dEltcGxlbWVudGVkRXhjZXB0aW9uICgpOworKwkJCX0KKysKKysJCQlwdWJsaWMgYm9vbCBJc0Zy aWVuZEFzc2VtYmx5VG8gKElBc3NlbWJseURlZmluaXRpb24gYXNzZW1ibHkpCisrCQkJeworKwkJ CQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJfQorKworIAkJcHVibGljIHN0YXRpYyByZWFkb25s eSBJbnRlcm5hbFR5cGUgQW5vbnltb3VzTWV0aG9kID0gbmV3IEludGVybmFsVHlwZSAoImFub255 bW91cyBtZXRob2QiKTsKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW50ZXJuYWxUeXBlIEFy Z2xpc3QgPSBuZXcgSW50ZXJuYWxUeXBlICgiX19hcmdsaXN0Iik7CisgCQlwdWJsaWMgc3RhdGlj IHJlYWRvbmx5IEludGVybmFsVHlwZSBNZXRob2RHcm91cCA9IG5ldyBJbnRlcm5hbFR5cGUgKCJt ZXRob2QgZ3JvdXAiKTsKK0BAIC0xNDcwLDYgKzE0OTYsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW50ZXJuYWxUeXBlIEVycm9yVHlwZSA9IG5l dyBJbnRlcm5hbFR5cGUgKCI8ZXJyb3I+Iik7CisgCQlwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElu dGVybmFsVHlwZSBWYXJPdXRUeXBlID0gbmV3IEludGVybmFsVHlwZSAoInZhciBvdXQiKTsKKyAJ CXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW50ZXJuYWxUeXBlIFRocm93RXhwciA9IG5ldyBJbnRl cm5hbFR5cGUgKCJ0aHJvdyBleHByZXNzaW9uIik7CisrCQlwdWJsaWMgc3RhdGljIHJlYWRvbmx5 IEludGVybmFsVHlwZSBEZWZhdWx0VHlwZSA9IG5ldyBJbnRlcm5hbFR5cGUgKCJkZWZhdWx0Iik7 CisrCQlwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEludGVybmFsVHlwZSBEaXNjYXJkID0gbmV3IElu dGVybmFsVHlwZSAoImRpc2NhcmQiKTsKKyAKKyAJCXJlYWRvbmx5IHN0cmluZyBuYW1lOworIAor QEAgLTE0OTQsNyArMTUyMiw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJSUFzc2Vt Ymx5RGVmaW5pdGlvbiBJVHlwZURlZmluaXRpb24uRGVjbGFyaW5nQXNzZW1ibHkgeworIAkJCWdl dCB7CistCQkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsKKysJCQkJcmV0 dXJuIEludGVybmFsVHlwZUFzc2VtYmx5Lkluc3RhbmNlOworIAkJCX0KKyAJCX0KKyAKK0BAIC0x NTYxLDYgKzE1ODksMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkjcmVnaW9uIElU eXBlRGVmaW5pdGlvbiBNZW1iZXJzCisgCisrCQlUeXBlU3BlYyBJVHlwZURlZmluaXRpb24uR2V0 QXN5bmNNZXRob2RCdWlsZGVyICgpCisrCQl7CisrCQkJcmV0dXJuIG51bGw7CisrCQl9CisrCisg CQlUeXBlU3BlYyBJVHlwZURlZmluaXRpb24uR2V0QXR0cmlidXRlQ29DbGFzcyAoKQorIAkJewor IAkJCXJldHVybiBudWxsOworQEAgLTE2MTQsNyArMTY0Nyw3IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAorIAkJcHVibGljIHN0YXRpYyBib29sIEhhc05vVHlwZSAoVHlwZVNwZWMgdHlwZSkK KyAJCXsKKy0JCQlyZXR1cm4gdHlwZSA9PSBBbm9ueW1vdXNNZXRob2QgfHwgdHlwZSA9PSBNZXRo b2RHcm91cCB8fCB0eXBlID09IE51bGxMaXRlcmFsIHx8IHR5cGUgPT0gVGhyb3dFeHByOworKwkJ CXJldHVybiB0eXBlID09IEFub255bW91c01ldGhvZCB8fCB0eXBlID09IE1ldGhvZEdyb3VwIHx8 IHR5cGUgPT0gTnVsbExpdGVyYWwgfHwgdHlwZSA9PSBUaHJvd0V4cHIgfHwgdHlwZSA9PSBEZWZh dWx0VHlwZTsKKyAJCX0KKyAJfQorIAorQEAgLTE3NDksNiArMTc4MiwxMSBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlwdWJsaWMgVHlwZVNwZWMgR2V0QXN5bmNN ZXRob2RCdWlsZGVyICgpCisrCQl7CisrCQkJcmV0dXJuIG51bGw7CisrCQl9CisrCisgCQlwdWJs aWMgVHlwZVNwZWMgR2V0QXR0cmlidXRlQ29DbGFzcyAoKQorIAkJeworIAkJCXJldHVybiBFbGVt ZW50Lk1lbWJlckRlZmluaXRpb24uR2V0QXR0cmlidXRlQ29DbGFzcyAoKTsKK0BAIC0xOTk2LDkg KzIwMzQsMTAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCVtTeXN0ZW0uRGlhZ25vc3RpY3Mu RGVidWdnZXJEaXNwbGF5KCJ7RGlzcGxheURlYnVnSW5mbygpfSIpXQorIAljbGFzcyBSZWZlcmVu Y2VDb250YWluZXIgOiBFbGVtZW50VHlwZVNwZWMKKyAJeworLQkJUmVmZXJlbmNlQ29udGFpbmVy IChUeXBlU3BlYyBlbGVtZW50KQorKwkJcHJvdGVjdGVkIFJlZmVyZW5jZUNvbnRhaW5lciAoVHlw ZVNwZWMgZWxlbWVudCkKKyAJCQk6IGJhc2UgKE1lbWJlcktpbmQuQnlSZWYsIGVsZW1lbnQsIG51 bGwpCisgCQl7CisrCQkJY2FjaGUgPSBudWxsOworIAkJfQorIAorIAkJcHVibGljIG92ZXJyaWRl IElMaXN0PFR5cGVTcGVjPiBJbnRlcmZhY2VzIHsKK0BAIC0yMDM5LDYgKzIwNzgsMzkgQEAgbmFt ZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJcmV0dXJuIHBjOworIAkJfQorKworKwkJcHJvdGVj dGVkIG92ZXJyaWRlIHZvaWQgSW5pdGlhbGl6ZU1lbWJlckNhY2hlKGJvb2wgb25seVR5cGVzKQor KwkJeworKwkJCWNhY2hlID0gRWxlbWVudC5NZW1iZXJDYWNoZTsKKysJCX0KKysJfQorKworKwlb U3lzdGVtLkRpYWdub3N0aWNzLkRlYnVnZ2VyRGlzcGxheSAoIntEaXNwbGF5RGVidWdJbmZvKCl9 IildCisrCWNsYXNzIFJlYWRPbmx5UmVmZXJlbmNlQ29udGFpbmVyIDogUmVmZXJlbmNlQ29udGFp bmVyCisrCXsKKysJCXB1YmxpYyBSZWFkT25seVJlZmVyZW5jZUNvbnRhaW5lciAoVHlwZVNwZWMg ZWxlbWVudCkKKysJCQk6IGJhc2UgKGVsZW1lbnQpCisrCQl7CisrCQl9CisrCisrCQlzdHJpbmcg RGlzcGxheURlYnVnSW5mbyAoKQorKwkJeworKwkJCXJldHVybiAicmVmIHJlYWRvbmx5ICIgKyBH ZXRTaWduYXR1cmVGb3JFcnJvciAoKTsKKysJCX0KKysKKysJCXB1YmxpYyBuZXcgc3RhdGljIFJl ZmVyZW5jZUNvbnRhaW5lciBNYWtlVHlwZSAoTW9kdWxlQ29udGFpbmVyIG1vZHVsZSwgVHlwZVNw ZWMgZWxlbWVudCkKKysJCXsKKysJCQlpZiAoZWxlbWVudC5LaW5kID09IE1lbWJlcktpbmQuQnlS ZWYpCisrCQkJCXRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbiAoKTsKKysKKysJCQlSZWFkT25s eVJlZmVyZW5jZUNvbnRhaW5lciBwYzsKKysJCQlpZiAoIW1vZHVsZS5SZWFkb25seVJlZmVyZW5j ZVR5cGVzQ2FjaGUuVHJ5R2V0VmFsdWUgKGVsZW1lbnQsIG91dCBwYykpIHsKKysJCQkJcGMgPSBu ZXcgUmVhZE9ubHlSZWZlcmVuY2VDb250YWluZXIgKGVsZW1lbnQpOworKwkJCQltb2R1bGUuUmVh ZG9ubHlSZWZlcmVuY2VUeXBlc0NhY2hlLkFkZCAoZWxlbWVudCwgcGMpOworKwkJCX0KKysKKysJ CQlyZXR1cm4gcGM7CisrCQl9CisgCX0KKyAKKyAJY2xhc3MgUG9pbnRlckNvbnRhaW5lciA6IEVs ZW1lbnRUeXBlU3BlYworZGlmZiAtLWdpdCBhL21jcy90ZXN0cy9ndGVzdC00MDkuY3MgYi9tY3Mv dGVzdHMvZ3Rlc3QtNDA5LmNzCitpbmRleCA4ZGI1OWQ3ZTQ4ZC4uNjA2YWUzNjg1ZDEgMTAwNjQ0 CistLS0gYS9tY3MvdGVzdHMvZ3Rlc3QtNDA5LmNzCisrKysgYi9tY3MvdGVzdHMvZ3Rlc3QtNDA5 LmNzCitAQCAtMSwzICsxLDQgQEAKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246 bGF0ZXN0CisgdXNpbmcgU3lzdGVtOworIAorIC8vCitAQCAtMTc1LDYgKzE3NiwxMSBAQCBwdWJs aWMgY2xhc3MgQ29uZGl0aW9uYWxQYXJzaW5nCisgCQl2YXIgeCA9IGFyZ3MgPy4yZiA6IC0uMmY7 CisgCX0KKyAKKysJdm9pZCBUZXN0XzIzIChzdHJpbmcgYXJncykKKysJeworKwkJdmFyIHggPSBh cmdzID09IG51bGwgPyBkZWZhdWx0IDogMTsKKysJfQorKworIAlzdGF0aWMgdm9pZCBIZWxwZXI8 VD4gKFQgYXJnKQorIAl7CisgCX0KK2RpZmYgLS1naXQgYS9tY3MvdGVzdHMvdGVzdC05NDguY3Mg Yi9tY3MvdGVzdHMvdGVzdC05NDguY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwMC4uMzRiM2FiOWEwYzQKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90ZXN0 LTk0OC5jcworQEAgLTAsMCArMSwxNiBAQAorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVy c2lvbjo3LjIgLXVuc2FmZQorKworK3VzaW5nIFN5c3RlbTsKKysKKytjbGFzcyBYCisreworKwlw dWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlTcGFuPGludD4gc3RhY2tTcGFuID0g c3RhY2thbGxvYyBpbnRbMTAwXTsKKysJfQorKworKwl1bnNhZmUgdm9pZCBGb28gKCkKKysJewor KworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNz L3Rlc3RzL3Rlc3QtYXN5bmMtOTQuY3MgYi9tY3MvdGVzdHMvdGVzdC1hc3luYy05NC5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jZTlhMzA0MDliYgorLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtYXN5bmMtOTQuY3MKK0BAIC0wLDAgKzEsMTI3 IEBACisrdXNpbmcgU3lzdGVtOworK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CisrdXNp bmcgU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlczsKKysKKytbQXN5bmNNZXRob2RCdWls ZGVyICh0eXBlb2YoTXlUYXNrTWV0aG9kQnVpbGRlcjw+KSldCisrY2xhc3MgTXlUYXNrPFQ+Cisr eworK30KKysKKytbQXN5bmNNZXRob2RCdWlsZGVyICh0eXBlb2YoTXlUYXNrTWV0aG9kQnVpbGRl cikpXQorK2NsYXNzIE15VGFzaworK3sKKyt9CisrCisrY2xhc3MgTXlUYXNrTWV0aG9kQnVpbGRl cgorK3sKKysJcHVibGljIHN0YXRpYyBNeVRhc2tNZXRob2RCdWlsZGVyIENyZWF0ZSgpCisrCXsK KysJCXJldHVybiBudWxsOworKwl9CisrCisrCXB1YmxpYyBNeVRhc2sgVGFzayB7CisrCQlnZXQg eworKwkJCXJldHVybiBudWxsOworKwkJfQorKwl9CisrCisrCXB1YmxpYyB2b2lkIFNldEV4Y2Vw dGlvbiAoRXhjZXB0aW9uIGV4Y2VwdGlvbikKKysJeworKworKwl9CisrCisrCXB1YmxpYyB2b2lk IFNldFJlc3VsdCAoKQorKwl7CisrCisrCX0KKysKKysJcHVibGljIHZvaWQgQXdhaXRPbkNvbXBs ZXRlZDxUQXdhaXRlciwgVFN0YXRlTWFjaGluZT4gKHJlZiBUQXdhaXRlciBhd2FpdGVyLCByZWYg VFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUpIHdoZXJlIFRBd2FpdGVyIDogSU5vdGlmeUNvbXBs ZXRpb24gd2hlcmUgVFN0YXRlTWFjaGluZSA6IElBc3luY1N0YXRlTWFjaGluZQorKwl7CisrCisr CX0KKysKKysJcHVibGljIHZvaWQgQXdhaXRVbnNhZmVPbkNvbXBsZXRlZDxUQXdhaXRlciwgVFN0 YXRlTWFjaGluZT4gKHJlZiBUQXdhaXRlciBhd2FpdGVyLCByZWYgVFN0YXRlTWFjaGluZSBzdGF0 ZU1hY2hpbmUpIHdoZXJlIFRBd2FpdGVyIDogSUNyaXRpY2FsTm90aWZ5Q29tcGxldGlvbiB3aGVy ZSBUU3RhdGVNYWNoaW5lIDogSUFzeW5jU3RhdGVNYWNoaW5lCisrCXsKKysKKysJfQorKworKwlw dWJsaWMgdm9pZCBTdGFydDxUU3RhdGVNYWNoaW5lPiAocmVmIFRTdGF0ZU1hY2hpbmUgc3RhdGVN YWNoaW5lKSB3aGVyZSBUU3RhdGVNYWNoaW5lIDogSUFzeW5jU3RhdGVNYWNoaW5lCisrCXsKKysK KysJfQorKworKwlwdWJsaWMgdm9pZCBTZXRTdGF0ZU1hY2hpbmUgKElBc3luY1N0YXRlTWFjaGlu ZSBzdGF0ZU1hY2hpbmUpCisrCXsKKysKKysJfQkKKyt9CisrCisrY2xhc3MgTXlUYXNrTWV0aG9k QnVpbGRlcjxUPgorK3sKKysJcHVibGljIHN0YXRpYyBNeVRhc2tNZXRob2RCdWlsZGVyPFQ+IENy ZWF0ZSgpCisrCXsKKysJCXJldHVybiBudWxsOworKwl9CisrCisrCXB1YmxpYyBNeVRhc2s8VD4g VGFzayB7CisrCQlnZXQgeworKwkJCXJldHVybiBudWxsOworKwkJfQorKwl9CisrCisrCXB1Ymxp YyB2b2lkIFNldEV4Y2VwdGlvbiAoRXhjZXB0aW9uIGV4Y2VwdGlvbikKKysJeworKworKwl9Cisr CisrCXB1YmxpYyB2b2lkIFNldFJlc3VsdCAoVCByZXN1bHQpCisrCXsKKysKKysJfQorKworKwlw dWJsaWMgdm9pZCBBd2FpdE9uQ29tcGxldGVkPFRBd2FpdGVyLCBUU3RhdGVNYWNoaW5lPiAocmVm IFRBd2FpdGVyIGF3YWl0ZXIsIHJlZiBUU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSkgd2hlcmUg VEF3YWl0ZXIgOiBJTm90aWZ5Q29tcGxldGlvbiB3aGVyZSBUU3RhdGVNYWNoaW5lIDogSUFzeW5j U3RhdGVNYWNoaW5lCisrCXsKKysKKysJfQorKworKwlwdWJsaWMgdm9pZCBBd2FpdFVuc2FmZU9u Q29tcGxldGVkPFRBd2FpdGVyLCBUU3RhdGVNYWNoaW5lPiAocmVmIFRBd2FpdGVyIGF3YWl0ZXIs IHJlZiBUU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSkgd2hlcmUgVEF3YWl0ZXIgOiBJQ3JpdGlj YWxOb3RpZnlDb21wbGV0aW9uIHdoZXJlIFRTdGF0ZU1hY2hpbmUgOiBJQXN5bmNTdGF0ZU1hY2hp bmUKKysJeworKworKwl9CisrCisrCXB1YmxpYyB2b2lkIFN0YXJ0PFRTdGF0ZU1hY2hpbmU+IChy ZWYgVFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUpIHdoZXJlIFRTdGF0ZU1hY2hpbmUgOiBJQXN5 bmNTdGF0ZU1hY2hpbmUKKysJeworKworKwl9CisrCisrCXB1YmxpYyB2b2lkIFNldFN0YXRlTWFj aGluZSAoSUFzeW5jU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSkKKysJeworKworKwl9CisrfQor KworK2NsYXNzIFgKKyt7CisrCXB1YmxpYyBhc3luYyBNeVRhc2sgVGVzdCAoKQorKwl7CisrCQlh d2FpdCBUYXNrLkRlbGF5ICgxKTsKKysJfQorKworKwlwdWJsaWMgYXN5bmMgTXlUYXNrPGludD4g VGVzdDIgKCkKKysJeworKwkJYXdhaXQgVGFzay5EZWxheSAoMSk7CisrCQlyZXR1cm4gMjsKKysJ fQorKworKwlwdWJsaWMgYXN5bmMgVmFsdWVUYXNrPHN0cmluZz4gVGVzdDMgKCkKKysJeworKwkJ YXdhaXQgVGFzay5EZWxheSAoMSk7CisrCQlyZXR1cm4gImFzIjsKKysJfQkKKysKKysJcHVibGlj IHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJdmFyIHggPSBuZXcgWCAoKTsKKysJCXZhciBy MSA9IHguVGVzdDMgKCkuUmVzdWx0OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtZGVmYXVsdC0wMS5jcyBiL21jcy90ZXN0 cy90ZXN0LWRlZmF1bHQtMDEuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwMC4uODIzZTMzYzQ1MWIKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90ZXN0LWRl ZmF1bHQtMDEuY3MKK0BAIC0wLDAgKzEsNTIgQEAKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFu Z3ZlcnNpb246bGF0ZXN0CisrCisrc3RhdGljIGNsYXNzIFgKKyt7CisrCWNvbnN0IGludCBjMSA9 IGRlZmF1bHQ7CisrCWNvbnN0IGludCBjMiA9IGRlZmF1bHQgKGludCk7CisrCisrCXB1YmxpYyBz dGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCWludCBhID0gZGVmYXVsdDsKKysJCXZhciBiID0g KGludCkgZGVmYXVsdDsKKysJCWNvbnN0IGludCBjID0gZGVmYXVsdDsKKysJCXZhciBkID0gbmV3 W10geyAxLCBkZWZhdWx0IH07CisrCQlkeW5hbWljIGUgPSBkZWZhdWx0OworKwkJaW50IGYgPSBj aGVja2VkIChkZWZhdWx0KTsKKysJCShpbnQgYSwgaW50IGIpIGcgPSAoMSwgZGVmYXVsdCk7Cisr CQl2YXIgaCA9IDEgIT0gZGVmYXVsdDsKKysJCXZhciBpID0gZGVmYXVsdCA9PSBNNCAoKTsKKysJ fQorKworKwlzdGF0aWMgaW50IE0xICgpCisrCXsKKysJCXJldHVybiBkZWZhdWx0OworKwl9Cisr CisrCXN0YXRpYyB2b2lkIE0yICgpCisrCXsKKysJCXRyeSB7CisrCQkJdGhyb3cgbmV3IFN5c3Rl bS5FeGNlcHRpb24gKCk7CisrCQl9IGNhdGNoIChTeXN0ZW0uRXhjZXB0aW9uKSB3aGVuIChkZWZh dWx0KSB7CisrCQl9CisrCisrCQlpZiAoZGVmYXVsdCkgewkJCQorKwkJfQorKwl9CisrCisrCXN0 YXRpYyB2b2lkIE0zIChpbnQgeCA9IGRlZmF1bHQpCisrCXsKKysJfQorKworKwlzdGF0aWMgU3lz dGVtLkZ1bmM8aW50PiBNNCAoKQorKwl7CisrCQlyZXR1cm4gKCkgPT4gZGVmYXVsdDsKKysJfSAK Kyt9CisrLyoKKytlbnVtIEUKKyt7CisrCUEgPSBkZWZhdWx0LAorKwlCID0gZGVmYXVsdCArIDEK Kyt9CisrKi8KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90 ZXN0cy90ZXN0LWRlZmF1bHQtMDIuY3MgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAyLmNzCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjAwMzk3ODJlNWYyCistLS0g L2Rldi9udWxsCisrKysgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAyLmNzCitAQCAtMCwwICsx LDMzIEBACisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK2Ns YXNzIEMKKyt7CisrCXN0YXRpYyB2b2lkIE1haW4oKQorKwl7CisrCQlNIChkZWZhdWx0LCAxKTsK KysKKysJCU0yIChkZWZhdWx0KTsKKysJCU0yIChudWxsKTsKKysKKysJCXZhciByZXMgPSBUZXN0 IChkZWZhdWx0KTsKKysJfQorKworKworKwlzdGF0aWMgdm9pZCBNPFQ+IChUIHgsIFQgeSkKKysJ eworKwl9CisrCisrCXN0YXRpYyB2b2lkIE0yIChwYXJhbXMgb2JqZWN0W10geCkKKysJeyAgICAg ICAgCisrCX0KKysKKysJc3RhdGljIGJ5dGVbXSBUZXN0IChTPGJ5dGU+IHgpCisrCXsKKysJCXJl dHVybiBudWxsOworKwl9CisrfQorKworK3N0cnVjdCBTPFQ+CisreworKworK30KK1wgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LWRpc2NhcmRz LTAxLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtZGlzY2FyZHMtMDEuY3MKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNTRjZjI5Nzc5YzYKKy0tLSAvZGV2L251bGwKKysrKyBi L21jcy90ZXN0cy90ZXN0LWRpc2NhcmRzLTAxLmNzCitAQCAtMCwwICsxLDM2IEBACisrdXNpbmcg U3lzdGVtOworKworK2NsYXNzIFgKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisr CXsKKysJCXN0cmluZyBzID0gbnVsbDsKKysKKysJCV8gPSAxOworKwkJeworKwkJCWNoYXIgXyA9 ICc0JzsKKysJCX0KKysKKysJCV8gPSBUZXN0VmFsdWUgKCk7CisrCisrCQlfID0gXyA9IHM7Cisr CisrCQlieXRlIGsxOworKwkJdmFyIHMxID0gKGsxLCBfKSA9ICgxLCBzKTsKKysKKysJCUZ1bmM8 b2JqZWN0PiBsMSA9ICgpID0+IF8gPSAoXywgXykgPSAoMSwgcyk7CisrCisrCQlUcnlHZXRWYWx1 ZSAob3V0IF8pOworKwl9CisrCisrCXN0YXRpYyBib29sIFRyeUdldFZhbHVlIChvdXQgaW50IGFy ZykKKysJeworKwkJYXJnID0gMzsKKysJCXJldHVybiB0cnVlOworKwl9CisrCisrCXN0YXRpYyBp bnQgVGVzdFZhbHVlICgpCisrCXsKKysJCXJldHVybiA0OworKwl9CisrfQorXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtbmFtZWQtMTEuY3Mg Yi9tY3MvdGVzdHMvdGVzdC1uYW1lZC0xMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAwLi5hMDFkMjg4M2I5YworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3Rz L3Rlc3QtbmFtZWQtMTEuY3MKK0BAIC0wLDAgKzEsMTMgQEAKKysvLyBDb21waWxlciBvcHRpb25z OiAtbGFuZ3ZlcnNpb246Ny4yCisrCisrY2xhc3MgWAorK3sKKysJcHVibGljIHN0YXRpYyB2b2lk IE1haW4gKCkKKysJeworKwkJVGVzdCAoYXJnOiAxLCAiIik7CisrCX0KKysKKysJc3RhdGljIHZv aWQgVGVzdCAoaW50IGFyZywgc3RyaW5nIHN0cikKKysJeworKwl9CisrfQorXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtcmVhZG9ubHktMDIu Y3MgYi9tY3MvdGVzdHMvdGVzdC1yZWFkb25seS0wMi5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAwLi4yMzFiOGNkOGZkYQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNz L3Rlc3RzL3Rlc3QtcmVhZG9ubHktMDIuY3MKK0BAIC0wLDAgKzEsMjcgQEAKKysvLyBDb21waWxl ciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrdXNpbmcgU3lzdGVtOworKworK3B1Ymxp YyBkZWxlZ2F0ZSByZWYgcmVhZG9ubHkgaW50IEQgKGludCB4KTsKKysKKytjbGFzcyBYCisrewor KwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCisrCX0KKysKKysJR3VpZCBnOwor KworKwlyZWYgcmVhZG9ubHkgR3VpZCBUZXN0TWV0aG9kICgpCisrCXsKKysJCXJldHVybiByZWYg ZzsKKysJfQorKworKwlyZWYgcmVhZG9ubHkgR3VpZCBUZXN0UHJvcCB7CisrCQlnZXQgeworKwkJ CXJlZiByZWFkb25seSB2YXIgcmcgPSByZWYgZzsKKysJCQlyZXR1cm4gcmVmIHJnOworKwkJfQor Kwl9CQorKworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21j cy90ZXN0cy90ZXN0LXJlYWRvbmx5LTAzLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtcmVhZG9ubHktMDMu Y3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMTRjYjk1OGI0MWEK Ky0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90ZXN0LXJlYWRvbmx5LTAzLmNzCitAQCAt MCwwICsxLDE2IEBACisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAor K3VzaW5nIFN5c3RlbTsKKysKKytyZWFkb25seSBzdHJ1Y3QgUworK3sKKysJc3RhdGljIFMgc2hh cmVkID0gbmV3IFMgKCk7CisrCisrCXB1YmxpYyBTIChpbnQgYXJnKQorKwl7CisrCQl0aGlzID0g c2hhcmVkOworKwl9CisrCisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJfQor K30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90 ZXN0LXJlZi0wNy5jcyBiL21jcy90ZXN0cy90ZXN0LXJlZi0wNy5jcworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi40YWExNjU3OTc1MgorLS0tIC9kZXYvbnVsbAorKysr IGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTA3LmNzCitAQCAtMCwwICsxLDMwIEBACisrLy8gQ29tcGls ZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK3B1YmxpYyByZWFkb25seSBwYXJ0 aWFsIHJlZiBzdHJ1Y3QgVGVzdAorK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJ eworKwkJdmFyIG0gPSBuZXcgVGVzdCAoKTsKKysJCW0uTWV0aG9kICgpOworKwl9CisrCisrCVRl c3QgTWV0aG9kICgpCisrCXsKKysJCXJldHVybiBuZXcgVGVzdCAoKTsKKysJfQorK30KKysKKyty ZWYgc3RydWN0IFNlY29uZAorK3sKKysJVGVzdCBmaWVsZDsKKyt9CisrCisrcHVibGljIGFic3Ry YWN0IGNsYXNzIFAKKyt7CisrCXB1YmxpYyBhYnN0cmFjdCBUZXN0IFNwYW4geyBnZXQ7IH0KKyt9 CisrCisrcHVibGljIGludGVyZmFjZSBJSQorK3sKKysJVGVzdCBTcGFuIHsgZ2V0OyB9CisrfQor ZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXJlZi0wOC5jcyBiL21jcy90ZXN0cy90ZXN0LXJl Zi0wOC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mNGZmNTBm NGM1YworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTA4LmNzCitAQCAt MCwwICsxLDEwMSBAQAorK3VzaW5nIFN5c3RlbTsKKysKKytuYW1lc3BhY2UgQ2xhc3NMaWJyYXJ5 MQorK3sKKysJcHVibGljIGNsYXNzIEMKKysJeworKworKwkJY2xhc3MgQgorKwkJeworKwkJCWlu dCB2OworKwkJCXB1YmxpYyByZWYgaW50IHRoaXNbaW50IGluZGV4XQorKwkJCXsKKysJCQkJZ2V0 CisrCQkJCXsKKysJCQkJCXJldHVybiByZWYgdjsKKysJCQkJfQorKwkJCX0KKysJCX0KKysKKysK KysJCWNsYXNzIEdlbjxUPiB3aGVyZSBUIDogc3RydWN0CisrCQl7CisrCQkJVCB2OworKwkJCXB1 YmxpYyByZWYgVCB0aGlzW2ludCBpbmRleF0KKysJCQl7CisrCQkJCWdldAorKwkJCQl7CisrCQkJ CQlyZXR1cm4gcmVmIHY7CisrCQkJCX0KKysJCQl9CisrCQl9CisrCisrCQlzdHJ1Y3QgVmFsCisr CQl7CisrCQl9CisrCisrCQljbGFzcyBCQgorKwkJeworKwkJCVZhbCB2OworKwkJCXB1YmxpYyBy ZWYgVmFsIHRoaXNbaW50IGluZGV4XQorKwkJCXsKKysJCQkJZ2V0CisrCQkJCXsKKysJCQkJCXJl dHVybiByZWYgdjsKKysJCQkJfQorKwkJCX0KKysJCX0KKysKKysJCXZvaWQgTU0gKCkKKysJCXsK KysJCQl2YXIgYmJiID0gbmV3IEJCKCk7CisrCQkJVmFsIHYxID0gYmJiWzBdOworKwkJCWJiYlsx XSA9IHYxOworKworKwkJCXJlZiBWYWwgdjIgPSByZWYgYmJiWzJdOworKwkJCWJiYlsyXSA9IHYy OworKwkJfQorKworKwkJc3RhdGljIGludFtdIGEgPSBuZXcgaW50WzFdOworKwkJcHVibGljIHN0 YXRpYyB2b2lkIE1haW4oKQorKwkJeworKwkJCXZhciBiYiA9IG5ldyBCKCk7CisrCQkJaW50IGIg PSAxOworKwkJCWJiWzBdID0gYjsKKysJCQlhWzBdID0gQWRkMihyZWYgYiwgMik7CisrCisrCQkJ dmFyIGJiYiA9IG5ldyBCQigpOworKwkJCWJiYlswXSA9IG5ldyBWYWwoKTsKKysKKysJCQl2YXIg diA9IG5ldyBWYWwoKTsKKysJCQliYmJbMV0gPSB2OworKworKwkJCXZhciB2MiA9IGJiYlsyXTsK KysKKysJCQliYmJbM10gPSB2MjsKKysKKysKKysJCQliYmJbM10gPSBiYmJbMl07CisrCisrCisr CisrCQkJdmFyIGdnZyA9IG5ldyBHZW48VmFsPigpOworKwkJCWdnZ1swXSA9IG5ldyBWYWwoKTsK KysKKysJCQl2YXIgZyA9IG5ldyBWYWwoKTsKKysJCQlnZ2dbMV0gPSB2OworKworKwkJCXZhciBn MiA9IGdnZ1syXTsKKysKKysJCQlnZ2dbM10gPSB2MjsKKysKKysKKysJCQlnZ2dbM10gPSBnZ2db Ml07CisrCQl9CisrCisrCQlwdWJsaWMgc3RhdGljIHJlZiBpbnQgQWRkMihyZWYgaW50IGEsIGlu dCBiKQorKwkJeworKwkJCXJldHVybiByZWYgYTsKKysJCX0KKysJfQorK30KK1wgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXJlZi0wOS5jcyBi L21jcy90ZXN0cy90ZXN0LXJlZi0wOS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAwMDAwLi41ZDBlODllNWMxYQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rl c3QtcmVmLTA5LmNzCitAQCAtMCwwICsxLDEyIEBACisrc3RydWN0IHJpZ2lkYm9keSB7IHB1Ymxp YyBmbG9hdCB4OyB9CisrCisrY2xhc3MgUHJvZ3JhbQorK3sKKysJc3RhdGljIHJpZ2lkYm9keSBh OworKwlzdGF0aWMgcmVmIHJpZ2lkYm9keSBwcm9wZXJ0eV9yZXR1cm5pbmdfc3RydWN0X2J5X3Jl ZiA9PiByZWYgYTsKKysKKysJc3RhdGljIHZvaWQgTWFpbigpCisrCXsKKysJCVN5c3RlbS5Db25z b2xlLldyaXRlTGluZSAocHJvcGVydHlfcmV0dXJuaW5nX3N0cnVjdF9ieV9yZWYueCk7CisrCX0K Kyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvdGVzdHMv dGVzdC1yZWYtMTAuY3MgYi9tY3MvdGVzdHMvdGVzdC1yZWYtMTAuY3MKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uODhlMjAxZDMxNzQKKy0tLSAvZGV2L251bGwKKysr KyBiL21jcy90ZXN0cy90ZXN0LXJlZi0xMC5jcworQEAgLTAsMCArMSwyNCBAQAorKy8vIENvbXBp bGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysKKyt1c2luZyBTeXN0ZW07CisrCisr cmVmIHN0cnVjdCBWYWx1ZVN0cmluZ0J1aWxkZXIKKyt7CisrCXB1YmxpYyBvdmVycmlkZSBzdHJp bmcgVG9TdHJpbmcgKCkKKysJeworKwkJcmV0dXJuICJhYWEiOworKwl9CisrfQorKworKworK2Ns YXNzIFgKKyt7CisrCXB1YmxpYyBzdGF0aWMgaW50IE1haW4gKCkKKysJeworKwkJdmFyIHMgPSBu ZXcgVmFsdWVTdHJpbmdCdWlsZGVyICgpOworKwkJaWYgKHMuVG9TdHJpbmcgKCkgIT0gImFhYSIp CisrCQkJcmV0dXJuIDE7CisrCisrCQlyZXR1cm4gMDsKKysJfQorK30KK1wgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXR1cGxlLTA3LmNzIGIv bWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDcuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwMC4uY2M3Y2U1ODM3Y2UKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90 ZXN0LXR1cGxlLTA3LmNzCitAQCAtMCwwICsxLDE2IEBACisrdXNpbmcgU3lzdGVtOworK3VzaW5n IFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOworKworKy8vIFBhcnNlciB0ZXN0cworKworK2Ns YXNzIFBhcnNlclRlc3QKKyt7CisrCUlFbnVtZXJhYmxlPChPYmplY3QgdmVydGV4LCBpbnQgZGlz dGFuY2UpPiBUZXN0ICgpCisrCXsKKysJCXJldHVybiBudWxsOworKwl9CisrCisrCXB1YmxpYyBz dGF0aWMgdm9pZCBNYWluICgpCisrCXsJCQorKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDkuY3MgYi9tY3MvdGVz dHMvdGVzdC10dXBsZS0wOS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw MDAwLi4zZjE1Y2FlNmNmMQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtdHVw bGUtMDkuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKyt1c2luZyBTeXN0ZW07CisrCisrY2xhc3MgVHVw bGVEZWNvbnN0cnVjdGlvbkRlY2xhcmF0aW9uCisreworKwlwdWJsaWMgc3RhdGljIGludCBNYWlu ICgpCisrCXsKKysJCShzdHJpbmcgcywgbG9uZyBsKSA9IEdldFZhbHVlcyAoKTsKKysJCSh2YXIg dnMsIHZhciB2bCkgPSBHZXRWYWx1ZXMgKCk7CisrCQkob2JqZWN0IG8sIHZhciB2bDIpID0gR2V0 VmFsdWVzICgpOworKwkJKHN0cmluZyBkcywgXykgPSBHZXRWYWx1ZXMgKCk7CisrCisrCQlyZXR1 cm4gMDsKKysJfQorKworKwlzdGF0aWMgKHN0cmluZywgbG9uZykgR2V0VmFsdWVzICgpCisrCXsK KysJCXJldHVybiAoImEiLCAzKTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy92ZXItaWwtbmV0XzRfeC54bWwgYi9tY3MvdGVzdHMv dmVyLWlsLW5ldF80X3gueG1sCitpbmRleCBjMmM5ODEyMzMwNS4uNGRiYzcwNDJhOGEgMTAwNjQ0 CistLS0gYS9tY3MvdGVzdHMvdmVyLWlsLW5ldF80X3gueG1sCisrKysgYi9tY3MvdGVzdHMvdmVy LWlsLW5ldF80X3gueG1sCitAQCAtMTQ2NTksNiArMTQ2NTksOSBAQAorICAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCBUZXN0XzIyKEJvb2xlYW4pIiBhdHRycz0iMTI5Ij4KKyAgICAgICAgIDxzaXpl PjI0PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBU ZXN0XzIzKFN5c3RlbS5TdHJpbmcpIiBhdHRycz0iMTI5Ij4KKysgICAgICAgIDxzaXplPjE2PC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisgICA8dGVz dCBuYW1lPSJndGVzdC00MTAuY3MiPgorQEAgLTUyODA4LDYgKzUyODExLDE5IEBACisgICAgICAg PC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3Qt OTQ4LmNzIj4KKysgICAgPHR5cGUgbmFtZT0iWCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4xNjwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgRm9vKCkiIGF0dHJzPSIxMjkiPgor KyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3Qg bmFtZT0idGVzdC05NS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlgiPgorICAgICAgIDxtZXRob2Qg bmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BAIC02Njg5Myw2ICs2NjkwOSwxMTcg QEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90ZXN0PgorKyAgPHRlc3Qg bmFtZT0idGVzdC1hc3luYy05NC5jcyI+CisrICAgIDx0eXBlIG5hbWU9Ik15VGFza2AxW1RdIj4K KysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAg ICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8 dHlwZSBuYW1lPSJNeVRhc2siPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBh dHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgor KyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9Ik15VGFza01ldGhvZEJ1aWxkZXIiPgorKyAg ICAgIDxtZXRob2QgbmFtZT0iTXlUYXNrTWV0aG9kQnVpbGRlciBDcmVhdGUoKSIgYXR0cnM9IjE1 MCI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8 bWV0aG9kIG5hbWU9Ik15VGFzayBnZXRfVGFzaygpIiBhdHRycz0iMjE4MiI+CisrICAgICAgICA8 c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZv aWQgU2V0RXhjZXB0aW9uKFN5c3RlbS5FeGNlcHRpb24pIiBhdHRycz0iMTM0Ij4KKysgICAgICAg IDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJW b2lkIFNldFJlc3VsdCgpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEF3YWl0T25Db21wbGV0 ZWRbVEF3YWl0ZXIsVFN0YXRlTWFjaGluZV0oVEF3YWl0ZXIgQnlSZWYsIFRTdGF0ZU1hY2hpbmUg QnlSZWYpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9t ZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEF3YWl0VW5zYWZlT25Db21wbGV0ZWRb VEF3YWl0ZXIsVFN0YXRlTWFjaGluZV0oVEF3YWl0ZXIgQnlSZWYsIFRTdGF0ZU1hY2hpbmUgQnlS ZWYpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRo b2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFN0YXJ0W1RTdGF0ZU1hY2hpbmVdKFRTdGF0 ZU1hY2hpbmUgQnlSZWYpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNldFN0YXRlTWFjaGlu ZShTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzLklBc3luY1N0YXRlTWFjaGluZSkiIGF0 dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAg PHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlw ZSBuYW1lPSJNeVRhc2tNZXRob2RCdWlsZGVyYDFbVF0iPgorKyAgICAgIDxtZXRob2QgbmFtZT0i TXlUYXNrTWV0aG9kQnVpbGRlcmAxW1RdIENyZWF0ZSgpIiBhdHRycz0iMTUwIj4KKysgICAgICAg IDxzaXplPjEwPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0i TXlUYXNrYDFbVF0gZ2V0X1Rhc2soKSIgYXR0cnM9IjIxODIiPgorKyAgICAgICAgPHNpemU+MTA8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNldEV4 Y2VwdGlvbihTeXN0ZW0uRXhjZXB0aW9uKSIgYXR0cnM9IjEzNCI+CisrICAgICAgICA8c2l6ZT4y PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBTZXRS ZXN1bHQoVCkiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgQXdhaXRPbkNvbXBsZXRlZFtUQXdh aXRlcixUU3RhdGVNYWNoaW5lXShUQXdhaXRlciBCeVJlZiwgVFN0YXRlTWFjaGluZSBCeVJlZiki IGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4K KysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgQXdhaXRVbnNhZmVPbkNvbXBsZXRlZFtUQXdhaXRl cixUU3RhdGVNYWNoaW5lXShUQXdhaXRlciBCeVJlZiwgVFN0YXRlTWFjaGluZSBCeVJlZikiIGF0 dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgU3RhcnRbVFN0YXRlTWFjaGluZV0oVFN0YXRlTWFjaGlu ZSBCeVJlZikiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgU2V0U3RhdGVNYWNoaW5lKFN5c3Rl bS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMuSUFzeW5jU3RhdGVNYWNoaW5lKSIgYXR0cnM9IjEz NCI+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxt ZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43 PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9 IlgiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iTXlUYXNrIFRlc3QoKSIgYXR0cnM9IjEzNCI+Cisr ICAgICAgICA8c2l6ZT4zMzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9Ik15VGFza2AxW1N5c3RlbS5JbnQzMl0gVGVzdDIoKSIgYXR0cnM9IjEzNCI+CisrICAg ICAgICA8c2l6ZT4zMzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5h bWU9IlN5c3RlbS5UaHJlYWRpbmcuVGFza3MuVmFsdWVUYXNrYDFbU3lzdGVtLlN0cmluZ10gVGVz dDMoKSIgYXR0cnM9IjEzNCI+CisrICAgICAgICA8c2l6ZT4zMzwvc2l6ZT4KKysgICAgICA8L21l dGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysg ICAgICAgIDxzaXplPjIzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXpl PgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9IlgrJmx0 O1Rlc3QmZ3Q7Y19fYXN5bmMwIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTW92ZU5leHQo KSIgYXR0cnM9IjQ4NiI+CisrICAgICAgICA8c2l6ZT4xNTc8L3NpemU+CisrICAgICAgPC9tZXRo b2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNldFN0YXRlTWFjaGluZShTeXN0ZW0uUnVu dGltZS5Db21waWxlclNlcnZpY2VzLklBc3luY1N0YXRlTWFjaGluZSkiIGF0dHJzPSI0ODYiPgor KyAgICAgICAgPHNpemU+MTM8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4K KysgICAgPHR5cGUgbmFtZT0iWCsmbHQ7VGVzdDImZ3Q7Y19fYXN5bmMxIj4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlZvaWQgTW92ZU5leHQoKSIgYXR0cnM9IjQ4NiI+CisrICAgICAgICA8c2l6ZT4x NjU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNl dFN0YXRlTWFjaGluZShTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzLklBc3luY1N0YXRl TWFjaGluZSkiIGF0dHJzPSI0ODYiPgorKyAgICAgICAgPHNpemU+MTM8L3NpemU+CisrICAgICAg PC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0iWCsmbHQ7VGVzdDMmZ3Q7 Y19fYXN5bmMyIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTW92ZU5leHQoKSIgYXR0cnM9 IjQ4NiI+CisrICAgICAgICA8c2l6ZT4xNjk8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAg ICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNldFN0YXRlTWFjaGluZShTeXN0ZW0uUnVudGltZS5Db21w aWxlclNlcnZpY2VzLklBc3luY1N0YXRlTWFjaGluZSkiIGF0dHJzPSI0ODYiPgorKyAgICAgICAg PHNpemU+MTM8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVz dD4KKyAgIDx0ZXN0IG5hbWU9InRlc3QtY2xzLTAwLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iQ0xT Q0xhc3NfNiI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIGFkZF9EaXNwb3NlZChEZWxlZ2F0 ZSkiIGF0dHJzPSIyMTgyIj4KK0BAIC02ODUyNyw2ICs2ODY1NCw0NyBAQAorICAgICAgIDwvbWV0 aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LWRlZmF1 bHQtMDEuY3MiPgorKyAgICA8dHlwZSBuYW1lPSJYIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZv aWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjUzPC9zaXplPgorKyAgICAg IDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTTEoKSIgYXR0cnM9IjE0NSI+ CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlZvaWQgTTIoKSIgYXR0cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4zMTwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTTMoSW50MzIp IiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uRnVuY2AxW1N5c3RlbS5JbnQzMl0gTTQoKSIg YXR0cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4zODwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4K KysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyICZsdDtNNCZndDttX18wKCkiIGF0dHJzPSIxNDUi PgorKyAgICAgICAgPHNpemU+OTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBl PgorKyAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVzdC1kZWZhdWx0LTAyLmNzIj4KKysgICAg PHR5cGUgbmFtZT0iQyI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9 IjE0NSI+CisrICAgICAgICA8c2l6ZT4zNjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAg ICA8bWV0aG9kIG5hbWU9IlZvaWQgTVtUXShULCBUKSIgYXR0cnM9IjE0NSI+CisrICAgICAgICA8 c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9p ZCBNMihTeXN0ZW0uT2JqZWN0W10pIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjI8L3Np emU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCki IGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJCeXRlW10gVGVzdChTYDFbU3lzdGVtLkJ5dGVdKSIgYXR0 cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysg ICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC1kaWN0aW5pdC0wMS5j cyI+CisgICAgIDx0eXBlIG5hbWU9IlByb2dyYW0iPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50 MzIgTWFpbigpIiBhdHRycz0iMTQ1Ij4KK0BAIC02ODYxMCw2ICs2ODc3OCwzMCBAQAorICAgICAg IDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0 LWRpc2NhcmRzLTAxLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iWCI+CisrICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT42Mzwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gVHJ5R2V0VmFs dWUoSW50MzIgQnlSZWYpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgor KyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgVGVzdFZhbHVlKCki IGF0dHJzPSIxNDUiPgorKyAgICAgICAgPHNpemU+MTA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAg ICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAg PHR5cGUgbmFtZT0iWCsmbHQ7TWFpbiZndDtjX19Bbm9uU3RvcmV5MCI+CisrICAgICAgPG1ldGhv ZCBuYW1lPSJTeXN0ZW0uT2JqZWN0ICZsdDsmZ3Q7bV9fMCgpIiBhdHRycz0iMTMxIj4KKysgICAg ICAgIDxzaXplPjI1PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFt ZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgor KyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1l PSJ0ZXN0LWV4LWZpbHRlci0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlgiPgorICAgICAgIDxt ZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BAIC03MDY4OSw2ICs3MDg4 MSwxOSBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8 dGVzdCBuYW1lPSJ0ZXN0LW5hbWVkLTExLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iWCI+CisrICAg ICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6 ZT4xMzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQg VGVzdChJbnQzMiwgU3lzdGVtLlN0cmluZykiIGF0dHJzPSIxNDUiPgorKyAgICAgICAgPHNpemU+ Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0 b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21l dGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC1uYW1l b2YtMDEuY3MiPgorICAgICA8dHlwZSBuYW1lPSJYIj4KKyAgICAgICA8bWV0aG9kIG5hbWU9Iklu dDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNzI3NzgsNiArNzI5ODMsNDkgQEAKKyAgICAg ICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVz dC1yZWFkb25seS0wMi5jcyI+CisrICAgIDx0eXBlIG5hbWU9IkQiPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iSW50MzImYW1wOyBJbnZva2UoSW50MzIpIiBhdHRycz0iNDU0Ij4KKysgICAgICAgIDxz aXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0 ZW0uSUFzeW5jUmVzdWx0IEJlZ2luSW52b2tlKEludDMyLCBTeXN0ZW0uQXN5bmNDYWxsYmFjaywg U3lzdGVtLk9iamVjdCkiIGF0dHJzPSI0NTQiPgorKyAgICAgICAgPHNpemU+MDwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyJmFtcDsgRW5kSW52b2tl KFN5c3RlbS5JQXN5bmNSZXN1bHQpIiBhdHRycz0iNDU0Ij4KKysgICAgICAgIDxzaXplPjA8L3Np emU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKE9i amVjdCwgSW50UHRyKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+MDwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSJYIj4KKysgICAg ICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXpl PjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0u R3VpZCZhbXA7IFRlc3RNZXRob2QoKSIgYXR0cnM9IjEyOSI+CisrICAgICAgICA8c2l6ZT4xNTwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5HdWlk JmFtcDsgZ2V0X1Rlc3RQcm9wKCkiIGF0dHJzPSIyMTc3Ij4KKysgICAgICAgIDxzaXplPjE3PC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3Rvcigp IiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9k PgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LXJlYWRvbmx5 LTAzLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iUyI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwv bWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcihJbnQzMikiIGF0dHJzPSI2 Mjc4Ij4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAg IDxtZXRob2QgbmFtZT0iVm9pZCAuY2N0b3IoKSIgYXR0cnM9IjYyODkiPgorKyAgICAgICAgPHNp emU+MTU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4K KyAgIDx0ZXN0IG5hbWU9InRlc3QtcmVmLTAxLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iWCI+Cisg ICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNzI5MDYs NiArNzMxNTQsOTUgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90ZXN0 PgorKyAgPHRlc3QgbmFtZT0idGVzdC1yZWYtMDcuY3MiPgorKyAgICA8dHlwZSBuYW1lPSJUZXN0 Ij4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAg ICAgIDxzaXplPjE4PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFt ZT0iVGVzdCBNZXRob2QoKSIgYXR0cnM9IjEyOSI+CisrICAgICAgICA8c2l6ZT4xODwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSJQIj4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlRlc3QgZ2V0X1NwYW4oKSIgYXR0cnM9IjM1MjYiPgorKyAgICAg ICAgPHNpemU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9 IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzYiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0i dGVzdC1yZWYtMDguY3MiPgorKyAgICA8dHlwZSBuYW1lPSJDbGFzc0xpYnJhcnkxLkMiPgorKyAg ICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNTSgpIiBhdHRycz0iMTI5Ij4KKysgICAgICAgIDxzaXpl PjYwPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBN YWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+MjQ1PC9zaXplPgorKyAgICAgIDwv bWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzImYW1wOyBBZGQyKEludDMyIEJ5UmVm LCBJbnQzMikiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+MTA8L3NpemU+CisrICAgICAg PC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4 Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1l dGhvZCBuYW1lPSJWb2lkIC5jY3RvcigpIiBhdHRycz0iNjI4OSI+CisrICAgICAgICA8c2l6ZT4x Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1l PSJDbGFzc0xpYnJhcnkxLkMrQiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiZhbXA7IGdl dF9JdGVtKEludDMyKSIgYXR0cnM9IjIxODIiPgorKyAgICAgICAgPHNpemU+MTU8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJz PSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAg IDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0iQ2xhc3NMaWJyYXJ5MS5DK0dlbmAxW1RdIj4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlQmYW1wOyBnZXRfSXRlbShJbnQzMikiIGF0dHJzPSIyMTgyIj4K KysgICAgICAgIDxzaXplPjE1PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9IkNs YXNzTGlicmFyeTEuQytCQiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWYWwmYW1wOyBnZXRfSXRl bShJbnQzMikiIGF0dHJzPSIyMTgyIj4KKysgICAgICAgIDxzaXplPjE1PC9zaXplPgorKyAgICAg IDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3 OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5 cGU+CisrICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LXJlZi0wOS5jcyI+CisrICAgIDx0 eXBlIG5hbWU9IlByb2dyYW0iPgorKyAgICAgIDxtZXRob2QgbmFtZT0icmlnaWRib2R5JmFtcDsg Z2V0X3Byb3BlcnR5X3JldHVybmluZ19zdHJ1Y3RfYnlfcmVmKCkiIGF0dHJzPSIyMTkzIj4KKysg ICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNDUiPgorKyAgICAgICAgPHNpemU+MTc8L3NpemU+ CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0 dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+Cisr ICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtcmVmLTEwLmNzIj4K KysgICAgPHR5cGUgbmFtZT0iVmFsdWVTdHJpbmdCdWlsZGVyIj4KKysgICAgICA8bWV0aG9kIG5h bWU9IlN5c3RlbS5TdHJpbmcgVG9TdHJpbmcoKSIgYXR0cnM9IjE5OCI+CisrICAgICAgICA8c2l6 ZT4xNDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBu YW1lPSJYIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+ CisrICAgICAgICA8c2l6ZT40Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRl c3QgbmFtZT0idGVzdC1zdGF0aWMtdXNpbmctMDEuY3MiPgorICAgICA8dHlwZSBuYW1lPSJBLkIu WCI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBUZXN0KCkiIGF0dHJzPSIxNTAiPgorQEAg LTczMzc0LDYgKzczNzExLDU2IEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAg IDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtdHVwbGUtMDcuY3MiPgorKyAgICA8dHlwZSBu YW1lPSJQYXJzZXJUZXN0Ij4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5Db2xsZWN0aW9u cy5HZW5lcmljLklFbnVtZXJhYmxlYDFbU3lzdGVtLlZhbHVlVHVwbGVgMltTeXN0ZW0uT2JqZWN0 LFN5c3RlbS5JbnQzMl1dIFRlc3QoKSIgYXR0cnM9IjEyOSI+CisrICAgICAgICA8c2l6ZT4xMDwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigp IiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAg ICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwv dGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtdHVwbGUtMDguY3MiPgorKyAgICA8dHlwZSBuYW1l PSJYIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysg ICAgICAgIDxzaXplPjE5PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iU3lzdGVtLlRocmVhZGluZy5UYXNrcy5UYXNrIFRlc3QoKSIgYXR0cnM9IjEyOSI+Cisr ICAgICAgICA8c2l6ZT40MTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlN5c3RlbS5UaHJlYWRpbmcuVGFza3MuVGFza2AxW1N5c3RlbS5WYWx1ZVR1cGxlYDJb U3lzdGVtLkludDMyLFN5c3RlbS5JbnQzMl1dIFdhaXRpbmcoKSIgYXR0cnM9IjEyOSI+CisrICAg ICAgICA8c2l6ZT4yMTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5h bWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSJYKyZsdDtU ZXN0Jmd0O2NfX2FzeW5jMCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1vdmVOZXh0KCki IGF0dHJzPSI0ODYiPgorKyAgICAgICAgPHNpemU+MjEyPC9zaXplPgorKyAgICAgIDwvbWV0aG9k PgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBTZXRTdGF0ZU1hY2hpbmUoU3lzdGVtLlJ1bnRp bWUuQ29tcGlsZXJTZXJ2aWNlcy5JQXN5bmNTdGF0ZU1hY2hpbmUpIiBhdHRycz0iNDg2Ij4KKysg ICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+Cisr ICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LXR1cGxlLTA5LmNzIj4KKysgICAgPHR5cGUg bmFtZT0iVHVwbGVEZWNvbnN0cnVjdGlvbkRlY2xhcmF0aW9uIj4KKysgICAgICA8bWV0aG9kIG5h bWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT45OTwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5WYWx1ZVR1cGxl YDJbU3lzdGVtLlN0cmluZyxTeXN0ZW0uSW50NjRdIEdldFZhbHVlcygpIiBhdHRycz0iMTQ1Ij4K KysgICAgICAgIDxzaXplPjIxPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisgICA8dGVz dCBuYW1lPSJ0ZXN0LXZhci0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlRlc3QiPgorICAgICAg IDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KLS0gCjIuNDUuMgoK --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0015-gnu-Add-mono-5.4.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0015-gnu-Add-mono-5.4.0.patch RnJvbSAzZDMyNzc0Y2NlNzk3MzgxMzMyYzhlOTRmZmYxYTc5NzU5N2UxOTY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogVHVl LCAyNiBOb3YgMjAyNCAxMzozNjo0NgpTdWJqZWN0OiBbUEFUQ0ggdjIgMTUvMjFdIGdudTogQWRk IG1vbm8tNS40LjAuCgoqIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCiAgKG1vbm8tNS40LjAtZXh0 ZXJuYWwtcmVwby1zcGVjcywgbW9uby01LjQuMCk6IE5ldyB2YXJpYWJsZXMuCiogZ251L3BhY2th Z2VzL3BhdGNoZXMvY29yZWZ4LW1vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaDogTmV3IHBhdGNoLgoq IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaDogTmV3IHBhdGNo LgoqIGdudS9sb2NhbC5tayAoZGlzdF9wYXRjaF9EQVRBKTogUmVnaXN0ZXIgbmV3IHBhdGNoZXMu CgotLS0KIGdudS9sb2NhbC5tayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArCiBnbnUvcGFja2FnZXMvZG90bmV0LnNjbSAgICAgICAgICAgICAgICAgICAgICAgfCAgOTIg KysKIC4uLi9wYXRjaGVzL2NvcmVmeC1tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2ggICB8IDkxNSAr KysrKysrKysrKysrKysrKysKIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hl cy5wYXRjaCB8IDEwMCArKwogNCBmaWxlcyBjaGFuZ2VkLCAxMTA5IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby01LjQuMC1w YXRjaGVzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9u by01LjQuMC1wYXRjaGVzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xv Y2FsLm1rCmluZGV4IDY1Nzk5YWM1ZTE4Li5iMTEwOGY3OWU0ZSAxMDA2NDQKLS0tIGEvZ251L2xv Y2FsLm1rCisrKyBiL2dudS9sb2NhbC5tawpAQCAtMTExNyw2ICsxMTE3LDcgQEAgZGlzdF9wYXRj aF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2NvbnZlcnNlZW4taGlkZS1u b24tZnJlZS1wb2ludGVycy5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2Nvb2wtcmV0 cm8tdGVybS13Y3R5cGUucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvY29xLWF1dG9z dWJzdC0xLjgtcmVtb3ZlLWRlcHJlY2F0ZWQtZmlsZXMucGF0Y2gJCVwKKyAgJUQlL3BhY2thZ2Vz L3BhdGNoZXMvY29yZWZ4LW1vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaAkJXAogICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9jb3JldXRpbHMtZ251bGliLXRlc3RzLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdl cy9wYXRjaGVzL2NwcGNoZWNrLWRpc2FibGUtY2hhci1zaWduZWRuZXNzLXRlc3QucGF0Y2gJXAog ICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jcHBkYXAtYWRkLUNQUERBUF9VU0VfRVhURVJOQUxfR1RF U1RfUEFDS0FHRS5wYXRjaFwKQEAgLTE4MzAsNiArMTgzMSw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9 CQkJCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuNi40LWZpeGVzLnBhdGNoCQkJ XAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuMTEuNC1maXhlcy5wYXRjaAkJCVwKICAg JUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgtcnVudGltZW1ldGFkYXRhdmVyc2lv bi5wYXRjaAkJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuNC4wLXBhdGNoZXMucGF0 Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9zYWljYXRjaGVyLXVuYnVuZGxlLWh0c2xp Yi5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21ycmVzY3VlLXN1cHBvcnQtbG92ZS0x MS5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tdG9vbHMtbWZvcm1hdC11bmluaXRp YWxpemVkLnBhdGNoCVwKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtIGIvZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20KaW5kZXggYmYxNDE0MzY4YjMuLjk0NzU2MjM3ZTI0IDEwMDY0 NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMvZG90bmV0 LnNjbQpAQCAtMTE1OSwzICsxMTU5LDk1IEBAIChkZWZpbmUtcHVibGljIG1vbm8tNS4yLjAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpKSkKICAg ICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRzIG1v bm8tNS4xLjApCiAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby01LjEu MCkpKSkpCisKKyhkZWZpbmUgbW9uby01LjQuMC1leHRlcm5hbC1yZXBvLXNwZWNzCisgICcoKCJh c3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4NDQ3ZjYwOWU4 ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEyNjRkMnFrbW0zNDhtOGQxa2pk N3o0bDk0aWlpcnduMWZxMSIpCisgICAgKCJhcGktZG9jLXRvb2xzIiAgICAgICAgICAgICAgICJk MDNlODE5ODM4YzYyNDFmOTJmOTA2NTVjYjQ0OGNjNDdjOWU4NzkxIgorICAgICAiMXJpa2k3OWYz aWczY3hpZ3Zpc3M4MWR6NjAxaG45MmExZ2lmZ2xtMG16amJzNzZzZjNmaiIKKyAgICAgIzpyZWN1 cnNpdmU/ICN0KQorICAgICgiYXBpLXNuYXBzaG90IiAgICAgICAgICAgICAgICAiYjA5MDMzYmUz M2FiMjUxMTM3NDMxNTFjNjQ0YzgzMTE1OGM1NDA0MiIKKyAgICAgIjB6NjdpcWQxYnJpYjZuaTM2 cGtscnA3cmx4eWhyaTVuazNweDM3Zm0xYWFjZ3Juc2s3Y2siKQorICAgICgoInJlZmVyZW5jZS1h c3NlbWJsaWVzIiAiYmluYXJ5LXJlZmVyZW5jZS1hc3NlbWJsaWVzIikKKyAgICAgIjE0MmNiZWI2 MmZmYWJmMWRkOWMxNDE0ZDhkZDc2ZjkzYmNiZWQwYzIiCisgICAgICIxd2tkNTg5aGdiMTZtNXp2 bXA5eWI1N2FneXlyeWFhMWpqOHZobDR3MjBpMmhwMjJ3YWQ5IikKKyAgICAoImJvY2tidWlsZCIg ICAgICAgICAgICAgICAgICAgIjBlZmRiMzcxZTZkNzlhYmM1NGMwZTNiYjM2ODlmYTE2NDZmNDM5 NGUiCisgICAgICIxMHFyMW0yd2EzemIyaTNqMTZpMGNxNDloaWdqbTQ1MWJobHFocWQ0cmxpc3Fu MHc4bnJ2IikKKyAgICAoImJvcmluZ3NzbCIgICAgICAgICAgICAgICAgICAgIjNlMDc3MGUxODgz NTcxNDcwODg2MGJhOWZlMWFmMDRhOTMyOTcxZmYiCisgICAgICIxMzlhMGdsOTFhNTJrMnI2bmE2 aWFsemtxeWthajFyazg4empya2F6M3NkeHg3bm1tZzZ5IikKKyAgICAoImNlY2lsIiAgICAgICAg ICAgICAgICAgICAgICAgImMwZWI5ODNkYWM2MjUxOWQzYWU5M2E2ODkzMTIwNzZhYWNlY2I3MjMi CisgICAgICIwMmkzcHdwYWY2cTAwcGtsZm13eGh6MGxncDgzODU0ZHlxbnZmNGMxeXMwN2NzOHkx cGRrIikKKyAgICAoKCJjZWNpbCIgImNlY2lsLWxlZ2FjeSIpICAgICAgIjMzZDUwYjg3NGZkNTI3 MTE4YmMzNjFkODNkZTNkNDk0ZThiYjU1ZTEiCisgICAgICIxcDRobDE3OTZpYjI2eWt5ZjVzbmw2 Y2owbHgwdjdtamgweHFoanc2cWRoNzUzbnNqeWhiIikKKyAgICAoImNvcmVmeCIgICAgICAgICAg ICAgICAgICAgICAgIjlhZDUzZDY3NGUzMTMyN2FiY2M2MGYzNWMxNDM4NzcwMGY1MGNjNjgiCisg ICAgICIwYXA0ZzJmajh3c2FyNHh2YmM2ZGtkMmw2N3FhbHhsY3c1bGFwbHEzYW41bnZqMmxkNjV3 IgorICAgICAjOnBhdGNoZXMgKCJjb3JlZngtbW9uby01LjQuMC1wYXRjaGVzLnBhdGNoIikpCisg ICAgKCJjb3JlcnQiICAgICAgICAgICAgICAgICAgICAgICI0OGRiYTczODAxZTgwNGU4OWYwMDMx MWRhOTlkODczZjljNTUwMjc4IgorICAgICAiMXp3NDdqZjRjd3FtYWl4eWxpc3hpNzN4ZjZjYXA0 MWJ3Zjl2bG1weGFuenhhcWtsenN2ayIpCisgICAgKCJpa2Rhc20iICAgICAgICAgICAgICAgICAg ICAgICIxZDdkNDM2MDM3OTFlMDIzNmI1NmQwNzY1Nzg2NTdiZWU0NGZlZjZiIgorICAgICAiMWt3 OHlra2FkNTVxaGFwZzZqYnZxaW03dmFpbnFscHo4NDY5ZmxtMDgzbHB6N3BrczNzZyIpCisgICAg KCgiaWt2bS1mb3JrIiAiaWt2bSIpICAgICAgICAgICI4NDdlMDVmY2VkNWM5YTQxZmYwZjI0ZjFm OWQ0MGQ1YThhNTc3MmMxIgorICAgICAiMWZsOWJtM2xtemY4aXF2M3g0aXFrejlmYzU0bXdkdnJ4 aXN4ZzJudnd3Y3NpNHNhZmZwaSIpCisgICAgKCJsaW5rZXIiICAgICAgICAgICAgICAgICAgICAg ICI5OTM1NGJmNWMxM2I4MDU1MjA5Y2IwODJjZGRjNTBjODA0N2FiMDg4IgorICAgICAiMDV6bGFq bnFmODN4ZnZuMndoaDlucWw2ajg1c3ExMmF3MjZzcW15cXo3emNwbWwxNzFtaiIpCisgICAgKCJO ZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICI0NzFjM2UwODAzYTlmNDBhMGFjYzhhZWNlYjMx ZGU2ZmY5M2E1MmM0IgorICAgICAiMGRnbmdkNWhxazZ5aGxnNDBrYWJuNnFkbmtubTMyemN4OXE2 Ym0ydzMxY3Nuc2s1OTc4cyIpCisgICAgKCgiTnVHZXQuQnVpbGRUYXNrcyIgIm51Z2V0LWJ1aWxk dGFza3MiKQorICAgICAiYjU4YmE0MjgyMzc3YmNlZmQ0OGFiZGMyZDYyY2U2MzMwZTA3OWFiZSIK KyAgICAgIjFzYXkwM2ZucWtqc3g5N3phY2FueTNzYTVqNG1oZms4Mjdoa3dwMjNpYjAycTE4Zjds dnAiKQorICAgICgoIk5Vbml0TGl0ZSIgIm51bml0LWxpdGUiKSAgICAiNjkwNjAzYmVhOThhYWU2 OWZjYTlhNjUxMzBkODg1OTFiYzZjYWJlZSIKKyAgICAgIjFmODQ1eXNqenMzeWQ5Z2N5d3c2NmRu a3g0ODR6NWZrbmI4bDB4ejc0c2pteGsybW5nd2MiKQorICAgIDs7ICgicm9zbHluLWJpbmFyaWVz IiAgICAgICAgICAiMTkwNGM3ZDA2ODJhODc4ZTJkMjViNGQ0OWYzNDc1ZDEyZmJiOWNjNiIKKyAg ICA7OyAgIiIpCisgICAgKCJyeCIgICAgICAgICAgICAgICAgICAgICAgICAgICJiMjlhNGIwZmRh NjA5ZTBhZjMzZmY1NGVkMTM2NTJiNmNjZjBlMDVlIgorICAgICAiMW4xandobXNia2N2MmQ4MDZp bW1jcHprYjcycnowNHh5OThteXczNTVhOHc1YWgyNXlpdiIpCisgICAgOzsgKCJ4dW5pdC1iaW5h cmllcyIgICAgICAgICAgICJkNDQzM2IwOTcyZjQwY2IzZWZhYTNmYmJhNTI4NjliZGU1ZGY4ZmE4 IgorICAgIDs7ICAiIikKKyAgICApKQorCisoZGVmaW5lLXB1YmxpYyBtb25vLTUuNC4wCisgIChw YWNrYWdlCisgICAgKGluaGVyaXQgbW9uby01LjIuMCkKKyAgICAodmVyc2lvbiAiNS40LjAuMjEy IikKKyAgICAobmFtZSAibW9ubyIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAg IChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpCisgICAgICAgICAgICAgICAo Z2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLndpbmVo cS5vcmcvbW9uby9tb25vLmdpdCIpCisgICAgICAgICAgICAgICAgKGNvbW1pdAorICAgICAgICAg ICAgICAgICA7OyA1LjQuMC4xMzUgYW5kIGJlZm9yZSBoYXZlIGEgYnVnIHRoYXQgbWFrZXMgbW9u byBub3QKKyAgICAgICAgICAgICAgICAgOzsgc2VsZi1ob3N0aW5nIChmYWlscyB0byBjb21waWxl IHNlbGYsIGV4YW1wbGUgZXJyb3I6CisgICAgICAgICAgICAgICAgIDs7IFN5c3RlbS5EYXRhLlNx bENsaWVudC9TcWxUcmFuc2FjdGlvbi5jcygzOSwyMik6IGVycm9yCisgICAgICAgICAgICAgICAg IDs7IENTMDczODogYFN5c3RlbS5EYXRhLlNxbENsaWVudC5TcWxUcmFuc2FjdGlvbicgZG9lcyBu b3QKKyAgICAgICAgICAgICAgICAgOzsgaW1wbGVtZW50IGludGVyZmFjZSBtZW1iZXIKKyAgICAg ICAgICAgICAgICAgOzsgYFN5c3RlbS5EYXRhLklEYlRyYW5zYWN0aW9uLkNvbm5lY3Rpb24uZ2V0 JyBhbmQgdGhlIGJlc3QKKyAgICAgICAgICAgICAgICAgOzsgaW1wbGVtZW50aW5nIGNhbmRpZGF0 ZQorICAgICAgICAgICAgICAgICA7OyBgU3lzdGVtLkRhdGEuU3FsQ2xpZW50LlNxbFRyYW5zYWN0 aW9uLkNvbm5lY3Rpb24uZ2V0JworICAgICAgICAgICAgICAgICA7OyByZXR1cm4gdHlwZSBgU3lz dGVtLkRhdGEuU3FsQ2xpZW50LlNxbENvbm5lY3Rpb24nIGRvZXMgbm90CisgICAgICAgICAgICAg ICAgIDs7IG1hdGNoIGludGVyZmFjZSBtZW1iZXIgcmV0dXJuIHR5cGUKKyAgICAgICAgICAgICAg ICAgOzsgYFN5c3RlbS5EYXRhLklEYkNvbm5lY3Rpb24nCisKKyAgICAgICAgICAgICAgICAgOzsg Tm90ZTogaW4gYWJvdmUgZXhhbXBsZSwgU3FsQ29ubmVjdGlvbiBpbXBsZW1lbnRzCisgICAgICAg ICAgICAgICAgIDs7IElEYkNvbm5lY3Rpb24uICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgZm9y IHRoaXMgdG8KKyAgICAgICAgICAgICAgICAgOzsgY29tcGlsZSBwcm9wZXJseSwgd2UgbmVlZCBj b3ZhcmlhbnQgcmV0dXJuIHR5cGVzLCB3aGljaCBpcworICAgICAgICAgICAgICAgICA7OyBhIEMj IDkuMCBmZWF0dXJlLCBidXQgc29tZWhvdyB0aGUgc2FtZSBjb2RlIGhhcyBiZWVuCisgICAgICAg ICAgICAgICAgIDs7IGNvbXBpbGVkIGp1c3QgZmluZSBieSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBt b25vLCBhbmQgaXMKKyAgICAgICAgICAgICAgICAgOzsgY29tcGlsZWQgZmluZSBieSB0aGlzIHZl cnNpb24sIGJ1dCBub3Qgc3BlY2lmaWMgNS40LjAuWFhYCisgICAgICAgICAgICAgICAgIDs7IHZl cnNpb25zLgorICAgICAgICAgICAgICAgICAibW9uby01LjQuMC4yMTIiKSkpCisgICAgICAgICAg ICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAg ICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMgorICAgICAgICAgICAgICAgICIwZ3gz Znh6MXdscTVma2o3aXBodjMydmc5bTc4aWE3NG05cGduOXJhYjRmeXEyazlhbjJ5IikpCisgICAg ICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkKKyAgICAgICAgICAgICAgKHNuaXBwZXQgI34o YmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICMkKGFkZC1leHRlcm5hbC1yZXBvcwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uby01LjQuMC1leHRlcm5hbC1yZXBvLXNw ZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRAcHJlcGFyZS1tb25vLXNvdXJjZS0w KSkKKyAgICAgICAgICAgICAgKHBhdGNoZXMKKyAgICAgICAgICAgICAgIChzZWFyY2gtcGF0Y2hl cworICAgICAgICAgICAgICAgICJtb25vLTUuNC4wLXBhdGNoZXMucGF0Y2giKSkpKQorICAgIChu YXRpdmUtaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01 LjIuMCkKKyAgICAgICAgICAgICAgICAgICAgIChyZXBsYWNlICJtb25vIiBtb25vLTUuMi4wKSkp KSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2NvcmVmeC1tb25vLTUuNC4wLXBh dGNoZXMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby01LjQuMC1wYXRj aGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzRkNzY5 ZWJjZQotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2NvcmVmeC1tb25v LTUuNC4wLXBhdGNoZXMucGF0Y2gKQEAgLTAsMCArMSw5MTUgQEAKK2RpZmYgLS1naXQgYS9zcmMv TWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL0V4cHJl c3Npb25UcmVlQ2FsbFJld3JpdGVyLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jv c29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9FeHByZXNzaW9uVHJlZUNhbGxSZXdyaXRlci5jcwor aW5kZXggYWE4YWZhNWExYi4uM2EyNTE4MjQ2YSAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQu Q1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvRXhwcmVzc2lvblRyZWVD YWxsUmV3cml0ZXIuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQv Q1NoYXJwL1J1bnRpbWVCaW5kZXIvRXhwcmVzc2lvblRyZWVDYWxsUmV3cml0ZXIuY3MKK0BAIC0y NDYsOCArMjQ2LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgor ICAgICAgICAgICAgIEV4cHJBcnJheUluaXQgYXJyaW5pdDsKKyAKKyAgICAgICAgICAgICBFeHBy TGlzdCBsaXN0ID0gKEV4cHJMaXN0KXBFeHByLk9wdGlvbmFsQXJndW1lbnRzOworLSAgICAgICAg ICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlIGlzIEV4cHJMaXN0IG5leHQpCisrICAg ICAgICAgICAgaWYgKGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUgaXMgRXhwckxpc3QpCisgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxp c3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgICAgIG1ldGhpbmZvID0gKEV4 cHJNZXRob2RJbmZvKW5leHQuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAgICBhcnJp bml0ID0gKEV4cHJBcnJheUluaXQpbmV4dC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAg ICAgICB9CitAQCAtMzgyLDggKzM4Myw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1 bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBFeHByIG5leHROb2RlID0gbGlzdC5PcHRpb25hbE5l eHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICBFeHByUHJvcGVydHlJbmZvIHByb3BpbmZvOworICAg ICAgICAgICAgIEV4cHJBcnJheUluaXQgYXJndW1lbnRzOworLSAgICAgICAgICAgIGlmIChuZXh0 Tm9kZSBpcyBFeHByTGlzdCBuZXh0TGlzdCkKKysgICAgICAgICAgICBpZiAobmV4dE5vZGUgaXMg RXhwckxpc3QpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0 TGlzdCA9IChFeHByTGlzdClsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAg ICAgICBwcm9waW5mbyA9IG5leHRMaXN0Lk9wdGlvbmFsRWxlbWVudCBhcyBFeHByUHJvcGVydHlJ bmZvOworICAgICAgICAgICAgICAgICBhcmd1bWVudHMgPSBuZXh0TGlzdC5PcHRpb25hbE5leHRM aXN0Tm9kZSBhcyBFeHByQXJyYXlJbml0OworICAgICAgICAgICAgIH0KK0BAIC01NTMsOCArNTU1 LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorICAgICAgICAg ICAgIGxpc3QgPSAoRXhwckxpc3QpbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAg ICAgICBNZXRob2RJbmZvIG1ldGhvZEluZm87CisgICAgICAgICAgICAgYm9vbCBiSXNMaWZ0ZWQg PSBmYWxzZTsKKy0gICAgICAgICAgICBpZiAobGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSBpcyBF eHByTGlzdCBuZXh0KQorKyAgICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2Rl IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckxpc3Qg bmV4dCA9IChFeHByTGlzdClsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAg ICAgICBFeHByQ29uc3RhbnQgaXNMaWZ0ZWQgPSAoRXhwckNvbnN0YW50KW5leHQuT3B0aW9uYWxF bGVtZW50OworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoaXNMaWZ0ZWQgIT0gbnVsbCk7 CisgICAgICAgICAgICAgICAgIGJJc0xpZnRlZCA9IGlzTGlmdGVkLlZhbC5JbnQzMlZhbCA9PSAx OworQEAgLTY3Nyw4ICs2ODAsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyCisgCisgICAgICAgICBwcml2YXRlIEV4cHJlc3Npb24gR2V0RXhwcmVzc2lvbihFeHBy IHBFeHByKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByV3JhcCB3 cmFwKQorKyAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByV3JhcCkKKyAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgIEV4cHJXcmFwIHdyYXAgPSAoRXhwcldyYXApIHBFeHByOworICAg ICAgICAgICAgICAgICByZXR1cm4gX0RpY3Rpb25hcnlPZlBhcmFtZXRlcnNbKEV4cHJDYWxsKXdy YXAuT3B0aW9uYWxFeHByZXNzaW9uXTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxz ZSBpZiAocEV4cHIgaXMgRXhwckNvbnN0YW50KQorQEAgLTg3NSwyMCArODc5LDI0IEBAIG5hbWVz cGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBmb3IgKDs7KQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgaWYgKHBFeHBy IGlzIEV4cHJDYXN0IGNhc3QpCisrICAgICAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2Fz dCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNhc3QgY2Fz dCA9IChFeHByQ2FzdCkgcEV4cHI7CisgICAgICAgICAgICAgICAgICAgICBwRXhwciA9IGNhc3Qu QXJndW1lbnQ7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZWxzZSBpZiAo cEV4cHIgaXMgRXhwclR5cGVPZiB0eXBlT2YpCisrICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBF eHByIGlzIEV4cHJUeXBlT2YpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg ICAgIEV4cHJUeXBlT2YgdHlwZU9mID0gKEV4cHJUeXBlT2YpIHBFeHByOworICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHR5cGVPZi5Tb3VyY2VUeXBlLlR5cGUuQXNzb2NpYXRlZFN5c3RlbVR5 cGU7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIg aXMgRXhwck1ldGhvZEluZm8gbWV0aG9kSW5mbykKKysgICAgICAgICAgICAgICAgZWxzZSBpZiAo cEV4cHIgaXMgRXhwck1ldGhvZEluZm8pCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgIEV4cHJNZXRob2RJbmZvIG1ldGhvZEluZm8gPSAoRXhwck1ldGhvZEluZm8pIHBF eHByOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdldE1ldGhvZEluZm9Gcm9tRXhwciht ZXRob2RJbmZvKTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBlbHNlIGlm IChwRXhwciBpcyBFeHByQ29uc3RhbnQgY29uc3RhbnQpCisrICAgICAgICAgICAgICAgIGVsc2Ug aWYgKHBFeHByIGlzIEV4cHJDb25zdGFudCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAgICAgRXhwckNvbnN0YW50IGNvbnN0YW50ID0gKEV4cHJDb25zdGFudCkgcEV4cHI7 CisgICAgICAgICAgICAgICAgICAgICBDb25zdFZhbCB2YWwgPSBjb25zdGFudC5WYWw7CisgICAg ICAgICAgICAgICAgICAgICBDVHlwZSB1bmRlcmx5aW5nVHlwZSA9IHBFeHByLlR5cGU7CisgICAg ICAgICAgICAgICAgICAgICBvYmplY3Qgb2JqdmFsOworQEAgLTk1NCw4ICs5NjIsOSBAQCBuYW1l c3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgCisgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gcEV4cHIuVHlwZS5pc0VudW1UeXBlKCkgPyBFbnVtLlRvT2JqZWN0KHBFeHBy LlR5cGUuQXNzb2NpYXRlZFN5c3RlbVR5cGUsIG9ianZhbCkgOiBvYmp2YWw7CisgICAgICAgICAg ICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwclplcm9Jbml0 IHplcm9Jbml0KQorKyAgICAgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByWmVyb0lu aXQpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJaZXJvSW5p dCB6ZXJvSW5pdCA9IChFeHByWmVyb0luaXQpIHBFeHByOworICAgICAgICAgICAgICAgICAgICAg aWYgKChwRXhwciA9IHplcm9Jbml0Lk9wdGlvbmFsQXJndW1lbnQpID09IG51bGwpCisgICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2YXRv ci5DcmVhdGVJbnN0YW5jZSh6ZXJvSW5pdC5UeXBlLkFzc29jaWF0ZWRTeXN0ZW1UeXBlKTsKK0BA IC05ODEsOCArOTkwLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl cgorICAgICAgICAgICAgICAgICBFeHByIHAgPSBsaXN0OworICAgICAgICAgICAgICAgICB3aGls ZSAobGlzdCAhPSBudWxsKQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAg ICBpZiAobGlzdCBpcyBFeHByTGlzdCBwTGlzdCkKKysgICAgICAgICAgICAgICAgICAgIGlmIChs aXN0IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgICAgIEV4cHJMaXN0IHBMaXN0ID0gKEV4cHJMaXN0KSBsaXN0OworICAgICAgICAgICAg ICAgICAgICAgICAgIHAgPSBwTGlzdC5PcHRpb25hbEVsZW1lbnQ7CisgICAgICAgICAgICAgICAg ICAgICAgICAgbGlzdCA9IHBMaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAg ICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3Nv ZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvUnVudGltZUJpbmRlci5jcyBiL3NyYy9NaWNyb3NvZnQu Q1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvUnVudGltZUJpbmRlci5j cworaW5kZXggNmRjODg4YzZlZi4uODlmODgxZjY2OCAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3Nv ZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvUnVudGltZUJpbmRl ci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVu dGltZUJpbmRlci9SdW50aW1lQmluZGVyLmNzCitAQCAtMTk1LDcgKzE5NSw4IEBAIG5hbWVzcGFj ZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBMb2NhbFZhcmlh YmxlU3ltYm9sW10gbG9jYWxzID0gUG9wdWxhdGVMb2NhbFNjb3BlKHBheWxvYWQsIHBTY29wZSwg YXJndW1lbnRzLCBwYXJhbWV0ZXJzKTsKKyAKKyAgICAgICAgICAgICAvLyAoMS41KSAtIENoZWNr IHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGRlZmVyLgorLSAgICAgICAgICAgIGlmIChEZWZlckJpbmRp bmcocGF5bG9hZCwgYXJndW1lbnRzLCBhcmdzLCBsb2NhbHMsIG91dCBEeW5hbWljTWV0YU9iamVj dCBvKSkKKysgICAgICAgICAgICBEeW5hbWljTWV0YU9iamVjdCBvOworKyAgICAgICAgICAgIGlm IChEZWZlckJpbmRpbmcocGF5bG9hZCwgYXJndW1lbnRzLCBhcmdzLCBsb2NhbHMsIG91dCBvKSkK KyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGRlZmVycmVkQmluZGluZyA9IG87Cisg ICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworQEAgLTEwNTMsOCArMTA1NCw5IEBAIG5hbWVz cGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAKKyAgICAgICAgIHByaXZhdGUg c3RhdGljIHZvaWQgQ2hlY2tGb3JDb25kaXRpb25hbE1ldGhvZEVycm9yKEV4cHIgcEV4cHIpCisg ICAgICAgICB7CistICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJDYWxsIGNhbGwpCisrICAg ICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJDYWxsKQorICAgICAgICAgICAgIHsKKysgICAgICAg ICAgICAgICAgRXhwckNhbGwgY2FsbCA9IChFeHByQ2FsbClwRXhwcjsKKyAgICAgICAgICAgICAg ICAgLy8gVGhpcyBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBuYXRpdmUgQ29tcGlsZXJTeW1i b2xMb2FkZXIgaW4gR2V0Q29uZGl0aW9uYWxTeW1ib2xzLiBPdmVycmlkZQorICAgICAgICAgICAg ICAgICAvLyBtZXRob2RzIGNhbm5vdCBoYXZlIHRoZSBjb25kaXRpb25hbCBhdHRyaWJ1dGUsIGJ1 dCBpbXBsaWNpdGx5IGFjcXVpcmUgaXQgZnJvbSB0aGVpciBzbG90LgorIAorQEAgLTEwODcsOCAr MTA4OSw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAg ICAgICAgICBFeHByTWVtYmVyR3JvdXAgbWVtZ3JvdXA7CisgICAgICAgICAgICAgVHlwZUFycmF5 IHR5cGVBcmdzOworIAorLSAgICAgICAgICAgIGlmIChwUmVzdWx0IGlzIEV4cHJDYWxsIGNhbGwp CisrICAgICAgICAgICAgaWYgKHBSZXN1bHQgaXMgRXhwckNhbGwpCisgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBFeHByQ2FsbCBjYWxsID0gKEV4cHJDYWxsKSBwUmVzdWx0OworICAg ICAgICAgICAgICAgICB0eXBlID0gY2FsbC5NZXRoV2l0aEluc3QuQXRzOworICAgICAgICAgICAg ICAgICBtZXRocHJvcCA9IGNhbGwuTWV0aFdpdGhJbnN0Lk1ldGgoKTsKKyAgICAgICAgICAgICAg ICAgbWVtZ3JvdXAgPSBjYWxsLk1lbWJlckdyb3VwOworQEAgLTExNTUsMTIgKzExNTgsMTUgQEAg bmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorIAorICAgICAgICAgcHJp dmF0ZSBFeHByIFN0cmlwTmFtZWRBcmd1bWVudChFeHByIHBBcmcpCisgICAgICAgICB7CistICAg ICAgICAgICAgaWYgKHBBcmcgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVk KQorKyAgICAgICAgICAgIGlmIChwQXJnIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlv bikKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3Bl Y2lmaWNhdGlvbiBuYW1lZCA9CisrICAgICAgICAgICAgICAgICAgICAoRXhwck5hbWVkQXJndW1l bnRTcGVjaWZpY2F0aW9uKSBwQXJnOworICAgICAgICAgICAgICAgICBwQXJnID0gbmFtZWQuVmFs dWU7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgaWYgKHBBcmcgaXMgRXhwckFy cmF5SW5pdCBpbml0KQorKyAgICAgICAgICAgIGVsc2UgaWYgKHBBcmcgaXMgRXhwckFycmF5SW5p dCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJBcnJheUluaXQgaW5pdCA9 IChFeHByQXJyYXlJbml0KSBwQXJnOworICAgICAgICAgICAgICAgICBpbml0Lk9wdGlvbmFsQXJn dW1lbnRzID0gU3RyaXBOYW1lZEFyZ3VtZW50cyhpbml0Lk9wdGlvbmFsQXJndW1lbnRzKTsKKyAg ICAgICAgICAgICB9CisgCitAQCAtMTE2OSwxNCArMTE3NSwxNiBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgCisgICAgICAgICBwcml2YXRlIEV4cHIgU3RyaXBO YW1lZEFyZ3VtZW50cyhFeHByIHBBcmcpCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKHBB cmcgaXMgRXhwckxpc3QgbGlzdCkKKysgICAgICAgICAgICBpZiAocEFyZyBpcyBFeHByTGlzdCkK KyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJMaXN0IGxpc3QgPSAoRXhwckxp c3QpIHBBcmc7CisgICAgICAgICAgICAgICAgIGZvcig7OykKKyAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgbGlzdC5PcHRpb25hbEVsZW1lbnQgPSBTdHJpcE5hbWVkQXJn dW1lbnQobGlzdC5PcHRpb25hbEVsZW1lbnQpOworIAorLSAgICAgICAgICAgICAgICAgICAgaWYg KGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUgaXMgRXhwckxpc3QgbmV4dCkKKysgICAgICAgICAg ICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlIGlzIEV4cHJMaXN0KQorICAg ICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJMaXN0IG5l eHQgPSAoRXhwckxpc3QpbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgIGVsc2UKK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMv TWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0JldHRlci5j cyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5k ZXIvU2VtYW50aWNzL0JpbmRpbmcvQmV0dGVyLmNzCitpbmRleCBjZWJmY2Q5NGUxLi4xNzlhYzIx NjIwIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hh cnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmluZGluZy9CZXR0ZXIuY3MKKysrKyBiL3NyYy9N aWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50 aWNzL0JpbmRpbmcvQmV0dGVyLmNzCitAQCAtMTU3LDggKzE1Nyw5IEBAIG5hbWVzcGFjZSBNaWNy b3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgLy8gV2Ug dGhlbiBnbyBvdmVyIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzIGFuZCBwdXQgdGhlIHR5cGUgZm9y IGFueSBuYW1lZCBhcmd1bWVudCBpbiB0aGUgcmlnaHQgcG9zaXRpb24gaW4gdGhlIGFycmF5Lgor ICAgICAgICAgICAgIGZvciAoaW50IGlQYXJhbSA9IDA7IGlQYXJhbSA8IGFyZ3MuY2FyZzsgaVBh cmFtKyspCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAocHJnZXhwcltpUGFy YW1dIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCkKKysgICAgICAgICAg ICAgICAgaWYgKHByZ2V4cHJbaVBhcmFtXSBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24pCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFy Z3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9IChFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24pcHJnZXhwcltpUGFyYW1dOworICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZmluZCB0aGUg aW5kZXggb2YgdGhlIHR5cGUgb2YgdGhlIGFyZ3VtZW50IGluIHRoZSBtZXRob2QgcGFyYW1ldGVy IGxpc3QgYW5kIHN0b3JlIHRoYXQgaW4gYSB0ZW1wCisgICAgICAgICAgICAgICAgICAgICBpbnQg aW5kZXggPSBGaW5kTmFtZShtZXRoUHJvcC5QYXJhbWV0ZXJOYW1lcywgbmFtZWQuTmFtZSk7Cisg ICAgICAgICAgICAgICAgICAgICBDVHlwZSB0ZW1wVHlwZSA9IHB0YVtpbmRleF07CitkaWZmIC0t Z2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJp bmRlci9TZW1hbnRpY3MvQmluZGluZy9FcnJvclJlcG9ydGluZy5jcyBiL3NyYy9NaWNyb3NvZnQu Q1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0JpbmRp bmcvRXJyb3JSZXBvcnRpbmcuY3MKK2luZGV4IGM0MDZhZjQzZGUuLjBlYTgxZWYyMWMgMTAwNjQ0 CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1l QmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0Vycm9yUmVwb3J0aW5nLmNzCisrKysgYi9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9CaW5kaW5nL0Vycm9yUmVwb3J0aW5nLmNzCitAQCAtNzYsMjIgKzc2LDI1IEBAIG5hbWVzcGFj ZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoZXhwciAhPSBudWxsKTsKKyAKKy0gICAg ICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwckxvY2FsIGxvY2FsICYmIGxvY2FsLklzT0spCisr ICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJMb2NhbCAmJiAoKEV4cHJMb2NhbClleHBy KS5Jc09LKQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByTG9j YWwgbG9jYWwgPSAoRXhwckxvY2FsKWV4cHI7CisgICAgICAgICAgICAgICAgICAgICBSZXBvcnRM b2NhbEVycm9yKGxvY2FsLkxvY2FsLCBraW5kLCBpc05lc3RlZCk7CisgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICAg ICBFeHByIHBPYmplY3QgPSBudWxsOworIAorLSAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBF eHByUHJvcGVydHkgcHJvcCkKKysgICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwclByb3Bl cnR5KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByUHJvcGVy dHkgcHJvcCA9IChFeHByUHJvcGVydHkpZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIC8vIFdl J3ZlIGFscmVhZHkgcmVwb3J0ZWQgcmVhZC1vbmx5LXByb3BlcnR5IGVycm9ycy4KKyAgICAgICAg ICAgICAgICAgICAgIERlYnVnLkFzc2VydChwcm9wLk1ldGhXaXRoVHlwZVNldCAhPSBudWxsKTsK KyAgICAgICAgICAgICAgICAgICAgIHBPYmplY3QgPSBwcm9wLk1lbWJlckdyb3VwLk9wdGlvbmFs T2JqZWN0OworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4 cHIgaXMgRXhwckZpZWxkIGZpZWxkKQorKyAgICAgICAgICAgICAgICBlbHNlIGlmIChleHByIGlz IEV4cHJGaWVsZCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhw ckZpZWxkIGZpZWxkID0gKEV4cHJGaWVsZClleHByOworICAgICAgICAgICAgICAgICAgICAgaWYg KGZpZWxkLkZpZWxkV2l0aFR5cGUuRmllbGQoKS5pc1JlYWRPbmx5KQorICAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydFJlYWRPbmx5RXJyb3IoZmll bGQsIGtpbmQsIGlzTmVzdGVkKTsKK0BAIC0xMDUsOCArMTA4LDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAgICAgICAgICAgICAgICAg aWYgKHBPYmplY3QgIT0gbnVsbCAmJiBwT2JqZWN0LlR5cGUuaXNTdHJ1Y3RPckVudW0oKSkKKyAg ICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgaWYgKHBPYmplY3QgaXMgSUV4 cHJXaXRoQXJncyB3aXRoQXJncykKKysgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0IGlz IElFeHByV2l0aEFyZ3MpCisgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgSUV4cHJXaXRoQXJncyB3aXRoQXJncyA9IChJRXhwcldpdGhBcmdzKXBPYmplY3Q7 CisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzaWduaW5nIHRvIFJIUyBvZiBtZXRob2Qg b3IgcHJvcGVydHkgZ2V0dGVyIHJldHVybmluZyBhIHZhbHVlLXR5cGUgb24gdGhlIHN0YWNrIG9y CisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzc2luZyBSSFMgb2YgbWV0aG9kIG9yIHBy b3BlcnR5IGdldHRlciByZXR1cm5pbmcgYSB2YWx1ZS10eXBlIG9uIHRoZSBzdGFjaywgYXMgcmVm IG9yIG91dAorICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29udGV4dC5FcnJvcihFcnJv ckNvZGUuRVJSX1JldHVybk5vdExWYWx1ZSwgd2l0aEFyZ3MuR2V0U3ltV2l0aFR5cGUoKSk7Citk aWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVu dGltZUJpbmRlci9TZW1hbnRpY3MvQ29udmVyc2lvbi5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJw L3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0NvbnZlcnNpb24u Y3MKK2luZGV4IGJiNjJhOTI2YjUuLjg3M2ZlZmY3MmYgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9D b252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9Db252ZXJzaW9uLmNzCitAQCAtMzkxLDkgKzM5 MSwxMCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGlj cworICAgICAgICAgICAgICAgICBGVU5EVFlQRSBmdFNyYyA9IGV4cHIuVHlwZS5mdW5kVHlwZSgp OworICAgICAgICAgICAgICAgICBGVU5EVFlQRSBmdERlc3QgPSBkZXN0LmZ1bmRUeXBlKCk7Cisg CistICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJDb25zdGFudCBjb25zdGFudCAmJiBj b25zdGFudC5Jc09LICYmCisrICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJDb25zdGFu dCAmJiAoKEV4cHJDb25zdGFudClleHByKS5Jc09LICYmCisgICAgICAgICAgICAgICAgICAgICBl eHByLlR5cGUuaXNTaW1wbGVUeXBlKCkgJiYgZGVzdC5pc1NpbXBsZVR5cGUoKSkKKyAgICAgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNvbnN0YW50IGNvbnN0YW50ID0g KEV4cHJDb25zdGFudCkgZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgoZnRTcmMgPT0g RlVORFRZUEUuRlRfSTQgJiYgKGZ0RGVzdCA8PSBGVU5EVFlQRS5GVF9MQVNUTk9OTE9ORyB8fCBm dERlc3QgPT0gRlVORFRZUEUuRlRfVTgpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgIChm dFNyYyA9PSBGVU5EVFlQRS5GVF9JOCAmJiBmdERlc3QgPT0gRlVORFRZUEUuRlRfVTgpKQorICAg ICAgICAgICAgICAgICAgICAgeworQEAgLTQyMSw4ICs0MjIsOSBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAg RXJyb3JDb250ZXh0LkVycm9yKGRlc3QgaXMgVHlwZVBhcmFtZXRlclR5cGUgPyBFcnJvckNvZGUu RVJSX1R5cGVWYXJDYW50QmVOdWxsIDogRXJyb3JDb2RlLkVSUl9WYWx1ZUNhbnRCZU51bGwsIGRl c3QpOworICAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4 cHIgaXMgRXhwck1lbWJlckdyb3VwIG1lbUdycCkKKysgICAgICAgICAgICAgICAgZWxzZSBpZiAo ZXhwciBpcyBFeHByTWVtYmVyR3JvdXApCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgIEV4cHJNZW1iZXJHcm91cCBtZW1HcnAgPSAoRXhwck1lbWJlckdyb3VwKSBleHBy OworICAgICAgICAgICAgICAgICAgICAgQmluZEdycENvbnZlcnNpb24obWVtR3JwLCBkZXN0LCB0 cnVlKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlIGlmICghVHlw ZU1hbmFnZXIuVHlwZUNvbnRhaW5zQW5vbnltb3VzVHlwZXMoZGVzdCkgJiYgY2FuQ2FzdChleHBy LlR5cGUsIGRlc3QsIGZsYWdzKSkKK0BAIC01NTUsOCArNTU3LDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvbnRleHQuRXJyb3IoRXJyb3JDb2Rl LkVSUl9WYWx1ZUNhbnRCZU51bGwsIGRlc3QpOworICAgICAgICAgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBFeHByTWVtYmVyR3JvdXAgbWVtR3Jw KQorKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBFeHByTWVtYmVyR3JvdXAp CisgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgRXhwck1l bWJlckdyb3VwIG1lbUdycCA9IChFeHByTWVtYmVyR3JvdXApZXhwcjsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBCaW5kR3JwQ29udmVyc2lvbihtZW1HcnAsIGRlc3QsIHRydWUpOworICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZQorQEAgLTEzOTYsOCAr MTM5OSw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50 aWNzCisgICAgICAgICAgICAgZm9yICg7OykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIERlYnVnLkFzc2VydChwRXhwciAhPSBudWxsKTsKKy0gICAgICAgICAgICAgICAgaWYgKHBF eHByIGlzIEV4cHJDYWxsIGNhbGwpCisrICAgICAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHBy Q2FsbCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNhbGwg Y2FsbCA9IChFeHByQ2FsbClwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2Fs bC5OdWxsYWJsZUNhbGxMaWZ0S2luZCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICBjYXNlIE51bGxhYmxlQ2FsbExpZnRLaW5kLk5vdExpZnRlZDoKK0BA IC0xNDExLDggKzE0MTUsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmlu ZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAg ICBlbHNlIGlmIChwRXhwciBpcyBFeHByVXNlckRlZmluZWRDb252ZXJzaW9uIHVkYykKKysgICAg ICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbikK KyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwclVzZXJEZWZpbmVk Q29udmVyc2lvbiB1ZGMgPSAoRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbilwRXhwcjsKKyAgICAg ICAgICAgICAgICAgICAgIHBFeHByID0gdWRjLlVzZXJEZWZpbmVkQ2FsbDsKKyAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3Jj L01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1h bnRpY3MvRVhQUkV4dGVuc2lvbnMuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9z b2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FWFBSRXh0ZW5zaW9ucy5jcworaW5k ZXggMDc1ZWQyM2ExMS4uNjQwOGRmNGMzNiAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0VYUFJFeHRl bnNpb25zLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFy cC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FWFBSRXh0ZW5zaW9ucy5jcworQEAgLTMzLDggKzMz LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MK KyAgICAgICAgICAgICBFeHByIGV4cHJDdXIgPSBleHByOworICAgICAgICAgICAgIHdoaWxlIChl eHByQ3VyICE9IG51bGwpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAoZXhw ckN1ciBpcyBFeHByTGlzdCBsaXN0KQorKyAgICAgICAgICAgICAgICBpZiAoZXhwckN1ciBpcyBF eHByTGlzdCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckxp c3QgbGlzdCA9IChFeHByTGlzdClleHByQ3VyOworICAgICAgICAgICAgICAgICAgICAgeWllbGQg cmV0dXJuIGxpc3QuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAgICAgICAgZXhwckN1 ciA9IGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgICAgIH0KK0BAIC02 MSwxMiArNjIsMTIgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgIH0KKyAgICAgICAgIHB1YmxpYyBzdGF0aWMgYm9vbCBpc051bGwo dGhpcyBFeHByIGV4cHIpCisgICAgICAgICB7CistICAgICAgICAgICAgcmV0dXJuIGV4cHIgaXMg RXhwckNvbnN0YW50IGNvbnN0YW50ICYmIGNvbnN0YW50LklzT0sgJiYgKGV4cHIuVHlwZS5mdW5k VHlwZSgpID09IEZVTkRUWVBFLkZUX1JFRikgJiYgY29uc3RhbnQuVmFsLklzTnVsbFJlZjsKKysg ICAgICAgICAgICByZXR1cm4gZXhwciBpcyBFeHByQ29uc3RhbnQgJiYgKChFeHByQ29uc3RhbnQp ZXhwcikuSXNPSyAmJiAoZXhwci5UeXBlLmZ1bmRUeXBlKCkgPT0gRlVORFRZUEUuRlRfUkVGKSAm JiAoKEV4cHJDb25zdGFudClleHByKS5WYWwuSXNOdWxsUmVmOworICAgICAgICAgfQorIAorICAg ICAgICAgcHVibGljIHN0YXRpYyBib29sIElzWmVybyh0aGlzIEV4cHIgZXhwcikKKyAgICAgICAg IHsKKy0gICAgICAgICAgICByZXR1cm4gZXhwciBpcyBFeHByQ29uc3RhbnQgY29uc3RhbnQgJiYg Y29uc3RhbnQuSXNPSyAmJiBjb25zdGFudC5Jc1plcm87CisrICAgICAgICAgICAgcmV0dXJuIGV4 cHIgaXMgRXhwckNvbnN0YW50ICYmICgoRXhwckNvbnN0YW50KWV4cHIpLklzT0sgJiYgKChFeHBy Q29uc3RhbnQpZXhwcikuSXNaZXJvOworICAgICAgICAgfQorIAorICAgICAgICAgcHJpdmF0ZSBz dGF0aWMgRXhwciBHZXRTZXFWYWwodGhpcyBFeHByIGV4cHIpCitkaWZmIC0tZ2l0IGEvc3JjL01p Y3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRp Y3MvRXhwbGljaXRDb252ZXJzaW9uLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jv c29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNz CitpbmRleCA2ZWE4ODc5YzQwLi4xMzdlOTUwZTc2IDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhw bGljaXRDb252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9z b2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHBsaWNpdENvbnZlcnNpb24uY3MK K0BAIC0yMDcsOCArMjA3LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJp bmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlNGQUlMKCJCaW5k RXhwbGljaXRDb252ZXJzaW9uIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgIH0K Ky0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2V4cHJEZXN0IGlzIEV4cHJVc2VyRGVmaW5l ZENvbnZlcnNpb24gdWRjKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZXhwckRlc3Qg aXMgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24g dWRjID0gKEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24pX2V4cHJEZXN0OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1ZGMuQXJndW1lbnQgPSBfZXhwclNyYzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL01p Y3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRp Y3MvRXhwckZhY3RvcnkuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByRmFjdG9yeS5jcworaW5kZXggOTllZTU3 NjI2YS4uZWMwZDI5ZDZmMyAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0V4cHJGYWN0b3J5LmNzCisr KysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmlu ZGVyL1NlbWFudGljcy9FeHByRmFjdG9yeS5jcworQEAgLTI2NSw4ICsyNjUsOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAg IEV4cHJVc2VyTG9naWNhbE9wIHJ2YWwgPSBuZXcgRXhwclVzZXJMb2dpY2FsT3AocFR5cGUpOwor ICAgICAgICAgICAgIEV4cHIgbGVmdENoaWxkID0gKChFeHByTGlzdClwQ2FsbE9wLk9wdGlvbmFs QXJndW1lbnRzKS5PcHRpb25hbEVsZW1lbnQ7CisgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGxl ZnRDaGlsZCAhPSBudWxsKTsKKy0gICAgICAgICAgICBpZiAobGVmdENoaWxkIGlzIEV4cHJXcmFw IHdyYXApCisrICAgICAgICAgICAgaWYgKGxlZnRDaGlsZCBpcyBFeHByV3JhcCkKKyAgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJXcmFwIHdyYXAgPSAoRXhwcldyYXApbGVmdENo aWxkOworICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgRUUgY2FzZSwgd2UgZG9uJ3QgY3JlYXRl IFdSQVBFWFBScy4KKyAgICAgICAgICAgICAgICAgbGVmdENoaWxkID0gd3JhcC5PcHRpb25hbEV4 cHJlc3Npb247CisgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChsZWZ0Q2hpbGQgIT0gbnVs bCk7CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hh cnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwcmVzc2lvbkJpbmRlci5jcyBiL3NyYy9NaWNy b3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNz L0V4cHJlc3Npb25CaW5kZXIuY3MKK2luZGV4IDYwYTE2NjFlYWMuLmRjMDRmYTE2NTcgMTAwNjQ0 CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1l QmluZGVyL1NlbWFudGljcy9FeHByZXNzaW9uQmluZGVyLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0 LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHBy ZXNzaW9uQmluZGVyLmNzCitAQCAtNjAxLDEwICs2MDEsMTEgQEAgbmFtZXNwYWNlIE1pY3Jvc29m dC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAvLyBDaGVjayBp ZiB3ZSBoYXZlIGEgY29tcGlsZSB0aW1lIGNvbnN0YW50LiBJZiB3ZSBkbywgY3JlYXRlIGEgY29u c3RhbnQgZm9yIGl0IGFuZCBzZXQgdGhlCisgICAgICAgICAgICAgLy8gb3JpZ2luYWwgdHJlZSB0 byB0aGUgY2FzdC4KKyAKKy0gICAgICAgICAgICBpZiAoZXhwckNvbnN0IGlzIEV4cHJDb25zdGFu dCBjb25zdGFudCAmJiBleHByRmxhZ3MgPT0gMCAmJgorKyAgICAgICAgICAgIGlmIChleHByQ29u c3QgaXMgRXhwckNvbnN0YW50ICYmIGV4cHJGbGFncyA9PSAwICYmCisgICAgICAgICAgICAgICAg IGV4cHJTcmMuVHlwZS5mdW5kVHlwZSgpID09IHR5cGVEZXN0LmZ1bmRUeXBlKCkgJiYKKy0gICAg ICAgICAgICAgICAgKCFleHByU3JjLlR5cGUuaXNQcmVkZWZUeXBlKFByZWRlZmluZWRUeXBlLlBU X1NUUklORykgfHwgY29uc3RhbnQuVmFsLklzTnVsbFJlZikpCisrICAgICAgICAgICAgICAgICgh ZXhwclNyYy5UeXBlLmlzUHJlZGVmVHlwZShQcmVkZWZpbmVkVHlwZS5QVF9TVFJJTkcpIHx8ICgo RXhwckNvbnN0YW50KWV4cHJDb25zdCkuVmFsLklzTnVsbFJlZikpCisgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBFeHByQ29uc3RhbnQgY29uc3RhbnQgPSAoRXhwckNvbnN0YW50KWV4 cHJDb25zdDsKKyAgICAgICAgICAgICAgICAgRXhwckNvbnN0YW50IGV4cHIgPSBHZXRFeHByRmFj dG9yeSgpLkNyZWF0ZUNvbnN0YW50KHR5cGVEZXN0LCBjb25zdGFudC5WYWwpOworICAgICAgICAg ICAgICAgICBwZXhwckRlc3QgPSBleHByOworICAgICAgICAgICAgICAgICByZXR1cm47CitAQCAt MTE5MSw4ICsxMTkyLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl ci5TZW1hbnRpY3MKKyAgICAgICAgICAgICB3aGlsZSAobGlzdCAhPSBudWxsKQorICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgRXhwciBhcmc7CistICAgICAgICAgICAgICAgIGlmIChs aXN0IGlzIEV4cHJMaXN0IG5leHQpCisrICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJM aXN0KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBu ZXh0ID0gKEV4cHJMaXN0KWxpc3Q7CisgICAgICAgICAgICAgICAgICAgICBhcmcgPSBuZXh0Lk9w dGlvbmFsRWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0Lk9wdGlvbmFs TmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICB9CitAQCAtMTI2NSw4ICsxMjY3LDkgQEAg bmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAg ICAgICAgIHByaXZhdGUgRXhwciBVbndyYXBFeHByZXNzaW9uKEV4cHIgcEV4cHJlc3Npb24pCisg ICAgICAgICB7CistICAgICAgICAgICAgd2hpbGUgKHBFeHByZXNzaW9uIGlzIEV4cHJXcmFwIHdy YXApCisrICAgICAgICAgICAgd2hpbGUgKHBFeHByZXNzaW9uIGlzIEV4cHJXcmFwKQorICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwcldyYXAgd3JhcCA9IChFeHByV3JhcClwRXhw cmVzc2lvbjsKKyAgICAgICAgICAgICAgICAgRXhwciB3cmFwcGVkID0gd3JhcC5PcHRpb25hbEV4 cHJlc3Npb247CisgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkID09IG51bGwpCisgICAgICAg ICAgICAgICAgIHsKK0BAIC0xMzQ0LDggKzEzNDcsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICAgaWYgKGV4cHIuaXNMdmFsdWUoKSkKKyAgICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJQcm9wZXJ0eSBwcm9wKQorKyAgICAgICAg ICAgICAgICBpZiAoZXhwciBpcyBFeHByUHJvcGVydHkpCisgICAgICAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgICAgIEV4cHJQcm9wZXJ0eSBwcm9wID0gKEV4cHJQcm9wZXJ0eSlleHBy OworICAgICAgICAgICAgICAgICAgICAgQ2hlY2tMdmFsdWVQcm9wKHByb3ApOworICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgIG1hcmtGaWVsZEFzc2lnbmVkKGV4cHIpOworQEAg LTE1NzEsOSArMTU3NSwxMCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmlu ZGVyLlNlbWFudGljcworIAorICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbnZva2luZyBj b2RlIG9uIGEgc3RydWN0LXZhbHVlZCBmaWVsZCwgbWFyayB0aGUgc3RydWN0IGFzIGFzc2lnbmVk ICh0bworICAgICAgICAgICAgICAgICAvLyBhdm9pZCB3YXJuaW5nIENTMDY0OSkuCistICAgICAg ICAgICAgICAgIGlmIChwT2JqZWN0IGlzIEV4cHJGaWVsZCBmaWVsZCAmJiAhZmllbGQuRmllbGRX aXRoVHlwZS5GaWVsZCgpLmlzQXNzaWduZWQgJiYgIXN3dC5TeW0uSXNGaWVsZFN5bWJvbCgpICYm CisrICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0IGlzIEV4cHJGaWVsZCAmJiAhKChFeHByRmll bGQpcE9iamVjdCkuRmllbGRXaXRoVHlwZS5GaWVsZCgpLmlzQXNzaWduZWQgJiYgIXN3dC5TeW0u SXNGaWVsZFN5bWJvbCgpICYmCisgICAgICAgICAgICAgICAgICAgICB0eXBlT2JqLmlzU3RydWN0 VHlwZSgpICYmICF0eXBlT2JqLmlzUHJlZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICB7Cisr ICAgICAgICAgICAgICAgICAgICBFeHByRmllbGQgZmllbGQgPSAoRXhwckZpZWxkKSBwT2JqZWN0 OworICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRXaXRoVHlwZS5GaWVsZCgpLmlzQXNz aWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB9CisgCitAQCAtMTc4Niw4ICsxNzkxLDkg QEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAK KyAgICAgICAgICAgICAgICAgICAgIEV4cHIgYXJndW1lbnQgPSBpbmRpcjsKKyAgICAgICAgICAg ICAgICAgICAgIEV4cHIgcnZhbDsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudCBp cyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQpCisrICAgICAgICAgICAgICAg ICAgICBpZiAoYXJndW1lbnQgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKQorICAg ICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFy Z3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9IChFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24pYXJndW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBuYW1lZCwgbG9vayBmb3IgdGhlIHR5 cGUgb2YgdGhlIG1hdGNoaW5nIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFj aCAoTmFtZSBpIGluIG1vc3REZXJpdmVkTWV0aG9kLlBhcmFtZXRlck5hbWVzKQorQEAgLTE5Mjgs OCArMTkzNCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2Vt YW50aWNzCisgICAgICAgICAgICAgICAgICAgICBFeHByIGV4cHIgPSBpdC5DdXJyZW50KCk7Cisg ICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworIAorLSAgICAgICAgICAgICAgICAgICAgaWYg KGV4cHIgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkKQorKyAgICAgICAg ICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKQor ICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJOYW1l ZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9IChFeHByTmFtZWRBcmd1bWVudFNwZWNpZmlj YXRpb24pZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZC5WYWx1ZSA9IHRyeUNv bnZlcnQobmFtZWQuVmFsdWUsIGVsZW1lbnRUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgIGVsc2UKK0BAIC0xOTUxLDggKzE5NTgsOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworIAorICAgICAgICAg cHJpdmF0ZSB2b2lkIG1hcmtGaWVsZEFzc2lnbmVkKEV4cHIgZXhwcikKKyAgICAgICAgIHsKKy0g ICAgICAgICAgICBpZiAoMCAhPSAoZXhwci5GbGFncyAmIEVYUFJGTEFHLkVYRl9MVkFMVUUpICYm IGV4cHIgaXMgRXhwckZpZWxkIGZpZWxkKQorKyAgICAgICAgICAgIGlmICgwICE9IChleHByLkZs YWdzICYgRVhQUkZMQUcuRVhGX0xWQUxVRSkgJiYgZXhwciBpcyBFeHByRmllbGQpCisgICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByRmllbGQgZmllbGQgPSAoRXhwckZpZWxkKSBl eHByOworICAgICAgICAgICAgICAgICBGaWVsZFN5bWJvbCBzeW1ib2w7CisgICAgICAgICAgICAg ICAgIGRvCisgICAgICAgICAgICAgICAgIHsKK0BAIC0yMDE5LDggKzIwMjcsOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAg IGZvciAoRXhwciBsaXN0ID0gYXJnczsgbGlzdCAhPSBudWxsOyBpYXJnKyspCisgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICBFeHByIGFyZzsKKy0gICAgICAgICAgICAgICAgaWYgKGxp c3QgaXMgRXhwckxpc3QgbmV4dCkKKysgICAgICAgICAgICAgICAgaWYgKGxpc3QgaXMgRXhwckxp c3QpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJMaXN0IG5l eHQgPSAoRXhwckxpc3QpbGlzdDsKKyAgICAgICAgICAgICAgICAgICAgIGFyZyA9IG5leHQuT3B0 aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IG5leHQuT3B0aW9uYWxO ZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgICAgIH0KK0BAIC0yMzc0LDggKzIzODMsOSBAQCBu YW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRXhwciBhcmc7CisgCistICAgICAgICAgICAgICAg IGlmIChsaXN0IGlzIEV4cHJMaXN0IG5leHQpCisrICAgICAgICAgICAgICAgIGlmIChsaXN0IGlz IEV4cHJMaXN0KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHBy TGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3Q7CisgICAgICAgICAgICAgICAgICAgICBhcmcgPSBu ZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0Lk9w dGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3Jj L01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1h bnRpY3MvR3JvdXBUb0FyZ3NCaW5kZXIuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9Hcm91cFRvQXJnc0JpbmRlci5j cworaW5kZXggNzcwOGYxOTdhZS4uYjc1YWMzNDBiZSAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3Nv ZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0dy b3VwVG9BcmdzQmluZGVyLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9z b2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9Hcm91cFRvQXJnc0JpbmRlci5jcwor QEAgLTUxMCw3ICs1MTAsNyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmlu ZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBsZXQgdXMgdGhyb3Vn aC4KKyAgICAgICAgICAgICAgICAgICAgIGlmIChtZXRocHJvcC5pc1BhcmFtQXJyYXkgJiYKKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IHBBcmd1bWVudHMuY2FyZyAmJgorLSAgICAg ICAgICAgICAgICAgICAgICAgIHBBcmd1bWVudHMucHJnZXhwcltpbmRleF0gaXMgRXhwckFycmF5 SW5pdCBhcnJheUluaXQgJiYgYXJyYXlJbml0LkdlbmVyYXRlZEZvclBhcmFtQXJyYXkpCisrICAg ICAgICAgICAgICAgICAgICAgICAgcEFyZ3VtZW50cy5wcmdleHByW2luZGV4XSBpcyBFeHByQXJy YXlJbml0ICYmICgoRXhwckFycmF5SW5pdClwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdKS5HZW5l cmF0ZWRGb3JQYXJhbUFycmF5KQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcmFtQXJyYXlBcmd1bWVudCA9IHBBcmd1bWVudHMucHJnZXhwcltpbmRl eF07CisgICAgICAgICAgICAgICAgICAgICB9CitAQCAtNTE4LDcgKzUxOCw3IEBAIG5hbWVzcGFj ZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAg ICAgICAgICAvLyBQb3NpdGlvbmFsLgorICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwg cEFyZ3VtZW50cy5jYXJnICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIShwQXJndW1lbnRz LnByZ2V4cHJbaW5kZXhdIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikgJiYKKy0g ICAgICAgICAgICAgICAgICAgICAgICAhKHBBcmd1bWVudHMucHJnZXhwcltpbmRleF0gaXMgRXhw ckFycmF5SW5pdCBhcnJheUluaXRQb3MgJiYgYXJyYXlJbml0UG9zLkdlbmVyYXRlZEZvclBhcmFt QXJyYXkpKQorKyAgICAgICAgICAgICAgICAgICAgICAgICEocEFyZ3VtZW50cy5wcmdleHByW2lu ZGV4XSBpcyBFeHByQXJyYXlJbml0ICYmICgoRXhwckFycmF5SW5pdClwQXJndW1lbnRzLnByZ2V4 cHJbaW5kZXhdKS5HZW5lcmF0ZWRGb3JQYXJhbUFycmF5KSkKKyAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwRXhwckFyZ3VtZW50c1tpbmRleF0gPSBwQXJn dW1lbnRzLnByZ2V4cHJbaW5kZXgrK107CisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7CitAQCAtODM5LDcgKzgzOSw3IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRp bWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg cEFyZ3VtZW50cy5jYXJnOyBpKyspCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgIEV4cHIgZXhwciA9IHByZ2V4cHJbaV07CistICAgICAgICAgICAgICAgICAgICBpZiAo ZXhwciBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQgJiYgbmFtZWQuTmFt ZSA9PSBwTmFtZSkKKysgICAgICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJOYW1lZEFy Z3VtZW50U3BlY2lmaWNhdGlvbiAmJiAoKEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbill eHByKS5OYW1lID09IHBOYW1lKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBleHByOworICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTg2 MSw3ICs4NjEsOCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNl bWFudGljcworICAgICAgICAgICAgICAgICBIYXNoU2V0PE5hbWU+IG5hbWVzID0gbmV3IEhhc2hT ZXQ8TmFtZT4oKTsKKyAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBfcEFyZ3Vt ZW50cy5jYXJnOyBpKyspCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAg IGlmICghKF9wQXJndW1lbnRzLnByZ2V4cHJbaV0gaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZp Y2F0aW9uIG5hbWVkKSkKKysgICAgICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3Bl Y2lmaWNhdGlvbiBuYW1lZDsKKysgICAgICAgICAgICAgICAgICAgIGlmICghKF9wQXJndW1lbnRz LnByZ2V4cHJbaV0gaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKSkKKyAgICAgICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRQb3Np dGlvbi5Jc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgeworQEAgLTg2OSw2ICs4 NzAsNyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGlj cworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIG5h bWVkID0gKEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikgX3BBcmd1bWVudHMucHJnZXhw cltpXTsKKyAKKyAgICAgICAgICAgICAgICAgICAgIE5hbWUgbmFtZSA9IG5hbWVkLk5hbWU7Cisg ICAgICAgICAgICAgICAgICAgICBpZiAoIW1ldGhwcm9wLlBhcmFtZXRlck5hbWVzLkNvbnRhaW5z KG5hbWUpKQorQEAgLTEwODAsOCArMTA4Miw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJw LlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4 cHIgcEFyZ3VtZW50ID0gX3BBcmd1bWVudHMucHJnZXhwcltpdmFyXTsKKyAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hbWVkIGFyZ3VtZW50LCBzdHJpcCBp dCB0byBkbyB0aGUgY29udmVyc2lvbi4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KHBBcmd1bWVudCBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwQXJndW1lbnQgaXMgRXhwck5hbWVkQXJndW1l bnRTcGVjaWZpY2F0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24g bmFtZWQgPSAoRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKXBBcmd1bWVudDsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBcmd1bWVudCA9IG5hbWVkLlZhbHVlOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvSW1w bGljaXRDb252ZXJzaW9uLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvSW1wbGljaXRDb252ZXJzaW9uLmNzCitpbmRl eCBmMWEwMTU5ZTUzLi5mZGJkMWRkNDI2IDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvSW1wbGljaXRD b252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9JbXBsaWNpdENvbnZlcnNpb24uY3MKK0BAIC0x NzIsOCArMTcyLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICBWU0ZBSUwoIkJhZCB0eXBlIHN5bWJv bCBraW5kIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg ICAgICAgICBjYXNlIFR5cGVLaW5kLlRLX01ldGhvZEdyb3VwVHlwZToKKy0gICAgICAgICAgICAg ICAgICAgICAgICBpZiAoX2V4cHJTcmMgaXMgRXhwck1lbWJlckdyb3VwIG1lbUdycCkKKysgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoX2V4cHJTcmMgaXMgRXhwck1lbWJlckdyb3VwKQorICAg ICAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhw ck1lbWJlckdyb3VwIG1lbUdycCA9IChFeHByTWVtYmVyR3JvdXApX2V4cHJTcmM7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEV4cHJDYWxsIG91dEV4cHI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgcmV0VmFsID0gX2JpbmRlci5CaW5kR3JwQ29udmVyc2lvbihtZW1H cnAsIF90eXBlRGVzdCwgX25lZWRzRXhwckRlc3QsIG91dCBvdXRFeHByLCBmYWxzZSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9leHByRGVzdCA9IG91dEV4cHI7CitAQCAtNzQ0LDEw ICs3NDUsMTAgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1h bnRpY3MKKyAgICAgICAgICAgICAgICAgLy8gKiAgIEEgY29uc3RhbnQtZXhwcmVzc2lvbiBvZiB0 eXBlIGxvbmcgY2FuIGJlIGNvbnZlcnRlZCB0byB0eXBlIHVsb25nLCBwcm92aWRlZCB0aGUgdmFs dWUgb2YKKyAgICAgICAgICAgICAgICAgLy8gICAgIHRoZSBjb25zdGFudC1leHByZXNzaW9uIGlz IG5vdCBuZWdhdGl2ZS4KKyAgICAgICAgICAgICAgICAgLy8gTm90ZTogRG9uJ3QgdXNlIEdldENv bnN0IGhlcmUgc2luY2UgdGhlIGNvbnZlcnNpb24gb25seSBhcHBsaWVzIHRvIGJvbmEtZmlkZSBj b21waWxlIHRpbWUgY29uc3RhbnRzLgorLSAgICAgICAgICAgICAgICBpZiAoX2V4cHJTcmMgaXMg RXhwckNvbnN0YW50IGNvbnN0YW50ICYmIF9leHByU3JjLklzT0sgJiYKKysgICAgICAgICAgICAg ICAgaWYgKF9leHByU3JjIGlzIEV4cHJDb25zdGFudCAmJiBfZXhwclNyYy5Jc09LICYmCisgICAg ICAgICAgICAgICAgICAgICAoKHB0U3JjID09IFByZWRlZmluZWRUeXBlLlBUX0lOVCAmJiBwdERl c3QgIT0gUHJlZGVmaW5lZFR5cGUuUFRfQk9PTCAmJiBwdERlc3QgIT0gUHJlZGVmaW5lZFR5cGUu UFRfQ0hBUikgfHwKKyAgICAgICAgICAgICAgICAgICAgIChwdFNyYyA9PSBQcmVkZWZpbmVkVHlw ZS5QVF9MT05HICYmIHB0RGVzdCA9PSBQcmVkZWZpbmVkVHlwZS5QVF9VTE9ORykpICYmCistICAg ICAgICAgICAgICAgICAgICBpc0NvbnN0YW50SW5SYW5nZShjb25zdGFudCwgX3R5cGVEZXN0KSkK KysgICAgICAgICAgICAgICAgICAgIGlzQ29uc3RhbnRJblJhbmdlKCgoRXhwckNvbnN0YW50KV9l eHByU3JjKSwgX3R5cGVEZXN0KSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgLy8gU3BlY2lhbCBjYXNlIChDTFIgNi4xLjYpOiBpZiBpbnRlZ3JhbCBjb25zdGFudCBp cyBpbiByYW5nZSwgdGhlIGNvbnZlcnNpb24gaXMgYSBsZWdhbCBpbXBsaWNpdCBjb252ZXJzaW9u LgorICAgICAgICAgICAgICAgICAgICAgY29udmVydEtpbmQgPSBDb252S2luZC5JbXBsaWNpdDsK K2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9S dW50aW1lQmluZGVyL1NlbWFudGljcy9NZXRob2RUeXBlSW5mZXJyZXIuY3MgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9N ZXRob2RUeXBlSW5mZXJyZXIuY3MKK2luZGV4IDU4OWI5Yzk2ZDAuLjI1NTljYTVjODUgMTAwNjQ0 CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1l QmluZGVyL1NlbWFudGljcy9NZXRob2RUeXBlSW5mZXJyZXIuY3MKKysrKyBiL3NyYy9NaWNyb3Nv ZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL01l dGhvZFR5cGVJbmZlcnJlci5jcworQEAgLTEwNjQsMTAgKzEwNjQsMTEgQEAgbmFtZXNwYWNlIE1p Y3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAvLyBT UEVDOiAgIHlpZWxkcyBhIHNpbmdsZSBtZXRob2Qgd2l0aCByZXR1cm4gQ1R5cGUgVSB0aGVuIGEg bG93ZXItYm91bmQKKyAgICAgICAgICAgICAvLyBTUEVDOiAgIGluZmVyZW5jZSBpcyBtYWRlIGZy b20gVSB0byBUYi4KKyAKKy0gICAgICAgICAgICBpZiAoIShwU291cmNlIGlzIEV4cHJNZW1iZXJH cm91cCBtZW1HcnApKQorKyAgICAgICAgICAgIGlmICghKHBTb3VyY2UgaXMgRXhwck1lbWJlckdy b3VwKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICAgICB9CisrICAgICAgICAgICAgRXhwck1lbWJlckdyb3VwIG1lbUdycCA9IChFeHBy TWVtYmVyR3JvdXApcFNvdXJjZTsKKyAgICAgICAgICAgICBwVHlwZSA9IHBUeXBlLkdldERlbGVn YXRlVHlwZU9mUG9zc2libGVFeHByZXNzaW9uKCk7CisgICAgICAgICAgICAgaWYgKCFwVHlwZS5p c0RlbGVnYXRlVHlwZSgpKQorICAgICAgICAgICAgIHsKK2RpZmYgLS1naXQgYS9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9O dWxsYWJsZS5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvU2VtYW50aWNzL051bGxhYmxlLmNzCitpbmRleCAxOWRiZWE3ZTJmLi4xZDI1 OGYyZDY3IDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvTnVsbGFibGUuY3MKKysrKyBiL3NyYy9NaWNy b3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNz L051bGxhYmxlLmNzCitAQCAtMjksOCArMjksOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFy cC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgeworICAgICAgICAgICAgIERlYnVn LkFzc2VydChleHByICE9IG51bGwpOworIAorLSAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJD YWxsIHBDYWxsICYmIHBDYWxsLk1lbWJlckdyb3VwLk9wdGlvbmFsT2JqZWN0ID09IG51bGwpCisr ICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwckNhbGwgJiYgKChFeHByQ2FsbClleHByKS5NZW1i ZXJHcm91cC5PcHRpb25hbE9iamVjdCA9PSBudWxsKQorICAgICAgICAgICAgIHsKKysgICAgICAg ICAgICAgICAgRXhwckNhbGwgcENhbGwgPSAoRXhwckNhbGwpZXhwcjsKKyAgICAgICAgICAgICAg ICAgTWV0aG9kU3ltYm9sIG1ldGggPSBwQ2FsbC5NZXRoV2l0aEluc3QuTWV0aCgpOworICAgICAg ICAgICAgICAgICBpZiAobWV0aCAhPSBudWxsICYmIG1ldGguSXNOdWxsYWJsZUNvbnN0cnVjdG9y KCkpCisgICAgICAgICAgICAgICAgIHsKK0BAIC00NSw3ICs0Niw4IEBAIG5hbWVzcGFjZSBNaWNy b3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgCisgICAgICAgICBwdWJsaWMg c3RhdGljIEV4cHIgU3RyaXBOdWxsYWJsZUNvbnN0cnVjdG9yKEV4cHIgcEV4cHIpCisgICAgICAg ICB7CistICAgICAgICAgICAgd2hpbGUgKElzTnVsbGFibGVDb25zdHJ1Y3RvcihwRXhwciwgb3V0 IEV4cHJDYWxsIGNhbGwpKQorKyAgICAgICAgICAgIEV4cHJDYWxsIGNhbGw7CisrICAgICAgICAg ICAgd2hpbGUgKElzTnVsbGFibGVDb25zdHJ1Y3RvcihwRXhwciwgb3V0IGNhbGwpKQorICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcEV4cHIgPSBjYWxsLk9wdGlvbmFsQXJndW1lbnRz OworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocEV4cHIgIT0gbnVsbCAmJiAhKHBFeHBy IGlzIEV4cHJMaXN0KSk7CitAQCAtNjAsNyArNjIsOCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIERlYnVnLkFzc2VydChl eHByU3JjICE9IG51bGwgJiYgZXhwclNyYy5UeXBlLklzTnVsbGFibGVUeXBlKCkpOworIAorICAg ICAgICAgICAgIC8vIEZvciBuZXcgVD8oeCksIHRoZSBhbnN3ZXIgaXMgeC4KKy0gICAgICAgICAg ICBpZiAoSXNOdWxsYWJsZUNvbnN0cnVjdG9yKGV4cHJTcmMsIG91dCBFeHByQ2FsbCBjYWxsKSkK KysgICAgICAgICAgICBFeHByQ2FsbCBjYWxsOworKyAgICAgICAgICAgIGlmIChJc051bGxhYmxl Q29uc3RydWN0b3IoZXhwclNyYywgb3V0IGNhbGwpKQorICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgdmFyIGFyZ3MgPSBjYWxsLk9wdGlvbmFsQXJndW1lbnRzOworICAgICAgICAgICAg ICAgICBEZWJ1Zy5Bc3NlcnQoYXJncyAhPSBudWxsICYmICEoYXJncyBpcyBFeHByTGlzdCkpOwor ZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvRXhwcmVzc2lvbkl0ZXJhdG9yLmNzIGIvc3JjL01p Y3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRp Y3MvVHJlZS9FeHByZXNzaW9uSXRlcmF0b3IuY3MKK2luZGV4IDk2ZWUwMzI0MjIuLjkzOTc1NDNk ZTYgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFy cC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL0V4cHJlc3Npb25JdGVyYXRvci5jcworKysr IGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRl ci9TZW1hbnRpY3MvVHJlZS9FeHByZXNzaW9uSXRlcmF0b3IuY3MKK0BAIC04Myw4ICs4Myw5IEBA IG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAg ICAgICAgICAgICAgIF9wTGlzdCA9IG51bGw7CisgICAgICAgICAgICAgICAgIF9wQ3VycmVudCA9 IG51bGw7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4 cHJMaXN0IHBMaXN0KQorKyAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJMaXN0KQor ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckxpc3QgcExpc3QgPSAoRXhwckxp c3QpcEV4cHI7CisgICAgICAgICAgICAgICAgIF9wTGlzdCA9IHBMaXN0OworICAgICAgICAgICAg ICAgICBfcEN1cnJlbnQgPSBwTGlzdC5PcHRpb25hbEVsZW1lbnQ7CisgICAgICAgICAgICAgfQor ZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwclZpc2l0b3JCYXNlLmNzIGIv c3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9T ZW1hbnRpY3MvVHJlZS9WaXNpdG9ycy9FeHByVmlzaXRvckJhc2UuY3MKK2luZGV4IGUyY2U4ZTg4 ZjUuLmRlZDRkMGIyMTYgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL1Zpc2l0b3JzL0V4cHJW aXNpdG9yQmFzZS5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9WaXNpdG9ycy9FeHByVmlzaXRvckJh c2UuY3MKK0BAIC0yMSw4ICsyMSw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRp bWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgIHJldHVybiBwUmVzdWx0OworICAg ICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBpZiAocEV4cHIgaXMgRXhwclN0YXRlbWVudCBz dGF0ZW1lbnQpCisrICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJTdGF0ZW1lbnQpCisgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByU3RhdGVtZW50IHN0YXRlbWVudCA9IChF eHByU3RhdGVtZW50KXBFeHByOworICAgICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVFeHByTWFw cGluZyhwRXhwciwgRGlzcGF0Y2hTdGF0ZW1lbnRMaXN0KHN0YXRlbWVudCkpOworICAgICAgICAg ICAgIH0KKyAKK0BAIC0yNzksMTEgKzI4MCwxMyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFy cC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAgICAg ICAgICAgIGlmICghKG5leHROb2RlIGlzIEV4cHJMaXN0IG5leHQpKQorKyAgICAgICAgICAgICAg ICAgICAgICAgIEV4cHJMaXN0IG5leHQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEo bmV4dE5vZGUgaXMgRXhwckxpc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSA9IFZpc2l0 KG5leHROb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gKEV4 cHJMaXN0KW5leHROb2RlOworIAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0 OworICAgICAgICAgICAgICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlz aXRvcnMvRXhwcmVzc2lvblRyZWVSZXdyaXRlci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3Ny Yy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMv RXhwcmVzc2lvblRyZWVSZXdyaXRlci5jcworaW5kZXggOGE4NDFlZTVkOS4uY2I0MGE1OWY2ZCAx MDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwcmVzc2lvblRyZWVSZXdyaXRl ci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVu dGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9WaXNpdG9ycy9FeHByZXNzaW9uVHJlZVJld3JpdGVy LmNzCitAQCAtNTQsOCArNTQsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIC8vIEZvciBhc3NpZ25tZW50cywgd2UgZWl0 aGVyIGhhdmUgYSBtZW1iZXIgYXNzaWdubWVudCBvciBhbiBpbmRleGVkIGFzc2lnbm1lbnQuCisg ICAgICAgICAgICAgLy9EZWJ1Zy5Bc3NlcnQoYXNzaWdubWVudC5HZXRMSFMoKS5pc1BST1AoKSB8 fCBhc3NpZ25tZW50LkdldExIUygpLmlzRklFTEQoKSB8fCBhc3NpZ25tZW50LkdldExIUygpLmlz QVJSQVlJTkRFWCgpIHx8IGFzc2lnbm1lbnQuR2V0TEhTKCkuaXNMT0NBTCgpKTsKKyAgICAgICAg ICAgICBFeHByIGxoczsKKy0gICAgICAgICAgICBpZiAoYXNzaWdubWVudC5MSFMgaXMgRXhwclBy b3BlcnR5IHByb3ApCisrICAgICAgICAgICAgaWYgKGFzc2lnbm1lbnQuTEhTIGlzIEV4cHJQcm9w ZXJ0eSkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJQcm9wZXJ0eSBwcm9w ID0gKEV4cHJQcm9wZXJ0eSlhc3NpZ25tZW50LkxIUzsKKyAgICAgICAgICAgICAgICAgaWYgKHBy b3AuT3B0aW9uYWxBcmd1bWVudHM9PSBudWxsKQorICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgICAvLyBSZWd1bGFyIHByb3BlcnR5LgorQEAgLTMxOCw4ICszMTksOSBAQCBu YW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAg ICAgICAgICAgICAvLyBjYW4gaGFuZGxlIGluIHRoZSBnZW5lcmFsIGNhc2UgYWxsIGltcGxpY2l0 IGJveGluZyBjb252ZXJzaW9ucy4gUmlnaHQgbm93IGl0IAorICAgICAgICAgICAgICAgICAvLyBy ZXF1aXJlcyB0aGF0IGFsbCBhcmd1bWVudHMgdG8gYSBjYWxsIHRoYXQgbmVlZCB0byBiZSBib3hl ZCBiZSBleHBsaWNpdGx5IGJveGVkLgorIAorLSAgICAgICAgICAgICAgICBpZiAocE9iamVjdCAh PSBudWxsICYmIHBPYmplY3QgaXMgRXhwckNhc3QgY2FzdCAmJiBjYXN0LklzQm94aW5nQ2FzdCkK KysgICAgICAgICAgICAgICAgaWYgKHBPYmplY3QgIT0gbnVsbCAmJiBwT2JqZWN0IGlzIEV4cHJD YXN0ICYmICgoRXhwckNhc3QpcE9iamVjdCkuSXNCb3hpbmdDYXN0KQorICAgICAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByQ2FzdCBjYXN0ID0gKEV4cHJDYXN0KSBwT2Jq ZWN0OworICAgICAgICAgICAgICAgICAgICAgcE9iamVjdCA9IGNhc3QuQXJndW1lbnQ7CisgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgcE9iamVjdCA9IFZpc2l0KHBPYmplY3Qp OworQEAgLTU5Nyw4ICs1OTksOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIGlmICh1ZGNhbGwgIT0gbnVsbCkKKyAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydCh1ZGNhbGwuS2luZCA9PSBF eHByZXNzaW9uS2luZC5DYWxsIHx8IHVkY2FsbC5LaW5kID09IEV4cHJlc3Npb25LaW5kLlVzZXJM b2dpY2FsT3ApOworLSAgICAgICAgICAgICAgICBpZiAodWRjYWxsIGlzIEV4cHJDYWxsIGFzY2Fs bCkKKysgICAgICAgICAgICAgICAgaWYgKHVkY2FsbCBpcyBFeHByQ2FsbCkKKyAgICAgICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNhbGwgYXNjYWxsID0gKEV4cHJDYWxs KXVkY2FsbDsKKyAgICAgICAgICAgICAgICAgICAgIEV4cHJMaXN0IGFyZ3MgPSAoRXhwckxpc3Qp YXNjYWxsLk9wdGlvbmFsQXJndW1lbnRzOworICAgICAgICAgICAgICAgICAgICAgRGVidWcuQXNz ZXJ0KGFyZ3MuT3B0aW9uYWxOZXh0TGlzdE5vZGUuS2luZCAhPSBFeHByZXNzaW9uS2luZC5MaXN0 KTsKKyAgICAgICAgICAgICAgICAgICAgIHAxID0gYXJncy5PcHRpb25hbEVsZW1lbnQ7CitAQCAt NzMxLDggKzczNCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIu U2VtYW50aWNzCisgICAgICAgICAgICAgRXhwckJsb2NrIGJvZHkgPSBhbm9ubWV0aC5PcHRpb25h bEJvZHk7CisgCisgICAgICAgICAgICAgLy8gVGhlIG1vc3QgbGlrZWx5IGNhc2U6CistICAgICAg ICAgICAgaWYgKGJvZHkuT3B0aW9uYWxTdGF0ZW1lbnRzIGlzIEV4cHJSZXR1cm4gcmV0KQorKyAg ICAgICAgICAgIGlmIChib2R5Lk9wdGlvbmFsU3RhdGVtZW50cyBpcyBFeHByUmV0dXJuKQorICAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwclJldHVybiByZXQgPSAoRXhwclJldHVy bilib2R5Lk9wdGlvbmFsU3RhdGVtZW50czsKKyAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0 KHJldC5PcHRpb25hbE9iamVjdCAhPSBudWxsKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFZp c2l0KHJldC5PcHRpb25hbE9iamVjdCk7CisgICAgICAgICAgICAgfQorQEAgLTg1NCw4ICs4NTgs OSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcwor ICAgICAgICAgICAgICAgICBFeHByIHBVRENvbnZlcnNpb24gPSBjYWxsPy5QQ29udmVyc2lvbnM7 CisgICAgICAgICAgICAgICAgIGlmIChwVURDb252ZXJzaW9uICE9IG51bGwpCisgICAgICAgICAg ICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChwVURDb252ZXJzaW9uIGlzIEV4cHJD YWxsIGNvbnZDYWxsKQorKyAgICAgICAgICAgICAgICAgICAgaWYgKHBVRENvbnZlcnNpb24gaXMg RXhwckNhbGwpCisgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgRXhwckNhbGwgY29udkNhbGwgPSAoRXhwckNhbGwpcFVEQ29udmVyc2lvbjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICBFeHByIHBVRENvbnZlcnNpb25Bcmd1bWVudCA9IGNvbnZDYWxsLk9w dGlvbmFsQXJndW1lbnRzOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJc051bGxhYmxl VmFsdWVBY2Nlc3MocFVEQ29udmVyc2lvbkFyZ3VtZW50LCBwQXJndW1lbnQpKQorICAgICAgICAg ICAgICAgICAgICAgICAgIHsKK0BAIC0xMjM4LDIzICsxMjQzLDI1IEBAIG5hbWVzcGFjZSBNaWNy b3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICBwcml2YXRlIGJv b2wgSXNOdWxsYWJsZVZhbHVlQWNjZXNzKEV4cHIgcEV4cHIsIEV4cHIgcE9iamVjdCkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocEV4cHIgIT0gbnVsbCk7CistICAgICAg ICAgICAgcmV0dXJuIHBFeHByIGlzIEV4cHJQcm9wZXJ0eSBwcm9wICYmIHByb3AuTWVtYmVyR3Jv dXAuT3B0aW9uYWxPYmplY3QgPT0gcE9iamVjdCAmJiBwT2JqZWN0LlR5cGUuSXNOdWxsYWJsZVR5 cGUoKTsKKysgICAgICAgICAgICByZXR1cm4gcEV4cHIgaXMgRXhwclByb3BlcnR5ICYmICgoRXhw clByb3BlcnR5KXBFeHByKS5NZW1iZXJHcm91cC5PcHRpb25hbE9iamVjdCA9PSBwT2JqZWN0ICYm IHBPYmplY3QuVHlwZS5Jc051bGxhYmxlVHlwZSgpOworICAgICAgICAgfQorIAorICAgICAgICAg cHJpdmF0ZSBib29sIElzRGVsZWdhdGVDb25zdHJ1Y3RvckNhbGwoRXhwciBwRXhwcikKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocEV4cHIgIT0gbnVsbCk7CistICAgICAg ICAgICAgaWYgKCEocEV4cHIgaXMgRXhwckNhbGwgcENhbGwpKQorKyAgICAgICAgICAgIEV4cHJD YWxsIHBDYWxsOworKyAgICAgICAgICAgIGlmICghKHBFeHByIGlzIEV4cHJDYWxsKSkKKyAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICB9 CisrICAgICAgICAgICAgcENhbGwgPSAoRXhwckNhbGwpcEV4cHI7CisgCisgICAgICAgICAgICAg cmV0dXJuIHBDYWxsLk1ldGhXaXRoSW5zdC5NZXRoKCkgIT0gbnVsbCAmJgorICAgICAgICAgICAg ICAgICBwQ2FsbC5NZXRoV2l0aEluc3QuTWV0aCgpLklzQ29uc3RydWN0b3IoKSAmJgorICAgICAg ICAgICAgICAgICBwQ2FsbC5UeXBlLmlzRGVsZWdhdGVUeXBlKCkgJiYKKyAgICAgICAgICAgICAg ICAgcENhbGwuT3B0aW9uYWxBcmd1bWVudHMgIT0gbnVsbCAmJgorLSAgICAgICAgICAgICAgICBw Q2FsbC5PcHRpb25hbEFyZ3VtZW50cyBpcyBFeHByTGlzdCBsaXN0ICYmCistICAgICAgICAgICAg ICAgIGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUuS2luZCA9PSBFeHByZXNzaW9uS2luZC5GdW5j dGlvblBvaW50ZXI7CisrICAgICAgICAgICAgICAgIChwQ2FsbC5PcHRpb25hbEFyZ3VtZW50cyBp cyBFeHByTGlzdCkgJiYKKysgICAgICAgICAgICAgICAgKChFeHByTGlzdClwQ2FsbC5PcHRpb25h bEFyZ3VtZW50cykuT3B0aW9uYWxOZXh0TGlzdE5vZGUuS2luZCA9PSBFeHByZXNzaW9uS2luZC5G dW5jdGlvblBvaW50ZXI7CisgICAgICAgICB9CisgICAgICAgICBwcml2YXRlIHN0YXRpYyBib29s IGlzRW51bVRvRGVjaW1hbENvbnZlcnNpb24oQ1R5cGUgYXJndHlwZSwgQ1R5cGUgZGVzdHR5cGUp CisgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvc3JjL1N5c3RlbS5Db2xsZWN0aW9ucy9zcmMvU3lz dGVtL0NvbGxlY3Rpb25zL0dlbmVyaWMvU29ydGVkU2V0LlRyZWVTdWJTZXQuY3MgYi9zcmMvU3lz dGVtLkNvbGxlY3Rpb25zL3NyYy9TeXN0ZW0vQ29sbGVjdGlvbnMvR2VuZXJpYy9Tb3J0ZWRTZXQu VHJlZVN1YlNldC5jcworaW5kZXggNGViODE3YzBhZi4uNjcxNjM2ZjQyOCAxMDA2NDQKKy0tLSBh L3NyYy9TeXN0ZW0uQ29sbGVjdGlvbnMvc3JjL1N5c3RlbS9Db2xsZWN0aW9ucy9HZW5lcmljL1Nv cnRlZFNldC5UcmVlU3ViU2V0LmNzCisrKysgYi9zcmMvU3lzdGVtLkNvbGxlY3Rpb25zL3NyYy9T eXN0ZW0vQ29sbGVjdGlvbnMvR2VuZXJpYy9Tb3J0ZWRTZXQuVHJlZVN1YlNldC5jcworQEAgLTM1 Miw3ICszNTIsMTAgQEAgbmFtZXNwYWNlIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljCisgICAg ICAgICAgICAgICAgIHRocm93IG5ldyBQbGF0Zm9ybU5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOwor ICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBP bkRlc2VyaWFsaXphdGlvbihPYmplY3Qgc2VuZGVyKSA9PiB0aHJvdyBuZXcgUGxhdGZvcm1Ob3RT dXBwb3J0ZWRFeGNlcHRpb24oKTsKKysgICAgICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9p ZCBPbkRlc2VyaWFsaXphdGlvbihPYmplY3Qgc2VuZGVyKQorKyAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgdGhyb3cgbmV3IFBsYXRmb3JtTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7Cisr ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3NyYy9T eXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0R5bmFtaWMvVXRpbHMvVHlwZUV4dGVu c2lvbnMuY3MgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9EeW5hbWlj L1V0aWxzL1R5cGVFeHRlbnNpb25zLmNzCitpbmRleCBjNDVjYWJhMDkzLi5lZjlhMjUyMDNkIDEw MDY0NAorLS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vRHluYW1p Yy9VdGlscy9UeXBlRXh0ZW5zaW9ucy5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Np b25zL3NyYy9TeXN0ZW0vRHluYW1pYy9VdGlscy9UeXBlRXh0ZW5zaW9ucy5jcworQEAgLTY1LDcg KzY1LDggQEAgbmFtZXNwYWNlIFN5c3RlbS5EeW5hbWljLlV0aWxzCisgICAgICAgICBpbnRlcm5h bCBzdGF0aWMgUGFyYW1ldGVySW5mb1tdIEdldFBhcmFtZXRlcnNDYWNoZWQodGhpcyBNZXRob2RC YXNlIG1ldGhvZCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBDYWNoZURpY3Q8TWV0aG9kQmFz ZSwgUGFyYW1ldGVySW5mb1tdPiBwaWMgPSBzX3BhcmFtSW5mb0NhY2hlOworLSAgICAgICAgICAg IGlmICghcGljLlRyeUdldFZhbHVlKG1ldGhvZCwgb3V0IFBhcmFtZXRlckluZm9bXSBwaXMpKQor KyAgICAgICAgICAgIFBhcmFtZXRlckluZm9bXSBwaXM7CisrICAgICAgICAgICAgaWYgKCFwaWMu VHJ5R2V0VmFsdWUobWV0aG9kLCBvdXQgcGlzKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIHBpcyA9IG1ldGhvZC5HZXRQYXJhbWV0ZXJzKCk7CisgCitkaWZmIC0tZ2l0IGEvc3Jj L1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9Db21w aWxlci9MYW1iZGFDb21waWxlci5FeHByZXNzaW9ucy5jcyBiL3NyYy9TeXN0ZW0uTGlucS5FeHBy ZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvQ29tcGlsZXIvTGFtYmRhQ29tcGls ZXIuRXhwcmVzc2lvbnMuY3MKK2luZGV4IGQ4YjFjNjFmNzQuLjhjZWZiZDRmMTkgMTAwNjQ0Cist LS0gYS9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Np b25zL0NvbXBpbGVyL0xhbWJkYUNvbXBpbGVyLkV4cHJlc3Npb25zLmNzCisrKysgYi9zcmMvU3lz dGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL0NvbXBpbGVy L0xhbWJkYUNvbXBpbGVyLkV4cHJlc3Npb25zLmNzCitAQCAtOTUyLDggKzk1Miw5IEBAIG5hbWVz cGFjZSBTeXN0ZW0uTGlucS5FeHByZXNzaW9ucy5Db21waWxlcgorICAgICAgICAgcHJpdmF0ZSB2 b2lkIEVtaXRNZW1iZXJBc3NpZ25tZW50KE1lbWJlckFzc2lnbm1lbnQgYmluZGluZywgVHlwZSBv YmplY3RUeXBlKQorICAgICAgICAgeworICAgICAgICAgICAgIEVtaXRFeHByZXNzaW9uKGJpbmRp bmcuRXhwcmVzc2lvbik7CistICAgICAgICAgICAgaWYgKGJpbmRpbmcuTWVtYmVyIGlzIEZpZWxk SW5mbyBmaSkKKysgICAgICAgICAgICBpZiAoYmluZGluZy5NZW1iZXIgaXMgRmllbGRJbmZvKQor ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRmllbGRJbmZvIGZpID0gKEZpZWxkSW5m byliaW5kaW5nLk1lbWJlcjsKKyAgICAgICAgICAgICAgICAgX2lsZy5FbWl0KE9wQ29kZXMuU3Rm bGQsIGZpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZQorQEAgLTEwOTcsNyAr MTA5OCw3IEBAIG5hbWVzcGFjZSBTeXN0ZW0uTGlucS5FeHByZXNzaW9ucy5Db21waWxlcgorICAg ICAgICAgcHJpdmF0ZSBzdGF0aWMgVHlwZSBHZXRNZW1iZXJUeXBlKE1lbWJlckluZm8gbWVtYmVy KQorICAgICAgICAgeworICAgICAgICAgICAgIERlYnVnLkFzc2VydChtZW1iZXIgaXMgRmllbGRJ bmZvIHx8IG1lbWJlciBpcyBQcm9wZXJ0eUluZm8pOworLSAgICAgICAgICAgIHJldHVybiBtZW1i ZXIgaXMgRmllbGRJbmZvIGZpID8gZmkuRmllbGRUeXBlIDogKG1lbWJlciBhcyBQcm9wZXJ0eUlu Zm8pLlByb3BlcnR5VHlwZTsKKysgICAgICAgICAgICByZXR1cm4gbWVtYmVyIGlzIEZpZWxkSW5m byA/ICgoRmllbGRJbmZvKW1lbWJlcikuRmllbGRUeXBlIDogKG1lbWJlciBhcyBQcm9wZXJ0eUlu Zm8pLlByb3BlcnR5VHlwZTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgICNlbmRyZWdpb24KK2Rp ZmYgLS1naXQgYS9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4 cHJlc3Npb25zL01lbWJlckFzc2lnbm1lbnQuY3MgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lv bnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01lbWJlckFzc2lnbm1lbnQuY3MKK2luZGV4 IDQ3NWE2YzYzY2MuLjA3ODdiMTAxODYgMTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLkxpbnEuRXhw cmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01lbWJlckFzc2lnbm1lbnQuY3MK KysrKyBiL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVz c2lvbnMvTWVtYmVyQXNzaWdubWVudC5jcworQEAgLTkzLDIzICs5MywyMyBAQCBuYW1lc3BhY2Ug U3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMKKyAKKyAgICAgICAgICAgICAvLyBOdWxsIHBhcmFtTmFt ZSBhcyB0aGVyZSBhcmUgdHdvIHBhdGhzIGhlcmUgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVyIG5h bWVzIGF0IHRoZSBBUEkKKyAgICAgICAgICAgICBUeXBlVXRpbHMuVmFsaWRhdGVUeXBlKGRlY1R5 cGUsIG51bGwpOworLSAgICAgICAgICAgIHN3aXRjaCAobWVtYmVyKQorKyAgICAgICAgICAgIGlm IChtZW1iZXIgaXMgUHJvcGVydHlJbmZvKQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgY2FzZSBQcm9wZXJ0eUluZm8gcGk6CistICAgICAgICAgICAgICAgICAgICBpZiAoIXBpLkNh bldyaXRlKQorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAg IHRocm93IEVycm9yLlByb3BlcnR5RG9lc05vdEhhdmVTZXR0ZXIocGksIG5hbWVvZihtZW1iZXIp KTsKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0KKy0gICAgICAgICAgICAgICAgICAgIG1lbWJl clR5cGUgPSBwaS5Qcm9wZXJ0eVR5cGU7CistICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0K Ky0gICAgICAgICAgICAgICAgY2FzZSBGaWVsZEluZm8gZmk6CistICAgICAgICAgICAgICAgICAg ICBtZW1iZXJUeXBlID0gZmkuRmllbGRUeXBlOworLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CistCistICAgICAgICAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgICAgICAgICB0aHJv dyBFcnJvci5Bcmd1bWVudE11c3RCZUZpZWxkSW5mb09yUHJvcGVydHlJbmZvKG5hbWVvZihtZW1i ZXIpKTsKKysgICAgICAgICAgICAgICAgUHJvcGVydHlJbmZvIHBpID0gKFByb3BlcnR5SW5mbykg bWVtYmVyOworKyAgICAgICAgICAgICAgICBpZiAoIXBpLkNhbldyaXRlKQorKyAgICAgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvci5Qcm9wZXJ0eURvZXNOb3RI YXZlU2V0dGVyKHBpLCBuYW1lb2YobWVtYmVyKSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICAgICAgbWVtYmVyVHlwZSA9IHBpLlByb3BlcnR5VHlwZTsKKysgICAgICAgICAgICB9 CisrICAgICAgICAgICAgZWxzZSBpZiAobWVtYmVyIGlzIEZpZWxkSW5mbykKKysgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgIEZpZWxkSW5mbyBmaSA9IChGaWVsZEluZm8pIG1lbWJlcjsK KysgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9IGZpLkZpZWxkVHlwZTsKKysgICAgICAgICAg ICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg dGhyb3cgRXJyb3IuQXJndW1lbnRNdXN0QmVGaWVsZEluZm9PclByb3BlcnR5SW5mbyhuYW1lb2Yo bWVtYmVyKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0 IGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9u cy9NZW1iZXJCaW5kaW5nLmNzIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0 ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJCaW5kaW5nLmNzCitpbmRleCBjMWM1ODg0NjE4Li40 M2MwNjk4ZjkwIDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9T eXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJCaW5kaW5nLmNzCisrKysgYi9zcmMvU3lzdGVt LkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01lbWJlckJpbmRp bmcuY3MKK0BAIC02MSw2ICs2MSw5IEBAIG5hbWVzcGFjZSBTeXN0ZW0uTGlucS5FeHByZXNzaW9u cworICAgICAgICAgICAgIHJldHVybiBFeHByZXNzaW9uU3RyaW5nQnVpbGRlci5NZW1iZXJCaW5k aW5nVG9TdHJpbmcodGhpcyk7CisgICAgICAgICB9CisgCistICAgICAgICBpbnRlcm5hbCB2aXJ0 dWFsIHZvaWQgVmFsaWRhdGVBc0RlZmluZWRIZXJlKGludCBpbmRleCkgPT4gdGhyb3cgRXJyb3Iu VW5rbm93bkJpbmRpbmdUeXBlKGluZGV4KTsKKysgICAgICAgIGludGVybmFsIHZpcnR1YWwgdm9p ZCBWYWxpZGF0ZUFzRGVmaW5lZEhlcmUoaW50IGluZGV4KQorKyAgICAgICAgeworKyAgICAgICAg ICAgIHRocm93IEVycm9yLlVua25vd25CaW5kaW5nVHlwZShpbmRleCk7CisrICAgICAgICB9Cisg ICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9T eXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJNZW1iZXJCaW5kaW5nLmNzIGIvc3JjL1N5c3Rl bS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJNZW1i ZXJCaW5kaW5nLmNzCitpbmRleCBmMzk4MWEyYjFmLi43NWRkNzE0MWRhIDEwMDY0NAorLS0tIGEv c3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9N ZW1iZXJNZW1iZXJCaW5kaW5nLmNzCisrKysgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMv c3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01lbWJlck1lbWJlckJpbmRpbmcuY3MKK0BAIC0x MjcsMjMgKzEyNywyNCBAQCBuYW1lc3BhY2UgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMKKyAKKyAg ICAgICAgICAgICAvLyBOdWxsIHBhcmFtTmFtZSBhcyB0aGVyZSBhcmUgc2V2ZXJhbCBwYXRocyBo ZXJlIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlciBuYW1lcyBhdCB0aGUgQVBJCisgICAgICAgICAg ICAgVHlwZVV0aWxzLlZhbGlkYXRlVHlwZShkZWNUeXBlLCBudWxsLCBhbGxvd0J5UmVmOiB0cnVl LCBhbGxvd1BvaW50ZXI6IHRydWUpOworLSAgICAgICAgICAgIHN3aXRjaCAobWVtYmVyKQorKyAg ICAgICAgICAgIGlmIChtZW1iZXIgaXMgUHJvcGVydHlJbmZvKQorICAgICAgICAgICAgIHsKKy0g ICAgICAgICAgICAgICAgY2FzZSBQcm9wZXJ0eUluZm8gcGk6CistICAgICAgICAgICAgICAgICAg ICBpZiAoIXBpLkNhblJlYWQpCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgICAgICAgICAgdGhyb3cgRXJyb3IuUHJvcGVydHlEb2VzTm90SGF2ZUdldHRlcihwaSwgbmFt ZW9mKG1lbWJlcikpOworLSAgICAgICAgICAgICAgICAgICAgfQorLQorLSAgICAgICAgICAgICAg ICAgICAgbWVtYmVyVHlwZSA9IHBpLlByb3BlcnR5VHlwZTsKKy0gICAgICAgICAgICAgICAgICAg IGJyZWFrOworLQorLSAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5mbyBmaToKKy0gICAgICAg ICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBmaS5GaWVsZFR5cGU7CistICAgICAgICAgICAgICAg ICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgUHJvcGVydHlJbmZvIHBpID0gKFByb3BlcnR5 SW5mbyltZW1iZXI7CisrICAgICAgICAgICAgICAgIGlmICghcGkuQ2FuUmVhZCkKKysgICAgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuUHJvcGVydHlEb2Vz Tm90SGF2ZUdldHRlcihwaSwgbmFtZW9mKG1lbWJlcikpOworKyAgICAgICAgICAgICAgICB9Cisg CistICAgICAgICAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgICAgICAgICB0aHJvdyBF cnJvci5Bcmd1bWVudE11c3RCZUZpZWxkSW5mb09yUHJvcGVydHlJbmZvKG5hbWVvZihtZW1iZXIp KTsKKysgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9IHBpLlByb3BlcnR5VHlwZTsKKysgICAg ICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZiAobWVtYmVyIGlzIEZpZWxkSW5mbykKKysg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEZpZWxkSW5mbyBmaSA9IChGaWVsZEluZm8p bWVtYmVyOworKyAgICAgICAgICAgICAgICBtZW1iZXJUeXBlID0gZmkuRmllbGRUeXBlOworKyAg ICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICB0aHJvdyBFcnJvci5Bcmd1bWVudE11c3RCZUZpZWxkSW5mb09yUHJvcGVydHlJbmZv KG5hbWVvZihtZW1iZXIpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCitkaWZmIC0t Z2l0IGEvc3JjL1N5c3RlbS5OZXQuSHR0cExpc3RlbmVyL3NyYy9TeXN0ZW0vTmV0L1dlYlNvY2tl dHMvSHR0cExpc3RlbmVyV2ViU29ja2V0Q29udGV4dC5jcyBiL3NyYy9TeXN0ZW0uTmV0Lkh0dHBM aXN0ZW5lci9zcmMvU3lzdGVtL05ldC9XZWJTb2NrZXRzL0h0dHBMaXN0ZW5lcldlYlNvY2tldENv bnRleHQuY3MKK2luZGV4IDUzMjE1Nzg5NDYuLmZmNTQ2NzcwMjcgMTAwNjQ0CistLS0gYS9zcmMv U3lzdGVtLk5ldC5IdHRwTGlzdGVuZXIvc3JjL1N5c3RlbS9OZXQvV2ViU29ja2V0cy9IdHRwTGlz dGVuZXJXZWJTb2NrZXRDb250ZXh0LmNzCisrKysgYi9zcmMvU3lzdGVtLk5ldC5IdHRwTGlzdGVu ZXIvc3JjL1N5c3RlbS9OZXQvV2ViU29ja2V0cy9IdHRwTGlzdGVuZXJXZWJTb2NrZXRDb250ZXh0 LmNzCitAQCAtOTQsOCArOTQsOSBAQCBuYW1lc3BhY2UgU3lzdGVtLk5ldC5XZWJTb2NrZXRzCisg ICAgICAgICAgICAgICAgIGlmICghKHVzZXIgaXMgV2luZG93c1ByaW5jaXBhbCkpCisgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIEF1dGhlbnRpY2F0aW9uU2NoZW1l cy5CYXNpYy4KKy0gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyLklkZW50aXR5IGlzIEh0dHBM aXN0ZW5lckJhc2ljSWRlbnRpdHkgYmFzaWNJZGVudGl0eSkKKysgICAgICAgICAgICAgICAgICAg IGlmICh1c2VyLklkZW50aXR5IGlzIEh0dHBMaXN0ZW5lckJhc2ljSWRlbnRpdHkpCisgICAgICAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgSHR0cExpc3RlbmVyQmFz aWNJZGVudGl0eSBiYXNpY0lkZW50aXR5ID0gKEh0dHBMaXN0ZW5lckJhc2ljSWRlbnRpdHkpdXNl ci5JZGVudGl0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNQ cmluY2lwYWwobmV3IEh0dHBMaXN0ZW5lckJhc2ljSWRlbnRpdHkoYmFzaWNJZGVudGl0eS5OYW1l LCBiYXNpY0lkZW50aXR5LlBhc3N3b3JkKSwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL21v bm8tNS40LjAtcGF0Y2hlcy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAt cGF0Y2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDA3 YTZiODQ3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUu NC4wLXBhdGNoZXMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK2RpZmYgLS1naXQgYS9tY3MvY2xh c3MvU3lzdGVtL01vbm8uTmV0LlNlY3VyaXR5L0FzeW5jUHJvdG9jb2xSZXF1ZXN0LmNzIGIvbWNz L2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Bc3luY1Byb3RvY29sUmVxdWVzdC5jcwor aW5kZXggM2M1MzdhN2U0MjcuLjU5YmViMTkyNTVmIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL1N5 c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Bc3luY1Byb3RvY29sUmVxdWVzdC5jcworKysrIGIvbWNz L2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Bc3luY1Byb3RvY29sUmVxdWVzdC5jcwor QEAgLTMxNiw3ICszMTYsOSBAQCBuYW1lc3BhY2UgTW9uby5OZXQuU2VjdXJpdHkKKyAJCXsKKyAJ CQlEZWJ1ZyAoIlByb2Nlc3NSZWFkIC0gcmVhZCB1c2VyOiB7MH0gezF9IiwgdGhpcywgc3RhdHVz KTsKKyAKKy0JCQl2YXIgKHJldCwgd2FudE1vcmUpID0gUGFyZW50LlByb2Nlc3NSZWFkIChVc2Vy QnVmZmVyKTsKKysgICAgICAgICAgICBTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJvb2w+IHQwID0g UGFyZW50LlByb2Nlc3NSZWFkIChVc2VyQnVmZmVyKTsKKysgICAgICAgICAgICB2YXIgcmV0ID0g dDAuSXRlbTE7CisrICAgICAgICAgICAgdmFyIHdhbnRNb3JlID0gdDAuSXRlbTI7CisgCisgCQkJ RGVidWcgKCJQcm9jZXNzUmVhZCAtIHJlYWQgdXNlciBkb25lOiB7MH0gLSB7MX0gezJ9IiwgdGhp cywgcmV0LCB3YW50TW9yZSk7CisgCitAQCAtMzU1LDcgKzM1Nyw5IEBAIG5hbWVzcGFjZSBNb25v Lk5ldC5TZWN1cml0eQorIAkJCQlyZXR1cm4gQXN5bmNPcGVyYXRpb25TdGF0dXMuQ29tcGxldGU7 CisgCQkJfQorIAorLQkJCXZhciAocmV0LCB3YW50TW9yZSkgPSBQYXJlbnQuUHJvY2Vzc1dyaXRl IChVc2VyQnVmZmVyKTsKKysgICAgICAgICAgICBTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJvb2w+ IHQwID0gUGFyZW50LlByb2Nlc3NXcml0ZSAoVXNlckJ1ZmZlcik7CisrICAgICAgICAgICAgdmFy IHJldCA9IHQwLkl0ZW0xOworKyAgICAgICAgICAgIHZhciB3YW50TW9yZSA9IHQwLkl0ZW0yOwor IAorIAkJCURlYnVnICgiUHJvY2Vzc1dyaXRlIC0gd3JpdGUgdXNlciBkb25lOiB7MH0gLSB7MX0g ezJ9IiwgdGhpcywgcmV0LCB3YW50TW9yZSk7CisgCitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL1N5 c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Nb2JpbGVBdXRoZW50aWNhdGVkU3RyZWFtLmNzIGIvbWNz L2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Nb2JpbGVBdXRoZW50aWNhdGVkU3RyZWFt LmNzCitpbmRleCAyYjM4MGExYWU2Yy4uNjZlNDViYzFmMWQgMTAwNjQ0CistLS0gYS9tY3MvY2xh c3MvU3lzdGVtL01vbm8uTmV0LlNlY3VyaXR5L01vYmlsZUF1dGhlbnRpY2F0ZWRTdHJlYW0uY3MK KysrKyBiL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkvTW9iaWxlQXV0aGVudGlj YXRlZFN0cmVhbS5jcworQEAgLTQwMyw4ICs0MDMsMTAgQEAgbmFtZXNwYWNlIE1vbm8uTmV0LlNl Y3VyaXR5CisgCQkJCSAgICAgICBhc3luY1JlYWRSZXF1ZXN0ICE9IG51bGwgPyAiYXN5bmMiIDog IiIsCisgCQkJCSAgICAgICByZWFkQnVmZmVyICE9IG51bGwgPyByZWFkQnVmZmVyLlRvU3RyaW5n ICgpIDogIiIpOworIAkJCQl2YXIgYXN5bmNSZXF1ZXN0ID0gYXN5bmNIYW5kc2hha2VSZXF1ZXN0 ID8/IGFzeW5jUmVhZFJlcXVlc3Q7CistCQkJCXZhciAocmV0LCB3YW50TW9yZSkgPSBJbnRlcm5h bFJlYWQgKGFzeW5jUmVxdWVzdCwgcmVhZEJ1ZmZlciwgYnVmZmVyLCBvZmZzZXQsIHNpemUpOwor LQkJCQlvdXRXYW50TW9yZSA9IHdhbnRNb3JlOworKyAgICAgICAgICAgICAgICBTeXN0ZW0uVmFs dWVUdXBsZTxpbnQsIGJvb2w+IHQwID0gSW50ZXJuYWxSZWFkIChhc3luY1JlcXVlc3QsIHJlYWRC dWZmZXIsIGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKKysgICAgICAgICAgICAgICAgdmFyIHJldCA9 IHQwLkl0ZW0xOworKyAgICAgICAgICAgICAgICB2YXIgd2FudE1vcmUgPSB0MC5JdGVtMjsKKysg ICAgICAgICAgICAgICAgb3V0V2FudE1vcmUgPSB3YW50TW9yZTsKKyAJCQkJcmV0dXJuIHJldDsK KyAJCQl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAJCQkJRGVidWcgKCJJbnRlcm5hbFJlYWQg ZmFpbGVkOiB7MH0iLCBleCk7CitAQCAtNDE0LDcgKzQxNiw3IEBAIG5hbWVzcGFjZSBNb25vLk5l dC5TZWN1cml0eQorIAkJCX0KKyAJCX0KKyAKKy0JCShpbnQsIGJvb2wpIEludGVybmFsUmVhZCAo QXN5bmNQcm90b2NvbFJlcXVlc3QgYXN5bmNSZXF1ZXN0LCBCdWZmZXJPZmZzZXRTaXplIGludGVy bmFsQnVmZmVyLCBieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKKysJCVN5c3Rl bS5WYWx1ZVR1cGxlPGludCwgYm9vbD4gSW50ZXJuYWxSZWFkIChBc3luY1Byb3RvY29sUmVxdWVz dCBhc3luY1JlcXVlc3QsIEJ1ZmZlck9mZnNldFNpemUgaW50ZXJuYWxCdWZmZXIsIGJ5dGVbXSBi dWZmZXIsIGludCBvZmZzZXQsIGludCBzaXplKQorIAkJeworIAkJCWlmIChhc3luY1JlcXVlc3Qg PT0gbnVsbCkKKyAJCQkJdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24gKCk7CitA QCAtNDM2LDcgKzQzOCw3IEBAIG5hbWVzcGFjZSBNb25vLk5ldC5TZWN1cml0eQorIAkJCQlEZWJ1 ZyAoIkludGVybmFsUmVhZCAjMTogezB9IHsxfSB7Mn0iLCBpbnRlcm5hbEJ1ZmZlci5PZmZzZXQs IGludGVybmFsQnVmZmVyLlRvdGFsQnl0ZXMsIHNpemUpOworIAkJCQlpbnRlcm5hbEJ1ZmZlci5P ZmZzZXQgPSBpbnRlcm5hbEJ1ZmZlci5TaXplID0gMDsKKyAJCQkJYXN5bmNSZXF1ZXN0LlJlcXVl c3RSZWFkIChzaXplKTsKKy0JCQkJcmV0dXJuICgwLCB0cnVlKTsKKysJCQkJcmV0dXJuIG5ldyBW YWx1ZVR1cGxlPGludCwgYm9vbD4oMCwgdHJ1ZSk7CisgCQkJfQorIAorIAkJCS8qCitAQCAtNDUx LDcgKzQ1Myw3IEBAIG5hbWVzcGFjZSBNb25vLk5ldC5TZWN1cml0eQorIAkJCUJ1ZmZlci5CbG9j a0NvcHkgKGludGVybmFsQnVmZmVyLkJ1ZmZlciwgaW50ZXJuYWxCdWZmZXIuT2Zmc2V0LCBidWZm ZXIsIG9mZnNldCwgbGVuKTsKKyAJCQlpbnRlcm5hbEJ1ZmZlci5PZmZzZXQgKz0gbGVuOworIAkJ CWludGVybmFsQnVmZmVyLlNpemUgLT0gbGVuOworLQkJCXJldHVybiAobGVuLCAhaW50ZXJuYWxC dWZmZXIuQ29tcGxldGUgJiYgbGVuIDwgc2l6ZSk7CisrCQkJcmV0dXJuIG5ldyBWYWx1ZVR1cGxl PGludCwgYm9vbD4obGVuLCAhaW50ZXJuYWxCdWZmZXIuQ29tcGxldGUgJiYgbGVuIDwgc2l6ZSk7 CisgCQl9CisgCisgCQkvKgorQEAgLTYyMCwyMSArNjIyLDIzIEBAIG5hbWVzcGFjZSBNb25vLk5l dC5TZWN1cml0eQorIAkJCX0KKyAJCX0KKyAKKy0JCWludGVybmFsIChpbnQsIGJvb2wpIFByb2Nl c3NSZWFkIChCdWZmZXJPZmZzZXRTaXplIHVzZXJCdWZmZXIpCisrCQlpbnRlcm5hbCBTeXN0ZW0u VmFsdWVUdXBsZTxpbnQsIGJvb2w+IFByb2Nlc3NSZWFkIChCdWZmZXJPZmZzZXRTaXplIHVzZXJC dWZmZXIpCisgCQl7CisgCQkJbG9jayAoaW9Mb2NrKSB7CisgCQkJCS8vIFRoaXMgb3BlcmF0ZXMg b24gdGhlIGludGVybmFsIGJ1ZmZlciBhbmQgd2lsbCBuZXZlciBibG9jay4KKy0JCQkJdmFyIHJl dCA9IHhvYmlsZVRsc0NvbnRleHQuUmVhZCAodXNlckJ1ZmZlci5CdWZmZXIsIHVzZXJCdWZmZXIu T2Zmc2V0LCB1c2VyQnVmZmVyLlNpemUsIG91dCBib29sIHdhbnRNb3JlKTsKKy0JCQkJcmV0dXJu IChyZXQsIHdhbnRNb3JlKTsKKysgICAgICAgICAgICAgICAgYm9vbCB3YW50TW9yZTsKKysJCQkJ dmFyIHJldCA9IHhvYmlsZVRsc0NvbnRleHQuUmVhZCAodXNlckJ1ZmZlci5CdWZmZXIsIHVzZXJC dWZmZXIuT2Zmc2V0LCB1c2VyQnVmZmVyLlNpemUsIG91dCB3YW50TW9yZSk7CisrCQkJCXJldHVy biBuZXcgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBib29sPihyZXQsIHdhbnRNb3JlKTsKKyAJCQl9 CisgCQl9CisgCistCQlpbnRlcm5hbCAoaW50LCBib29sKSBQcm9jZXNzV3JpdGUgKEJ1ZmZlck9m ZnNldFNpemUgdXNlckJ1ZmZlcikKKysJCWludGVybmFsIFN5c3RlbS5WYWx1ZVR1cGxlPGludCwg Ym9vbD4gUHJvY2Vzc1dyaXRlIChCdWZmZXJPZmZzZXRTaXplIHVzZXJCdWZmZXIpCisgCQl7Cisg CQkJbG9jayAoaW9Mb2NrKSB7CisgCQkJCS8vIFRoaXMgb3BlcmF0ZXMgb24gdGhlIGludGVybmFs IGJ1ZmZlciBhbmQgd2lsbCBuZXZlciBibG9jay4KKy0JCQkJdmFyIHJldCA9IHhvYmlsZVRsc0Nv bnRleHQuV3JpdGUgKHVzZXJCdWZmZXIuQnVmZmVyLCB1c2VyQnVmZmVyLk9mZnNldCwgdXNlckJ1 ZmZlci5TaXplLCBvdXQgYm9vbCB3YW50TW9yZSk7CistCQkJCXJldHVybiAocmV0LCB3YW50TW9y ZSk7CisrICAgICAgICAgICAgICAgIGJvb2wgd2FudE1vcmU7CisrCQkJCXZhciByZXQgPSB4b2Jp bGVUbHNDb250ZXh0LldyaXRlICh1c2VyQnVmZmVyLkJ1ZmZlciwgdXNlckJ1ZmZlci5PZmZzZXQs IHVzZXJCdWZmZXIuU2l6ZSwgb3V0IHdhbnRNb3JlKTsKKysJCQkJcmV0dXJuIG5ldyBTeXN0ZW0u VmFsdWVUdXBsZTxpbnQsIGJvb2w+KHJldCwgd2FudE1vcmUpOworIAkJCX0KKyAJCX0KKyAKLS0g CjIuNDUuMgoK --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc Content-Type: text/x-patch; name=v2-0019-gnu-Add-mono-5.10.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0019-gnu-Add-mono-5.10.0.patch RnJvbSBkYjdhODQwOGU3N2JlY2EwN2I5MmNiOGJjMGVjNDQxZmExNjViNDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bm11c2ggPHVubXVzaEBoYXNoYmFuZy5zaD4KRGF0ZTogV2Vk LCAyNyBOb3YgMjAyNCAwMDo1NDoyOApTdWJqZWN0OiBbUEFUQ0ggdjIgMTkvMjFdIGdudTogQWRk IG1vbm8tNS4xMC4wLgoKKiBnbnUvcGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLTUuMTAuMC1l eHRlcm5hbC1yZXBvLXNwZWNzLCBtb25vLTUuMTAuMCk6IE5ldyB2YXJpYWJsZXMuCiogZ251L3Bh Y2thZ2VzL3BhdGNoZXMvbW9uby01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2g6IE5ldyBw YXRjaC4KKiBnbnUvbG9jYWwubWsgKGRpc3RfcGF0Y2hfREFUQSk6IFJlZ2lzdGVyIG5ldyBwYXRj aC4KLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtICAgICAgICAgICAgICAgICAgICAgICB8ICAx MjggKwogLi4uL21vbm8tNS4xMC4wLWxhdGVyLW1jcy1jaGFuZ2VzLnBhdGNoICAgICAgIHwgNDYw MSArKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0NzMwIGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuMTAuMC1sYXRl ci1tY3MtY2hhbmdlcy5wYXRjaAoKZGlmZiAtLWdpdCBhL2dudS9sb2NhbC5tayBiL2dudS9sb2Nh bC5tawppbmRleCBjYjA5NDUwMjg0MC4uMDRjZjhkYzU3OGUgMTAwNjQ0Ci0tLSBhL2dudS9sb2Nh bC5taworKysgYi9nbnUvbG9jYWwubWsKQEAgLTE4MzQsNiArMTgzNCw3IEBAIGRpc3RfcGF0Y2hf REFUQSA9CQkJCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTQuOS4wLWZpeC1ydW50 aW1lbWV0YWRhdGF2ZXJzaW9uLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t NS40LjAtcGF0Y2hlcy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuOC4w LXBhdGNoZXMucGF0Y2gJCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjEwLjAtbGF0 ZXItbWNzLWNoYW5nZXMucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLW1jcy1w YXRjaGVzLWZyb20tNS4xMC4wLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9zYWlj YXRjaGVyLXVuYnVuZGxlLWh0c2xpYi5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21y cmVzY3VlLXN1cHBvcnQtbG92ZS0xMS5wYXRjaAkJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2Vz L2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCBmYTA1ODllNjJkOC4u MzIxYjcxMjM2ZDggMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCisrKyBiL2du dS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0xNTMzLDMgKzE1MzMsMTMxIEBAIChkZWZpbmUtcHVi bGljIG1vbm8tcHJlLTUuMTAuMAogICAgICAgICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1v bm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2giKSkpKQogICAgICAgKG5hdGl2ZS1pbnB1 dHMgKG1vZGlmeS1pbnB1dHMgKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBtb25vLTUuOC4wKQogICAg ICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby01LjguMCkpKSkpKQorCiso ZGVmaW5lIG1vbm8tNS4xMC4wLWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFwaS1kb2MtdG9v bHMiICAgICAgICAgICAgICAgImQwM2U4MTk4MzhjNjI0MWY5MmY5MDY1NWNiNDQ4Y2M0N2M5ZTg3 OTEiCisgICAgICIxcmlraTc5ZjNpZzNjeGlndmlzczgxZHo2MDFobjkyYTFnaWZnbG0wbXpqYnM3 NnNmM2ZqIgorICAgICAjOnJlY3Vyc2l2ZT8gI3QpCisgICAgKCJhcGktc25hcHNob3QiICAgICAg ICAgICAgICAgICJkYThiYjhjN2I5NzAzODNjZTI2YzliMDljZTM2ODlkODQzYTYyMjJlIgorICAg ICAiMDBreHcwOXlpcmRoMGJ6a3ZzMHYzaDZia2RqdjlkNGc5YWduM2I4NjQwYXd2cHltM3lxdyIp CisgICAgKCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4 NDQ3ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEyNjRkMnFrbW0z NDhtOGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgKCgicmVmZXJlbmNlLWFzc2VtYmxpZXMi ICJiaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgICAiZTA0OGZlNGE4OGQyMzdkMTA1 YWUwMmZlMDM2M2E2ODI5NjA5OTM2MiIKKyAgICAgIjBpODdpM3g2OTRmNGc4czJmbGZsdjBhaDg4 Ymx4ZHM3Z2JpeXJ3cm1zY3FkanNpZmh5NDkiKQorICAgICgiYm9ja2J1aWxkIiAgICAgICAgICAg ICAgICAgICAiMTkwOGQ0M2VjNjMwNTQ0MTg5YmQxMTYzMGE1OWVjNGVmNTcxZGIyOCIKKyAgICAg IjFoMTNsZ2ljMmR3bmJ6YzU4bnFoamhhZ24wZjEwMG5sNW1oenJ5amRteXBncmYzY3IxYjMiKQor ICAgICgiYm9yaW5nc3NsIiAgICAgICAgICAgICAgICAgICAiM2UwNzcwZTE4ODM1NzE0NzA4ODYw YmE5ZmUxYWYwNGE5MzI5NzFmZiIKKyAgICAgIjEzOWEwZ2w5MWE1MmsycjZuYTZpYWx6a3F5a2Fq MXJrODh6anJrYXozc2R4eDdubW1nNnkiKQorICAgICgiY2VjaWwiICAgICAgICAgICAgICAgICAg ICAgICAiZGZlZTExZTgwZDU5ZTFhM2Q2ZDljOTE0YzNmMjc3YzcyNmJhY2U1MiIKKyAgICAgIjF5 MmY1OXY5ODh5MmxscXBxaTB6bDlseTBsa3ltOHp3MGE0dmthdjdjcHA2bTVta3EyMDgiKQorICAg ICgoImNlY2lsIiAiY2VjaWwtbGVnYWN5IikgICAgICAiMzNkNTBiODc0ZmQ1MjcxMThiYzM2MWQ4 M2RlM2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFwNGhsMTc5NmliMjZ5a3lmNXNubDZjajBseDB2N21q aDB4cWhqdzZxZGg3NTNuc2p5aGIiKQorICAgICgiY29yZWZ4IiAgICAgICAgICAgICAgICAgICAg ICAiZTMyN2QyODU1ZWQ3NGRhYzk2ZjY4NDc5N2U0ODIwMzQ1Mjk3YTY5MCIKKyAgICAgIjExcGlu bm44endmNGhpMGdmajk4Y3lxa21oN3dybWQ1bWhjZG04NGdrbDlzMmcxOGlhcTAiKQorICAgICgi Y29yZXJ0IiAgICAgICAgICAgICAgICAgICAgICAiYWE2NGIzNzZjMWEyMjM4YjFhNzY4ZTE1OGQx YjExZGFjNzdkNzIyYSIKKyAgICAgIjFnZzRtNDlzMHJ5NXl4OTZkd2phcnk3cjM5NXlwenpnNHNz ejFhamxkMng1ZzdnZ3Z3Z2ciKQorICAgICgiaWtkYXNtIiAgICAgICAgICAgICAgICAgICAgICAi NDY1YzA4MTU1NThmZDQzYzAxMTBmOGQwMGZjMTg2YWMwMDQ0YWM2YSIKKyAgICAgIjB4aXI3cGNn cTA0aGI3czhnOXdzcWRyeXBiNmwyOXJhajNpejVyY3F6ZG0wMDU2azc1dzIiKQorICAgICgoImlr dm0tZm9yayIgImlrdm0iKSAgICAgICAgICAiODQ3ZTA1ZmNlZDVjOWE0MWZmMGYyNGYxZjlkNDBk NWE4YTU3NzJjMSIKKyAgICAgIjFmbDlibTNsbXpmOGlxdjN4NGlxa3o5ZmM1NG13ZHZyeGlzeGcy bnZ3d2NzaTRzYWZmcGkiKQorICAgICgibGlua2VyIiAgICAgICAgICAgICAgICAgICAgICAiODRk Mzc0MjRjZGU2ZTY2YmJmOTk3MTEwYTRkYmRiYTdlNjAwMzhlOSIKKyAgICAgIjA3ZmZrYzlpanpz ZHZia3JjMWZuNXNiMjVzZ3h5YWJzNTRrenlibHdrenBhcndqMDQ3cXIiKQorICAgICgiTmV3dG9u c29mdC5Kc29uIiAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZm OTNhNTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMncz MWNzbnNrNTk3OHMiKQorICAgICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1idWlsZHRhc2tz IikKKyAgICAgImIyYzMwYmM4MWIyYTc3MzNhNGVlYjI1MmE1NWY2YjRkNTBjZmMzYTEiCisgICAg ICIwMXZhanJmeDZ5MTJmNTI1eGRpd2Zibjlxem15bTJzNjVyYmlxcHk5ZDl4dzBwbnE3Z2JsIikK KyAgICAoKCJOVW5pdExpdGUiICJudW5pdC1saXRlIikgICAgIjcwYmI3MGIwZmZkMDEwOWFhZGFh NmU0ZWExNzg5NzJkNGZiNjNlYTMiCisgICAgICIwbG43cm4xOTYwY2R3bWZxY3NjcDJkMm5jcHdu a25ocTlyZjh2NTNheThnMmMzZzZnaDRxIikKKyAgICA7OyAoInJvc2x5bi1iaW5hcmllcyIgICAg ICAgICAgIjAwZGE1M2M0NzQ2MjUwOTg4YTkyMDU1ZWYzYWM2NTNjY2Y4NGZjNDAiCisgICAgOzsg ICIiKQorICAgICgicngiICAgICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRiMGZkYTYwOWUw YWYzM2ZmNTRlZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJkODA2aW1tY3B6 a2I3MnJ6MDR4eTk4bXl3MzU1YTh3NWFoMjV5aXYiKQorICAgIDs7ICgieHVuaXQtYmluYXJpZXMi ICAgICAgICAgICAiYzVhOTA3YmUyNWMyMDFjZGEzOGJlYzk5ZjZjODI1NDhhYjNkOWI1YSIKKyAg ICA7OyAgIiIpCisgICAgKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby01LjEwLjAKKyAgKHBhY2th Z2UKKyAgICAoaW5oZXJpdCBtb25vLXByZS01LjEwLjApCisgICAgKHZlcnNpb24gIjUuMTAuMC4x NzkiKQorICAgIChuYW1lICJtb25vIikKKyAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAg ICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICh1cmkKKyAgICAgICAgICAgICAg IChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2lu ZWhxLm9yZy9tb25vL21vbm8uZ2l0IikKKyAgICAgICAgICAgICAgICAoY29tbWl0ICJtb25vLTUu MTAuMC4xNzkiKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFt ZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJhc2Uz MgorICAgICAgICAgICAgICAgICIxenZpYjE2NHc0bXpyc2swNnltOW15MDIwOGNjZGFuamEyZng2 eDZtbHlpYjM1OGgzNjI2IikpCisgICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQg dXRpbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkKKyAg ICAgICAgICAgICAgKHNuaXBwZXQgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICMkKGFkZC1leHRlcm5hbC1yZXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9u by01LjEwLjAtZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpCisgICAgICAgICAgICAgIChwYXRjaGVzCisgICAg ICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1vbm8tNS4xMC4wLWxhdGVyLW1jcy1jaGFuZ2Vz LnBhdGNoIikpKSkKKyAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1u YXRpdmUtaW5wdXRzIG1vbm8tcHJlLTUuMTAuMCkKKyAgICAgICAgICAgICAgICAgICAgIChyZXBs YWNlICJtb25vIiBtb25vLXByZS01LjEwLjApCisgICAgICAgICAgICAgICAgICAgICAoYXBwZW5k IChkZWZhdWx0LXB5dGhvbikpKSkKKyAgICAoYXJndW1lbnRzCisgICAgIChzdWJzdGl0dXRlLWtl eXdvcmQtYXJndW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50cyBtb25vLXByZS01LjEwLjApCisgICAg ICAgKCgjOnBoYXNlcyBwaGFzZXMgI34lc3RhbmRhcmQtcGhhc2VzKQorICAgICAgICAjfihtb2Rp ZnktcGhhc2VzICMkcGhhc2VzCisgICAgICAgICAgICA7OyBCdWlsZCBub3cgcmVsaWVzIG9uIHRo ZXNlIGJlaW5nIGJ1aWx0IGJlZm9yZSBhbnkgbWNzIGlzIGJ1aWx0OworICAgICAgICAgICAgOzsg aGF2ZSB0byB1c2UgdGhlIGlucHV0IG1jcy4KKyAgICAgICAgICAgIChkZWxldGUgJ2J1aWxkLXJl ZmVyZW5jZS1hc3NlbWJsaWVzKQorICAgICAgICAgICAgKGFkZC1iZWZvcmUgJ2J1aWxkICdidWls ZC1yZWZlcmVuY2UtYXNzZW1ibGllcworICAgICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgbWFr ZS1mbGFncyBwYXJhbGxlbC1idWlsZD8gIzphbGxvdy1vdGhlci1rZXlzKQorICAgICAgICAgICAg ICAgIChsZXQgKCh0b3AgKGdldGN3ZCkpCisgICAgICAgICAgICAgICAgICAgICAgOzsgcGFyYWxs ZWwtYnVpbGQ/IG5lZWRzIHRvIGJlIGZhbHNlIGZvciBtb25vJ3MgYnVpbGQKKyAgICAgICAgICAg ICAgICAgICAgICA7OyBwaGFzZSwgYnV0IGl0IHNob3VsZCB3b3JrIGhlcmUuCisgICAgICAgICAg ICAgICAgICAgICAgKHBhcmFsbGVsLWJ1aWxkPyAjdCkpCisgICAgICAgICAgICAgICAgICAod2l0 aC1kaXJlY3RvcnktZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgImV4dGVybmFsL2Jp bmFyeS1yZWZlcmVuY2UtYXNzZW1ibGllcyIKKyAgICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1 dGUqIChmaW5kLWZpbGVzICIuIiAiXk1ha2VmaWxlJCIpCisgICAgICAgICAgICAgICAgICAgICAg KCgiQ1NDX0NPTU1PTl9BUkdTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLWFwcGVuZCBhbGwgIi1kZWxheXNpZ24rICIpKQorICAgICAgICAgICAgICAgICAgICAgICgo IklCTVxcLkRhdGFcXC5EQjJfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAg ICgoIk1vbm9cXC5EYXRhXFwuU3FsaXRlX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAg ICAgICAgICAoKCJTeXN0ZW1cXC5EYXRhXFwuRGF0YVNldEV4dGVuc2lvbnNfUkVGUyA6PSAiIGFs bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1s ICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLkRhdGFcXC5PcmFjbGVDbGll bnRfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg YWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLklk ZW50aXR5TW9kZWxfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu Zy1hcHBlbmQgYWxsICJTeXN0ZW0uQ29uZmlndXJhdGlvbiAiKSkKKyAgICAgICAgICAgICAgICAg ICAgICAoKCJTeXN0ZW1cXC5EZXNpZ25fUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJBY2Nlc3NpYmlsaXR5ICIpKQorICAgICAgICAgICAg ICAgICAgICAgICgoIlN5c3RlbVxcLldlYlxcLkV4dGVuc2lvbnNcXC5EZXNpZ25fUkVGUyA6PSAi IGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0u V2luZG93cy5Gb3JtcyBTeXN0ZW0uV2ViICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5 c3RlbVxcLlNlcnZpY2VNb2RlbFxcLlJvdXRpbmdfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAg ICAgICAgICAgICAgICgoIlN5c3RlbVxcLldlYlxcLkFic3RyYWN0aW9uc19SRUZTIDo9ICIgYWxs KQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSAiKSkK KyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5SZWFjdGl2ZVxcLldpbmRvd3NcXC5G b3Jtc19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVu ZCBhbGwgIlN5c3RlbSAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5XaW5k b3dzXFwuRm9ybXNcXC5EYXRhVmlzdWFsaXphdGlvbl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAg ICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIkFjY2Vzc2liaWxpdHkgIikpCisgICAg ICAgICAgICAgICAgICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5TZXJ2aWNlTW9kZWxcXC5Qcmlt aXRpdmVzX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJGYWNhZGVz L1N5c3RlbVxcLkR5bmFtaWNcXC5SdW50aW1lX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtICIpKQorICAgICAgICAgICAgICAg ICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuWG1sXFwuWERvY3VtZW50X1JFRlMgOj0gIiBhbGwp CisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAi KSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlJ1bnRpbWVcXC5T ZXJpYWxpemF0aW9uLlhtbF9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAg KCgiRmFjYWRlcy9TeXN0ZW1cXC5EYXRhXFwuQ29tbW9uX1JFRlMgOj0gIiBhbGwpCisgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtIFN5c3RlbS5YbWwgIikp KQorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgaW52b2tlICJtYWtlIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgYCgsQChpZiBwYXJhbGxlbC1idWlsZD8KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYCgiLWoiICwobnVtYmVyLT5zdHJpbmcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVsLWpvYi1jb3VudCkpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJDU0M9bWNzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQG1ha2Ut ZmxhZ3MpKSkpKSkpKSkpKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t NS4xMC4wLWxhdGVyLW1jcy1jaGFuZ2VzLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9u by01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmM0ZTIxMWE4YTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2th Z2VzL3BhdGNoZXMvbW9uby01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2gKQEAgLTAsMCAr MSw0NjAxIEBACitUaGUgcmVzdWx0IG9mIGNoZXJyeS1waWNraW5nIGV2ZXJ5IGNvbW1pdCAoZXhj ZXB0IG9uZXMgdGhhdCBzZWVtZWQgdG8gbm90CithZmZlY3QgdGhlIGNvbXBpbGVyIGl0c2VsZikg ZnJvbSBtb25vLTUuMTAuMC4xNzkgdG8gbW9uby02LjEyLjAuMjA2IHRoYXQKK3RvdWNoZWQgLi9t Y3MvbWNzLgorCitNb25vIHNlZW1zIHRvIGNvbnNpc3RlbnRseSwgYWxtb3N0IGFzIGEgcnVsZSwg ZGVwZW5kIG9uIEMjIGZlYXR1cmVzIGJlZm9yZQordGhleSBpbXBsZW1lbnQgdGhlbS4gIFRoaXMg aXMgZXh0cmVtZWx5IGF3a3dhcmQgZm9yIGJ1aWxkaW5nIHVzaW5nIHByZXZpb3VzCit2ZXJzaW9u cywgc28gaG9wZWZ1bGx5IHRoaXMgd2lsbCBhbGxvdyB1cyB0byBqdW1wIHN0cmFpZ2h0IHRvIGEg aGlnaCB2ZXJzaW9uLgorCitJbmNsdWRlcyB0aGUgZm9sbG93aW5nIGNvbW1pdHMsIGluIG9yZGVy IG9mIG1vc3QtcmVjZW50IHRvIGxlYXN0LXJlY2VudDoKKworYjM5MTE1ODliMzcKKzY3MDBkZDIy MGZlCisyYTdkZmIyOGUwNworZWVhNmYxMWEzZTYKKzNmYzA0N2M2ZjNhCithYzY2NjZmNWIwYgor OTI3YjI3YmI5ZDgKKzRhYjI0ZDRjMDU5CithYTgzNmI0NmEyMworZWU3ZGNjZmIzMjAKKzIzNTEw ZjI2OTE1CitkOWYyNjU0N2Q4OAorOWRjMWM4ODVhMGYKK2VmNTU4ZWFkODlhCisyY2I3OTA5YjEz YworMDM5MGVhMmU3OGMKK2I0ZjY2NTliZGMwCitlOTJkNjA3MGVhZgorNGM1YjNmYmQ0ZjQKK2U2 NTA3ZjJkYThhCis2NTZhNGIxMTIwYworOWJkMmZhNGNmMzMKK2JlMmQxYWVmZmUwCis0NTRhNzZj ZmE0YQorNjBjMWVlNDU0ZDQKKzUzZjFlZjUwNmVhCitkMzQ4N2JmZWJiMworOTJmNmU1YjFhODEK KworZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCitpbmRleCBjNmVmMTlhODQ5 Yi4uYzM3ZDRmY2UzZjAgMTAwNjQ0CistLS0gYS8uZ2l0aWdub3JlCisrKysgYi8uZ2l0aWdub3Jl CitAQCAtNDAsNiArNDAsNyBAQCBBbmtoLk5vTG9hZAorICouZ3BTdGF0ZQorIC52c2NvZGUvCisg Ki5leHAKKysudnMvCisgCisgIyBUb29saW5nCisgX1JlU2hhcnBlciovCitkaWZmIC0tZ2l0IGEv bWNzL2NsYXNzL0NvbW1vbnMuWG1sLlJlbGF4bmcvTWFrZWZpbGUgYi9tY3MvY2xhc3MvQ29tbW9u cy5YbWwuUmVsYXhuZy9NYWtlZmlsZQoraW5kZXggMWZlYmFlNGViMWUuLmY5YjU3ZmVhMjY1IDEw MDY0NAorLS0tIGEvbWNzL2NsYXNzL0NvbW1vbnMuWG1sLlJlbGF4bmcvTWFrZWZpbGUKKysrKyBi L21jcy9jbGFzcy9Db21tb25zLlhtbC5SZWxheG5nL01ha2VmaWxlCitAQCAtMjIsNyArMjIsNyBA QCBFWFRSQV9ESVNURklMRVMgPSBcCisgCSQoUkVTT1VSQ0VfRklMRVMpCisgCisgQ29tbW9ucy5Y bWwuUmVsYXhuZy5SbmMvUm5jUGFyc2VyLmNzOiBDb21tb25zLlhtbC5SZWxheG5nLlJuYy9SbmNQ YXJzZXIuamF5ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MKKy0JJCh0b3BkaXIpL2pheS9qYXkg LWN0diA8ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MgJChDVVJESVIpL0NvbW1vbnMuWG1sLlJl bGF4bmcuUm5jL1JuY1BhcnNlci5qYXkgPiBDb21tb25zLlhtbC5SZWxheG5nLlJuYy9SbmNQYXJz ZXIuY3MKKysJJCh0b3BkaXIpL2pheS9qYXkgLWN0diAtbyBDb21tb25zLlhtbC5SZWxheG5nLlJu Yy9SbmNQYXJzZXIuY3MgJDwgPCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzCisgCisgQlVJTFRf U09VUkNFUyA9IENvbW1vbnMuWG1sLlJlbGF4bmcuUm5jL1JuY1BhcnNlci5jcworIAorZGlmZiAt LWdpdCBhL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQvTWFrZWZpbGUgYi9tY3MvY2xhc3MvTWlj cm9zb2Z0LkJ1aWxkL01ha2VmaWxlCitpbmRleCAyZGNiZWZkZjdmOS4uMWE3MTEwNjliMGIgMTAw NjQ0CistLS0gYS9tY3MvY2xhc3MvTWljcm9zb2Z0LkJ1aWxkL01ha2VmaWxlCisrKysgYi9tY3Mv Y2xhc3MvTWljcm9zb2Z0LkJ1aWxkL01ha2VmaWxlCitAQCAtMjYsNyArMjYsNyBAQCBFWFRSQV9E SVNURklMRVMgPSBcCisgRVhQUl9QQVJTRVIgPSBNaWNyb3NvZnQuQnVpbGQuSW50ZXJuYWwvRXhw cmVzc2lvblBhcnNlcgorIAorICQoRVhQUl9QQVJTRVIpLmNzOiAkKEVYUFJfUEFSU0VSKS5qYXkg JCh0b3BkaXIpL2pheS9za2VsZXRvbi5jcworLQkoY2QgTWljcm9zb2Z0LkJ1aWxkLkludGVybmFs OyAkKHRvcGRpcikvLi4vamF5L2pheSAtY3R2IDwgJCh0b3BkaXIpLy4uL2pheS9za2VsZXRvbi5j cyBFeHByZXNzaW9uUGFyc2VyLmpheSA+IEV4cHJlc3Npb25QYXJzZXIuY3MpCisrCShjZCBNaWNy b3NvZnQuQnVpbGQuSW50ZXJuYWw7ICQodG9wZGlyKS8uLi9qYXkvamF5IC1jdHYgLW8gRXhwcmVz c2lvblBhcnNlci5jcyBFeHByZXNzaW9uUGFyc2VyLmpheSA8ICQodG9wZGlyKS8uLi9qYXkvc2tl bGV0b24uY3MgKQorIAorIEJVSUxUX1NPVVJDRVMgPSAkKEVYUFJfUEFSU0VSKS5jcworIAorZGlm ZiAtLWdpdCBhL21jcy9jbGFzcy9Nb25vLkNTaGFycC9NYWtlZmlsZSBiL21jcy9jbGFzcy9Nb25v LkNTaGFycC9NYWtlZmlsZQoraW5kZXggN2IxOTg2Yjc4ZTUuLjM2MTU1MzI4NTNkIDEwMDY0NAor LS0tIGEvbWNzL2NsYXNzL01vbm8uQ1NoYXJwL01ha2VmaWxlCisrKysgYi9tY3MvY2xhc3MvTW9u by5DU2hhcnAvTWFrZWZpbGUKK0BAIC0yNCw3ICsyNCw3IEBAIExJQl9NQ1NfRkxBR1MgKz0gJChS RUZFUkVOQ0VfU09VUkNFU19GTEFHUykKKyBCVUlMVF9TT1VSQ0VTID0gJChQUk9GSUxFKS1wYXJz ZXIuY3MKKyAKKyAkKFBST0ZJTEUpLXBhcnNlci5jczogJCh0b3BkaXIpL21jcy9jcy1wYXJzZXIu amF5ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MKKy0JJCh0b3BkaXIpL2pheS9qYXkgLWMgPCAk KHRvcGRpcikvamF5L3NrZWxldG9uLmNzICQ8ID4gJChQUk9GSUxFKS1qYXktdG1wLm91dCAmJiBt diAkKFBST0ZJTEUpLWpheS10bXAub3V0ICRACisrCSQodG9wZGlyKS9qYXkvamF5IC1jIC1vICQo UFJPRklMRSktamF5LXRtcC5vdXQgJDwgPCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzICYmIG12 ICQoUFJPRklMRSktamF5LXRtcC5vdXQgJEAKKyAKKyBpbmNsdWRlIC4uLy4uL2J1aWxkL2xpYnJh cnkubWFrZQorIAorZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9Nb25vLlhtbC5FeHQvTWFrZWZpbGUg Yi9tY3MvY2xhc3MvTW9uby5YbWwuRXh0L01ha2VmaWxlCitpbmRleCBkYzQ5ZjgxNmZlZS4uMTY0 OTgyMTVhMzggMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvTW9uby5YbWwuRXh0L01ha2VmaWxlCisr KysgYi9tY3MvY2xhc3MvTW9uby5YbWwuRXh0L01ha2VmaWxlCitAQCAtMjksMTMgKzI5LDEzIEBA IE1vbm8uWG1sLlhQYXRoMi9YUXVlcnlQYXJzZXIuamF5OiBNb25vLlhtbC5YUGF0aDIvUGFyc2Vy QmFzZS5qYXkgJChTS0VMRVRPTikKKyBNb25vLlhtbC5YUGF0aDIvWFBhdGgyUGFyc2VyLmNzOiBN b25vLlhtbC5YUGF0aDIvWFBhdGgyUGFyc2VyLmpheQorIAllY2hvICIjZGVmaW5lIFhQQVRIMl9Q QVJTRVIiID4gJEAKKyAJZWNobyAiI2lmIE5FVF8yXzAiID4+ICRACistCSQodG9wZGlyKS9qYXkv amF5IC1jdCA8ICQoU0tFTEVUT04pICQoQ1VSRElSKS8kPCA+PiRACisrCSQodG9wZGlyKS9qYXkv amF5IC1jdCAkKENVUkRJUikvJDwgPCAkKFNLRUxFVE9OKSA+PiRACisgCWVjaG8gIiNlbmRpZiIg Pj4gJEAKKyAKKyBNb25vLlhtbC5YUGF0aDIvWFF1ZXJ5UGFyc2VyLmNzOiBNb25vLlhtbC5YUGF0 aDIvWFF1ZXJ5UGFyc2VyLmpheSAkKFNLRUxFVE9OKQorIAllY2hvICIjZGVmaW5lIFhRVUVSWV9Q QVJTRVIiID4gJEAKKyAJZWNobyAiI2lmIE5FVF8yXzAiID4+ICRACistCSQodG9wZGlyKS9qYXkv amF5IC1jdCA8ICQoU0tFTEVUT04pICQoQ1VSRElSKS8kPCA+PiRACisrCSQodG9wZGlyKS9qYXkv amF5IC1jdCAkKENVUkRJUikvJDwgPCAkKFNLRUxFVE9OKSA+PiRACisgCWVjaG8gIiNlbmRpZiIg Pj4gJEAKKyAKKyBNb25vLlhtbC5YUGF0aDIvWFBhdGgyVG9rZW5pemVyLmNzOiBNb25vLlhtbC5Y UGF0aDIvVG9rZW5pemVyQmFzZS5jcworZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9jb3JsaWIvU3lz dGVtL1J1bnRpbWVBcmd1bWVudEhhbmRsZS5jcyBiL21jcy9jbGFzcy9jb3JsaWIvU3lzdGVtL1J1 bnRpbWVBcmd1bWVudEhhbmRsZS5jcworaW5kZXggMjE2YzRlYTM5MjQuLmMxMGQzZjE3NGQxIDEw MDY0NAorLS0tIGEvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0vUnVudGltZUFyZ3VtZW50SGFuZGxl LmNzCisrKysgYi9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS9SdW50aW1lQXJndW1lbnRIYW5kbGUu Y3MKK0BAIC0zMSwxMyArMzEsOSBAQAorIC8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIC8vCisgCistdXNpbmcgU3lzdGVt OworLXVzaW5nIFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlczsKKy0KKyBuYW1lc3BhY2Ug U3lzdGVtCisgeworLQlbQ29tVmlzaWJsZSAodHJ1ZSldCistCXB1YmxpYyBzdHJ1Y3QgUnVudGlt ZUFyZ3VtZW50SGFuZGxlCisrCXB1YmxpYyByZWYgc3RydWN0IFJ1bnRpbWVBcmd1bWVudEhhbmRs ZQorIAl7CisgI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgNjQ5CisgCQlpbnRlcm5hbCBJbnRQdHIg YXJnczsKK2RpZmYgLS1naXQgYS9tY3MvY2xhc3MvcmVmZXJlbmNlc291cmNlL21zY29ybGliL3N5 c3RlbS90eXBlZHJlZmVyZW5jZS5jcyBiL21jcy9jbGFzcy9yZWZlcmVuY2Vzb3VyY2UvbXNjb3Js aWIvc3lzdGVtL3R5cGVkcmVmZXJlbmNlLmNzCitpbmRleCA4MGJlZjVhYjg1Mi4uYTMwNTQxZjQz OTkgMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvcmVmZXJlbmNlc291cmNlL21zY29ybGliL3N5c3Rl bS90eXBlZHJlZmVyZW5jZS5jcworKysrIGIvbWNzL2NsYXNzL3JlZmVyZW5jZXNvdXJjZS9tc2Nv cmxpYi9zeXN0ZW0vdHlwZWRyZWZlcmVuY2UuY3MKK0BAIC0xOSw3ICsxOSwxMSBAQCBuYW1lc3Bh Y2UgU3lzdGVtIHsKKyAgICAgW0NMU0NvbXBsaWFudChmYWxzZSldIAorICAgICBbU3lzdGVtLlJ1 bnRpbWUuSW50ZXJvcFNlcnZpY2VzLkNvbVZpc2libGUodHJ1ZSldCisgICAgIFtTeXN0ZW0uUnVu dGltZS5WZXJzaW9uaW5nLk5vblZlcnNpb25hYmxlXSAvLyBUaGlzIG9ubHkgYXBwbGllcyB0byBm aWVsZCBsYXlvdXQKKy0gICAgcHVibGljIHN0cnVjdCBUeXBlZFJlZmVyZW5jZQorKyAgICBwdWJs aWMKKysjaWYgTU9OTworKyAgICByZWYKKysjZW5kaWYKKysgICAgc3RydWN0IFR5cGVkUmVmZXJl bmNlCisgICAgIHsKKyAjaWYgTU9OTworICNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE2OQorZGlm ZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMTUxLTQuY3MgYi9tY3MvZXJyb3JzL2NzMDE1MS00LmNz CitpbmRleCAwZTQ1YjFhOTA0OS4uYzllMDU1ODllNGQgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3Jz L2NzMDE1MS00LmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMDE1MS00LmNzCitAQCAtMSw1ICsxLDYg QEAKKyAvLyBDUzAxNTE6IEEgc3dpdGNoIGV4cHJlc3Npb24gb2YgdHlwZSBgUzE/JyBjYW5ub3Qg YmUgY29udmVydGVkIHRvIGFuIGludGVncmFsIHR5cGUsIGJvb2wsIGNoYXIsIHN0cmluZywgZW51 bSBvciBudWxsYWJsZSB0eXBlCistLy8gTGluZTogMjQKKysvLyBMaW5lOiAyNQorKy8vIENvbXBp bGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo1CisgCisgdXNpbmcgU3lzdGVtOworIAorZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3MwMjczLTIuY3MgYi9tY3MvZXJyb3JzL2NzMDI3My0yLmNzCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmIwYmRiZWY5ZTc1CistLS0g L2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMDI3My0yLmNzCitAQCAtMCwwICsxLDkgQEAK KysvLyBDUzAyNzM6IFRoZSBhY2Nlc3NpYmlsaXR5IG1vZGlmaWVyIG9mIHRoZSBgQy5TMi5zZXQn IGFjY2Vzc29yIG11c3QgYmUgbW9yZSByZXN0cmljdGl2ZSB0aGFuIHRoZSBtb2RpZmllciBvZiB0 aGUgcHJvcGVydHkgb3IgaW5kZXhlciBgQy5TMicKKysvLyBMaW5lOiA3CisrLy8gQ29tcGlsZXIg b3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworKyBjbGFzcyBDCisrIHsKKysJcHJpdmF0ZSBz dHJpbmcgUzIgeyBnZXQ7IHByaXZhdGUgcHJvdGVjdGVkIHNldDsgfQorKyB9CisrCitkaWZmIC0t Z2l0IGEvbWNzL2Vycm9ycy9jczAyODAuY3MgYi9tY3MvZXJyb3JzL2NzMDI4MC5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi42MmJlOGUzOTU4NQorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAyODAuY3MKK0BAIC0wLDAgKzEsMjIgQEAKKysvLyBD UzAyODA6IGBDLkZpeGFibGUuR2V0UGlubmFibGVSZWZlcmVuY2UoaW50KScgaGFzIHRoZSB3cm9u ZyBzaWduYXR1cmUgdG8gYmUgdXNlZCBpbiBleHRlbnNpYmxlIGZpeGVkIHN0YXRlbWVudAorKy8v IExpbmU6IDExCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLXVuc2FmZSAtbGFuZ3ZlcnNpb246bGF0 ZXN0IC13YXJuYXNlcnJvcgorKworK3VzaW5nIFN5c3RlbTsKKysKKyt1bnNhZmUgY2xhc3MgQwor K3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJZml4ZWQgKGludCogcCA9 IG5ldyBGaXhhYmxlICgpKSB7CisrCQl9CisrCX0KKysKKysJc3RydWN0IEZpeGFibGUKKysJewor KwkJcHVibGljIHJlZiBpbnQgR2V0UGlubmFibGVSZWZlcmVuY2UgKGludCBpID0gMSkKKysJCXsK KysJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CisrCQl9CisrCX0KKyt9 CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2Nz MDgyNi05LmNzIGIvbWNzL2Vycm9ycy9jczA4MjYtOS5jcworZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCA0ZTA5ODk2OWI4Yy4uMDAwMDAwMDAwMDAKKy0tLSBhL21jcy9lcnJvcnMvY3Mw ODI2LTkuY3MKKysrKyAvZGV2L251bGwKK0BAIC0xLDE2ICswLDAgQEAKKy0vLyBDUzA4MjY6IFRo ZSB0eXBlIG9mIGFuIGltcGxpY2l0bHkgdHlwZWQgYXJyYXkgY2Fubm90IGJlIGluZmVycmVkIGZy b20gdGhlIGluaXRpYWxpemVyLiBUcnkgc3BlY2lmeWluZyBhcnJheSB0eXBlIGV4cGxpY2l0bHkK Ky0vLyBMaW5lOiA4CistCistY2xhc3MgQworLXsKKy0Jc3RhdGljIHZvaWQgTWFpbigpCistCXsK Ky0JCW9iamVjdCBvID0gMTsKKy0JCWR5bmFtaWMgZCA9IDE7CistCQkKKy0JCXZhciBhID0gbmV3 W10geworLQkJCW5ldyB7IFggPSBvIH0sCistCQkJbmV3IHsgWCA9IGQgfQorLQkJfTsKKy0JfQor LX0KK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTAxMy0xLmNzIGIvbWNzL2Vycm9ycy9jczEw MTMtMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4wMTgyN2Rm NDk5NQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwMTMtMS5jcworQEAgLTAs MCArMSw4IEBACisrLy8gQ1MxMDEzOiBJbnZhbGlkIG51bWJlcgorKy8vIExpbmUgOiA2CisrCisr Y2xhc3MgWAorK3sKKysgICAgc3RhdGljIGludCBpID0gMGI7CisrICAgIHN0YXRpYyB2b2lkIE1h aW4gKCkge30KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9t Y3MvZXJyb3JzL2NzMTAxMy0yLmNzIGIvbWNzL2Vycm9ycy9jczEwMTMtMi5jcworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jODY4Y2IyYTc2OQorLS0tIC9kZXYvbnVs bAorKysrIGIvbWNzL2Vycm9ycy9jczEwMTMtMi5jcworQEAgLTAsMCArMSw3IEBACisrLy8gQ1Mx MDEzOiBJbnZhbGlkIG51bWJlcgorKy8vIExpbmUgOiA2CisrCisrY2xhc3MgWAorK3sKKysgICAg c3RhdGljIGludCBpID0gMHgwXzsKKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2Rp ZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTAxMy0zLmNzIGIvbWNzL2Vycm9ycy9jczEwMTMtMy5j cworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4zMTQ1YjFiYTU5Ngor LS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwMTMtMy5jcworQEAgLTAsMCArMSw3 IEBACisrLy8gQ1MxMDEzOiBJbnZhbGlkIG51bWJlcgorKy8vIExpbmUgOiA2CisrCisrY2xhc3Mg WAorK3sKKysgICAgc3RhdGljIGludCBpID0gMV87CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczEwMTMtNC5jcyBiL21jcy9lcnJvcnMv Y3MxMDEzLTQuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uM2E1 ZTc0NGZmNGYKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxMDEzLTQuY3MKK0BA IC0wLDAgKzEsNyBAQAorKy8vIENTMTAxMzogSW52YWxpZCBudW1iZXIKKysvLyBMaW5lIDogNgor KworK2NsYXNzIFgKKyt7CisrICAgIHN0YXRpYyBkb3VibGUgaSA9IDFfLjI7CisrfQorXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczEwMTMtNS5j cyBiL21jcy9lcnJvcnMvY3MxMDEzLTUuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwMC4uODA4Mjc0M2MwYjUKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMv Y3MxMDEzLTUuY3MKK0BAIC0wLDAgKzEsNyBAQAorKy8vIENTMTAxMzogSW52YWxpZCBudW1iZXIK KysvLyBMaW5lIDogNgorKworK2NsYXNzIFgKKyt7CisrICAgIHN0YXRpYyBpbnQgaSA9IDFfZTE7 CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9y cy9jczEwMTMtNi5jcyBiL21jcy9lcnJvcnMvY3MxMDEzLTYuY3MKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZDJjZWEyYzcyZGQKKy0tLSAvZGV2L251bGwKKysrKyBi L21jcy9lcnJvcnMvY3MxMDEzLTYuY3MKK0BAIC0wLDAgKzEsNyBAQAorKy8vIENTMTAxMzogSW52 YWxpZCBudW1iZXIKKysvLyBMaW5lIDogNgorKworK2NsYXNzIFgKKyt7CisrICAgIHN0YXRpYyBm bG9hdCBpID0gMV9mOworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3MxMDEzLTcuY3MgYi9tY3MvZXJyb3JzL2NzMTAxMy03LmNzCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjgwMzBkNmVkMDk1CistLS0gL2Rl di9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTAxMy03LmNzCitAQCAtMCwwICsxLDcgQEAKKysv LyBDUzEwMTM6IEludmFsaWQgbnVtYmVyCisrLy8gTGluZSA6IDYKKysKKytjbGFzcyBYCisrewor KyAgICBzdGF0aWMgaW50IGkgPSAweF8xOworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxMDEzLTguY3MgYi9tY3MvZXJyb3JzL2NzMTAx My04LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmQyNmM3YWNh Y2I3CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTAxMy04LmNzCitAQCAtMCww ICsxLDcgQEAKKysvLyBDUzEwMTM6IEludmFsaWQgbnVtYmVyCisrLy8gTGluZSA6IDYKKysKKytj bGFzcyBYCisreworKyAgICBzdGF0aWMgaW50IGkgPSAwYl8xOworK30KK1wgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxMDIxLTQuY3MgYi9tY3Mv ZXJyb3JzL2NzMTAyMS00LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAw MDAuLjc1YzJmZjcwMzYwCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTAyMS00 LmNzCitAQCAtMCwwICsxLDggQEAKKysvLyBDUzEwMjE6IEludGVncmFsIGNvbnN0YW50IGlzIHRv byBsYXJnZQorKy8vIExpbmU6IDYKKysKKytjbGFzcyBYIHsKKysJcHVibGljIHN0YXRpYyB2b2lk IE1haW4oKSB7CisrCQlpbnQgaCA9IDBiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTE7CisrCX0KKyt9CitkaWZmIC0tZ2l0IGEv bWNzL2Vycm9ycy9jczEwNjEtMTguY3MgYi9tY3MvZXJyb3JzL2NzMTA2MS0xOC5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4zYWM4MmI3ZjJkMworLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwNjEtMTguY3MKK0BAIC0wLDAgKzEsMTAgQEAKKysv LyBDUzEwNjE6IFR5cGUgYGludCcgZG9lcyBub3QgY29udGFpbiBhIGRlZmluaXRpb24gZm9yIGBf XzAnIGFuZCBubyBleHRlbnNpb24gbWV0aG9kIGBfXzAnIG9mIHR5cGUgYGludCcgY291bGQgYmUg Zm91bmQuIEFyZSB5b3UgbWlzc2luZyBhbiBhc3NlbWJseSByZWZlcmVuY2U/CisrLy8gTGluZTog OAorKworK3N0YXRpYyBjbGFzcyBDCisreworKwlzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJ CWludCBjID0gMC5fXzA7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2Rp ZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTUyNS0yNy5jcyBiL21jcy9lcnJvcnMvY3MxNTI1LTI3 LmNzCitpbmRleCBkYzE4NDkzMTY2Ny4uZDRjMWYzMjZiZTIgMTAwNjQ0CistLS0gYS9tY3MvZXJy b3JzL2NzMTUyNS0yNy5jcworKysrIGIvbWNzL2Vycm9ycy9jczE1MjUtMjcuY3MKK0BAIC0xLDQg KzEsNCBAQAorLS8vIENTMTUyNTogVW5leHBlY3RlZCBzeW1ib2wgYGZlJywgZXhwZWN0aW5nIGBj bGFzcycsIGBkZWxlZ2F0ZScsIGBlbnVtJywgYGludGVyZmFjZScsIGBwYXJ0aWFsJywgb3IgYHN0 cnVjdCcKKysvLyBDUzE1MjU6IFVuZXhwZWN0ZWQgc3ltYm9sIGBmZScsIGV4cGVjdGluZyBgY2xh c3MnLCBgZGVsZWdhdGUnLCBgZW51bScsIGBpbnRlcmZhY2UnLCBgcGFydGlhbCcsIGByZWYnLCBv ciBgc3RydWN0JworIC8vIExpbmU6IDYKKyAKKyBuYW1lc3BhY2UgWAorZGlmZiAtLWdpdCBhL21j cy9lcnJvcnMvY3MxNTI1LTQzLmNzIGIvbWNzL2Vycm9ycy9jczE1MjUtNDMuY3MKK2luZGV4IGQ4 M2Q0ZDg0N2ZhLi4yNmY0NjZhMjUyOCAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNTI1LTQz LmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTUyNS00My5jcworQEAgLTEsNCArMSw0IEBACistLy8g Q1MxNTI1OiBVbmV4cGVjdGVkIHN5bWJvbCBgKScsIGV4cGVjdGluZyBgKCcsIGBbJywgYG91dCcs IGBwYXJhbXMnLCBgcmVmJywgYHRoaXMnLCBvciBgdHlwZScKKysvLyBDUzE1MjU6IFVuZXhwZWN0 ZWQgc3ltYm9sIGApJworIC8vIExpbmU6IDYKKyAKKyBjbGFzcyBUZXN0Q2xhc3MKK2RpZmYgLS1n aXQgYS9tY3MvZXJyb3JzL2NzMTUyNy0yLmNzIGIvbWNzL2Vycm9ycy9jczE1MjctMi5jcworaW5k ZXggZDM4OTQ1ZjNjODkuLjAyNTZlZTJiMzU0IDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9jczE1 MjctMi5jcworKysrIGIvbWNzL2Vycm9ycy9jczE1MjctMi5jcworQEAgLTEsNCArMSw0IEBACist Ly8gQ1MxNTI3OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFy ZWQgYXMgcHJpdmF0ZSwgcHJvdGVjdGVkIG9yIHByb3RlY3RlZCBpbnRlcm5hbAorKy8vIENTMTUy NzogTmFtZXNwYWNlIGVsZW1lbnRzIGNhbm5vdCBiZSBleHBsaWNpdGx5IGRlY2xhcmVkIGFzIHBy aXZhdGUsIHByb3RlY3RlZCwgcHJvdGVjdGVkIGludGVybmFsLCBvciBwcml2YXRlIHByb3RlY3Rl ZAorIC8vIExpbmU6IDQKKyAKKyBwcm90ZWN0ZWQgaW50ZXJmYWNlIElGb28geworZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3MxNTI3LTMuY3MgYi9tY3MvZXJyb3JzL2NzMTUyNy0zLmNzCitpbmRl eCA3NjNjNzU5NThlZS4uNDY5ZDc0Y2JiOTkgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTUy Ny0zLmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTUyNy0zLmNzCitAQCAtMSw0ICsxLDQgQEAKKy0v LyBDUzE1Mjc6IE5hbWVzcGFjZSBlbGVtZW50cyBjYW5ub3QgYmUgZXhwbGljaXRseSBkZWNsYXJl ZCBhcyBwcml2YXRlLCBwcm90ZWN0ZWQgb3IgcHJvdGVjdGVkIGludGVybmFsCisrLy8gQ1MxNTI3 OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYXMgcHJp dmF0ZSwgcHJvdGVjdGVkLCBwcm90ZWN0ZWQgaW50ZXJuYWwsIG9yIHByaXZhdGUgcHJvdGVjdGVk CisgLy8gTGluZTogNAorIAorIHByb3RlY3RlZCBpbnRlcm5hbCBlbnVtIEUgeworZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3MxNTI3LmNzIGIvbWNzL2Vycm9ycy9jczE1MjcuY3MKK2luZGV4IDE4 OWNjNDcyZjRjLi5lODQ3ZmQxNGUxMSAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNTI3LmNz CisrKysgYi9tY3MvZXJyb3JzL2NzMTUyNy5jcworQEAgLTEsNCArMSw1IEBACistLy8gQ1MxNTI3 OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYXMgcHJp dmF0ZSwgcHJvdGVjdGVkIG9yIHByb3RlY3RlZCBpbnRlcm5hbAorLS8vIExpbmU6CisrLy8gQ1Mx NTI3OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYXMg cHJpdmF0ZSwgcHJvdGVjdGVkLCBwcm90ZWN0ZWQgaW50ZXJuYWwsIG9yIHByaXZhdGUgcHJvdGVj dGVkCisrLy8gTGluZTogNAorKworIHByaXZhdGUgY2xhc3MgWCB7CisgfQorZGlmZiAtLWdpdCBh L21jcy9lcnJvcnMvY3MxNjExLTIuY3MgYi9tY3MvZXJyb3JzL2NzMTYxMS0yLmNzCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjg4MjIzMTM3OGYwCistLS0gL2Rldi9u dWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTYxMS0yLmNzCitAQCAtMCwwICsxLDggQEAKKysvLyBD UzE2MTE6IFRoZSBwYXJhbXMgcGFyYW1ldGVyIGNhbm5vdCBiZSBkZWNsYXJlZCBhcyByZWYsIG91 dCBvciBpbgorKy8vIExpbmU6IDYKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246 bGF0ZXN0CisrCisrY2xhc3MgVGVzdAorK3sKKysgICAgcHVibGljIHN0YXRpYyB2b2lkIEVycm9y IChwYXJhbXMgaW4gaW50IGFyZ3MpIHt9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE2MTEuY3MgYi9tY3MvZXJyb3JzL2NzMTYxMS5j cworaW5kZXggOGRmMTBmYWMwY2UuLjQ2OWUwODNlYzNjIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9y cy9jczE2MTEuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MxNjExLmNzCitAQCAtMSw0ICsxLDQgQEAK Ky0vLyBDUzE2MTE6IFRoZSBwYXJhbXMgcGFyYW1ldGVyIGNhbm5vdCBiZSBkZWNsYXJlZCBhcyBy ZWYgb3Igb3V0CisrLy8gQ1MxNjExOiBUaGUgcGFyYW1zIHBhcmFtZXRlciBjYW5ub3QgYmUgZGVj bGFyZWQgYXMgcmVmLCBvdXQgb3IgaW4KKyAvLyBMaW5lOiA2CisgCisgY2xhc3MgVGVzdAorZGlm ZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTYxLmNzIGIvbWNzL2Vycm9ycy9jczE2NDQtNjEu Y3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZDU4YmE2NGM3ZWMK Ky0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxNjQ0LTYxLmNzCitAQCAtMCwwICsx LDExIEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBkaWdpdCBzZXBhcmF0b3JzJyBjYW5ub3QgYmUg dXNlZCBiZWNhdXNlIGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA2LjAgbGFuZ3VhZ2Ugc3BlY2lm aWNhdGlvbgorKy8vIExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246 NgorKworK2NsYXNzIFgKKyt7CisrCWludCBUZXN0ICgpCisrCXsKKysJCXZhciBpID0gMV8wOwor Kwl9CisrfQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTYyLmNzIGIvbWNzL2Vycm9y cy9jczE2NDQtNjIuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4u NWEyOTgzOTYxMGQKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxNjQ0LTYyLmNz CitAQCAtMCwwICsxLDEwIEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBwcml2YXRlIHByb3RlY3Rl ZCcgY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBpdCBpcyBub3QgcGFydCBvZiB0aGUgQyMgNi4wIGxh bmd1YWdlIHNwZWNpZmljYXRpb24KKysvLyBMaW5lOiA3CisrLy8gQ29tcGlsZXIgb3B0aW9uczog LWxhbmd2ZXJzaW9uOjYKKysKKytjbGFzcyBDCisreworKwlwcml2YXRlIHByb3RlY3RlZCBlbnVt IEUKKysJeworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczE2NDQtNjMuY3MgYi9tY3MvZXJyb3JzL2NzMTY0NC02My5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jZTYxZDVjZTA0NgorLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE2NDQtNjMuY3MKK0BAIC0wLDAgKzEsMjIgQEAK KysvLyBDUzE2NDQ6IEZlYXR1cmUgYGV4dGVuc2libGUgZml4ZWQgc3RhdGVtZW50JyBjYW5ub3Qg YmUgdXNlZCBiZWNhdXNlIGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA3LjIgbGFuZ3VhZ2Ugc3Bl Y2lmaWNhdGlvbiAKKysvLyBMaW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC11bnNhZmUg LWxhbmd2ZXJzaW9uOjcuMgorKworK3VzaW5nIFN5c3RlbTsKKysKKyt1bnNhZmUgY2xhc3MgQwor K3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJZml4ZWQgKGludCogcCA9 IG5ldyBGaXhhYmxlICgpKSB7CisrCQl9CisrCX0KKysKKysJc3RydWN0IEZpeGFibGUKKysJewor KwkJcHVibGljIHJlZiBpbnQgR2V0UGlubmFibGVSZWZlcmVuY2UgKCkKKysJCXsKKysJCQl0aHJv dyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CisrCQl9CisrCX0KKyt9CitcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTY0NC02NC5j cyBiL21jcy9lcnJvcnMvY3MxNjQ0LTY0LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMDAuLjg4OTE3YTBhNWQ1CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3Jz L2NzMTY0NC02NC5jcworQEAgLTAsMCArMSwxMyBAQAorKy8vIENTMTY0NDogRmVhdHVyZSBgZXhw cmVzc2lvbiBib2R5IHByb3BlcnR5IGFjY2Vzc29yJyBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIGl0 IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA2LjAgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiAKKysvLyBM aW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo2CisrCisrdXNpbmcg U3lzdGVtOworKworK2NsYXNzIEMKKyt7CisrCXB1YmxpYyBpbnQgSW50ZWdlcgorKwl7CisrCQln ZXQgPT4gMDsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3MxNjQ0LTY1LmNzIGIvbWNzL2Vycm9ycy9jczE2NDQtNjUuY3MKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZGVhNjQ4Yjc4NDYKKy0tLSAv ZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxNjQ0LTY1LmNzCitAQCAtMCwwICsxLDEzIEBA CisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBleHByZXNzaW9uIGJvZHkgcHJvcGVydHkgYWNjZXNzb3In IGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgbm90IHBhcnQgb2YgdGhlIEMjIDYuMCBsYW5n dWFnZSBzcGVjaWZpY2F0aW9uIAorKy8vIExpbmU6IDExCisrLy8gQ29tcGlsZXIgb3B0aW9uczog LWxhbmd2ZXJzaW9uOjYKKysKKyt1c2luZyBTeXN0ZW07CisrCisrY2xhc3MgQworK3sKKysJcHVi bGljIGludCB0aGlzW2ludCBpXQorKwl7CisrCQlnZXQgPT4gaTsKKysJfQorK30KK1wgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTY2LmNz IGIvbWNzL2Vycm9ycy9jczE2NDQtNjYuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwMC4uM2YzOTNiNTBkMzAKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMv Y3MxNjQ0LTY2LmNzCitAQCAtMCwwICsxLDE3IEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBleHBy ZXNzaW9uIGJvZHkgZXZlbnQgYWNjZXNzb3InIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMg bm90IHBhcnQgb2YgdGhlIEMjIDYuMCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uIAorKy8vIExpbmU6 IDExCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjYKKysKKyt1c2luZyBTeXN0 ZW07CisrCisrY2xhc3MgQworK3sKKysJcHVibGljIGV2ZW50IEV2ZW50SGFuZGxlciBFdmVudAor Kwl7CisrCQlhZGQgPT4gSWdub3JlICgpOworKwl9CisrCisrCXN0YXRpYyB2b2lkIElnbm9yZSAo KQorKwl7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQg YS9tY3MvZXJyb3JzL2NzMTc2My0yLmNzIGIvbWNzL2Vycm9ycy9jczE3NjMtMi5jcworaW5kZXgg NzJmNTM3MDk0OWEuLjdlNGQwOTFmYzcyIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9jczE3NjMt Mi5jcworKysrIGIvbWNzL2Vycm9ycy9jczE3NjMtMi5jcworQEAgLTEsNCArMSw0IEBACistLy8g Q1MxNzYzOiBPcHRpb25hbCBwYXJhbWV0ZXIgYG8nIG9mIHR5cGUgYG9iamVjdCcgY2FuIG9ubHkg YmUgaW5pdGlhbGl6ZWQgd2l0aCBgbnVsbCcKKysvLyBDUzE3NjM6IE9wdGlvbmFsIHBhcmFtZXRl ciBgbycgb2YgdHlwZSBgb2JqZWN0JyBjYW4gb25seSBiZSBpbml0aWFsaXplZCB3aXRoIGRlZmF1 bHQgdmFsdWUKKyAvLyBMaW5lOiA2CisgCisgY2xhc3MgQworZGlmZiAtLWdpdCBhL21jcy9lcnJv cnMvY3MxNzYzLmNzIGIvbWNzL2Vycm9ycy9jczE3NjMuY3MKK2luZGV4IGQxMGE3YmYyYzIwLi4w M2I1ZjI4YTE5ZCAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNzYzLmNzCisrKysgYi9tY3Mv ZXJyb3JzL2NzMTc2My5jcworQEAgLTEsNCArMSw0IEBACistLy8gQ1MxNzYzOiBPcHRpb25hbCBw YXJhbWV0ZXIgYG8nIG9mIHR5cGUgYG9iamVjdCcgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgd2l0 aCBgbnVsbCcKKysvLyBDUzE3NjM6IE9wdGlvbmFsIHBhcmFtZXRlciBgbycgb2YgdHlwZSBgb2Jq ZWN0JyBjYW4gb25seSBiZSBpbml0aWFsaXplZCB3aXRoIGRlZmF1bHQgdmFsdWUKKyAvLyBMaW5l OiA2CisgCisgY2xhc3MgQworZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3M4MzI2LmNzIGIvbWNz L2Vycm9ycy9jczgzMjYuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAw MC4uZWZkM2E4NGZlYTcKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MzI2LmNz CitAQCAtMCwwICsxLDEzIEBACisrLy8gQ1M4MzI2OiBCb3RoIHJlZiBjb25kaXRpb25hbCBvcGVy YXRvcnMgbXVzdCBiZSByZWYgdmFsdWVzCisrLy8gTGluZTogMTEKKysKKytjbGFzcyBQcm9ncmFt CisreworKwlzdGF0aWMgaW50IHgsIHk7CisrCisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgp CisrCXsKKysJCWJvb2wgYiA9IGZhbHNlOworKwkJcmVmIGludCB0YXJnZXRCdWNrZXQgPSByZWYg YiA/IHggOiB5OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0t Z2l0IGEvbWNzL2Vycm9ycy9jczgzMjcuY3MgYi9tY3MvZXJyb3JzL2NzODMyNy5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44ZDBjY2Q4NmE3MAorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMjcuY3MKK0BAIC0wLDAgKzEsMTQgQEAKKysvLyBD UzgzMjc6IFRoZSByZWYgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0eXBlcyBgaW50JyBhbmQgYGJ5 dGUnIGhhdmUgdG8gbWF0Y2gKKysvLyBMaW5lOiAxMgorKworK2NsYXNzIFByb2dyYW0KKyt7Cisr CXN0YXRpYyBpbnQgeDsKKysJc3RhdGljIGJ5dGUgeTsKKysKKysJcHVibGljIHN0YXRpYyB2b2lk IE1haW4gKCkKKysJeworKwkJYm9vbCBiID0gZmFsc2U7CisrCQlyZWYgaW50IHRhcmdldEJ1Y2tl dCA9IHJlZiBiID8gcmVmIHggOiByZWYgeTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwNDI4LTIuY3MgYi9tY3MvZXJyb3Jz L2NzODM4NS0yLmNzCitzaW1pbGFyaXR5IGluZGV4IDUwJQorcmVuYW1lIGZyb20gbWNzL2Vycm9y cy9jczA0MjgtMi5jcworcmVuYW1lIHRvIG1jcy9lcnJvcnMvY3M4Mzg1LTIuY3MKK2luZGV4IDVm NDY4ZmQ1MTlhLi5jYzc4NjBmYWE2MiAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MwNDI4LTIu Y3MKKysrKyBiL21jcy9lcnJvcnMvY3M4Mzg1LTIuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENT MDQyODogQ2Fubm90IGNvbnZlcnQgbWV0aG9kIGdyb3VwIGBNYWluJyB0byBub24tZGVsZWdhdGUg dHlwZSBgdm9pZConLiBDb25zaWRlciB1c2luZyBwYXJlbnRoZXNlcyB0byBpbnZva2UgdGhlIG1l dGhvZAorKy8vIENTODM4NTogVGhlIGdpdmVuIGV4cHJlc3Npb24gY2Fubm90IGJlIHVzZWQgaW4g YSBmaXhlZCBzdGF0ZW1lbnQKKyAvLyBMaW5lOiA5CisgLy8gQ29tcGlsZXIgb3B0aW9uczogLXVu c2FmZQorIAorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMjEzLTIuY3MgYi9tY3MvZXJyb3Jz L2NzODM4NS5jcworc2ltaWxhcml0eSBpbmRleCA1NCUKK3JlbmFtZSBmcm9tIG1jcy9lcnJvcnMv Y3MwMjEzLTIuY3MKK3JlbmFtZSB0byBtY3MvZXJyb3JzL2NzODM4NS5jcworaW5kZXggYWU3MmU0 Y2Q5YWEuLjVmYTlmNzk0Y2NmIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9jczAyMTMtMi5jcwor KysrIGIvbWNzL2Vycm9ycy9jczgzODUuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDIxMzog WW91IGNhbm5vdCB1c2UgdGhlIGZpeGVkIHN0YXRlbWVudCB0byB0YWtlIHRoZSBhZGRyZXNzIG9m IGFuIGFscmVhZHkgZml4ZWQgZXhwcmVzc2lvbgorKy8vIENTODM4NTogVGhlIGdpdmVuIGV4cHJl c3Npb24gY2Fubm90IGJlIHVzZWQgaW4gYSBmaXhlZCBzdGF0ZW1lbnQKKyAvLyBMaW5lOiA5Cisg Ly8gQ29tcGlsZXIgb3B0aW9uczogLXVuc2FmZQorIAorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMv a25vd24taXNzdWVzLW5ldF80X3ggYi9tY3MvZXJyb3JzL2tub3duLWlzc3Vlcy1uZXRfNF94Citp bmRleCBjOWVkOTMxNzM1MC4uNTQ5MDJlMDNlN2IgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2tu b3duLWlzc3Vlcy1uZXRfNF94CisrKysgYi9tY3MvZXJyb3JzL2tub3duLWlzc3Vlcy1uZXRfNF94 CitAQCAtMTQsNiArMTQsOSBAQAorICMgUGFyc2VyIHByb2JsZW1zCisgY3MwMDgwLmNzIAorIAor KyMgVW5kb2N1bWVudGVkIHN3aXRjaCBnb3Zlcm5pbmcgcnVsZXMKKytjczAxNTEtNC5jcyBOTyBF UlJPUgorKworICMgT3BlcmF0b3JzCisgY3MwNDU3LTIuY3MKKyBjczA0NTcuY3MKK2RpZmYgLS1n aXQgYS9tY3MvaWxhc20vTWFrZWZpbGUgYi9tY3MvaWxhc20vTWFrZWZpbGUKK2luZGV4IDA5MGQx Y2MzMjMxLi40Y2ExMTU0NTc4MSAxMDA2NDQKKy0tLSBhL21jcy9pbGFzbS9NYWtlZmlsZQorKysr IGIvbWNzL2lsYXNtL01ha2VmaWxlCitAQCAtMTMsNyArMTMsNyBAQCBFWFRSQV9ESVNURklMRVMg PSBcCisgCSQod2lsZGNhcmQgdGVzdHMvKi5pbCkKKyAKKyBJTFBhcnNlci5jczogcGFyc2VyL0lM UGFyc2VyLmpheSAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzCistCSQodG9wZGlyKS9qYXkvamF5 IC1jdCA8ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MgJChDVVJESVIpLyQ8ID4kQAorKwkkKHRv cGRpcikvamF5L2pheSAtY3QgLW8gJEAgJChDVVJESVIpLyQ8IDwgJCh0b3BkaXIpL2pheS9za2Vs ZXRvbi5jcworIAorIGluY2x1ZGUgLi4vYnVpbGQvZXhlY3V0YWJsZS5tYWtlCisgCitkaWZmIC0t Z2l0IGEvbWNzL2pheS9kZWZzLmggYi9tY3MvamF5L2RlZnMuaAoraW5kZXggMmFhZGU0OGRhYzIu LjNiZDNjNTg1OWNlIDEwMDY0NAorLS0tIGEvbWNzL2pheS9kZWZzLmgKKysrKyBiL21jcy9qYXkv ZGVmcy5oCitAQCAtMjM2LDEyICsyMzYsMTQgQEAgZXh0ZXJuIGNoYXIgKmlucHV0X2ZpbGVfbmFt ZTsKKyBleHRlcm4gY2hhciAqcHJvbG9nX2ZpbGVfbmFtZTsKKyBleHRlcm4gY2hhciAqbG9jYWxf ZmlsZV9uYW1lOworIGV4dGVybiBjaGFyICp2ZXJib3NlX2ZpbGVfbmFtZTsKKytleHRlcm4gY2hh ciAqb3V0cHV0X2ZpbGVfbmFtZTsKKyAKKyBleHRlcm4gRklMRSAqYWN0aW9uX2ZpbGU7CisgZXh0 ZXJuIEZJTEUgKmlucHV0X2ZpbGU7CisgZXh0ZXJuIEZJTEUgKnByb2xvZ19maWxlOworIGV4dGVy biBGSUxFICpsb2NhbF9maWxlOworIGV4dGVybiBGSUxFICp2ZXJib3NlX2ZpbGU7CisrZXh0ZXJu IEZJTEUgKm91dHB1dF9maWxlOworIAorIGV4dGVybiBpbnQgbml0ZW1zOworIGV4dGVybiBpbnQg bnJ1bGVzOworZGlmZiAtLWdpdCBhL21jcy9qYXkvbWFpbi5jIGIvbWNzL2pheS9tYWluLmMKK2lu ZGV4IGZjYWMyMThiMWRmLi43ZmI1ZTZjOGNjYiAxMDA2NDQKKy0tLSBhL21jcy9qYXkvbWFpbi5j CisrKysgYi9tY3MvamF5L21haW4uYworQEAgLTYzLDYgKzYzLDcgQEAgY2hhciAqaW5wdXRfZmls ZV9uYW1lID0gIiI7CisgY2hhciAqcHJvbG9nX2ZpbGVfbmFtZTsKKyBjaGFyICpsb2NhbF9maWxl X25hbWU7CisgY2hhciAqdmVyYm9zZV9maWxlX25hbWU7CisrY2hhciAqb3V0cHV0X2ZpbGVfbmFt ZSA9IDA7CisgCisgRklMRSAqYWN0aW9uX2ZpbGU7CS8qICBhIHRlbXAgZmlsZSwgdXNlZCB0byBz YXZlIGFjdGlvbnMgYXNzb2NpYXRlZCAgICAqLworIAkJCS8qICB3aXRoIHJ1bGVzIHVudGlsIHRo ZSBwYXJzZXIgaXMgd3JpdHRlbgkgICAgKi8KK0BAIC03MCw2ICs3MSw3IEBAIEZJTEUgKmlucHV0 X2ZpbGU7CS8qICB0aGUgaW5wdXQgZmlsZQkJCQkgICAgKi8KKyBGSUxFICpwcm9sb2dfZmlsZTsJ LyogIHRlbXAgZmlsZXMsIHVzZWQgdG8gc2F2ZSB0ZXh0IHVudGlsIGFsbAkgICAgKi8KKyBGSUxF ICpsb2NhbF9maWxlOwkvKiAgc3ltYm9scyBoYXZlIGJlZW4gZGVmaW5lZAkJCSAgICAqLworIEZJ TEUgKnZlcmJvc2VfZmlsZTsJLyogIHkub3V0cHV0CQkJCQkgICAgKi8KKytGSUxFICpvdXRwdXRf ZmlsZTsgLyogZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisgCisgaW50IG5pdGVtczsKKyBpbnQgbnJ1 bGVzOworQEAgLTEwNiw2ICsxMDgsNyBAQCBpbnQgazsKKyAgICAgaWYgKGFjdGlvbl9maWxlKSB7 IGZjbG9zZShhY3Rpb25fZmlsZSk7IHVubGluayhhY3Rpb25fZmlsZV9uYW1lKTsgfQorICAgICBp ZiAocHJvbG9nX2ZpbGUpIHsgZmNsb3NlKHByb2xvZ19maWxlKTsgdW5saW5rKHByb2xvZ19maWxl X25hbWUpOyB9CisgICAgIGlmIChsb2NhbF9maWxlKSB7IGZjbG9zZShsb2NhbF9maWxlKTsgdW5s aW5rKGxvY2FsX2ZpbGVfbmFtZSk7IH0KKysgICAgaWYgKG91dHB1dF9maWxlICYmIChvdXRwdXRf ZmlsZSAhPSBzdGRvdXQpKSB7IGZjbG9zZShvdXRwdXRfZmlsZSk7IGlmIChrICE9IDApIHVubGlu ayhvdXRwdXRfZmlsZV9uYW1lKTsgfQorICAgICBleGl0KGspOworIH0KKyAKK0BAIC0xMzcsNyAr MTQwLDcgQEAgc2V0X3NpZ25hbHMoKQorIAorIHVzYWdlKCkKKyB7CistICAgIGZwcmludGYoc3Rk ZXJyLCAidXNhZ2U6ICVzIFstdHZjcF0gWy1iIGZpbGVfcHJlZml4XSBmaWxlbmFtZVxuIiwgbXlu YW1lKTsKKysgICAgZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgWy10dmNwXSBbLWIgZmlsZV9w cmVmaXhdIFstbyBvdXRwdXRfZmlsZW5hbWVdIGlucHV0X2ZpbGVuYW1lXG4iLCBteW5hbWUpOwor ICAgICBleGl0KDEpOworIH0KKyAKK0BAIC0xNjcsOSArMTcwLDkgQEAgY2hhciAqYXJndltdOwor IAkgICAgaWYgKGkgKyAxIDwgYXJnYykgdXNhZ2UoKTsKKyAJICAgIHJldHVybjsKKyAKKy0gICAg ICAgIGNhc2UgJy0nOgorLSAgICAgICAgICAgICsraTsKKy0gICAgICAgICAgICBnb3RvIG5vX21v cmVfb3B0aW9uczsKKysgICAgY2FzZSAnLSc6CisrICAgICAgICArK2k7CisrICAgICAgICBnb3Rv IG5vX21vcmVfb3B0aW9uczsKKyAKKyAJY2FzZSAnYic6CisgCSAgICBpZiAoKisrcykKK0BAIC0x ODAsMTMgKzE4MywyMiBAQCBjaGFyICphcmd2W107CisgCQl1c2FnZSgpOworIAkgICAgY29udGlu dWU7CisgCistICAgICAgICBjYXNlICd0JzoKKy0gICAgICAgICAgICB0ZmxhZyA9IDE7CistICAg ICAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgJ28nOgorKyAgICAgICAgaWYgKCorK3MpCisrICAg ICAgICAgICAgb3V0cHV0X2ZpbGVfbmFtZSA9IHM7CisrICAgICAgICBlbHNlIGlmICgrK2kgPCBh cmdjKQorKyAgICAgICAgICAgIG91dHB1dF9maWxlX25hbWUgPSBhcmd2W2ldOworKyAgICAgICAg ZWxzZQorKyAgICAgICAgICAgIHVzYWdlKCk7CisrICAgICAgICBjb250aW51ZTsKKysKKysgICAg Y2FzZSAndCc6CisrICAgICAgICB0ZmxhZyA9IDE7CisrICAgICAgICBicmVhazsKKyAKKyAJY2Fz ZSAncCc6CistICAgICAgICAgICAgcHJpbnRfc2tlbF9kaXIgKCk7CistICAgICAgICAgICAgYnJl YWs7CisrICAgICAgICBwcmludF9za2VsX2RpciAoKTsKKysgICAgICAgIGJyZWFrOworIAorIAlj YXNlICdjJzoKKyAJICAgIGNzaGFycCA9IDE7CitAQCAtMjE3LDEyICsyMjksMTIgQEAgY2hhciAq YXJndltdOworIAkJdmZsYWcgPSAxOworIAkJYnJlYWs7CisgCistICAgICAgICAgICAgY2FzZSAn cCc6CistICAgICAgICAgICAgICAgIHByaW50X3NrZWxfZGlyICgpOworLSAgICAgICAgICAgICAg ICBicmVhazsKKysgICAgICAgIGNhc2UgJ3AnOgorKyAgICAgICAgICAgIHByaW50X3NrZWxfZGly ICgpOworKyAgICAgICAgICAgIGJyZWFrOworIAorLSAgICAgICAgICAgIGNhc2UgJ2MnOgorLQkJ Y3NoYXJwID0gMTsKKysgICAgICAgIGNhc2UgJ2MnOgorKwkJICAgIGNzaGFycCA9IDE7CisgCSAg ICAgICAgbGluZV9mb3JtYXQgPSAiI2xpbmUgJWQgXCIlc1wiXG4iOworICAgICAgICAgCWRlZmF1 bHRfbGluZV9mb3JtYXQgPSAiI2xpbmUgZGVmYXVsdFxuIjsKKyAKK0BAIC0zNTUsNiArMzY3LDE3 IEBAIG9wZW5fZmlsZXMoKQorIAlpZiAodmVyYm9zZV9maWxlID09IDApCisgCSAgICBvcGVuX2Vy cm9yKHZlcmJvc2VfZmlsZV9uYW1lKTsKKyAgICAgfQorKworKyAgICBpZiAob3V0cHV0X2ZpbGUg PT0gMCkKKysgICAgeworKyAgICAgICAgaWYgKG91dHB1dF9maWxlX25hbWUgIT0gMCkgeworKyAg ICAgICAgICAgIG91dHB1dF9maWxlID0gZm9wZW4ob3V0cHV0X2ZpbGVfbmFtZSwgInciKTsKKysg ICAgICAgICAgICBpZiAob3V0cHV0X2ZpbGUgPT0gMCkKKysgICAgICAgICAgICAgICAgb3Blbl9l cnJvcihvdXRwdXRfZmlsZV9uYW1lKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAg b3V0cHV0X2ZpbGUgPSBzdGRvdXQ7CisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgCitkaWZm IC0tZ2l0IGEvbWNzL2pheS9vdXRwdXQuYyBiL21jcy9qYXkvb3V0cHV0LmMKK2luZGV4IGQxZTJj MTRhMWIyLi5hYjliMjA0M2JlOSAxMDA2NDQKKy0tLSBhL21jcy9qYXkvb3V0cHV0LmMKKysrKyBi L21jcy9qYXkvb3V0cHV0LmMKK0BAIC03Myw3ICs3Myw3IEBAIG91dHB1dCAoKSB7CisgICAgICAg ZnByaW50ZihzdGRlcnIsICJqYXk6IGxpbmUgJWQgaXMgdG9vIGxvbmdcbiIsIGxubyksIGRvbmUo MSk7CisgICAgIHN3aXRjaCAoYnVmWzBdKSB7CisgICAgIGNhc2UgJyMnOgljb250aW51ZTsKKy0g ICAgY2FzZSAndCc6CWlmICghdGZsYWcpIGZwdXRzKCIvL3QiLCBzdGRvdXQpOworKyAgICBjYXNl ICd0JzoJaWYgKCF0ZmxhZykgZnB1dHMoIi8vdCIsIG91dHB1dF9maWxlKTsKKyAgICAgY2FzZSAn Lic6CWJyZWFrOworICAgICBkZWZhdWx0OgorICAgICAgIGNwID0gc3RydG9rKGJ1ZiwgIiBcdFxy XG4iKTsKK0BAIC05Myw3ICs5Myw3IEBAIG91dHB1dCAoKSB7CisgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiamF5OiB1bmtub3duIGNhbGwgKCVzKSBpbiBsaW5lICVkXG4iLCBjcCwgbG5vKTsK KyAgICAgICBjb250aW51ZTsKKyAgICAgfQorLSAgICBmcHV0cyhidWYrMSwgc3Rkb3V0KSwgKysg b3V0bGluZTsKKysgICAgZnB1dHMoYnVmKzEsIG91dHB1dF9maWxlKSwgKysgb3V0bGluZTsKKyAg IH0KKyAgIGZyZWVfcGFyc2VyKCk7CisgfQorQEAgLTEwMywxOSArMTAzLDE5IEBAIG91dHB1dF9y dWxlX2RhdGEoKQorICAgICByZWdpc3RlciBpbnQgaTsKKyAgICAgcmVnaXN0ZXIgaW50IGo7Cisg CistCXByaW50ZigiLypcbiBBbGwgbW9yZSB0aGFuIDMgbGluZXMgbG9uZyBydWxlcyBhcmUgd3Jh cHBlZCBpbnRvIGEgbWV0aG9kXG4qL1xuIik7CisrCWZwcmludGYob3V0cHV0X2ZpbGUsICIvKlxu IEFsbCBtb3JlIHRoYW4gMyBsaW5lcyBsb25nIHJ1bGVzIGFyZSB3cmFwcGVkIGludG8gYSBtZXRo b2RcbiovXG4iKTsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IG5tZXRob2RzOyArK2kpCisgCXsK Ky0JCXByaW50ZigiJXMiLCBtZXRob2RzW2ldKTsKKysJCWZwcmludGYob3V0cHV0X2ZpbGUsICIl cyIsIG1ldGhvZHNbaV0pOworIAkJRlJFRShtZXRob2RzW2ldKTsKKy0JCXByaW50ZigiXG5cbiIp OworKwkJZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuXG4iKTsKKyAJfQorIAlGUkVFKG1ldGhvZHMp OworIAorLQlwcmludGYoZGVmYXVsdF9saW5lX2Zvcm1hdCwgKytvdXRsaW5lICsgMSk7CisrCWZw cmludGYob3V0cHV0X2ZpbGUsIGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEpOwor IAorLSAgICBwcmludGYoIiAgJXMgc3RhdGljICVzIHNob3J0IFtdIHl5TGhzICA9IHslMTZkLCIs CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgICVzIHN0YXRpYyAlcyBzaG9ydCBbXSB5eUxo cyAgPSB7JTE2ZCwiLAorIAkgICBjc2hhcnAgPyAiIiA6ICIgcHJvdGVjdGVkIiwKKyAJICAgY3No YXJwID8gInJlYWRvbmx5IiA6ICJmaW5hbCIsCisgCSAgICBzeW1ib2xfdmFsdWVbc3RhcnRfc3lt Ym9sXSk7CitAQCAtMTI2LDE4ICsxMjYsMTggQEAgb3V0cHV0X3J1bGVfZGF0YSgpCisgCWlmIChq ID49IDEwKQorIAl7CisgCSAgICArK291dGxpbmU7CistCSAgICBwdXRjaGFyKCdcbicpOworKwkg ICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7CisgCSAgICBqID0gMTsKKyAJfQorICAgICAgICAg ZWxzZQorIAkgICAgKytqOworIAorLSAgICAgICAgcHJpbnRmKCIlNWQsIiwgc3ltYm9sX3ZhbHVl W3JsaHNbaV1dKTsKKysgICAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlNWQsIiwgc3ltYm9s X3ZhbHVlW3JsaHNbaV1dKTsKKyAgICAgfQorICAgICBvdXRsaW5lICs9IDI7CistICAgIHByaW50 ZigiXG4gIH07XG4iKTsKKysgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuICB9O1xuIik7Cisg CistICAgIHByaW50ZigiICAlcyBzdGF0aWMgJXMgc2hvcnQgW10geXlMZW4gPSB7JTEyZCwiLAor KyAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICAlcyBzdGF0aWMgJXMgc2hvcnQgW10geXlMZW4g PSB7JTEyZCwiLAorIAkgICBjc2hhcnAgPyAiIiA6ICJwcm90ZWN0ZWQiLAorIAkgICBjc2hhcnAg PyAicmVhZG9ubHkiIDogImZpbmFsIiwKKyAJICAgMik7CitAQCAtMTQ4LDE2ICsxNDgsMTYgQEAg b3V0cHV0X3J1bGVfZGF0YSgpCisgCWlmIChqID49IDEwKQorIAl7CisgCSAgICArK291dGxpbmU7 CistCSAgICBwdXRjaGFyKCdcbicpOworKwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7Cisg CSAgICBqID0gMTsKKyAJfQorIAllbHNlCisgCSAgaisrOworIAorLSAgICAgICAgcHJpbnRmKCIl NWQsIiwgcnJoc1tpICsgMV0gLSBycmhzW2ldIC0gMSk7CisrICAgICAgICBmcHJpbnRmKG91dHB1 dF9maWxlLCAiJTVkLCIsIHJyaHNbaSArIDFdIC0gcnJoc1tpXSAtIDEpOworICAgICB9CisgICAg IG91dGxpbmUgKz0gMjsKKy0gICAgcHJpbnRmKCJcbiAgfTtcbiIpOworKyAgICBmcHJpbnRmKG91 dHB1dF9maWxlLCAiXG4gIH07XG4iKTsKKyB9CisgCisgCitAQCAtMTY1LDcgKzE2NSw3IEBAIG91 dHB1dF95eWRlZnJlZCgpCisgeworICAgICByZWdpc3RlciBpbnQgaSwgajsKKyAKKy0gICAgcHJp bnRmKCIgICVzIHN0YXRpYyAlcyBzaG9ydCBbXSB5eURlZlJlZCA9IHslMTNkLCIsCisrICAgIGZw cmludGYob3V0cHV0X2ZpbGUsICIgICVzIHN0YXRpYyAlcyBzaG9ydCBbXSB5eURlZlJlZCA9IHsl MTNkLCIsCisgCSAgIGNzaGFycCA/ICIiIDogInByb3RlY3RlZCIsCisgCSAgIGNzaGFycCA/ICJy ZWFkb25seSIgOiAiZmluYWwiLAkgICAKKyAJICAgIChkZWZyZWRbMF0gPyBkZWZyZWRbMF0gLSAy IDogMCkpOworQEAgLTE3OCwxNSArMTc4LDE1IEBAIG91dHB1dF95eWRlZnJlZCgpCisgCWVsc2UK KyAJeworIAkgICAgKytvdXRsaW5lOworLQkgICAgcHV0Y2hhcignXG4nKTsKKysJICAgIHB1dGMo J1xuJywgb3V0cHV0X2ZpbGUpOworIAkgICAgaiA9IDE7CisgCX0KKyAKKy0JcHJpbnRmKCIlNWQs IiwgKGRlZnJlZFtpXSA/IGRlZnJlZFtpXSAtIDIgOiAwKSk7CisrCWZwcmludGYob3V0cHV0X2Zp bGUsICIlNWQsIiwgKGRlZnJlZFtpXSA/IGRlZnJlZFtpXSAtIDIgOiAwKSk7CisgICAgIH0KKyAK KyAgICAgb3V0bGluZSArPSAyOworLSAgICBwcmludGYoIlxuICB9O1xuIik7CisrICAgIGZwcmlu dGYob3V0cHV0X2ZpbGUsICJcbiAgfTtcbiIpOworIH0KKyAKKyAKK0BAIC0zMDksNyArMzA5LDcg QEAgZ290b19hY3Rpb25zKCkKKyAgICAgc3RhdGVfY291bnQgPSBORVcyKG5zdGF0ZXMsIHNob3J0 KTsKKyAKKyAgICAgayA9IGRlZmF1bHRfZ290byhzdGFydF9zeW1ib2wgKyAxKTsKKy0gICAgcHJp bnRmKCIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlEZ290byAgPSB7JTE0ZCwiLCBj c2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgayk7CisrICAgIGZwcmludGYob3V0cHV0X2Zp bGUsICIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlEZ290byAgPSB7JTE0ZCwiLCBj c2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgayk7CisgICAgIHNhdmVfY29sdW1uKHN0YXJ0 X3N5bWJvbCArIDEsIGspOworIAorICAgICBqID0gMTA7CitAQCAtMzE4LDE5ICszMTgsMTkgQEAg Z290b19hY3Rpb25zKCkKKyAJaWYgKGogPj0gMTApCisgCXsKKyAJICAgICsrb3V0bGluZTsKKy0J ICAgIHB1dGNoYXIoJ1xuJyk7CisrCSAgICBwdXRjKCdcbicsIG91dHB1dF9maWxlKTsKKyAJICAg IGogPSAxOworIAl9CisgCWVsc2UKKyAJICAgICsrajsKKyAKKyAJayA9IGRlZmF1bHRfZ290byhp KTsKKy0JcHJpbnRmKCIlNWQsIiwgayk7CisrCWZwcmludGYob3V0cHV0X2ZpbGUsICIlNWQsIiwg ayk7CisgCXNhdmVfY29sdW1uKGksIGspOworICAgICB9CisgCisgICAgIG91dGxpbmUgKz0gMjsK Ky0gICAgcHJpbnRmKCJcbiAgfTtcbiIpOworKyAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiXG4g IH07XG4iKTsKKyAgICAgRlJFRShzdGF0ZV9jb3VudCk7CisgfQorIAorQEAgLTYzMyw3ICs2MzMs NyBAQCBvdXRwdXRfYmFzZSgpCisgeworICAgICByZWdpc3RlciBpbnQgaSwgajsKKyAKKy0gICAg cHJpbnRmKCIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlTaW5kZXggPSB7JTEzZCwi LCBjc2hhcnA/ICJyZWFkb25seSI6ImZpbmFsIiwgYmFzZVswXSk7CisrICAgIGZwcmludGYob3V0 cHV0X2ZpbGUsICIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlTaW5kZXggPSB7JTEz ZCwiLCBjc2hhcnA/ICJyZWFkb25seSI6ImZpbmFsIiwgYmFzZVswXSk7CisgCisgICAgIGogPSAx MDsKKyAgICAgZm9yIChpID0gMTsgaSA8IG5zdGF0ZXM7IGkrKykKK0BAIC02NDEsMTcgKzY0MSwx NyBAQCBvdXRwdXRfYmFzZSgpCisgCWlmIChqID49IDEwKQorIAl7CisgCSAgICArK291dGxpbmU7 CistCSAgICBwdXRjaGFyKCdcbicpOworKwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7Cisg CSAgICBqID0gMTsKKyAJfQorIAllbHNlCisgCSAgICArK2o7CisgCistCXByaW50ZigiJTVkLCIs IGJhc2VbaV0pOworKwlmcHJpbnRmKG91dHB1dF9maWxlLCAiJTVkLCIsIGJhc2VbaV0pOworICAg ICB9CisgCisgICAgIG91dGxpbmUgKz0gMjsKKy0gICAgcHJpbnRmKCJcbiAgfTtcbiAgcHJvdGVj dGVkIHN0YXRpYyAlcyBzaG9ydCBbXSB5eVJpbmRleCA9IHslMTNkLCIsCisrICAgIGZwcmludGYo b3V0cHV0X2ZpbGUsICJcbiAgfTtcbiAgcHJvdGVjdGVkIHN0YXRpYyAlcyBzaG9ydCBbXSB5eVJp bmRleCA9IHslMTNkLCIsCisgCSAgIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiLAorIAkg ICAgYmFzZVtuc3RhdGVzXSk7CisgCitAQCAtNjYxLDE3ICs2NjEsMTcgQEAgb3V0cHV0X2Jhc2Uo KQorIAlpZiAoaiA+PSAxMCkKKyAJeworIAkgICAgKytvdXRsaW5lOworLQkgICAgcHV0Y2hhcign XG4nKTsKKysJICAgIHB1dGMoJ1xuJywgb3V0cHV0X2ZpbGUpOworIAkgICAgaiA9IDE7CisgCX0K KyAJZWxzZQorIAkgICAgKytqOworIAorLQlwcmludGYoIiU1ZCwiLCBiYXNlW2ldKTsKKysJZnBy aW50ZihvdXRwdXRfZmlsZSwgIiU1ZCwiLCBiYXNlW2ldKTsKKyAgICAgfQorIAorICAgICBvdXRs aW5lICs9IDI7CistICAgIHByaW50ZigiXG4gIH07XG4gIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hv cnQgW10geXlHaW5kZXggPSB7JTEzZCwiLAorKyAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiXG4g IH07XG4gIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlHaW5kZXggPSB7JTEzZCwiLAor IAkgICBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwKKyAJICAgIGJhc2VbMipuc3RhdGVz XSk7CisgCitAQCAtNjgxLDE3ICs2ODEsMTcgQEAgb3V0cHV0X2Jhc2UoKQorIAlpZiAoaiA+PSAx MCkKKyAJeworIAkgICAgKytvdXRsaW5lOworLQkgICAgcHV0Y2hhcignXG4nKTsKKysJICAgIHB1 dGMoJ1xuJywgb3V0cHV0X2ZpbGUpOworIAkgICAgaiA9IDE7CisgCX0KKyAJZWxzZQorIAkgICAg KytqOworIAorLQlwcmludGYoIiU1ZCwiLCBiYXNlW2ldKTsKKysJZnByaW50ZihvdXRwdXRfZmls ZSwgIiU1ZCwiLCBiYXNlW2ldKTsKKyAgICAgfQorIAorICAgICBvdXRsaW5lICs9IDI7CistICAg IHByaW50ZigiXG4gIH07XG4iKTsKKysgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuICB9O1xu Iik7CisgICAgIEZSRUUoYmFzZSk7CisgfQorIAorQEAgLTcwMiw3ICs3MDIsNyBAQCBvdXRwdXRf dGFibGUoKQorICAgICByZWdpc3RlciBpbnQgaTsKKyAgICAgcmVnaXN0ZXIgaW50IGo7CisgCist ICAgIHByaW50ZigiICBwcm90ZWN0ZWQgc3RhdGljICVzIHNob3J0IFtdIHl5VGFibGUgPSB7JTE0 ZCwiLCBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgdGFibGVbMF0pOworKyAgICBmcHJp bnRmKG91dHB1dF9maWxlLCAiICBwcm90ZWN0ZWQgc3RhdGljICVzIHNob3J0IFtdIHl5VGFibGUg PSB7JTE0ZCwiLCBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgdGFibGVbMF0pOworIAor ICAgICBqID0gMTA7CisgICAgIGZvciAoaSA9IDE7IGkgPD0gaGlnaDsgaSsrKQorQEAgLTcxMCwx NyArNzEwLDE3IEBAIG91dHB1dF90YWJsZSgpCisgCWlmIChqID49IDEwKQorIAl7CisgCSAgICAr K291dGxpbmU7CistCSAgICBwdXRjaGFyKCdcbicpOworKwkgICAgcHV0YygnXG4nLCBvdXRwdXRf ZmlsZSk7CisgCSAgICBqID0gMTsKKyAJfQorIAllbHNlCisgCSAgICArK2o7CisgCistCXByaW50 ZigiJTVkLCIsIHRhYmxlW2ldKTsKKysJZnByaW50ZihvdXRwdXRfZmlsZSwgIiU1ZCwiLCB0YWJs ZVtpXSk7CisgICAgIH0KKyAKKyAgICAgb3V0bGluZSArPSAyOworLSAgICBwcmludGYoIlxuICB9 O1xuIik7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcbiAgfTtcbiIpOworICAgICBGUkVF KHRhYmxlKTsKKyB9CisgCitAQCAtNzMxLDcgKzczMSw3IEBAIG91dHB1dF9jaGVjaygpCisgICAg IHJlZ2lzdGVyIGludCBpOworICAgICByZWdpc3RlciBpbnQgajsKKyAKKy0gICAgcHJpbnRmKCIg IHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlDaGVjayA9IHslMTRkLCIsCisrICAgIGZw cmludGYob3V0cHV0X2ZpbGUsICIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlDaGVj ayA9IHslMTRkLCIsCisgCSAgIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiLAorIAkgICAg Y2hlY2tbMF0pOworIAorQEAgLTc0MSwxNyArNzQxLDE3IEBAIG91dHB1dF9jaGVjaygpCisgCWlm IChqID49IDEwKQorIAl7CisgCSAgICArK291dGxpbmU7CistCSAgICBwdXRjaGFyKCdcbicpOwor KwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7CisgCSAgICBqID0gMTsKKyAJfQorIAllbHNl CisgCSAgICArK2o7CisgCistCXByaW50ZigiJTVkLCIsIGNoZWNrW2ldKTsKKysJZnByaW50Zihv dXRwdXRfZmlsZSwgIiU1ZCwiLCBjaGVja1tpXSk7CisgICAgIH0KKyAKKyAgICAgb3V0bGluZSAr PSAyOworLSAgICBwcmludGYoIlxuICB9O1xuIik7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUs ICJcbiAgfTtcbiIpOworICAgICBGUkVFKGNoZWNrKTsKKyB9CisgCitAQCAtODAxLDMwICs4MDEs MzAgQEAgY2hhciAqcHJlZml4OworIAlpZiAoaXNfQ19pZGVudGlmaWVyKHMpKQorIAl7CisgCSAg ICBpZiAocHJlZml4KQorLQkgICAgICAgIHByaW50ZigiICAlcyAiLCBwcmVmaXgpOworKwkgICAg ICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgICVzICIsIHByZWZpeCk7CisgCSAgICBjID0gKnM7 CisgCSAgICBpZiAoYyA9PSAnIicpCisgCSAgICB7CisgCQl3aGlsZSAoKGMgPSAqKytzKSAhPSAn IicpCisgCQl7CistCQkgICAgcHV0Y2hhcihjKTsKKysJCSAgICBwdXRjKGMsIG91dHB1dF9maWxl KTsKKyAJCX0KKyAJICAgIH0KKyAJICAgIGVsc2UKKyAJICAgIHsKKyAJCWRvCisgCQl7CistCQkg ICAgcHV0Y2hhcihjKTsKKysJCSAgICBwdXRjKGMsIG91dHB1dF9maWxlKTsKKyAJCX0KKyAJCXdo aWxlIChjID0gKisrcyk7CisgCSAgICB9CisgCSAgICArK291dGxpbmU7CistCSAgICBwcmludGYo IiA9ICVkJXNcbiIsIHN5bWJvbF92YWx1ZVtpXSwgY3NoYXJwID8gIjsiIDogIjsiKTsKKysJICAg IGZwcmludGYob3V0cHV0X2ZpbGUsICIgPSAlZCVzXG4iLCBzeW1ib2xfdmFsdWVbaV0sIGNzaGFy cCA/ICI7IiA6ICI7Iik7CisgCX0KKyAgICAgfQorIAorICAgICArK291dGxpbmU7CistICAgIHBy aW50ZigiICAlcyB5eUVycm9yQ29kZSA9ICVkJXNcbiIsIHByZWZpeCA/IHByZWZpeCA6ICIiLCBz eW1ib2xfdmFsdWVbMV0sIGNzaGFycCA/ICI7IiA6ICI7Iik7CisrICAgIGZwcmludGYob3V0cHV0 X2ZpbGUsICIgICVzIHl5RXJyb3JDb2RlID0gJWQlc1xuIiwgcHJlZml4ID8gcHJlZml4IDogIiIs IHN5bWJvbF92YWx1ZVsxXSwgY3NoYXJwID8gIjsiIDogIjsiKTsKKyB9CisgCisgCitAQCAtODQy LDE0ICs4NDIsMTQgQEAgY2hhciAqbmFtZTsKKyAgICAgaWYgKChjID0gZ2V0YyhpbikpICE9IEVP RikgeworICAgICAgIGlmIChjID09ICAnXG4nKQorIAkrK291dGxpbmU7CistICAgICAgcHV0Y2hh cihjKTsKKysgICAgICBwdXRjKGMsIG91dHB1dF9maWxlKTsKKyAgICAgICB3aGlsZSAoKGMgPSBn ZXRjKGluKSkgIT0gRU9GKQorICAgICAgIHsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0 bGluZTsKKy0gICAgCXB1dGNoYXIoYyk7CisrICAgIAlwdXRjKGMsIG91dHB1dF9maWxlKTsKKyAg ICAgICB9CistICAgICAgcHJpbnRmKGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEp OworKyAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsIGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0 bGluZSArIDEpOworICAgICB9CisgICAgIGZjbG9zZShpbik7CisgfQorQEAgLTg2Miw2NyArODYy LDY3IEBAIG91dHB1dF9kZWJ1ZygpCisgICAgIGNoYXIgKiBwcmVmaXggPSB0ZmxhZyA/ICIiIDog Ii8vdCI7CisgCisgICAgICsrb3V0bGluZTsKKy0gICAgcHJpbnRmKCIgIHByb3RlY3RlZCAlcyBp bnQgeXlGaW5hbCA9ICVkO1xuIiwgY3NoYXJwID8gImNvbnN0IiA6ICJzdGF0aWMgZmluYWwiLCBm aW5hbF9zdGF0ZSk7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgIHByb3RlY3RlZCAlcyBp bnQgeXlGaW5hbCA9ICVkO1xuIiwgY3NoYXJwID8gImNvbnN0IiA6ICJzdGF0aWMgZmluYWwiLCBm aW5hbF9zdGF0ZSk7CisgCisgICAgICAgKytvdXRsaW5lOworLQkgIHByaW50ZiAoIiVzIC8vIFB1 dCB0aGlzIGFycmF5IGludG8gYSBzZXBhcmF0ZSBjbGFzcyBzbyBpdCBpcyBvbmx5IGluaXRpYWxp emVkIGlmIGRlYnVnZ2luZyBpcyBhY3R1YWxseSB1c2VkXG4iLCBwcmVmaXgpOworLQkgIHByaW50 ZiAoIiVzIC8vIFVzZSBNYXJzaGFsQnlSZWZPYmplY3QgdG8gZGlzYWJsZSBpbmxpbmluZ1xuIiwg cHJlZml4KTsKKy0JICBwcmludGYoIiVzIGNsYXNzIFlZUnVsZXMgJXMge1xuIiwgcHJlZml4LCBj c2hhcnAgPyAiOiBNYXJzaGFsQnlSZWZPYmplY3QiIDogIiIpOworLSAgICAgIHByaW50ZigiJXMg IHB1YmxpYyBzdGF0aWMgJXMgc3RyaW5nIFtdIHl5UnVsZSA9IHtcbiIsIHByZWZpeCwgY3NoYXJw ID8gInJlYWRvbmx5IiA6ICJmaW5hbCIpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlcyAv LyBQdXQgdGhpcyBhcnJheSBpbnRvIGEgc2VwYXJhdGUgY2xhc3Mgc28gaXQgaXMgb25seSBpbml0 aWFsaXplZCBpZiBkZWJ1Z2dpbmcgaXMgYWN0dWFsbHkgdXNlZFxuIiwgcHJlZml4KTsKKysJICBm cHJpbnRmKG91dHB1dF9maWxlLCAiJXMgLy8gVXNlIE1hcnNoYWxCeVJlZk9iamVjdCB0byBkaXNh YmxlIGlubGluaW5nXG4iLCBwcmVmaXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlcyBj bGFzcyBZWVJ1bGVzICVzIHtcbiIsIHByZWZpeCwgY3NoYXJwID8gIjogTWFyc2hhbEJ5UmVmT2Jq ZWN0IiA6ICIiKTsKKysgICAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiJXMgIHB1YmxpYyBzdGF0 aWMgJXMgc3RyaW5nIFtdIHl5UnVsZSA9IHtcbiIsIHByZWZpeCwgY3NoYXJwID8gInJlYWRvbmx5 IiA6ICJmaW5hbCIpOworICAgICAgIGZvciAoaSA9IDI7IGkgPCBucnVsZXM7ICsraSkKKyAgICAg ICB7CistCSAgcHJpbnRmKCIlcyAgICBcIiVzIDoiLCBwcmVmaXgsIHN5bWJvbF9uYW1lW3JsaHNb aV1dKTsKKysJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiJXMgICAgXCIlcyA6IiwgcHJlZml4LCBz eW1ib2xfbmFtZVtybGhzW2ldXSk7CisgCSAgZm9yIChqID0gcnJoc1tpXTsgcml0ZW1bal0gPiAw OyArK2opCisgCSAgeworIAkgICAgICBzID0gc3ltYm9sX25hbWVbcml0ZW1bal1dOworIAkgICAg ICBpZiAoc1swXSA9PSAnIicpCisgCSAgICAgIHsKKy0JCSAgcHJpbnRmKCIgXFxcIiIpOworKwkJ ICBmcHJpbnRmKG91dHB1dF9maWxlLCAiIFxcXCIiKTsKKyAJCSAgd2hpbGUgKCorK3MgIT0gJyIn KQorIAkJICB7CisgCQkgICAgICBpZiAoKnMgPT0gJ1xcJykKKyAJCSAgICAgIHsKKyAJCQkgIGlm IChzWzFdID09ICdcXCcpCistCQkJICAgICAgcHJpbnRmKCJcXFxcXFxcXCIpOworKwkJCSAgICAg IGZwcmludGYob3V0cHV0X2ZpbGUsICJcXFxcXFxcXCIpOworIAkJCSAgZWxzZQorLQkJCSAgICAg IHByaW50ZigiXFxcXCVjIiwgc1sxXSk7CisrCQkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwg IlxcXFwlYyIsIHNbMV0pOworIAkJCSAgKytzOworIAkJICAgICAgfQorIAkJICAgICAgZWxzZQor LQkJCSAgcHV0Y2hhcigqcyk7CisrCQkJICBwdXRjKCpzLCBvdXRwdXRfZmlsZSk7CisgCQkgIH0K Ky0JCSAgcHJpbnRmKCJcXFwiIik7CisrCQkgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcXFwiIik7 CisgCSAgICAgIH0KKyAJICAgICAgZWxzZSBpZiAoc1swXSA9PSAnXCcnKQorIAkgICAgICB7Cisg CQkgIGlmIChzWzFdID09ICciJykKKy0JCSAgICAgIHByaW50ZigiICdcXFwiJyIpOworKwkJICAg ICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIiAnXFxcIiciKTsKKyAJCSAgZWxzZSBpZiAoc1sxXSA9 PSAnXFwnKQorIAkJICB7CisgCQkgICAgICBpZiAoc1syXSA9PSAnXFwnKQorLQkJCSAgcHJpbnRm KCIgJ1xcXFxcXFxcIik7CisrCQkJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICdcXFxcXFxcXCIp OworIAkJICAgICAgZWxzZQorLQkJCSAgcHJpbnRmKCIgJ1xcXFwlYyIsIHNbMl0pOworKwkJCSAg ZnByaW50ZihvdXRwdXRfZmlsZSwgIiAnXFxcXCVjIiwgc1syXSk7CisgCQkgICAgICBzICs9IDI7 CisgCQkgICAgICB3aGlsZSAoKisrcyAhPSAnXCcnKQorLQkJCSAgcHV0Y2hhcigqcyk7CistCQkg ICAgICBwdXRjaGFyKCdcJycpOworKwkJCSAgcHV0Yygqcywgb3V0cHV0X2ZpbGUpOworKwkJICAg ICAgcHV0YygnXCcnLCBvdXRwdXRfZmlsZSk7CisgCQkgIH0KKyAJCSAgZWxzZQorLQkJICAgICAg cHJpbnRmKCIgJyVjJyIsIHNbMV0pOworKwkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIiAn JWMnIiwgc1sxXSk7CisgCSAgICAgIH0KKyAJICAgICAgZWxzZQorLQkJICBwcmludGYoIiAlcyIs IHMpOworKwkJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICVzIiwgcyk7CisgCSAgfQorIAkgICsr b3V0bGluZTsKKy0JICBwcmludGYoIlwiLFxuIik7CisrCSAgZnByaW50ZihvdXRwdXRfZmlsZSwg IlwiLFxuIik7CisgICAgICAgfQorICAgICAgICsrIG91dGxpbmU7CistICAgICAgcHJpbnRmKCIl cyAgfTtcbiIsIHByZWZpeCk7CistCSAgcHJpbnRmICgiJXMgcHVibGljIHN0YXRpYyBzdHJpbmcg Z2V0UnVsZSAoaW50IGluZGV4KSB7XG4iLCBwcmVmaXgpOworLQkgIHByaW50ZiAoIiVzICAgIHJl dHVybiB5eVJ1bGUgW2luZGV4XTtcbiIsIHByZWZpeCk7CistCSAgcHJpbnRmICgiJXMgfVxuIiwg cHJlZml4KTsKKy0JICBwcmludGYgKCIlc31cbiIsIHByZWZpeCk7CisrICAgICAgZnByaW50Zihv dXRwdXRfZmlsZSwgIiVzICB9O1xuIiwgcHJlZml4KTsKKysJICBmcHJpbnRmKG91dHB1dF9maWxl LCAiJXMgcHVibGljIHN0YXRpYyBzdHJpbmcgZ2V0UnVsZSAoaW50IGluZGV4KSB7XG4iLCBwcmVm aXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlcyAgICByZXR1cm4geXlSdWxlIFtpbmRl eF07XG4iLCBwcmVmaXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlcyB9XG4iLCBwcmVm aXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlc31cbiIsIHByZWZpeCk7CisgCisgICAg IG1heCA9IDA7CisgICAgIGZvciAoaSA9IDI7IGkgPCBudG9rZW5zOyArK2kpCitAQCAtOTMxLDcg KzkzMSw3IEBAIG91dHB1dF9kZWJ1ZygpCisgCisgCS8qIG5lZWQgeXlOYW1lcyBmb3IgeXlFeHBl Y3RpbmcoKSAqLworIAorLSAgICAgIHByaW50ZigiICBwcm90ZWN0ZWQgc3RhdGljICVzIHN0cmlu ZyBbXSB5eU5hbWVzID0geyIsIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiKTsKKysgICAg ICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICBwcm90ZWN0ZWQgc3RhdGljICVzIHN0cmluZyBbXSB5 eU5hbWVzID0geyIsIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiKTsKKyAgICAgICBzeW1u YW0gPSAoY2hhciAqKikgTUFMTE9DKChtYXgrMSkqc2l6ZW9mKGNoYXIgKikpOworICAgICAgIGlm IChzeW1uYW0gPT0gMCkgbm9fc3BhY2UoKTsKKyAgIAorQEAgLTk0Myw3ICs5NDMsNyBAQCBvdXRw dXRfZGVidWcoKQorIAkgIHN5bW5hbVtzeW1ib2xfdmFsdWVbaV1dID0gc3ltYm9sX25hbWVbaV07 CisgICAgICAgc3ltbmFtWzBdID0gImVuZC1vZi1maWxlIjsKKyAgIAorLSAgICAgIGogPSA3MDsg ZnB1dHMoIiAgICAiLCBzdGRvdXQpOworKyAgICAgIGogPSA3MDsgZnB1dHMoIiAgICAiLCBvdXRw dXRfZmlsZSk7CisgICAgICAgZm9yIChpID0gMDsgaSA8PSBtYXg7ICsraSkKKyAgICAgICB7Cisg CSAgaWYgKHMgPSBzeW1uYW1baV0pCitAQCAtOTY1LDI1ICs5NjUsMjUgQEAgb3V0cHV0X2RlYnVn KCkKKyAJCSAgaWYgKGogPiA3MCkKKyAJCSAgeworIAkJICAgICAgKytvdXRsaW5lOworLQkJICAg ICAgcHJpbnRmKCJcbiAgICAiKTsKKysJCSAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcbiAg ICAiKTsKKyAJCSAgICAgIGogPSBrOworIAkJICB9CistCQkgIHByaW50ZigiXCJcXFwiIik7Cisr CQkgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcIlxcXCIiKTsKKyAJCSAgcyA9IHN5bW5hbVtpXTsK KyAJCSAgd2hpbGUgKCorK3MgIT0gJyInKQorIAkJICB7CisgCQkgICAgICBpZiAoKnMgPT0gJ1xc JykKKyAJCSAgICAgIHsKKy0JCQkgIHByaW50ZigiXFxcXCIpOworKwkJCSAgZnByaW50ZihvdXRw dXRfZmlsZSwgIlxcXFwiKTsKKyAJCQkgIGlmICgqKytzID09ICdcXCcpCistCQkJICAgICAgcHJp bnRmKCJcXFxcIik7CisrCQkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxcXFwiKTsKKyAJ CQkgIGVsc2UKKy0JCQkgICAgICBwdXRjaGFyKCpzKTsKKysJCQkgICAgICBwdXRjKCpzLCBvdXRw dXRfZmlsZSk7CisgCQkgICAgICB9CisgCQkgICAgICBlbHNlCistCQkJICBwdXRjaGFyKCpzKTsK KysJCQkgIHB1dGMoKnMsIG91dHB1dF9maWxlKTsKKyAJCSAgfQorLQkJICBwcmludGYoIlxcXCJc IiwiKTsKKysJCSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxcXCJcIiwiKTsKKyAJICAgICAgfQor IAkgICAgICBlbHNlIGlmIChzWzBdID09ICdcJycpCisgCSAgICAgIHsKK0BAIC05OTMsMTAgKzk5 MywxMCBAQCBvdXRwdXRfZGVidWcoKQorIAkJICAgICAgaWYgKGogPiA3MCkKKyAJCSAgICAgIHsK KyAJCQkgICsrb3V0bGluZTsKKy0JCSAgICAgIAkgIHByaW50ZigiXG4gICAgIik7CisrCQkgICAg ICAJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiXG4gICAgIik7CisgCQkJICBqID0gNzsKKyAJCSAg ICAgIH0KKy0JCSAgICAgIHByaW50ZigiXCInXFxcIidcIiwiKTsKKysJCSAgICAgIGZwcmludGYo b3V0cHV0X2ZpbGUsICJcIidcXFwiJ1wiLCIpOworIAkJICB9CisgCQkgIGVsc2UKKyAJCSAgewor QEAgLTEwMTUsMjUgKzEwMTUsMjUgQEAgb3V0cHV0X2RlYnVnKCkKKyAJCSAgICAgIGlmIChqID4g NzApCisgCQkgICAgICB7CisgCQkJICArK291dGxpbmU7CistCQkgICAgICAJICBwcmludGYoIlxu ICAgICIpOworKwkJICAgICAgCSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuICAgICIpOworIAkJ CSAgaiA9IGs7CisgCQkgICAgICB9CistCQkgICAgICBwcmludGYoIlwiJyIpOworKwkJICAgICAg ZnByaW50ZihvdXRwdXRfZmlsZSwgIlwiJyIpOworIAkJICAgICAgcyA9IHN5bW5hbVtpXTsKKyAJ CSAgICAgIHdoaWxlICgqKytzICE9ICdcJycpCisgCQkgICAgICB7CisgCQkJICBpZiAoKnMgPT0g J1xcJykKKyAJCQkgIHsKKy0JCQkgICAgICBwcmludGYoIlxcXFwiKTsKKysJCQkgICAgICBmcHJp bnRmKG91dHB1dF9maWxlLCAiXFxcXCIpOworIAkJCSAgICAgIGlmICgqKytzID09ICdcXCcpCist CQkJCSAgcHJpbnRmKCJcXFxcIik7CisrCQkJCSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxcXFwi KTsKKyAJCQkgICAgICBlbHNlCistCQkJCSAgcHV0Y2hhcigqcyk7CisrCQkJCSAgcHV0Yygqcywg b3V0cHV0X2ZpbGUpOworIAkJCSAgfQorIAkJCSAgZWxzZQorLQkJCSAgICAgIHB1dGNoYXIoKnMp OworKwkJCSAgICAgIHB1dGMoKnMsIG91dHB1dF9maWxlKTsKKyAJCSAgICAgIH0KKy0JCSAgICAg IHByaW50ZigiJ1wiLCIpOworKwkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIidcIiwiKTsK KyAJCSAgfQorIAkgICAgICB9CisgCSAgICAgIGVsc2UKK0BAIC0xMDQzLDEyICsxMDQzLDEyIEBA IG91dHB1dF9kZWJ1ZygpCisgCQkgIGlmIChqID4gNzApCisgCQkgIHsKKyAJCSAgICAgICsrb3V0 bGluZTsKKy0JCSAgICAgIHByaW50ZigiXG4gICAgIik7CisrCQkgICAgICBmcHJpbnRmKG91dHB1 dF9maWxlLCAiXG4gICAgIik7CisgCQkgICAgICBqID0gazsKKyAJCSAgfQorLQkJICBwdXRjaGFy KCciJyk7CistCQkgIGRvIHsgcHV0Y2hhcigqcyk7IH0gd2hpbGUgKCorK3MpOworLQkJICBwcmlu dGYoIlwiLCIpOworKwkJICBwdXRjKCciJywgb3V0cHV0X2ZpbGUpOworKwkJICBkbyB7IHB1dGMo KnMsIG91dHB1dF9maWxlKTsgfSB3aGlsZSAoKisrcyk7CisrCQkgIGZwcmludGYob3V0cHV0X2Zp bGUsICJcIiwiKTsKKyAJICAgICAgfQorIAkgIH0KKyAJICBlbHNlCitAQCAtMTA1NywxNCArMTA1 NywxNCBAQCBvdXRwdXRfZGVidWcoKQorIAkgICAgICBpZiAoaiA+IDcwKQorIAkgICAgICB7Cisg CQkgICsrb3V0bGluZTsKKy0JCSAgcHJpbnRmKCJcbiAgICAiKTsKKysJCSAgZnByaW50ZihvdXRw dXRfZmlsZSwgIlxuICAgICIpOworIAkJICBqID0gNTsKKyAJICAgICAgfQorLQkgICAgICBwcmlu dGYoIm51bGwsIik7CisrCSAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJudWxsLCIpOworIAkg IH0KKyAgICAgICB9CisgICAgICAgb3V0bGluZSArPSAyOworLSAgICAgIHByaW50ZigiXG4gIH07 XG4iKTsKKysgICAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiXG4gIH07XG4iKTsKKyAgICAgICBG UkVFKHN5bW5hbSk7CisgfQorIAorQEAgLTEwODQsMTkgKzEwODQsMTkgQEAgb3V0cHV0X3RyYWls aW5nX3RleHQoKQorIAlpZiAoKGMgPSBnZXRjKGluKSkgPT0gRU9GKQorIAkgICAgcmV0dXJuOwor ICAgICAgICAgKytvdXRsaW5lOworLQlwcmludGYobGluZV9mb3JtYXQsIGxpbmVubywgaW5wdXRf ZmlsZV9uYW1lKTsKKysJZnByaW50ZihvdXRwdXRfZmlsZSwgbGluZV9mb3JtYXQsIGxpbmVubywg aW5wdXRfZmlsZV9uYW1lKTsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0bGluZTsKKy0J cHV0Y2hhcihjKTsKKysJcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSBjOworICAgICB9 CisgICAgIGVsc2UKKyAgICAgeworIAkrK291dGxpbmU7CistCXByaW50ZihsaW5lX2Zvcm1hdCwg bGluZW5vLCBpbnB1dF9maWxlX25hbWUpOworLQlkbyB7IHB1dGNoYXIoYyk7IH0gd2hpbGUgKChj ID0gKisrY3B0cikgIT0gJ1xuJyk7CisrCWZwcmludGYob3V0cHV0X2ZpbGUsIGxpbmVfZm9ybWF0 LCBsaW5lbm8sIGlucHV0X2ZpbGVfbmFtZSk7CisrCWRvIHsgcHV0YyhjLCBvdXRwdXRfZmlsZSk7 IH0gd2hpbGUgKChjID0gKisrY3B0cikgIT0gJ1xuJyk7CisgCSsrb3V0bGluZTsKKy0JcHV0Y2hh cignXG4nKTsKKysJcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSAnXG4nOworICAg ICB9CisgCitAQCAtMTEwNCwxNiArMTEwNCwxNiBAQCBvdXRwdXRfdHJhaWxpbmdfdGV4dCgpCisg ICAgIHsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0bGluZTsKKy0JcHV0Y2hhcihjKTsK KysJcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSBjOworICAgICB9CisgCisgICAgIGlm IChsYXN0ICE9ICdcbicpCisgICAgIHsKKyAJKytvdXRsaW5lOworLQlwdXRjaGFyKCdcbicpOwor KwlwdXRjKCdcbicsIG91dHB1dF9maWxlKTsKKyAgICAgfQorLSAgICBwcmludGYoZGVmYXVsdF9s aW5lX2Zvcm1hdCwgKytvdXRsaW5lICsgMSk7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsIGRl ZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEpOworIH0KKyAKKyAKK0BAIC0xMTMyLDIy ICsxMTMyLDIyIEBAIG91dHB1dF9zZW1hbnRpY19hY3Rpb25zKCkKKyAgICAgbGFzdCA9IGM7Cisg ICAgIGlmIChjID09ICdcbicpCisgCSsrb3V0bGluZTsKKy0gICAgcHV0Y2hhcihjKTsKKysgICAg cHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgICAgIHdoaWxlICgoYyA9IGdldGMoYWN0aW9uX2ZpbGUp KSAhPSBFT0YpCisgICAgIHsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0bGluZTsKKy0J cHV0Y2hhcihjKTsKKysJcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSBjOworICAgICB9 CisgCisgICAgIGlmIChsYXN0ICE9ICdcbicpCisgICAgIHsKKyAJKytvdXRsaW5lOworLQlwdXRj aGFyKCdcbicpOworKwlwdXRjKCdcbicsIG91dHB1dF9maWxlKTsKKyAgICAgfQorIAorLSAgICBw cmludGYoZGVmYXVsdF9saW5lX2Zvcm1hdCwgKytvdXRsaW5lICsgMSk7CisrICAgIGZwcmludGYo b3V0cHV0X2ZpbGUsIGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEpOworIH0KKyAK KyAKK2RpZmYgLS1naXQgYS9tY3MvbWNzL01ha2VmaWxlIGIvbWNzL21jcy9NYWtlZmlsZQoraW5k ZXggZGJkNzFhM2Q1ODEuLmRiZjA0MGFmZGQ2IDEwMDY0NAorLS0tIGEvbWNzL21jcy9NYWtlZmls ZQorKysrIGIvbWNzL21jcy9NYWtlZmlsZQorQEAgLTMyLDcgKzMyLDcgQEAgQlVJTFRfU09VUkNF UyA9IGNzLXBhcnNlci5jcworIENMRUFOX0ZJTEVTICs9IHkub3V0cHV0CisgCisgJS1wYXJzZXIu Y3M6ICUtcGFyc2VyLmpheSAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzCistCSQodG9wZGlyKS9q YXkvamF5ICQoSkFZX0ZMQUdTKSA8ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MgJDwgPiBqYXkt dG1wLm91dCAmJiBtdiBqYXktdG1wLm91dCAkQAorKwkkKHRvcGRpcikvamF5L2pheSAkKEpBWV9G TEFHUykgLW8gamF5LXRtcC5vdXQgJDwgPCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzICYmIG12 IGpheS10bXAub3V0ICRACisgCisgS0VFUF9PVVRQVVRfRklMRV9DT1BZID0geWVzCisgCitkaWZm IC0tZ2l0IGEvbWNzL21jcy9hcmd1bWVudC5jcyBiL21jcy9tY3MvYXJndW1lbnQuY3MKK2luZGV4 IDViMTAwM2RiYWRmLi40Yzc1ZTQxYTllNSAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXJndW1lbnQu Y3MKKysrKyBiL21jcy9tY3MvYXJndW1lbnQuY3MKK0BAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAkJCS8vIENvbmRpdGlvbmFsIGluc3RhbmNlIGV4cHJlc3Npb24gaW5z ZXJ0ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CisgCQkJRXh0ZW5zaW9uVHlwZUNvbmRpdGlvbmFs QWNjZXNzID0gNSB8IENvbmRpdGlvbmFsQWNjZXNzRmxhZywKKyAKKysJCQlSZWFkb25seSA9IDYs CisrCisgCQkJQ29uZGl0aW9uYWxBY2Nlc3NGbGFnID0gMSA8PCA3CisgCQl9CisgCitkaWZmIC0t Z2l0IGEvbWNzL21jcy9hc3NlbWJseS5jcyBiL21jcy9tY3MvYXNzZW1ibHkuY3MKK2luZGV4IGFh NGM1NDMxN2EyLi45NmU0M2U3MGQ5OSAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXNzZW1ibHkuY3MK KysrKyBiL21jcy9tY3MvYXNzZW1ibHkuY3MKK0BAIC01NTQsNyArNTU0LDggQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwCisgCQkJCQkJaWYgKHByb3AgIT0gbnVsbCkgeworIAkJCQkJCQlBdHRyaWJ1 dGVFbmNvZGVyIGVuY29kZXIgPSBuZXcgQXR0cmlidXRlRW5jb2RlciAoKTsKKyAJCQkJCQkJZW5j b2Rlci5FbmNvZGVOYW1lZFByb3BlcnR5QXJndW1lbnQgKHByb3AsIG5ldyBCb29sTGl0ZXJhbCAo Q29tcGlsZXIuQnVpbHRpblR5cGVzLCB0cnVlLCBMb2NhdGlvbi5OdWxsKSk7CistCQkJCQkJCVNl dEN1c3RvbUF0dHJpYnV0ZSAocGEuQ29uc3RydWN0b3IsIGVuY29kZXIuVG9BcnJheSAoKSk7Cisr CQkJCQkJCVNldEN1c3RvbUF0dHJpYnV0ZSAocGEuQ29uc3RydWN0b3IsIGVuY29kZXIuVG9BcnJh eSAob3V0IHZhciByZWZlcmVuY2VzKSk7CisrCQkJCQkJCW1vZHVsZS5BZGRBc3NlbWJseVJlZmVy ZW5jZXMgKHJlZmVyZW5jZXMpOworIAkJCQkJCX0KKyAJCQkJCX0KKyAJCQkJfQorZGlmZiAtLWdp dCBhL21jcy9tY3MvYXR0cmlidXRlLmNzIGIvbWNzL21jcy9hdHRyaWJ1dGUuY3MKK2luZGV4IDgz ZDQwMzExOGFkLi5mYWYyY2ZhYTFkOCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXR0cmlidXRlLmNz CisrKysgYi9tY3MvbWNzL2F0dHJpYnV0ZS5jcworQEAgLTEwNjQsOCArMTA2NCwxMCBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAgeworIAkJCX0KKyAKKyAJCQlieXRlW10gY2RhdGE7CisrCQkJTGlz dDxBc3NlbWJseT4gcmVmZXJlbmNlczsKKyAJCQlpZiAocG9zX2FyZ3MgPT0gbnVsbCAmJiBuYW1l ZF92YWx1ZXMgPT0gbnVsbCkgeworIAkJCQljZGF0YSA9IEF0dHJpYnV0ZUVuY29kZXIuRW1wdHk7 CisrCQkJCXJlZmVyZW5jZXMgPSBudWxsOworIAkJCX0gZWxzZSB7CisgCQkJCUF0dHJpYnV0ZUVu Y29kZXIgZW5jb2RlciA9IG5ldyBBdHRyaWJ1dGVFbmNvZGVyICgpOworIAorQEAgLTExMzgsNyAr MTE0MCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQllbmNvZGVyLkVuY29kZUVt cHR5TmFtZWRBcmd1bWVudHMgKCk7CisgCQkJCX0KKyAKKy0JCQkJY2RhdGEgPSBlbmNvZGVyLlRv QXJyYXkgKCk7CisrCQkJCWNkYXRhID0gZW5jb2Rlci5Ub0FycmF5IChvdXQgcmVmZXJlbmNlcyk7 CisgCQkJfQorIAorIAkJCWlmICghSXNDb25kaXRpb25hbGx5RXhjbHVkZWQgKGN0b3IuRGVjbGFy aW5nVHlwZSkpIHsKK0BAIC0xMTU3LDYgKzExNTksOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAg eworIAkJCQkJRXJyb3JfQXR0cmlidXRlRW1pdEVycm9yIChlLk1lc3NhZ2UpOworIAkJCQkJcmV0 dXJuOworIAkJCQl9CisrCisrCQkJCWNvbnRleHQuTW9kdWxlLkFkZEFzc2VtYmx5UmVmZXJlbmNl cyAocmVmZXJlbmNlcyk7CisgCQkJfQorIAorIAkJCWlmICghdXNhZ2VfYXR0ci5BbGxvd011bHRp cGxlICYmIGFsbEVtaXR0ZWQgIT0gbnVsbCkgeworQEAgLTE0MTUsNiArMTQxOSw3IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycCB7CisgCQlieXRlW10gYnVmZmVyOworIAkJaW50IHBvczsKKyAJCWNv bnN0IHVzaG9ydCBWZXJzaW9uID0gMTsKKysJCUxpc3Q8QXNzZW1ibHk+IGltcG9ydHM7CisgCisg CQlzdGF0aWMgQXR0cmlidXRlRW5jb2RlciAoKQorIAkJeworQEAgLTE1OTQsNyArMTU5OSwxNSBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJcHVibGljIHZvaWQgRW5jb2RlVHlwZU5hbWUg KFR5cGVTcGVjIHR5cGUpCisgCQl7CisgCQkJdmFyIG9sZF90eXBlID0gdHlwZS5HZXRNZXRhSW5m byAoKTsKKy0JCQlFbmNvZGUgKHR5cGUuTWVtYmVyRGVmaW5pdGlvbi5Jc0ltcG9ydGVkID8gb2xk X3R5cGUuQXNzZW1ibHlRdWFsaWZpZWROYW1lIDogb2xkX3R5cGUuRnVsbE5hbWUpOworKwkJCWlm ICh0eXBlLk1lbWJlckRlZmluaXRpb24uSXNJbXBvcnRlZCkgeworKwkJCQlpZiAoaW1wb3J0cyA9 PSBudWxsKQorKwkJCQkJaW1wb3J0cyA9IG5ldyBMaXN0PEFzc2VtYmx5PiAoKTsKKysKKysJCQkJ aW1wb3J0cy5BZGQgKG9sZF90eXBlLkFzc2VtYmx5KTsKKysJCQkJRW5jb2RlIChvbGRfdHlwZS5B c3NlbWJseVF1YWxpZmllZE5hbWUpOworKwkJCX0gZWxzZSB7CisrCQkJCUVuY29kZSAob2xkX3R5 cGUuRnVsbE5hbWUpOworKwkJCX0KKyAJCX0KKyAKKyAJCXB1YmxpYyB2b2lkIEVuY29kZVR5cGVO YW1lIChUeXBlQ29udGFpbmVyIHR5cGUpCitAQCAtMTY3NSw4ICsxNjg4LDEwIEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycCB7CisgCQkJRW5jb2RlICh2YWx1ZSk7CisgCQl9CisgCistCQlwdWJsaWMg Ynl0ZVtdIFRvQXJyYXkgKCkKKysJCXB1YmxpYyBieXRlW10gVG9BcnJheSAob3V0IExpc3Q8QXNz ZW1ibHk+IGFzc2VtYmx5UmVmZXJlbmNlcykKKyAJCXsKKysJCQlhc3NlbWJseVJlZmVyZW5jZXMg PSBpbXBvcnRzOworKworIAkJCWJ5dGVbXSBidWYgPSBuZXcgYnl0ZVtwb3NdOworIAkJCUFycmF5 LkNvcHkgKGJ1ZmZlciwgYnVmLCBwb3MpOworIAkJCXJldHVybiBidWY7CitAQCAtMTk5MCw3ICsy MDA1LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQllbmNvZGVyLkVuY29kZSAoKGlu dCkgc3RhdGUpOworIAkJCWVuY29kZXIuRW5jb2RlRW1wdHlOYW1lZEFyZ3VtZW50cyAoKTsKKyAK Ky0JCQlidWlsZGVyLlNldEN1c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rvci5H ZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5ICgpKTsKKysJCQlidWlsZGVyLlNldEN1c3Rv bUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rvci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rl ci5Ub0FycmF5IChvdXQgdmFyIHJlZmVyZW5jZXMpKTsKKysJCQltb2R1bGUuQWRkQXNzZW1ibHlS ZWZlcmVuY2VzIChyZWZlcmVuY2VzKTsKKyAJCX0KKyAJfQorIAorQEAgLTIwMjQsNyArMjA0MCw4 IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJZW5jb2Rlci5FbmNvZGUgKChpbnQpIG1v ZGVzKTsKKyAJCQllbmNvZGVyLkVuY29kZUVtcHR5TmFtZWRBcmd1bWVudHMgKCk7CisgCistCQkJ YnVpbGRlci5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0 YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAoKSk7CisrCQkJYnVpbGRlci5TZXRDdXN0b21BdHRy aWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUluZm8gKCksIGVuY29kZXIuVG9B cnJheSAob3V0IHZhciByZWZlcmVuY2VzKSk7CisrCQkJbW9kdWxlLkFkZEFzc2VtYmx5UmVmZXJl bmNlcyAocmVmZXJlbmNlcyk7CisgCQl9CisgCX0KKyAKK0BAIC0yMDUwLDcgKzIwNjcsOCBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWVuY29kZXIuRW5jb2RlICgodWludCkgYml0c1sw XSk7CisgCQkJZW5jb2Rlci5FbmNvZGVFbXB0eU5hbWVkQXJndW1lbnRzICgpOworIAorLQkJCWJ1 aWxkZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJ bmZvICgpLCBlbmNvZGVyLlRvQXJyYXkgKCkpOworKwkJCWJ1aWxkZXIuU2V0Q3VzdG9tQXR0cmli dXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJbmZvICgpLCBlbmNvZGVyLlRvQXJy YXkgKG91dCB2YXIgcmVmZXJlbmNlcykpOworKwkJCW1vZHVsZS5BZGRBc3NlbWJseVJlZmVyZW5j ZXMgKHJlZmVyZW5jZXMpOworIAkJfQorIAorIAkJcHVibGljIHZvaWQgRW1pdEF0dHJpYnV0ZSAo RmllbGRCdWlsZGVyIGJ1aWxkZXIsIGRlY2ltYWwgdmFsdWUsIExvY2F0aW9uIGxvYykKK0BAIC0y MDY4LDcgKzIwODYsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWVuY29kZXIuRW5j b2RlICgodWludCkgYml0c1swXSk7CisgCQkJZW5jb2Rlci5FbmNvZGVFbXB0eU5hbWVkQXJndW1l bnRzICgpOworIAorLQkJCWJ1aWxkZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJ bmZvKSBjdG9yLkdldE1ldGFJbmZvICgpLCBlbmNvZGVyLlRvQXJyYXkgKCkpOworKwkJCWJ1aWxk ZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJbmZv ICgpLCBlbmNvZGVyLlRvQXJyYXkgKG91dCB2YXIgcmVmZXJlbmNlcykpOworKwkJCW1vZHVsZS5B ZGRBc3NlbWJseVJlZmVyZW5jZXMgKHJlZmVyZW5jZXMpOworIAkJfQorIAl9CisgCitAQCAtMjA5 Miw3ICsyMTExLDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQllbmNvZGVyLkVuY29k ZVR5cGVOYW1lICh0eXBlKTsKKyAJCQllbmNvZGVyLkVuY29kZUVtcHR5TmFtZWRBcmd1bWVudHMg KCk7CisgCistCQkJYnVpbGRlci5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8p IGN0b3IuR2V0TWV0YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAoKSk7CisrCQkJYnVpbGRlci5T ZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUluZm8gKCks IGVuY29kZXIuVG9BcnJheSAob3V0IHZhciByZWZlcmVuY2VzKSk7CisrCQkJbW9kdWxlLkFkZEFz c2VtYmx5UmVmZXJlbmNlcyAocmVmZXJlbmNlcyk7CisgCQl9CisgCX0KKyAKK2RpZmYgLS1naXQg YS9tY3MvbWNzL2NsYXNzLmNzIGIvbWNzL21jcy9jbGFzcy5jcworaW5kZXggNmIxYWRjMjk3YTMu LmRjNjFmNmRjNjI3IDEwMDY0NAorLS0tIGEvbWNzL21jcy9jbGFzcy5jcworKysrIGIvbWNzL21j cy9jbGFzcy5jcworQEAgLTIxMTcsNyArMjExNyw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCWVuY29kZXIuRW5jb2RlIChHZXRBdHRyaWJ1dGVEZWZhdWx0TWVtYmVyICgpKTsKKyAJCQll bmNvZGVyLkVuY29kZUVtcHR5TmFtZWRBcmd1bWVudHMgKCk7CisgCistCQkJVHlwZUJ1aWxkZXIu U2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJbmZvICgp LCBlbmNvZGVyLlRvQXJyYXkgKCkpOworKwkJCVR5cGVCdWlsZGVyLlNldEN1c3RvbUF0dHJpYnV0 ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rvci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5 IChvdXQgdmFyIHJlZmVyZW5jZXMpKTsKKysJCQlNb2R1bGUuQWRkQXNzZW1ibHlSZWZlcmVuY2Vz IChyZWZlcmVuY2VzKTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFZlcmlmeU1l bWJlcnMgKCkKK0BAIC0zOTYyLDcgKzM5NjMsMTAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisg CQkJCQlSZXBvcnQuRXJyb3IgKDQwMTMsIExvY2F0aW9uLAorIAkJCQkJCSJMb2NhbCB2YXJpYWJs ZXMgb2YgdHlwZSBgezB9JyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYW5vbnltb3VzIG1ldGhvZHMs IGxhbWJkYSBleHByZXNzaW9ucyBvciBxdWVyeSBleHByZXNzaW9ucyIsCisgCQkJCQkJTWVtYmVy VHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CistCQkJCX0gZWxzZSBpZiAoTWVtYmVyVHlw ZS5Jc0J5UmVmTGlrZSkgeworKwkJCQl9IGVsc2UgaWYgKE1lbWJlclR5cGUuSXNTcGVjaWFsUnVu dGltZVR5cGUpIHsKKysJCQkJCVJlcG9ydC5FcnJvciAoNjEwLCBMb2NhdGlvbiwKKysJCQkJCQki RmllbGQgb3IgcHJvcGVydHkgY2Fubm90IGJlIG9mIHR5cGUgYHswfSciLCBNZW1iZXJUeXBlLkdl dFNpZ25hdHVyZUZvckVycm9yICgpKTsKKysJCQkJfSBlbHNlIHsKKyAJCQkJCWlmICgoTW9kRmxh Z3MgJiAoTW9kaWZpZXJzLkFCU1RSQUNUIHwgTW9kaWZpZXJzLkVYVEVSTikpICE9IDApCisgCQkJ CQkJcmV0dXJuOworIAorQEAgLTM5NzUsOSArMzk3OSw2IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJCQkJUmVwb3J0LkVycm9yICg4MzQ1LCBMb2NhdGlvbiwKKyAJCQkJCQkiRmllbGQgb3Ig YXV0by1pbXBsZW1lbnRlZCBwcm9wZXJ0eSBjYW5ub3QgYmUgb2YgdHlwZSBgezB9JyB1bmxlc3Mg aXQgaXMgYW4gaW5zdGFuY2UgbWVtYmVyIG9mIGEgcmVmIHN0cnVjdCIsCisgCQkJCQkJTWVtYmVy VHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CistCQkJCX0gZWxzZSB7CistCQkJCQlSZXBv cnQuRXJyb3IgKDYxMCwgTG9jYXRpb24sIAorLQkJCQkJCSJGaWVsZCBvciBwcm9wZXJ0eSBjYW5u b3QgYmUgb2YgdHlwZSBgezB9JyIsIE1lbWJlclR5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkp OworIAkJCQl9CisgCQkJfQorIAkJfQorZGlmZiAtLWdpdCBhL21jcy9tY3MvY29udmVydC5jcyBi L21jcy9tY3MvY29udmVydC5jcworaW5kZXggYWUxNTNmYzQ5ZTguLjJjOGQyYTAyMDRjIDEwMDY0 NAorLS0tIGEvbWNzL21jcy9jb252ZXJ0LmNzCisrKysgYi9tY3MvbWNzL2NvbnZlcnQuY3MKK0BA IC0xMjMyLDYgKzEyMzIsMTMgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJCUZpbmRB cHBsaWNhYmxlVXNlckRlZmluZWRDb252ZXJzaW9uT3BlcmF0b3JzIChyYywgb3BlcmF0b3JzLCBz b3VyY2VfdHlwZV9leHByLCB0YXJnZXRfdHlwZSwgcmVzdHIsIHJlZiBjYW5kaWRhdGVzKTsKKyAJ CQkJfQorIAorKwkJCQlpZiAoc291cmNlX3R5cGVfZXhwciA9PSBzb3VyY2UgJiYgc291cmNlX3R5 cGUuSXNOdWxsYWJsZVR5cGUpIHsKKysJCQkJCW9wZXJhdG9ycyA9IE1lbWJlckNhY2hlLkdldFVz ZXJPcGVyYXRvciAoc291cmNlX3R5cGUuVHlwZUFyZ3VtZW50cyBbMF0sIE9wZXJhdG9yLk9wVHlw ZS5JbXBsaWNpdCwgZGVjbGFyZWRfb25seSk7CisrCQkJCQlpZiAob3BlcmF0b3JzICE9IG51bGwp IHsKKysJCQkJCQlGaW5kQXBwbGljYWJsZVVzZXJEZWZpbmVkQ29udmVyc2lvbk9wZXJhdG9ycyAo cmMsIG9wZXJhdG9ycywgc291cmNlX3R5cGVfZXhwciwgdGFyZ2V0X3R5cGUsIHJlc3RyLCByZWYg Y2FuZGlkYXRlcyk7CisrCQkJCQl9CisrCQkJCX0KKysKKyAJCQkJaWYgKCFpbXBsaWNpdE9ubHkp IHsKKyAJCQkJCW9wZXJhdG9ycyA9IE1lbWJlckNhY2hlLkdldFVzZXJPcGVyYXRvciAoc291cmNl X3R5cGUsIE9wZXJhdG9yLk9wVHlwZS5FeHBsaWNpdCwgZGVjbGFyZWRfb25seSk7CisgCQkJCQlp ZiAob3BlcmF0b3JzICE9IG51bGwpIHsKK2RpZmYgLS1naXQgYS9tY3MvbWNzL2NzLXBhcnNlci5q YXkgYi9tY3MvbWNzL2NzLXBhcnNlci5qYXkKK2luZGV4IDRkNmZjYjQ0YzBkLi40Y2EzYmY3NGYz ZCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvY3MtcGFyc2VyLmpheQorKysrIGIvbWNzL21jcy9jcy1w YXJzZXIuamF5CitAQCAtMzQsMTMgKzM0LDE2IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJ CVBhcmFtcwk9IDEgPDwgNCwKKyAJCQlBcmdsaXN0CT0gMSA8PCA1LAorIAkJCURlZmF1bHRWYWx1 ZSA9IDEgPDwgNiwKKysJCQlSZWFkT25seSA9IDEgPDwgNywKKyAJCQkKKy0JCQlBbGwgPSBSZWYg fCBPdXQgfCBUaGlzIHwgUGFyYW1zIHwgQXJnbGlzdCB8IERlZmF1bHRWYWx1ZSwKKysJCQlBbGwg PSBSZWYgfCBPdXQgfCBUaGlzIHwgUGFyYW1zIHwgQXJnbGlzdCB8IERlZmF1bHRWYWx1ZSB8IFJl YWRPbmx5LAorIAkJCVByaW1hcnlDb25zdHJ1Y3RvciA9IFJlZiB8IE91dCB8IFBhcmFtcyB8IERl ZmF1bHRWYWx1ZQorIAkJfQorIAkJCisgCQlzdGF0aWMgcmVhZG9ubHkgb2JqZWN0IE1vZGlmaWVy Tm9uZSA9IDA7CistCQorKwkJc3RhdGljIHJlYWRvbmx5IG9iamVjdCBSZWZTdHJ1Y3RUb2tlbiA9 IG5ldyBvYmplY3QgKCk7CisrCQlzdGF0aWMgcmVhZG9ubHkgb2JqZWN0IFJlZlBhcnRpYWxTdHJ1 Y3RUb2tlbiA9IG5ldyBvYmplY3QgKCk7CisrCisgCQlOYW1lc3BhY2VDb250YWluZXIgY3VycmVu dF9uYW1lc3BhY2U7CisgCQlUeXBlQ29udGFpbmVyIGN1cnJlbnRfY29udGFpbmVyOworIAkJVHlw ZURlZmluaXRpb24gY3VycmVudF90eXBlOworQEAgLTMzOCw2ICszNDEsNyBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAldG9rZW4gT1BFTl9CUkFDS0VUX0VYUFIKKyAldG9rZW4gT1BFTl9QQVJF TlNfREVDT05TVFJVQ1QKKyAldG9rZW4gUkVGX1NUUlVDVAorKyV0b2tlbiBSRUZfUEFSVElBTAor IAorIC8vIE1ha2UgdGhlIHBhcnNlciBnbyBpbnRvIGV2YWwgbW9kZSBwYXJzaW5nIChzdGF0ZW1l bnRzIGFuZCBjb21waWxhdGlvbiB1bml0cykuCisgJXRva2VuIEVWQUxfU1RBVEVNRU5UX1BBUlNF UgorQEAgLTY0OCw4ICs2NTIsOCBAQCBuYW1lc3BhY2Vfb3JfdHlwZV9kZWNsYXJhdGlvbgorIAkJ CVR5cGVDb250YWluZXIgZHMgPSAoVHlwZUNvbnRhaW5lcikkMTsKKyAKKyAJCQlpZiAoKGRzLk1v ZEZsYWdzICYgKE1vZGlmaWVycy5QUklWQVRFIHwgTW9kaWZpZXJzLlBST1RFQ1RFRCkpICE9IDAp eworLQkJCQlyZXBvcnQuRXJyb3IgKDE1MjcsIGRzLkxvY2F0aW9uLCAKKy0JCQkJIk5hbWVzcGFj ZSBlbGVtZW50cyBjYW5ub3QgYmUgZXhwbGljaXRseSBkZWNsYXJlZCBhcyBwcml2YXRlLCBwcm90 ZWN0ZWQgb3IgcHJvdGVjdGVkIGludGVybmFsIik7CisrCQkJCXJlcG9ydC5FcnJvciAoMTUyNywg ZHMuTG9jYXRpb24sCisrCQkJCSJOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0 bHkgZGVjbGFyZWQgYXMgcHJpdmF0ZSwgcHJvdGVjdGVkLCBwcm90ZWN0ZWQgaW50ZXJuYWwsIG9y IHByaXZhdGUgcHJvdGVjdGVkIik7CisgCQkJfQorIAorIAkJCS8vIEhlcmUgaXMgYSB0cmljaywg Zm9yIGV4cGxpY2l0IGF0dHJpYnV0ZXMgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGV5IGJlbG9uZyB0 byB1bnRpbAorQEAgLTEwMjgsNyArMTAzMiwxNSBAQCBzdHJ1Y3Rfa2V5d29yZAorIAkJCUZlYXR1 cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgInJlZiBzdHJ1Y3RzIik7CisgCQl9 CisgCistCQkkJCA9IHRoaXM7CisrCQkkJCA9IFJlZlN0cnVjdFRva2VuOworKwkgIH0KKysJfCBS RUZfUEFSVElBTCBTVFJVQ1QKKysJICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VW ZXJzaW9uLlZfN18yKSB7CisrCQkJRmVhdHVyZUlzTm90QXZhaWxhYmxlIChHZXRMb2NhdGlvbiAo JDEpLCAicmVmIHN0cnVjdHMiKTsKKysJCX0KKysKKysJCSQkID0gUmVmUGFydGlhbFN0cnVjdFRv a2VuOworIAkgIH0KKyAJOworIAorQEAgLTEwNDMsOCArMTA1NSwxMyBAQCBzdHJ1Y3RfZGVjbGFy YXRpb24KKyAJCWlmICgobW9kcyAmIE1vZGlmaWVycy5SRUFET05MWSkgIT0gMCAmJiBsYW5nX3Zl cnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKyAJCQlGZWF0dXJlSXNOb3RBdmFpbGFi bGUgKEdldExvY2F0aW9uICgkNCksICJyZWFkb25seSBzdHJ1Y3RzIik7CisgCQl9CistCQlpZiAo JDQgIT0gbnVsbCkKKysJCWlmICgkNCAhPSBudWxsKSB7CisgCQkJbW9kcyB8PSBNb2RpZmllcnMu UkVGOworKwkJCWlmICgkNCA9PSBSZWZQYXJ0aWFsU3RydWN0VG9rZW4pIHsKKysJCQkJbW9kcyB8 PSBNb2RpZmllcnMuUEFSVElBTDsKKysJCQkJJDMgPSAkNDsKKysJCQl9CisrCQl9CisgCisgCQls ZXhlci5Db25zdHJhaW50c1BhcnNpbmcgPSB0cnVlOworIAkJdmFsaWRfcGFyYW1fbW9kID0gUGFy YW1ldGVyTW9kaWZpZXJUeXBlLlByaW1hcnlDb25zdHJ1Y3RvcjsKK0BAIC0xNDY5LDcgKzE0ODYs NyBAQCBtZXRob2RfaGVhZGVyCisgCSAgT1BFTl9QQVJFTlMKKyAJICB7CisgCQlsZXhlci5wYXJz aW5nX2dlbmVyaWNfZGVjbGFyYXRpb24gPSBmYWxzZTsKKy0JICAJdmFsaWRfcGFyYW1fbW9kID0g UGFyYW1ldGVyTW9kaWZpZXJUeXBlLkFsbDsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRl ck1vZGlmaWVyVHlwZS5BbGw7CisgCSAgfQorIAkgIG9wdF9mb3JtYWxfcGFyYW1ldGVyX2xpc3Qg Q0xPU0VfUEFSRU5TIAorIAkgIHsKK0BAIC0xNTY5LDcgKzE1ODYsNyBAQCBjb25zdHJ1Y3Rvcl9i b2R5CisgCSBleHByZXNzaW9uIFNFTUlDT0xPTgorIAkgeworIAkJbGV4ZXIucGFyc2luZ19ibG9j ayA9IDA7CistCQljdXJyZW50X2Jsb2NrLkFkZFN0YXRlbWVudCAobmV3IENvbnRleHR1YWxSZXR1 cm4gKChFeHByZXNzaW9uKSAkMykpOworKwkJY3VycmVudF9ibG9jay5BZGRTdGF0ZW1lbnQgKENy ZWF0ZUV4cHJlc3Npb25Cb2RpZWRTdGF0ZW1lbnQgKChFeHByZXNzaW9uKSAkMykpOworIAkJdmFy IGIgPSBlbmRfYmxvY2sgKEdldExvY2F0aW9uICgkNCkpOworIAkJYi5Jc0NvbXBpbGVyR2VuZXJh dGVkID0gdHJ1ZTsKKyAJCSQkID0gYjsKK0BAIC0xNTkwLDcgKzE2MDcsNyBAQCBleHByZXNzaW9u X2Jsb2NrCisgCSBsYW1iZGFfYXJyb3dfZXhwcmVzc2lvbiBTRU1JQ09MT04KKyAJIHsKKyAJCWxl eGVyLnBhcnNpbmdfYmxvY2sgPSAwOworLQkJY3VycmVudF9ibG9jay5BZGRTdGF0ZW1lbnQgKG5l dyBDb250ZXh0dWFsUmV0dXJuICgoRXhwcmVzc2lvbikgJDMpKTsKKysJCWN1cnJlbnRfYmxvY2su QWRkU3RhdGVtZW50IChDcmVhdGVFeHByZXNzaW9uQm9kaWVkU3RhdGVtZW50ICgoRXhwcmVzc2lv bikgJDMpKTsKKyAJCXZhciBiID0gZW5kX2Jsb2NrIChHZXRMb2NhdGlvbiAoJDQpKTsKKyAJCWIu SXNDb21waWxlckdlbmVyYXRlZCA9IHRydWU7CisgCQkkJCA9IGI7CitAQCAtMTc5NCw3ICsxODEx LDkgQEAgcGFyYW1ldGVyX21vZGlmaWVycworICAgCQlQYXJhbWV0ZXIuTW9kaWZpZXIgbW9kID0g KFBhcmFtZXRlci5Nb2RpZmllcikkMSB8IHAyOworICAgCQlpZiAoKChQYXJhbWV0ZXIuTW9kaWZp ZXIpJDEgJiBwMikgPT0gcDIpIHsKKyAgIAkJCUVycm9yX0R1cGxpY2F0ZVBhcmFtZXRlck1vZGlm aWVyIChsZXhlci5Mb2NhdGlvbiwgcDIpOworLSAgCQl9IGVsc2UgeworKwkJfSBlbHNlIGlmICgo bW9kICYgfihQYXJhbWV0ZXIuTW9kaWZpZXIuVGhpcyB8IFBhcmFtZXRlci5Nb2RpZmllci5SZWFk T25seSkpID09IDApIHsKKysJCQkvLyBvaworKwkJfSBlbHNlIHsKKyAJICAJCXN3aXRjaCAobW9k ICYgflBhcmFtZXRlci5Nb2RpZmllci5UaGlzKSB7CisgICAJCQkJY2FzZSBQYXJhbWV0ZXIuTW9k aWZpZXIuUkVGOgorIAkJCQkJcmVwb3J0LkVycm9yICgxMTAxLCBsZXhlci5Mb2NhdGlvbiwgIlRo ZSBwYXJhbWV0ZXIgbW9kaWZpZXJzIGB0aGlzJyBhbmQgYHJlZicgY2Fubm90IGJlIHVzZWQgYWx0 b2dldGhlciIpOworQEAgLTE4MzYsNiArMTg1NSwxMyBAQCBwYXJhbWV0ZXJfbW9kaWZpZXIKKyAJ ICAJCQkKKyAJCSQkID0gUGFyYW1ldGVyLk1vZGlmaWVyLlRoaXM7CisgCSAgfQorKwl8IElOCisr CSAgeworKwkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMikKKysJCQlG ZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0aW9uICgkMSksICJyZWFkb25seSByZWZlcmVu Y2VzIik7CisrCisrCQkkJCA9IFBhcmFtZXRlci5Nb2RpZmllci5SZWFkT25seTsKKysJICB9Cisg CTsKKyAKKyBwYXJhbWV0ZXJfYXJyYXkKK0BAIC0xODcxLDcgKzE4OTcsNyBAQCBwYXJhbXNfbW9k aWZpZXIKKyAJCWlmICgobW9kICYgUGFyYW1ldGVyLk1vZGlmaWVyLlRoaXMpICE9IDApIHsKKyAJ CQlyZXBvcnQuRXJyb3IgKDExMDQsIEdldExvY2F0aW9uICgkMSksICJUaGUgcGFyYW1ldGVyIG1v ZGlmaWVycyBgdGhpcycgYW5kIGBwYXJhbXMnIGNhbm5vdCBiZSB1c2VkIGFsdG9nZXRoZXIiKTsK KyAJCX0gZWxzZSB7CistCQkJcmVwb3J0LkVycm9yICgxNjExLCBHZXRMb2NhdGlvbiAoJDEpLCAi VGhlIHBhcmFtcyBwYXJhbWV0ZXIgY2Fubm90IGJlIGRlY2xhcmVkIGFzIHJlZiBvciBvdXQiKTsK KysJCQlyZXBvcnQuRXJyb3IgKDE2MTEsIEdldExvY2F0aW9uICgkMSksICJUaGUgcGFyYW1zIHBh cmFtZXRlciBjYW5ub3QgYmUgZGVjbGFyZWQgYXMgcmVmLCBvdXQgb3IgaW4iKTsKKyAJCX0JICAK KyAJICB9CisgCXwgUEFSQU1TIHBhcmFtc19tb2RpZmllcgorQEAgLTIwMDQsNyArMjAzMCw3IEBA IGluZGV4ZXJfZGVjbGFyYXRpb24KKyAJOiBvcHRfYXR0cmlidXRlcyBvcHRfbW9kaWZpZXJzCisg CSAgcmVmX21lbWJlcl90eXBlIGluZGV4ZXJfZGVjbGFyYXRpb25fbmFtZSBPUEVOX0JSQUNLRVQK KyAJICB7CistCSAgCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5QYXJh bXMgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuRGVmYXVsdFZhbHVlOworKwkJdmFsaWRfcGFyYW1f bW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlBhcmFtcyB8IFBhcmFtZXRlck1vZGlmaWVyVHlw ZS5EZWZhdWx0VmFsdWUgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVhZE9ubHk7CisgCSAgfQor IAkgIG9wdF9mb3JtYWxfcGFyYW1ldGVyX2xpc3QgQ0xPU0VfQlJBQ0tFVCAKKyAJICB7CitAQCAt MjE4MSw2ICsyMjA3LDExIEBAIHNldF9hY2Nlc3Nvcl9kZWNsYXJhdGlvbgorIGFjY2Vzc29yX2Jv ZHkKKyAJOiBibG9jaworIAl8IGV4cHJlc3Npb25fYmxvY2sKKysJICB7CisrCQlpZiAobGFuZ192 ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykgeworKwkJCUZlYXR1cmVJc05vdEF2YWlsYWJs ZSAoR2V0TG9jYXRpb24gKCQxKSwgImV4cHJlc3Npb24gYm9keSBwcm9wZXJ0eSBhY2Nlc3NvciIp OworKwkJfQorKwkgIH0KKyAJfCBTRU1JQ09MT04KKyAJICB7CisgCQkvLyBUT0RPOiBsYmFnCitA QCAtMjMzMSw3ICsyMzYyLDcgQEAgb3BlcmF0b3JfdHlwZQorIG9wZXJhdG9yX2RlY2xhcmF0b3IK KyAJOiBvcGVyYXRvcl90eXBlIE9QRVJBVE9SIG92ZXJsb2FkYWJsZV9vcGVyYXRvciBPUEVOX1BB UkVOUworIAkgIHsKKy0JCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5E ZWZhdWx0VmFsdWU7CisrCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUu RGVmYXVsdFZhbHVlIHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRPbmx5OworIAkJaWYgKChP cGVyYXRvci5PcFR5cGUpICQzID09IE9wZXJhdG9yLk9wVHlwZS5JcykKKyAJCQl2YWxpZF9wYXJh bV9tb2QgfD0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLk91dDsKKyAJICB9CitAQCAtMjQxOCw3ICsy NDQ5LDcgQEAgb3ZlcmxvYWRhYmxlX29wZXJhdG9yCisgY29udmVyc2lvbl9vcGVyYXRvcl9kZWNs YXJhdG9yCisgCTogSU1QTElDSVQgT1BFUkFUT1IgdHlwZSBPUEVOX1BBUkVOUworIAkgIHsKKy0J CXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5EZWZhdWx0VmFsdWU7Cisr CQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuRGVmYXVsdFZhbHVlIHwg UGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfZm9ybWFsX3Bh cmFtZXRlcl9saXN0IENMT1NFX1BBUkVOUworIAkgIHsKK0BAIC0yNDQxLDcgKzI0NzIsNyBAQCBj b252ZXJzaW9uX29wZXJhdG9yX2RlY2xhcmF0b3IKKyAJICB9CisgCXwgRVhQTElDSVQgT1BFUkFU T1IgdHlwZSBPUEVOX1BBUkVOUworIAkgIHsKKy0JCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRl ck1vZGlmaWVyVHlwZS5EZWZhdWx0VmFsdWU7CisrCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0 ZXJNb2RpZmllclR5cGUuRGVmYXVsdFZhbHVlIHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRP bmx5OworIAkgIH0KKyAJICBvcHRfZm9ybWFsX3BhcmFtZXRlcl9saXN0IENMT1NFX1BBUkVOUwor IAkgIHsKK0BAIC0yODUwLDYgKzI4ODEsMTEgQEAgZXZlbnRfYWNjZXNzb3JfYmxvY2sKKyAJICB9 CisgCXwgYmxvY2sKKyAJfCBleHByZXNzaW9uX2Jsb2NrCisrCSAgeworKwkJaWYgKGxhbmdfdmVy c2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzcpIHsKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUg KEdldExvY2F0aW9uICgkMSksICJleHByZXNzaW9uIGJvZHkgZXZlbnQgYWNjZXNzb3IiKTsKKysJ CX0KKysJICB9CisgCTsKKyAKKyBhdHRyaWJ1dGVzX3dpdGhvdXRfbWVtYmVycworQEAgLTMwMTQs NyArMzA1MCw3IEBAIGRlbGVnYXRlX2RlY2xhcmF0aW9uCisgCSAgcmVmX21lbWJlcl90eXBlIHR5 cGVfZGVjbGFyYXRpb25fbmFtZQorIAkgIE9QRU5fUEFSRU5TCisgCSAgeworLQkJdmFsaWRfcGFy YW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlZiB8IFBhcmFtZXRlck1vZGlmaWVyVHlw ZS5PdXQgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUGFyYW1zIHwgUGFyYW1ldGVyTW9kaWZpZXJU eXBlLkRlZmF1bHRWYWx1ZTsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVy VHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZpZXJU eXBlLlBhcmFtcyB8IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5EZWZhdWx0VmFsdWUgfCBQYXJhbWV0 ZXJNb2RpZmllclR5cGUuUmVhZE9ubHk7CisgCSAgfQorIAkgIG9wdF9mb3JtYWxfcGFyYW1ldGVy X2xpc3QgQ0xPU0VfUEFSRU5TCisgCSAgeworQEAgLTM5MjcsNyArMzk2MywxNSBAQCBub25fc2lt cGxlX2FyZ3VtZW50CisgCSAgeworIAkJJCQgPSBuZXcgQXJndW1lbnQgKG5ldyBBcmdsaXN0IChH ZXRMb2NhdGlvbiAoJDEpKSk7CisgCQlsYmFnLkFkZExvY2F0aW9uICgkJCwgR2V0TG9jYXRpb24g KCQyKSwgR2V0TG9jYXRpb24gKCQzKSk7CistCSAgfQkgIAorKwkgIH0KKysJfCBJTiB2YXJpYWJs ZV9yZWZlcmVuY2UKKysJICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9u LlZfN18yKQorKwkJCUZlYXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgInJl YWRvbmx5IHJlZmVyZW5jZXMiKTsKKysKKysJCSQkID0gbmV3IEFyZ3VtZW50ICgoRXhwcmVzc2lv bikgJDIsIEFyZ3VtZW50LkFUeXBlLlJlYWRvbmx5KTsKKysJCWxiYWcuQWRkTG9jYXRpb24gKCQk LCBHZXRMb2NhdGlvbiAoJDEpKTsKKysJICB9CisgCTsKKyAKKyBvdXRfdmFyaWFibGVfZGVjbGFy YXRpb24KK0BAIC00NDA4LDcgKzQ0NTIsNyBAQCBvcHRfYW5vbnltb3VzX21ldGhvZF9zaWduYXR1 cmUKKyBhbm9ueW1vdXNfbWV0aG9kX3NpZ25hdHVyZQorIAk6IE9QRU5fUEFSRU5TCisgCSAgewor LQkgIAl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVmIHwgUGFyYW1l dGVyTW9kaWZpZXJUeXBlLk91dDsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlm aWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZp ZXJUeXBlLlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfZm9ybWFsX3BhcmFtZXRlcl9saXN0IENM T1NFX1BBUkVOUworIAkgIHsKK0BAIC01MDE0LDM2ICs1MDU4LDQ3IEBAIG51bGxfY29hbGVzY2lu Z19leHByZXNzaW9uCisgCSAgfQorIAk7CisgCisrCisrY29uZGl0aW9uYWxfb3Blcl9leHByCisr CTogZXhwcmVzc2lvbgorKwl8IHN0YWNrYWxsb2NfZXhwcmVzc2lvbgorKwk7CisrCisgY29uZGl0 aW9uYWxfZXhwcmVzc2lvbgorIAk6IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uCistCXwgbnVs bF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGV4cHJlc3Npb24gQ09MT04gZXhwcmVzc2lv bgorKwl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVSUiBjb25kaXRpb25hbF9vcGVy X2V4cHIgQ09MT04gY29uZGl0aW9uYWxfb3Blcl9leHByCisgCSAgeworIAkJJCQgPSBuZXcgQ29u ZGl0aW9uYWwgKG5ldyBCb29sZWFuRXhwcmVzc2lvbiAoKEV4cHJlc3Npb24pICQxKSwgKEV4cHJl c3Npb24pICQzLCAoRXhwcmVzc2lvbikgJDUsIEdldExvY2F0aW9uICgkMikpOworIAkJbGJhZy5B ZGRMb2NhdGlvbiAoJCQsIEdldExvY2F0aW9uICgkNCkpOworIAkgIH0KKy0JfCBudWxsX2NvYWxl c2NpbmdfZXhwcmVzc2lvbiBJTlRFUlIgZXhwcmVzc2lvbiBDT0xPTiBUSFJPVyBwcmVmaXhlZF91 bmFyeV9leHByZXNzaW9uCisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNv bmRpdGlvbmFsX29wZXJfZXhwciBDT0xPTiBUSFJPVyBwcmVmaXhlZF91bmFyeV9leHByZXNzaW9u CisgCSAgeworIAkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzcpCistCQkJ RmVhdHVyZUlzTm90QXZhaWxhYmxlIChsZXhlci5Mb2NhdGlvbiwgInRocm93IGV4cHJlc3Npb24i KTsKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0aW9uICgkNSksICJ0aHJvdyBl eHByZXNzaW9uIik7CisgCisgCQl2YXIgZXhwciA9IG5ldyBUaHJvd0V4cHJlc3Npb24gKChFeHBy ZXNzaW9uKSAkNiwgR2V0TG9jYXRpb24gKCQ1KSk7CisgCQkkJCA9IG5ldyBDb25kaXRpb25hbCAo bmV3IEJvb2xlYW5FeHByZXNzaW9uICgoRXhwcmVzc2lvbikgJDEpLCAoRXhwcmVzc2lvbikgJDMs IGV4cHIsIEdldExvY2F0aW9uICgkMikpOworIAkJbGJhZy5BZGRMb2NhdGlvbiAoJCQsIEdldExv Y2F0aW9uICgkNCkpOworIAkgIH0KKy0JfCBudWxsX2NvYWxlc2NpbmdfZXhwcmVzc2lvbiBJTlRF UlIgZXhwcmVzc2lvbiBlcnJvcgorKwl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVS UiByZWZlcmVuY2VfZXhwcmVzc2lvbiBDT0xPTiByZWZlcmVuY2VfZXhwcmVzc2lvbgorKwkgIHsK KysJCSQkID0gbmV3IENvbmRpdGlvbmFsIChuZXcgQm9vbGVhbkV4cHJlc3Npb24gKChFeHByZXNz aW9uKSAkMSksIChFeHByZXNzaW9uKSAkMywgKEV4cHJlc3Npb24pICQ1LCBHZXRMb2NhdGlvbiAo JDIpKTsKKysJCWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDQpKTsKKysJICB9 CisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNvbmRpdGlvbmFsX29wZXJf ZXhwciBlcnJvcgorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVycm9yICh5eVRva2VuKTsKKyAKKyAJ CSQkID0gbmV3IENvbmRpdGlvbmFsIChuZXcgQm9vbGVhbkV4cHJlc3Npb24gKChFeHByZXNzaW9u KSAkMSksIChFeHByZXNzaW9uKSAkMywgbnVsbCwgR2V0TG9jYXRpb24gKCQyKSk7CisgCSAgfQor LQl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVSUiBleHByZXNzaW9uIENPTE9OIGVy cm9yCisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNvbmRpdGlvbmFsX29w ZXJfZXhwciBDT0xPTiBlcnJvcgorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVycm9yICh5eVRva2Vu KTsKKyAKKyAJCSQkID0gbmV3IENvbmRpdGlvbmFsIChuZXcgQm9vbGVhbkV4cHJlc3Npb24gKChF eHByZXNzaW9uKSAkMSksIChFeHByZXNzaW9uKSAkMywgbnVsbCwgR2V0TG9jYXRpb24gKCQyKSk7 CisgCQlsYmFnLkFkZExvY2F0aW9uICgkJCwgR2V0TG9jYXRpb24gKCQ0KSk7CisgCSAgfQorLQl8 IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVSUiBleHByZXNzaW9uIENPTE9OIENMT1NF X0JSQUNFCisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNvbmRpdGlvbmFs X29wZXJfZXhwciBDT0xPTiBDTE9TRV9CUkFDRQorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVycm9y IChUb2tlbi5DTE9TRV9CUkFDRSk7CisgCitAQCAtNTMwOCw3ICs1MzYzLDcgQEAgbGFtYmRhX2V4 cHJlc3Npb24KKyAJICB9CisgCXwgT1BFTl9QQVJFTlNfTEFNQkRBCisgCSAgeworLQkgIAl2YWxp ZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVmIHwgUGFyYW1ldGVyTW9kaWZp ZXJUeXBlLk91dDsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5S ZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJl YWRPbmx5OworIAkgIH0KKyAJICBvcHRfbGFtYmRhX3BhcmFtZXRlcl9saXN0IENMT1NFX1BBUkVO UyBBUlJPVyAKKyAJICB7CitAQCAtNTMyMiw3ICs1Mzc3LDcgQEAgbGFtYmRhX2V4cHJlc3Npb24K KyAJICB9CisgCXwgQVNZTkMgT1BFTl9QQVJFTlNfTEFNQkRBCisgCSAgeworLQkgIAl2YWxpZF9w YXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVmIHwgUGFyYW1ldGVyTW9kaWZpZXJU eXBlLk91dDsJICAKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5S ZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJl YWRPbmx5OworIAkgIH0KKyAJICBvcHRfbGFtYmRhX3BhcmFtZXRlcl9saXN0IENMT1NFX1BBUkVO UyBBUlJPVyAKKyAJICB7CitAQCAtNTUyMiwxMCArNTU3NywxNyBAQCBtb2RpZmllcnMKKyAJCWlm ICgobTEgJiBtMikgIT0gMCkgeworIAkJCXJlcG9ydC5FcnJvciAoMTAwNCwgbGV4ZXIuTG9jYXRp b24gLSBNb2RpZmllcnNFeHRlbnNpb25zLk5hbWUgKG0yKS5MZW5ndGgsCisgCQkJCSJEdXBsaWNh dGUgYHswfScgbW9kaWZpZXIiLCBNb2RpZmllcnNFeHRlbnNpb25zLk5hbWUgKG0yKSk7CistCQl9 IGVsc2UgaWYgKChtMiAmIE1vZGlmaWVycy5BY2Nlc3NpYmlsaXR5TWFzaykgIT0gMCAmJiAobTEg JiBNb2RpZmllcnMuQWNjZXNzaWJpbGl0eU1hc2spICE9IDAgJiYKKy0JCQkoKG0yIHwgbTEgJiBN b2RpZmllcnMuQWNjZXNzaWJpbGl0eU1hc2spICE9IChNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9k aWZpZXJzLklOVEVSTkFMKSkpIHsKKy0JCQlyZXBvcnQuRXJyb3IgKDEwNywgbGV4ZXIuTG9jYXRp b24gLSBNb2RpZmllcnNFeHRlbnNpb25zLk5hbWUgKG0yKS5MZW5ndGgsCistCQkJCSJNb3JlIHRo YW4gb25lIHByb3RlY3Rpb24gbW9kaWZpZXIgc3BlY2lmaWVkIik7CisrCQl9IGVsc2UgaWYgKCht MiAmIE1vZGlmaWVycy5BY2Nlc3NpYmlsaXR5TWFzaykgIT0gMCAmJiAobTEgJiBNb2RpZmllcnMu QWNjZXNzaWJpbGl0eU1hc2spICE9IDApIHsKKysJCQl2YXIgYWNjZXNzaWJpbGl0eSA9IChtMiB8 IG0xICYgTW9kaWZpZXJzLkFjY2Vzc2liaWxpdHlNYXNrKTsKKysKKysJCQlpZiAoYWNjZXNzaWJp bGl0eSA9PSAoTW9kaWZpZXJzLlBSSVZBVEUgfCBNb2RpZmllcnMuUFJPVEVDVEVEKSkgeworKwkJ CQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfN18yKSB7CisrCQkJCQlGZWF0 dXJlSXNOb3RBdmFpbGFibGUgKGxleGVyLkxvY2F0aW9uLCAicHJpdmF0ZSBwcm90ZWN0ZWQiKTsK KysJCQkJfQorKwkJCX0gZWxzZSBpZiAoYWNjZXNzaWJpbGl0eSAhPSAoTW9kaWZpZXJzLlBST1RF Q1RFRCB8IE1vZGlmaWVycy5JTlRFUk5BTCkpIHsKKysJCQkJcmVwb3J0LkVycm9yICgxMDcsIGxl eGVyLkxvY2F0aW9uIC0gTW9kaWZpZXJzRXh0ZW5zaW9ucy5OYW1lIChtMikuTGVuZ3RoLAorKwkJ CQkJIk1vcmUgdGhhbiBvbmUgcHJvdGVjdGlvbiBtb2RpZmllciBzcGVjaWZpZWQiKTsKKysJCQl9 CisgCQl9CisgCQkKKyAJCSQkID0gbTEgfCBtMjsKK0BAIC02MjIzLDExICs2Mjg1LDI4IEBAIGJs b2NrX3ZhcmlhYmxlX2luaXRpYWxpemVyCisgCXwgU1RBQ0tBTExPQyBzaW1wbGVfdHlwZQorIAkg IHsKKyAJCXJlcG9ydC5FcnJvciAoMTU3NSwgR2V0TG9jYXRpb24gKCQxKSwgIkEgc3RhY2thbGxv YyBleHByZXNzaW9uIHJlcXVpcmVzIFtdIGFmdGVyIHR5cGUiKTsKKy0JCSQkID0gbmV3IFN0YWNr QWxsb2MgKChFeHByZXNzaW9uKSAkMiwgbnVsbCwgR2V0TG9jYXRpb24gKCQxKSk7CQkKKysJCSQk ID0gbmV3IFN0YWNrQWxsb2MgKChFeHByZXNzaW9uKSAkMiwgbnVsbCwgR2V0TG9jYXRpb24gKCQx KSk7CisgCSAgfQorIAl8IHJlZmVyZW5jZV9leHByZXNzaW9uCisgCTsKKyAKKytzdGFja2FsbG9j X2V4cHJlc3Npb24KKysJOiBTVEFDS0FMTE9DIHNpbXBsZV90eXBlIE9QRU5fQlJBQ0tFVF9FWFBS IGV4cHJlc3Npb24gQ0xPU0VfQlJBQ0tFVAorKwkgIHsKKysJCWlmIChsYW5nX3ZlcnNpb24gPCBM YW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExv Y2F0aW9uICgkMSksICJyZWYgc3RydWN0cyIpOworKwkJfQorKworKwkJJCQgPSBuZXcgU3BhblN0 YWNrQWxsb2MgKChFeHByZXNzaW9uKSAkMiwgKEV4cHJlc3Npb24pICQ0LCBHZXRMb2NhdGlvbiAo JDEpKTsKKysJCWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDMpLCBHZXRMb2Nh dGlvbiAoJDUpKTsKKysJICB9CisrCXwgU1RBQ0tBTExPQyBzaW1wbGVfdHlwZQorKwkgIHsKKysJ CXJlcG9ydC5FcnJvciAoMTU3NSwgR2V0TG9jYXRpb24gKCQxKSwgIkEgc3RhY2thbGxvYyBleHBy ZXNzaW9uIHJlcXVpcmVzIFtdIGFmdGVyIHR5cGUiKTsKKysJCSQkID0gbmV3IFN0YWNrQWxsb2Mg KChFeHByZXNzaW9uKSAkMiwgbnVsbCwgR2V0TG9jYXRpb24gKCQxKSk7CisrCSAgfQorKwk7Cisr CisgcmVmZXJlbmNlX2V4cHJlc3Npb24KKyAJOiBSRUYgZXhwcmVzc2lvbgorIAkgIHsKK0BAIC03 Njk5LDcgKzc3NzgsNyBAQCBkb2NfY3JlZgorIAkgIH0KKyAJfCBkb2NfdHlwZV9kZWNsYXJhdGlv bl9uYW1lIERPVCBUSElTIE9QRU5fQlJBQ0tFVAorIAkgIHsKKy0JCXZhbGlkX3BhcmFtX21vZCA9 IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0Owor KwkJdmFsaWRfcGFyYW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlZiB8IFBhcmFtZXRl ck1vZGlmaWVyVHlwZS5PdXQgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVhZE9ubHk7CisgCSAg fQorIAkgIG9wdF9kb2NfcGFyYW1ldGVycyBDTE9TRV9CUkFDS0VUCisgCSAgeworQEAgLTc3NDMs NyArNzgyMiw3IEBAIG9wdF9kb2NfbWV0aG9kX3NpZworIAk6IC8qIGVtcHR5ICovCisgCXwgT1BF Tl9QQVJFTlMKKyAJICB7CistCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5 cGUuUmVmIHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLk91dDsKKysJCXZhbGlkX3BhcmFtX21vZCA9 IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwg UGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfZG9jX3BhcmFt ZXRlcnMgQ0xPU0VfUEFSRU5TCisgCSAgeworQEAgLTc5NTEsNiArODAzMCwxNCBAQCBzdGF0aWMg Ym9vbCBJc1VuYXJ5T3BlcmF0b3IgKE9wZXJhdG9yLk9wVHlwZSBvcCkKKyAJcmV0dXJuIGZhbHNl OworIH0KKyAKKytzdGF0aWMgU3RhdGVtZW50IENyZWF0ZUV4cHJlc3Npb25Cb2RpZWRTdGF0ZW1l bnQgKEV4cHJlc3Npb24gZXhwcikKKyt7CisrCWlmIChleHByIGlzIFRocm93RXhwcmVzc2lvbiB0 ZSkKKysJCXJldHVybiBuZXcgU3RhdGVtZW50RXhwcmVzc2lvbiAodGUpOworKworKwlyZXR1cm4g bmV3IENvbnRleHR1YWxSZXR1cm4gKGV4cHIpOworK30KKysKKyB2b2lkIHN5bnRheF9lcnJvciAo TG9jYXRpb24gbCwgc3RyaW5nIG1zZykKKyB7CisgCXJlcG9ydC5FcnJvciAoMTAwMywgbCwgIlN5 bnRheCBlcnJvciwgIiArIG1zZyk7CitAQCAtODQzMCw2ICs4NTE3LDggQEAgc3RhdGljIHN0cmlu ZyBHZXRUb2tlbk5hbWUgKGludCB0b2tlbikKKyAJY2FzZSBUb2tlbi5SRUFET05MWToKKyAJCXJl dHVybiAicmVhZG9ubHkiOworIAljYXNlIFRva2VuLlJFRjoKKysJY2FzZSBUb2tlbi5SRUZfU1RS VUNUOgorKwljYXNlIFRva2VuLlJFRl9QQVJUSUFMOgorIAkJcmV0dXJuICJyZWYiOworIAljYXNl IFRva2VuLlJFVFVSTjoKKyAJCXJldHVybiAicmV0dXJuIjsKK0BAIC04NDQ0LDcgKzg1MzMsNiBA QCBzdGF0aWMgc3RyaW5nIEdldFRva2VuTmFtZSAoaW50IHRva2VuKQorIAljYXNlIFRva2VuLlNU QVRJQzoKKyAJCXJldHVybiAic3RhdGljIjsKKyAJY2FzZSBUb2tlbi5TVFJVQ1Q6CistCWNhc2Ug VG9rZW4uUkVGX1NUUlVDVDoKKyAJCXJldHVybiAic3RydWN0IjsKKyAJY2FzZSBUb2tlbi5TV0lU Q0g6CisgCQlyZXR1cm4gInN3aXRjaCI7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9jcy10b2tlbml6 ZXIuY3MgYi9tY3MvbWNzL2NzLXRva2VuaXplci5jcworaW5kZXggMzdlZGI1YzEyMjQuLmRiNWJh MWYxZjFiIDEwMDY0NAorLS0tIGEvbWNzL21jcy9jcy10b2tlbml6ZXIuY3MKKysrKyBiL21jcy9t Y3MvY3MtdG9rZW5pemVyLmNzCitAQCAtODI1LDggKzgyNSw3IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAkJCQkJbmV4dF90b2tlbiA9PSBUb2tlbi5DTEFTUyB8fAorIAkJCQkJbmV4dF90b2tl biA9PSBUb2tlbi5TVFJVQ1QgfHwKKyAJCQkJCW5leHRfdG9rZW4gPT0gVG9rZW4uSU5URVJGQUNF IHx8CistCQkJCQluZXh0X3Rva2VuID09IFRva2VuLlZPSUQgfHwKKy0JCQkJCW5leHRfdG9rZW4g PT0gVG9rZW4uUkVGX1NUUlVDVDsKKysJCQkJCW5leHRfdG9rZW4gPT0gVG9rZW4uVk9JRDsKKyAK KyAJCQkJUG9wUG9zaXRpb24gKCk7CisgCitAQCAtOTE2LDE0ICs5MTUsMjAgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwCisgCisgCQkJCWJyZWFrOworIAkJCWNhc2UgVG9rZW4uUkVGOgorLQkJCQlp ZiAocGVla190b2tlbiAoKSA9PSBUb2tlbi5TVFJVQ1QpIHsKKysJCQkJdmFyIHBwID0gcGVla190 b2tlbiAoKTsKKysJCQkJc3dpdGNoIChwcCkgeworKwkJCQljYXNlIFRva2VuLlNUUlVDVDoKKyAJ CQkJCXRva2VuICgpOworIAkJCQkJcmVzID0gVG9rZW4uUkVGX1NUUlVDVDsKKysJCQkJCWJyZWFr OworKwkJCQljYXNlIFRva2VuLlBBUlRJQUw6CisrCQkJCQl0b2tlbiAoKTsKKysJCQkJCXJlcyA9 IFRva2VuLlJFRl9QQVJUSUFMOworKwkJCQkJYnJlYWs7CisgCQkJCX0KKyAJCQkJYnJlYWs7Cisg CQkJfQorIAorLQorIAkJCXJldHVybiByZXM7CisgCQl9CisgCitAQCAtMTIxMiw2ICsxMjE3LDcg QEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJCWNhc2UgVG9rZW4uUkVGOgorIAkJCQlj YXNlIFRva2VuLk9VVDoKKysJCQkJY2FzZSBUb2tlbi5JTjoKKyAJCQkJCWNhbl9iZV90eXBlID0g aXNfdHlwZSA9IGZhbHNlOworIAkJCQkJY29udGludWU7CisgCitAQCAtMTQwNiw2ICsxNDEyLDgg QEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJY2FzZSBUb2tlbi5JTlRFUlBPTEFURURfU1RS SU5HOgorIAkJCWNhc2UgVG9rZW4uVEhST1c6CisgCQkJY2FzZSBUb2tlbi5ERUZBVUxUX0NPTE9O OgorKwkJCWNhc2UgVG9rZW4uUkVGOgorKwkJCWNhc2UgVG9rZW4uU1RBQ0tBTExPQzoKKyAJCQkJ bmV4dF90b2tlbiA9IFRva2VuLklOVEVSUjsKKyAJCQkJYnJlYWs7CisgCQkJCQorQEAgLTE1Njcs MjggKzE1NzUsNTMgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQl7CisgCQkJaW50IGQ7Cisg CQkJYm9vbCBzZWVuX2RpZ2l0cyA9IGZhbHNlOworLQkJCQorLQkJCWlmIChjICE9IC0xKXsKKysJ CQlib29sIGRpZ2l0X3NlcGFyYXRvciA9IGZhbHNlOworKwkJCWludCBwcmV2ID0gYzsKKysJCQl2 YXIgbG9jID0gTG9jYXRpb247CisrCisrCQkJaWYgKHByZXYgIT0gLTEpeworIAkJCQlpZiAobnVt YmVyX3BvcyA9PSBNYXhOdW1iZXJMZW5ndGgpCisgCQkJCQlFcnJvcl9OdW1lcmljQ29uc3RhbnRU b29Mb25nICgpOworLQkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFyKSBj OworKwkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFyKSBwcmV2OworIAkJ CX0KKy0JCQkKKysKKyAJCQkvLworIAkJCS8vIFdlIHVzZSBwZWVrX2NoYXIyLCBiZWNhdXNlIGRl Y2ltYWxfZGlnaXRzIG5lZWRzIHRvIGRvIGEgCisgCQkJLy8gMi1jaGFyYWN0ZXIgbG9vay1haGVh ZCAoNS5Ub1N0cmluZyBmb3IgZXhhbXBsZSkuCisgCQkJLy8KKyAJCQl3aGlsZSAoKGQgPSBwZWVr X2NoYXIyICgpKSAhPSAtMSl7CistCQkJCWlmIChkID49ICcwJyAmJiBkIDw9ICc5Jyl7CisrCQkJ CWlmIChkID49ICcwJyAmJiBkIDw9ICc5JykgeworIAkJCQkJaWYgKG51bWJlcl9wb3MgPT0gTWF4 TnVtYmVyTGVuZ3RoKQorIAkJCQkJCUVycm9yX051bWVyaWNDb25zdGFudFRvb0xvbmcgKCk7Cist CQkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFyKSBkOworLQkJCQkJZ2V0 X2NoYXIgKCk7CisrCQkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFyKWQ7 CisrCQkJCQlwcmV2ID0gZ2V0X2NoYXIgKCk7CisgCQkJCQlzZWVuX2RpZ2l0cyA9IHRydWU7Cist CQkJCX0gZWxzZQorLQkJCQkJYnJlYWs7CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIGlm IChkID09ICdfJykgeworKwkJCQkJaWYgKCFkaWdpdF9zZXBhcmF0b3IpIHsKKysJCQkJCQlpZiAo Y29udGV4dC5TZXR0aW5ncy5WZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykKKysJCQkJCQkJ UmVwb3J0LkZlYXR1cmVJc05vdEF2YWlsYWJsZSAoY29udGV4dCwgTG9jYXRpb24sICJkaWdpdCBz ZXBhcmF0b3JzIik7CisrCisrCQkJCQkJZGlnaXRfc2VwYXJhdG9yID0gdHJ1ZTsKKysJCQkJCX0K KysKKysJCQkJCWlmIChwcmV2ID09ICcuJykKKysJCQkJCQlicmVhazsKKysKKysJCQkJCWlmIChw cmV2ID09ICdlJyB8fCBwcmV2ID09ICdFJykKKysJCQkJCQlFcnJvcl9JbnZhbGlkTnVtYmVyICgp OworKworKwkJCQkJcHJldiA9IGdldF9jaGFyKCk7CisrCQkJCQljb250aW51ZTsKKysJCQkJfQor KworKwkJCQlicmVhazsKKyAJCQl9CisgCQkJCisrCQkJaWYgKHByZXYgPT0gJ18nKSB7CisrCQkJ CUVycm9yX0ludmFsaWROdW1iZXIgKCk7CisrCQkJfQorKworIAkJCXJldHVybiBzZWVuX2RpZ2l0 czsKKyAJCX0KKyAKK0BAIC0xNzE2LDkgKzE3NDksOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAK KyAJCQl9IGNhdGNoIChPdmVyZmxvd0V4Y2VwdGlvbikgeworIAkJCQlFcnJvcl9OdW1lcmljQ29u c3RhbnRUb29Mb25nICgpOworIAkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQuQnVp bHRpblR5cGVzLCAwLCBsb2MpOworLQkJCX0KKy0JCQljYXRjaCAoRm9ybWF0RXhjZXB0aW9uKSB7 CistCQkJCVJlcG9ydC5FcnJvciAoMTAxMywgTG9jYXRpb24sICJJbnZhbGlkIG51bWJlciIpOwor KwkJCX0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbikgeworKwkJCQlFcnJvcl9JbnZhbGlkTnVtYmVy ICgpOworIAkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQuQnVpbHRpblR5cGVzLCAw LCBsb2MpOworIAkJCX0KKyAJCX0KK0BAIC0xNzU3LDE0ICsxNzg5LDQxIEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycAorIAkJeworIAkJCWludCBkOworIAkJCXVsb25nIHVsOworLQkJCQorLQkJCWdl dF9jaGFyICgpOworKwkJCWJvb2wgZGlnaXRfc2VwYXJhdG9yID0gZmFsc2U7CisrCQkJaW50IHBy ZXYgPSBnZXRfY2hhciAoKTsKKysKKyAJCQl3aGlsZSAoKGQgPSBwZWVrX2NoYXIgKCkpICE9IC0x KXsKKyAJCQkJaWYgKGlzX2hleCAoZCkpeworIAkJCQkJbnVtYmVyX2J1aWxkZXIgW251bWJlcl9w b3MrK10gPSAoY2hhcikgZDsKKyAJCQkJCWdldF9jaGFyICgpOworLQkJCQl9IGVsc2UKKy0JCQkJ CWJyZWFrOworKworKwkJCQkJcHJldiA9IGQ7CisrCQkJCQljb250aW51ZTsKKysJCQkJfQorKwor KwkJCQlpZiAoZCA9PSAnXycpIHsKKysJCQkJCWlmIChwcmV2ID09ICd4JyB8fCBwcmV2ID09ICdY JykKKysJCQkJCQlFcnJvcl9JbnZhbGlkTnVtYmVyICgpOworKworKwkJCQkJZ2V0X2NoYXIgKCk7 CisrCisrCQkJCQlpZiAoIWRpZ2l0X3NlcGFyYXRvcikgeworKwkJCQkJCWlmIChjb250ZXh0LlNl dHRpbmdzLlZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83KQorKwkJCQkJCQlSZXBvcnQuRmVh dHVyZUlzTm90QXZhaWxhYmxlIChjb250ZXh0LCBMb2NhdGlvbiwgImRpZ2l0IHNlcGFyYXRvcnMi KTsKKysKKysJCQkJCQlkaWdpdF9zZXBhcmF0b3IgPSB0cnVlOworKwkJCQkJfQorKworKwkJCQkJ cHJldiA9IGQ7CisrCQkJCQljb250aW51ZTsKKysJCQkJfQorKworKwkJCQlicmVhazsKKysJCQl9 CisrCisrCQkJaWYgKG51bWJlcl9wb3MgPT0gMCB8fCBwcmV2ID09ICdfJykgeworKwkJCQlFcnJv cl9JbnZhbGlkTnVtYmVyICgpOworKwkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQu QnVpbHRpblR5cGVzLCAwLCBsb2MpOworIAkJCX0KKyAJCQkKKyAJCQlzdHJpbmcgcyA9IG5ldyBT dHJpbmcgKG51bWJlcl9idWlsZGVyLCAwLCBudW1iZXJfcG9zKTsKK0BAIC0xNzc5LDEzICsxODM4 LDY1IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCX0gY2F0Y2ggKE92ZXJmbG93RXhjZXB0 aW9uKXsKKyAJCQkJRXJyb3JfTnVtZXJpY0NvbnN0YW50VG9vTG9uZyAoKTsKKyAJCQkJcmV0dXJu IG5ldyBJbnRMaXRlcmFsIChjb250ZXh0LkJ1aWx0aW5UeXBlcywgMCwgbG9jKTsKKy0JCQl9Cist CQkJY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbikgeworLQkJCQlSZXBvcnQuRXJyb3IgKDEwMTMsIExv Y2F0aW9uLCAiSW52YWxpZCBudW1iZXIiKTsKKysJCQl9IGNhdGNoIChGb3JtYXRFeGNlcHRpb24p IHsKKysJCQkJRXJyb3JfSW52YWxpZE51bWJlciAoKTsKKyAJCQkJcmV0dXJuIG5ldyBJbnRMaXRl cmFsIChjb250ZXh0LkJ1aWx0aW5UeXBlcywgMCwgbG9jKTsKKyAJCQl9CisgCQl9CisgCisrCQlJ TGl0ZXJhbENvbnN0YW50IGhhbmRsZV9iaW5hcnkgKExvY2F0aW9uIGxvYykKKysJCXsKKysJCQlp bnQgZDsKKysJCQl1bG9uZyB1bCA9IDA7CisrCQkJYm9vbCBkaWdpdF9zZXBhcmF0b3IgPSBmYWxz ZTsKKysJCQlpbnQgZGlnaXRzID0gMDsKKysJCQlpbnQgcHJldiA9IGdldF9jaGFyICgpOworKwor KwkJCXdoaWxlICgoZCA9IHBlZWtfY2hhciAoKSkgIT0gLTEpeworKworKwkJCQlpZiAoZCA9PSAn MCcgfHwgZCA9PSAnMScpIHsKKysJCQkJCXVsID0gKHVsIDw8IDEpOworKwkJCQkJZGlnaXRzKys7 CisrCQkJCQlpZiAoZCA9PSAnMScpCisrCQkJCQkJdWwgfD0gMTsKKysJCQkJCWdldF9jaGFyICgp OworKwkJCQkJaWYgKGRpZ2l0cyA+IDY0KSB7CisrCQkJCQkJRXJyb3JfTnVtZXJpY0NvbnN0YW50 VG9vTG9uZyAoKTsKKysJCQkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQuQnVpbHRp blR5cGVzLCAwLCBsb2MpOworKwkJCQkJfQorKworKwkJCQkJcHJldiA9IGQ7CisrCQkJCQljb250 aW51ZTsKKysJCQkJfQorKworKwkJCQlpZiAoZCA9PSAnXycpIHsKKysJCQkJCWlmIChwcmV2ID09 ICdiJyB8fCBwcmV2ID09ICdCJykKKysJCQkJCQlFcnJvcl9JbnZhbGlkTnVtYmVyICgpOworKwor KwkJCQkJZ2V0X2NoYXIgKCk7CisrCisrCQkJCQlpZiAoIWRpZ2l0X3NlcGFyYXRvcikgeworKwkJ CQkJCWlmIChjb250ZXh0LlNldHRpbmdzLlZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83KQor KwkJCQkJCQlSZXBvcnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChjb250ZXh0LCBMb2NhdGlvbiwg ImRpZ2l0IHNlcGFyYXRvcnMiKTsKKysJCQkJCQkKKysJCQkJCQlkaWdpdF9zZXBhcmF0b3IgPSB0 cnVlOworKwkJCQkJfQorKworKwkJCQkJcHJldiA9IGQ7CisrCQkJCQljb250aW51ZTsKKysJCQkJ fQorKwkJCQkgCisrCQkJCWJyZWFrOworKwkJCX0KKysKKysJCQlpZiAoZGlnaXRzID09IDAgfHwg cHJldiA9PSAnXycpIHsKKysJCQkJRXJyb3JfSW52YWxpZE51bWJlciAoKTsKKysJCQkJcmV0dXJu IG5ldyBJbnRMaXRlcmFsIChjb250ZXh0LkJ1aWx0aW5UeXBlcywgMCwgbG9jKTsKKysJCQl9Cisr CisrCQkJcmV0dXJuIGludGVnZXJfdHlwZV9zdWZmaXggKHVsLCBwZWVrX2NoYXIgKCksIGxvYyk7 CisrCQl9CisrCQkKKyAJCS8vCisgCQkvLyBJbnZva2VkIGlmIHdlIGtub3cgd2UgaGF2ZSAuZGln aXRzIG9yIGRpZ2l0cworIAkJLy8KK0BAIC0xODE3LDcgKzE5MjgsMjAgQEAgbmFtZXNwYWNlIE1v bm8uQ1NoYXJwCisgCisgCQkJCQkJcmV0dXJuIFRva2VuLkxJVEVSQUw7CisgCQkJCQl9CisrCisr CQkJCQlpZiAocGVlayA9PSAnYicgfHwgcGVlayA9PSAnQicpeworKwkJCQkJCWlmIChjb250ZXh0 LlNldHRpbmdzLlZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83KQorKwkJCQkJCQlSZXBvcnQu RmVhdHVyZUlzTm90QXZhaWxhYmxlIChjb250ZXh0LCBMb2NhdGlvbiwgImJpbmFyeSBsaXRlcmFs cyIpOworKworKwkJCQkJCXZhbCA9IHJlcyA9IGhhbmRsZV9iaW5hcnkgKGxvYyk7CisrI2lmIEZV TExfQVNUCisrCQkJCQkJcmVzLlBhcnNlZFZhbHVlID0gcmVhZGVyLlJlYWRDaGFycyAocmVhZF9z dGFydCwgcmVhZGVyLlBvc2l0aW9uIC0gMSk7CisrI2VuZGlmCisrCisrCQkJCQkJcmV0dXJuIFRv a2VuLkxJVEVSQUw7CisrCQkJCQl9CisgCQkJCX0KKysKKyAJCQkJZGVjaW1hbF9kaWdpdHMgKGMp OworIAkJCQljID0gcGVla19jaGFyICgpOworIAkJCX0KK0BAIC0xODY5LDcgKzE5OTMsNyBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCQlFcnJvcl9OdW1lcmljQ29uc3RhbnRUb29Mb25n ICgpOworIAkJCQkJbnVtYmVyX2J1aWxkZXIgW251bWJlcl9wb3MrK10gPSAnKyc7CisgCQkJCX0K Ky0JCQkJCQorKworIAkJCQlkZWNpbWFsX2RpZ2l0cyAoYyk7CisgCQkJCWMgPSBwZWVrX2NoYXIg KCk7CisgCQkJfQorQEAgLTI5NDQsNiArMzA2OCwxMSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAK KyAJCXsKKyAJCQlSZXBvcnQuRXJyb3IgKDEwMjEsIExvY2F0aW9uLCAiSW50ZWdyYWwgY29uc3Rh bnQgaXMgdG9vIGxhcmdlIik7CQkJCisgCQl9CisrCisrCQl2b2lkIEVycm9yX0ludmFsaWROdW1i ZXIgKCkKKysJCXsKKysJCQlSZXBvcnQuRXJyb3IgKDEwMTMsIExvY2F0aW9uLCAiSW52YWxpZCBu dW1iZXIiKTsKKysJCX0KKyAJCQorIAkJdm9pZCBFcnJvcl9JbnZhbGlkRGlyZWN0aXZlICgpCisg CQl7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9lY29yZS5jcyBiL21jcy9tY3MvZWNvcmUuY3MKK2lu ZGV4IDIwZWU5ZTczYjE5Li5kNTkyNmJmNGQxZiAxMDA2NDQKKy0tLSBhL21jcy9tY3MvZWNvcmUu Y3MKKysrKyBiL21jcy9tY3MvZWNvcmUuY3MKK0BAIC0yNDEsNyArMjQxLDcgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwIHsKKyAKKyAJCXByb3RlY3RlZCB2b2lkIENoZWNrRXhwcmVzc2lvblZhcmlh YmxlIChSZXNvbHZlQ29udGV4dCByYykKKyAJCXsKKy0JCQlpZiAocmMuSGFzQW55IChSZXNvbHZl Q29udGV4dC5PcHRpb25zLkJhc2VJbml0aWFsaXplciB8IFJlc29sdmVDb250ZXh0Lk9wdGlvbnMu RmllbGRJbml0aWFsaXplclNjb3BlKSkgeworKwkJCWlmIChyYy5IYXNBbnkgKFJlc29sdmVDb250 ZXh0Lk9wdGlvbnMuQmFzZUluaXRpYWxpemVyIHwgUmVzb2x2ZUNvbnRleHQuT3B0aW9ucy5GaWVs ZEluaXRpYWxpemVyU2NvcGUpICYmIHJjLkN1cnJlbnRBbm9ueW1vdXNNZXRob2QgPT0gbnVsbCkg eworIAkJCQlyYy5SZXBvcnQuRXJyb3IgKDgyMDAsIGxvYywgIk91dCB2YXJpYWJsZSBhbmQgcGF0 dGVybiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIHdpdGhpbiBjb25zdHJ1 Y3RvciBpbml0aWFsaXplcnMsIGZpZWxkIGluaXRpYWxpemVycywgb3IgcHJvcGVydHkgaW5pdGlh bGl6ZXJzIik7CisgCQkJfSBlbHNlIGlmIChyYy5IYXNTZXQgKFJlc29sdmVDb250ZXh0Lk9wdGlv bnMuUXVlcnlDbGF1c2VTY29wZSkpIHsKKyAJCQkJcmMuUmVwb3J0LkVycm9yICg4MjAxLCBsb2Ms ICJPdXQgdmFyaWFibGUgYW5kIHBhdHRlcm4gdmFyaWFibGUgZGVjbGFyYXRpb25zIGFyZSBub3Qg YWxsb3dlZCB3aXRoaW4gYSBxdWVyeSBjbGF1c2UiKTsKK2RpZmYgLS1naXQgYS9tY3MvbWNzL2V4 cHJlc3Npb24uY3MgYi9tY3MvbWNzL2V4cHJlc3Npb24uY3MKK2luZGV4IDUxOGNjYzhlZjQzLi44 N2RiMTRhMGNlNyAxMDA2NDQKKy0tLSBhL21jcy9tY3MvZXhwcmVzc2lvbi5jcworKysrIGIvbWNz L21jcy9leHByZXNzaW9uLmNzCitAQCAtOTIwLDcgKzkyMCw3IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAorIAkJcHVibGljIG92ZXJyaWRlIGJvb2wgQ29udGFpbnNFbWl0V2l0aEF3YWl0ICgp CisgCQl7CistCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOworKwkJCXJl dHVybiBmYWxzZTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0 ZUV4cHJlc3Npb25UcmVlIChSZXNvbHZlQ29udGV4dCBlYykKK0BAIC0yMDUxLDcgKzIwNTEsMTEg QEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJCQkJaWYgKGQuQnVpbHRpblR5cGUgPT0g QnVpbHRpblR5cGVTcGVjLlR5cGUuRHluYW1pYykKKyAJCQkJCQkJcmV0dXJuIHRoaXM7CistCQkJ CQkJCisrCisrCQkJCQkJLy8gVE9ETzogUmVxdWlyZXMgY3VzdG9tIG9wdGltaXplZCB2ZXJzaW9u IHdpdGggdmFyaWFibGUgc3RvcmUKKysJCQkJCQlpZiAoVmFyaWFibGUgIT0gbnVsbCkKKysJCQkJ CQkJcmV0dXJuIHRoaXM7CisrCisgCQkJCQkJLy8KKyAJCQkJCQkvLyBUdXJuIGlzIGNoZWNrIGlu dG8gc2ltcGxlIG51bGwgY2hlY2sgZm9yIGltcGxpY2l0bHkgY29udmVydGlibGUgcmVmZXJlbmNl IHR5cGVzCisgCQkJCQkJLy8KK0BAIC0yNzU3LDYgKzI3NjEsMTIgQEAgbmFtZXNwYWNlIE1vbm8u Q1NoYXJwCisgCQkJfQorIAkJfQorIAorKwkJcHVibGljIG92ZXJyaWRlIGJvb2wgSXNOdWxsIHsK KysJCQlnZXQgeworKwkJCQlyZXR1cm4gVHlwZVNwZWMuSXNSZWZlcmVuY2VUeXBlICh0eXBlKTsK KysJCQl9CisrCQl9CisrCisgCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDb250YWluc0VtaXRXaXRo QXdhaXQgKCkKKyAJCXsKKyAJCQlyZXR1cm4gZmFsc2U7CitAQCAtNTY2OSw2ICs1Njc5LDEyIEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQlDb252Q2FzdC5FbWl0IChlYywgZW51bV9jb252 ZXJzaW9uKTsKKyAJCX0KKyAKKysJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXRQcmVwYXJlIChF bWl0Q29udGV4dCBlYykKKysJCXsKKysJCQlMZWZ0LkVtaXRQcmVwYXJlIChlYyk7CisrCQkJUmln aHQuRW1pdFByZXBhcmUgKGVjKTsKKysJCX0KKysKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVt aXRTaWRlRWZmZWN0IChFbWl0Q29udGV4dCBlYykKKyAJCXsKKyAJCQlpZiAoKG9wZXIgJiBPcGVy YXRvci5Mb2dpY2FsTWFzaykgIT0gMCB8fAorQEAgLTYzODUsNyArNjQwMSw3IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAkJCQkJCQl9CisgCQkJCQkJfQorIAorLQkJCQkJCWlmIChjb252X2Zh bHNlX2V4cHIgIT0gbnVsbCkgeworKwkJCQkJCWlmIChjb252X2ZhbHNlX2V4cHIgIT0gbnVsbCAm JiBmYWxzZV90eXBlICE9IEludGVybmFsVHlwZS5FcnJvclR5cGUgJiYgdHJ1ZV90eXBlICE9IElu dGVybmFsVHlwZS5FcnJvclR5cGUpIHsKKyAJCQkJCQkJZWMuUmVwb3J0LkVycm9yICgxNzIsIHRy dWVfZXhwci5Mb2NhdGlvbiwKKyAJCQkJCQkJCSJUeXBlIG9mIGNvbmRpdGlvbmFsIGV4cHJlc3Np b24gY2Fubm90IGJlIGRldGVybWluZWQgYXMgYHswfScgYW5kIGB7MX0nIGNvbnZlcnQgaW1wbGlj aXRseSB0byBlYWNoIG90aGVyIiwKKyAJCQkJCQkJCQl0cnVlX3R5cGUuR2V0U2lnbmF0dXJlRm9y RXJyb3IgKCksIGZhbHNlX3R5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworQEAgLTYzOTgs NyArNjQxNCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQl9IGVsc2UgaWYgKChjb252 ID0gQ29udmVydC5JbXBsaWNpdENvbnZlcnNpb24gKGVjLCBmYWxzZV9leHByLCB0cnVlX3R5cGUs IGxvYykpICE9IG51bGwpIHsKKyAJCQkJCWZhbHNlX2V4cHIgPSBjb252OworIAkJCQl9IGVsc2Ug eworLQkJCQkJaWYgKGZhbHNlX3R5cGUgIT0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZSkgeworKwkJ CQkJaWYgKGZhbHNlX3R5cGUgIT0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZSAmJiB0cnVlX3R5cGUg IT0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZSkgeworIAkJCQkJCWVjLlJlcG9ydC5FcnJvciAoMTcz LCB0cnVlX2V4cHIuTG9jYXRpb24sCisgCQkJCQkJCSJUeXBlIG9mIGNvbmRpdGlvbmFsIGV4cHJl c3Npb24gY2Fubm90IGJlIGRldGVybWluZWQgYmVjYXVzZSB0aGVyZSBpcyBubyBpbXBsaWNpdCBj b252ZXJzaW9uIGJldHdlZW4gYHswfScgYW5kIGB7MX0nIiwKKyAJCQkJCQkJdHJ1ZV90eXBlLkdl dFNpZ25hdHVyZUZvckVycm9yICgpLCBmYWxzZV90eXBlLkdldFNpZ25hdHVyZUZvckVycm9yICgp KTsKK0BAIC02NDI3LDYgKzY0NDMsMzAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJcmV0 dXJuIHRoaXM7CisgCQl9CisgCisrCQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVzc2lvbiBEb1Jlc29s dmVMVmFsdWUgKFJlc29sdmVDb250ZXh0IHJjLCBFeHByZXNzaW9uIHJpZ2h0X3NpZGUpCisrCQl7 CisrCQkJZXhwciA9IGV4cHIuUmVzb2x2ZSAocmMpOworKwkJCXRydWVfZXhwciA9IHRydWVfZXhw ci5SZXNvbHZlIChyYyk7CisrCQkJZmFsc2VfZXhwciA9IGZhbHNlX2V4cHIuUmVzb2x2ZSAocmMp OworKworKwkJCWlmICh0cnVlX2V4cHIgPT0gbnVsbCB8fCBmYWxzZV9leHByID09IG51bGwgfHwg ZXhwciA9PSBudWxsKQorKwkJCQlyZXR1cm4gbnVsbDsKKysJCQkKKysJCQlpZiAoISh0cnVlX2V4 cHIgaXMgUmVmZXJlbmNlRXhwcmVzc2lvbiAmJiBmYWxzZV9leHByIGlzIFJlZmVyZW5jZUV4cHJl c3Npb24pKSB7CisrCQkJCXJjLlJlcG9ydC5FcnJvciAoODMyNiwgZXhwci5Mb2NhdGlvbiwgIkJv dGggcmVmIGNvbmRpdGlvbmFsIG9wZXJhdG9ycyBtdXN0IGJlIHJlZiB2YWx1ZXMiKTsKKysJCQkJ cmV0dXJuIG51bGw7CisrCQkJfQorKworKwkJCWlmICghVHlwZVNwZWNDb21wYXJlci5Jc0VxdWFs ICh0cnVlX2V4cHIuVHlwZSwgZmFsc2VfZXhwci5UeXBlKSkgeworKwkJCQlyYy5SZXBvcnQuRXJy b3IgKDgzMjcsIHRydWVfZXhwci5Mb2NhdGlvbiwgIlRoZSByZWYgY29uZGl0aW9uYWwgZXhwcmVz c2lvbiB0eXBlcyBgezB9JyBhbmQgYHsxfScgaGF2ZSB0byBtYXRjaCIsCisrCQkJCSAgICAgICAg ICAgICAgICAgdHJ1ZV9leHByLlR5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCksIGZhbHNlX2V4 cHIuVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7IAorKwkJCX0KKysKKysJCQllY2xhc3Mg PSBFeHByQ2xhc3MuVmFsdWU7CisrCQkJdHlwZSA9IHRydWVfZXhwci5UeXBlOworKwkJCXJldHVy biB0aGlzOworKwkJfQorKworIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW1pdCAoRW1pdENvbnRl eHQgZWMpCisgCQl7CisgCQkJTGFiZWwgZmFsc2VfdGFyZ2V0ID0gZWMuRGVmaW5lTGFiZWwgKCk7 CitAQCAtNjc3NCw3ICs2ODE0LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCQkJIkNh bm5vdCB1c2UgZml4ZWQgdmFyaWFibGUgYHswfScgaW5zaWRlIGFuIGFub255bW91cyBtZXRob2Qs IGxhbWJkYSBleHByZXNzaW9uIG9yIHF1ZXJ5IGV4cHJlc3Npb24iLAorIAkJCQkJCUdldFNpZ25h dHVyZUZvckVycm9yICgpKTsKKyAJCQkJfSBlbHNlIGlmIChsb2NhbF9pbmZvLklzQnlSZWYgfHwg bG9jYWxfaW5mby5UeXBlLklzQnlSZWZMaWtlKSB7CistCQkJCQlpZiAoZWMuQ3VycmVudEFub255 bW91c01ldGhvZCBpcyBTdGF0ZU1hY2hpbmVJbml0aWFsaXplcikgeworKwkJCQkJaWYgKGxvY2Fs X2luZm8uVHlwZS5Jc1NwZWNpYWxSdW50aW1lVHlwZSB8fCBlYy5DdXJyZW50QW5vbnltb3VzTWV0 aG9kIGlzIFN0YXRlTWFjaGluZUluaXRpYWxpemVyKSB7CisgCQkJCQkJLy8gSXQncyByZXBvcnRl ZCBsYXRlciBhcyA0MDEyLzQwMTMKKyAJCQkJCX0gZWxzZSB7CisgCQkJCQkJZWMuUmVwb3J0LkVy cm9yICg4MTc1LCBsb2MsCitAQCAtMTE4NzcsMTIgKzExOTE3LDE3IEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycAorIAkJCWlmICghVHlwZU1hbmFnZXIuVmVyaWZ5VW5tYW5hZ2VkIChlYy5Nb2R1bGUs IG90eXBlLCBsb2MpKQorIAkJCQlyZXR1cm4gbnVsbDsKKyAKKy0JCQl0eXBlID0gUG9pbnRlckNv bnRhaW5lci5NYWtlVHlwZSAoZWMuTW9kdWxlLCBvdHlwZSk7CisrCQkJUmVzb2x2ZUV4cHJlc3Np b25UeXBlIChlYywgb3R5cGUpOworIAkJCWVjbGFzcyA9IEV4cHJDbGFzcy5WYWx1ZTsKKyAKKyAJ CQlyZXR1cm4gdGhpczsKKyAJCX0KKyAKKysJCXByb3RlY3RlZCB2aXJ0dWFsIHZvaWQgUmVzb2x2 ZUV4cHJlc3Npb25UeXBlIChSZXNvbHZlQ29udGV4dCByYywgVHlwZVNwZWMgZWxlbWVudFR5cGUp CisrCQl7CisrCQkJdHlwZSA9IFBvaW50ZXJDb250YWluZXIuTWFrZVR5cGUgKHJjLk1vZHVsZSwg ZWxlbWVudFR5cGUpOworKwkJfQorKworIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW1pdCAoRW1p dENvbnRleHQgZWMpCisgCQl7CisgCQkJaW50IHNpemUgPSBCdWlsdGluVHlwZVNwZWMuR2V0U2l6 ZSAob3R5cGUpOworQEAgLTExOTMxLDE0ICsxMTk3NiwzNiBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAKKyAJCXB1YmxpYyBib29sIFJlc29sdmVTcGFuQ29udmVyc2lvbiAoUmVzb2x2ZUNvbnRleHQg cmMsIFR5cGVTcGVjIHNwYW5UeXBlKQorIAkJeworIAkJCWN0b3IgPSBNZW1iZXJDYWNoZS5GaW5k TWVtYmVyIChzcGFuVHlwZSwgTWVtYmVyRmlsdGVyLkNvbnN0cnVjdG9yIChQYXJhbWV0ZXJzQ29t cGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoUG9pbnRlckNvbnRhaW5lci5NYWtlVHlwZSAocmMu TW9kdWxlLCByYy5Nb2R1bGUuQ29tcGlsZXIuQnVpbHRpblR5cGVzLlZvaWQpLCByYy5Nb2R1bGUu Q29tcGlsZXIuQnVpbHRpblR5cGVzLkludCkpLCBCaW5kaW5nUmVzdHJpY3Rpb24uRGVjbGFyZWRP bmx5KSBhcyBNZXRob2RTcGVjOworLQkJCWlmIChjdG9yID09IG51bGwpCisrCQkJaWYgKGN0b3Ig PT0gbnVsbCkgeworKwkJCQl0aGlzLnR5cGUgPSBJbnRlcm5hbFR5cGUuRXJyb3JUeXBlOworIAkJ CQlyZXR1cm4gZmFsc2U7CisrCQkJfQorIAkJCQorIAkJCXRoaXMudHlwZSA9IHNwYW5UeXBlOwor IAkJCXJldHVybiB0cnVlOworIAkJfQorIAl9CisgCisrCWNsYXNzIFNwYW5TdGFja0FsbG9jIDog U3RhY2tBbGxvYworKwl7CisrCQlwdWJsaWMgU3BhblN0YWNrQWxsb2MgKEV4cHJlc3Npb24gdHlw ZSwgRXhwcmVzc2lvbiBjb3VudCwgTG9jYXRpb24gbCkKKysJCQk6IGJhc2UgKHR5cGUsIGNvdW50 LCBsKQorKwkJeworKwkJfQorKworKwkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUmVzb2x2ZUV4 cHJlc3Npb25UeXBlIChSZXNvbHZlQ29udGV4dCByYywgVHlwZVNwZWMgZWxlbWVudFR5cGUpCisr CQl7CisrCQkJdmFyIHNwYW4gPSByYy5Nb2R1bGUuUHJlZGVmaW5lZFR5cGVzLlNwYW5HZW5lcmlj LlJlc29sdmUgKCk7CisrCQkJaWYgKHNwYW4gPT0gbnVsbCkgeworKwkJCQl0eXBlID0gSW50ZXJu YWxUeXBlLkVycm9yVHlwZTsKKysJCQkJcmV0dXJuOworKwkJCX0KKysKKysJCQl0eXBlID0gc3Bh bi5NYWtlR2VuZXJpY1R5cGUgKHJjLCBuZXcgW10geyBlbGVtZW50VHlwZSB9KTsKKysJCQlSZXNv bHZlU3BhbkNvbnZlcnNpb24gKHJjLCB0eXBlKTsKKysJCX0KKysJfQorKworIAkvLworIAkvLyBB biBvYmplY3QgaW5pdGlhbGl6ZXIgZXhwcmVzc2lvbgorIAkvLworQEAgLTEzMDg1LDYgKzEzMTUy LDkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJaWYgKGV4cHIgaXMgSUFzc2lnbk1ldGhv ZCkKKyAJCQkJcmV0dXJuIHRydWU7CisgCisrCQkJaWYgKGV4cHIgaXMgQ29uZGl0aW9uYWwpCisr CQkJCXJldHVybiB0cnVlOworKworIAkJCXZhciBpbnZvY2F0aW9uID0gZXhwciBhcyBJbnZvY2F0 aW9uOworIAkJCWlmIChpbnZvY2F0aW9uPy5UeXBlLktpbmQgPT0gTWVtYmVyS2luZC5CeVJlZikK KyAJCQkJcmV0dXJuIHRydWU7CitAQCAtMTMyMzIsNiArMTMzMDIsMTAgQEAgbmFtZXNwYWNlIE1v bm8uQ1NoYXJwCisgCQkJdGhpcy5sb2MgPSBsb2M7CisgCQl9CisgCisrCQlwcm90ZWN0ZWQgb3Zl cnJpZGUgdm9pZCBDbG9uZVRvIChDbG9uZUNvbnRleHQgY2xvbmVjdHgsIEV4cHJlc3Npb24gdCkK KysJCXsKKysJCX0KKysKKyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0ZUV4cHJl c3Npb25UcmVlIChSZXNvbHZlQ29udGV4dCBlYykKKyAJCXsKKyAJCQl0aHJvdyBuZXcgTm90SW1w bGVtZW50ZWRFeGNlcHRpb24gKCk7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9maWVsZC5jcyBiL21j cy9tY3MvZmllbGQuY3MKK2luZGV4IDg2YmIwMjhkZWZjLi44YzY2NzMyODE0MyAxMDA2NDQKKy0t LSBhL21jcy9tY3MvZmllbGQuY3MKKysrKyBiL21jcy9tY3MvZmllbGQuY3MKK0BAIC01NDIsNyAr NTQyLDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCX0KKyAJCQkpOworIAorLQkJCWZp eGVkX2J1ZmZlcl90eXBlLlNldEN1c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rv ci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5ICgpKTsKKysJCQlmaXhlZF9idWZmZXJf dHlwZS5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUlu Zm8gKCksIGVuY29kZXIuVG9BcnJheSAob3V0IF8pKTsKKyAjZW5kaWYKKyAJCQkvLworIAkJCS8v IERvbid0IGVtaXQgRml4ZWRCdWZmZXJBdHRyaWJ1dGUgYXR0cmlidXRlIGZvciBwcml2YXRlIHR5 cGVzCitAQCAtNTU5LDcgKzU1OSw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWVuY29k ZXIuRW5jb2RlIChidWZmZXJfc2l6ZSk7CisgCQkJZW5jb2Rlci5FbmNvZGVFbXB0eU5hbWVkQXJn dW1lbnRzICgpOworIAorLQkJCUZpZWxkQnVpbGRlci5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25z dHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAoKSk7Cisr CQkJRmllbGRCdWlsZGVyLlNldEN1c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rv ci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5IChvdXQgdmFyIHJlZmVyZW5jZXMpKTsK KysJCQlNb2R1bGUuQWRkQXNzZW1ibHlSZWZlcmVuY2VzIChyZWZlcmVuY2VzKTsKKyAJCX0KKyAJ fQorIAorZGlmZiAtLWdpdCBhL21jcy9tY3MvZ2VuZXJpYy5jcyBiL21jcy9tY3MvZ2VuZXJpYy5j cworaW5kZXggZWMyOTY1ZGY2M2IuLjBjNzAzMmIyMDg4IDEwMDY0NAorLS0tIGEvbWNzL21jcy9n ZW5lcmljLmNzCisrKysgYi9tY3MvbWNzL2dlbmVyaWMuY3MKK0BAIC0zMzgxLDcgKzMzODEsNyBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJY29udGludWU7CisgCisgCQkJCXZhciBi b3VuZCA9IGNhbmRpZGF0ZXMgW2NpXTsKKy0JCQkJaWYgKGJvdW5kLlR5cGUgPT0gYmVzdF9jYW5k aWRhdGUpCisrCQkJCWlmIChUeXBlU3BlY0NvbXBhcmVyLklzRXF1YWwgKGJvdW5kLlR5cGUsIGJl c3RfY2FuZGlkYXRlKSkKKyAJCQkJCWNvbnRpbnVlOworIAorIAkJCQlpbnQgY2lpID0gMDsKK2Rp ZmYgLS1naXQgYS9tY3MvbWNzL21vZGlmaWVycy5jcyBiL21jcy9tY3MvbW9kaWZpZXJzLmNzCitp bmRleCA5MjZhYjVkMTg0OC4uMjFkZDUyYjNiMTQgMTAwNjQ0CistLS0gYS9tY3MvbWNzL21vZGlm aWVycy5jcworKysrIGIvbWNzL21jcy9tb2RpZmllcnMuY3MKK0BAIC03NCw2ICs3NCw4IEBAIG5h bWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQlyZXR1cm4gImludGVybmFsIjsKKyAJCQljYXNlIE1v ZGlmaWVycy5QUklWQVRFOgorIAkJCQlyZXR1cm4gInByaXZhdGUiOworKwkJCWNhc2UgTW9kaWZp ZXJzLlBSSVZBVEUgfCBNb2RpZmllcnMuUFJPVEVDVEVEOgorKwkJCQlyZXR1cm4gInByaXZhdGUg cHJvdGVjdGVkIjsKKyAJCQlkZWZhdWx0OgorIAkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRF eGNlcHRpb24gKG1vZC5Ub1N0cmluZyAoKSk7CisgCQkJfQorQEAgLTEyOSwxMiArMTMxLDE2IEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWlmICgobW9kQiAmIE1vZGlmaWVycy5QVUJMSUMp ICE9IDApIHsKKyAJCQkJZmxhZ3MgPSBNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJzLklO VEVSTkFMIHwgTW9kaWZpZXJzLlBSSVZBVEU7CisgCQkJfSBlbHNlIGlmICgobW9kQiAmIE1vZGlm aWVycy5QUk9URUNURUQpICE9IDApIHsKKy0JCQkJaWYgKChtb2RCICYgTW9kaWZpZXJzLklOVEVS TkFMKSAhPSAwKQorLQkJCQkJZmxhZ3MgPSBNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJz LklOVEVSTkFMOworLQorLQkJCQlmbGFncyB8PSBNb2RpZmllcnMuUFJJVkFURTsKKy0JCQl9IGVs c2UgaWYgKChtb2RCICYgTW9kaWZpZXJzLklOVEVSTkFMKSAhPSAwKQorKwkJCQlpZiAoKG1vZEIg JiBNb2RpZmllcnMuSU5URVJOQUwpICE9IDApIHsKKysJCQkJCWZsYWdzID0gTW9kaWZpZXJzLlBS T1RFQ1RFRCB8IE1vZGlmaWVycy5JTlRFUk5BTCB8IE1vZGlmaWVycy5QUklWQVRFOworKwkJCQl9 IGVsc2UgeworKwkJCQkJbW9kQSAmPSB+TW9kaWZpZXJzLlBST1RFQ1RFRDsKKysJCQkJCWZsYWdz ID0gTW9kaWZpZXJzLlBSSVZBVEU7CisrCQkJCX0KKysJCQl9IGVsc2UgaWYgKChtb2RCICYgTW9k aWZpZXJzLklOVEVSTkFMKSAhPSAwKSB7CisrCQkJCW1vZEEgJj0gfk1vZGlmaWVycy5QUk9URUNU RUQ7CisgCQkJCWZsYWdzID0gTW9kaWZpZXJzLlBSSVZBVEU7CisrCQkJfQorIAorIAkJCXJldHVy biBtb2RCICE9IG1vZEEgJiYgKG1vZEEgJiAofmZsYWdzKSkgPT0gMDsKKyAJCX0KK0BAIC0xNTEs NiArMTU3LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJfSBlbHNlIHsKKyAJCQkJaWYg KChtb2RfZmxhZ3MgJiBNb2RpZmllcnMuUFVCTElDKSAhPSAwKQorIAkJCQkJdCA9IFR5cGVBdHRy aWJ1dGVzLk5lc3RlZFB1YmxpYzsKKysJCQkJZWxzZSBpZiAoKG1vZF9mbGFncyAmIChNb2RpZmll cnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJzLlBSSVZBVEUpKSA9PSAoTW9kaWZpZXJzLlBST1RFQ1RF RCB8IE1vZGlmaWVycy5QUklWQVRFKSkKKysJCQkJCXQgPSBUeXBlQXR0cmlidXRlcy5OZXN0ZWRG YW1BTkRBc3NlbTsKKyAJCQkJZWxzZSBpZiAoKG1vZF9mbGFncyAmIE1vZGlmaWVycy5QUklWQVRF KSAhPSAwKQorIAkJCQkJdCA9IFR5cGVBdHRyaWJ1dGVzLk5lc3RlZFByaXZhdGU7CisgCQkJCWVs c2UgaWYgKChtb2RfZmxhZ3MgJiAoTW9kaWZpZXJzLlBST1RFQ1RFRCB8IE1vZGlmaWVycy5JTlRF Uk5BTCkpID09IChNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJzLklOVEVSTkFMKSkKK0BA IC0xNzMsMTggKzE4MSwyNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCXsKKyAJCQlGaWVs ZEF0dHJpYnV0ZXMgZmEgPSAwOworIAorLQkJCWlmICgobW9kX2ZsYWdzICYgTW9kaWZpZXJzLlBV QkxJQykgIT0gMCkKKysJCQlzd2l0Y2ggKG1vZF9mbGFncyAmIE1vZGlmaWVycy5BY2Nlc3NpYmls aXR5TWFzaykgeworKwkJCWNhc2UgTW9kaWZpZXJzLlBVQkxJQzoKKyAJCQkJZmEgfD0gRmllbGRB dHRyaWJ1dGVzLlB1YmxpYzsKKy0JCQlpZiAoKG1vZF9mbGFncyAmIE1vZGlmaWVycy5QUklWQVRF KSAhPSAwKQorKwkJCQlicmVhazsKKysJCQljYXNlIE1vZGlmaWVycy5QUklWQVRFOgorIAkJCQlm YSB8PSBGaWVsZEF0dHJpYnV0ZXMuUHJpdmF0ZTsKKy0JCQlpZiAoKG1vZF9mbGFncyAmIE1vZGlm aWVycy5QUk9URUNURUQpICE9IDApIHsKKy0JCQkJaWYgKChtb2RfZmxhZ3MgJiBNb2RpZmllcnMu SU5URVJOQUwpICE9IDApCistCQkJCQlmYSB8PSBGaWVsZEF0dHJpYnV0ZXMuRmFtT1JBc3NlbTsK Ky0JCQkJZWxzZSAKKy0JCQkJCWZhIHw9IEZpZWxkQXR0cmlidXRlcy5GYW1pbHk7CistCQkJfSBl bHNlIHsKKy0JCQkJaWYgKChtb2RfZmxhZ3MgJiBNb2RpZmllcnMuSU5URVJOQUwpICE9IDApCist CQkJCQlmYSB8PSBGaWVsZEF0dHJpYnV0ZXMuQXNzZW1ibHk7CisrCQkJCWJyZWFrOworKwkJCWNh c2UgTW9kaWZpZXJzLlBST1RFQ1RFRCB8IE1vZGlmaWVycy5JTlRFUk5BTDoKKysJCQkJZmEgfD0g RmllbGRBdHRyaWJ1dGVzLkZhbU9SQXNzZW07CisrCQkJCWJyZWFrOworKwkJCWNhc2UgTW9kaWZp ZXJzLlBST1RFQ1RFRDoKKysJCQkJZmEgfD0gRmllbGRBdHRyaWJ1dGVzLkZhbWlseTsKKysJCQkJ YnJlYWs7CisrCQkJY2FzZSBNb2RpZmllcnMuSU5URVJOQUw6CisrCQkJCWZhIHw9IEZpZWxkQXR0 cmlidXRlcy5Bc3NlbWJseTsKKysJCQkJYnJlYWs7CisrCQkJY2FzZSBNb2RpZmllcnMuUFJJVkFU RSB8IE1vZGlmaWVycy5QUk9URUNURUQ6CisrCQkJCWZhIHw9IEZpZWxkQXR0cmlidXRlcy5GYW1B TkRBc3NlbTsKKysJCQkJYnJlYWs7CisrCQkJZGVmYXVsdDoKKysJCQkJdGhyb3cgbmV3IE5vdElt cGxlbWVudGVkRXhjZXB0aW9uIChtb2RfZmxhZ3MuVG9TdHJpbmcgKCkpOworIAkJCX0KKyAKKyAJ CQlpZiAoKG1vZF9mbGFncyAmIE1vZGlmaWVycy5TVEFUSUMpICE9IDApCitAQCAtMjE1LDYgKzIz Miw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWNhc2UgTW9kaWZpZXJzLklOVEVSTkFM OgorIAkJCQltYSB8PSBNZXRob2RBdHRyaWJ1dGVzLkFzc2VtYmx5OworIAkJCQlicmVhazsKKysJ CQljYXNlIE1vZGlmaWVycy5QUklWQVRFIHwgTW9kaWZpZXJzLlBST1RFQ1RFRDoKKysJCQkJbWEg fD0gTWV0aG9kQXR0cmlidXRlcy5GYW1BTkRBc3NlbTsKKysJCQkJYnJlYWs7CisgCQkJZGVmYXVs dDoKKyAJCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uIChtb2RfZmxhZ3MuVG9T dHJpbmcgKCkpOworIAkJCX0KK2RpZmYgLS1naXQgYS9tY3MvbWNzL21vZHVsZS5jcyBiL21jcy9t Y3MvbW9kdWxlLmNzCitpbmRleCAyMjkzZDgyNWIzNi4uNDY4MDQzM2JiMDEgMTAwNjQ0CistLS0g YS9tY3MvbWNzL21vZHVsZS5jcworKysrIGIvbWNzL21jcy9tb2R1bGUuY3MKK0BAIC00ODAsNiAr NDgwLDE4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWF0dHJpYnV0ZXMuQWRkQXR0cmli dXRlIChhdHRyKTsKKyAJCX0KKyAKKysJCXB1YmxpYyB2b2lkIEFkZEFzc2VtYmx5UmVmZXJlbmNl cyAoTGlzdDxBc3NlbWJseT4gbmFtZXMpCisrCQl7CisrCQkJaWYgKG5hbWVzID09IG51bGwpCisr CQkJCXJldHVybjsKKysKKysjaWYgU1RBVElDCisrCQkJZm9yZWFjaCAodmFyIG5hbWUgaW4gbmFt ZXMpIHsKKysJCQkJQnVpbGRlci5fX0dldEFzc2VtYmx5VG9rZW4gKG5hbWUpOworKwkJCX0KKysj ZW5kaWYKKysJCX0KKysKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEFkZFR5cGVDb250YWluZXIg KFR5cGVDb250YWluZXIgdGMpCisgCQl7CisgCQkJQWRkVHlwZUNvbnRhaW5lck1lbWJlciAodGMp OworZGlmZiAtLWdpdCBhL21jcy9tY3MvcGFyYW1ldGVyLmNzIGIvbWNzL21jcy9wYXJhbWV0ZXIu Y3MKK2luZGV4IGNjMTBlZWUxNjJiLi45NTg1MTQ3ODAxMCAxMDA2NDQKKy0tLSBhL21jcy9tY3Mv cGFyYW1ldGVyLmNzCisrKysgYi9tY3MvbWNzL3BhcmFtZXRlci5jcworQEAgLTIyMSwxMiArMjIx LDEzIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJUkVGID0gMSA8PCAxLAorIAkJCU9V VCA9IDEgPDwgMiwKKyAJCQlUaGlzID0gMSA8PCAzLAorLQkJCUNhbGxlck1lbWJlck5hbWUgPSAx IDw8IDQsCistCQkJQ2FsbGVyTGluZU51bWJlciA9IDEgPDwgNSwKKy0JCQlDYWxsZXJGaWxlUGF0 aCA9IDEgPDwgNiwKKysJCQlSZWFkT25seSA9IDEgPDwgNCwKKysJCQlDYWxsZXJNZW1iZXJOYW1l ID0gMSA8PCA1LAorKwkJCUNhbGxlckxpbmVOdW1iZXIgPSAxIDw8IDYsCisrCQkJQ2FsbGVyRmls ZVBhdGggPSAxIDw8IDcsCisgCisgCQkJUmVmT3V0TWFzayA9IFJFRiB8IE9VVCwKKy0JCQlNb2Rp Zmllck1hc2sgPSBQQVJBTVMgfCBSRUYgfCBPVVQgfCBUaGlzLAorKwkJCU1vZGlmaWVyTWFzayA9 IFBBUkFNUyB8IFJFRiB8IE9VVCB8IFRoaXMgfCBSZWFkT25seSwKKyAJCQlDYWxsZXJNYXNrID0g Q2FsbGVyTWVtYmVyTmFtZSB8IENhbGxlckxpbmVOdW1iZXIgfCBDYWxsZXJGaWxlUGF0aAorIAkJ fQorIAorQEAgLTE0NzQsOSArMTQ3NSw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJ CQl9CisgCQkJCX0KKyAKKy0JCQkJaWYgKCFleHByLklzTnVsbCAmJiBUeXBlU3BlYy5Jc1JlZmVy ZW5jZVR5cGUgKHBhcmFtZXRlcl90eXBlKSAmJiBwYXJhbWV0ZXJfdHlwZS5CdWlsdGluVHlwZSAh PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5TdHJpbmcpIHsKKysJCQkJaWYgKCFyZXMuSXNOdWxsICYm IFR5cGVTcGVjLklzUmVmZXJlbmNlVHlwZSAocGFyYW1ldGVyX3R5cGUpICYmIHBhcmFtZXRlcl90 eXBlLkJ1aWx0aW5UeXBlICE9IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLlN0cmluZykgeworIAkJCQkJ cmMuUmVwb3J0LkVycm9yICgxNzYzLCBMb2NhdGlvbiwKKy0JCQkJCQkiT3B0aW9uYWwgcGFyYW1l dGVyIGB7MH0nIG9mIHR5cGUgYHsxfScgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgd2l0aCBgbnVs bCciLAorKwkJCQkJCSJPcHRpb25hbCBwYXJhbWV0ZXIgYHswfScgb2YgdHlwZSBgezF9JyBjYW4g b25seSBiZSBpbml0aWFsaXplZCB3aXRoIGRlZmF1bHQgdmFsdWUiLAorIAkJCQkJCXAuTmFtZSwg cGFyYW1ldGVyX3R5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworIAorIAkJCQkJcmV0dXJu OworZGlmZiAtLWdpdCBhL21jcy9tY3MvcmVwb3J0LmNzIGIvbWNzL21jcy9yZXBvcnQuY3MKK2lu ZGV4IGNjM2Q4MmIyNmUwLi41ZDY0YzhlNzY2ZSAxMDA2NDQKKy0tLSBhL21jcy9tY3MvcmVwb3J0 LmNzCisrKysgYi9tY3MvbWNzL3JlcG9ydC5jcworQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwIHsKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50W10gQWxsV2Fybmlu Z3MgPSBuZXcgaW50W10geworIAkJCTI4LCA2NywgNzgsCisgCQkJMTA1LCAxMDgsIDEwOSwgMTE0 LCAxNjIsIDE2NCwgMTY4LCAxNjksIDE4MywgMTg0LCAxOTcsCistCQkJMjE5LCAyNTEsIDI1Miwg MjUzLCAyNzgsIDI4MiwKKysJCQkyMTksIDI1MSwgMjUyLCAyNTMsIDI3OCwgMjgwLCAyODIsCisg CQkJNDAyLCA0MTQsIDQxOSwgNDIwLCA0MjksIDQzNiwgNDM3LCA0NDAsIDQ1OCwgNDY0LCA0NjUs IDQ2NywgNDY5LCA0NzIsIDQ3MywKKyAJCQk2MTIsIDYxOCwgNjI2LCA2MjgsIDY0MiwgNjQ5LCA2 NTIsIDY1NywgNjU4LCA2NTksIDY2MCwgNjYxLCA2NjUsIDY3MiwgNjc1LCA2OTMsCisgCQkJNzI4 LAorQEAgLTEwNyw2ICsxMDcsMTUgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQljYXNl IExhbmd1YWdlVmVyc2lvbi5WXzc6CisgCQkJCXZlcnNpb24gPSAiNy4wIjsKKyAJCQkJYnJlYWs7 CisrCQkJY2FzZSBMYW5ndWFnZVZlcnNpb24uVl83XzE6CisrCQkJCXZlcnNpb24gPSAiNy4xIjsK KysJCQkJYnJlYWs7CisrCQkJY2FzZSBMYW5ndWFnZVZlcnNpb24uVl83XzI6CisrCQkJCXZlcnNp b24gPSAiNy4yIjsKKysJCQkJYnJlYWs7CisrCQkJY2FzZSBMYW5ndWFnZVZlcnNpb24uVl83XzM6 CisrCQkJCXZlcnNpb24gPSAiNy4zIjsKKysJCQkJYnJlYWs7CisgCQkJZGVmYXVsdDoKKyAJCQkJ dGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGNlcHRpb24gKCJJbnZhbGlkIGZlYXR1cmUgdmVyc2lv biIsIGNvbXBpbGVyLlNldHRpbmdzLlZlcnNpb24pOworIAkJCX0KK2RpZmYgLS1naXQgYS9tY3Mv bWNzL3NldHRpbmdzLmNzIGIvbWNzL21jcy9zZXR0aW5ncy5jcworaW5kZXggMzc2NjQxODdjNzEu Ljk3NmM5YjY4MTI4IDEwMDY0NAorLS0tIGEvbWNzL21jcy9zZXR0aW5ncy5jcworKysrIGIvbWNz L21jcy9zZXR0aW5ncy5jcworQEAgLTMyLDEwICszMiwxMSBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAgeworIAkJVl83ID0gNywKKyAJCVZfN18xID0gNzEsCisgCQlWXzdfMiA9IDcyLAorKwkJVl83 XzMgPSA3MywKKyAJCUV4cGVyaW1lbnRhbCA9IDEwMCwKKyAKKyAJCURlZmF1bHQgPSBWXzcsCist CQlMYXRlc3QgPSBWXzdfMgorKwkJTGF0ZXN0ID0gVl83XzMKKyAJfQorIAorIAlwdWJsaWMgZW51 bSBSdW50aW1lVmVyc2lvbgorQEAgLTEyNzAsNiArMTI3MSw3IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycCB7CisgCQkJY2FzZSAiL2hpZ2hlbnRyb3B5dmErIjoKKyAJCQljYXNlICIvaGlnaGVudHJv cHl2YS0iOgorIAkJCWNhc2UgIi9saW5rIjoKKysJCQljYXNlICIvc291cmNlbGluayI6CisgCQkJ Y2FzZSAiL21vZHVsZWFzc2VtYmx5bmFtZSI6CisgCQkJY2FzZSAiL25vd2luMzJtYW5pZmVzdCI6 CisgCQkJY2FzZSAiL3BkYiI6CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9zdGF0ZW1lbnQuY3MgYi9t Y3MvbWNzL3N0YXRlbWVudC5jcworaW5kZXggOWM1MTEyODU0OGYuLmM4Yjc3YzFhZGMxIDEwMDY0 NAorLS0tIGEvbWNzL21jcy9zdGF0ZW1lbnQuY3MKKysrKyBiL21jcy9tY3Mvc3RhdGVtZW50LmNz CitAQCAtOTI4LDggKzkyOCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQlwdWJsaWMg b3ZlcnJpZGUgUmVhY2hhYmlsaXR5IE1hcmtSZWFjaGFibGUgKFJlYWNoYWJpbGl0eSByYykKKyAJ CXsKKyAJCQliYXNlLk1hcmtSZWFjaGFibGUgKHJjKTsKKy0JCQlleHByLk1hcmtSZWFjaGFibGUg KHJjKTsKKy0JCQlyZXR1cm4gcmM7CisrCQkJcmV0dXJuIGV4cHIuTWFya1JlYWNoYWJsZSAocmMp OworIAkJfQorIAorIAkJcHVibGljIG92ZXJyaWRlIGJvb2wgUmVzb2x2ZSAoQmxvY2tDb250ZXh0 IGVjKQorQEAgLTI0MTksNiArMjQxOCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJ SXNMb2NrZWQgPSAxIDw8IDgsCisgCQkJU3ltYm9sRmlsZUhpZGRlbiA9IDEgPDwgOSwKKyAJCQlC eVJlZiA9IDEgPDwgMTAsCisrCQkJUG9pbnRlckJ5UmVmID0gMSA8PCAxMSwKKyAKKyAJCQlSZWFk b25seU1hc2sgPSAxIDw8IDIwCisgCQl9CitAQCAtMjYwOSwyMCArMjYwOSwyMiBAQCBuYW1lc3Bh Y2UgTW9uby5DU2hhcnAgeworIAorIAkJCWlmIChJc0J5UmVmKSB7CisgCQkJCWJ1aWxkZXIgPSBl Yy5EZWNsYXJlTG9jYWwgKFJlZmVyZW5jZUNvbnRhaW5lci5NYWtlVHlwZSAoZWMuTW9kdWxlLCBU eXBlKSwgSXNGaXhlZCk7CisrCQkJfSBlbHNlIGlmICgoZmxhZ3MgJiBGbGFncy5Qb2ludGVyQnlS ZWYpICE9IDApIHsKKysJCQkJYnVpbGRlciA9IGVjLkRlY2xhcmVMb2NhbCAoUmVmZXJlbmNlQ29u dGFpbmVyLk1ha2VUeXBlIChlYy5Nb2R1bGUsICgoUG9pbnRlckNvbnRhaW5lcikgVHlwZSkuRWxl bWVudCksIElzRml4ZWQpOworIAkJCX0gZWxzZSB7CisgCQkJCS8vCisgCQkJCS8vIEFsbCBmaXhl ZCB2YXJpYWJsZWQgYXJlIHBpbm5lZCwgYSBzbG90IGhhcyB0byBiZSBhbG9jYXRlZAorIAkJCQkv LworLQkJCQlidWlsZGVyID0gZWMuRGVjbGFyZUxvY2FsKFR5cGUsIElzRml4ZWQpOworKwkJCQli dWlsZGVyID0gZWMuRGVjbGFyZUxvY2FsIChUeXBlLCBJc0ZpeGVkKTsKKyAJCQl9CisgCisgCQkJ aWYgKChmbGFncyAmIEZsYWdzLlN5bWJvbEZpbGVIaWRkZW4pID09IDApCisgCQkJCWVjLkRlZmlu ZUxvY2FsVmFyaWFibGUgKG5hbWUsIGJ1aWxkZXIpOworIAkJfQorIAorLQkJcHVibGljIHN0YXRp YyBMb2NhbFZhcmlhYmxlIENyZWF0ZUNvbXBpbGVyR2VuZXJhdGVkIChUeXBlU3BlYyB0eXBlLCBC bG9jayBibG9jaywgTG9jYXRpb24gbG9jLCBib29sIHdyaXRlVG9TeW1ib2xGaWxlID0gZmFsc2Up CisrCQlwdWJsaWMgc3RhdGljIExvY2FsVmFyaWFibGUgQ3JlYXRlQ29tcGlsZXJHZW5lcmF0ZWQg KFR5cGVTcGVjIHR5cGUsIEJsb2NrIGJsb2NrLCBMb2NhdGlvbiBsb2MsIGJvb2wgd3JpdGVUb1N5 bWJvbEZpbGUgPSBmYWxzZSwgRmxhZ3MgYWRkaXRpb25hbEZsYWdzID0gMCkKKyAJCXsKKy0JCQlM b2NhbFZhcmlhYmxlIGxpID0gbmV3IExvY2FsVmFyaWFibGUgKGJsb2NrLCBHZXRDb21waWxlckdl bmVyYXRlZE5hbWUgKGJsb2NrKSwgRmxhZ3MuQ29tcGlsZXJHZW5lcmF0ZWQgfCBGbGFncy5Vc2Vk LCBsb2MpOworKwkJCUxvY2FsVmFyaWFibGUgbGkgPSBuZXcgTG9jYWxWYXJpYWJsZSAoYmxvY2ss IEdldENvbXBpbGVyR2VuZXJhdGVkTmFtZSAoYmxvY2spLCBGbGFncy5Db21waWxlckdlbmVyYXRl ZCB8IEZsYWdzLlVzZWQgfCBhZGRpdGlvbmFsRmxhZ3MsIGxvYyk7CisgCQkJaWYgKCF3cml0ZVRv U3ltYm9sRmlsZSkKKyAJCQkJbGkuZmxhZ3MgfD0gRmxhZ3MuU3ltYm9sRmlsZUhpZGRlbjsKKyAJ CQkKK0BAIC0yNzI1LDYgKzI3MjcsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQlm bGFncyB8PSBGbGFncy5Vc2VkOworIAkJfQorIAorKwkJcHVibGljIHZvaWQgU2V0SXNQb2ludGVy QnlSZWYgKCkKKysJCXsKKysJCQlmbGFncyB8PSBGbGFncy5Qb2ludGVyQnlSZWY7CisrCQl9Cisr CisgCQlwdWJsaWMgdm9pZCBTZXRIYXNBZGRyZXNzVGFrZW4gKCkKKyAJCXsKKyAJCQlmbGFncyB8 PSAoRmxhZ3MuQWRkcmVzc1Rha2VuIHwgRmxhZ3MuVXNlZCk7CitAQCAtNjU2MiwxOCArNjU2OSwy NiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAorIAkJCQkvLyBUT0RPOiBTaG91bGQgdXNl IEJpbmFyeTo6QWRkCisgCQkJCXBpbm5lZF9zdHJpbmcuRW1pdCAoZWMpOworLQkJCQllYy5FbWl0 IChPcENvZGVzLkNvbnZfSSk7CisrCQkJCWVjLkVtaXQgKE9wQ29kZXMuQ29udl9VKTsKKyAKKyAJ CQkJdmFyIG0gPSBlYy5Nb2R1bGUuUHJlZGVmaW5lZE1lbWJlcnMuUnVudGltZUhlbHBlcnNPZmZz ZXRUb1N0cmluZ0RhdGEuUmVzb2x2ZSAobG9jKTsKKyAJCQkJaWYgKG0gPT0gbnVsbCkKKyAJCQkJ CXJldHVybjsKKyAKKysJCQkJdmFyIG51bGxfdmFsdWUgPSBlYy5EZWZpbmVMYWJlbCAoKTsKKysJ CQkJdmkuRW1pdEFzc2lnbiAoZWMpOworKwkJCQl2aS5FbWl0IChlYyk7CisrCQkJCWVjLkVtaXQg KE9wQ29kZXMuQnJmYWxzZV9TLCBudWxsX3ZhbHVlKTsKKysKKysJCQkJdmkuRW1pdCAoZWMpOwor IAkJCQlQcm9wZXJ0eUV4cHIgcGUgPSBuZXcgUHJvcGVydHlFeHByIChtLCBwaW5uZWRfc3RyaW5n LkxvY2F0aW9uKTsKKyAJCQkJLy9wZS5JbnN0YW5jZUV4cHJlc3Npb24gPSBwaW5uZWRfc3RyaW5n OworIAkJCQlwZS5SZXNvbHZlIChuZXcgUmVzb2x2ZUNvbnRleHQgKGVjLk1lbWJlckNvbnRleHQp KS5FbWl0IChlYyk7CisgCisgCQkJCWVjLkVtaXQgKE9wQ29kZXMuQWRkKTsKKyAJCQkJdmkuRW1p dEFzc2lnbiAoZWMpOworKworKwkJCQllYy5NYXJrTGFiZWwgKG51bGxfdmFsdWUpOworIAkJCX0K KyAKKyAJCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBFbWl0RXhpdCAoRW1pdENvbnRleHQgZWMpCitA QCAtNjY2MCwzMSArNjY3NSw5NCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJcmV0 dXJuIG5ldyBFeHByZXNzaW9uRW1pdHRlciAocmVzLCBsaSk7CisgCQkJCX0KKyAKKy0JCQkJYm9v bCBhbHJlYWR5X2ZpeGVkID0gdHJ1ZTsKKy0KKyAJCQkJLy8KKyAJCQkJLy8gQ2FzZSA0OiAmIG9i amVjdC4KKyAJCQkJLy8KKyAJCQkJVW5hcnkgdSA9IHJlcyBhcyBVbmFyeTsKKyAJCQkJaWYgKHUg IT0gbnVsbCkgeworKwkJCQkJYm9vbCBhbHJlYWR5X2ZpeGVkID0gdHJ1ZTsKKysKKyAJCQkJCWlm ICh1Lk9wZXIgPT0gVW5hcnkuT3BlcmF0b3IuQWRkcmVzc09mKSB7CisgCQkJCQkJSVZhcmlhYmxl UmVmZXJlbmNlIHZyID0gdS5FeHByIGFzIElWYXJpYWJsZVJlZmVyZW5jZTsKKyAJCQkJCQlpZiAo dnIgPT0gbnVsbCB8fCAhdnIuSXNGaXhlZCkgeworIAkJCQkJCQlhbHJlYWR5X2ZpeGVkID0gZmFs c2U7CisgCQkJCQkJfQorIAkJCQkJfQorLQkJCQl9IGVsc2UgaWYgKGluaXRpYWxpemVyIGlzIENh c3QpIHsKKysKKysJCQkJCWlmIChhbHJlYWR5X2ZpeGVkKSB7CisrCQkJCQkJYmMuUmVwb3J0LkVy cm9yICgyMTMsIGxvYywgIllvdSBjYW5ub3QgdXNlIHRoZSBmaXhlZCBzdGF0ZW1lbnQgdG8gdGFr ZSB0aGUgYWRkcmVzcyBvZiBhbiBhbHJlYWR5IGZpeGVkIGV4cHJlc3Npb24iKTsKKysJCQkJCQly ZXR1cm4gbnVsbDsKKysJCQkJCX0KKysKKysJCQkJCXJlcyA9IENvbnZlcnQuSW1wbGljaXRDb252 ZXJzaW9uUmVxdWlyZWQgKGJjLCByZXMsIGxpLlR5cGUsIGxvYyk7CisrCQkJCQlyZXR1cm4gbmV3 IEV4cHJlc3Npb25FbWl0dGVyIChyZXMsIGxpKTsKKysJCQkJfQorKworKwkJCQlpZiAoaW5pdGlh bGl6ZXIgaXMgQ2FzdCkgeworIAkJCQkJYmMuUmVwb3J0LkVycm9yICgyNTQsIGluaXRpYWxpemVy LkxvY2F0aW9uLCAiVGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhIGZpeGVkIHN0YXRlbWVudCBhc3Np Z25tZW50IG1heSBub3QgYmUgYSBjYXN0IGV4cHJlc3Npb24iKTsKKyAJCQkJCXJldHVybiBudWxs OworIAkJCQl9CisgCistCQkJCWlmIChhbHJlYWR5X2ZpeGVkKSB7CistCQkJCQliYy5SZXBvcnQu RXJyb3IgKDIxMywgbG9jLCAiWW91IGNhbm5vdCB1c2UgdGhlIGZpeGVkIHN0YXRlbWVudCB0byB0 YWtlIHRoZSBhZGRyZXNzIG9mIGFuIGFscmVhZHkgZml4ZWQgZXhwcmVzc2lvbiIpOworKwkJCQkv LworKwkJCQkvLyBDYXNlIDU6IGJ5LXJlZiBHZXRQaW5uYWJsZVJlZmVyZW5jZSBtZXRob2Qgb24g dGhlIHJocyBleHByZXNzaW9uCisrCQkJCS8vCisrCQkJCXZhciBtZXRob2QgPSBHZXRQaW5uYWJs ZVJlZmVyZW5jZSAoYmMsIHJlcyk7CisrCQkJCWlmIChtZXRob2QgPT0gbnVsbCkgeworKwkJCQkJ YmMuUmVwb3J0LkVycm9yICg4Mzg1LCBpbml0aWFsaXplci5Mb2NhdGlvbiwgIlRoZSBnaXZlbiBl eHByZXNzaW9uIGNhbm5vdCBiZSB1c2VkIGluIGEgZml4ZWQgc3RhdGVtZW50Iik7CisrCQkJCQly ZXR1cm4gbnVsbDsKKysJCQkJfQorKworKwkJCQl2YXIgY29tcGlsZXIgPSBiYy5Nb2R1bGUuQ29t cGlsZXI7CisrCQkJCWlmIChjb21waWxlci5TZXR0aW5ncy5WZXJzaW9uIDwgTGFuZ3VhZ2VWZXJz aW9uLlZfN18zKSB7CisrCQkJCQliYy5SZXBvcnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChjb21w aWxlciwgaW5pdGlhbGl6ZXIuTG9jYXRpb24sICJleHRlbnNpYmxlIGZpeGVkIHN0YXRlbWVudCIp OworKwkJCQl9CisrCisrCQkJCW1ldGhvZC5JbnN0YW5jZUV4cHJlc3Npb24gPSByZXM7CisrCQkJ CXJlcyA9IG5ldyBJbnZvY2F0aW9uLlByZWRlZmluZWQgKG1ldGhvZCwgbnVsbCkuUmVzb2x2ZUxW YWx1ZSAoYmMsIEVtcHR5RXhwcmVzc2lvbi5PdXRBY2Nlc3MpOworKwkJCQlpZiAocmVzID09IG51 bGwpCisrCQkJCQlyZXR1cm4gbnVsbDsKKysKKysJCQkJUmVmZXJlbmNlQ29udGFpbmVyIHJUeXBl ID0gKFJlZmVyZW5jZUNvbnRhaW5lciltZXRob2QuQmVzdENhbmRpZGF0ZVJldHVyblR5cGU7Cisr CQkJCVBvaW50ZXJDb250YWluZXIgbFR5cGUgPSBsaS5UeXBlIGFzIFBvaW50ZXJDb250YWluZXI7 CisrCQkJCWlmIChyVHlwZS5FbGVtZW50ICE9IGxUeXBlPy5FbGVtZW50KSB7CisrCQkJCQkvLyBD U0M6IFNob3VsZCBiZSBiZXR0ZXIgZXJyb3IgY29kZQorKwkJCQkJcmVzLkVycm9yX1ZhbHVlQ2Fu bm90QmVDb252ZXJ0ZWQgKGJjLCBsVHlwZSwgZmFsc2UpOworKwkJCQkJcmV0dXJuIG51bGw7Cisg CQkJCX0KKyAKKy0JCQkJcmVzID0gQ29udmVydC5JbXBsaWNpdENvbnZlcnNpb25SZXF1aXJlZCAo YmMsIHJlcywgbGkuVHlwZSwgbG9jKTsKKysJCQkJbGkuU2V0SXNQb2ludGVyQnlSZWYgKCk7Cisg CQkJCXJldHVybiBuZXcgRXhwcmVzc2lvbkVtaXR0ZXIgKHJlcywgbGkpOworIAkJCX0KKysKKysJ CQlNZXRob2RHcm91cEV4cHIgR2V0UGlubmFibGVSZWZlcmVuY2UgKEJsb2NrQ29udGV4dCBiYywg RXhwcmVzc2lvbiBleHByKQorKwkJCXsKKysJCQkJVHlwZVNwZWMgdHlwZSA9IGV4cHIuVHlwZTsK KysJCQkJdmFyIG1leHByID0gRXhwcmVzc2lvbi5NZW1iZXJMb29rdXAgKGJjLCBmYWxzZSwgdHlw ZSwKKysJCQkJCSJHZXRQaW5uYWJsZVJlZmVyZW5jZSIsIDAsIEV4cHJlc3Npb24uTWVtYmVyTG9v a3VwUmVzdHJpY3Rpb25zLkV4YWN0QXJpdHksIGxvYyk7CisrCisrCQkJCWlmIChtZXhwciA9PSBu dWxsKQorKwkJCQkJcmV0dXJuIG51bGw7CisrCisrCQkJCXZhciBtZyA9IG1leHByIGFzIE1ldGhv ZEdyb3VwRXhwcjsKKysJCQkJaWYgKG1nID09IG51bGwpCisrCQkJCQlyZXR1cm4gbnVsbDsKKysK KysJCQkJbWcuSW5zdGFuY2VFeHByZXNzaW9uID0gZXhwcjsKKysKKysJCQkJLy8gVE9ETzogaGFu ZGxlIGV4dGVuc2lvbiBtZXRob2RzCisrCQkJCUFyZ3VtZW50cyBhcmdzID0gbmV3IEFyZ3VtZW50 cyAoMCk7CisrCQkJCW1nID0gbWcuT3ZlcmxvYWRSZXNvbHZlIChiYywgcmVmIGFyZ3MsIG51bGws IE92ZXJsb2FkUmVzb2x2ZXIuUmVzdHJpY3Rpb25zLk5vbmUpOworKworKwkJCQlpZiAobWcgPT0g bnVsbCB8fCBtZy5CZXN0Q2FuZGlkYXRlLklzU3RhdGljIHx8ICFtZy5CZXN0Q2FuZGlkYXRlLklz UHVibGljIHx8IG1nLkJlc3RDYW5kaWRhdGVSZXR1cm5UeXBlLktpbmQgIT0gTWVtYmVyS2luZC5C eVJlZiB8fCAhbWcuQmVzdENhbmRpZGF0ZS5QYXJhbWV0ZXJzLklzRW1wdHkpIHsKKysJCQkJCWlm IChiYy5Nb2R1bGUuQ29tcGlsZXIuU2V0dGluZ3MuVmVyc2lvbiA+IExhbmd1YWdlVmVyc2lvbi5W XzdfMikgeworKwkJCQkJCWJjLlJlcG9ydC5XYXJuaW5nICgyODAsIDIsIGV4cHIuTG9jYXRpb24s ICJgezB9JyBoYXMgdGhlIHdyb25nIHNpZ25hdHVyZSB0byBiZSB1c2VkIGluIGV4dGVuc2libGUg Zml4ZWQgc3RhdGVtZW50IiwgbWcuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworKwkJCQkJfQor KworKwkJCQkJcmV0dXJuIG51bGw7CisrCQkJCX0KKysKKysJCQkJcmV0dXJuIG1nOworKwkJCX0K KyAJCX0KKyAKKyAKK2RpZmYgLS1naXQgYS9tY3MvbWNzL3R1cGxlcy5jcyBiL21jcy9tY3MvdHVw bGVzLmNzCitpbmRleCA5MDFlZmRjOTU0MS4uMGI1Njg1OTYxNWYgMTAwNjQ0CistLS0gYS9tY3Mv bWNzL3R1cGxlcy5jcworKysrIGIvbWNzL21jcy90dXBsZXMuY3MKK0BAIC0yNjcsNiArMjY3LDEx IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCXRoaXMuTG9jYXRpb24gPSBleHByLkxvY2F0 aW9uOworIAkJfQorIAorKwkJcHVibGljIFR1cGxlTGl0ZXJhbEVsZW1lbnQgQ2xvbmUgKENsb25l Q29udGV4dCBjbG9uZWN0eCkKKysJCXsKKysJCQlyZXR1cm4gbmV3IFR1cGxlTGl0ZXJhbEVsZW1l bnQgKE5hbWUsIEV4cHIuQ2xvbmUgKGNsb25lY3R4KSwgTG9jYXRpb24pOworKwkJfQorKworIAkJ cHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorIAkJcHVibGljIEV4cHJl c3Npb24gRXhwciB7IGdldDsgc2V0OyB9CisgCQlwdWJsaWMgTG9jYXRpb24gTG9jYXRpb24geyBn ZXQ7IHByaXZhdGUgc2V0OyB9CitAQCAtMjg4LDYgKzI5MywxNiBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBDbG9uZVRv IChDbG9uZUNvbnRleHQgY2xvbmVjdHgsIEV4cHJlc3Npb24gdCkKKysJCXsKKysJCQl2YXIgY2xv bmUgPSBuZXcgTGlzdDxUdXBsZUxpdGVyYWxFbGVtZW50PiAoZWxlbWVudHMuQ291bnQpOworKwkJ CWZvcmVhY2ggKHZhciB0ZSBpbiBlbGVtZW50cykKKysJCQkJY2xvbmUuQWRkICh0ZS5DbG9uZSAo Y2xvbmVjdHgpKTsKKysKKysJCQlUdXBsZUxpdGVyYWwgdGFyZ2V0ID0gKFR1cGxlTGl0ZXJhbCl0 OworKwkJCXRhcmdldC5lbGVtZW50cyA9IGNsb25lOworKwkJfQorKworIAkJcHVibGljIHN0YXRp YyBib29sIENvbnRhaW5zTm9UeXBlRWxlbWVudCAoVHlwZVNwZWMgdHlwZSkKKyAJCXsKKyAJCQl2 YXIgdGEgPSB0eXBlLlR5cGVBcmd1bWVudHM7CitAQCAtNDMyLDYgKzQ0Nyw3IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAl7CisgCQlFeHByZXNzaW9uIHNvdXJjZTsKKyAJCUxpc3Q8RXhwcmVz c2lvbj4gdGFyZ2V0RXhwcnM7CisrCQlMaXN0PEV4cHJlc3Npb24+IHRlbXBFeHByczsKKyAJCUxp c3Q8QmxvY2tWYXJpYWJsZT4gdmFyaWFibGVzOworIAkJRXhwcmVzc2lvbiBpbnN0YW5jZTsKKyAK K0BAIC00NDAsNiArNDU2LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJdGhpcy5zb3Vy Y2UgPSBzb3VyY2U7CisgCQkJdGhpcy50YXJnZXRFeHBycyA9IHRhcmdldEV4cHJzOworIAkJCXRo aXMubG9jID0gbG9jOworKworKwkJCXRlbXBFeHBycyA9IG5ldyBMaXN0PEV4cHJlc3Npb24+ICgp OworIAkJfQorIAorIAkJcHVibGljIFR1cGxlRGVjb25zdHJ1Y3QgKExpc3Q8QmxvY2tWYXJpYWJs ZT4gdmFyaWFibGVzLCBFeHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24gbG9jKQorQEAgLTQ0Nyw2 ICs0NjUsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQl0aGlzLnNvdXJjZSA9IHNvdXJj ZTsKKyAJCQl0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlczsKKyAJCQl0aGlzLmxvYyA9IGxvYzsK KysKKysJCQl0ZW1wRXhwcnMgPSBuZXcgTGlzdDxFeHByZXNzaW9uPiAoKTsKKyAJCX0KKyAKKyAJ CXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0ZUV4cHJlc3Npb25UcmVlIChSZXNvbHZl Q29udGV4dCBlYykKK0BAIC00OTIsNiArNTEyLDE1IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCQkJaW5zdGFuY2UgPSBleHByX3ZhcmlhYmxlLkNyZWF0ZVJlZmVyZW5jZUV4cHJlc3Npb24g KHJjLCBsb2MpOworIAkJCQl9CisgCisrCQkJCXZhciBlbGVtZW50X3NyY3MgPSBuZXcgTGlzdDxF eHByZXNzaW9uPiAoKTsKKysJCQkJdmFyIHNyY19uYW1lcyA9IG5ldyBMaXN0PHN0cmluZz4gKCk7 CisrCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0X2NvdW50OyArK2kpIHsKKysJCQkJCXZh ciBlbGVtZW50X3NyYyA9IHR1cGxlTGl0ZXJhbCA9PSBudWxsID8gbmV3IE1lbWJlckFjY2VzcyAo aW5zdGFuY2UsIE5hbWVkVHVwbGVTcGVjLkdldEVsZW1lbnRQcm9wZXJ0eU5hbWUgKGkpKSA6IHR1 cGxlTGl0ZXJhbC5FbGVtZW50cyBbaV0uRXhwcjsKKysJCQkJCWVsZW1lbnRfc3Jjcy5BZGQgKGVs ZW1lbnRfc3JjKTsKKysJCQkJCWlmIChlbGVtZW50X3NyYyBpcyBWYXJpYWJsZVJlZmVyZW5jZSkK KysJCQkJCQlzcmNfbmFtZXMuQWRkICgoZWxlbWVudF9zcmMgYXMgVmFyaWFibGVSZWZlcmVuY2Up Py5OYW1lKTsKKysJCQkJfQorKworIAkJCQlmb3IgKGludCBpID0gMDsgaSA8IHRhcmdldF9jb3Vu dDsgKytpKSB7CisgCQkJCQl2YXIgdGxlID0gc3JjX3R5cGUuVHlwZUFyZ3VtZW50cyBbaV07Cisg CitAQCAtNTIyLDggKzU1MSwxNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCQl2YXJp YWJsZS5QcmVwYXJlQXNzaWdubWVudEFuYWx5c2lzICgoQmxvY2tDb250ZXh0KXJjKTsKKyAJCQkJ CX0KKyAKKy0JCQkJCXZhciBlbGVtZW50X3NyYyA9IHR1cGxlTGl0ZXJhbCA9PSBudWxsID8gbmV3 IE1lbWJlckFjY2VzcyAoaW5zdGFuY2UsIE5hbWVkVHVwbGVTcGVjLkdldEVsZW1lbnRQcm9wZXJ0 eU5hbWUgKGkpKSA6IHR1cGxlTGl0ZXJhbC5FbGVtZW50cyBbaV0uRXhwcjsKKy0JCQkJCXRhcmdl dEV4cHJzIFtpXSA9IG5ldyBTaW1wbGVBc3NpZ24gKHRhcmdldEV4cHJzIFtpXSwgZWxlbWVudF9z cmMpLlJlc29sdmUgKHJjKTsKKysJCQkJCXZhciBlbGVtZW50X3RhcmdldCA9ICh0YXJnZXRFeHBy cyBbaV0gYXMgU2ltcGxlTmFtZSk/Lkxvb2t1cE5hbWVFeHByZXNzaW9uIChyYywgTWVtYmVyTG9v a3VwUmVzdHJpY3Rpb25zLk5vbmUpOworKworKwkJCQkJaWYgKGVsZW1lbnRfdGFyZ2V0ICE9IG51 bGwgJiYgc3JjX25hbWVzLkNvbnRhaW5zICgoZWxlbWVudF90YXJnZXQgYXMgVmFyaWFibGVSZWZl cmVuY2UpPy5OYW1lKSkgeworKwkJCQkJCXZhciB0ZW1wVHlwZSA9IGVsZW1lbnRfdGFyZ2V0LlJl c29sdmUgKHJjKS5UeXBlOworKworKwkJCQkJCXZhciB0ZW1wID0gbmV3IExvY2FsVGVtcG9yYXJ5 ICh0ZW1wVHlwZSk7CisrCQkJCQkJdGVtcEV4cHJzLkFkZCAobmV3IFNpbXBsZUFzc2lnbiAodGVt cCwgZWxlbWVudF9zcmNzIFtpXSkuUmVzb2x2ZSAocmMpKTsKKysJCQkJCQl0YXJnZXRFeHBycyBb aV0gPSBuZXcgU2ltcGxlQXNzaWduICh0YXJnZXRFeHBycyBbaV0sIHRlbXApLlJlc29sdmUgKHJj KTsKKysJCQkJCX0gZWxzZSB7CisrCQkJCQkJdGFyZ2V0RXhwcnMgW2ldID0gbmV3IFNpbXBsZUFz c2lnbiAodGFyZ2V0RXhwcnMgW2ldLCBlbGVtZW50X3NyY3MgW2ldKS5SZXNvbHZlIChyYyk7Cisr CQkJCQl9CisgCQkJCX0KKyAKKyAJCQkJZWNsYXNzID0gRXhwckNsYXNzLlZhbHVlOworQEAgLTU1 Nyw5ICs1OTUsMjQgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJaWYgKGluc3RhbmNlICE9 IG51bGwpCisgCQkJCSgoRXhwcmVzc2lvblN0YXRlbWVudClzb3VyY2UpLkVtaXRTdGF0ZW1lbnQg KGVjKTsKKyAKKy0JCQlmb3JlYWNoIChFeHByZXNzaW9uU3RhdGVtZW50IGV4cHIgaW4gdGFyZ2V0 RXhwcnMpCisrCQkJZm9yZWFjaCAoRXhwcmVzc2lvblN0YXRlbWVudCBleHByIGluIHRlbXBFeHBy cykgeworKwkJCQl2YXIgdGVtcCA9IChleHByIGFzIEFzc2lnbik/LlRhcmdldCBhcyBMb2NhbFRl bXBvcmFyeTsKKysJCQkJaWYgKHRlbXAgPT0gbnVsbCkKKysJCQkJCWNvbnRpbnVlOworKworKwkJ CQl0ZW1wLkFkZHJlc3NPZiAoZWMsIEFkZHJlc3NPcC5Mb2FkU3RvcmUpOworKwkJCQllYy5FbWl0 IChPcENvZGVzLkluaXRvYmosIHRlbXAuVHlwZSk7CisrCQkJCWV4cHIuRW1pdCAoZWMpOworKwkJ CX0KKysKKysJCQlmb3JlYWNoIChFeHByZXNzaW9uU3RhdGVtZW50IGV4cHIgaW4gdGFyZ2V0RXhw cnMpIHsKKyAJCQkJZXhwci5FbWl0IChlYyk7CisgCisrCQkJCXZhciB0ZW1wID0gKGV4cHIgYXMg QXNzaWduKT8uU291cmNlIGFzIExvY2FsVGVtcG9yYXJ5OworKwkJCQlpZiAodGVtcCAhPSBudWxs KQorKwkJCQkJdGVtcC5SZWxlYXNlIChlYyk7CisrCQkJfQorKworIAkJCXZhciBjdG9yID0gTWVt YmVyQ2FjaGUuRmluZE1lbWJlciAodHlwZSwgTWVtYmVyRmlsdGVyLkNvbnN0cnVjdG9yIChudWxs KSwgQmluZGluZ1Jlc3RyaWN0aW9uLkRlY2xhcmVkT25seSB8IEJpbmRpbmdSZXN0cmljdGlvbi5J bnN0YW5jZU9ubHkpIGFzIE1ldGhvZFNwZWM7CisgCQkJZWMuRW1pdCAoT3BDb2Rlcy5OZXdvYmos IGN0b3IpOworIAkJfQorQEAgLTU3NCw5ICs2MjcsMjQgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJw CisgCQkJCisgCQkJaWYgKGluc3RhbmNlICE9IG51bGwpCisgCQkJCSgoRXhwcmVzc2lvblN0YXRl bWVudCkgc291cmNlKS5FbWl0U3RhdGVtZW50IChlYyk7CistCQkJCistCQkJZm9yZWFjaCAoRXhw cmVzc2lvblN0YXRlbWVudCBleHByIGluIHRhcmdldEV4cHJzKQorKworKwkJCWZvcmVhY2ggKEV4 cHJlc3Npb25TdGF0ZW1lbnQgZXhwciBpbiB0ZW1wRXhwcnMpIHsKKysJCQkJdmFyIHRlbXAgPSAo ZXhwciBhcyBBc3NpZ24pPy5UYXJnZXQgYXMgTG9jYWxUZW1wb3Jhcnk7CisrCQkJCWlmICh0ZW1w ID09IG51bGwpCisrCQkJCQljb250aW51ZTsKKysKKysJCQkJdGVtcC5BZGRyZXNzT2YgKGVjLCBB ZGRyZXNzT3AuTG9hZFN0b3JlKTsKKysJCQkJZWMuRW1pdCAoT3BDb2Rlcy5Jbml0b2JqLCB0ZW1w LlR5cGUpOworKwkJCQlleHByLkVtaXRTdGF0ZW1lbnQgKGVjKTsKKysJCQl9CisrCisrCQkJZm9y ZWFjaCAoRXhwcmVzc2lvblN0YXRlbWVudCBleHByIGluIHRhcmdldEV4cHJzKSB7CisgCQkJCWV4 cHIuRW1pdFN0YXRlbWVudCAoZWMpOworKworKwkJCQl2YXIgdGVtcCA9IChleHByIGFzIEFzc2ln bik/LlNvdXJjZSBhcyBMb2NhbFRlbXBvcmFyeTsKKysJCQkJaWYgKHRlbXAgIT0gbnVsbCkKKysJ CQkJCXRlbXAuUmVsZWFzZSAoZWMpOworKwkJCX0KKyAJCX0KKyAKKyAJCXB1YmxpYyB2b2lkIEVt aXQgKEVtaXRDb250ZXh0IGVjLCBib29sIGxlYXZlX2NvcHkpCitAQCAtNTk0LDYgKzY2Miw3IEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRmxvd0Fu YWx5c2lzIChGbG93QW5hbHlzaXNDb250ZXh0IGZjKQorIAkJeworKwkJCXNvdXJjZS5GbG93QW5h bHlzaXMgKGZjKTsKKyAJCQlmb3JlYWNoICh2YXIgZXhwciBpbiB0YXJnZXRFeHBycykKKyAJCQkJ ZXhwci5GbG93QW5hbHlzaXMgKGZjKTsKKyAJCX0KK2RpZmYgLS1naXQgYS9tY3MvbnVuaXQyNC9D bGllbnRVdGlsaXRpZXMvdXRpbC9Bc3NlbWJseUluZm8uY3MgYi9tY3MvbnVuaXQyNC9DbGllbnRV dGlsaXRpZXMvdXRpbC9Bc3NlbWJseUluZm8uY3MKK2luZGV4IDkxOWNhMDdhY2UzLi42NDg5YzFi MmE1OCAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L0NsaWVudFV0aWxpdGllcy91dGlsL0Fzc2Vt Ymx5SW5mby5jcworKysrIGIvbWNzL251bml0MjQvQ2xpZW50VXRpbGl0aWVzL3V0aWwvQXNzZW1i bHlJbmZvLmNzCitAQCAtNSw3ICs1LDMgQEAKKyAvLyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorIA0KKyB1c2luZyBTeXN0 ZW0uUmVmbGVjdGlvbjsNCistDQorLVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2Up XQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVth c3NlbWJseTogQXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL251bml0MjQv Q29uc29sZVJ1bm5lci9udW5pdC1jb25zb2xlL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0 L0NvbnNvbGVSdW5uZXIvbnVuaXQtY29uc29sZS9Bc3NlbWJseUluZm8uY3MKK2luZGV4IDkxOWNh MDdhY2UzLi42NDg5YzFiMmE1OCAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L0NvbnNvbGVSdW5u ZXIvbnVuaXQtY29uc29sZS9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9udW5pdDI0L0NvbnNv bGVSdW5uZXIvbnVuaXQtY29uc29sZS9Bc3NlbWJseUluZm8uY3MKK0BAIC01LDcgKzUsMyBAQAor IC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioNCisgDQorIHVzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOw0KKy0NCistW2Fzc2Vt Ymx5OiBBc3NlbWJseURlbGF5U2lnbihmYWxzZSldDQorLVthc3NlbWJseTogQXNzZW1ibHlLZXlG aWxlKCIuLi8uLi9udW5pdC5zbmsiKV0NCistW2Fzc2VtYmx5OiBBc3NlbWJseUtleU5hbWUoIiIp XQ0KK2RpZmYgLS1naXQgYS9tY3MvbnVuaXQyNC9OVW5pdENvcmUvY29yZS9Bc3NlbWJseUluZm8u Y3MgYi9tY3MvbnVuaXQyNC9OVW5pdENvcmUvY29yZS9Bc3NlbWJseUluZm8uY3MKK2luZGV4IDc0 NzAzMmM3ZTYzLi4yZjY2ZDgwMjIyYyAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L05Vbml0Q29y ZS9jb3JlL0Fzc2VtYmx5SW5mby5jcworKysrIGIvbWNzL251bml0MjQvTlVuaXRDb3JlL2NvcmUv QXNzZW1ibHlJbmZvLmNzCitAQCAtNyw3ICs3LDMgQEAgdXNpbmcgU3lzdGVtOworIHVzaW5nIFN5 c3RlbS5SZWZsZWN0aW9uOw0KKyANCisgW2Fzc2VtYmx5OiBDTFNDb21wbGlhbnQodHJ1ZSldDQor LQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5RGVsYXlTaWduKGZhbHNlKV0NCistW2Fzc2VtYmx5OiBB c3NlbWJseUtleUZpbGUoIi4uLy4uL251bml0LnNuayIpXQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5 S2V5TmFtZSgiIildDQorZGlmZiAtLWdpdCBhL21jcy9udW5pdDI0L05Vbml0Q29yZS9pbnRlcmZh Y2VzL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0L05Vbml0Q29yZS9pbnRlcmZhY2VzL0Fz c2VtYmx5SW5mby5jcworaW5kZXggZmE4NjczMmIzZDMuLmVmZWFlY2YxOTg2IDEwMDY0NAorLS0t IGEvbWNzL251bml0MjQvTlVuaXRDb3JlL2ludGVyZmFjZXMvQXNzZW1ibHlJbmZvLmNzCisrKysg Yi9tY3MvbnVuaXQyNC9OVW5pdENvcmUvaW50ZXJmYWNlcy9Bc3NlbWJseUluZm8uY3MKK0BAIC04 LDcgKzgsMyBAQCB1c2luZyBTeXN0ZW07CisgdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQorIA0K KyBbYXNzZW1ibHk6IENMU0NvbXBsaWFudCh0cnVlKV0NCistDQorLVthc3NlbWJseTogQXNzZW1i bHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4v bnVuaXQuc25rIildDQorLVthc3NlbWJseTogQXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0t Z2l0IGEvbWNzL251bml0MjQvTlVuaXRFeHRlbnNpb25zL2NvcmUvQXNzZW1ibHlJbmZvLmNzIGIv bWNzL251bml0MjQvTlVuaXRFeHRlbnNpb25zL2NvcmUvQXNzZW1ibHlJbmZvLmNzCitpbmRleCBm YTg2NzMyYjNkMy4uZWZlYWVjZjE5ODYgMTAwNjQ0CistLS0gYS9tY3MvbnVuaXQyNC9OVW5pdEV4 dGVuc2lvbnMvY29yZS9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9udW5pdDI0L05Vbml0RXh0 ZW5zaW9ucy9jb3JlL0Fzc2VtYmx5SW5mby5jcworQEAgLTgsNyArOCwzIEBAIHVzaW5nIFN5c3Rl bTsKKyB1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCisgDQorIFthc3NlbWJseTogQ0xTQ29tcGxp YW50KHRydWUpXQ0KKy0NCistW2Fzc2VtYmx5OiBBc3NlbWJseURlbGF5U2lnbihmYWxzZSldDQor LVthc3NlbWJseTogQXNzZW1ibHlLZXlGaWxlKCIuLi8uLi9udW5pdC5zbmsiKV0NCistW2Fzc2Vt Ymx5OiBBc3NlbWJseUtleU5hbWUoIiIpXQ0KK2RpZmYgLS1naXQgYS9tY3MvbnVuaXQyNC9OVW5p dEV4dGVuc2lvbnMvZnJhbWV3b3JrL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0L05Vbml0 RXh0ZW5zaW9ucy9mcmFtZXdvcmsvQXNzZW1ibHlJbmZvLmNzCitpbmRleCBhOTU1M2Y2OTFjZC4u MmI0YjViZmIzNDAgMTAwNjQ0CistLS0gYS9tY3MvbnVuaXQyNC9OVW5pdEV4dGVuc2lvbnMvZnJh bWV3b3JrL0Fzc2VtYmx5SW5mby5jcworKysrIGIvbWNzL251bml0MjQvTlVuaXRFeHRlbnNpb25z L2ZyYW1ld29yay9Bc3NlbWJseUluZm8uY3MKK0BAIC04LDcgKzgsMyBAQCB1c2luZyBTeXN0ZW07 CisgdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQorIA0KKyBbYXNzZW1ibHk6IENMU0NvbXBsaWFu dCh0cnVlKV0NCistDQorLVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1b YXNzZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVthc3NlbWJs eTogQXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL251bml0MjQvTlVuaXRG cmFtZXdvcmsvZnJhbWV3b3JrL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0L05Vbml0RnJh bWV3b3JrL2ZyYW1ld29yay9Bc3NlbWJseUluZm8uY3MKK2luZGV4IGZhODY3MzJiM2QzLi5lZmVh ZWNmMTk4NiAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L05Vbml0RnJhbWV3b3JrL2ZyYW1ld29y ay9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9udW5pdDI0L05Vbml0RnJhbWV3b3JrL2ZyYW1l d29yay9Bc3NlbWJseUluZm8uY3MKK0BAIC04LDcgKzgsMyBAQCB1c2luZyBTeXN0ZW07CisgdXNp bmcgU3lzdGVtLlJlZmxlY3Rpb247DQorIA0KKyBbYXNzZW1ibHk6IENMU0NvbXBsaWFudCh0cnVl KV0NCistDQorLVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1bYXNzZW1i bHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVthc3NlbWJseTogQXNz ZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL251bml0MjQvTlVuaXRNb2Nrcy9t b2Nrcy9Bc3NlbWJseUluZm8uY3MgYi9tY3MvbnVuaXQyNC9OVW5pdE1vY2tzL21vY2tzL0Fzc2Vt Ymx5SW5mby5jcworaW5kZXggNTk5YjA0Y2U0NTMuLmY4N2FlNjAyODEwIDEwMDY0NAorLS0tIGEv bWNzL251bml0MjQvTlVuaXRNb2Nrcy9tb2Nrcy9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9u dW5pdDI0L05Vbml0TW9ja3MvbW9ja3MvQXNzZW1ibHlJbmZvLmNzCitAQCAtNiw3ICs2LDMgQEAK KyANCisgdXNpbmcgU3lzdGVtOw0KKyB1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCistDQorLVth c3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5 S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVthc3NlbWJseTogQXNzZW1ibHlLZXlOYW1l KCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL2R0ZXN0LTA2Ni5jcyBiL21jcy90ZXN0cy9k dGVzdC0wNjYuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uODkz ZmI0MGRmZmEKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy9kdGVzdC0wNjYuY3MKK0BA IC0wLDAgKzEsMTMgQEAKKytjbGFzcyBDCisreworKwlzdGF0aWMgdm9pZCBNYWluKCkKKysJewor KwkJb2JqZWN0IG8gPSAxOworKwkJZHluYW1pYyBkID0gMTsKKysJCQorKwkJdmFyIGEgPSBuZXdb XSB7CisrCQkJbmV3IHsgWCA9IG8gfSwKKysJCQluZXcgeyBYID0gZCB9CisrCQl9OworKwl9Cisr fQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy9ndGVzdC02NDcuY3MgYi9tY3MvdGVzdHMvZ3Rlc3Qt NjQ3LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjRhYWU2NDFm ODVmCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvdGVzdHMvZ3Rlc3QtNjQ3LmNzCitAQCAtMCww ICsxLDM0IEBACisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyBjbGFzcyBQcm9ncmFtCisrewor KwlwdWJsaWMgc3RhdGljIGludCBNYWluICgpCisrCXsKKysJCWludCBCID0gZGVmYXVsdCAoTXlT dHJ1Y3Q/KTsgCisrCQlpZiAoTXlTdHJ1Y3QuY291bnRlciAhPSAxKQorKwkJCXJldHVybiAxOwor KworKwkJc3dpdGNoIChkZWZhdWx0IChNeVN0cnVjdD8pKSB7CisrCQkJY2FzZSAwOgorKwkJCQli cmVhazsKKysJCQlkZWZhdWx0OgorKwkJCQlyZXR1cm4gMjsKKysJCX0KKysKKysJCWlmIChNeVN0 cnVjdC5jb3VudGVyICE9IDIpCisrCQkJcmV0dXJuIDQ7CisrCisrCQlyZXR1cm4gMDsKKysJfQor KworKwlwdWJsaWMgc3RydWN0IE15U3RydWN0CisrCXsKKysJCXB1YmxpYyBzdGF0aWMgaW50IGNv dW50ZXI7CisrCisrCQlwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIGludCAoTXlTdHJ1 Y3Q/IHMpCisrCQl7CisrCQkJKytjb3VudGVyOworKwkJCXJldHVybiAwOworKwkJfQorKwl9Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rl c3QtOTI4LmNzIGIvbWNzL3Rlc3RzL3Rlc3QtOTI4LmNzCitpbmRleCA5MDE4MDEzNzk1Ny4uMjkw ZWU0ZDFmYjMgMTAwNjQ0CistLS0gYS9tY3MvdGVzdHMvdGVzdC05MjguY3MKKysrKyBiL21jcy90 ZXN0cy90ZXN0LTkyOC5jcworQEAgLTE1LDYgKzE1LDI0IEBAIHVuc2FmZSBjbGFzcyBQcm9ncmFt CisgCQl9CisgCX0KKyAKKysJcHVibGljIHN0YXRpYyBib29sIFN0cmluZ051bGwgKHN0cmluZyBz KQorKwl7CisrCQl1bnNhZmUgeworKwkJCWZpeGVkIChjaGFyICphID0gcykgeworKwkJCQlyZXR1 cm4gYSA9PSBudWxsOworKwkJCX0KKysJCX0KKysJfQorKworKwlwdWJsaWMgc3RhdGljIGJvb2wg QXJyYXlOdWxsIChpbnRbXSBhKQorKwl7CisrCQl1bnNhZmUgeworKwkJCWZpeGVkIChpbnQgKmUg PSBhKSB7CisrCQkJCXJldHVybiBlID09IG51bGw7CisrCQkJfQorKwkJfQorKwl9CisrCisgCXB1 YmxpYyBzdGF0aWMgaW50IE1haW4gKCkKKyAJeworIAkJVGVzdCAoKTsKK0BAIC0yNCw2ICs0Miwx MiBAQCB1bnNhZmUgY2xhc3MgUHJvZ3JhbQorIAkJaWYgKGx2LklzUGlubmVkKQorIAkJCXJldHVy biAxOworIAorKwkJaWYgKCFTdHJpbmdOdWxsIChudWxsKSkKKysJCQlyZXR1cm4gMTsKKysKKysJ CWlmICghQXJyYXlOdWxsIChudWxsKSkKKysJCQlyZXR1cm4gMjsKKysKKyAJCXJldHVybiAwOwor IAl9CisgfQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LTk0OC5jcyBiL21jcy90ZXN0cy90 ZXN0LTk0OC5jcworaW5kZXggMzRiM2FiOWEwYzQuLjU2M2UzN2RjN2Q1IDEwMDY0NAorLS0tIGEv bWNzL3Rlc3RzL3Rlc3QtOTQ4LmNzCisrKysgYi9tY3MvdGVzdHMvdGVzdC05NDguY3MKK0BAIC0x LDQgKzEsNCBAQAorLS8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIgLXVuc2Fm ZQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIgL3Vuc2FmZQorIAorIHVz aW5nIFN5c3RlbTsKKyAKK0BAIC03LDEwICs3LDE2IEBAIGNsYXNzIFgKKyAJcHVibGljIHN0YXRp YyB2b2lkIE1haW4gKCkKKyAJeworIAkJU3BhbjxpbnQ+IHN0YWNrU3BhbiA9IHN0YWNrYWxsb2Mg aW50WzEwMF07CisrCisrCQlib29sIGIgPSBmYWxzZTsKKysKKysJCXZhciByMSA9ICFiID8gc3Rh Y2thbGxvYyBjaGFyWzFdIDogdGhyb3cgbnVsbDsKKysJCXZhciByMiA9IGIgPyB0aHJvdyBudWxs IDogc3RhY2thbGxvYyBjaGFyWzFdOworKwkJdmFyIHIzID0gYiA/IHN0YWNrYWxsb2MgY2hhclsx XSA6IHN0YWNrYWxsb2MgY2hhclsyXTsKKyAJfQorIAorKwkvLyBEaXNhYmxlcyB2ZXJpZmllcgor IAl1bnNhZmUgdm9pZCBGb28gKCkKKyAJeworLQorIAl9CistfQorXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCisrfQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LTk1MC5jcyBiL21jcy90 ZXN0cy90ZXN0LTk1MC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAw Li5mZWY3NjRjODVjYworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtOTUwLmNz CitAQCAtMCwwICsxLDEyIEBACisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyBjbGFzcyBCCisr eworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlpbnQgYSA9IDFfMF8zOwor KwkJZG91YmxlIGIgPSAwX18wZSsxXzE7CisrCQlpbnQgYyA9IDBiMF9fMV8wOworKwkJaW50IGQg PSAweDBfX0ZfMDsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAt LWdpdCBhL21jcy90ZXN0cy90ZXN0LTk2MC5jcyBiL21jcy90ZXN0cy90ZXN0LTk2MC5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5hYzJhMWNhNzQzNQorLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtOTYwLmNzCitAQCAtMCwwICsxLDIwIEBACisr Ly8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworK3B1YmxpYyBjbGFzcyBC CisreworKwlwcml2YXRlIHByb3RlY3RlZCBlbnVtIEUKKysJeworKwl9CisrCisrCXB1YmxpYyBp bnQgSW5kZXggeyBnZXQ7IHByb3RlY3RlZCBwcml2YXRlIHNldDsgfQorKworKwlpbnRlcm5hbCBz dHJpbmcgUzEgeyBnZXQ7IHByaXZhdGUgcHJvdGVjdGVkIHNldDsgfQorKworKwlwcm90ZWN0ZWQg c3RyaW5nIFMyIHsgZ2V0OyBwcml2YXRlIHByb3RlY3RlZCBzZXQ7IH0KKysKKysJcHJpdmF0ZSBw cm90ZWN0ZWQgaW50IGZpZWxkOworKworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7 CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3Mv dGVzdHMvdGVzdC05NjEuY3MgYi9tY3MvdGVzdHMvdGVzdC05NjEuY3MKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZWZlMTk2NzM4NzUKKy0tLSAvZGV2L251bGwKKysr KyBiL21jcy90ZXN0cy90ZXN0LTk2MS5jcworQEAgLTAsMCArMSwzNCBAQAorKy8vIENvbXBpbGVy IG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysKKyt1c2luZyBTeXN0ZW07CisrCisrcHVi bGljIHN0YXRpYyBjbGFzcyBCIHsKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJewor KwkJaW50IGxvID0gMTsKKysJCUJhciAoaW4gbG8pOwkJCisrCX0KKysKKysJcHVibGljIHN0YXRp YyB2b2lkIEJhciAoaW4gaW50IGFyZykKKysJeworKwl9CisrCisrCXN0YXRpYyB2b2lkIEZvbyAo dGhpcyBpbiBpbnQgc3JjKQorKwl7CisrCQlEIHAgPSAoaW4gaW50IGEpID0+IHt9OworKwl9Cisr CisrfQorKworK2RlbGVnYXRlIHZvaWQgRCAoaW4gaW50IGFyZyk7CisrCisrY2xhc3MgTQorK3sK KysJaW50IHRoaXNbaW4gaW50IGFdIHsgc2V0IHsgfSB9CisrCXB1YmxpYyBzdGF0aWMgaW1wbGlj aXQgb3BlcmF0b3Igc3RyaW5nIChpbiBNIG0pID0+IG51bGw7CisrCXB1YmxpYyBNIChpbiBpbnQg YXJnKSB7IH0KKysKKysJcHVibGljIHZvaWQgVGVzdDIgKGluIGludCBhcmcpCisrCXsKKysJfQor K30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90 ZXN0LWFub24tMTIzLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtYW5vbi0xMjMuY3MKK2luZGV4IDkxYzcy YjQ1YWZlLi40NWFhYjI3YzBhNSAxMDA2NDQKKy0tLSBhL21jcy90ZXN0cy90ZXN0LWFub24tMTIz LmNzCisrKysgYi9tY3MvdGVzdHMvdGVzdC1hbm9uLTEyMy5jcworQEAgLTEsMyArMSw0IEBACisr Ly8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorIC8vIENsb25pbmcgdGVz dHMKKyAKKyB1c2luZyBTeXN0ZW07CitAQCAtMTAzLDcgKzEwNCwxMSBAQCBwdWJsaWMgY2xhc3Mg QyA6IEIKKyAJCQlkZWZhdWx0OgorIAkJCQlicmVhazsKKyAJCQl9CistCQl9KTsJCQorKwkJfSk7 CisrCisrCQlUZXN0ICgoKSA9PiB7CisrCQkJY2hhciBjaCA9IGRlZmF1bHQ7CisrCQl9KTsKKyAJ CQorIAkJdmFyIGMgPSBuZXcgQyAoKTsKKyAJCWMuSW5zdGFuY2VUZXN0cyAoKTsKK2RpZmYgLS1n aXQgYS9tY3MvdGVzdHMvdGVzdC1iaW5hcnlsaXRlcmFsLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtYmlu YXJ5bGl0ZXJhbC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4z ZDljYzg5YmNiZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtYmluYXJ5bGl0 ZXJhbC5jcworQEAgLTAsMCArMSw1NyBAQAorKworK2NsYXNzIERlbW8geworKwlzdGF0aWMgaW50 IE1haW4gKCkKKysJeworKwkJaWYgKDBiMSAhPSAxKQorKwkJCXJldHVybiAxOworKwkJdmFyIGhl eDEgPSAweDEyM3VsOworKwkJdmFyIGJpbjEgID0gMGIxMDAxMDAwMTF1bDsKKysJCXZhciBiaW4x MSA9IDBiMTAwMTAwMDExbHU7CisrCQlpZiAoaGV4MSAhPSBiaW4xKQorKwkJCXJldHVybiAyOwor KwkJaWYgKGhleDEgIT0gYmluMTEpCisrCQkJcmV0dXJuIDM7CisrCQlpZiAoaGV4MS5HZXRUeXBl ICgpICE9IGJpbjEuR2V0VHlwZSAoKSkKKysJCQlyZXR1cm4gNDsKKysJCWlmIChoZXgxLkdldFR5 cGUgKCkgIT0gYmluMTEuR2V0VHlwZSAoKSkKKysJCQlyZXR1cm4gNTsKKysKKysJCXZhciBoZXgy ID0gMHg3RkZGRkZGRjsKKysJCXZhciBiaW4yID0gMGIxMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExOworKworKwkJaWYgKGhleDIgIT0gYmluMikKKysJCQlyZXR1cm4gNjsKKysJCWlmICho ZXgyLkdldFR5cGUgKCkgIT0gYmluMi5HZXRUeXBlICgpKQorKwkJCXJldHVybiA3OworKworKwkJ dmFyIGhleDMgPSAweEZGRkZGRkZGOworKwkJdmFyIGJpbjMgPSAwYjExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExOworKwkJaWYgKGhleDMgIT0gYmluMykKKysJCQlyZXR1cm4gODsKKysJ CWlmIChoZXgzLkdldFR5cGUgKCkgIT0gYmluMy5HZXRUeXBlICgpKQorKwkJCXJldHVybiA5Owor KworKwkJdmFyIGhleDQgPSAweEZGRkZGRkZGdTsKKysJCXZhciBiaW40ID0gMGIxMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMXU7CisrCQlpZiAoaGV4NCAhPSBiaW40KQorKwkJCXJldHVy biAxMDsKKysJCWlmIChoZXg0LkdldFR5cGUgKCkgIT0gYmluNC5HZXRUeXBlICgpKQorKwkJCXJl dHVybiAxMTsKKysKKysJCXZhciBoZXg1ID0gMHg3RkZGRkZGRkZGRkZGRkZGOworKwkJdmFyIGJp bjUgPSAwYjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTsKKysJCWlmIChoZXg1ICE9IGJpbjUpCisrCQkJcmV0dXJuIDEyOworKwkJ aWYgKGhleDUuR2V0VHlwZSAoKSAhPSBiaW41LkdldFR5cGUgKCkpCisrCQkJcmV0dXJuIDEzOwor KworKwkJdmFyIGhleDYgPSAweEZGRkZGRkZGRkZGRkZGRkY7CisrCQl2YXIgYmluNiA9IDBiMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTsKKysJCWlmIChoZXg2ICE9IGJpbjYpCisrCQkJcmV0dXJuIDE0OworKwkJaWYgKGhleDYu R2V0VHlwZSAoKSAhPSBiaW42LkdldFR5cGUgKCkpCisrCQkJcmV0dXJuIDE1OworKworKwkJcmV0 dXJuIDA7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQg YS9tY3MvdGVzdHMvdGVzdC1kZWNsLWV4cHItMDUuY3MgYi9tY3MvdGVzdHMvdGVzdC1kZWNsLWV4 cHItMDUuY3MKK2luZGV4IDczMGZkNDI3OGNhLi45MDdjZGUwYjhkNyAxMDA2NDQKKy0tLSBhL21j cy90ZXN0cy90ZXN0LWRlY2wtZXhwci0wNS5jcworKysrIGIvbWNzL3Rlc3RzL3Rlc3QtZGVjbC1l eHByLTA1LmNzCitAQCAtNiw2ICs2LDExIEBAIGNsYXNzIFgKKyAJCXsKKyAJCQlhcmcgPSBzLlRv U3RyaW5nICgpOworIAkJfQorKworKwkJd2hpbGUgKHRydWUgJiYgQ2FsbCAob3V0IHN0cmluZyBz MikpCisrCQl7CisrCQkJYXJnID0gczIuVG9TdHJpbmcgKCk7CisrCQl9CisgCX0KKyAKKyAJc3Rh dGljIGJvb2wgQ2FsbCAob3V0IHN0cmluZyBzKQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0 LWRlY2wtZXhwci0wNi5jcyBiL21jcy90ZXN0cy90ZXN0LWRlY2wtZXhwci0wNi5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi45NzM0ZjJlYzJhNworLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtZGVjbC1leHByLTA2LmNzCitAQCAtMCwwICsxLDE3 IEBACisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyBjbGFzcyBDCisreworKwlGdW5jPGJvb2w+ IGYgPSAoKSA9PiBGb28gKG91dCBpbnQgYXJnKTsKKysKKysJc3RhdGljIGJvb2wgRm9vIChvdXQg aW50IGFyZykKKysJeworKwkJYXJnID0gMjsKKysJCXJldHVybiBmYWxzZTsKKysJfQorKworKwlw dWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQluZXcgQyAoKTsKKysJfQorK30KK1wg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LWRl ZmF1bHQtMDEuY3MgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAxLmNzCitpbmRleCA4MjNlMzNj NDUxYi4uMjhhZmY4MzBjZDkgMTAwNjQ0CistLS0gYS9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAx LmNzCisrKysgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAxLmNzCitAQCAtNDEsNyArNDEsMTEg QEAgc3RhdGljIGNsYXNzIFgKKyAJc3RhdGljIFN5c3RlbS5GdW5jPGludD4gTTQgKCkKKyAJewor IAkJcmV0dXJuICgpID0+IGRlZmF1bHQ7CistCX0gCisrCX0KKysKKysJc3RhdGljIHZvaWQgRm9v IChJSSBhID0gZGVmYXVsdCAoSUkpLCBJSSBiID0gZGVmYXVsdCwgSUkgYyA9IChJSSkgbnVsbCkK KysJeworKwl9CisgfQorIC8qCisgZW51bSBFCitAQCAtNDksNCArNTMsMTAgQEAgZW51bSBFCisg CUEgPSBkZWZhdWx0LAorIAlCID0gZGVmYXVsdCArIDEKKyB9CistKi8KK1wgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorKyovCisrCisrCisraW50ZXJmYWNlIElJCisreworKworK30KK1wgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LWZpeGVk LTAxLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtZml4ZWQtMDEuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwMC4uNDY4NGIwYzVhMDYKKy0tLSAvZGV2L251bGwKKysrKyBiL21j cy90ZXN0cy90ZXN0LWZpeGVkLTAxLmNzCitAQCAtMCwwICsxLDIwIEBACisrLy8gQ29tcGlsZXIg b3B0aW9uczogLXVuc2FmZSAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrdW5zYWZlIGNsYXNzIEMK Kyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCWZpeGVkIChpbnQqIHAg PSBuZXcgRml4YWJsZSAoKSkgeworKwkJCVN5c3RlbS5Db25zb2xlLldyaXRlTGluZSAoKnApOwor KwkJCVN5c3RlbS5Db25zb2xlLldyaXRlTGluZSAocCBbMl0pOworKwkJfQorKwl9CisrCisrCXN0 cnVjdCBGaXhhYmxlCisrCXsKKysJCXB1YmxpYyByZWYgaW50IEdldFBpbm5hYmxlUmVmZXJlbmNl ICgpCisrCQl7CisrCQkJcmV0dXJuIHJlZiAobmV3IGludFtdIHsgMSwgMiwgMyB9KVswXTsKKysJ CX0KKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21j cy90ZXN0cy90ZXN0LXBhdHRlcm4tMTMuY3MgYi9tY3MvdGVzdHMvdGVzdC1wYXR0ZXJuLTEzLmNz CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjMxNWM3YTllNGJlCist LS0gL2Rldi9udWxsCisrKysgYi9tY3MvdGVzdHMvdGVzdC1wYXR0ZXJuLTEzLmNzCitAQCAtMCww ICsxLDE5IEBACisrdXNpbmcgU3lzdGVtOworKworK2NsYXNzIEMgOiBCCisreworKworK30KKysK KytwdWJsaWMgY2xhc3MgQgorK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJewor KwkJQyBjID0gbmV3IEMgKCk7CisrCisrCQlpZiAoYyBpcyBCIGIpCisrCQl7CisrCQkJQ29uc29s ZS5Xcml0ZUxpbmUgKGIgPT0gbnVsbCk7CisrCQl9CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvdGVzdHMvdGVzdC1yZWYtMDcuY3MgYi9tY3Mv dGVzdHMvdGVzdC1yZWYtMDcuY3MKK2luZGV4IDRhYTE2NTc5NzUyLi5mMTdjZmI0NDNiNSAxMDA2 NDQKKy0tLSBhL21jcy90ZXN0cy90ZXN0LXJlZi0wNy5jcworKysrIGIvbWNzL3Rlc3RzL3Rlc3Qt cmVmLTA3LmNzCitAQCAtMSw2ICsxLDYgQEAKKyAvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3Zl cnNpb246bGF0ZXN0CisgCistcHVibGljIHJlYWRvbmx5IHBhcnRpYWwgcmVmIHN0cnVjdCBUZXN0 CisrcHVibGljIHJlYWRvbmx5IHJlZiBwYXJ0aWFsIHN0cnVjdCBUZXN0CisgeworIAlwdWJsaWMg c3RhdGljIHZvaWQgTWFpbiAoKQorIAl7CitAQCAtMTQsNiArMTQsMTEgQEAgcHVibGljIHJlYWRv bmx5IHBhcnRpYWwgcmVmIHN0cnVjdCBUZXN0CisgCX0KKyB9CisgCisrcmVmIHBhcnRpYWwgc3Ry dWN0IFRlc3QKKyt7CisrCisrfQorKworIHJlZiBzdHJ1Y3QgU2Vjb25kCisgeworIAlUZXN0IGZp ZWxkOworZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXJlZi0xMS5jcyBiL21jcy90ZXN0cy90 ZXN0LXJlZi0xMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44 ZDM5MmE3N2QwNworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTExLmNz CitAQCAtMCwwICsxLDEzIEBACisrY2xhc3MgUHJvZ3JhbQorK3sKKysJc3RhdGljIGludCB4Owor KwlzdGF0aWMgaW50IHk7CisrCisrICAgIHB1YmxpYyBzdGF0aWMgaW50IE1haW4gKCkKKysgICAg eworKyAgICAJYm9vbCBiID0gZmFsc2U7CisrICAgICAgICByZWYgaW50IHRhcmdldEJ1Y2tldCA9 IHJlZiBiID8gcmVmIHggOiByZWYgeTsKKysKKysgICAgICAgIHJldHVybiAwOworKyAgICB9Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rl c3QtcmVmLTEyLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTEyLmNzCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjc4NmE0MTYyZjRmCistLS0gL2Rldi9udWxsCisrKysg Yi9tY3MvdGVzdHMvdGVzdC1yZWYtMTIuY3MKK0BAIC0wLDAgKzEsMjIgQEAKKysvLyBDb21waWxl ciBvcHRpb25zOiAtdW5zYWZlCisrCisrdW5zYWZlIGNsYXNzIFgKKyt7CisrCXB1YmxpYyBzdGF0 aWMgdm9pZCBNYWluICgpCisrCXsKKysJCXZvaWQqIHBvaW50ZXIgPSBudWxsOworKyAJCUJhciAo cmVmIEZvbyAocmVmICooYnl0ZSopcG9pbnRlcikpOworKwl9CisrCisrCXN0YXRpYyBpbnQgZmll bGQ7CisrCisrCXN0YXRpYyByZWYgaW50IEZvbyAocmVmIGJ5dGUgYikKKysJeworKwkJcmV0dXJu IHJlZiBmaWVsZDsKKysJfQorKworKwlzdGF0aWMgdm9pZCBCYXIgKHJlZiBpbnQgaSkKKysJewor KworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNz L3Rlc3RzL3Rlc3QtdHVwbGUtMDIuY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0wMi5jcworaW5k ZXggYzA0OTI3NTk0NTIuLmFiNzIyNjQyYWViIDEwMDY0NAorLS0tIGEvbWNzL3Rlc3RzL3Rlc3Qt dHVwbGUtMDIuY3MKKysrKyBiL21jcy90ZXN0cy90ZXN0LXR1cGxlLTAyLmNzCitAQCAtMjYsNiAr MjYsMTEgQEAgY2xhc3MgVHVwbGVDb252ZXJzaW9ucworIAkJKHN0cmluZyB2MSwgb2JqZWN0IHYy KSBiID0gKCJhIiwgImIiKTsKKyAKKyAJCShpbnQgdjEsIGxvbmcgdjIpPyB4ID0gbnVsbDsKKysK KysgICAgICAgIHZhciBhcnJheSA9IG5ldyBbXSB7CisrICAgICAgICAgICAgKG5hbWU6ICJBIiwg b2Zmc2V0OiAwKSwKKysgICAgICAgICAgICAobmFtZTogIkIiLCBzaXplOiA0KQorKyAgICAgICAg fTsJCQorIAl9CisgCisgCXN0YXRpYyB2b2lkIEZvbzxUPiAoVCBhcmcpCitkaWZmIC0tZ2l0IGEv bWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDguY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0wOC5jcwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mZDMzNzViNGRmNgorLS0t IC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDguY3MKK0BAIC0wLDAgKzEs MjQgQEAKKyt1c2luZyBTeXN0ZW07CisrdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7 CisrdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKKysKKytjbGFzcyBYCisreworKwlwdWJs aWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQl2YXIgeCA9IG5ldyBYICgpOworKwkJeC5U ZXN0ICgpLldhaXQgKCk7CisrCX0KKysKKysJaW50IGEsIGI7CisrCisrCWFzeW5jIFRhc2sgVGVz dCAoKQorKwl7CisrCQkoYSwgYikgPSBhd2FpdCBXYWl0aW5nICgpOworKwl9CisrCisrCVRhc2s8 KGludCwgaW50KT4gV2FpdGluZyAoKQorKwl7CisrCQlyZXR1cm4gVGFzay5Gcm9tUmVzdWx0ICgo MSwgMykpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0 IGEvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMTAuY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0xMC5j cworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44MmY0ZTAxZWMxZgor LS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMTAuY3MKK0BAIC0wLDAg KzEsOSBAQAorK3VzaW5nIFN5c3RlbS5MaW5xOworKworK2NsYXNzIFByb2dyYW0geworKyAgICBw dWJsaWMgc3RhdGljIGludCBNYWluICgpCisrICAgIHsKKysgICAgICAgIHZhciBsID0gKGZyb20g ZiBpbiAodHlwZW9mIChQcm9ncmFtKSkuR2V0RmllbGRzKCkgc2VsZWN0IChuYW1lOiBmLk5hbWUs IG9mZnNldDogMCkpLlRvTGlzdCgpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyt9Citc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvdGVzdHMvdGVzdC10 dXBsZS0xMS5jcyBiL21jcy90ZXN0cy90ZXN0LXR1cGxlLTExLmNzCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmIyYWViMjQwMjZjCistLS0gL2Rldi9udWxsCisrKysg Yi9tY3MvdGVzdHMvdGVzdC10dXBsZS0xMS5jcworQEAgLTAsMCArMSwyMCBAQAorK3VzaW5nIFN5 c3RlbTsKKysKKytjbGFzcyBQcm9ncmFtCisreworKwlwdWJsaWMgc3RhdGljIGludCBNYWluICgp CisrCXsKKysJCWludCB4ID0gMTsKKysJCWludCB5ID0gMjsKKysKKysJCSh4LCB5KSA9ICh5LCB4 KTsKKysKKysJCWlmICh4ICE9IDIpCisrCQkJcmV0dXJuIDE7CisrCisrCQlpZiAoeSAhPSAxKQor KwkJCXJldHVybiAyOworKworKwkJcmV0dXJuIDA7CisrCX0KKyt9CitkaWZmIC0tZ2l0IGEvbWNz L3Rlc3RzL3Zlci1pbC1uZXRfNF94LnhtbCBiL21jcy90ZXN0cy92ZXItaWwtbmV0XzRfeC54bWwK K2luZGV4IDRkYmM3MDQyYThhLi4yYmRlODI3MDMzOCAxMDA2NDQKKy0tLSBhL21jcy90ZXN0cy92 ZXItaWwtbmV0XzRfeC54bWwKKysrKyBiL21jcy90ZXN0cy92ZXItaWwtbmV0XzRfeC54bWwKK0BA IC0zMTY4LDYgKzMxNjgsMzMgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAg PC90ZXN0PgorKyAgPHRlc3QgbmFtZT0iZHRlc3QtMDY2LmNzIj4KKysgICAgPHR5cGUgbmFtZT0i QyI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE0NSI+CisrICAg ICAgICA8c2l6ZT40MTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5h bWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSImbHQ7Jmd0 O19fQW5vblR5cGUwYDFbJmx0O1gmZ3Q7X19UXSI+CisrICAgICAgPG1ldGhvZCBuYW1lPSImbHQ7 WCZndDtfX1QgZ2V0X1goKSIgYXR0cnM9IjIxODIiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gRXF1YWxzKFN5 c3RlbS5PYmplY3QpIiBhdHRycz0iMTk4Ij4KKysgICAgICAgIDxzaXplPjM5PC9zaXplPgorKyAg ICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgR2V0SGFzaENvZGUoKSIg YXR0cnM9IjE5OCI+CisrICAgICAgICA8c2l6ZT42Mzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4K KysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5TdHJpbmcgVG9TdHJpbmcoKSIgYXR0cnM9IjE5 OCI+CisrICAgICAgICA8c2l6ZT42Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8 bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoJmx0O1gmZ3Q7X19UKSIgYXR0cnM9IjYyNzgiPgorKyAg ICAgICAgPHNpemU+MTQ8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysg IDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9ImR0ZXN0LWFub250eXBlLTAxLmNzIj4KKyAgICAgPHR5 cGUgbmFtZT0iQyI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1 MCI+CitAQCAtMTEwNjQsNyArMTEwOTEsNyBAQAorICAgICA8L3R5cGU+CisgICAgIDx0eXBlIG5h bWU9IlgiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgQmVlcihTeXN0ZW0uTnVsbGFibGVg MVtJcmlzaFB1Yl0pIiBhdHRycz0iMTQ1Ij4KKy0gICAgICAgIDxzaXplPjcyPC9zaXplPgorKyAg ICAgICAgPHNpemU+NjA8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBu YW1lPSJJbnQzMiBUZXN0KFN5c3RlbS5OdWxsYWJsZWAxW1N5c3RlbS5JbnQzMl0pIiBhdHRycz0i MTQ1Ij4KKyAgICAgICAgIDxzaXplPjYyPC9zaXplPgorQEAgLTE5NTA4LDcgKzE5NTM1LDcgQEAK KyAgICAgPC90eXBlPgorICAgICA8dHlwZSBuYW1lPSJDIj4KKyAgICAgICA8bWV0aG9kIG5hbWU9 IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CistICAgICAgICA8c2l6ZT4yNjc8L3NpemU+Cisr ICAgICAgICA8c2l6ZT4yNTU8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhv ZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKyAgICAgICAgIDxzaXplPjc8L3Np emU+CitAQCAtMTk3NDIsNyArMTk3NjksNyBAQAorICAgPHRlc3QgbmFtZT0iZ3Rlc3QtNjI5LmNz Ij4KKyAgICAgPHR5cGUgbmFtZT0iUHJvZ3JhbSI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IE1haW4oKSIgYXR0cnM9IjE1MCI+CistICAgICAgICA8c2l6ZT4xMTY8L3NpemU+CisrICAgICAg ICA8c2l6ZT4xMjE8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1l PSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKyAgICAgICAgIDxzaXplPjc8L3NpemU+CitA QCAtMjAxNDcsNiArMjAxNzQsMjEgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgor ICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0iZ3Rlc3QtNjQ3LmNzIj4KKysgICAgPHR5cGUgbmFt ZT0iUHJvZ3JhbSI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBNYWluKCkiIGF0dHJzPSIx NTAiPgorKyAgICAgICAgPHNpemU+OTk8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAg PG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXpl Pjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFt ZT0iUHJvZ3JhbStNeVN0cnVjdCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBvcF9JbXBs aWNpdChTeXN0ZW0uTnVsbGFibGVgMVtQcm9ncmFtK015U3RydWN0XSkiIGF0dHJzPSIyMTk4Ij4K KysgICAgICAgIDxzaXplPjIyPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+ CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJndGVzdC1hbm9udHlwZS0wMS5jcyI+CisgICAg IDx0eXBlIG5hbWU9IlRlc3QiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBh dHRycz0iMTUwIj4KK0BAIC00NzYwOSw3ICs0NzY1MSw3IEBACisgICAgICAgICA8c2l6ZT43PC9z aXplPgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBDb3B5VG8o SW50MzIsIENoYXJbXSwgSW50MzIsIEludDMyKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8c2l6 ZT43Mzwvc2l6ZT4KKysgICAgICAgIDxzaXplPjc4PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgor ICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CitAQCAtNTE0NjgsMTAgKzUxNTEwLDEwIEBACisgICA8 dGVzdCBuYW1lPSJ0ZXN0LTg4LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iWCI+CisgICAgICAgPG1l dGhvZCBuYW1lPSJWb2lkIGYoU3lzdGVtLlN0cmluZykiIGF0dHJzPSIxNDUiPgorLSAgICAgICAg PHNpemU+MjA8L3NpemU+CisrICAgICAgICA8c2l6ZT4xMjwvc2l6ZT4KKyAgICAgICA8L21ldGhv ZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CistICAg ICAgICA8c2l6ZT43MDwvc2l6ZT4KKysgICAgICAgIDxzaXplPjYyPC9zaXplPgorICAgICAgIDwv bWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+ CisgICAgICAgICA8c2l6ZT43PC9zaXplPgorQEAgLTUyMTQ4LDcgKzUyMTkwLDcgQEAKKyAgICAg ICAgIDxzaXplPjE0PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFt ZT0iVm9pZCBPdXRlcihTeXN0ZW0uU3RyaW5nKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8c2l6 ZT4yOTwvc2l6ZT4KKysgICAgICAgIDxzaXplPjM0PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgor ICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBJbm5lcihDaGFyKiBCeVJlZiwgQ2hhciopIiBhdHRy cz0iMTQ1Ij4KKyAgICAgICAgIDxzaXplPjEwPC9zaXplPgorQEAgLTUyMzU5LDEwICs1MjQwMSwx MCBAQAorICAgPHRlc3QgbmFtZT0idGVzdC05MjguY3MiPgorICAgICA8dHlwZSBuYW1lPSJQcm9n cmFtIj4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgVGVzdCgpIiBhdHRycz0iMTUwIj4KKy0g ICAgICAgIDxzaXplPjI1PC9zaXplPgorKyAgICAgICAgPHNpemU+MzA8L3NpemU+CisgICAgICAg PC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBNYWluKCkiIGF0dHJzPSIxNTAi PgorLSAgICAgICAgPHNpemU+MTA1PC9zaXplPgorKyAgICAgICAgPHNpemU+MTQxPC9zaXplPgor ICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iQm9vbGVhbiAmbHQ7TWFpbiZn dDttX18wKFN5c3RlbS5SZWZsZWN0aW9uLkxvY2FsVmFyaWFibGVJbmZvKSIgYXR0cnM9IjE0NSI+ CisgICAgICAgICA8c2l6ZT4yOTwvc2l6ZT4KK0BAIC01MjM3MCw2ICs1MjQxMiwxMiBAQAorICAg ICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisgICAgICAgICA8 c2l6ZT43PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iQm9v bGVhbiBTdHJpbmdOdWxsKFN5c3RlbS5TdHJpbmcpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxz aXplPjMyPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iQm9v bGVhbiBBcnJheU51bGwoSW50MzJbXSkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+NDU8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKyAgIDx0 ZXN0IG5hbWU9InRlc3QtOTI5LmNzIj4KK0BAIC01MjgxNCw3ICs1Mjg2Miw3IEBACisgICA8dGVz dCBuYW1lPSJ0ZXN0LTk0OC5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlgiPgorICAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorLSAgICAgICAgPHNpemU+MTY8L3Np emU+CisrICAgICAgICA8c2l6ZT4xMDM8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAg PG1ldGhvZCBuYW1lPSJWb2lkIEZvbygpIiBhdHRycz0iMTI5Ij4KKyAgICAgICAgIDxzaXplPjI8 L3NpemU+CitAQCAtNTI4MzQsNiArNTI4ODIsMTYgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAg PC90eXBlPgorICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVzdC05NTAuY3MiPgorKyAgICA8 dHlwZSBuYW1lPSJCIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0i MTUwIj4KKysgICAgICAgIDxzaXplPjIzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAg IDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6 ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+Cisg ICA8dGVzdCBuYW1lPSJ0ZXN0LTk2LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iTjEuQSI+CisgICAg ICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBNYWluKCkiIGF0dHJzPSIxNTAiPgorQEAgLTUyODU4LDYg KzUyOTE2LDgwIEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4K KysgIDx0ZXN0IG5hbWU9InRlc3QtOTYwLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iQiI+CisrICAg ICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBnZXRfSW5kZXgoKSIgYXR0cnM9IjIxODIiPgorKyAgICAg ICAgPHNpemU+MTQ8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1l PSJWb2lkIHNldF9JbmRleChJbnQzMikiIGF0dHJzPSIyMTc4Ij4KKysgICAgICAgIDxzaXplPjg8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uU3Ry aW5nIGdldF9TMSgpIiBhdHRycz0iMjE3OSI+CisrICAgICAgICA8c2l6ZT4xNDwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgc2V0X1MxKFN5c3RlbS5T dHJpbmcpIiBhdHRycz0iMjE3OCI+CisrICAgICAgICA8c2l6ZT44PC9zaXplPgorKyAgICAgIDwv bWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iU3lzdGVtLlN0cmluZyBnZXRfUzIoKSIgYXR0 cnM9IjIxODAiPgorKyAgICAgICAgPHNpemU+MTQ8L3NpemU+CisrICAgICAgPC9tZXRob2Q+Cisr ICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIHNldF9TMihTeXN0ZW0uU3RyaW5nKSIgYXR0cnM9IjIx NzgiPgorKyAgICAgICAgPHNpemU+ODwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8 bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjI8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9y KCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRo b2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtOTYxLmNz Ij4KKysgICAgPHR5cGUgbmFtZT0iQiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4o KSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhv ZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgRm9vKEludDMyKSIgYXR0cnM9IjE0NSI+Cisr ICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlZvaWQgJmx0O0ZvbyZndDttX18wKEludDMyKSIgYXR0cnM9IjE0NSI+CisrICAgICAg ICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0 eXBlIG5hbWU9IkQiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBJbnZva2UoSW50MzIpIiBh dHRycz0iNDU0Ij4KKysgICAgICAgIDxzaXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+Cisr ICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uSUFzeW5jUmVzdWx0IEJlZ2luSW52b2tlKEludDMy LCBTeXN0ZW0uQXN5bmNDYWxsYmFjaywgU3lzdGVtLk9iamVjdCkiIGF0dHJzPSI0NTQiPgorKyAg ICAgICAgPHNpemU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5h bWU9IlZvaWQgRW5kSW52b2tlKFN5c3RlbS5JQXN5bmNSZXN1bHQpIiBhdHRycz0iNDU0Ij4KKysg ICAgICAgIDxzaXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIC5jdG9yKE9iamVjdCwgSW50UHRyKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAg PHNpemU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlw ZSBuYW1lPSJNIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgc2V0X0l0ZW0oSW50MzIsIElu dDMyKSIgYXR0cnM9IjIxNzciPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21l dGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5TdHJpbmcgb3BfSW1wbGljaXQoTSki IGF0dHJzPSIyMTk4Ij4KKysgICAgICAgIDxzaXplPjk8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFRlc3QyKEludDMyKSIgYXR0cnM9IjEzNCI+Cisr ICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCAuY3RvcihJbnQzMikiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjg8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0i QiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEJhcihJbnQzMikiIGF0dHJzPSIxNTAiPgor KyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgor KyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC05Ny5jcyI+CisgICAgIDx0eXBlIG5hbWU9 IlgiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BA IC01NDQ0OCw3ICs1NDU4MCw3IEBACisgICAgICAgICA8c2l6ZT4xOTwvc2l6ZT4KKyAgICAgICA8 L21ldGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4K Ky0gICAgICAgIDxzaXplPjI0Nzwvc2l6ZT4KKysgICAgICAgIDxzaXplPjI4MTwvc2l6ZT4KKyAg ICAgICA8L21ldGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgJmx0O0Jhc2VNJmd0O19f QmFzZUNhbGxQcm94eTAoKSIgYXR0cnM9IjEyOSI+CisgICAgICAgICA8c2l6ZT43PC9zaXplPgor QEAgLTU0NTE4LDYgKzU0NjUwLDkgQEAKKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgJmx0O01h aW4mZ3Q7bV9fNShFKSIgYXR0cnM9IjE0NSI+CisgICAgICAgICA8c2l6ZT4zNTwvc2l6ZT4KKyAg ICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgJmx0O01haW4mZ3Q7bV9f NigpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjQ8L3NpemU+CisrICAgICAgPC9tZXRo b2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRlc3QtYW5vbi0x MjQuY3MiPgorQEAgLTY3MDIwLDYgKzY3MTU1LDE2IEBACisgICAgICAgPC9tZXRob2Q+CisgICAg IDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtYmluYXJ5bGl0ZXJhbC5j cyI+CisrICAgIDx0eXBlIG5hbWU9IkRlbW8iPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIg TWFpbigpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjUwMzwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgi PgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBl PgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC1jbHMtMDAuY3MiPgorICAgICA8dHlw ZSBuYW1lPSJDTFNDTGFzc182Ij4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgYWRkX0Rpc3Bv c2VkKERlbGVnYXRlKSIgYXR0cnM9IjIxODIiPgorQEAgLTY4NjQxLDcgKzY4Nzg2LDcgQEAKKyAg IDx0ZXN0IG5hbWU9InRlc3QtZGVjbC1leHByLTA1LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iWCI+ CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFRlc3QoU3lzdGVtLlN0cmluZykiIGF0dHJzPSIx MjkiPgorLSAgICAgICAgPHNpemU+Mjk8L3NpemU+CisrICAgICAgICA8c2l6ZT42Mjwvc2l6ZT4K KyAgICAgICA8L21ldGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gQ2FsbChTeXN0 ZW0uU3RyaW5nIEJ5UmVmKSIgYXR0cnM9IjE0NSI+CisgICAgICAgICA8c2l6ZT4xNzwvc2l6ZT4K K0BAIC02ODY1NCw2ICs2ODc5OSwyMiBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+ CisgICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LWRlY2wtZXhwci0wNi5jcyI+CisrICAg IDx0eXBlIG5hbWU9IkMiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iQm9vbGVhbiBGb28oSW50MzIg QnlSZWYpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwv bWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgor KyAgICAgICAgPHNpemU+ODwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IkJvb2xlYW4gJmx0O2YmZ3Q7bV9fMCgpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxz aXplPjE1PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9p ZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT40Mjwvc2l6ZT4KKysgICAg ICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVz dC1kZWZhdWx0LTAxLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iWCI+CisgICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNjg2NzQsNiArNjg4MzUsOSBAQAor ICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgJmx0O000Jmd0O21fXzAoKSIgYXR0cnM9IjE0NSI+ CisgICAgICAgICA8c2l6ZT45PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCBGb28oSUksIElJLCBJSSkiIGF0dHJzPSIxNDUiPgorKyAgICAgICAgPHNp emU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90ZXN0Pgor ICAgPHRlc3QgbmFtZT0idGVzdC1kZWZhdWx0LTAyLmNzIj4KK0BAIC02OTE1OCw2ICs2OTMyMiwy MSBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8dGVz dCBuYW1lPSJ0ZXN0LWZpeGVkLTAxLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iQyI+CisrICAgICAg PG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4z OTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0 b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21l dGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSJDK0ZpeGFibGUiPgorKyAgICAg IDxtZXRob2QgbmFtZT0iSW50MzImYW1wOyBHZXRQaW5uYWJsZVJlZmVyZW5jZSgpIiBhdHRycz0i MTM0Ij4KKysgICAgICAgIDxzaXplPjMyPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8 L3R5cGU+CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJ0ZXN0LWludGVycG9sYXRpb24tMDEu Y3MiPgorICAgICA8dHlwZSBuYW1lPSJUZXN0Ij4KKyAgICAgICA8bWV0aG9kIG5hbWU9IkludDMy IE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNzI1NjQsNyArNzI3NDMsNyBAQAorICAgICA8L3R5 cGU+CisgICAgIDx0eXBlIG5hbWU9IlgrJmx0O1Rlc3QmZ3Q7Y19fSXRlcmF0b3IwIj4KKyAgICAg ICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gTW92ZU5leHQoKSIgYXR0cnM9IjQ4NiI+CistICAgICAg ICA8c2l6ZT4xODQ8L3NpemU+CisrICAgICAgICA8c2l6ZT4yMDY8L3NpemU+CisgICAgICAgPC9t ZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBTeXN0ZW0uQ29sbGVjdGlvbnMuR2Vu ZXJpYy5JRW51bWVyYXRvciZsdDtpbnQmZ3Q7LmdldF9DdXJyZW50KCkiIGF0dHJzPSIyNTI5Ij4K KyAgICAgICAgIDxzaXplPjE0PC9zaXplPgorQEAgLTcyNzUwLDYgKzcyOTI5LDIxIEBACisgICAg ICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRl c3QtcGF0dGVybi0xMy5jcyI+CisrICAgIDx0eXBlIG5hbWU9IkMiPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXpl PgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9IkIiPgor KyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAg PHNpemU+MzU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJW b2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAg ICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRl c3QtcHJhZ21hLXVucmVjb2duaXplZC5jcyI+CisgICAgIDx0eXBlIG5hbWU9IkMiPgorICAgICAg IDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorQEAgLTczMTU1LDYgKzcz MzQ5LDExIEBACisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRlc3Qt cmVmLTA3LmNzIj4KKysgICAgPHR5cGUgbmFtZT0iVGVzdE1haW4iPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+Njwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorICAgICA8dHlwZSBuYW1lPSJUZXN0Ij4K KyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKyAgICAgICAg IDxzaXplPjE4PC9zaXplPgorQEAgLTczMjQzLDYgKzczNDQyLDMyIEBACisgICAgICAgPC9tZXRo b2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtcmVmLTEx LmNzIj4KKysgICAgPHR5cGUgbmFtZT0iUHJvZ3JhbSI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJJ bnQzMiBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+MzQ8L3NpemU+CisrICAg ICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2 Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwv dHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtcmVmLTEyLmNzIj4KKysgICAg PHR5cGUgbmFtZT0iWCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9 IjE1MCI+CisrICAgICAgICA8c2l6ZT4xNjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAg ICA8bWV0aG9kIG5hbWU9IkludDMyJmFtcDsgRm9vKEJ5dGUgQnlSZWYpIiBhdHRycz0iMTQ1Ij4K KysgICAgICAgIDxzaXplPjE0PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCBCYXIoSW50MzIgQnlSZWYpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxz aXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAg PC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRlc3Qt c3RhdGljLXVzaW5nLTAxLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iQS5CLlgiPgorICAgICAgIDxt ZXRob2QgbmFtZT0iSW50MzIgVGVzdCgpIiBhdHRycz0iMTUwIj4KK0BAIC03MzQ4Miw3ICs3Mzcw Nyw3IEBACisgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4KKyAgICAgICA8L21ldGhvZD4KKyAgICAg ICA8bWV0aG9kIG5hbWU9IkludDMyIFRlc3QoKSIgYXR0cnM9IjEzNCI+CistICAgICAgICA8c2l6 ZT4xMDwvc2l6ZT4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisgICAgICAgPC9tZXRob2Q+Cisg ICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uT2JqZWN0IEZvbygpIiBhdHRycz0iMTI5Ij4KKyAg ICAgICAgIDxzaXplPjEwPC9zaXplPgorQEAgLTczNDkxLDE2ICs3MzcxNiwxNiBAQAorICAgICAg ICAgPHNpemU+MjM8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1l PSJWb2lkIFRlc3QzKEludDMyIEJ5UmVmKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8c2l6ZT4z PC9zaXplPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKyAgICAgICA8L21ldGhvZD4KKyAgICAg ICA8bWV0aG9kIG5hbWU9IkludDMyIGdldF9JdGVtKEludDMyKSIgYXR0cnM9IjIxNzciPgorLSAg ICAgICAgPHNpemU+MTA8L3NpemU+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorICAgICAgIDwv bWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBhZGRfRXZlbnQoU3lzdGVtLkFjdGlv bikiIGF0dHJzPSIyMTgyIj4KKy0gICAgICAgIDxzaXplPjM8L3NpemU+CisrICAgICAgICA8c2l6 ZT4yPC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBy ZW1vdmVfRXZlbnQoU3lzdGVtLkFjdGlvbikiIGF0dHJzPSIyMTgyIj4KKy0gICAgICAgIDxzaXpl PjM8L3NpemU+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorICAg ICAgIDxtZXRob2QgbmFtZT0iVm9pZCBUZXN0RXhwcl8xKEJvb2xlYW4pIiBhdHRycz0iMTI5Ij4K KyAgICAgICAgIDxzaXplPjIxPC9zaXplPgorQEAgLTczNTI3LDcgKzczNzUyLDcgQEAKKyAgICAg ICAgIDxzaXplPjc8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1l PSJJbnQzMiBUZXN0RXhwcl82KEludDMyIEJ5UmVmKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8 c2l6ZT4xMDwvc2l6ZT4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisgICAgICAgPC9tZXRob2Q+ CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBUZXN0RXhwcl83KEludDMyIEJ5UmVmKSIgYXR0 cnM9IjEyOSI+CisgICAgICAgICA8c2l6ZT4xNTwvc2l6ZT4KK0BAIC03MzU2OSw3ICs3Mzc5NCw3 IEBACisgICA8dGVzdCBuYW1lPSJ0ZXN0LXR1cGxlLTAyLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0i VHVwbGVDb252ZXJzaW9ucyI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0 cnM9IjE1MCI+CistICAgICAgICA8c2l6ZT4zMTQ8L3NpemU+CisrICAgICAgICA8c2l6ZT4zNjg8 L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEZvb1tU XShUKSIgYXR0cnM9IjE0NSI+CisgICAgICAgICA8c2l6ZT4yPC9zaXplPgorQEAgLTczNzYxLDYg KzczOTg2LDI5IEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4K KysgIDx0ZXN0IG5hbWU9InRlc3QtdHVwbGUtMTAuY3MiPgorKyAgICA8dHlwZSBuYW1lPSJQcm9n cmFtIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+Cisr ICAgICAgICA8c2l6ZT42NTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlN5c3RlbS5WYWx1ZVR1cGxlYDJbU3lzdGVtLlN0cmluZyxTeXN0ZW0uSW50MzJdICZs dDtNYWluJmd0O21fXzAoU3lzdGVtLlJlZmxlY3Rpb24uRmllbGRJbmZvKSIgYXR0cnM9IjE0NSI+ CisrICAgICAgICA8c2l6ZT4yMTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorKyAgPHRl c3QgbmFtZT0idGVzdC10dXBsZS0xMS5jcyI+CisrICAgIDx0eXBlIG5hbWU9IlByb2dyYW0iPgor KyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAg IDxzaXplPjcwPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0i Vm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAg ICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJ0 ZXN0LXZhci0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlRlc3QiPgorICAgICAgIDxtZXRob2Qg bmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BAIC03Mzg5Niw0ICs3NDE0NCw0IEBA CisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKy08L3Rlc3RzPgor XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrPC90ZXN0cz4KK2RpZmYgLS1naXQgYS9tc3Zj L3NjcmlwdHMvU3lzdGVtLldlYi5wcmUgYi9tc3ZjL3NjcmlwdHMvU3lzdGVtLldlYi5wcmUKK2lu ZGV4IGMwNzFiZjQ1YmZkLi44ZjhkMjYyNTk3ZiAxMDA2NDQKKy0tLSBhL21zdmMvc2NyaXB0cy9T eXN0ZW0uV2ViLnByZQorKysrIGIvbXN2Yy9zY3JpcHRzL1N5c3RlbS5XZWIucHJlCitAQCAtMSAr MSBAQAorLUBNT05PQCAkKFByb2plY3REaXIpXC4uXGxpYlxuZXRfNF94XGN1bGV2ZWwuZXhlIC1v ICQoUHJvamVjdERpcilcU3lzdGVtLldlYlxVcGxldmVsSGVscGVyLmNzICQoUHJvamVjdERpcilc VXBsZXZlbEhlbHBlckRlZmluaXRpb25zLnhtbAorK0BNT05PQCAkKFtNU0J1aWxkXTo6R2V0RGly ZWN0b3J5TmFtZU9mRmlsZUFib3ZlKCQoVGFyZ2V0RGlyKSwgY3VsZXZlbC5leGUpKVxjdWxldmVs LmV4ZSAtbyAkKFByb2plY3REaXIpXFN5c3RlbS5XZWJcVXBsZXZlbEhlbHBlci5jcyAkKFByb2pl Y3REaXIpXFVwbGV2ZWxIZWxwZXJEZWZpbml0aW9ucy54bWwKK2RpZmYgLS1naXQgYS9tc3ZjL3Nj cmlwdHMvY3Nwcm9qLnRtcGwgYi9tc3ZjL3NjcmlwdHMvY3Nwcm9qLnRtcGwKK2luZGV4IDY0MmM5 NTM3MzIxLi5jMThiNTFkMzM0ZSAxMDA2NDQKKy0tLSBhL21zdmMvc2NyaXB0cy9jc3Byb2oudG1w bAorKysrIGIvbXN2Yy9zY3JpcHRzL2NzcHJvai50bXBsCitAQCAtMTcsNiArMTcsNyBAQAorICAg ICA8SW50ZXJtZWRpYXRlT3V0cHV0UGF0aD5vYmotQE9VVFBVVFNVRkZJWEA8L0ludGVybWVkaWF0 ZU91dHB1dFBhdGg+DQorICAgICA8R2VuZXJhdGVUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGU+ZmFs c2U8L0dlbmVyYXRlVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlPg0KKyAgICAgQE5PU1RETElCQA0K KysgICAgQE1FVEFEQVRBVkVSU0lPTkANCisgICAgIEBTVEFSVFVQT0JKRUNUQA0KKyAgICAgQE5P Q09ORklHQA0KKyAgICAgQEFMTE9XVU5TQUZFQA0KK2RpZmYgLS1naXQgYS9tc3ZjL3NjcmlwdHMv Z2VucHJvai5jcyBiL21zdmMvc2NyaXB0cy9nZW5wcm9qLmNzCitpbmRleCAzOTg3YWJiMjEyYi4u MTQ0MDgwMGIyYjMgMTAwNjQ0CistLS0gYS9tc3ZjL3NjcmlwdHMvZ2VucHJvai5jcworKysrIGIv bXN2Yy9zY3JpcHRzL2dlbnByb2ouY3MKK0BAIC0yNywyNyArMjcsNDMgQEAgcHVibGljIGVudW0g VGFyZ2V0IHsKKyAKKyBjbGFzcyBTbG5HZW5lcmF0b3IgeworIAlwdWJsaWMgc3RhdGljIHJlYWRv bmx5IHN0cmluZyBOZXdMaW5lID0gIlxyXG4iOyAvL0Vudmlyb25tZW50Lk5ld0xpbmU7IC8vICJc biI7IAorLQlwdWJsaWMgU2xuR2VuZXJhdG9yIChzdHJpbmcgZm9ybWF0VmVyc2lvbiA9ICIyMDEy IikKKysJcHVibGljIFNsbkdlbmVyYXRvciAoc3RyaW5nIHNsblZlcnNpb24pCisgCXsKKy0JCXN3 aXRjaCAoZm9ybWF0VmVyc2lvbikgeworLQkJY2FzZSAiMjAwOCI6CistCQkJdGhpcy5oZWFkZXIg PSBNYWtlSGVhZGVyICgiMTAuMDAiLCAiMjAwOCIpOworLQkJCWJyZWFrOworLQkJZGVmYXVsdDoK Ky0JCQl0aGlzLmhlYWRlciA9IE1ha2VIZWFkZXIgKCIxMi4wMCIsICIyMDEyIik7CistCQkJYnJl YWs7CistCQl9CisrCQlDb25zb2xlLldyaXRlTGluZSgiUmVxdWVzdGVkIHNsbiB2ZXJzaW9uIGlz IHswfSIsIHNsblZlcnNpb24pOworKwkJdGhpcy5oZWFkZXIgPSBNYWtlSGVhZGVyICgiMTIuMDAi LCAiMTUiLCAiMTUuMC4wLjAiKTsKKyAJfQorIAorLQljb25zdCBzdHJpbmcgcHJvamVjdF9zdGFy dCA9ICJQcm9qZWN0KFwie3tGQUUwNEVDMC0zMDFGLTExRDMtQkY0Qi0wMEMwNEY3OUVGQkN9fVwi KSA9IFwiezB9XCIsIFwiezF9XCIsIFwiezJ9XCIiOyAvLyBOb3RlOiBObyBuZWVkIHRvIGRvdWJs ZSB1cCBvbiB7fSBhcm91bmQgezJ9CisrCWNvbnN0IHN0cmluZyBwcm9qZWN0X3N0YXJ0ID0gIlBy b2plY3QoXCJ7MH1cIikgPSBcInsxfVwiLCBcInsyfVwiLCBcInszfVwiIjsgLy8gTm90ZTogTm8g bmVlZCB0byBkb3VibGUgdXAgb24ge30gYXJvdW5kIHsyfQorIAljb25zdCBzdHJpbmcgcHJvamVj dF9lbmQgPSAiRW5kUHJvamVjdCI7CisgCisrCXB1YmxpYyBMaXN0PHN0cmluZz4gcHJvZmlsZXMg PSBuZXcgTGlzdDxzdHJpbmc+IHsKKysJCSJuZXRfNF94IiwKKysJCSJtb25vZHJvaWQiLAorKwkJ Im1vbm90b3VjaCIsCisrCQkibW9ub3RvdWNoX3R2IiwKKysJCSJtb25vdG91Y2hfd2F0Y2giLAor KwkJIm9yYmlzIiwKKysJCSJ1bnJlYWwiLAorKwkJIndhc20iLAorKwkJIndpbmFvdCIsCisrCQki eGFtbWFjIiwKKysJfTsKKysKKysJY29uc3Qgc3RyaW5nIGpheV92Y3hwcm9qX2d1aWQgPSAiezVE NDg1RDMyLTNCOUYtNDI4Ny1BQjI0LUM4REE1Qjg5RjUzN30iOworKwljb25zdCBzdHJpbmcgamF5 X3Nsbl9ndWlkID0gIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IjsKKysK KyAJcHVibGljIExpc3Q8TXNidWlsZEdlbmVyYXRvci5Wc0NzcHJvaj4gbGlicmFyaWVzID0gbmV3 IExpc3Q8TXNidWlsZEdlbmVyYXRvci5Wc0NzcHJvaj4gKCk7CisgCXN0cmluZyBoZWFkZXI7Cisg CistCXN0cmluZyBNYWtlSGVhZGVyIChzdHJpbmcgZm9ybWF0VmVyc2lvbiwgc3RyaW5nIHllYXJU YWcpCisrCXN0cmluZyBNYWtlSGVhZGVyIChzdHJpbmcgZm9ybWF0VmVyc2lvbiwgc3RyaW5nIHll YXJUYWcsIHN0cmluZyBtaW5pbXVtVmVyc2lvbikKKyAJeworLQkJcmV0dXJuIHN0cmluZy5Gb3Jt YXQgKCJNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lv biB7MH0iICsgTmV3TGluZSArICIjIFZpc3VhbCBTdHVkaW8gezF9IiwgZm9ybWF0VmVyc2lvbiwg eWVhclRhZyk7CisrCQlyZXR1cm4gc3RyaW5nLkZvcm1hdCAoCisrCQkJIk1pY3Jvc29mdCBWaXN1 YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIHswfSIgKyBOZXdMaW5lICsg CisrCQkJIiMgVmlzdWFsIFN0dWRpbyB7MX0iICsgTmV3TGluZSArIAorKwkJCSJNaW5pbXVtVmlz dWFsU3R1ZGlvVmVyc2lvbiA9IHsyfSIsIAorKwkJCWZvcm1hdFZlcnNpb24sIHllYXJUYWcsCisr CQkJbWluaW11bVZlcnNpb24KKysJCSk7CisgCX0KKyAKKyAJcHVibGljIHZvaWQgQWRkIChNc2J1 aWxkR2VuZXJhdG9yLlZzQ3Nwcm9qIHZzcHJvaikKK0BAIC01OSw2ICs3NSw0MCBAQCBjbGFzcyBT bG5HZW5lcmF0b3IgeworIAkJfQorIAl9CisgCisrCXByaXZhdGUgdm9pZCBXcml0ZVByb2plY3RS ZWZlcmVuY2UgKFN0cmVhbVdyaXRlciBzbG4sIHN0cmluZyBwcmVmaXhHdWlkLCBzdHJpbmcgbGli cmFyeSwgc3RyaW5nIHJlbGF0aXZlUGF0aCwgc3RyaW5nIHByb2plY3RHdWlkLCBwYXJhbXMgc3Ry aW5nW10gZGVwZW5kZW5jeUd1aWRzKQorKwl7CisrCQlzbG4uV3JpdGVMaW5lIChwcm9qZWN0X3N0 YXJ0LCBwcmVmaXhHdWlkLCBsaWJyYXJ5LCByZWxhdGl2ZVBhdGgsIHByb2plY3RHdWlkKTsKKysK KysJCWZvcmVhY2ggKHZhciBndWlkIGluIGRlcGVuZGVuY3lHdWlkcykgeworKyAgICAJCXNsbi5X cml0ZUxpbmUgKCIgICAgUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0 UHJvamVjdCIpOworKyAgICAJCXNsbi5Xcml0ZUxpbmUgKCIgICAgICAgIHswfSA9IHswfSIsIGd1 aWQpOworKyAgICAJCXNsbi5Xcml0ZUxpbmUgKCIgICAgRW5kUHJvamVjdFNlY3Rpb24iKTsKKysJ CX0KKysKKysJCXNsbi5Xcml0ZUxpbmUgKHByb2plY3RfZW5kKTsKKysJfQorKworKwlwcml2YXRl IHZvaWQgV3JpdGVQcm9qZWN0UmVmZXJlbmNlIChTdHJlYW1Xcml0ZXIgc2xuLCBzdHJpbmcgc2xu RnVsbFBhdGgsIE1zYnVpbGRHZW5lcmF0b3IuVnNDc3Byb2ogcHJvaikKKysJeworKwkJdmFyIHVu aXhQcm9qRmlsZSA9IHByb2ouY3NQcm9qRmlsZW5hbWUuUmVwbGFjZSAoIlxcIiwgIi8iKTsKKysJ CXZhciBmdWxsUHJvalBhdGggPSBQYXRoLkdldEZ1bGxQYXRoICh1bml4UHJvakZpbGUpOworKwkJ dmFyIHJlbGF0aXZlUGF0aCA9IE1zYnVpbGRHZW5lcmF0b3IuR2V0UmVsYXRpdmVQYXRoIChzbG5G dWxsUGF0aCwgZnVsbFByb2pQYXRoKTsKKysJCXZhciBkZXBlbmRlbmN5R3VpZHMgPSBuZXcgc3Ry aW5nWzBdOworKwkJaWYgKHByb2oucHJlQnVpbGRFdmVudC5Db250YWlucyAoImpheSIpKQorKwkJ CWRlcGVuZGVuY3lHdWlkcyA9IG5ldyBbXSB7IGpheV92Y3hwcm9qX2d1aWQgfTsKKysJCVdyaXRl UHJvamVjdFJlZmVyZW5jZShzbG4sICJ7RkFFMDRFQzAtMzAxRi0xMUQzLUJGNEItMDBDMDRGNzlF RkJDfSIsIHByb2oubGlicmFyeSwgcmVsYXRpdmVQYXRoLCBwcm9qLnByb2plY3RHdWlkLCBkZXBl bmRlbmN5R3VpZHMpOworKwl9CisrCisrCXByaXZhdGUgdm9pZCBXcml0ZVByb2plY3RDb25maWd1 cmF0aW9uUGxhdGZvcm1zIChTdHJlYW1Xcml0ZXIgc2xuLCBzdHJpbmcgZ3VpZCwgc3RyaW5nIHBs YXRmb3JtVG9CdWlsZCkKKysJeworKwkJZm9yZWFjaCAodmFyIHByb2ZpbGUgaW4gcHJvZmlsZXMp IHsKKysJCQlzbG4uV3JpdGVMaW5lICgiXHRcdHswfS5EZWJ1Z3x7MX0uQWN0aXZlQ2ZnID0gRGVi dWd8ezJ9IiwgZ3VpZCwgcHJvZmlsZSwgcGxhdGZvcm1Ub0J1aWxkKTsKKysJCQlzbG4uV3JpdGVM aW5lICgiXHRcdHswfS5EZWJ1Z3x7MX0uQnVpbGQuMCA9IERlYnVnfHsyfSIsIGd1aWQsIHByb2Zp bGUsIHBsYXRmb3JtVG9CdWlsZCk7CisrCQkJc2xuLldyaXRlTGluZSAoIlx0XHR7MH0uUmVsZWFz ZXx7MX0uQWN0aXZlQ2ZnID0gUmVsZWFzZXx7Mn0iLCBndWlkLCBwcm9maWxlLCBwbGF0Zm9ybVRv QnVpbGQpOworKwkJCXNsbi5Xcml0ZUxpbmUgKCJcdFx0ezB9LlJlbGVhc2V8ezF9LkJ1aWxkLjAg PSBSZWxlYXNlfHsyfSIsIGd1aWQsIHByb2ZpbGUsIHBsYXRmb3JtVG9CdWlsZCk7CisrCQl9Cisr CX0KKysKKyAJcHVibGljIHZvaWQgV3JpdGUgKHN0cmluZyBmaWxlbmFtZSkKKyAJeworIAkJdmFy IGZ1bGxQYXRoID0gUGF0aC5HZXREaXJlY3RvcnlOYW1lIChmaWxlbmFtZSkgKyAiLyI7CitAQCAt NjYsMjcgKzExNiwzMiBAQCBjbGFzcyBTbG5HZW5lcmF0b3IgeworIAkJdXNpbmcgKHZhciBzbG4g PSBuZXcgU3RyZWFtV3JpdGVyIChmaWxlbmFtZSkpIHsKKyAJCQlzbG4uV3JpdGVMaW5lICgpOwor IAkJCXNsbi5Xcml0ZUxpbmUgKGhlYWRlcik7CisrCisrCQkJLy8gTWFudWFsbHkgaW5zZXJ0IGph eSdzIHZjeHByb2ouIFdlIGRlcGVuZCBvbiBqYXkuZXhlIHRvIHBlcmZvcm0gYnVpbGQgc3RlcHMg bGF0ZXIuCisrCQkJV3JpdGVQcm9qZWN0UmVmZXJlbmNlIChzbG4sIGpheV9zbG5fZ3VpZCwgImph eSIsICJtY3NcXGpheVxcamF5LnZjeHByb2oiLCBqYXlfdmN4cHJval9ndWlkKTsKKysKKyAJCQlm b3JlYWNoICh2YXIgcHJvaiBpbiBsaWJyYXJpZXMpIHsKKy0JCQkJdmFyIHVuaXhQcm9qRmlsZSA9 IHByb2ouY3NQcm9qRmlsZW5hbWUuUmVwbGFjZSAoIlxcIiwgIi8iKTsKKy0JCQkJdmFyIGZ1bGxQ cm9qUGF0aCA9IFBhdGguR2V0RnVsbFBhdGggKHVuaXhQcm9qRmlsZSk7CistCQkJCXNsbi5Xcml0 ZUxpbmUgKHByb2plY3Rfc3RhcnQsIHByb2oubGlicmFyeSwgTXNidWlsZEdlbmVyYXRvci5HZXRS ZWxhdGl2ZVBhdGggKGZ1bGxQYXRoLCBmdWxsUHJvalBhdGgpLCBwcm9qLnByb2plY3RHdWlkKTsK Ky0JCQkJc2xuLldyaXRlTGluZSAocHJvamVjdF9lbmQpOworKwkJCQlXcml0ZVByb2plY3RSZWZl cmVuY2UgKHNsbiwgZnVsbFBhdGgsIHByb2opOworIAkJCX0KKysKKyAJCQlzbG4uV3JpdGVMaW5l ICgiR2xvYmFsIik7CisgCisgCQkJc2xuLldyaXRlTGluZSAoIlx0R2xvYmFsU2VjdGlvbihTb2x1 dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24iKTsKKy0JCQlzbG4uV3Jp dGVMaW5lICgiXHRcdERlYnVnfEFueSBDUFUgPSBEZWJ1Z3xBbnkgQ1BVIik7CistCQkJc2xuLldy aXRlTGluZSAoIlx0XHRSZWxlYXNlfEFueSBDUFUgPSBSZWxlYXNlfEFueSBDUFUiKTsKKysJCQlm b3JlYWNoICh2YXIgcHJvZmlsZSBpbiBwcm9maWxlcykgeworKwkJCQlzbG4uV3JpdGVMaW5lICgi XHRcdERlYnVnfHswfSA9IERlYnVnfHswfSIsIHByb2ZpbGUpOworKwkJCQlzbG4uV3JpdGVMaW5l ICgiXHRcdFJlbGVhc2V8ezB9ID0gUmVsZWFzZXx7MH0iLCBwcm9maWxlKTsKKysJCQl9CisgCQkJ c2xuLldyaXRlTGluZSAoIlx0RW5kR2xvYmFsU2VjdGlvbiIpOworIAorIAkJCXNsbi5Xcml0ZUxp bmUgKCJcdEdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9z dFNvbHV0aW9uIik7CisrCisrCQkJLy8gTWFudWFsbHkgaW5zZXJ0IGpheSdzIGNvbmZpZ3VyYXRp b25zIGJlY2F1c2UgdGhleSBhcmUgZGlmZmVyZW50CisrCQkJV3JpdGVQcm9qZWN0Q29uZmlndXJh dGlvblBsYXRmb3JtcyAoc2xuLCBqYXlfdmN4cHJval9ndWlkLCAiV2luMzIiKTsKKysKKyAJCQlm b3JlYWNoICh2YXIgcHJvaiBpbiBsaWJyYXJpZXMpIHsKKy0JCQkJdmFyIGd1aWQgPSBwcm9qLnBy b2plY3RHdWlkOworLQkJCQlzbG4uV3JpdGVMaW5lICgiXHRcdHswfS5EZWJ1Z3xBbnkgQ1BVLkFj dGl2ZUNmZyA9IERlYnVnfEFueSBDUFUiLCBndWlkKTsKKy0JCQkJc2xuLldyaXRlTGluZSAoIlx0 XHR7MH0uRGVidWd8QW55IENQVS5CdWlsZC4wID0gRGVidWd8QW55IENQVSIsIGd1aWQpOworLQkJ CQlzbG4uV3JpdGVMaW5lICgiXHRcdHswfS5SZWxlYXNlfEFueSBDUFUuQWN0aXZlQ2ZnID0gUmVs ZWFzZXxBbnkgQ1BVIiwgZ3VpZCk7CistCQkJCXNsbi5Xcml0ZUxpbmUgKCJcdFx0ezB9LlJlbGVh c2V8QW55IENQVS5CdWlsZC4wID0gUmVsZWFzZXxBbnkgQ1BVIiwgZ3VpZCk7CisrCQkJCVdyaXRl UHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMgKHNsbiwgcHJvai5wcm9qZWN0R3VpZCwgIkFu eSBDUFUiKTsKKyAJCQl9CisrCisgCQkJc2xuLldyaXRlTGluZSAoIlx0RW5kR2xvYmFsU2VjdGlv biIpOworIAorIAkJCXNsbi5Xcml0ZUxpbmUgKCJcdEdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9w ZXJ0aWVzKSA9IHByZVNvbHV0aW9uIik7CitAQCAtNjM0LDYgKzY4OSw3IEBAIGNsYXNzIE1zYnVp bGRHZW5lcmF0b3IgeworIAkJcHVibGljIExpc3Q8VnNDc3Byb2o+IHByb2pSZWZlcmVuY2VzID0g bmV3IExpc3Q8VnNDc3Byb2o+ICgpOworIAkJcHVibGljIHN0cmluZyBsaWJyYXJ5OworIAkJcHVi bGljIE1zYnVpbGRHZW5lcmF0b3IgTXNidWlsZEdlbmVyYXRvcjsKKysJCXB1YmxpYyBzdHJpbmcg cHJlQnVpbGRFdmVudCwgcG9zdEJ1aWxkRXZlbnQ7CisgCX0KKyAKKyAJcHVibGljIFZzQ3Nwcm9q IENzcHJvajsKK0BAIC02ODIsNyArNzM4LDcgQEAgY2xhc3MgTXNidWlsZEdlbmVyYXRvciB7Cisg CQkJCWZ4X3ZlcnNpb24gPSAiNC4wIjsKKyAJCQkJcHJvZmlsZSA9ICJuZXRfNF8wIjsKKyAJCQl9 IGVsc2UgaWYgKHJlc3BvbnNlLkNvbnRhaW5zIChwcm9maWxlXzRfeCkpIHsKKy0JCQkJZnhfdmVy c2lvbiA9ICI0LjUiOworKwkJCQlmeF92ZXJzaW9uID0gIjQuNi4yIjsKKyAJCQkJcHJvZmlsZSA9 ICJuZXRfNF94IjsKKyAJCQl9CisgCQl9CitAQCAtODgyLDYgKzkzOCwyNiBAQCBjbGFzcyBNc2J1 aWxkR2VuZXJhdG9yIHsKKyAKKyAJCWJvb2wgYmFzaWNfb3JfYnVpbGQgPSAobGlicmFyeS5Db250 YWlucyAoIi1iYXNpYyIpIHx8IGxpYnJhcnkuQ29udGFpbnMgKCItYnVpbGQiKSk7CisgCisrCQkv LyBJZiBhbiBFWEUgaXMgYnVpbHQgd2l0aCBub3N0ZGxpYiwgaXQgd29uJ3Qgd29yayB1bmxlc3Mg cnVuIHdpdGggbW9uby5leGUuIFRoaXMgc3RvcHMgb3VyIGJ1aWxkIHN0ZXBzCisrCQkvLyAgZnJv bSB3b3JraW5nIGluIHZpc3VhbCBzdHVkaW8gKGJlY2F1c2Ugd2UgYWxyZWFkeSByZXBsYWNlIEBN T05PQCB3aXRoICcnIG9uIFdpbmRvd3MuKQorKworKwkJaWYgKFRhcmdldCAhPSBUYXJnZXQuTGli cmFyeSkKKysJCQlTdGRMaWIgPSB0cnVlOworKworKwkJLy8gV2UgaGF2ZSBvdXIgdGFyZ2V0IGZy YW1ld29yayBzZXQgdG8gNC41IGluIG1hbnkgcGxhY2VzIGJlY2F1c2UgYnJva2VuIHNjcmlwdHMg Y2hlY2sgZm9yIGZpbGVzIHdpdGggNC41CisrCQkvLyAgaW4gdGhlIHBhdGgsIGV2ZW4gdGhvdWdo IHdlIGNvbXBpbGUgY29kZSB0aGF0IHVzZXMgNC42IGZlYXR1cmVzLiBTbyB3ZSBuZWVkIHRvIG1h bnVhbGx5IGZpeCB0aGF0IGhlcmUuCisrCisrCQlpZiAoZnhfdmVyc2lvbiA9PSAiNC41IikKKysJ CQlmeF92ZXJzaW9uID0gIjQuNi4yIjsKKysKKysJCS8vIFRoZSBWUzIwMTcgc2lnbmluZyBzeXN0 ZW0gZmFpbHMgdG8gc2lnbiB1c2luZyB0aGlzIGtleSBmb3Igc29tZSByZWFzb24sIHNvIGZvciBu b3csCisrCQkvLyAganVzdCBkaXNhYmxlIGNvZGUgc2lnbmluZyBmb3IgdGhlIG51bml0IGFzc2Vt YmxpZXMuIEl0J3Mgbm90IGltcG9ydGFudC4KKysJCS8vIEknZCByYXRoZXIgZml4IHRoaXMgYnkg dXBkYXRpbmcgdGhlIG1ha2VmaWxlcyBidXQgaXQgc2VlbXMgdG8gYmUgaW1wb3NzaWJsZSB0byBk aXNhYmxlCisrCQkvLyAgY29kZSBzaWduaW5nIGluIG91ciBtYWtlIHN5c3RlbS4uLgorKworKwkJ aWYgKFN0cm9uZ05hbWVLZXlGaWxlPy5Db250YWlucygibnVuaXQuc25rIikgPz8gZmFsc2UpCisr CQkJU3Ryb25nTmFtZUtleUZpbGUgPSBudWxsOworKworIAkJLy8KKyAJCS8vIFJlcGxhY2UgdGhl IHRlbXBsYXRlIHZhbHVlcworIAkJLy8KK0BAIC04OTQsNiArOTcwLDkgQEAgY2xhc3MgTXNidWls ZEdlbmVyYXRvciB7CisgCQkJCSIgICAgPEFzc2VtYmx5T3JpZ2luYXRvcktleUZpbGU+ezB9PC9B c3NlbWJseU9yaWdpbmF0b3JLZXlGaWxlPiIsCisgCQkJCVN0cm9uZ05hbWVLZXlGaWxlLCBTdHJv bmdOYW1lRGVsYXlTaWduID8gIiAgICA8RGVsYXlTaWduPnRydWU8L0RlbGF5U2lnbj4iICsgTmV3 TGluZSA6ICIiKTsKKyAJCX0KKysKKysJCXN0cmluZyBhc3NlbWJseU5hbWUgPSBQYXRoLkdldEZp bGVOYW1lV2l0aG91dEV4dGVuc2lvbiAob3V0cHV0X25hbWUpOworKworIAkJQ3Nwcm9qLm91dHB1 dCA9IHRlbXBsYXRlLgorIAkJCVJlcGxhY2UgKCJAT1VUUFVUVFlQRUAiLCBUYXJnZXQgPT0gVGFy Z2V0LkxpYnJhcnkgPyAiTGlicmFyeSIgOiAiRXhlIikuCisgCQkJUmVwbGFjZSAoIkBTSUdOQVRV UkVAIiwgc3Ryb25nTmFtZVNlY3Rpb24pLgorQEAgLTkwNiw3ICs5ODUsNyBAQCBjbGFzcyBNc2J1 aWxkR2VuZXJhdG9yIHsKKyAJCQlSZXBsYWNlICgiQE5PQ09ORklHQCIsICI8Tm9Db25maWc+IiAr ICghbG9hZF9kZWZhdWx0X2NvbmZpZykuVG9TdHJpbmcgKCkgKyAiPC9Ob0NvbmZpZz4iKS4KKyAJ CQlSZXBsYWNlICgiQEFMTE9XVU5TQUZFQCIsIFVuc2FmZSA/ICI8QWxsb3dVbnNhZmVCbG9ja3M+ dHJ1ZTwvQWxsb3dVbnNhZmVCbG9ja3M+IiA6ICIiKS4KKyAJCQlSZXBsYWNlICgiQEZYX1ZFUlNJ T04iLCBmeF92ZXJzaW9uKS4KKy0JCQlSZXBsYWNlICgiQEFTU0VNQkxZTkFNRUAiLCBQYXRoLkdl dEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiAob3V0cHV0X25hbWUpKS4KKysJCQlSZXBsYWNlICgi QEFTU0VNQkxZTkFNRUAiLCBhc3NlbWJseU5hbWUpLgorIAkJCVJlcGxhY2UgKCJAT1VUUFVURElS QCIsIGJ1aWxkX291dHB1dF9kaXIpLgorIAkJCVJlcGxhY2UgKCJAT1VUUFVUU1VGRklYQCIsIFBh dGguR2V0RmlsZU5hbWUgKGJ1aWxkX291dHB1dF9kaXIpKS4KKyAJCQlSZXBsYWNlICgiQERFRklO RUNPTlNUQU5UU0AiLCBkZWZpbmVzLlRvU3RyaW5nICgpKS4KK0BAIC05MjAsNyArOTk5LDExIEBA IGNsYXNzIE1zYnVpbGRHZW5lcmF0b3IgeworIAkJCVJlcGxhY2UgKCJAQURESVRJT05BTExJQlBB VEhTQCIsIFN0cmluZy5FbXB0eSkuCisgCQkJUmVwbGFjZSAoIkBSRVNPVVJDRVNAIiwgcmVzb3Vy Y2VzLlRvU3RyaW5nICgpKS4KKyAJCQlSZXBsYWNlICgiQE9QVElNSVpFQCIsIE9wdGltaXplID8g InRydWUiIDogImZhbHNlIikuCistCQkJUmVwbGFjZSAoIkBTT1VSQ0VTQCIsIHNvdXJjZXMuVG9T dHJpbmcgKCkpOworKwkJCVJlcGxhY2UgKCJAU09VUkNFU0AiLCBzb3VyY2VzLlRvU3RyaW5nICgp KS4KKysJCQlSZXBsYWNlICgiQE1FVEFEQVRBVkVSU0lPTkAiLCBhc3NlbWJseU5hbWUgPT0gIm1z Y29ybGliIiA/ICI8UnVudGltZU1ldGFkYXRhVmVyc2lvbj5Nb25vPC9SdW50aW1lTWV0YWRhdGFW ZXJzaW9uPiIgOiAiIik7CisrCisrCQlDc3Byb2oucHJlQnVpbGRFdmVudCA9IHByZWJ1aWxkOwor KwkJQ3Nwcm9qLnBvc3RCdWlsZEV2ZW50ID0gcG9zdGJ1aWxkOworIAorIAkJLy9Db25zb2xlLldy aXRlTGluZSAoIkdlbmVyYXRlZCB7MH0iLCBvZmlsZS5SZXBsYWNlICgiXFwiLCAiLyIpKTsKKyAJ CXVzaW5nICh2YXIgbyA9IG5ldyBTdHJlYW1Xcml0ZXIgKGdlbmVyYXRlZFByb2pGaWxlKSkgewor QEAgLTkzOSwxNSArMTAyMiwxMyBAQCBjbGFzcyBNc2J1aWxkR2VuZXJhdG9yIHsKKyAJCWlmIChx ICE9IC0xKQorIAkJCXRhcmdldCA9IHRhcmdldCArIExvYWQgKGxpYnJhcnkuU3Vic3RyaW5nICgw LCBxKSArIHN1ZmZpeCk7CisgCistCQlpZiAodGFyZ2V0LkluZGV4T2YgKCJATU9OT0AiKSAhPSAt MSl7CistCQkJdGFyZ2V0X3VuaXggPSB0YXJnZXQuUmVwbGFjZSAoIkBNT05PQCIsICJtb25vIiku UmVwbGFjZSAoIkBDQVRAIiwgImNhdCIpOworLQkJCXRhcmdldF93aW5kb3dzID0gdGFyZ2V0LlJl cGxhY2UgKCJATU9OT0AiLCAiIikuUmVwbGFjZSAoIkBDQVRAIiwgInR5cGUiKTsKKy0JCX0gZWxz ZSB7CistCQkJdGFyZ2V0X3VuaXggPSB0YXJnZXQuUmVwbGFjZSAoImpheS5leGUiLCAiamF5Iik7 CistCQkJdGFyZ2V0X3dpbmRvd3MgPSB0YXJnZXQ7CistCQl9CisrCQl0YXJnZXRfdW5peCA9IHRh cmdldC5SZXBsYWNlICgiQE1PTk9AIiwgIm1vbm8iKS5SZXBsYWNlICgiQENBVEAiLCAiY2F0Iik7 CisrCQl0YXJnZXRfd2luZG93cyA9IHRhcmdldC5SZXBsYWNlICgiQE1PTk9AIiwgIiIpLlJlcGxh Y2UgKCJAQ0FUQCIsICJ0eXBlIik7CisrCisrCQl0YXJnZXRfdW5peCA9IHRhcmdldF91bml4LlJl cGxhY2UgKCJcXGpheVxcamF5LmV4ZSIsICJcXGpheVxcamF5XFxqYXkiKTsKKysKKyAJCXRhcmdl dF91bml4ID0gdGFyZ2V0X3VuaXguUmVwbGFjZSAoIkBDT1BZQCIsICJjcCIpOworLQkJdGFyZ2V0 X3dpbmRvd3MgPSB0YXJnZXRfdW5peC5SZXBsYWNlICgiQENPUFlAIiwgImNvcHkiKTsKKysJCXRh cmdldF93aW5kb3dzID0gdGFyZ2V0X3dpbmRvd3MuUmVwbGFjZSAoIkBDT1BZQCIsICJjb3B5Iik7 CisgCisgCQl0YXJnZXRfdW5peCA9IHRhcmdldF91bml4LlJlcGxhY2UgKCJcciIsICIiKTsKKyAJ CWNvbnN0IHN0cmluZyBjb25kaXRpb25fdW5peCAgICA9ICJDb25kaXRpb249XCIgJyQoT1MpJyAh PSAnV2luZG93c19OVCcgXCIiOwotLSAKMi40NS4yCgo= --b1=_tnCtFHx6yIKuYDXqbApeYGjbdIBbQ4owcmVz3FJkVmc--