Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wZRG3-0012TV-39 for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jun 2026 10:43:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZRG2-00GqJz-2q for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jun 2026 10:43:02 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wZRG2-00GqJr-0E for pgsql-hackers@lists.postgresql.org; Tue, 16 Jun 2026 10:43:02 +0000 Received: from mail-dy1-x132c.google.com ([2607:f8b0:4864:20::132c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZRG0-00000000d1L-2JNq for pgsql-hackers@postgresql.org; Tue, 16 Jun 2026 10:43:01 +0000 Received: by mail-dy1-x132c.google.com with SMTP id 5a478bee46e88-30bb2df6fbbso1082508eec.0 for ; Tue, 16 Jun 2026 03:43:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781606579; cv=none; d=google.com; s=arc-20240605; b=GYglD6y15FbQBAPwfqoUJf+BT2QhIDuAt8ZQxSth6L5GJQ+8rJerhqhryX4sxZXdhE dTb5QK1y/JvjfbrdGNk2p1ya1xSrD1w8mLeiANuHlEzwTRS6o6RMgziBi06vRUbFjSaP eOSGhWw3k4itBqqJJSWQaOYQuo4t4KKaX7LT70drMltP0xpUizb6890U7nQozse8l2Uw pvZKnCQ4XwIKqTyFC8pwglDssJMW1hRYtmqnOvWucKZjL6hEnHB1MVMnW8zQ/orraiEz D4Kf8uhoYX6CtaeotRKZuXoAopSa8H3QZXHEmoqd4Gtlry2WRhdX1jaQzzReCncorKgU gNxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=t2ueS+n5Wyyvjvf2id1xvE0/oOc8h5Kg0jZHKB9dG8A=; fh=qe82divCrJ9J3YHHVXKaMv+1VPBWEFWW4cGDDuqbzJE=; b=JJIKrTh/79kgLHpurIXLO6ZTseUsgZhxXT7wzw4d7VZV5hF5MUgG1d9rnd7bH0BZ4S itXgOvIGqqDETWB/rfkBmR907aygEgvb/nv6xGtY5btA8hS0EyDeInQa8jpeqjEz+F+n ujH+8KjYOdA8i3/ufcMcVSNfkI3XIGbmzDk1QswTxBiRRqn5VMkVg2ZxxvHjAI35MVrl 5qjFmDdzR4D0qzKUa6VOrsJXtOxlXTW3H+Q1duzislGRgDWIntLMQj6bxWkKF47bLgWB HrNikqFu8WkMTfsa/7MSSM7+KOmU5tP0kA8yk7804O8zFUl3Gq1SlT0NkgVjRt90x38/ sKBw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781606579; x=1782211379; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=t2ueS+n5Wyyvjvf2id1xvE0/oOc8h5Kg0jZHKB9dG8A=; b=iaN3lVHuwWmVs5eBw/olTSphMbDdEn4PzM5hZuXgPXDaUxXDsHoEEoDTAuR4WGr5Ox 5nkdguZNXRsjXW1VrGu2A/mDxsJj6+Nubs3E/RNATNgCI+ao471HIZQpdaRbzD/9/h3b tD0RqAJTDthgdIjSu2GD/K5y/AgF+DkZaZMpy1kn4vtaruYBK3BBu0eYjhNEdUQYbIz6 2DdKoRyOwS4b6wHOPfcV5s0P/ROmqr1PeoNscCUZoRhZPfMdHRlG6Jo8A7l2d83X8Q/I TyiwrUCuwfbtPCFGJvqFNhZfY+Y5vqrpy+NORXERReTBqJLoShZqtpEIbxCrJJfqUicM oRCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781606579; x=1782211379; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=t2ueS+n5Wyyvjvf2id1xvE0/oOc8h5Kg0jZHKB9dG8A=; b=FT8VydO0Ud9Xk9GthanHMfBRMpOtDt4kBnU3ive1SGp1Pyp+Bcc2CgWWKZXQhNXuPw 2u/0RJpjFyc9wDd7sIJOhSuuvYdxbi+3/wgS5lVdC1Cs26O+EJqxP8pM8oRc8WAHnj60 jTmV9a7wQfI4mbT3opJzNDLqgxFhhmJUPVLThBAUxZk9TEuhGPmxRi/jeBF7er0geYbg VEWsxR7PEch//zVGUCNm8l/wJAXIciasQdV3nicrQTasZLzhhGXNKKR6AEYJzIT6RsxL T/VKeSOAqAgaTT4j1O1+2jwLQ4bnUMtrbCDgFy7i1mR4pGsMNPhlBwo6Tf3E03kMNHR1 qNgQ== X-Forwarded-Encrypted: i=1; AFNElJ9Rw0aQSwcxdAKTFvewDOlz0d3bwBkHFvjmjZvEkdOQI4tjWlDc6EprLdEnWH/JGjSWtNcXgdtHMcYFnSGI@postgresql.org X-Gm-Message-State: AOJu0Ywrboqm81bL6VJ7Mr5OQzklSbGL8kzuj1if8XM/YysmibDRtiy4 rw5DoLQSFsZCCyloGO0++W6cIli2ijAUe/YKRKUJHSKQy1NVmYSmzDcKzO/WSAAwWYihaNSOIMS 1wtWPuniMA77PPQAfpba21MCcHL2dB7I= X-Gm-Gg: Acq92OGgRsiOpMQYdOBREWYG8zASwl5mXQCdMosOgKgMmQazm1si8tsb7+y1g4coTPV 7hi51oZ3J8YpJhjM2dW69vu173Xg+670/GxJ/ta5tYNkFs5qwM4HXdj60gf3aHwnkbFlgOeIfje A9dSJa4LRbuEpozIxIPMDmLx5rFJWdm+6BmRUyzxg87naZ1u6Y1RQF97JtJ4hvQif7eCaNpCgzT TR/E3DJbT1DkocSbG0cerMZIYnvD8C4hASbL5/p6tF9p6StTEFkTvFMl3xlmJFWTq+2bn7jUTlI LYKAiaVupS/KwjReiaCLd3UHA5wdOi6QH2xgLA== X-Received: by 2002:a05:7300:862c:b0:30b:8877:77e9 with SMTP id 5a478bee46e88-30ba5eca54bmr2033664eec.17.1781606579195; Tue, 16 Jun 2026 03:42:59 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ashutosh Sharma Date: Tue, 16 Jun 2026 16:12:43 +0530 X-Gm-Features: AVVi8CetY3Ln7Ad284yI_rtPk6g3rGs8lahsPaV3wP0vFi1NsIlZ9Wwojw5xUfY Message-ID: Subject: Re: synchronized_standby_slots behavior inconsistent with quorum-based synchronous replication To: Shlok Kyal Cc: shveta malik , Amit Kapila , "Zhijie Hou (Fujitsu)" , Ajin Cherian , SATYANARAYANA NARLAPURAM , PostgreSQL-development , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000048ea3006545c9bb6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000048ea3006545c9bb6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Jun 16, 2026 at 12:09=E2=80=AFPM Shlok Kyal wrote: > > I checked the CFbot and saw the test was failing [1]. > > It is failing for the test: > not ok 4 - guc_privs 171 ms > Thanks for reporting this. The attached patches address the issue and also incorporate the feedback from Shevta in [1]. [1] - https://www.postgresql.org/message-id/CAJpy0uCKaqD-UfCX%3DQ5WkdtxUS8Z= CJwLduegi5Etdx7gkV-02g%40mail.gmail.com -- With Regards, Ashutosh Sharma. --00000000000048ea3006545c9bb6 Content-Type: application/octet-stream; name="0003-Add-FIRST-N-and-N-.-priority-syntax-to-synchronized_.patch" Content-Disposition: attachment; filename="0003-Add-FIRST-N-and-N-.-priority-syntax-to-synchronized_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqgihdi22 RnJvbSBkZGNlMTI0N2NmMGFiNDAxNDc4YzJmZjA2MzUzNTc1MjBkYTNhMzMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAxNiBKdW4gMjAyNiAwOToxMTowNyArMDAwMApTdWJqZWN0OiBbUEFUQ0gg My8zXSBBZGQgRklSU1QgTiBhbmQgTiAoLi4uKSBwcmlvcml0eSBzeW50YXggdG8KIHN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzCgpFeHRlbmQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdG8g c3VwcG9ydCBleHBsaWNpdCBwcmlvcml0eQpmb3JtcyBhbGlnbmVkIHdpdGggc3luY2hyb25vdXNf c3RhbmRieV9uYW1lcy4KCi0gRklSU1QgTiAoc2xvdDEsIHNsb3QyLCAuLi4pCi0gTiAoc2xvdDEs IHNsb3QyLCAuLi4pIGFzIHNob3J0aGFuZCBmb3IgRklSU1QgTgoKSW1wbGVtZW50YXRpb24gZGV0 YWlsczoKCi0gVXNlIHRoZSBTWU5DX1JFUF9ERUZBVUxUIHBhcnNlciBkaXN0aW5jdGlvbiBmcm9t IHRoZSBlYXJsaWVyCiAgcmVmYWN0b3Igc28gcGxhaW4tbGlzdCBzeW50YXggcmVtYWlucyBzZXBh cmF0ZSBmcm9tIHByaW9yaXR5CiAgc3ludGF4LgotIEV4dGVuZCBTdGFuZGJ5U2xvdHNIYXZlQ2F1 Z2h0dXAoKSBwcmlvcml0eSBoYW5kbGluZy4KLSBTZWxlY3Qgc2xvdHMgaW4gbGlzdCBvcmRlci4K LSBTa2lwIG1pc3NpbmcsIGxvZ2ljYWwsIGludmFsaWRhdGVkLCBhbmQgaW5hY3RpdmUgbGFnZ2lu ZyBzbG90cy4KLSBXYWl0IGZvciBhY3RpdmUgbGFnZ2luZyBoaWdoZXItcHJpb3JpdHkgc2xvdHMu Ci0gQ2xhcmlmeSBkdXBsaWNhdGUgaGFuZGxpbmcgZm9yIHByaW9yaXR5IHN5bnRheCBpbiB0aGUK ICBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBkb2N1bWVudGF0aW9uLgotIFNpbXBsaWZ5IGNh dWdodC11cCBjb21tZW50cyBhbmQgY2xhcmlmeSBzdGFuZGJ5IGNvbmZpcm1hdGlvbgogIHdhaXQg Y29tbWVudHMgdG8gbWF0Y2ggdGhlIGZpbmFsIGNvbnRyb2wgZmxvdy4KClRlc3RzIGFuZCBkb2Nz OgoKLSBBZGQgY292ZXJhZ2UgZm9yIEZJUlNUIGJlaGF2aW9yIGFuZCBzaG9ydGhhbmQgTiAoLi4u KSBiZWhhdmlvci4KLSBBZGQgcGxhaW4tbGlzdCBkaXNhbWJpZ3VhdGlvbiB3aXRoIGZpcnN0LXBy ZWZpeGVkIHNsb3QgbmFtZXMuCi0gQWRkIEZJUlNUIGR1cGxpY2F0ZS1lbnRyeSByZWNvdmVyeSBj b3ZlcmFnZSB0byBzaG93IGR1cGxpY2F0ZXMKICBkbyBub3QgY3JlYXRlIGV4dHJhIHByaW9yaXR5 IHBvc2l0aW9ucy4KLSBVcGRhdGUgZG9jcyBmb3IgRklSU1QgYW5kIHNob3J0aGFuZCBwcmlvcml0 eSBzeW50YXggc2VtYW50aWNzLgotIENsYXJpZnkgdGhhdCBkdXBsaWNhdGUgc2xvdCBuYW1lcyBh cmUgaWdub3JlZCBpbiBwcmlvcml0eS1iYXNlZAogIGZvcm1zIGFuZCBwcmVzZXJ2ZSBmaXJzdC1v Y2N1cnJlbmNlIG9yZGVyLgoKQXV0aG9yOiBTYXR5YSBOYXJsYXB1cmFtIDxzYXR5YW5hcmxhcHVy YW1AZ21haWwuY29tPgpBdXRob3I6IEFzaHV0b3NoIFNoYXJtYSA8YXNodS5jb2VrODhAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogU2h2ZXRhIE1hbGlrIDxzaHZldGEubWFsaWtAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogQWppbiBDaGVyaWFuIDxpdHNhamluQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEhvdSwgWmhpamllIDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogRGlsaXAg S3VtYXIgPGRpbGlwYmFsYXV0QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFN1cnlhIFBvb25kbGEg PHN1cnlhcG9vbmRsYTRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSmFwaW4gTGkgPGphcGlubGlA aG90bWFpbC5jb20+ClJldmlld2VkLWJ5OiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFp bC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAg IHwgIDQ1ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAg ICB8ICA0NCArKy0tCiAuLi4vMDU0X3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5w bCAgfCAyMTUgKysrKysrKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMWYxNzZiZDQ4ZjQuLjQ3M2Yy NjQxYjkwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCkBAIC01MTk0LDYgKzUxOTQsNyBAQCBBTlkgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUg Y2xhc3M9IgogICAgICAgICBzZW5kZXIgcHJvY2Vzc2VzIG11c3Qgd2FpdCBvbiBiZWZvcmUgZGVs aXZlcmluZyBkZWNvZGVkIGNoYW5nZXMuIFRoaXMKICAgICAgICAgcGFyYW1ldGVyIHVzZXMgdGhl IGZvbGxvd2luZyBzeW50YXg6CiA8c3lub3BzaXM+CisgIFtGSVJTVF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApCiBBTlkgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u XSApCiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uXQogPC9zeW5vcHNpcz4KQEAgLTUyMDUsOSArNTIwNiwyNCBAQCBBTlkgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFj ZWFibGUgY2xhc3M9IgogICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt X3N5bmM8L3JlcGxhY2VhYmxlPgogICAgICAgICBtdXN0IGJlIGFuIGludGVnZXIgdmFsdWUgZ3Jl YXRlciB0aGFuIHplcm8gYW5kIG11c3Qgbm90IGV4Y2VlZCB0aGUKICAgICAgICAgbnVtYmVyIG9m IGxpc3RlZCBzbG90cy4KLSAgICAgICAgT3RoZXIgZm9ybXMgc3VwcG9ydGVkIGJ5Ci0gICAgICAg IDx4cmVmIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbm91cy1zdGFuZGJ5LW5hbWVzIi8+LCBzdWNoIGFz IHByaW9yaXR5Ci0gICAgICAgIHN5bnRheCwgYXJlIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUga2V5d29yZCA8bGl0ZXJhbD5GSVJT VDwvbGl0ZXJhbD4sIGNvdXBsZWQgd2l0aAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4sIHNwZWNpZmllcworICAgICAgICAgcHJp b3JpdHktYmFzZWQgc2VtYW50aWNzLiBMb2dpY2FsIGRlY29kaW5nIHdpbGwgd2FpdCBmb3IgdGhl IGZpcnN0CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiBhdmFpbGFibGUKKyAgICAgICAgIHBoeXNpY2FsIHNsb3RzIGluIHByaW9y aXR5IG9yZGVyICh0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QpLgorICAgICAgICAg TWlzc2luZywgbG9naWNhbCwgb3IgaW52YWxpZGF0ZWQgc2xvdHMgYXJlIHNraXBwZWQuIEluYWN0 aXZlIHNsb3RzIGFyZQorICAgICAgICAgc2tpcHBlZCBvbmx5IHdoaWxlIHRoZXkgYXJlIGxhZ2dp bmcuIEhvd2V2ZXIsIGlmIGEgc2xvdCBleGlzdHMgYW5kIGlzCisgICAgICAgICB2YWxpZCBhbmQg YWN0aXZlIGJ1dCBoYXMgbm90IHlldCBjYXVnaHQgdXAsIHRoZSBzeXN0ZW0gd2lsbCB3YWl0IGZv ciBpdAorICAgICAgICAgcmF0aGVyIHRoYW4gc2tpcHBpbmcgdG8gbG93ZXItcHJpb3JpdHkgc2xv dHMuIElmLCBhZnRlciBza2lwcGluZworICAgICAgICAgdW51c2FibGUgc2xvdHMsIGZld2VyIHRo YW4KKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVw bGFjZWFibGU+IHVzYWJsZSBzbG90cworICAgICAgICAgcmVtYWluLCBsb2dpY2FsIGRlY29kaW5n IHdhaXRzIHVudGlsIGVub3VnaCBzbG90cyBiZWNvbWUgdXNhYmxlIGFuZAorICAgICAgICAgY2F1 Z2h0IHVwLCBvciB1bnRpbCB0aGUgY29uZmlndXJhdGlvbiBpcyBjaGFuZ2VkLiBUaGUga2V5d29y ZAorICAgICAgICAgPGxpdGVyYWw+RklSU1Q8L2xpdGVyYWw+IGlzIG9wdGlvbmFsIGluIHRoaXMg Zm9ybSwgc28KKyAgICAgICAgIDxsaXRlcmFsPjIgKHNsb3QxLCBzbG90Miwgc2xvdDMpPC9saXRl cmFsPiBhbmQKKyAgICAgICAgIDxsaXRlcmFsPkZJUlNUIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMp PC9saXRlcmFsPiBhcmUgZXF1aXZhbGVudC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIEEgcGxhaW4gY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aG91dCBhIGtleXdvcmQg c3BlY2lmaWVzIHRoYXQKQEAgLTUyNDQsMTkgKzUyNjAsMjYgQEAgQU5ZIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNs YXNzPSIKICAgICAgICAgIGR1cGxpY2F0ZSBlbnRyaWVzIGFyZSBpZ25vcmVkIGFuZCBvbmx5IHRo ZSBmaXJzdCBvY2N1cnJlbmNlIGlzIHVzZWQuCiAgICAgICAgICBUaGUgc2VtYW50aWNzIG9mIDx2 YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiBhcmUKICAgICAgICAg IHRoZXJlZm9yZSBiYXNlZCBvbiB0aGUgdW5pcXVlIHNldCBvZiBsaXN0ZWQgc2xvdCBuYW1lcywg cHJlc2VydmluZyB0aGUKLSAgICAgICAgIG9yaWdpbmFsIG9yZGVyIG9mIGZpcnN0IG9jY3VycmVu Y2UuIFRoaXMgbWVhbnMgdGhhdAotICAgICAgICAgPGxpdGVyYWw+QU5ZIDIgKHNsb3QxLCBzbG90 MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4gaXMgdHJlYXRlZCB0aGUKLSAgICAgICAgIHNhbWUg YXMgPGxpdGVyYWw+QU5ZIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMpPC9saXRlcmFsPiwgYW5kIGEg cGxhaW4KLSAgICAgICAgIGxpc3Qgc3VjaCBhcyA8bGl0ZXJhbD4oc2xvdDEsIHNsb3QxLCBzbG90 Mik8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhlCi0gICAgICAgICBzYW1lIGFzIDxsaXRlcmFsPihz bG90MSwgc2xvdDIpPC9saXRlcmFsPi4gSW4gcGFydGljdWxhciwKKyAgICAgICAgIG9yaWdpbmFs IG9yZGVyIG9mIGZpcnN0IG9jY3VycmVuY2UuIFRoaXMgbWVhbnMgdGhhdCwgaW4KKyAgICAgICAg IHByaW9yaXR5LWJhc2VkIGZvcm1zLCBkdXBsaWNhdGVzIGRvIG5vdCBjcmVhdGUgYWRkaXRpb25h bCBwcmlvcml0eQorICAgICAgICAgcG9zaXRpb25zOiBmb3IgZXhhbXBsZSwKKyAgICAgICAgIDxs aXRlcmFsPkZJUlNUIDIgKHNsb3QxLCBzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4gaXMg dHJlYXRlZCB0aGUKKyAgICAgICAgIHNhbWUgYXMgPGxpdGVyYWw+RklSU1QgMiAoc2xvdDEsIHNs b3QyLCBzbG90Myk8L2xpdGVyYWw+LgorICAgICAgICAgTGlrZXdpc2UsIDxsaXRlcmFsPkFOWSAy IChzbG90MSwgc2xvdDEsIHNsb3QyLCBzbG90Myk8L2xpdGVyYWw+IGlzCisgICAgICAgICB0cmVh dGVkIHRoZSBzYW1lIGFzIDxsaXRlcmFsPkFOWSAyIChzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0 ZXJhbD4sCisgICAgICAgICBhbmQgYSBwbGFpbiBsaXN0IHN1Y2ggYXMgPGxpdGVyYWw+KHNsb3Qx LCBzbG90MSwgc2xvdDIpPC9saXRlcmFsPgorICAgICAgICAgaXMgdHJlYXRlZCB0aGUgc2FtZSBh cyA8bGl0ZXJhbD4oc2xvdDEsIHNsb3QyKTwvbGl0ZXJhbD4uIEluIHBhcnRpY3VsYXIsCiAgICAg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxl PiBtdXN0IG5vdCBleGNlZWQKICAgICAgICAgIHRoZSBudW1iZXIgb2YgdW5pcXVlIGxpc3RlZCBz bG90cy4gU3VjaCBhIGNvbmZpZ3VyYXRpb24gcmVzdWx0cyBpbiBhbgogICAgICAgICAgZXJyb3Ig dG8gcHJldmVudCBpbmRlZmluaXRlIHdhaXRzIGluIFdBTCBzZW5kZXIgcHJvY2Vzc2VzIGR1ZSB0 byBhCiAgICAgICAgICBtaXNjb25maWd1cmVkIDx2YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzPC92YXJuYW1lPiBzZXR0aW5nLgogICAgICAgICA8L3BhcmE+Ci0gICAgICA8cGFyYT4K LSAgICAgICA8bGl0ZXJhbD5BTlk8L2xpdGVyYWw+IGlzIGNhc2UtaW5zZW5zaXRpdmUuCi0gICAg ICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgPGxpdGVyYWw+RklSU1Q8L2xpdGVy YWw+IGFuZCA8bGl0ZXJhbD5BTlk8L2xpdGVyYWw+IGFyZSBjYXNlLWluc2Vuc2l0aXZlLgorICAg ICAgICAgSWYgdGhlc2Uga2V5d29yZHMgYXJlIHVzZWQgYXMgdGhlIG5hbWUgb2YgYSByZXBsaWNh dGlvbiBzbG90LAorICAgICAgICAgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z bG90X25hbWU8L3JlcGxhY2VhYmxlPiBtdXN0CisgICAgICAgICBiZSBkb3VibGUtcXVvdGVkLgor ICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSB1c2Ugb2YgPHZhcm5h bWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IGd1YXJhbnRlZXMKICAgICAg ICAgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggZTA2 YzQyOGQ4NTMuLmRkZTI0MWVlZmM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0zMDY4LDYg KzMwNjgsOCBAQCBDb21wYWN0U3luY1JlcENvbmZpZ01lbWJlck5hbWVzKFN5bmNSZXBDb25maWdE YXRhICpjb25maWcpCiAgKgogICogICBzbG90MSwgc2xvdDIgICAgICAgICAgICAgICAgICAgLS0g d2FpdCBmb3IgQUxMIGxpc3RlZCBzbG90cwogICogICBBTlkgTiAoc2xvdDEsIHNsb3QyLCAuLi4p ICAgICAgLS0gd2FpdCBmb3IgYW55IE4tb2YtTSAocXVvcnVtKQorICogICBGSVJTVCBOIChzbG90 MSwgc2xvdDIsIC4uLikgICAgLS0gd2FpdCBmb3IgZmlyc3QgTiBpbiBwcmlvcml0eSBvcmRlcgor ICogICBOIChzbG90MSwgc2xvdDIsIC4uLikgICAgICAgICAgLS0gc2hvcnRoYW5kIGZvciBGSVJT VCBOCiAgKgogICogTm90ZTogU2ltcGxlIGxpc3Qgc3ludGF4IGlzIGludGVycHJldGVkIGFzICJ3 YWl0IGZvciBBTEwiIGZvciB0aGlzIEdVQywKICAqIHVubGlrZSBzeW5jaHJvbm91c19zdGFuZGJ5 X25hbWVzIHdoZXJlIGl0IG1lYW5zICJGSVJTVCAxIi4KQEAgLTMxMDgsMTQgKzMxMTAsNiBAQCBj aGVja19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyhjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0 cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAotCQlpZiAoc3lu Y3JlcF9wYXJzZV9yZXN1bHQtPnN5bmNyZXBfbWV0aG9kID09IFNZTkNfUkVQX1BSSU9SSVRZKQot CQl7Ci0JCQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KTsKLQkJCUdVQ19jaGVja19lcnJtc2coInByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVk IGZvciBwYXJhbWV0ZXIgXCIlc1wiIiwKLQkJCQkJCQkgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzIik7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQogCQlpZiAoc3luY3JlcF9wYXJzZV9yZXN1 bHQtPm51bV9zeW5jIDw9IDApCiAJCXsKIAkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpOwpAQCAtMzMzNyw2ICszMzMxLDEyIEBAIFJlcG9ydFVuYXZh aWxhYmxlU3luY1N0YW5kYnlTbG90cyhTeW5jU3RhbmRieVNsb3RzU3RhdGVJbmZvICpzbG90X3N0 YXRlcywKICAqICAgU2ltcGxlIGxpc3QgKGUuZy4sICJzbG90MSwgc2xvdDIiKToKICAqICAgICBB TEwgc2xvdHMgbXVzdCBoYXZlIGNhdWdodCB1cC4gUmV0dXJucyBmYWxzZSBvdGhlcndpc2UuCiAg KgorICogICBGSVJTVCBOIChlLmcuLCAiRklSU1QgMiAoc2xvdDEsIHNsb3QyLCBzbG90MykiKToK KyAqICAgICBXYWl0IGZvciB0aGUgZmlyc3QgTiBlbGlnaWJsZSBzbG90cyBpbiBwcmlvcml0eSBv cmRlci4gU2tpcHMgbWlzc2luZywKKyAqICAgICBpbnZhbGlkLCBsb2dpY2FsLCBhbmQgaW5hY3Rp dmUtbGFnZ2luZyBzbG90cyB0byBmaW5kIE4gZWxpZ2libGUgc2xvdHMuCisgKiAgICAgSWYgYW4g YWN0aXZlIHNsb3QgaXMgbGFnZ2luZywgd2FpdHMgZm9yIGl0IChkb2VzIG5vdCBza2lwIHRvIGxv d2VyCisgKiAgICAgcHJpb3JpdHkgc2xvdHMpLgorICoKICAqICAgQU5ZIE4gKGUuZy4sICJBTlkg MiAoc2xvdDEsIHNsb3QyLCBzbG90MykiKToKICAqICAgICBXYWl0IGZvciBhbnkgTiBlbGlnaWJs ZSBzbG90cy4gU2tpcHMgbWlzc2luZywgaW52YWxpZCwgbG9naWNhbCwgYW5kCiAgKiAgICAgbGFn Z2luZyBzbG90cyAoaW5hY3RpdmUgb3IgYWN0aXZlKSB0byBmaW5kIE4gc2xvdHMgdGhhdCBoYXZl IGNhdWdodCB1cC4KQEAgLTMzODcsMTEgKzMzODcsMTQgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdo dHVwKFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCSAqIGZpcnN0IHNsb3Qg dGhhdCBpcyBtaXNzaW5nL2ludmFsaWQvbG9naWNhbCwgb3IgdGhlIGZpcnN0IHNsb3QgdGhhdCBp cwogCSAqIGxhZ2dpbmcgKGluYWN0aXZlIG9yIGFjdGl2ZSkuCiAJICoKLQkgKiB3YWl0X2Zvcl9h bGwgPSBmYWxzZSBtZWFucyB3ZSBzZWxlY3QgTiBmcm9tIE0gY2FuZGlkYXRlcyAoQU5ZIE4gc3lu dGF4KS4KLQkgKiBJbiB0aGlzIG1vZGUsIHNsb3RzIGFscmVhZHkgY2F1Z2h0IHVwIGFyZSBjb3Vu dGVkIGV2ZW4gaWYgaW5hY3RpdmUsIGFuZAotCSAqIGxhZ2dpbmcgc2xvdHMgYXJlIHNraXBwZWQg dW50aWwgZW5vdWdoIHNsb3RzIGhhdmUgY2F1Z2h0IHVwLgotCSAqIER1cGxpY2F0ZSBjb25maWd1 cmVkIHNsb3QgbmFtZXMgZG8gbm90IGFwcGVhciBoZXJlIGJlY2F1c2UgdGhlIGNoZWNrIGhvb2sK LQkgKiBjb21wYWN0cyB0aGVtIG91dCBvZiB0aGUgcGFyc2VkIGNvbmZpZ3VyYXRpb24uCisJICog d2FpdF9mb3JfYWxsID0gZmFsc2UgbWVhbnMgd2Ugc2VsZWN0IE4gZnJvbSBNIGNhbmRpZGF0ZXMg KEZJUlNUIE4gb3IKKwkgKiBBTlkgTiBzeW50YXgpLiBJbiB0aGlzIG1vZGUsIHNsb3RzIGFscmVh ZHkgY2F1Z2h0IHVwIGFyZSBjb3VudGVkIGV2ZW4gaWYKKwkgKiBpbmFjdGl2ZS4gSW4gRklSU1Qg TiBtb2RlLCB3ZSBza2lwIG1pc3NpbmcvaW52YWxpZC9sb2dpY2FsIHNsb3RzIGFuZAorCSAqIGxh Z2dpbmcgaW5hY3RpdmUgc2xvdHMsIGJ1dCB3YWl0IGZvciBhbiBhY3RpdmUgbGFnZ2luZyBzbG90 IHdpdGggaGlnaGVyCisJICogcHJpb3JpdHkuIEluIEFOWSBOIG1vZGUsIHdlIHNraXAgbGFnZ2lu ZyBzbG90cyAoaW5hY3RpdmUgb3IgYWN0aXZlKSB0bworCSAqIGZpbmQgYW55IE4gdGhhdCBoYXZl IGNhdWdodCB1cC4gRHVwbGljYXRlIGNvbmZpZ3VyZWQgc2xvdCBuYW1lcyBkbyBub3QKKwkgKiBh cHBlYXIgaGVyZSBiZWNhdXNlIHRoZSBjaGVjayBob29rIGNvbXBhY3RzIHRoZW0gb3V0IG9mIHRo ZSBwYXJzZWQKKwkgKiBjb25maWd1cmF0aW9uLgogCSAqLwogCXJlcXVpcmVkID0gc3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5udW1fc3luYzsKIAl3YWl0X2Zvcl9hbGwgPSAoc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JF UF9ERUZBVUxUKTsKQEAgLTM0NzQsOCArMzQ3Nyw5IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1 cChYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAkJCSAqIElmIGEgc2xvdCBp cyBpbmFjdGl2ZSBhbmQgbGFnZ2luZywgcmVwb3J0IGl0IGFzIGluYWN0aXZlLiBJZiBpdAogCQkJ ICogaXMgYWN0aXZlIGFuZCBsYWdnaW5nLCByZXBvcnQgaXQgYXMgbGFnZ2luZy4KIAkJCSAqCi0J CQkgKiBJbiBBTEwgbW9kZTogbXVzdCB3YWl0IGZvciBpdC4gSW4gQU5ZIE4gKHF1b3J1bSkgbW9k ZTogc2tpcCBhbmQKLQkJCSAqIHVzZSBhbm90aGVyIHNsb3QuCisJCQkgKiBJbiBBTEwgbW9kZTog bXVzdCB3YWl0IGZvciBpdC4gSW4gRklSU1QgTiAocHJpb3JpdHkpIG1vZGU6CisJCQkgKiBsYWdn aW5nIGFjdGl2ZSBzbG90cyBibG9jaywgd2hpbGUgaW5hY3RpdmUgc2xvdHMgY2FuIGJlCisJCQkg KiBza2lwcGVkLiBJbiBBTlkgTiAocXVvcnVtKSBtb2RlOiBza2lwIGFuZCB1c2UgYW5vdGhlciBz bG90LgogCQkJICovCiAJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnNsb3RfbmFtZSA9 IG5hbWU7CiAJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRlID0KQEAgLTM0ODMs NyArMzQ4Nyw5IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdhaXRfZm9y X2xzbiwgaW50IGVsZXZlbCkKIAkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10ucmVzdGFy dF9sc24gPSByZXN0YXJ0X2xzbjsKIAkJCW51bV9zbG90X3N0YXRlcysrOwogCi0JCQlpZiAod2Fp dF9mb3JfYWxsKQorCQkJaWYgKHdhaXRfZm9yX2FsbCB8fAorCQkJCSghaW5hY3RpdmUgJiYKKwkJ CQkgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5zeW5jcmVwX21ldGhvZCA9PSBT WU5DX1JFUF9QUklPUklUWSkpCiAJCQkJYnJlYWs7CiAJCQlnb3RvIG5leHRfc2xvdDsKIAkJfQpA QCAtMzQ5Niw3ICszNTAyLDcgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIg d2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJCWNhdWdodF91cF9zbG90X251bSsrOwogCi0J CS8qIFN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIHNsb3RzIGhhdmUg Y2F1Z2h0IHVwLiAqLworCQkvKiBTdG9wIG9uY2UgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBzbG90 cyBoYXZlIGNhdWdodCB1cC4gKi8KIAkJaWYgKGNhdWdodF91cF9zbG90X251bSA+PSByZXF1aXJl ZCkKIAkJCWJyZWFrOwogCkBAIC0zNTExLDggKzM1MTcsOCBAQCBuZXh0X3Nsb3Q6CiAJICogcHJv YmxlbSBzdGF0ZXMgYW5kIHJldHVybiBmYWxzZS4KIAkgKgogCSAqIFdlIG9ubHkgZW1pdCBtZXNz YWdlcyB3aGVuIHRoZSByZXF1aXJlbWVudCBpcyBub3QgbWV0IHRvIGF2b2lkCi0JICogbWlzbGVh ZGluZyBtZXNzYWdlcyBpbiBxdW9ydW0gbW9kZSB3aGVyZSBvdGhlciBzbG90cyBtYXkgaGF2ZSBz YXRpc2ZpZWQKLQkgKiB0aGUgY29uZGl0aW9uIGRlc3BpdGUgc29tZSBzbG90cyBoYXZpbmcgaXNz dWVzLgorCSAqIG1pc2xlYWRpbmcgbWVzc2FnZXMgaW4gcXVvcnVtL3ByaW9yaXR5IG1vZGUgd2hl cmUgb3RoZXIgc2xvdHMgbWF5IGhhdmUKKwkgKiBzYXRpc2ZpZWQgdGhlIGNvbmRpdGlvbiBkZXNw aXRlIHNvbWUgc2xvdHMgaGF2aW5nIGlzc3Vlcy4KIAkgKi8KIAlpZiAoY2F1Z2h0X3VwX3Nsb3Rf bnVtIDwgcmVxdWlyZWQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTRf c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNTRfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCmluZGV4IGQzODdlMGM3 ZTdlLi5iODk4MzNiNjc3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTRfc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDU0X3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbApAQCAtNCw2ICs0LDcg QEAKICMgVGVzdCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB3aXRoIGRpZmZlcmVudCBzeW50 YXggbW9kZXM6CiAjIC0gUGxhaW4gbGlzdCAoQUxMIG1vZGUpOiBzbG90MSwgc2xvdDIKICMgLSBB TlkgTiAocXVvcnVtIG1vZGUpOiBBTlkgTiAoc2xvdDEsIHNsb3QyLCAuLi4pCisjIC0gRklSU1Qg TiAocHJpb3JpdHkgbW9kZSk6IEZJUlNUIE4gKHNsb3QxLCBzbG90MiwgLi4uKQogIwogIyBTZXR1 cDogYSAzLW5vZGUgY2x1c3RlciB3aXRoIG9uZSBwcmltYXJ5LCB0d28gcGh5c2ljYWwgc3RhbmRi eXMsIGFuZCBhCiAjIGxvZ2ljYWwgZGVjb2RpbmcgY2xpZW50IHVzaW5nIGEgZmFpbG92ZXItZW5h YmxlZCBzbG90LgpAQCAtMjAwLDE2ICsyMDEsMTY4IEBAIGlzKCRkZWNvZGVkX2JjLCAnMScsCiAJ J3BsYWluIGxpc3Q6IHdvcmtzIHdoZW4gYWxsIHN0YW5kYnlzIGFyZSB1cCcpOwogCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQQVJUIEQ6IEFO WSAyIHdhaXRzIG9uIGFuIGFjdGl2ZSBsYWdnaW5nIHNsb3QKKyMgUEFSVCBEOiBWZXJpZnkgRklS U1QgTiBwcmlvcml0eSBzZW1hbnRpY3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMgU3RvcCBzdGFuZGJ5MSBzbyBzYjFfc2xvdCBjYW4gYmUg Y29udHJvbGxlZCBieSBhIHJhdyByZXBsaWNhdGlvbiBjb25uZWN0aW9uCi0jIHRoYXQga2VlcHMg dGhlIHNsb3QgYWN0aXZlIHdoaWxlIGxhZ2dpbmcuCisjIEZJUlNUIE4gc2hvdWxkOgorIyAxLiBT ZWxlY3QgZmlyc3QgTiBzbG90cyBpbiBwcmlvcml0eSBvcmRlciAobGlzdCBvcmRlcikKKyMgMi4g U2tpcCBtaXNzaW5nL2ludmFsaWQvbG9naWNhbCBzbG90cyBhbmQgaW5hY3RpdmUgbGFnZ2luZyBz bG90cyB0byBmaW5kCisjICAgIE4gY2F1Z2h0LXVwIHNsb3RzCisjIDMuIFdhaXQgZm9yIGFjdGl2 ZSBsYWdnaW5nIHNsb3RzIChub3Qgc2tpcCB0byBsb3dlciBwcmlvcml0eSkKKworIyBUZXN0IEZJ UlNUIDIgKHNiMV9zbG90LCBzYjJfc2xvdCkgd2l0aCBib3RoIHVwOyBzaG91bGQgd2FpdCBmb3Ig Ym90aC4KKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDIgKHNiMV9zbG90LCBzYjJfc2xvdCknIik7 CiskcHJpbWFyeS0+cmVsb2FkOworCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnZmlyc3RfMl9i b3RoX3VwJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRi eTEpOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKK215 ICRkZWNvZGVkX2UyID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNU IGNvdW50KCopIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxv dmVyJywgTlVMTCwgTlVMTCkKKwkgIFdIRVJFIGRhdGEgTElLRSAnJWZpcnN0XzJfYm90aF91cCUn O30pOworaXMoJGRlY29kZWRfZTIsICcxJywKKwknRklSU1QgMjogZGVjb2Rpbmcgd29ya3Mgd2hl biBhbGwgcmVxdWlyZWQgc2xvdHMgYXJlIHVwJyk7CisKKyMgVGVzdCBGSVJTVCAxIChzYjFfc2xv dCwgc2IyX3Nsb3QpIHdpdGggc2IxX3Nsb3QgdW5hdmFpbGFibGUuCiskc3RhbmRieTEtPnN0b3A7 CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0ZJUlNUIDEgKHNiMV9zbG90LCBzYjJfc2xvdCknIik7Cisk cHJpbWFyeS0+cmVsb2FkOworCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnZmlyc3RfMV9za2lw X3VuYXZhaWxhYmxlJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgk c3RhbmRieTIpOworCisjIEZJUlNUIDEgc2hvdWxkIHNraXAgc2IxX3Nsb3QgKHVuYXZhaWxhYmxl KSBhbmQgdXNlIHNiMl9zbG90LgorbXkgJGRlY29kZWRfZTEgPSAkcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKQorCSAgV0hFUkUgZGF0YSBM SUtFICclZmlyc3RfMV9za2lwX3VuYXZhaWxhYmxlJSc7fSk7CitpcygkZGVjb2RlZF9lMSwgJzEn LAorCSdGSVJTVCAxOiBza2lwcyB1bmF2YWlsYWJsZSBmaXJzdCBzbG90LCB1c2VzIHNlY29uZCBz bG90Jyk7CisKKyMgVGVzdCBzaG9ydGhhbmQgcHJpb3JpdHkgc3ludGF4OiBOICguLi4pIG1lYW5z IEZJUlNUIE4gKC4uLikuCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsCisJIicxIChzYjFfc2xvdCwgc2IyX3Nsb3Qp JyIpOworJHByaW1hcnktPnJlbG9hZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ251bV8x X3Nob3J0aGFuZF9wcmlvcml0eScpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJHN0YW5kYnkyKTsKKworbXkgJGRlY29kZWRfbnVtMSA9ICRwcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpCisJICBXSEVSRSBkYXRh IExJS0UgJyVudW1fMV9zaG9ydGhhbmRfcHJpb3JpdHklJzt9KTsKK2lzKCRkZWNvZGVkX251bTEs ICcxJywKKwknMSAoLi4uKTogc2hvcnRoYW5kIHByaW9yaXR5IHN5bnRheCBiZWhhdmVzIGxpa2Ug RklSU1QgMScpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBQQVJUIEU6IEZJUlNUIDEgYW5kIEFOWSAyIHdhaXQgb24gYW4gYWN0aXZlIGxh Z2dpbmcgc2xvdAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworIyBCcmluZyBzdGFuZGJ5MSBiYWNrIHNvIHNiMV9zbG90IGlzIGFjdGl2ZSBhbmQg Y2F1Z2h0IHVwLgorJHN0YW5kYnkxLT5zdGFydDsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlf Y2F0Y2h1cCgkc3RhbmRieTEpOworCisjIFRvIHRlc3QgdGhlIGFjdGl2ZS1idXQtbGFnZ2luZyBz bG90IHBhdGggZGV0ZXJtaW5pc3RpY2FsbHksIHdlIG9wZW4gYSByYXcKKyMgcmVwbGljYXRpb24g Y29ubmVjdGlvbiB0byBzYjFfc2xvdCBzdGFydGluZyBmcm9tIGEgZGVsaWJlcmF0ZWx5IG9sZCBM U04uCisjIHBzcWwgaW4gcmVwbGljYXRpb24gbW9kZSBuZXZlciBzZW5kcyBTdGFuZGJ5IFN0YXR1 cyBVcGRhdGUgbWVzc2FnZXMsIHNvCisjIHRoZSB3YWxzZW5kZXIga2VlcHMgc2IxX3Nsb3QncyBh Y3RpdmVfcGlkIHNldCBidXQgcmVzdGFydF9sc24gbmV2ZXIKKyMgYWR2YW5jZXMuCisKKyMgU3Rv cCBzdGFuZGJ5MSBzbyBpdHMgd2Fsc2VuZGVyIHJlbGVhc2VzIHNiMV9zbG90LCBhbGxvd2luZyBv dXIgcmVwbGljYXRpb24KKyMgY29ubmVjdGlvbiBiZWxvdyB0byBhY3F1aXJlIGl0LgogJHN0YW5k YnkxLT5zdG9wOwogCisjIENhcHR1cmUgYSBzYWZlbHkgb2xkIExTTiB0byBzdHJlYW0gZnJvbSwg YmVmb3JlIHRoZSB0ZXN0IFdBTCByZWNvcmQuCiBteSAkb2xkX2xzbiA9ICRwcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOyIpOwogCisj IEZJUlNUIDEgbXVzdCB3YWl0IGZvciB0aGUgaGlnaGVzdC1wcmlvcml0eSBzbG90IHdoZW4gaXQg aXMgYWN0aXZlIGJ1dCBsYWdnaW5nLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInRklSU1QgMSAoc2IxX3Ns b3QsIHNiMl9zbG90KSciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKK215ICRmaXJzdF9sYWdfbHNu ID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9l bWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2ZpcnN0XzFfbGFnZ2luZ19ibG9ja3MnKTsiCisp OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKKyMgT3Bl biBhIHJhdyByZXBsaWNhdGlvbiBjb25uZWN0aW9uIHRvIHNiMV9zbG90IHN0YXJ0aW5nIGZyb20g JG9sZF9sc24uCisjIFRoaXMgYWN0aXZhdGVzIHRoZSBzbG90IChhY3RpdmVfcGlkIElTIE5PVCBO VUxMKSB3aGlsZSBrZWVwaW5nIHJlc3RhcnRfbHNuCisjIGZyb3plbiBiZWxvdyAkZmlyc3RfbGFn X2xzbiBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb25uZWN0aW9uLgorbXkgJHJlcGxfZmlyc3Qg PSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJcmVwbGljYXRpb24g PT4gJ2RhdGFiYXNlJywKKwlvbl9lcnJvcl9zdG9wID0+IDAsCisJdGltZW91dCA9PiAkUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKyRyZXBsX2ZpcnN0LT5xdWVy eV91bnRpbCgKKwlxci9eJC8sCisJIlNUQVJUX1JFUExJQ0FUSU9OIFNMT1Qgc2IxX3Nsb3QgUEhZ U0lDQUwgJG9sZF9sc247XG4iKTsKKworIyBXYWl0IHVudGlsIHNiMV9zbG90IHNob3dzIGFjdGl2 ZV9waWQsIGNvbmZpcm1pbmcgdGhlIHdhbHNlbmRlciBpcyBsaXZlLgorJHByaW1hcnktPnBvbGxf cXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgcXsKKwlTRUxFQ1QgYWN0aXZlX3BpZCBJUyBOT1QgTlVM TAorCUZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwlXSEVSRSBzbG90X25hbWUgPSAnc2IxX3Ns b3QnCit9KSBvciBkaWUgInJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gZGlkIG5vdCBhY3RpdmF0ZSBz YjFfc2xvdCI7CisKKyMgc2IxX3Nsb3QgaXMgbm93IGFjdGl2ZSBhbmQgaXRzIHJlc3RhcnRfbHNu IGlzIGJlaGluZCAkZmlyc3RfbGFnX2xzbi4KKyMgU3RhcnQgbG9naWNhbCBkZWNvZGluZyBpbiB0 aGUgYmFja2dyb3VuZDsgaXQgbXVzdCBibG9jay4KK215ICRiZ19maXJzdCA9ICRwcmltYXJ5LT5i YWNrZ3JvdW5kX3BzcWwoCisJJ3Bvc3RncmVzJywKKwlvbl9lcnJvcl9zdG9wID0+IDAsCisJdGlt ZW91dCA9PiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKyRi Z19maXJzdC0+cXVlcnlfdW50aWwoCisJcXIvZGVjb2RlX3N0YXJ0LywgcSgKKyAgIFxlY2hvIGRl Y29kZV9zdGFydAorICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2xvZ2lj YWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTsKKykpOworCitvayggJHByaW1hcnktPnBvbGxfcXVl cnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHF7CitTRUxFQ1QgRVhJU1RTICgKKwlTRUxFQ1QgMQor CUZST00gcGdfc3RhdF9hY3Rpdml0eQorCVdIRVJFIHdhaXRfZXZlbnQgPSAnV2FpdEZvclN0YW5k YnlDb25maXJtYXRpb24nCisJICBBTkQgcXVlcnkgTElLRSAnJXBnX2xvZ2ljYWxfc2xvdF9wZWVr X2NoYW5nZXMoJydsb2dpY2FsX2ZhaWxvdmVyJyclJworKTsKK30pLAorCSdGSVJTVCAxOiBkZWNv ZGluZyB3YWl0cyBmb3IgYWN0aXZlIGxhZ2dpbmcgaGlnaGVyLXByaW9yaXR5IHNsb3QnKTsKKwor JHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CiskYmdfZmlyc3QtPnF1aXQ7 CiskcmVwbF9maXJzdC0+cXVpdDsKKworIyBFbnN1cmUgdGhlIHByZXZpb3VzIHJlcGxpY2F0aW9u IGNvbm5lY3Rpb24gaGFzIGZ1bGx5IHJlbGVhc2VkIHNiMV9zbG90CisjIGJlZm9yZSByZXVzaW5n IGl0IGluIHRoZSBuZXh0IHN1YnRlc3QuCiskcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLCBxeworCVNFTEVDVCBhY3RpdmVfcGlkIElTIE5VTEwKKwlGUk9NIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzCisJV0hFUkUgc2xvdF9uYW1lID0gJ3NiMV9zbG90JworfSkgb3IgZGllICJyZXBs aWNhdGlvbiBjb25uZWN0aW9uIGRpZCBub3QgcmVsZWFzZSBzYjFfc2xvdCI7CisKKyMgQ29uc3Vt ZSB0aGUgY2hhbmdlIHNvIHRoZSBzbG90IGlzIGNsZWFuIGZvciB0aGUgbmV4dCB0ZXN0LgorJHBy aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpO30pOworCisjIEFOWSAy IG11c3QgYWxzbyB3YWl0IHdoZW4gb25seSBvbmUgb2YgdHdvIHJlcXVpcmVkIHNsb3RzIGhhcyBj YXVnaHQgdXAuCisjIFJldXNlIHRoZSBzYW1lIHRlY2huaXF1ZTogb3BlbiBhIHJhdyByZXBsaWNh dGlvbiBjb25uZWN0aW9uIHRvIHNiMV9zbG90CisjIGZyb20gJG9sZF9sc24gc28gaXQgaXMgYWN0 aXZlIGJ1dCBpdHMgcmVzdGFydF9sc24gc3RheXMgYmVoaW5kIHRoZSB0YXJnZXQuCisKKyMgQ2Fw dHVyZSBhbm90aGVyIG9sZCBMU04gYmFzZWxpbmUgYmVmb3JlIHRoZSBuZXh0IHRlc3QgV0FMIHJl Y29yZC4KKyRvbGRfbHNuID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGdfY3VycmVudF93YWxfbHNuKCk7Iik7CisKICRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9z dGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKIAkiJ0FOWSAyIChz YjFfc2xvdCwgc2IyX3Nsb3QpJyIpOwogJHByaW1hcnktPnJlbG9hZDsKQEAgLTI3Miw3ICs0MjUs NyBAQCAkcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKIAogCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQQVJU IEU6IER1cGxpY2F0ZSBlbnRyaWVzIGFyZSBpZ25vcmVkIGZvciBxdW9ydW0gY291bnRpbmcKKyMg UEFSVCBGOiBEdXBsaWNhdGUgZW50cmllcyBhcmUgaWdub3JlZCBmb3IgcXVvcnVtIGNvdW50aW5n CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAj IFN0b3Agc3RhbmRieTIgc28gb25seSBzYjFfc2xvdCBjYW4gY2F0Y2ggdXAuCkBAIC0zMTMsNiAr NDY2LDQ2IEBAICRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywgIicnIik7CiAkcHJpbWFyeS0+cmVsb2FkOwogJGJnX2R1 cC0+cXVpdDsKIAorIyBDb25zdW1lIHRoZSBjaGFuZ2UgZm9yIHRoZSBuZXh0IHRlc3QuCiskcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dl dF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7fSk7CisKKyMgRklSU1Qg ZHVwbGljYXRlcyBtdXN0IGFsc28gbm90IGNyZWF0ZSBleHRyYSBwcmlvcml0eSBwb3NpdGlvbnMu CiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRf c3RhbmRieV9zbG90cycsCisJIidGSVJTVCAyIChzYjFfc2xvdCwgc2IxX3Nsb3QsIHNiMl9zbG90 KSciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdmaXJz dF9kdXBsaWNhdGVfZW50cmllc19pZ25vcmVkJyk7IgorKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworCitteSAkYmdfZmlyc3RfZHVwID0gJHByaW1hcnkt PmJhY2tncm91bmRfcHNxbCgKKwkncG9zdGdyZXMnLAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0 aW1lb3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKwor JGJnX2ZpcnN0X2R1cC0+cXVlcnlfdW50aWwoCisJcXIvZGVjb2RlX3N0YXJ0LywgcSgKKyAgIFxl Y2hvIGRlY29kZV9zdGFydAorICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMo J2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTsKKykpOworCitvayggJHByaW1hcnktPnBv bGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHF7CitTRUxFQ1QgRVhJU1RTICgKKwlTRUxF Q1QgMQorCUZST00gcGdfc3RhdF9hY3Rpdml0eQorCVdIRVJFIHdhaXRfZXZlbnQgPSAnV2FpdEZv clN0YW5kYnlDb25maXJtYXRpb24nCisJICBBTkQgcXVlcnkgTElLRSAnJXBnX2xvZ2ljYWxfc2xv dF9wZWVrX2NoYW5nZXMoJydsb2dpY2FsX2ZhaWxvdmVyJyclJworKTsKK30pLAorCSdGSVJTVCBk dXBsaWNhdGVzIGFyZSBpZ25vcmVkIHdoZW4gY291bnRpbmcgcHJpb3JpdHkgc2xvdHMnKTsKKwor JHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMnLCAiJyciKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CiskYmdfZmlyc3RfZHVwLT5x dWl0OworCiAjIENvbnN1bWUgdGhlIGNoYW5nZSBmb3IgdGhlIG5leHQgdGVzdC4KICRwcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxe1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKTt9KTsKQEAgLTMyMyw3ICs1MTYs NyBAQCAkcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKIAogCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQQVJU IEY6IFZlcmlmeSBHVUMgdmFsaWRhdGlvbiByZWplY3RzIGJhZCB2YWx1ZXMKKyMgUEFSVCBHOiBW ZXJpZnkgR1VDIHZhbGlkYXRpb24gcmVqZWN0cyBiYWQgdmFsdWVzCiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBteSAoJHJlc3VsdCwgJHN0ZG91 dCwgJHN0ZGVycik7CkBAIC0zNDAsMTggKzUzMyw2IEBAIGxpa2UoJHN0ZGVyciwgcXIvRVJST1Iv LAogbGlrZSgkc3RkZXJyLCBxci9FUlJPUi8sCiAJJ0dVQyByZWplY3RzIG1hbGZvcm1lZCBBTlkg c3ludGF4Jyk7CiAKLSMgUHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMgeWV0Ci0oJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAk cHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzID0gJ0ZJUlNUIDEgKHNiMV9zbG90LCBzYjJfc2xvdCknOyIpOwotbGlr ZSgkc3RkZXJyLCBxci9wcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBvcnRlZC8sCi0JJ0dVQyBy ZWplY3RzIEZJUlNUIHN5bnRheCcpOwotCi0jIExlZ2FjeSBwcmlvcml0eSBzeW50YXggaXMgbm90 IHN1cHBvcnRlZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB5ZXQKLSgkcmVzdWx0LCAk c3Rkb3V0LCAkc3RkZXJyKSA9ICRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNZ U1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgPSAnMSAoc2IxX3Nsb3QsIHNiMl9z bG90KSc7Iik7Ci1saWtlKCRzdGRlcnIsIHFyL3ByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9y dGVkLywKLQknR1VDIHJlamVjdHMgbGVnYWN5IHByaW9yaXR5IHN5bnRheCcpOwotCiAjIEludmFs aWQgc2xvdCBuYW1lCiAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkcHJpbWFyeS0+cHNx bCgncG9zdGdyZXMnLAogCSJBTFRFUiBTWVNURU0gU0VUIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzID0gJ0FOWSAxIChJTlZBTElEX1VQUEVSKSc7Iik7Ci0tIAoyLjQzLjAKCg== --00000000000048ea3006545c9bb6 Content-Type: application/octet-stream; name="0002-Add-ANY-N-semantics-to-synchronized_standby_slots.patch" Content-Disposition: attachment; filename="0002-Add-ANY-N-semantics-to-synchronized_standby_slots.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqgihdhz1 RnJvbSA5MjA5YTJmMzQwM2EzMWRiM2YxYzUyYzRmNDViNDE1ODQ0MjlhMTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAxNiBKdW4gMjAyNiAwOTowODozOSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg Mi8zXSBBZGQgQU5ZIE4gc2VtYW50aWNzIHRvIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzCgpF eHRlbmQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgd2l0aCBxdW9ydW0gc3ludGF4IGZvciBs b2dpY2FsCmZhaWxvdmVyIHNsb3Qgc3luY2hyb25pemF0aW9uOgoKLSBBTlkgTiAoc2xvdDEsIHNs b3QyLCAuLi4pCgpQbGFpbi1saXN0IHNlbWFudGljcyBhcmUgcHJlc2VydmVkIGFzLWlzOgoKLSBz bG90MSwgc2xvdDIgY29udGludWVzIHRvIG1lYW4gYWxsIGxpc3RlZCBzbG90cyBhcmUgcmVxdWly ZWQKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgotIFJldXNlIHN5bmNyZXAgcGFyc2VyIGluZnJh c3RydWN0dXJlIGluIHRoZSBHVUMgY2hlY2sgaG9vayBhbmQKICBtYXAgcGFyc2VkIG91dHB1dCBp bnRvIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHNlbWFudGljcy4KLSBDb25zdW1lIFNZTkNf UkVQX0RFRkFVTFQgZnJvbSB0aGUgcHJlcGFyYXRvcnkgcGFyc2VyIHJlZmFjdG9yIHRvCiAgZGlz dGluZ3Vpc2ggcGxhaW4tbGlzdCBzeW50YXggZnJvbSBleHBsaWNpdCBwYXJzZXIgbW9kZXMuCi0g SW4gU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKCksIGVuZm9yY2UgbW9kZS1zcGVjaWZpYyBiZWhh dmlvciBmb3I6CiAgLSBleGlzdGluZyBhbGwtbGlzdGVkLXNsb3RzIHNlbWFudGljcyAocGxhaW4g bGlzdCkKICAtIHF1b3J1bSBOLW9mLU0gYmVoYXZpb3IgKEFOWSBOKQotIFZhbGlkYXRpb24gcmVq ZWN0cyBjb25maWd1cmF0aW9ucyB3aGVyZSBOIGV4Y2VlZHMgdGhlIG51bWJlciBvZgogIGxpc3Rl ZCBzbG90cy4KLSBJZ25vcmUgZHVwbGljYXRlIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGVu dHJpZXMsIHByZXNlcnZpbmcgdGhlCiAgZmlyc3Qgb2NjdXJyZW5jZSBhbmQgYXBwbHlpbmcgc2Vt YW50aWNzIHRvIHRoZSByZXN1bHRpbmcgdW5pcXVlIGxpc3QuCi0gQ2xhcmlmeSBzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cyBjb21tZW50cyBhbmQgbGFnZ2luZyByZXN0YXJ0X2xzbgogIHJlcG9y dGluZyB0byBtYXRjaCB0aGUgaW1wbGVtZW50ZWQgYmVoYXZpb3IuCgpUZXN0cyBhbmQgZG9jczoK Ci0gQWRkIHJlY292ZXJ5IGNvdmVyYWdlIGZvciBwbGFpbi1saXN0IGJlaGF2aW9yIGFuZCBBTlkg cXVvcnVtCiAgYmVoYXZpb3IsIGluY2x1ZGluZyBsYWdnaW5nLXNsb3QgYW5kIHZhbGlkYXRpb24t ZXJyb3Igc2NlbmFyaW9zLgotIEFkZCBkdXBsaWNhdGUtZW50cnkgcmVjb3ZlcnkgY292ZXJhZ2Ug Zm9yIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzLgotIERvY3VtZW50IEFOWSBzeW50YXggYW5k IGNsYXJpZnkgcGxhaW4tbGlzdCBiZWhhdmlvciBmb3IgdGhpcyBHVUMuCi0gRG9jdW1lbnQgdGhh dCBkdXBsaWNhdGUgc2xvdCBuYW1lcyBhcmUgaWdub3JlZCBhbmQgY291bnRlZCBvbmx5IG9uY2Uu CgpBdXRob3I6IFNhdHlhIE5hcmxhcHVyYW0gPHNhdHlhbmFybGFwdXJhbUBnbWFpbC5jb20+CkF1 dGhvcjogQXNodXRvc2ggU2hhcm1hIDxhc2h1LmNvZWs4OEBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBamlu IENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSG91LCBaaGlqaWUgPGhv dXpqLmZuc3RAZnVqaXRzdS5jb20+ClJldmlld2VkLWJ5OiBEaWxpcCBLdW1hciA8ZGlsaXBiYWxh dXRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU3VyeWEgUG9vbmRsYSA8c3VyeWFwb29uZGxhNEBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBKYXBpbiBMaSA8amFwaW5saUBob3RtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFNobG9rIEt5YWwgPHNobG9rLmt5YWwub3NzQGdtYWlsLmNvbT4KLS0tCiBkb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgODcgKystCiBkb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwgICAgICAgICAgICAgfCAgIDYgKy0KIGRvYy9z cmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysr KysrLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9ncmFtLnkgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX3NjYW5uZXIubCAgICAgfCAg IDMgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3N5bmNyZXAuaCAgICAgICAgICAgICB8ICAg NSArLQogLi4uL3Vuc2FmZV90ZXN0cy9leHBlY3RlZC9ndWNfcHJpdnMub3V0ICAgICAgIHwgICAz ICstCiAuLi4vMDU0X3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbCAgfCAzNjcg KysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAg ICAgIHwgICAyICsKIDEwIGZpbGVzIGNoYW5nZWQsIDg2NyBpbnNlcnRpb25zKCspLCAxNDAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTRfc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHNfcXVvcnVtLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGZhNTY2Yzll NTUzLi4xZjE3NmJkNDhmNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTE5MCwxNyArNTE5MCw4NCBAQCBBTlkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8 cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAg ICAgIDxwYXJhPgotICAgICAgICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN0cmVhbWluZyBy ZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90IG5hbWVzCi0gICAgICAgIHRoYXQgbG9naWNh bCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9yLiBMb2dpY2FsIFdBTCBzZW5kZXIg cHJvY2Vzc2VzCi0gICAgICAgIHdpbGwgc2VuZCBkZWNvZGVkIGNoYW5nZXMgdG8gcGx1Z2lucyBv bmx5IGFmdGVyIHRoZSBzcGVjaWZpZWQgcmVwbGljYXRpb24KLSAgICAgICAgc2xvdHMgY29uZmly bSByZWNlaXZpbmcgV0FMLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9u CisgICAgICAgIFNwZWNpZmllcyB0aGUgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2xv dHMgdGhhdCBsb2dpY2FsIFdBTAorICAgICAgICBzZW5kZXIgcHJvY2Vzc2VzIG11c3Qgd2FpdCBv biBiZWZvcmUgZGVsaXZlcmluZyBkZWNvZGVkIGNoYW5nZXMuIFRoaXMKKyAgICAgICAgcGFyYW1l dGVyIHVzZXMgdGhlIGZvbGxvd2luZyBzeW50YXg6Cis8c3lub3BzaXM+CitBTlkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApCis8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2xvdF9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uXQorPC9zeW5vcHNpcz4KKyAgICAgICAgd2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gaXMKKyAgICAgICAgdGhlIG51bWJlciBvZiBw aHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyB0aGF0IG11c3QgY29uZmlybSBXQUwKKyAgICAgICAg cmVjZWlwdCBiZWZvcmUgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcywKKyAgICAgICAgYW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zbG90X25hbWU8L3JlcGxhY2VhYmxlPgorICAg ICAgICBpcyB0aGUgbmFtZSBvZiBhIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QuCisgICAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+Cisg ICAgICAgIG11c3QgYmUgYW4gaW50ZWdlciB2YWx1ZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbXVz dCBub3QgZXhjZWVkIHRoZQorICAgICAgICBudW1iZXIgb2YgbGlzdGVkIHNsb3RzLgorICAgICAg ICBPdGhlciBmb3JtcyBzdXBwb3J0ZWQgYnkKKyAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXN5 bmNocm9ub3VzLXN0YW5kYnktbmFtZXMiLz4sIHN1Y2ggYXMgcHJpb3JpdHkKKyAgICAgICAgc3lu dGF4LCBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIEEgcGxhaW4gY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aG91dCBhIGtleXdvcmQgc3Bl Y2lmaWVzIHRoYXQKKyAgICAgICAgPGVtcGhhc2lzPmFsbDwvZW1waGFzaXM+IGxpc3RlZCBwaHlz aWNhbCBzbG90cyBtdXN0IGNvbmZpcm0gV0FMCisgICAgICAgIHJlY2VpcHQuIFRoaXMgZGlmZmVy cyBmcm9tIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbm91cy1zdGFuZGJ5LW5hbWVzIi8+Cisg ICAgICAgIHdoZXJlIGEgc2ltcGxlIGxpc3QgbWVhbnMgPGxpdGVyYWw+RklSU1QgMTwvbGl0ZXJh bD4uIEZvcgorICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFy bmFtZT4sIHJlcXVpcmluZyBhbGwgc2xvdHMKKyAgICAgICAgcHJvdmlkZXMgc2FmZXIgZmFpbG92 ZXIgc2VtYW50aWNzIGJ5IGRlZmF1bHQuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBUaGUga2V5d29yZCA8bGl0ZXJhbD5BTlk8L2xpdGVyYWw+LCBjb3VwbGVkIHdpdGgK KyAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNl YWJsZT4sIHNwZWNpZmllcworICAgICAgICBxdW9ydW0tYmFzZWQgc2VtYW50aWNzLiBMb2dpY2Fs IGRlY29kaW5nIHByb2NlZWRzIG9uY2UgYXQgbGVhc3QKKyAgICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gb2YgdGhlIGxpc3RlZAorICAg ICAgICBzbG90cyBoYXZlIGNhdWdodCB1cC4gTWlzc2luZywgbG9naWNhbCwgYW5kIGludmFsaWRh dGVkIHNsb3RzIGFyZQorICAgICAgICBza2lwcGVkIHdoZW4gZGV0ZXJtaW5pbmcgY2FuZGlkYXRl cy4gTGFnZ2luZyBzbG90cyAoaW5hY3RpdmUgb3IKKyAgICAgICAgYWN0aXZlKSBzaW1wbHkgZG8g bm90IGNvdW50IHRvd2FyZCB0aGUgcmVxdWlyZWQgbnVtYmVyIHVudGlsIHRoZXkKKyAgICAgICAg Y2F0Y2ggdXAuCisgICAgICAgIElmIGZld2VyIHRoYW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgc2xvdHMgaGF2ZSBjYXVnaHQg dXAgYXQgYSBnaXZlbiBtb21lbnQsIGxvZ2ljYWwgZGVjb2Rpbmcgd2FpdHMgdW50aWwKKyAgICAg ICAgdGhhdCB0aHJlc2hvbGQgaXMgcmVhY2hlZC4KKyAgICAgICAgaS5lLiwgdGhlcmUgaXMgbm8g cHJpb3JpdHkgb3JkZXJpbmcuCisgICAgICAgIEZvciBleGFtcGxlLCBhIHNldHRpbmcgb2YgPGxp dGVyYWw+QU5ZIDEgKHNiMV9zbG90LCBzYjJfc2xvdCk8L2xpdGVyYWw+CisgICAgICAgIGFsbG93 cyBsb2dpY2FsIGRlY29kaW5nIHRvIHByb2NlZWQgYXMgc29vbiBhcyBlaXRoZXIgcGh5c2ljYWwg c2xvdCBoYXMKKyAgICAgICAgY29uZmlybWVkIFdBTCByZWNlaXB0LiBJZiBub25lIG9mIHRoZSBz bG90cyBhcmUgYXZhaWxhYmxlIG9yIGhhdmUKKyAgICAgICAgY2F1Z2h0IHVwLCBsb2dpY2FsIGRl Y29kaW5nIHdhaXRzIHVudGlsIGF0IGxlYXN0IG9uZSBzbG90IG1lZXRzIHRoZQorICAgICAgICBy ZXF1aXJlZCBjb25kaXRpb24uIFRoaXMgaXMgdXNlZnVsIGluIGNvbmp1bmN0aW9uIHdpdGgKKyAg ICAgICAgcXVvcnVtLWJhc2VkIHN5bmNocm9ub3VzIHJlcGxpY2F0aW9uCisgICAgICAgICg8bGl0 ZXJhbD5zeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzID0gJ0FOWSAuLi4nPC9saXRlcmFsPiksIHNv IHRoYXQKKyAgICAgICAgbG9naWNhbCBkZWNvZGluZyBhdmFpbGFiaWxpdHkgbWF0Y2hlcyB0aGUg Y29tbWl0IGR1cmFiaWxpdHkgZ3VhcmFudGVlLgorICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBJZiB0aGUgc2FtZSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IG5hbWUg YXBwZWFycyBtb3JlIHRoYW4gb25jZSwKKyAgICAgICAgIGR1cGxpY2F0ZSBlbnRyaWVzIGFyZSBp Z25vcmVkIGFuZCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIGlzIHVzZWQuCisgICAgICAgICBU aGUgc2VtYW50aWNzIG9mIDx2YXJuYW1lPnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJu YW1lPiBhcmUKKyAgICAgICAgIHRoZXJlZm9yZSBiYXNlZCBvbiB0aGUgdW5pcXVlIHNldCBvZiBs aXN0ZWQgc2xvdCBuYW1lcywgcHJlc2VydmluZyB0aGUKKyAgICAgICAgIG9yaWdpbmFsIG9yZGVy IG9mIGZpcnN0IG9jY3VycmVuY2UuIFRoaXMgbWVhbnMgdGhhdAorICAgICAgICAgPGxpdGVyYWw+ QU5ZIDIgKHNsb3QxLCBzbG90MSwgc2xvdDIsIHNsb3QzKTwvbGl0ZXJhbD4gaXMgdHJlYXRlZCB0 aGUKKyAgICAgICAgIHNhbWUgYXMgPGxpdGVyYWw+QU5ZIDIgKHNsb3QxLCBzbG90Miwgc2xvdDMp PC9saXRlcmFsPiwgYW5kIGEgcGxhaW4KKyAgICAgICAgIGxpc3Qgc3VjaCBhcyA8bGl0ZXJhbD4o c2xvdDEsIHNsb3QxLCBzbG90Mik8L2xpdGVyYWw+IGlzIHRyZWF0ZWQgdGhlCisgICAgICAgICBz YW1lIGFzIDxsaXRlcmFsPihzbG90MSwgc2xvdDIpPC9saXRlcmFsPi4gSW4gcGFydGljdWxhciwK KyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFj ZWFibGU+IG11c3Qgbm90IGV4Y2VlZAorICAgICAgICAgdGhlIG51bWJlciBvZiB1bmlxdWUgbGlz dGVkIHNsb3RzLiBTdWNoIGEgY29uZmlndXJhdGlvbiByZXN1bHRzIGluIGFuCisgICAgICAgICBl cnJvciB0byBwcmV2ZW50IGluZGVmaW5pdGUgd2FpdHMgaW4gV0FMIHNlbmRlciBwcm9jZXNzZXMg ZHVlIHRvIGEKKyAgICAgICAgIG1pc2NvbmZpZ3VyZWQgPHZhcm5hbWU+c3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IHNldHRpbmcuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIDxsaXRlcmFsPkFOWTwvbGl0ZXJhbD4gaXMgY2FzZS1pbnNlbnNpdGl2ZS4K KyAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHVzZSBvZiA8dmFybmFt ZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gZ3VhcmFudGVlcworICAgICAg ICB0aGF0IGxvZ2ljYWwgcmVwbGljYXRpb24KICAgICAgICAgZmFpbG92ZXIgc2xvdHMgZG8gbm90 IGNvbnN1bWUgY2hhbmdlcyB1bnRpbCB0aG9zZSBjaGFuZ2VzIGFyZSByZWNlaXZlZAotICAgICAg ICBhbmQgZmx1c2hlZCB0byBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIHN0YW5kYnlzLiBJZiBhCisg ICAgICAgIGFuZCBmbHVzaGVkIHRvIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBzdGFuZGJ5cy4gSWYg YQogICAgICAgICBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gaXMgbWVhbnQgdG8gc3dp dGNoIHRvIGEgcGh5c2ljYWwgc3RhbmRieQogICAgICAgICBhZnRlciB0aGUgc3RhbmRieSBpcyBw cm9tb3RlZCwgdGhlIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgZm9yIHRoZQogICAgICAgICBz dGFuZGJ5IHNob3VsZCBiZSBsaXN0ZWQgaGVyZS4gTm90ZSB0aGF0IGxvZ2ljYWwgcmVwbGljYXRp b24gd2lsbCBub3QKLSAgICAgICAgcHJvY2VlZCBpZiB0aGUgc2xvdHMgc3BlY2lmaWVkIGluIHRo ZQotICAgICAgICA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4g ZG8gbm90IGV4aXN0IG9yIGFyZSBpbnZhbGlkYXRlZC4KKyAgICAgICAgcHJvY2VlZCBpZiB0aGUg cmVxdWlyZWQgbnVtYmVyIG9mIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbgorICAgICAgICA8 dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gZG8gbm90IGV4aXN0 IG9yIGFyZQorICAgICAgICBpbnZhbGlkYXRlZC4KICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUg cmVwbGljYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMKICAgICAgICAgPGxpbmsgbGlua2VuZD0i cGctcmVwbGljYXRpb24tc2xvdC1hZHZhbmNlIj4KICAgICAgICAgPGZ1bmN0aW9uPnBnX3JlcGxp Y2F0aW9uX3Nsb3RfYWR2YW5jZTwvZnVuY3Rpb24+PC9saW5rPiwKQEAgLTUyMDgsOSArNTI3NSw5 IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2Vh YmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXM8L2Z1bmN0aW9uPjwvbGluaz4sIGFuZAogICAgICAgICA8bGluayBs aW5rZW5kPSJwZy1sb2dpY2FsLXNsb3QtcGVlay1jaGFuZ2VzIj4KICAgICAgICAgPGZ1bmN0aW9u PnBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXM8L2Z1bmN0aW9uPjwvbGluaz4sCi0gICAgICAg IHdoZW4gdXNlZCB3aXRoIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMsIHdpbGwgYmxvY2sgdW50aWwg YWxsCi0gICAgICAgIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbiA8dmFybmFtZT5zeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4gaGF2ZQotICAgICAgICBjb25maXJtZWQgV0FM IHJlY2VpcHQuCisgICAgICAgIHdoZW4gdXNlZCB3aXRoIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMs IHdpbGwgYmxvY2sgdW50aWwgdGhlIHJlcXVpcmVkCisgICAgICAgIHBoeXNpY2FsIHNsb3RzIHNw ZWNpZmllZCBpbiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4K KyAgICAgICAgaGF2ZSBjb25maXJtZWQgV0FMIHJlY2VpcHQuCiAgICAgICAgPC9wYXJhPgogICAg ICAgIDxwYXJhPgogICAgICAgICBUaGUgc3RhbmRieXMgY29ycmVzcG9uZGluZyB0byB0aGUgcGh5 c2ljYWwgcmVwbGljYXRpb24gc2xvdHMgaW4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtYWRtaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbAppbmRl eCAwZWFlMWMxZjYxNi4uOTMxM2RmY2FmNGUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtYWRtaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwK QEAgLTExODAsNyArMTE4MCw3IEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBw ZC5zZWdtZW50X251bWJlciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgICAgcm93 cyByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyLCBzaW5jZSB0aGlzIGxpbWl0IGlzIG9ubHkgY2hlY2tl ZCBhZnRlcgogICAgICAgICBhZGRpbmcgdGhlIHJvd3MgcHJvZHVjZWQgd2hlbiBkZWNvZGluZyBl YWNoIG5ldyB0cmFuc2FjdGlvbiBjb21taXQuCiAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgc2xv dCBpcyBhIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCB0aGVuIHRoZSBmdW5jdGlvbiB3aWxsCi0gICAg ICAgIG5vdCByZXR1cm4gdW50aWwgYWxsIHBoeXNpY2FsIHNsb3RzIHNwZWNpZmllZCBpbgorICAg ICAgICBub3QgcmV0dXJuIHVudGlsIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBzbG90cyBzcGVjaWZp ZWQgaW4KICAgICAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXN5bmNocm9uaXplZC1zdGFuZGJ5LXNs b3RzIj48dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT48L2xpbms+ CiAgICAgICAgIGhhdmUgY29uZmlybWVkIFdBTCByZWNlaXB0LgogICAgICAgIDwvcGFyYT48L2Vu dHJ5PgpAQCAtMTI1OSw4ICsxMjU5LDggQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6OnBnX2xz biArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNldAogICAgICAg ICBUaGUgdXBkYXRlZCBzbG90IHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gb3V0IGF0 IHRoZSBuZXh0CiAgICAgICAgIGNoZWNrcG9pbnQgaWYgYW55IGFkdmFuY2luZyBpcyBkb25lLiBT byBpbiB0aGUgZXZlbnQgb2YgYSBjcmFzaCwgdGhlCiAgICAgICAgIHNsb3QgbWF5IHJldHVybiB0 byBhbiBlYXJsaWVyIHBvc2l0aW9uLiBJZiB0aGUgc3BlY2lmaWVkIHNsb3QgaXMgYQotICAgICAg ICBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgdGhlbiB0aGUgZnVuY3Rpb24gd2lsbCBub3QgcmV0dXJu IHVudGlsIGFsbAotICAgICAgICBwaHlzaWNhbCBzbG90cyBzcGVjaWZpZWQgaW4KKyAgICAgICAg bG9naWNhbCBmYWlsb3ZlciBzbG90IHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgbm90IHJldHVybiB1 bnRpbCB0aGUKKyAgICAgICAgcmVxdWlyZWQgcGh5c2ljYWwgc2xvdHMgc3BlY2lmaWVkIGluCiAg ICAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbml6ZWQtc3RhbmRieS1zbG90cyI+PHZh cm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+PC9saW5rPgogICAgICAg ICBoYXZlIGNvbmZpcm1lZCBXQUwgcmVjZWlwdC4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAppbmRleCA2ZGM0OTEwODk5Ny4uNmVjYzE2ZjUyNjggMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKQEAgLTQzMiwxMSArNDMyLDEyIEBAIHBvc3RncmVz PSMgU0VMRUNUICogZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25f c2xvdCcsIE5VTEwsIE5VCiAgICAgIGlzIGV4cGVjdGVkIHdoZW4gc2VuZGluZyBjaGFuZ2VzIHRv IGxvZ2ljYWwgc3Vic2NyaWJlcnMgZHVlIHRvIHRoZSB3YWl0aW5nCiAgICAgIG9uIHNsb3RzIG5h bWVkIGluCiAgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zeW5jaHJvbml6ZWQtc3RhbmRieS1zbG90 cyI+PHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+PC9saW5rPi4K LSAgICAgV2hlbiA8dmFybmFtZT5zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czwvdmFybmFtZT4g aXMgdXRpbGl6ZWQsIHRoZQotICAgICBwcmltYXJ5IHNlcnZlciB3aWxsIG5vdCBjb21wbGV0ZWx5 IHNodXQgZG93biB1bnRpbCB0aGUgY29ycmVzcG9uZGluZwotICAgICBzdGFuZGJ5cywgYXNzb2Np YXRlZCB3aXRoIHRoZSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyBzcGVjaWZpZWQKLSAgICAg aW4gPHZhcm5hbWU+c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+LCBoYXZlIGNv bmZpcm1lZAotICAgICByZWNlaXZpbmcgdGhlIFdBTCB1cCB0byB0aGUgbGF0ZXN0IGZsdXNoZWQg cG9zaXRpb24gb24gdGhlIHByaW1hcnkgc2VydmVyLgorICAgIFdoZW4gPHZhcm5hbWU+c3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHM8L3Zhcm5hbWU+IGlzIHV0aWxpemVkLCB0aGUKKyAgICBwcmlt YXJ5IHNlcnZlciB3aWxsIG5vdCBjb21wbGV0ZWx5IHNodXQgZG93biB1bnRpbCB0aGUgY29ycmVz cG9uZGluZworICAgIHN0YW5kYnlzLCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVpcmVkIHBoeXNp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzCisgICAgc3BlY2lmaWVkIGluIDx2YXJuYW1lPnN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzPC92YXJuYW1lPiwgaGF2ZQorICAgIGNvbmZpcm1lZCByZWNlaXZp bmcgdGhlIFdBTCB1cCB0byB0aGUgbGF0ZXN0IGZsdXNoZWQgcG9zaXRpb24gb24gdGhlCisgICAg cHJpbWFyeSBzZXJ2ZXIuCiAgICAgPC9wYXJhPgogCiAgICAgPG5vdGU+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKaW5kZXggZDdmYjlmNWE2N2YuLmUwNmM0MjhkODUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zbG90LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC05MSwxMSArOTIsMTkgQEAgdHlwZWRl ZiBzdHJ1Y3QgUmVwbGljYXRpb25TbG90T25EaXNrCiAgKiBOb3RlOiB0aGlzIG11c3QgYmUgYSBm bGF0IHJlcHJlc2VudGF0aW9uIHRoYXQgY2FuIGJlIGhlbGQgaW4gYSBzaW5nbGUgY2h1bmsKICAq IG9mIGd1Y19tYWxsb2MnZCBtZW1vcnksIHNvIHRoYXQgaXQgY2FuIGJlIHN0b3JlZCBhcyB0aGUg ImV4dHJhIiBkYXRhIGZvciB0aGUKICAqIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIEdVQy4K KyAqCisgKiBUaGUgbGF5b3V0IG1pcnJvcnMgU3luY1JlcENvbmZpZ0RhdGEgc28gdGhhdCB0aGUg c2FtZSBxdW9ydW0gYW5kIHByaW9yaXR5CisgKiBzZW1hbnRpY3MgY2FuIGJlIGV4cHJlc3NlZC4g IFRoZSBzeW5jcmVwX21ldGhvZCBmaWVsZCB1c2VzIHRoZQorICogU1lOQ19SRVBfREVGQVVMVCwg U1lOQ19SRVBfUFJJT1JJVFksIGFuZCBTWU5DX1JFUF9RVU9SVU0gY29uc3RhbnRzIGZyb20KKyAq IHN5bmNyZXAuaC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKLQkvKiBOdW1iZXIgb2Ygc2xvdCBu YW1lcyBpbiB0aGUgc2xvdF9uYW1lc1tdICovCi0JaW50CQkJbnNsb3RuYW1lczsKKwlpbnQJCQlj b25maWdfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiB0aGlzIHN0cnVjdCwgaW4gYnl0ZXMgKi8KKwlp bnQJCQludW1fc3luYzsJCS8qIG51bWJlciBvZiBzbG90cyB0aGF0IG11c3QgY29uZmlybSBXQUwK KwkJCQkJCQkJICogcmVjZWlwdCBiZWZvcmUgbG9naWNhbCBkZWNvZGluZyBwcm9jZWVkcyAqLwor CXVpbnQ4CQlzeW5jcmVwX21ldGhvZDsgLyogU1lOQ19SRVBfKiBtZXRob2QgKi8KKwlpbnQJCQlu c2xvdG5hbWVzOwkJLyogbnVtYmVyIG9mIHNsb3QgbmFtZXMgdGhhdCBmb2xsb3cgKi8KIAogCS8q CiAJICogc2xvdF9uYW1lcyBjb250YWlucyAnbnNsb3RuYW1lcycgY29uc2VjdXRpdmUgbnVsbC10 ZXJtaW5hdGVkIEMgc3RyaW5ncy4KQEAgLTEwMyw2ICsxMTIsMjkgQEAgdHlwZWRlZiBzdHJ1Y3QK IAljaGFyCQlzbG90X25hbWVzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFN5bmNTdGFuZGJ5 U2xvdHNDb25maWdEYXRhOwogCisvKgorICogU3RhdGUgb2YgYSByZXBsaWNhdGlvbiBzbG90IHNw ZWNpZmllZCBpbiBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBHVUMuCisgKi8KK3R5cGVkZWYg ZW51bQoreworCVNTX1NMT1RfTk9UX0ZPVU5ELAkJCS8qIHNsb3QgZG9lcyBub3QgZXhpc3QgKi8K KwlTU19TTE9UX0xPR0lDQUwsCQkJLyogc2xvdCBpcyBsb2dpY2FsLCBub3QgcGh5c2ljYWwgKi8K KwlTU19TTE9UX0lOVkFMSURBVEVELAkJLyogc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAqLwor CVNTX1NMT1RfSU5BQ1RJVkVfTEFHR0lORywJLyogc2xvdCBpcyBpbmFjdGl2ZSBhbmQgYmVoaW5k IHdhaXRfZm9yX2xzbiAqLworCVNTX1NMT1RfQUNUSVZFX0xBR0dJTkcsCQkvKiBzbG90IGlzIGFj dGl2ZSBhbmQgYmVoaW5kIHdhaXRfZm9yX2xzbiAqLworfQkJCVN5bmNTdGFuZGJ5U2xvdHNTdGF0 ZTsKKworLyoKKyAqIEluZm9ybWF0aW9uIGFib3V0IGEgc3luY2hyb25pemVkIHN0YW5kYnkgc2xv dCdzIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdAoreworCWNvbnN0IGNoYXIgKnNsb3RfbmFt ZTsJCS8qIG5hbWUgb2YgdGhlIHNsb3QgKi8KKwlTeW5jU3RhbmRieVNsb3RzU3RhdGUgc3RhdGU7 CS8qIHN0YXRlIG9mIHRoZSBzbG90ICovCisJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsJLyogY3Vy cmVudCByZXN0YXJ0X2xzbiAodmFsaWQgZm9yIGxhZ2dpbmcKKwkJCQkJCQkJICogc3RhdGVzKSAq LworfQkJCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm87CisKIC8qCiAgKiBMb29rdXAgdGFibGUg Zm9yIHNsb3QgaW52YWxpZGF0aW9uIGNhdXNlcy4KICAqLwpAQCAtMjk2Myw5NCArMjk5NSwyMDcg QEAgR2V0U2xvdEludmFsaWRhdGlvbkNhdXNlTmFtZShSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRp b25DYXVzZSBjYXVzZSkKIH0KIAogLyoKLSAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl IHNsb3RzIHNwZWNpZmllZCBpbiBHVUMgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMuCisgKiBS ZW1vdmUgZHVwbGljYXRlIG1lbWJlciBuYW1lcyBmcm9tIGEgU3luY1JlcENvbmZpZ0RhdGEgb2Jq ZWN0LgogICoKLSAqIFRoZSByYXduYW1lIHdpbGwgYmUgcGFyc2VkLCBhbmQgdGhlIHJlc3VsdCB3 aWxsIGJlIHNhdmVkIGludG8gKmVsZW1saXN0LgorICogVGhlIG1lbWJlcl9uYW1lcyBhcnJheSBv ZiBTeW5jUmVwQ29uZmlnRGF0YSBpcyBjb21wYWN0ZWQgaW4gcGxhY2Ugc28KKyAqIHRoYXQgb25s eSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIG1lbWJlciBuYW1lIGlzIHJldGFpbmVkLiBU aGUKKyAqIG9yaWdpbmFsIG9yZGVyaW5nIG9mIHJldGFpbmVkIG5hbWVzIGlzIHByZXNlcnZlZCwg YW5kIG5tZW1iZXJzIGFuZAorICogY29uZmlnX3NpemUgYXJlIHVwZGF0ZWQgdG8gZGVzY3JpYmUg b25seSB0aGUgY29tcGFjdGVkIHBvcnRpb24gb2YKKyAqIHRoZSBhcnJheS4KICAqLwotc3RhdGlj IGJvb2wKLXZhbGlkYXRlX3N5bmNfc3RhbmRieV9zbG90cyhjaGFyICpyYXduYW1lLCBMaXN0ICoq ZWxlbWxpc3QpCitzdGF0aWMgdm9pZAorQ29tcGFjdFN5bmNSZXBDb25maWdNZW1iZXJOYW1lcyhT eW5jUmVwQ29uZmlnRGF0YSAqY29uZmlnKQogewotCS8qIFZlcmlmeSBzeW50YXggYW5kIHBhcnNl IHN0cmluZyBpbnRvIGEgbGlzdCBvZiBpZGVudGlmaWVycyAqLwotCWlmICghU3BsaXRJZGVudGlm aWVyU3RyaW5nKHJhd25hbWUsICcsJywgZWxlbWxpc3QpKQotCXsKLQkJR1VDX2NoZWNrX2VycmRl dGFpbCgiTGlzdCBzeW50YXggaXMgaW52YWxpZC4iKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KKwlj aGFyCSAgICpzcmNfbmFtZTsKKwljaGFyCSAgICpkc3RfbmFtZTsKKwlpbnQJCQludW5pcXVlX21l bWJlcnMgPSAwOworCVNpemUJCXVuaXF1ZV9zaXplID0gb2Zmc2V0b2YoU3luY1JlcENvbmZpZ0Rh dGEsIG1lbWJlcl9uYW1lcyk7CiAKLQkvKiBJdGVyYXRlIHRoZSBsaXN0IHRvIHZhbGlkYXRlIGVh Y2ggc2xvdCBuYW1lICovCi0JZm9yZWFjaF9wdHIoY2hhciwgbmFtZSwgKmVsZW1saXN0KQorCXNy Y19uYW1lID0gY29uZmlnLT5tZW1iZXJfbmFtZXM7CisJZHN0X25hbWUgPSBjb25maWctPm1lbWJl cl9uYW1lczsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlnLT5ubWVtYmVyczsgaSsrKQog CXsKLQkJaW50CQkJZXJyX2NvZGU7Ci0JCWNoYXIJICAgKmVycl9tc2cgPSBOVUxMOwotCQljaGFy CSAgICplcnJfaGludCA9IE5VTEw7CisJCWNoYXIJICAgKnVuaXF1ZV9uYW1lOworCQlzaXplX3QJ CW5hbWVfc2l6ZTsKKwkJYm9vbAkJZHVwbGljYXRlID0gZmFsc2U7CisKKwkJbmFtZV9zaXplID0g c3RybGVuKHNyY19uYW1lKSArIDE7CiAKLQkJaWYgKCFSZXBsaWNhdGlvblNsb3RWYWxpZGF0ZU5h bWVJbnRlcm5hbChuYW1lLCBmYWxzZSwgJmVycl9jb2RlLAotCQkJCQkJCQkJCQkJICZlcnJfbXNn LCAmZXJyX2hpbnQpKQorCQkvKgorCQkgKiBDaGVjayB3aGV0aGVyIHNyY19uYW1lIG1hdGNoZXMg YW55IHByZXZpb3VzbHkgcmV0YWluZWQgdW5pcXVlIG5hbWUuCisJCSAqIE9ubHkgdGhlIGZpcnN0 IG51bmlxdWVfbWVtYmVycyBlbnRyaWVzIGluIG1lbWJlcl9uYW1lcyBuZWVkIHRvIGJlCisJCSAq IGV4YW1pbmVkIGZvciB0aGlzLgorCQkgKi8KKwkJdW5pcXVlX25hbWUgPSBjb25maWctPm1lbWJl cl9uYW1lczsKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBudW5pcXVlX21lbWJlcnM7IGorKykKIAkJ ewotCQkJR1VDX2NoZWNrX2VycmNvZGUoZXJyX2NvZGUpOwotCQkJR1VDX2NoZWNrX2VycmRldGFp bCgiJXMiLCBlcnJfbXNnKTsKLQkJCWlmIChlcnJfaGludCAhPSBOVUxMKQotCQkJCUdVQ19jaGVj a19lcnJoaW50KCIlcyIsIGVycl9oaW50KTsKLQkJCXJldHVybiBmYWxzZTsKKwkJCWlmIChzdHJj bXAodW5pcXVlX25hbWUsIHNyY19uYW1lKSA9PSAwKQorCQkJeworCQkJCWR1cGxpY2F0ZSA9IHRy dWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXVuaXF1ZV9uYW1lICs9IHN0cmxlbih1bmlxdWVf bmFtZSkgKyAxOworCQl9CisKKwkJaWYgKCFkdXBsaWNhdGUpCisJCXsKKwkJCS8qCisJCQkgKiBU aGlzIHNyY19uYW1lIGlzIGEgbmV3IHVuaXF1ZSBuYW1lLiBDb3B5IGl0IGltbWVkaWF0ZWx5IGFm dGVyIHRoZQorCQkJICogdW5pcXVlIG5hbWVzIHJldGFpbmVkIHNvIGZhci4KKwkJCSAqLworCQkJ aWYgKGRzdF9uYW1lICE9IHNyY19uYW1lKQorCQkJCW1lbW1vdmUoZHN0X25hbWUsIHNyY19uYW1l LCBuYW1lX3NpemUpOworCisJCQlkc3RfbmFtZSArPSBuYW1lX3NpemU7CisJCQludW5pcXVlX21l bWJlcnMrKzsKKwkJCXVuaXF1ZV9zaXplICs9IG5hbWVfc2l6ZTsKIAkJfQorCisJCXNyY19uYW1l ICs9IG5hbWVfc2l6ZTsKIAl9CiAKLQlyZXR1cm4gdHJ1ZTsKKwljb25maWctPm5tZW1iZXJzID0g bnVuaXF1ZV9tZW1iZXJzOworCWNvbmZpZy0+Y29uZmlnX3NpemUgPSAoaW50KSB1bmlxdWVfc2l6 ZTsKIH0KIAogLyoKICAqIEdVQyBjaGVja19ob29rIGZvciBzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cworICoKKyAqIFRoaXMgcmV1c2VzIHRoZSBzeW5jcmVwX3l5cGFyc2Uvc3luY3JlcF9zY2Fu bmVyIGluZnJhc3RydWN0dXJlIHRoYXQgaXMKKyAqIGFsc28gdXNlZCBmb3Igc3luY2hyb25vdXNf c3RhbmRieV9uYW1lcywgYW5kIGFjY2VwdHMgdGhlc2UgZm9ybXM6CisgKgorICogICBzbG90MSwg c2xvdDIgICAgICAgICAgICAgICAgICAgLS0gd2FpdCBmb3IgQUxMIGxpc3RlZCBzbG90cworICog ICBBTlkgTiAoc2xvdDEsIHNsb3QyLCAuLi4pICAgICAgLS0gd2FpdCBmb3IgYW55IE4tb2YtTSAo cXVvcnVtKQorICoKKyAqIE5vdGU6IFNpbXBsZSBsaXN0IHN5bnRheCBpcyBpbnRlcnByZXRlZCBh cyAid2FpdCBmb3IgQUxMIiBmb3IgdGhpcyBHVUMsCisgKiB1bmxpa2Ugc3luY2hyb25vdXNfc3Rh bmRieV9uYW1lcyB3aGVyZSBpdCBtZWFucyAiRklSU1QgMSIuCisgKgorICogQWZ0ZXIgcGFyc2lu Zywgd2UgdmFsaWRhdGUgZXZlcnkgbmFtZSBhcyBhIGxlZ2FsIHJlcGxpY2F0aW9uIHNsb3QgbmFt ZSwKKyAqIG9taXQgZHVwbGljYXRlIGVudHJpZXMgd2hpbGUgcHJlc2VydmluZyBmaXJzdC1vY2N1 cnJlbmNlIG9yZGVyLCBhbmQgdGhlbgorICogYXBwbHkgdGhlIHJlc3VsdGluZyB1bmlxdWUgbGlz dCB0byB0aGUgY29uZmlndXJlZCBzZW1hbnRpY3MuCiAgKi8KIGJvb2wKIGNoZWNrX3N5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNl IHNvdXJjZSkKIHsKLQljaGFyCSAgICpyYXduYW1lOwotCWNoYXIJICAgKnB0cjsKLQlMaXN0CSAg ICplbGVtbGlzdDsKLQlpbnQJCQlzaXplOwotCWJvb2wJCW9rOwotCVN5bmNTdGFuZGJ5U2xvdHND b25maWdEYXRhICpjb25maWc7Ci0KLQlpZiAoKCpuZXd2YWwpWzBdID09ICdcMCcpCi0JCXJldHVy biB0cnVlOworCWlmICgqbmV3dmFsICE9IE5VTEwgJiYgKCpuZXd2YWwpWzBdICE9ICdcMCcpCisJ eworCQl5eXNjYW5fdAlzY2FubmVyOworCQlpbnQJCQlwYXJzZV9yYzsKKwkJU3luY1N0YW5kYnlT bG90c0NvbmZpZ0RhdGEgKmNvbmZpZzsKKwkJY29uc3QgY2hhciAqbW5hbWU7CisKKwkJLyogUmVz dWx0IG9mIHBhcnNpbmcgaXMgcmV0dXJuZWQgaW4gb25lIG9mIHRoZXNlIHR3byB2YXJpYWJsZXMg Ki8KKwkJU3luY1JlcENvbmZpZ0RhdGEgKnN5bmNyZXBfcGFyc2VfcmVzdWx0ID0gTlVMTDsKKwkJ Y2hhcgkgICAqc3luY3JlcF9wYXJzZV9lcnJvcl9tc2cgPSBOVUxMOworCisJCS8qIFBhcnNlIHRo ZSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyBjb25maWd1cmF0aW9uICovCisJCXN5bmNyZXBf c2Nhbm5lcl9pbml0KCpuZXd2YWwsICZzY2FubmVyKTsKKwkJcGFyc2VfcmMgPSBzeW5jcmVwX3l5 cGFyc2UoJnN5bmNyZXBfcGFyc2VfcmVzdWx0LAorCQkJCQkJCQkgICAmc3luY3JlcF9wYXJzZV9l cnJvcl9tc2csCisJCQkJCQkJCSAgIHNjYW5uZXIpOworCQlzeW5jcmVwX3NjYW5uZXJfZmluaXNo KHNjYW5uZXIpOworCisJCWlmIChwYXJzZV9yYyAhPSAwIHx8IHN5bmNyZXBfcGFyc2VfcmVzdWx0 ID09IE5VTEwpCisJCXsKKwkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KTsKKwkJCWlmIChzeW5jcmVwX3BhcnNlX2Vycm9yX21zZykKKwkJCQlHVUNfY2hlY2tfZXJyZGV0 YWlsKCIlcyIsIHN5bmNyZXBfcGFyc2VfZXJyb3JfbXNnKTsKKwkJCWVsc2UKKwkJCQlHVUNfY2hl Y2tfZXJyZGV0YWlsKCJcIiVzXCIgcGFyc2VyIGZhaWxlZC4iLAorCQkJCQkJCQkJInN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAotCS8qIE5lZWQg YSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIEdVQyBzdHJpbmcgKi8KLQlyYXduYW1lID0gcHN0cmR1 cCgqbmV3dmFsKTsKKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZCA9 PSBTWU5DX1JFUF9QUklPUklUWSkKKwkJeworCQkJR1VDX2NoZWNrX2VycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSk7CisJCQlHVUNfY2hlY2tfZXJybXNnKCJwcmlvcml0eSBz eW50YXggaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFyYW1ldGVyIFwiJXNcIiIsCisJCQkJCQkJICJz eW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CiAKLQkv KiBOb3cgdmVyaWZ5IGlmIHRoZSBzcGVjaWZpZWQgc2xvdHMgZXhpc3QgYW5kIGhhdmUgY29ycmVj dCB0eXBlICovCi0Jb2sgPSB2YWxpZGF0ZV9zeW5jX3N0YW5kYnlfc2xvdHMocmF3bmFtZSwgJmVs ZW1saXN0KTsKKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYyA8PSAwKQorCQl7 CisJCQlHVUNfY2hlY2tfZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKTsK KwkJCUdVQ19jaGVja19lcnJtc2coImludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBcIiVzXCI6 IHJlcXVpcmVkIG51bWJlciBvZiBzeW5jaHJvbml6ZWQgc3RhbmRieSBzbG90cyAoJWQpIG11c3Qg YmUgZ3JlYXRlciB0aGFuIHplcm8iLAorCQkJCQkJCSAic3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMiLAorCQkJCQkJCSBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5bmMpOworCQkJcmV0dXJu IGZhbHNlOworCQl9CiAKLQlpZiAoIW9rIHx8IGVsZW1saXN0ID09IE5JTCkKLQl7Ci0JCXBmcmVl KHJhd25hbWUpOwotCQlsaXN0X2ZyZWUoZWxlbWxpc3QpOwotCQlyZXR1cm4gb2s7Ci0JfQorCQkv KiB2YWxpZGF0ZSBldmVyeSBtZW1iZXIgbmFtZSBhcyBhIHNsb3QgbmFtZSAqLworCQltbmFtZSA9 IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5tZW1iZXJfbmFtZXM7CiAKLQkvKiBDb21wdXRlIHRoZSBz aXplIHJlcXVpcmVkIGZvciB0aGUgU3luY1N0YW5kYnlTbG90c0NvbmZpZ0RhdGEgc3RydWN0ICov Ci0Jc2l6ZSA9IG9mZnNldG9mKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhLCBzbG90X25hbWVz KTsKLQlmb3JlYWNoX3B0cihjaGFyLCBzbG90X25hbWUsIGVsZW1saXN0KQotCQlzaXplICs9IHN0 cmxlbihzbG90X25hbWUpICsgMTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBzeW5jcmVwX3BhcnNl X3Jlc3VsdC0+bm1lbWJlcnM7IGkrKykKKwkJeworCQkJaW50CQkJZXJyX2NvZGU7CisJCQljaGFy CSAgICplcnJfbXNnID0gTlVMTDsKKwkJCWNoYXIJICAgKmVycl9oaW50ID0gTlVMTDsKIAotCS8q IEdVQyBleHRyYSB2YWx1ZSBtdXN0IGJlIGd1Y19tYWxsb2MnZCwgbm90IHBhbGxvYydkICovCi0J Y29uZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdEYXRhICopIGd1Y19tYWxsb2MoTE9HLCBz aXplKTsKLQlpZiAoIWNvbmZpZykKLQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKCFSZXBsaWNhdGlv blNsb3RWYWxpZGF0ZU5hbWVJbnRlcm5hbChtbmFtZSwgZmFsc2UsICZlcnJfY29kZSwKKwkJCQkJ CQkJCQkJCQkgJmVycl9tc2csICZlcnJfaGludCkpCisJCQl7CisJCQkJR1VDX2NoZWNrX2VycmNv ZGUoZXJyX2NvZGUpOworCQkJCUdVQ19jaGVja19lcnJkZXRhaWwoIiVzIiwgZXJyX21zZyk7CisJ CQkJaWYgKGVycl9oaW50ICE9IE5VTEwpCisJCQkJCUdVQ19jaGVja19lcnJoaW50KCIlcyIsIGVy cl9oaW50KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAKLQkvKiBUcmFuc2Zvcm0gdGhlIGRh dGEgaW50byBTeW5jU3RhbmRieVNsb3RzQ29uZmlnRGF0YSAqLwotCWNvbmZpZy0+bnNsb3RuYW1l cyA9IGxpc3RfbGVuZ3RoKGVsZW1saXN0KTsKKwkJCW1uYW1lICs9IHN0cmxlbihtbmFtZSkgKyAx OworCQl9CiAKLQlwdHIgPSBjb25maWctPnNsb3RfbmFtZXM7Ci0JZm9yZWFjaF9wdHIoY2hhciwg c2xvdF9uYW1lLCBlbGVtbGlzdCkKLQl7Ci0JCXN0cmNweShwdHIsIHNsb3RfbmFtZSk7Ci0JCXB0 ciArPSBzdHJsZW4oc2xvdF9uYW1lKSArIDE7Ci0JfQorCQkvKiBPbWl0IGR1cGxpY2F0ZSBzbG90 IG5hbWVzIHRvIGVuc3VyZSBlYWNoIHNsb3QgaXMgY29uc2lkZXJlZCBvbmx5IG9uY2UuICovCisJ CUNvbXBhY3RTeW5jUmVwQ29uZmlnTWVtYmVyTmFtZXMoc3luY3JlcF9wYXJzZV9yZXN1bHQpOwog Ci0JKmV4dHJhID0gY29uZmlnOworCQkvKgorCQkgKiBGb3Igc3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHMsIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgbWVhbnMgYWxsCisJCSAqIGxpc3RlZCBzbG90 cyBhcmUgcmVxdWlyZWQuIFRoZSBzeW5jcmVwIHBhcnNlciBwcmVzZXJ2ZXMgdGhpcyBzaGFwZQor CQkgKiBhcyBTWU5DX1JFUF9ERUZBVUxULCBzbyBtYXAgbnVtX3N5bmMgdG8gbm1lbWJlcnMgdG8g ZW5mb3JjZQorCQkgKiBhbGwtbW9kZSBzZW1hbnRpY3MgYWZ0ZXIgcmVtb3ZpbmcgZHVwbGljYXRl IG5hbWVzLgorCQkgKi8KKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhv ZCA9PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3luY3JlcF9wYXJzZV9yZXN1bHQtPm51bV9zeW5j ID0gc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8qIFJlamVjdCBudW1fc3lu YyA+IG5tZW1iZXJzIGFmdGVyIGR1cGxpY2F0ZXMgaGF2ZSBiZWVuIG9taXR0ZWQuICovCisJCWlm IChzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+bnVtX3N5bmMgPiBzeW5jcmVwX3BhcnNlX3Jlc3VsdC0+ bm1lbWJlcnMpCisJCXsKKwkJCUdVQ19jaGVja19lcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpOworCQkJR1VDX2NoZWNrX2Vycm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgcGFy YW1ldGVyIFwiJXNcIjogc3luY2hyb25pemF0aW9uIHJlcXVpcmVtZW50ICglZCkgZXhjZWVkcyB0 aGUgbnVtYmVyIG9mIHVuaXF1ZSBsaXN0ZWQgc2xvdHMgKCVkKSIsCisJCQkJCQkJICJzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cyIsCisJCQkJCQkJIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1f c3luYywKKwkJCQkJCQkgc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzKTsKKwkJCXJldHVy biBmYWxzZTsKKwkJfQorCisJCS8qCisJCSAqIEJ1aWxkIFN5bmNTdGFuZGJ5U2xvdHNDb25maWdE YXRhIGZyb20gdGhlIHBhcnNlZCBTeW5jUmVwQ29uZmlnRGF0YS4KKwkJICogU2luY2UgdGhlIHN0 cnVjdHVyZXMgaGF2ZSBpZGVudGljYWwgbGF5b3V0LCB3ZSBjYW4gdXNlIHRoZSBzYW1lCisJCSAq IGNvbmZpZ19zaXplLgorCQkgKi8KKwkJY29uZmlnID0gKFN5bmNTdGFuZGJ5U2xvdHNDb25maWdE YXRhICopCisJCQlndWNfbWFsbG9jKExPRywgc3luY3JlcF9wYXJzZV9yZXN1bHQtPmNvbmZpZ19z aXplKTsKKwkJaWYgKCFjb25maWcpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJY29uZmlnLT5jb25m aWdfc2l6ZSA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5jb25maWdfc2l6ZTsKKwkJY29uZmlnLT5u dW1fc3luYyA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5udW1fc3luYzsKKwkJY29uZmlnLT5zeW5j cmVwX21ldGhvZCA9IHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5zeW5jcmVwX21ldGhvZDsKKwkJY29u ZmlnLT5uc2xvdG5hbWVzID0gc3luY3JlcF9wYXJzZV9yZXN1bHQtPm5tZW1iZXJzOworCisJCS8q IENvcHkgYWxsIHNsb3QgbmFtZXMgaW4gb25lIG9wZXJhdGlvbiAqLworCQltZW1jcHkoY29uZmln LT5zbG90X25hbWVzLAorCQkJICAgc3luY3JlcF9wYXJzZV9yZXN1bHQtPm1lbWJlcl9uYW1lcywK KwkJCSAgIHN5bmNyZXBfcGFyc2VfcmVzdWx0LT5jb25maWdfc2l6ZSAtCisJCQkgICBvZmZzZXRv ZihTeW5jUmVwQ29uZmlnRGF0YSwgbWVtYmVyX25hbWVzKSk7CisKKwkJKmV4dHJhID0gY29uZmln OworCX0KKwllbHNlCisJCSpleHRyYSA9IE5VTEw7CiAKLQlwZnJlZShyYXduYW1lKTsKLQlsaXN0 X2ZyZWUoZWxlbWxpc3QpOwogCXJldHVybiB0cnVlOwogfQogCkBAIC0zMDk5LDE4ICszMjQ0LDEx NyBAQCBTbG90RXhpc3RzSW5TeW5jU3RhbmRieVNsb3RzKGNvbnN0IGNoYXIgKnNsb3RfbmFtZSkK IH0KIAogLyoKLSAqIFJldHVybiB0cnVlIGlmIHRoZSBzbG90cyBzcGVjaWZpZWQgaW4gc3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMgaGF2ZSBjYXVnaHQgdXAgdG8KLSAqIHRoZSBnaXZlbiBXQUwg bG9jYXRpb24sIGZhbHNlIG90aGVyd2lzZS4KKyAqIFJlcG9ydCBwcm9ibGVtIHN0YXRlcyBmb3Ig c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdGhhdCBwcmV2ZW50ZWQgdGhlCisgKiBjYXRjaC11 cCByZXF1aXJlbWVudCBmcm9tIGJlaW5nIG1ldC4KKyAqLworc3RhdGljIHZvaWQKK1JlcG9ydFVu YXZhaWxhYmxlU3luY1N0YW5kYnlTbG90cyhTeW5jU3RhbmRieVNsb3RzU3RhdGVJbmZvICpzbG90 X3N0YXRlcywKKwkJCQkJCQkJICBpbnQgbnVtX3Nsb3Rfc3RhdGVzLCBpbnQgZWxldmVsLAorCQkJ CQkJCQkgIFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwg bnVtX3Nsb3Rfc3RhdGVzOyBpKyspCisJeworCQljb25zdCBjaGFyICpzbG90X25hbWUgPSBzbG90 X3N0YXRlc1tpXS5zbG90X25hbWU7CisKKwkJc3dpdGNoIChzbG90X3N0YXRlc1tpXS5zdGF0ZSkK KwkJeworCQkJY2FzZSBTU19TTE9UX05PVF9GT1VORDoKKwkJCQllcmVwb3J0KGVsZXZlbCwKKwkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJt c2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkgICBzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdh aXRpbmcgb24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiLiIsCisJCQkJCQkJCSAgc2xvdF9uYW1lKSwKKwkJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUg cmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb3IgYW1lbmQgcGFyYW1ldGVyIFwiJXNcIi4iLAorCQkJ CQkJCQlzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBTU19TTE9UX0xPR0lDQUw6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNn KCJjYW5ub3Qgc3BlY2lmeSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGluIHBhcmFt ZXRlciBcIiVzXCIiLAorCQkJCQkJCSAgIHNsb3RfbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzIiksCisJCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGlu ZyBmb3IgY29ycmVjdGlvbiBvbiByZXBsaWNhdGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkg IHNsb3RfbmFtZSksCisJCQkJCQllcnJoaW50KCJSZW1vdmUgdGhlIGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdCBcIiVzXCIgZnJvbSBwYXJhbWV0ZXIgXCIlc1wiLiIsCisJCQkJCQkJCXNsb3RfbmFt ZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIikpOworCQkJCWJyZWFrOworCisJCQljYXNl IFNTX1NMT1RfSU5WQUxJREFURUQ6CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJZXJybXNn KCJwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVy IFwiJXNcIiBoYXMgYmVlbiBpbnZhbGlkYXRlZCIsCisJCQkJCQkJICAgc2xvdF9uYW1lLCAic3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCWVycmRldGFpbCgiTG9naWNhbCByZXBs aWNhdGlvbiBpcyB3YWl0aW5nIG9uIHRoZSBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0aCByZXBsaWNh dGlvbiBzbG90IFwiJXNcIi4iLAorCQkJCQkJCQkgIHNsb3RfbmFtZSksCisJCQkJCQllcnJoaW50 KCJEcm9wIGFuZCByZWNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5k IHBhcmFtZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0 YW5kYnlfc2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9JTkFDVElWRV9M QUdHSU5HOgorCQkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCWVycm1zZygicmVwbGljYXRpb24g c2xvdCBcIiVzXCIgc3BlY2lmaWVkIGluIHBhcmFtZXRlciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBh Y3RpdmVfcGlkIiwKKwkJCQkJCQkgICBzbG90X25hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cyIpLAorCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcg b24gdGhlIHN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiLiIs CisJCQkJCQkJCSAgc2xvdF9uYW1lKSwKKwkJCQkJCWVycmhpbnQoIlN0YXJ0IHRoZSBzdGFuZGJ5 IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5kIHBh cmFtZXRlciBcIiVzXCIuIiwKKwkJCQkJCQkJc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5k Ynlfc2xvdHMiKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgU1NfU0xPVF9BQ1RJVkVfTEFHR0lO RzoKKwkJCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHNsb3Rfc3RhdGVzW2ldLnJlc3RhcnRfbHNu KSkKKwkJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNs b3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGhhcyBub3QgY2F1Z2h0IHVw IiwKKwkJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSwK KwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gaXMgbm90IHlldCBzZXQ7 IHJlcXVpcmVkIExTTiBpcyAlWC8lWC4iLAorCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1Mod2Fp dF9mb3JfbHNuKSkpOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkJZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQll cnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIl c1wiIGhhcyBub3QgY2F1Z2h0IHVwIiwKKwkJCQkJCQkJICAgc2xvdF9uYW1lLCAic3luY2hyb25p emVkX3N0YW5kYnlfc2xvdHMiKSwKKwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFy dF9sc24gJVgvJVggaXMgYmVoaW5kIHRoZSByZXF1aXJlZCAlWC8lWC4iLAorCQkJCQkJCQkJICBM U05fRk9STUFUX0FSR1Moc2xvdF9zdGF0ZXNbaV0ucmVzdGFydF9sc24pLAorCQkJCQkJCQkJICBM U05fRk9STUFUX0FSR1Mod2FpdF9mb3JfbHNuKSkpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0 OgorCQkJCS8qIFNob3VsZCBub3QgaGFwcGVuICovCisJCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCQli cmVhazsKKwkJfQorCX0KK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIHRoZSByZXF1aXJlZCBz dGFuZGJ5IHNsb3RzIGhhdmUgY2F1Z2h0IHVwIHRvIHRoZSBnaXZlbiBXQUwKKyAqIGxvY2F0aW9u LCBmYWxzZSBvdGhlcndpc2UuCisgKgorICogVGhlIGJlaGF2aW9yIGRlcGVuZHMgb24gdGhlIHN5 bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGNvbmZpZ3VyYXRpb246CisgKgorICogICBTaW1wbGUg bGlzdCAoZS5nLiwgInNsb3QxLCBzbG90MiIpOgorICogICAgIEFMTCBzbG90cyBtdXN0IGhhdmUg Y2F1Z2h0IHVwLiBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBUaGUgZWxldmVsIHBh cmFtZXRlciBzcGVjaWZpZXMgdGhlIGVycm9yIGxldmVsIHVzZWQgZm9yIGxvZ2dpbmcgbWVzc2Fn ZXMKLSAqIHJlbGF0ZWQgdG8gc2xvdHMgdGhhdCBkbyBub3QgZXhpc3QsIGFyZSBpbnZhbGlkYXRl ZCwgb3IgYXJlIGluYWN0aXZlLgorICogICBBTlkgTiAoZS5nLiwgIkFOWSAyIChzbG90MSwgc2xv dDIsIHNsb3QzKSIpOgorICogICAgIFdhaXQgZm9yIGFueSBOIGVsaWdpYmxlIHNsb3RzLiBTa2lw cyBtaXNzaW5nLCBpbnZhbGlkLCBsb2dpY2FsLCBhbmQKKyAqICAgICBsYWdnaW5nIHNsb3RzIChp bmFjdGl2ZSBvciBhY3RpdmUpIHRvIGZpbmQgTiBzbG90cyB0aGF0IGhhdmUgY2F1Z2h0IHVwLgor ICoKKyAqIFRoZSBlbGV2ZWwgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZXJyb3IgbGV2ZWwgdXNl ZCBmb3IgcmVwb3J0aW5nIGlzc3VlcworICogcmVsYXRlZCB0byB0aGUgc2xvdHMgc3BlY2lmaWVk IGluIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHdoZW4gdGhlCisgKiBjYXRjaC11cCByZXF1 aXJlbWVudCBpcyBub3QgbWV0LgogICovCiBib29sCiBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAo WExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGludCBlbGV2ZWwpCiB7CiAJY29uc3QgY2hhciAqbmFt ZTsKIAlpbnQJCQljYXVnaHRfdXBfc2xvdF9udW0gPSAwOworCWludAkJCXJlcXVpcmVkOwogCVhM b2dSZWNQdHIJbWluX3Jlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbAkJd2Fp dF9mb3JfYWxsOworCVN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8gKnNsb3Rfc3RhdGVzOworCWlu dAkJCW51bV9zbG90X3N0YXRlcyA9IDA7CiAKIAkvKgogCSAqIERvbid0IG5lZWQgdG8gd2FpdCBm b3IgdGhlIHN0YW5kYnlzIHRvIGNhdGNoIHVwIGlmIHRoZXJlIGlzIG5vIHZhbHVlIGluCkBAIC0z MTM0LDEyICszMzc4LDQ0IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdh aXRfZm9yX2xzbiwgaW50IGVsZXZlbCkKIAkJc3Nfb2xkZXN0X2ZsdXNoX2xzbiA+PSB3YWl0X2Zv cl9sc24pCiAJCXJldHVybiB0cnVlOwogCisJLyoKKwkgKiBEZXRlcm1pbmUgaG93IG1hbnkgc2xv dHMgYXJlIHJlcXVpcmVkIGFuZCB3aGV0aGVyIHdlJ3JlIGluICJ3YWl0IGZvcgorCSAqIEFMTCIg bW9kZSB2ZXJzdXMgIndhaXQgZm9yIE4tb2YtTSIgbW9kZS4KKwkgKgorCSAqIHdhaXRfZm9yX2Fs bCA9IHRydWUgbWVhbnMgd2UgbmVlZCBBTEwgc2xvdHMgdG8gYmUgcmVhZHkgKHNpbXBsZSBsaXN0 CisJICogc3ludGF4IGxpa2UgInNsb3QxLCBzbG90MiIpLiBJbiB0aGlzIG1vZGUsIHdlIHN0b3Ag Y2hlY2tpbmcgb24gdGhlCisJICogZmlyc3Qgc2xvdCB0aGF0IGlzIG1pc3NpbmcvaW52YWxpZC9s b2dpY2FsLCBvciB0aGUgZmlyc3Qgc2xvdCB0aGF0IGlzCisJICogbGFnZ2luZyAoaW5hY3RpdmUg b3IgYWN0aXZlKS4KKwkgKgorCSAqIHdhaXRfZm9yX2FsbCA9IGZhbHNlIG1lYW5zIHdlIHNlbGVj dCBOIGZyb20gTSBjYW5kaWRhdGVzIChBTlkgTiBzeW50YXgpLgorCSAqIEluIHRoaXMgbW9kZSwg c2xvdHMgYWxyZWFkeSBjYXVnaHQgdXAgYXJlIGNvdW50ZWQgZXZlbiBpZiBpbmFjdGl2ZSwgYW5k CisJICogbGFnZ2luZyBzbG90cyBhcmUgc2tpcHBlZCB1bnRpbCBlbm91Z2ggc2xvdHMgaGF2ZSBj YXVnaHQgdXAuCisJICogRHVwbGljYXRlIGNvbmZpZ3VyZWQgc2xvdCBuYW1lcyBkbyBub3QgYXBw ZWFyIGhlcmUgYmVjYXVzZSB0aGUgY2hlY2sgaG9vaworCSAqIGNvbXBhY3RzIHRoZW0gb3V0IG9m IHRoZSBwYXJzZWQgY29uZmlndXJhdGlvbi4KKwkgKi8KKwlyZXF1aXJlZCA9IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnVtX3N5bmM7CisJd2FpdF9mb3JfYWxsID0gKHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+c3luY3JlcF9tZXRob2QgPT0gU1lOQ19SRVBf REVGQVVMVCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIGFycmF5IHRvIHRyYWNrIHNsb3Qgc3RhdGVz LiBTaXplIGl0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKwkgKiBjb25maWd1cmVkIHNsb3RzIHNp bmNlIGluIHRoZSB3b3JzdCBjYXNlIGFsbCBjb3VsZCBoYXZlIHByb2JsZW0gc3RhdGVzLgorCSAq LworCXNsb3Rfc3RhdGVzID0gcGFsbG9jX2FycmF5KFN5bmNTdGFuZGJ5U2xvdHNTdGF0ZUluZm8s CisJCQkJCQkJICAgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmlnLT5uc2xvdG5hbWVz KTsKKwogCS8qCiAJICogVG8gcHJldmVudCBjb25jdXJyZW50IHNsb3QgZHJvcHBpbmcgYW5kIGNy ZWF0aW9uIHdoaWxlIGZpbHRlcmluZyB0aGUKIAkgKiBzbG90cywgdGFrZSB0aGUgUmVwbGljYXRp b25TbG90Q29udHJvbExvY2sgb3V0c2lkZSBvZiB0aGUgbG9vcC4KIAkgKi8KIAlMV0xvY2tBY3F1 aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwogCisJLyoKKwkgKiBJ dGVyYXRlIHRocm91Z2ggY29uZmlndXJlZCBzbG90cywgY2hlY2tpbmcgdGhlaXIgc3RhdGUgYW5k IHRyYWNraW5nIGhvdworCSAqIG1hbnkgaGF2ZSBjYXVnaHQgdXAuIFByb2JsZW0gc3RhdGVzIGFy ZSByZWNvcmRlZCBmb3IgZGVmZXJyZWQKKwkgKiByZXBvcnRpbmc6IG1pc3NpbmcvbG9naWNhbC9p bnZhbGlkYXRlZCBzbG90cywgYW5kIGxhZ2dpbmcgc2xvdHMKKwkgKiAoaW5hY3RpdmUgb3IgYWN0 aXZlKS4gTWVzc2FnZXMgYXJlIG9ubHkgZW1pdHRlZCBpZiB0aGUgY2F0Y2gtdXAKKwkgKiByZXF1 aXJlbWVudCBpc24ndCBtZXQuCisJICovCiAJbmFtZSA9IHN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzX2NvbmZpZy0+c2xvdF9uYW1lczsKIAlmb3IgKGludCBpID0gMDsgaSA8IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzX2NvbmZpZy0+bnNsb3RuYW1lczsgaSsrKQogCXsKQEAgLTMxNTAsMzUg KzM0MjYsMjggQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQdHIgd2FpdF9mb3Jf bHNuLCBpbnQgZWxldmVsKQogCiAJCXNsb3QgPSBTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChu YW1lLCBmYWxzZSk7CiAKLQkJLyoKLQkJICogSWYgYSBzbG90IG5hbWUgcHJvdmlkZWQgaW4gc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMgZG9lcyBub3QKLQkJICogZXhpc3QsIHJlcG9ydCBhIG1l c3NhZ2UgYW5kIGV4aXQgdGhlIGxvb3AuCi0JCSAqLwogCQlpZiAoIXNsb3QpCiAJCXsKLQkJCWVy ZXBvcnQoZWxldmVsLAotCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAotCQkJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBw YXJhbWV0ZXIgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKLQkJCQkJCSAgIG5hbWUsICJzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRp b24gaXMgd2FpdGluZyBvbiB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24g c2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUpLAotCQkJCQllcnJoaW50KCJDcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9yIGFtZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJ CQkJCQluYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiKSk7Ci0JCQlicmVhazsKKwkJ CS8qIFJlY29yZCBTbG90IFN0YXRlICovCisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNd LnNsb3RfbmFtZSA9IG5hbWU7CisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRl ID0gU1NfU0xPVF9OT1RfRk9VTkQ7CisJCQludW1fc2xvdF9zdGF0ZXMrKzsKKworCQkJaWYgKHdh aXRfZm9yX2FsbCkKKwkJCQlicmVhazsKKwkJCWdvdG8gbmV4dF9zbG90OwogCQl9CiAKLQkJLyog U2FtZSBhcyBhYm92ZTogaWYgYSBzbG90IGlzIG5vdCBwaHlzaWNhbCwgZXhpdCB0aGUgbG9vcC4g Ki8KIAkJaWYgKFNsb3RJc0xvZ2ljYWwoc2xvdCkpCiAJCXsKLQkJCWVyZXBvcnQoZWxldmVsLAot CQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQllcnJt c2coImNhbm5vdCBzcGVjaWZ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gcGFy YW1ldGVyIFwiJXNcIiIsCi0JCQkJCQkgICBuYW1lLCAic3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHMiKSwKLQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgZm9y IGNvcnJlY3Rpb24gb24gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUp LAotCQkJCQllcnJoaW50KCJSZW1vdmUgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVz XCIgZnJvbSBwYXJhbWV0ZXIgXCIlc1wiLiIsCi0JCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzIikpOwotCQkJYnJlYWs7CisJCQkvKiBSZWNvcmQgU2xvdCBTdGF0ZSAqLwor CQkJc2xvdF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zbG90X25hbWUgPSBuYW1lOworCQkJc2xv dF9zdGF0ZXNbbnVtX3Nsb3Rfc3RhdGVzXS5zdGF0ZSA9IFNTX1NMT1RfTE9HSUNBTDsKKwkJCW51 bV9zbG90X3N0YXRlcysrOworCisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJCWJyZWFrOworCQkJ Z290byBuZXh0X3Nsb3Q7CiAJCX0KIAogCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsK QEAgLTMxODksMzMgKzM0NTgsMzQgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dSZWNQ dHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJCWlmIChpbnZhbGlkYXRlZCkKIAkJewot CQkJLyogU3BlY2lmaWVkIHBoeXNpY2FsIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKi8KLQkJ CWVyZXBvcnQoZWxldmVsLAotCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLAotCQkJCQllcnJtc2coInBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGhhcyBiZWVuIGludmFsaWRhdGVk IiwKLQkJCQkJCSAgIG5hbWUsICJzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyIpLAotCQkJCQll cnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMgd2FpdGluZyBvbiB0aGUgc3RhbmRieSBh c3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBcIiVzXCIuIiwKLQkJCQkJCQkgIG5hbWUp LAotCQkJCQllcnJoaW50KCJEcm9wIGFuZCByZWNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIsIG9yIGFtZW5kIHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJCQluYW1lLCAic3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMiKSk7Ci0JCQlicmVhazsKKwkJCS8qIFJlY29yZCBTbG90IFN0 YXRlICovCisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnNsb3RfbmFtZSA9IG5hbWU7 CisJCQlzbG90X3N0YXRlc1tudW1fc2xvdF9zdGF0ZXNdLnN0YXRlID0gU1NfU0xPVF9JTlZBTElE QVRFRDsKKwkJCW51bV9zbG90X3N0YXRlcysrOworCisJCQlpZiAod2FpdF9mb3JfYWxsKQorCQkJ CWJyZWFrOworCQkJZ290byBuZXh0X3Nsb3Q7CiAJCX0KIAogCQlpZiAoIVhMb2dSZWNQdHJJc1Zh bGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0YXJ0X2xzbiA8IHdhaXRfZm9yX2xzbikKIAkJewotCQkJ LyogTG9nIGEgbWVzc2FnZSBpZiBubyBhY3RpdmVfcGlkIGZvciB0aGlzIHBoeXNpY2FsIHNsb3Qg Ki8KLQkJCWlmIChpbmFjdGl2ZSkKLQkJCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJCWVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCQllcnJtc2co InJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXIgXCIlc1wiIGRv ZXMgbm90IGhhdmUgYWN0aXZlX3BpZCIsCi0JCQkJCQkJICAgbmFtZSwgInN5bmNocm9uaXplZF9z dGFuZGJ5X3Nsb3RzIiksCi0JCQkJCQllcnJkZXRhaWwoIkxvZ2ljYWwgcmVwbGljYXRpb24gaXMg d2FpdGluZyBvbiB0aGUgc3RhbmRieSBhc3NvY2lhdGVkIHdpdGggcmVwbGljYXRpb24gc2xvdCBc IiVzXCIuIiwKLQkJCQkJCQkJICBuYW1lKSwKLQkJCQkJCWVycmhpbnQoIlN0YXJ0IHRoZSBzdGFu ZGJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIsIG9yIGFtZW5k IHBhcmFtZXRlciBcIiVzXCIuIiwKLQkJCQkJCQkJbmFtZSwgInN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzIikpOworCQkJLyoKKwkJCSAqIElmIGEgc2xvdCBpcyBpbmFjdGl2ZSBhbmQgbGFnZ2lu ZywgcmVwb3J0IGl0IGFzIGluYWN0aXZlLiBJZiBpdAorCQkJICogaXMgYWN0aXZlIGFuZCBsYWdn aW5nLCByZXBvcnQgaXQgYXMgbGFnZ2luZy4KKwkJCSAqCisJCQkgKiBJbiBBTEwgbW9kZTogbXVz dCB3YWl0IGZvciBpdC4gSW4gQU5ZIE4gKHF1b3J1bSkgbW9kZTogc2tpcCBhbmQKKwkJCSAqIHVz ZSBhbm90aGVyIHNsb3QuCisJCQkgKi8KKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10u c2xvdF9uYW1lID0gbmFtZTsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10uc3RhdGUg PQorCQkJCWluYWN0aXZlID8gU1NfU0xPVF9JTkFDVElWRV9MQUdHSU5HIDogU1NfU0xPVF9BQ1RJ VkVfTEFHR0lORzsKKwkJCXNsb3Rfc3RhdGVzW251bV9zbG90X3N0YXRlc10ucmVzdGFydF9sc24g PSByZXN0YXJ0X2xzbjsKKwkJCW51bV9zbG90X3N0YXRlcysrOwogCi0JCQkvKiBDb250aW51ZSBp ZiB0aGUgY3VycmVudCBzbG90IGhhc24ndCBjYXVnaHQgdXAuICovCi0JCQlicmVhazsKKwkJCWlm ICh3YWl0X2Zvcl9hbGwpCisJCQkJYnJlYWs7CisJCQlnb3RvIG5leHRfc2xvdDsKIAkJfQogCiAJ CUFzc2VydChyZXN0YXJ0X2xzbiA+PSB3YWl0X2Zvcl9sc24pOwpAQCAtMzIyNiwxNyArMzQ5Niwz MCBAQCBTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sIGlu dCBlbGV2ZWwpCiAKIAkJY2F1Z2h0X3VwX3Nsb3RfbnVtKys7CiAKKwkJLyogU3RvcCBwcm9jZXNz aW5nIGlmIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBjYXVnaHQgdXAuICovCisJ CWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPj0gcmVxdWlyZWQpCisJCQlicmVhazsKKworbmV4dF9z bG90OgogCQluYW1lICs9IHN0cmxlbihuYW1lKSArIDE7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShS ZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAKIAkvKgotCSAqIFJldHVybiBmYWxzZSBpZiBu b3QgYWxsIHRoZSBzdGFuZGJ5cyBoYXZlIGNhdWdodCB1cCB0byB0aGUgc3BlY2lmaWVkCi0JICog V0FMIGxvY2F0aW9uLgorCSAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2Ygc2xvdHMgaGF2ZSBu b3QgY2F1Z2h0IHVwLCByZXBvcnQgYW55IHJlY29yZGVkCisJICogcHJvYmxlbSBzdGF0ZXMgYW5k IHJldHVybiBmYWxzZS4KKwkgKgorCSAqIFdlIG9ubHkgZW1pdCBtZXNzYWdlcyB3aGVuIHRoZSBy ZXF1aXJlbWVudCBpcyBub3QgbWV0IHRvIGF2b2lkCisJICogbWlzbGVhZGluZyBtZXNzYWdlcyBp biBxdW9ydW0gbW9kZSB3aGVyZSBvdGhlciBzbG90cyBtYXkgaGF2ZSBzYXRpc2ZpZWQKKwkgKiB0 aGUgY29uZGl0aW9uIGRlc3BpdGUgc29tZSBzbG90cyBoYXZpbmcgaXNzdWVzLgogCSAqLwotCWlm IChjYXVnaHRfdXBfc2xvdF9udW0gIT0gc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHNfY29uZmln LT5uc2xvdG5hbWVzKQorCWlmIChjYXVnaHRfdXBfc2xvdF9udW0gPCByZXF1aXJlZCkKKwl7CisJ CVJlcG9ydFVuYXZhaWxhYmxlU3luY1N0YW5kYnlTbG90cyhzbG90X3N0YXRlcywgbnVtX3Nsb3Rf c3RhdGVzLCBlbGV2ZWwsIHdhaXRfZm9yX2xzbik7CisJCXBmcmVlKHNsb3Rfc3RhdGVzKTsKIAkJ cmV0dXJuIGZhbHNlOworCX0KIAogCS8qIFRoZSBzc19vbGRlc3RfZmx1c2hfbHNuIG11c3Qgbm90 IHJldHJlYXQuICovCiAJQXNzZXJ0KCFYTG9nUmVjUHRySXNWYWxpZChzc19vbGRlc3RfZmx1c2hf bHNuKSB8fApAQCAtMzI0NCw2ICszNTI3LDcgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhM b2dSZWNQdHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCiAJc3Nfb2xkZXN0X2ZsdXNoX2xz biA9IG1pbl9yZXN0YXJ0X2xzbjsKIAorCXBmcmVlKHNsb3Rfc3RhdGVzKTsKIAlyZXR1cm4gdHJ1 ZTsKIH0KIApAQCAtMzI3Niw3ICszNTYwLDEwIEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9u KFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CiAJCX0KIAotCQkvKiBFeGl0IGlmIGRvbmUgd2FpdGluZyBmb3IgZXZlcnkgc2xvdC4gKi8K KwkJLyoKKwkJICogRXhpdCBvbmNlIHRoZSBjb25maWd1cmVkIHN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzIHJlcXVpcmVtZW50IGlzCisJCSAqIG1ldC4KKwkJICovCiAJCWlmIChTdGFuZGJ5U2xv dHNIYXZlQ2F1Z2h0dXAod2FpdF9mb3JfbHNuLCBXQVJOSU5HKSkKIAkJCWJyZWFrOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55CmluZGV4IGYxNTUwZTEwOWVmLi5jMzQ2YTRj ZDU3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9ncmFtLnkKQEAgLTEsNyArMSw5 IEBACiAlewogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogc3luY3JlcF9ncmFtLnkJCQkJLSBQ YXJzZXIgZm9yIHN5bmNocm9ub3VzX3N0YW5kYnlfbmFtZXMKKyAqIHN5bmNyZXBfZ3JhbS55Cisg KiAJUGFyc2VyIGZvciBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzLCBhbHNvIHJldXNlZCBieQor ICogCXN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg Q2FsaWZvcm5pYQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcF9z Y2FubmVyLmwgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX3NjYW5uZXIubAppbmRl eCA0NzVhN2M0MDE0ZS4uODY0NmU0NjFhNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3N5bmNyZXBfc2Nhbm5lci5sCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5 bmNyZXBfc2Nhbm5lci5sCkBAIC0yLDcgKzIsOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgog ICogc3luY3JlcF9zY2FubmVyLmwKLSAqCSAgYSBsZXhpY2FsIHNjYW5uZXIgZm9yIHN5bmNocm9u b3VzX3N0YW5kYnlfbmFtZXMKKyAqCSAgYSBsZXhpY2FsIHNjYW5uZXIgZm9yIHN5bmNocm9ub3Vz X3N0YW5kYnlfbmFtZXMsIGFsc28gcmV1c2VkIGJ5CisgKgkgIHN5bmNocm9uaXplZF9zdGFuZGJ5 X3Nsb3RzCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc3luY3JlcC5oCmluZGV4IDkwZWE0OGIxZDE0Li5iYzgwZmY2YTZmZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3N5bmNyZXAuaApAQCAtOTQsOCArOTQsOSBAQCBleHRlcm4gaW50CVN5bmNSZXBHZXRD YW5kaWRhdGVTdGFuZGJ5cyhTeW5jUmVwU3RhbmRieURhdGEgKipzdGFuZGJ5cyk7CiBleHRlcm4g dm9pZCBTeW5jUmVwVXBkYXRlU3luY1N0YW5kYnlzRGVmaW5lZCh2b2lkKTsKIAogLyoKLSAqIElu dGVybmFsIGZ1bmN0aW9ucyBmb3IgcGFyc2luZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzIGdy YW1tYXIsCi0gKiBpbiBzeW5jcmVwX2dyYW0ueSBhbmQgc3luY3JlcF9zY2FubmVyLmwKKyAqIElu dGVybmFsIGZ1bmN0aW9ucyBmb3IgcGFyc2luZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzIGdy YW1tYXIsIGFsc28KKyAqIHJldXNlZCBieSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cywgaW4g c3luY3JlcF9ncmFtLnkgYW5kCisgKiBzeW5jcmVwX3NjYW5uZXIubAogICovCiB1bmlvbiBZWVNU WVBFOwogdHlwZWRlZiB2b2lkICp5eXNjYW5fdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdW5zYWZlX3Rlc3RzL2V4cGVjdGVkL2d1Y19wcml2cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVz L3Vuc2FmZV90ZXN0cy9leHBlY3RlZC9ndWNfcHJpdnMub3V0CmluZGV4IDNjZjJmMmZkYjg1Li44 MDM4ZjAwZmEwOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy91bnNhZmVfdGVzdHMvZXhw ZWN0ZWQvZ3VjX3ByaXZzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Vuc2FmZV90ZXN0cy9l eHBlY3RlZC9ndWNfcHJpdnMub3V0CkBAIC01OTAsOCArNTkwLDcgQEAgSElOVDogIFRoZSBuYW1l ICJwZ19jb25mbGljdF9kZXRlY3Rpb24iIGlzIHJlc2VydmVkIGZvciB0aGUgY29uZmxpY3QgZGV0 ZWN0aW9uIHMKIC0tIENhbm5vdCBzZXQgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdG8gYW4g aW52YWxpZCBzbG90IG5hbWUKIEFMVEVSIFNZU1RFTSBTRVQgc3luY2hyb25pemVkX3N0YW5kYnlf c2xvdHM9J2ludmFsaWQqJzsKIEVSUk9SOiAgaW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICJz eW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyI6ICJpbnZhbGlkKiIKLURFVEFJTDogIHJlcGxpY2F0 aW9uIHNsb3QgbmFtZSAiaW52YWxpZCoiIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyCi1ISU5U OiAgUmVwbGljYXRpb24gc2xvdCBuYW1lcyBtYXkgb25seSBjb250YWluIGxvd2VyIGNhc2UgbGV0 dGVycywgbnVtYmVycywgYW5kIHRoZSB1bmRlcnNjb3JlIGNoYXJhY3Rlci4KK0RFVEFJTDogIHN5 bnRheCBlcnJvciBhdCBvciBuZWFyICIqIgogLS0gQ2FuIHNldCBzeW5jaHJvbml6ZWRfc3RhbmRi eV9zbG90cyB0byBhIG5vbi1leGlzdGVudCBzbG90IG5hbWUKIEFMVEVSIFNZU1RFTSBTRVQgc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHM9J21pc3NpbmcnOwogLS0gUmVzZXQgdGhlIEdVQwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTRfc3luY2hyb25pemVkX3N0YW5kYnlfc2xv dHNfcXVvcnVtLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTRfc3luY2hyb25pemVkX3N0YW5k Ynlfc2xvdHNfcXVvcnVtLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5kMzg3ZTBjN2U3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU0 X3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzX3F1b3J1bS5wbApAQCAtMCwwICsxLDM2NyBAQAor CisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorCisjIFRlc3Qgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgd2l0aCBkaWZmZXJl bnQgc3ludGF4IG1vZGVzOgorIyAtIFBsYWluIGxpc3QgKEFMTCBtb2RlKTogc2xvdDEsIHNsb3Qy CisjIC0gQU5ZIE4gKHF1b3J1bSBtb2RlKTogQU5ZIE4gKHNsb3QxLCBzbG90MiwgLi4uKQorIwor IyBTZXR1cDogYSAzLW5vZGUgY2x1c3RlciB3aXRoIG9uZSBwcmltYXJ5LCB0d28gcGh5c2ljYWwg c3RhbmRieXMsIGFuZCBhCisjIGxvZ2ljYWwgZGVjb2RpbmcgY2xpZW50IHVzaW5nIGEgZmFpbG92 ZXItZW5hYmxlZCBzbG90LgorIworIyAgICAgICAgICAgICAgIHwgLS0tLT4gc3RhbmRieTEgKHBy aW1hcnlfc2xvdF9uYW1lID0gc2IxX3Nsb3QpCisjIHByaW1hcnkgLS0tLS0tfAorIyAgICAgICAg ICAgICAgIHwgLS0tLT4gc3RhbmRieTIgKHByaW1hcnlfc2xvdF9uYW1lID0gc2IyX3Nsb3QpCisj CisjICAgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcyA9ICdBTlkgMSAoc3RhbmRieTEsIHN0YW5k YnkyKScKKyMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK K3VzZSBUZXN0OjpNb3JlOworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAxLiAgQ3JlYXRlIGEg cHJpbWFyeSB3aXRoIGxvZ2ljYWwgcmVwbGljYXRpb24gbGV2ZWwsIGF1dG92YWN1dW0gb2ZmCisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorbXkgJHByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRwcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKKyRwcmltYXJ5LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywg cXF7CithdXRvdmFjdXVtID0gb2ZmCit9KTsKKyRwcmltYXJ5LT5zdGFydDsKKworIyBQaHlzaWNh bCByZXBsaWNhdGlvbiBzbG90cyBmb3IgdGhlIHR3byBzdGFuZGJ5cworJHByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9u X3Nsb3QoJ3NiMV9zbG90Jyk7Iik7CiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnc2IyX3Nsb3QnKTsi KTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgMi4gIENyZWF0ZSBzdGFuZGJ5MSBhbmQgc3Rh bmRieTIgZnJvbSBhIGZyZXNoIGJhY2t1cAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK215ICRiYWNr dXBfbmFtZSA9ICdiYXNlX2JhY2t1cCc7CiskcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7 CisKK215ICRjb25uc3RyID0gJHByaW1hcnktPmNvbm5zdHI7CisKK215ICRzdGFuZGJ5MSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsKKyRzdGFuZGJ5MS0+aW5p dF9mcm9tX2JhY2t1cCgKKwkkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcg PT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0YW5kYnkxLT5hcHBlbmRfY29uZigKKwkn cG9zdGdyZXNxbC5jb25mJywgcXEoCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitwcmltYXJ5 X3Nsb3RfbmFtZSA9ICdzYjFfc2xvdCcKK3ByaW1hcnlfY29ubmluZm8gPSAnJGNvbm5zdHIgZGJu YW1lPXBvc3RncmVzJworKSk7CisKK215ICRzdGFuZGJ5MiA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnc3RhbmRieTInKTsKKyRzdGFuZGJ5Mi0+aW5pdF9mcm9tX2JhY2t1cCgKKwkk cHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9y aW5nID0+IDEpOworJHN0YW5kYnkyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywg cXEoCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitwcmltYXJ5X3Nsb3RfbmFtZSA9ICdzYjJf c2xvdCcKK3ByaW1hcnlfY29ubmluZm8gPSAnJGNvbm5zdHIgZGJuYW1lPXBvc3RncmVzJworKSk7 CisKKyRzdGFuZGJ5MS0+c3RhcnQ7Ciskc3RhbmRieTItPnN0YXJ0OworCiskcHJpbWFyeS0+d2Fp dF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBs YXlfY2F0Y2h1cCgkc3RhbmRieTIpOworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAzLiAgQ3Jl YXRlIGEgbG9naWNhbCBmYWlsb3ZlciBzbG90IG9uIHRoZSBwcmltYXJ5CisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3Jl YXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgnbG9naWNhbF9mYWlsb3ZlcicsICd0ZXN0X2Rl Y29kaW5nJywgZmFsc2UsIGZhbHNlLCB0cnVlKTsiCispOworCisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyA0LiAgQ29uZmlndXJlIHF1b3J1bSBzeW5jIHJlcCB3aXRoIEFMTC1tb2RlIHN5bmNocm9u aXplZF9zdGFuZGJ5X3Nsb3RzCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJHByaW1hcnktPmFwcGVu ZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKK3N5bmNocm9ub3VzX3N0YW5kYnlfbmFt ZXMgPSAnQU5ZIDEgKHN0YW5kYnkxLCBzdGFuZGJ5MiknCitzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cyA9ICdzYjFfc2xvdCwgc2IyX3Nsb3QnCit9KTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRw cmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieTEpOworJHByaW1hcnktPndh aXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIDUuICBDb25maXJtIHRoYXQgcXVvcnVtIHN5bmMgcmVwIGlzIGFjdGl2ZSBmb3IgYm90aCBz dGFuZGJ5cworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2lzKCAkcHJpbWFyeS0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgc3luY19zdGF0ZSA9ICdxdW9ydW0nO30KKwkpLAorCScyJywKKwknYm90aCBzdGFu ZGJ5cyBhcmUgaW4gcXVvcnVtIHN5bmMgc3RhdGUnKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUEFSVCBBOiBQbGFpbiBsaXN0IChBTEwg bW9kZSkgYmxvY2tzIHdoZW4gYW55IHNsb3QgaXMgdW5hdmFpbGFibGUKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRzdGFuZGJ5MS0+c3RvcDsK KworIyBDb21taXQgc3VjY2VlZHMgc2luY2Ugc3RhbmRieTIgc2F0aXNmaWVzIHRoZSBxdW9ydW0u CitteSAkZW1pdF9sc24gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZSh0cnVlLCAncXRlc3QnLCAnYWxsX21vZGVfYmxvY2tz Jyk7IgorKTsKK2xpa2UoJGVtaXRfbHNuLCBxci9eWzAtOUEtRl0rXC9bMC05QS1GXSskLywKKwkn c3luY2hyb25vdXMgY29tbWl0IHN1Y2NlZWRzIHdpdGggcXVvcnVtIChzdGFuZGJ5MiBhbGl2ZSkn KTsKKworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKK215 ICRsb2dfb2Zmc2V0ID0gLXMgJHByaW1hcnktPmxvZ2ZpbGU7CisKK215ICRiZyA9ICRwcmltYXJ5 LT5iYWNrZ3JvdW5kX3BzcWwoCisJJ3Bvc3RncmVzJywKKwlvbl9lcnJvcl9zdG9wID0+IDAsCisJ dGltZW91dCA9PiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisK KyRiZy0+cXVlcnlfdW50aWwoCisJcXIvZGVjb2RlX3N0YXJ0LywgcSgKKyAgIFxlY2hvIGRlY29k ZV9zdGFydAorICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2xvZ2ljYWxf ZmFpbG92ZXInLCBOVUxMLCBOVUxMKTsKKykpOworCisjIFdhaXQgZm9yIHRoZSBwcmltYXJ5IHRv IGxvZyBhIHdhcm5pbmcgYWJvdXQgc2IxX3Nsb3Qgbm90IGJlaW5nIGFjdGl2ZS4KKyRwcmltYXJ5 LT53YWl0X2Zvcl9sb2coCisJcXIvcmVwbGljYXRpb24gc2xvdCBcInNiMV9zbG90XCIgc3BlY2lm aWVkIGluIHBhcmFtZXRlciAic3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMiIGRvZXMgbm90IGhh dmUgYWN0aXZlX3BpZC8sCisJJGxvZ19vZmZzZXQpOworCitwYXNzKCdwbGFpbiBsaXN0IChBTEwg bW9kZSk6IGxvZ2ljYWwgZGVjb2RpbmcgYmxvY2tlZCBieSB1bmF2YWlsYWJsZSBzYjFfc2xvdCcp OworCisjIFVuYmxvY2sgYnkgY2xlYXJpbmcgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMuCisk cHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90cycsICInJyIpOworJHByaW1hcnktPnJlbG9hZDsKKyRiZy0+cXVpdDsKKworIyBD b25zdW1lIHRoZSBjaGFuZ2Ugc28gdGhlIHNsb3QgaXMgY2xlYW4gZm9yIHRoZSBuZXh0IHRlc3Qu CiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7fSk7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFBBUlQg QjogQU5ZIG1vZGUgKHF1b3J1bSkg4oCUIGxvZ2ljYWwgZGVjb2RpbmcgcHJvY2VlZHMgd2l0aCBO LW9mLU0gc2xvdHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyMgU3dpdGNoIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHRvIHF1b3J1bSBt b2RlOiBuZWVkIG9ubHkgMSBvZiAyIHNsb3RzLgorJHByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSInQU5ZIDEgKHNi MV9zbG90LCBzYjJfc2xvdCknIik7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIHN0YW5kYnkxIGlz IHN0aWxsIGRvd247IHN0YW5kYnkyIGlzIHVwLgorCisjIEVtaXQgYW5vdGhlciB0cmFuc2FjdGlv bmFsIG1lc3NhZ2Ug4oCUIGNvbW1pdHMgdmlhIHF1b3J1bS4KKyRwcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVz dCcsICdxdW9ydW1fbW9kZV93b3JrcycpOyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5 X2NhdGNodXAoJHN0YW5kYnkyKTsKKworIyBJbiBxdW9ydW0gbW9kZSwgbG9naWNhbCBkZWNvZGlu ZyBzaG91bGQgTk9UIGJsb2NrIGJlY2F1c2Ugc2IyX3Nsb3QgaGFzCisjIGNhdWdodCB1cCBhbmQg MS1vZi0yIGlzIHN1ZmZpY2llbnQuCitteSAkZGVjb2RlZCA9ICRwcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpCisJICBXSEVSRSBkYXRhIExJ S0UgJyVxdW9ydW1fbW9kZV93b3JrcyUnO30pOworaXMoJGRlY29kZWQsICcxJywKKwknQU5ZIG1v ZGU6IGxvZ2ljYWwgZGVjb2RpbmcgcHJvY2VlZHMgd2l0aCBvbmx5IHNiMl9zbG90IGNhdWdodCB1 cCcpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBQQVJUIEM6IFJlLWNoZWNrIHBsYWluIGxpc3QgKEFMTCBtb2RlKSB3b3JrcyB3aGVuIGJv dGggc3RhbmRieXMgYXJlIHVwCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIEJyaW5nIHN0YW5kYnkxIGJhY2suCiskc3RhbmRieTEtPnN0YXJ0 OworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CisKKyMgU3dp dGNoIHRvIHBsYWluIGxpc3QgKEFMTCBtb2RlKSB3aXRoIGJvdGggc2xvdHMuCiskcHJpbWFyeS0+ YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90 cycsCisJIidzYjFfc2xvdCwgc2IyX3Nsb3QnIik7CiskcHJpbWFyeS0+cmVsb2FkOworCiskcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sb2dpY2FsX2VtaXRfbWVz c2FnZSh0cnVlLCAncXRlc3QnLCAnYm90aF9jYXVnaHRfdXAnKTsiCispOworJHByaW1hcnktPndh aXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVw bGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKworbXkgJGRlY29kZWRfYmMgPSAkcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ2xvZ2ljYWxfZmFpbG92ZXInLCBOVUxMLCBOVUxMKQorCSAgV0hFUkUg ZGF0YSBMSUtFICclYm90aF9jYXVnaHRfdXAlJzt9KTsKK2lzKCRkZWNvZGVkX2JjLCAnMScsCisJ J3BsYWluIGxpc3Q6IHdvcmtzIHdoZW4gYWxsIHN0YW5kYnlzIGFyZSB1cCcpOworCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEQ6IEFO WSAyIHdhaXRzIG9uIGFuIGFjdGl2ZSBsYWdnaW5nIHNsb3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgU3RvcCBzdGFuZGJ5MSBzbyBzYjFf c2xvdCBjYW4gYmUgY29udHJvbGxlZCBieSBhIHJhdyByZXBsaWNhdGlvbiBjb25uZWN0aW9uCisj IHRoYXQga2VlcHMgdGhlIHNsb3QgYWN0aXZlIHdoaWxlIGxhZ2dpbmcuCiskc3RhbmRieTEtPnN0 b3A7CisKK215ICRvbGRfbHNuID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk7Iik7CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZign cG9zdGdyZXNxbC5jb25mJywgJ3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywKKwkiJ0FOWSAy IChzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9hZDsKKworbXkgJGFueTJf bGFnX2xzbiA9ICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xv Z2ljYWxfZW1pdF9tZXNzYWdlKHRydWUsICdxdGVzdCcsICdhbnlfMl9sYWdnaW5nX2Jsb2Nrcycp OyIKKyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKwor bXkgJHJlcGxfYW55MiA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoCisJJ3Bvc3RncmVzJywK KwlyZXBsaWNhdGlvbiA9PiAnZGF0YWJhc2UnLAorCW9uX2Vycm9yX3N0b3AgPT4gMCwKKwl0aW1l b3V0ID0+ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworJHJl cGxfYW55Mi0+cXVlcnlfdW50aWwoCisJcXIvXiQvLAorCSJTVEFSVF9SRVBMSUNBVElPTiBTTE9U IHNiMV9zbG90IFBIWVNJQ0FMICRvbGRfbHNuO1xuIik7CisKKyRwcmltYXJ5LT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNUIGFjdGl2ZV9waWQgSVMgTk9UIE5VTEwKKwlG Uk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJV0hFUkUgc2xvdF9uYW1lID0gJ3NiMV9zbG90Jwor fSkgb3IgZGllICJyZXBsaWNhdGlvbiBjb25uZWN0aW9uIGRpZCBub3QgYWN0aXZhdGUgc2IxX3Ns b3QiOworCitteSAkYmdfYW55MiA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoCisJJ3Bvc3Rn cmVzJywKKwlvbl9lcnJvcl9zdG9wID0+IDAsCisJdGltZW91dCA9PiAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKyRiZ19hbnkyLT5xdWVyeV91bnRpbCgKKwlx ci9kZWNvZGVfc3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxFQ1QgcGdf bG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwp OworKSk7CisKK29rKCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywg cXsKK1NFTEVDVCBFWElTVFMgKAorCVNFTEVDVCAxCisJRlJPTSBwZ19zdGF0X2FjdGl2aXR5CisJ V0hFUkUgd2FpdF9ldmVudCA9ICdXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbicKKwkgIEFORCBx dWVyeSBMSUtFICclcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnJ2xvZ2ljYWxfZmFpbG92 ZXInJyUnCispOworfSksCisJJ0FOWSAyOiBkZWNvZGluZyB3YWl0cyB3aGVuIG9ubHkgb25lIHNs b3QgaGFzIGNhdWdodCB1cCcpOworCiskcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsICdzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cycsICInJyIpOworJHByaW1hcnktPnJl bG9hZDsKKyRiZ19hbnkyLT5xdWl0OworJHJlcGxfYW55Mi0+cXVpdDsKKworIyBDb25zdW1lIHRo ZSBjaGFuZ2UgZm9yIHRoZSBuZXh0IHRlc3QuCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxv dmVyJywgTlVMTCwgTlVMTCk7fSk7CisKKyMgQnJpbmcgc3RhbmRieTEgYmFjayB1cCBmb3IgdGhl IHJlbWFpbmluZyB0ZXN0cy4KKyRzdGFuZGJ5MS0+c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3Jf cmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQQVJUIEU6IER1cGxpY2F0ZSBlbnRyaWVzIGFy ZSBpZ25vcmVkIGZvciBxdW9ydW0gY291bnRpbmcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgU3RvcCBzdGFuZGJ5MiBzbyBvbmx5IHNiMV9z bG90IGNhbiBjYXRjaCB1cC4KKyRzdGFuZGJ5Mi0+c3RvcDsKKworJHByaW1hcnktPmFkanVzdF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMnLAorCSIn QU5ZIDIgKHNiMV9zbG90LCBzYjFfc2xvdCwgc2IyX3Nsb3QpJyIpOworJHByaW1hcnktPnJlbG9h ZDsKKworJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbG9naWNh bF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3F0ZXN0JywgJ2R1cGxpY2F0ZV9lbnRyaWVzX2lnbm9yZWQn KTsiCispOworJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CisK K215ICRiZ19kdXAgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAorCSdwb3N0Z3JlcycsCisJ b25fZXJyb3Jfc3RvcCA9PiAwLAorCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0aW1lb3V0X2RlZmF1bHQpOworCiskYmdfZHVwLT5xdWVyeV91bnRpbCgKKwlxci9kZWNvZGVf c3RhcnQvLCBxKAorICAgXGVjaG8gZGVjb2RlX3N0YXJ0CisgICBTRUxFQ1QgcGdfbG9naWNhbF9z bG90X3BlZWtfY2hhbmdlcygnbG9naWNhbF9mYWlsb3ZlcicsIE5VTEwsIE5VTEwpOworKSk7CisK K29rKCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXsKK1NFTEVD VCBFWElTVFMgKAorCVNFTEVDVCAxCisJRlJPTSBwZ19zdGF0X2FjdGl2aXR5CisJV0hFUkUgd2Fp dF9ldmVudCA9ICdXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbicKKwkgIEFORCBxdWVyeSBMSUtF ICclcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnJ2xvZ2ljYWxfZmFpbG92ZXInJyUnCisp OworfSksCisJJ2R1cGxpY2F0ZSBlbnRyaWVzIGFyZSBpZ25vcmVkIHdoZW4gY291bnRpbmcgcXVv cnVtIHNsb3RzJyk7CisKKyRwcmltYXJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywg J3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzJywgIicnIik7CiskcHJpbWFyeS0+cmVsb2FkOwor JGJnX2R1cC0+cXVpdDsKKworIyBDb25zdW1lIHRoZSBjaGFuZ2UgZm9yIHRoZSBuZXh0IHRlc3Qu CiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdsb2dpY2FsX2ZhaWxvdmVyJywgTlVMTCwgTlVMTCk7fSk7CisKKyMg QnJpbmcgc3RhbmRieTIgYmFjayB1cCBmb3IgdmFsaWRhdGlvbiB0ZXN0cy4KKyRzdGFuZGJ5Mi0+ c3RhcnQ7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkyKTsKKwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQ QVJUIEY6IFZlcmlmeSBHVUMgdmFsaWRhdGlvbiByZWplY3RzIGJhZCB2YWx1ZXMKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICgkcmVzdWx0 LCAkc3Rkb3V0LCAkc3RkZXJyKTsKKworIyBOIGV4Y2VlZHMgbnVtYmVyIG9mIGxpc3RlZCBzbG90 cworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyA9ICdBTlkg MyAoc2IxX3Nsb3QsIHNiMl9zbG90KSc7Iik7CitsaWtlKCRzdGRlcnIsIHFyL0VSUk9SLywKKwkn R1VDIHJlamVjdHMgQU5ZIE4gd2hlbiBOID4gbnVtYmVyIG9mIGxpc3RlZCBzbG90cycpOworCisj IE1pc3NpbmcgY2xvc2luZyBwYXJlbnRoZXNpcworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIp ID0gJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cyA9ICdBTlkgMSAoc2IxX3Nsb3QsIHNiMl9zbG90JzsiKTsKK2xp a2UoJHN0ZGVyciwgcXIvRVJST1IvLAorCSdHVUMgcmVqZWN0cyBtYWxmb3JtZWQgQU5ZIHN5bnRh eCcpOworCisjIFByaW9yaXR5IHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN5bmNocm9uaXpl ZF9zdGFuZGJ5X3Nsb3RzIHlldAorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1h cnktPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3Rh bmRieV9zbG90cyA9ICdGSVJTVCAxIChzYjFfc2xvdCwgc2IyX3Nsb3QpJzsiKTsKK2xpa2UoJHN0 ZGVyciwgcXIvcHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQvLAorCSdHVUMgcmVqZWN0 cyBGSVJTVCBzeW50YXgnKTsKKworIyBMZWdhY3kgcHJpb3JpdHkgc3ludGF4IGlzIG5vdCBzdXBw b3J0ZWQgYnkgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgeWV0CisoJHJlc3VsdCwgJHN0ZG91 dCwgJHN0ZGVycikgPSAkcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTWVNURU0g U0VUIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzID0gJzEgKHNiMV9zbG90LCBzYjJfc2xvdCkn OyIpOworbGlrZSgkc3RkZXJyLCBxci9wcmlvcml0eSBzeW50YXggaXMgbm90IHN1cHBvcnRlZC8s CisJJ0dVQyByZWplY3RzIGxlZ2FjeSBwcmlvcml0eSBzeW50YXgnKTsKKworIyBJbnZhbGlkIHNs b3QgbmFtZQorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHByaW1hcnktPnBzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgU1lTVEVNIFNFVCBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyA9 ICdBTlkgMSAoSU5WQUxJRF9VUFBFUiknOyIpOworbGlrZSgkc3RkZXJyLCBxci9FUlJPUi8sCisJ J0dVQyByZWplY3RzIGludmFsaWQgc2xvdCBuYW1lIGluIEFOWSBzeW50YXgnKTsKKworIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgQ2xlYW51cAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyRwcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dCgnbG9naWNhbF9mYWlsb3ZlcicpOyIpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggZjllYjIzZTUyYzkuLjdlYzQ1YmNjZDJjIDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMzA3MSw2ICszMDcxLDggQEAgU3luY1JlcFN0YW5kYnlEYXRhCiBT eW5jUmVxdWVzdEhhbmRsZXIKIFN5bmNSZXF1ZXN0VHlwZQogU3luY1N0YW5kYnlTbG90c0NvbmZp Z0RhdGEKK1N5bmNTdGFuZGJ5U2xvdHNTdGF0ZQorU3luY1N0YW5kYnlTbG90c1N0YXRlSW5mbwog U3luY2luZ1JlbGF0aW9uc1N0YXRlCiBTeXNDYWNoZUlkZW50aWZpZXIKIFN5c0ZLUmVsYXRpb25z aGlwCi0tIAoyLjQzLjAKCg== --00000000000048ea3006545c9bb6 Content-Type: application/octet-stream; name="0001-Refactor-syncrep-parsing-to-represent-bare-standby-l.patch" Content-Disposition: attachment; filename="0001-Refactor-syncrep-parsing-to-represent-bare-standby-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqgihdho0 RnJvbSA5ZTZkZWVmMzg2MTVmM2I3MWJiNzI5OWViM2VkNzYyMmExOGU3NzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBTaGFybWEgPGFzaHUuY29lazg4QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAxMiBKdW4gMjAyNiAwOTo0NDo1MSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg MS8zXSBSZWZhY3RvciBzeW5jcmVwIHBhcnNpbmcgdG8gcmVwcmVzZW50IGJhcmUgc3RhbmRieSBs aXN0cwogZXhwbGljaXRseQoKVGhlIHN5bmNyZXAgcGFyc2VyIGN1cnJlbnRseSByZWR1Y2VzIGEg c2ltcGxlIGxpc3QgZm9ybSB0byBGSVJTVCAxCihTWU5DX1JFUF9QUklPUklUWSkuIFRoYXQgaXMg YWNjZXB0YWJsZSBmb3Igc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcywKYnV0IGl0IGxvc2VzIGlu Zm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgRklSU1Qgd2FzIGV4cGxpY2l0bHkgd3JpdHRlbi4KCklu dHJvZHVjZSBTWU5DX1JFUF9ERUZBVUxUIHRvIHJlcHJlc2VudCB0aGUgYmFyZSBsaXN0IGZvcm0g cGFyc2VkCmZyb20gc3RhbmRieV9saXN0LiBUaGlzIGFsbG93cyBjYWxsZXJzIHRvIGRpc3Rpbmd1 aXNoOgoKLSBleHBsaWNpdCBwcmlvcml0eSBzeW50YXggKEZJUlNUIE4gKC4uLikgb3IgTiAoLi4u KSkKLSBxdW9ydW0gc3ludGF4IChBTlkgTiAoLi4uKSkKLSBzaW1wbGUgbGlzdCBzeW50YXggd2l0 aG91dCBGSVJTVC9BTlkKCldpdGggdGhpcyBjaGFuZ2U6CgotIHN5bmNyZXAgZ3JhbW1hciBlbWl0 cyBTWU5DX1JFUF9ERUZBVUxUIGZvciBiYXJlIHN0YW5kYnkgbGlzdHMKLSBjaGVja19zeW5jaHJv bm91c19zdGFuZGJ5X25hbWVzKCkgbWFwcyBTWU5DX1JFUF9ERUZBVUxUIHRvCiAgU1lOQ19SRVBf UFJJT1JJVFksIHByZXNlcnZpbmcgZXhpc3Rpbmcgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcwog IGJlaGF2aW9yCgpUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggZm9yIGZ1dHVyZSBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cwpjaGFuZ2VzLCB3aGVyZSBjYWxsZXJzIGNhbiBkaXJlY3RseSBp bnRlcnByZXQgU1lOQ19SRVBfREVGQVVMVCBhcwpwbGFpbi1saXN0IHNlbWFudGljcywgd2hpbGUg a2VlcGluZyBleGlzdGluZyBzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzCnNlbWFudGljcyBpbnRh Y3QuCgpQZXIgc3VnZ2VzdGlvbiBmcm9tIFpoaWppZSBIb3UgPGhvdXpqLmZuc3RAZnVqaXRzdS5j b20+Ci0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jICAgICAgfCA0ICsrKysK IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55IHwgMiArLQogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oICAgICAgfCAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCmlu ZGV4IGUwZTMwNTc5YzU5Li5hZThlY2ZhMDcxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YwpAQCAtMTEwMCw2ICsxMTAwLDEwIEBAIGNoZWNrX3N5bmNocm9ub3VzX3N0YW5kYnlfbmFtZXMo Y2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCQkJcmV0dXJu IGZhbHNlOwogCQl9CiAKKwkJLyogRGVmYXVsdCB0byBGSVJTVCAxIChuYW1lIC4uLikgcHJpb3Jp dHkgbWV0aG9kIGlmIG5vdCBzcGVjaWZpZWQgKi8KKwkJaWYgKHN5bmNyZXBfcGFyc2VfcmVzdWx0 LT5zeW5jcmVwX21ldGhvZCA9PSBTWU5DX1JFUF9ERUZBVUxUKQorCQkJc3luY3JlcF9wYXJzZV9y ZXN1bHQtPnN5bmNyZXBfbWV0aG9kID0gU1lOQ19SRVBfUFJJT1JJVFk7CisKIAkJLyogR1VDIGV4 dHJhIHZhbHVlIG11c3QgYmUgZ3VjX21hbGxvYydkLCBub3QgcGFsbG9jJ2QgKi8KIAkJcGNvbmYg PSAoU3luY1JlcENvbmZpZ0RhdGEgKikKIAkJCWd1Y19tYWxsb2MoTE9HLCBzeW5jcmVwX3BhcnNl X3Jlc3VsdC0+Y29uZmlnX3NpemUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc3luY3JlcF9ncmFtLnkgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwX2dyYW0u eQppbmRleCAxYjlkN2IyZWRjNC4uZjE1NTBlMTA5ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3N5bmNyZXBfZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3N5bmNyZXBfZ3JhbS55CkBAIC02NSw3ICs2NSw3IEBAIHJlc3VsdDoKIAk7CiAKIHN0YW5kYnlf Y29uZmlnOgotCQlzdGFuZGJ5X2xpc3QJCQkJeyAkJCA9IGNyZWF0ZV9zeW5jcmVwX2NvbmZpZygi MSIsICQxLCBTWU5DX1JFUF9QUklPUklUWSk7IH0KKwkJc3RhbmRieV9saXN0CQkJCXsgJCQgPSBj cmVhdGVfc3luY3JlcF9jb25maWcoIjEiLCAkMSwgU1lOQ19SRVBfREVGQVVMVCk7IH0KIAkJfCBO VU0gJygnIHN0YW5kYnlfbGlzdCAnKScJCXsgJCQgPSBjcmVhdGVfc3luY3JlcF9jb25maWcoJDEs ICQzLCBTWU5DX1JFUF9QUklPUklUWSk7IH0KIAkJfCBBTlkgTlVNICcoJyBzdGFuZGJ5X2xpc3Qg JyknCQl7ICQkID0gY3JlYXRlX3N5bmNyZXBfY29uZmlnKCQyLCAkNCwgU1lOQ19SRVBfUVVPUlVN KTsgfQogCQl8IEZJUlNUIE5VTSAnKCcgc3RhbmRieV9saXN0ICcpJwkJeyAkJCA9IGNyZWF0ZV9z eW5jcmVwX2NvbmZpZygkMiwgJDQsIFNZTkNfUkVQX1BSSU9SSVRZKTsgfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc3luY3JlcC5oCmluZGV4IGI0MmI1ODYyYTcwLi45MGVhNDhiMWQxNCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc3luY3JlcC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3N5bmNyZXAuaApAQCAtMzQsNiArMzQsNyBAQAogLyogc3luY3JlcF9tZXRob2Qgb2Yg U3luY1JlcENvbmZpZ0RhdGEgKi8KICNkZWZpbmUgU1lOQ19SRVBfUFJJT1JJVFkJCTAKICNkZWZp bmUgU1lOQ19SRVBfUVVPUlVNCQkxCisjZGVmaW5lIFNZTkNfUkVQX0RFRkFVTFQJMgkvKiBiYXJl IGNvbW1hLXNlcGFyYXRlZCBsaXN0IHN5bnRheCAqLwogCiAvKgogICogU3luY1JlcEdldENhbmRp ZGF0ZVN0YW5kYnlzIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlc2Ugc3RydWN0cywKLS0gCjIuNDMu MAoK --00000000000048ea3006545c9bb6--