<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>222943</bug_id>
          
          <creation_ts>2021-03-08 15:08:20 -0800</creation_ts>
          <short_desc>REGRESSION(r272469): [WPE][GTK] Epiphany UI process crashes when downloading PDFs, WebKitSecurityOrigin should use SecurityOriginData</short_desc>
          <delta_ts>2021-03-12 14:10:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=162254</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223077</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223140</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737318</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-08 15:08:20 -0800</bug_when>
    <thetext>Since r272469, the Epiphany UI process crashes when downloading any PDF. webkit_security_origin_new_for_uri() returns NULL for ephy-pdf: URIs, but the return value is not nullable, so Epiphany correctly dereferences it and crashes. This probably indicates a GTK API layer bug, but let&apos;s focus on the regression first.

&quot;&quot;&quot;
In order to allow things like web extensions to continue to work, we allow non-null origins for schemes for which a WKURLSchemeHandler has been registered. We learned this lesson 4 years ago when we tried this change. This also makes sense conceptually because those schemes will be handled by the containing application, so they can be an &quot;origin&quot; for a page.
&quot;&quot;&quot;

Epiphany registers ephy-pdf: using webkit_web_context_register_uri_scheme(), so in theory it ought to work, but in fact it only works in the web process because r272469 checks the scheme using LegacySchemeRegistry. But the scheme is registered with LegacySchemeRegistry only in the web process, not in the UI process! r272469 made WebPage::registerURLSchemeHandler register all modern scheme handlers with LegacySchemeRegistry, but WebPageProxy::setURLSchemeHandlerForScheme does not itself do so.

This patch fixes the crashes:

diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp
index 8a1d3bd188b6..8a906a43f744 100644
--- a/Source/WebKit/UIProcess/WebPageProxy.cpp
+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp
@@ -162,6 +162,7 @@
 #include &lt;WebCore/FrameLoader.h&gt;
 #include &lt;WebCore/GlobalFrameIdentifier.h&gt;
 #include &lt;WebCore/GlobalWindowIdentifier.h&gt;
+#include &lt;WebCore/LegacySchemeRegistry.h&gt;
 #include &lt;WebCore/LengthBox.h&gt;
 #include &lt;WebCore/MIMETypeRegistry.h&gt;
 #include &lt;WebCore/MediaStreamRequest.h&gt;
@@ -9549,6 +9550,9 @@ void WebPageProxy::setURLSchemeHandlerForScheme(Ref&lt;WebURLSchemeHandler&gt;&amp;&amp; handl
     ASSERT_UNUSED(identifierResult, identifierResult.isNewEntry);
 
     send(Messages::WebPage::RegisterURLSchemeHandler(identifier, canonicalizedScheme.value()));
+
+    WebCore::LegacySchemeRegistry::registerURLSchemeAsHandledBySchemeHandler(scheme);
+    WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
 }
 
 WebURLSchemeHandler* WebPageProxy::urlSchemeHandlerForScheme(const String&amp; scheme)


I added the call to registerURLSchemeAsCORSEnabled simply because that is what WebPage::registerURLSchemeHandler does (again, since r272469). I&apos;m not sure if this is the direction we want to take here though. Hi Alex, what do you think?

TODO: I need to write a GLib API test for this, since it should be easy to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737700</commentid>
    <comment_count>1</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-09 12:16:29 -0800</bug_when>
    <thetext>I think I&apos;d prefer you put it in webkit_web_context_register_uri_scheme and webkitWebContextCreatePageForWebView (which should probably have their common code put in a common place) unless we find that this is also needed in cocoa platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737736</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-09 13:27:31 -0800</bug_when>
    <thetext>Hm, well we could do that, sure... but that seems pretty fragile? Both for Cocoa platforms -- it seems like a potentially-serious footgun that SecurityOrigin may return different results for the same security origin depending on which process it&apos;s used from -- and for GLib platforms, since the code moves an implementation detail up to the GLib API layer. (If we want it to be platform-specific, I would even prefer #ifdefs in WebPageProxy rather than putting it in WebKitWebContext.cpp. Why should WebKitWebContext know about LegacySchemeRegistry?)

Anyway, I&apos;ll implement it this way if that&apos;s really what you prefer. Just seems riskier to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738035</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 06:17:40 -0800</bug_when>
    <thetext>I think I&apos;ll put this in WebPageProxy, since WebKitWebContext is just not the right place for it. But I&apos;ll use PLATFORM(GTK) || PLATFORM(WPE) conditionals. I think it would be better without the platform conditionals, but Alex doesn&apos;t want to do this for Cocoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738068</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-10 08:18:06 -0800</bug_when>
    <thetext>You may have also noticed in r272469 that we are using SecurityOriginData instead of SecurityOrigin in a few more places.  We have a long term goal of using SecurityOrigin only in the web process (or in the network process in the context of a web process or page) so that we can get rid of LegacySchemeRegistry in the coming decade or so.  We have made API::SecurityOrigin a wrapper of WebCore::SecurityOriginData instead of WebCore::SecurityOrigin.  You should consider doing the same for webkitSecurityOriginCreate and webkitSecurityOriginGetSecurityOrigin.  I think it&apos;s a bad idea to increase the use of LegacySchemeRegistry, and I&apos;ve done so only reluctantly, realizing it increases the amount of work to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738143</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 11:08:33 -0800</bug_when>
    <thetext>OK.

(In reply to Alex Christensen from comment #4)
&gt; We have made
&gt; API::SecurityOrigin a wrapper of WebCore::SecurityOriginData instead of
&gt; WebCore::SecurityOrigin.  You should consider doing the same for
&gt; webkitSecurityOriginCreate and webkitSecurityOriginGetSecurityOrigin.

If it works for API::SecurityOrigin, it will probably also work for WebKitSecurityOrigin. I will try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738266</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 15:18:48 -0800</bug_when>
    <thetext>It works!

(In reply to Michael Catanzaro from comment #0)
&gt; Since r272469, the Epiphany UI process crashes when downloading any PDF.
&gt; webkit_security_origin_new_for_uri() returns NULL for ephy-pdf: URIs, but
&gt; the return value is not nullable, so Epiphany correctly dereferences it and
&gt; crashes.

BTW this was wrong, webkit_security_origin_new_for_uri() never returns NULL. Epiphany was really crashing because webkit_security_origin_get_protocol() was unexpectedly returning NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738279</commentid>
    <comment_count>7</comment_count>
      <attachid>422882</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 15:30:25 -0800</bug_when>
    <thetext>Created attachment 422882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738280</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-10 15:30:59 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738282</commentid>
    <comment_count>9</comment_count>
      <attachid>422883</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 15:32:54 -0800</bug_when>
    <thetext>Created attachment 422883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738285</commentid>
    <comment_count>10</comment_count>
      <attachid>422883</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 15:35:10 -0800</bug_when>
    <thetext>Comment on attachment 422883
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=422883&amp;action=review

&gt; Source/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp:234
&gt; + * Deprecated: 2.32

I know deprecating APIs three days before GNOME&apos;s hard code freeze is not cool. If undesired, I could change this to 2.34 and we could just revert r272469 on the stable branch. I think it&apos;s safe, though, since Epiphany is the only app in Debian using this API, and it won&apos;t break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738385</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-11 01:09:25 -0800</bug_when>
    <thetext>Committed r274270: &lt;https://commits.webkit.org/r274270&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422883.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738388</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-11 01:11:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/75306566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738398</commentid>
    <comment_count>13</comment_count>
      <attachid>422883</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-11 01:47:05 -0800</bug_when>
    <thetext>Comment on attachment 422883
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=422883&amp;action=review

&gt; Source/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp:34
&gt; + * hostname, and an optional port number.

It would be more correct to write “consists of a scheme and an
optional authority, where the authority is typically a hostname,
though it may contain user information and a port number as well”.

Otherwise we may end up with people confused because they have CORS
failures due to using e.g. different port numbers so it would be
a good thing to aim for completeness here—though maybe my suggested
wording can be further improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738434</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-11 06:33:22 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #13) 
&gt; It would be more correct to write “consists of a scheme and an
&gt; optional authority, where the authority is typically a hostname,
&gt; though it may contain user information and a port number as well”.

It cannot contain username, though. Only &lt;protocol, host, port&gt;.

Scheme == protocol

Authority == host + optional port

So I don&apos;t see the difference? Except that I know what host and port are, but had to use DuckDuckGo to figure out for sure what &quot;authority&quot; meant. :P

&gt; Otherwise we may end up with people confused because they have CORS
&gt; failures due to using e.g. different port numbers so it would be
&gt; a good thing to aim for completeness here—though maybe my suggested
&gt; wording can be further improved.

Ah, you want me to clarify that two security origins with different ports are truly different? Or that no port means default port? I guess neither is entirely clear from the documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738471</commentid>
    <comment_count>15</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-11 09:05:45 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; (In reply to Adrian Perez from comment #13) 
&gt; &gt; It would be more correct to write “consists of a scheme and an
&gt; &gt; optional authority, where the authority is typically a hostname,
&gt; &gt; though it may contain user information and a port number as well”.
&gt; 
&gt; It cannot contain username, though. Only &lt;protocol, host, port&gt;.
&gt; 
&gt; Scheme == protocol
&gt; 
&gt; Authority == host + optional port
&gt; 
&gt; So I don&apos;t see the difference? Except that I know what host and port are,
&gt; but had to use DuckDuckGo to figure out for sure what &quot;authority&quot; meant. :P

Okay, I&apos;ve alwayts thought that the userinfo part of an URI was taken
as a component of a security origin, but thanks for making me doubt…
Reading https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
it turns out that you are right, and mentioning &lt;scheme, host, port&gt; is
the correct thing.

And it&apos;s true that usually a scheme corresponds to a protocol, but it may
not be true, for example one could register a custom URI scheme handler
that loads files from disk, and it kind of would behave like “file://”
but as the scheme names are different they are always in different security
origins even if the protocol could be argued that is the same (“protocol”
here being “load files from disk”) — dunno, maybe I am getting a bit
philosophical here 🙃️

&gt; &gt; Otherwise we may end up with people confused because they have CORS
&gt; &gt; failures due to using e.g. different port numbers so it would be
&gt; &gt; a good thing to aim for completeness here—though maybe my suggested
&gt; &gt; wording can be further improved.
&gt; 
&gt; Ah, you want me to clarify that two security origins with different ports
&gt; are truly different? Or that no port means default port? I guess neither is
&gt; entirely clear from the documentation.

Yes, those both would be good clarifications 👍️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738474</commentid>
    <comment_count>16</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-11 09:09:46 -0800</bug_when>
    <thetext>Also I think this patch introduced the following documentation build
failure, because the opening angle brackets should have been escaped
as “&amp;lt;” (yes, it&apos;s horrendous to have all this SGML/XML late-90s
nightmare that ios Gtk-Doc, but it&apos;s what we have for now 🤷️):

html/webkitdomgtk-4.0/webkitdo/home/aperez/devel/WebKit/build-gtk/Documentation/webkit2gtk-4.0/xml/WebKitSecurityOrigin.xml:271: parser error : error parsing attribute name
wrapper around a &lt;protocol, host, port&gt; triplet, and no longer
                          ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738477</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-11 09:13:42 -0800</bug_when>
    <thetext>Alas, I&apos;ll land a follow-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422882</attachid>
            <date>2021-03-10 15:30:25 -0800</date>
            <delta_ts>2021-03-10 15:32:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222943-20210310173024.patch</filename>
            <type>text/plain</type>
            <size>21639</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MmJhZWY4MTg2YmQzMzIx
YjQ0ZmNmNDdkN2YyYjI4ZjhiMjg0NTEuLmI4OGExMzU1MTI3NmY0YTIyODVmZGM3MDFjNWU5ZjYw
ODI5NjkzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMDMtMTAgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjcyNDY5KTogRXBpcGhhbnkgVUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gZG93bmxvYWRpbmcgUERG
cywgV2ViS2l0U2VjdXJpdHlPcmlnaW4gc2hvdWxkIHVzZSBTZWN1cml0eU9yaWdpbkRhdGEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHIyNzI0
NjksIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luIG5vIGxvbmdlciBhY2NlcHRzIGN1c3RvbSBwcm90
b2NvbHMgZXhjZXB0IHRob3NlCisgICAgICAgIHJlZ2lzdGVyZWQgd2l0aCBMZWdhY3lTY2hlbWVS
ZWdpc3RyeS4gV2ViUGFnZSByZWdpc3RlcnMgYWxsIGN1c3RvbSBwcm90b2NvbHMsIGJ1dAorICAg
ICAgICBXZWJQYWdlUHJveHkgZG9lcyBub3QsIHNvIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luIG5v
dyBvbmx5IHN1cHBvcnRzIGN1c3RvbSBwcm90b2NvbHMgaW4gdGhlCisgICAgICAgIHdlYiBwcm9j
ZXNzLCBub3QgdGhlIFVJIHByb2Nlc3MuIFRoaXMgY2F1c2VzIEVwaXBoYW55IHRvIGNyYXNoIHdo
ZW4gdGhlIHByb3RvY29sIG9mIGl0cworICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiBpcyB1
bmV4cGVjdGVkbHkgTlVMTC4KKworICAgICAgICBBbGV4IHdhbnRzIHRvIHJlZHVjZSB1c2FnZSBv
ZiBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiBvdXRzaWRlIHRoZSB3ZWIgcHJvY2Vzcywgc28gaW5z
dGVhZCBvZgorICAgICAgICByZWdpc3RlcmluZyBjdXN0b20gcHJvdG9jb2xzIHdpdGggTGVnYWN5
U2NoZW1lUmVnaXN0cnkgaW4gdGhlIFVJIHByb2Nlc3MgLS0gbWFraW5nIGl0IGhhcmRlcgorICAg
ICAgICB0byBldmVudHVhbGx5IGdldCByaWQgb2YgTGVnYWN5U2NoZW1lUmVnaXN0cnkgLS0gd2Ug
d2lsbCB0cmFuc2l0aW9uIFdlYktpdFNlY3VyaXR5T3JpZ2luCisgICAgICAgIGZyb20gV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4gdG8gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCB3aGljaCBp
cyBhIHNpbXBsZSBkYXRhIHN0b3JlCisgICAgICAgIGZvciA8cHJvdG9jb2wsIGhvc3QsIHBvcnQ+
LiBUaGlzIGlzIG1vc3RseSBzdWZmaWNpZW50IHRvIGltcGxlbWVudCBXZWJLaXRTZWN1cml0eU9y
aWdpbiwKKyAgICAgICAgZXhjZXB0IGZvciB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1
ZSgpLiBJIGNvbnNpZGVyZWQgbXVsdGlwbGUgd2F5cyB0byBoYW5kbGUgdGhpcywKKyAgICAgICAg
YnV0IHVsdGltYXRlbHkgZGVjaWRlZCB0byBqdXN0IGRlcHJlY2F0ZSBpdC4gRXBpcGhhbnkgaXMg
dGhlIG9ubHkgY2xpZW50IHVzaW5nIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgaW4gb3JkZXIgdG8g
aW1wbGVtZW50IGEgV2ViS2l0U2VjdXJpdHlPcmlnaW4gZXF1YWxpdHkgb3BlcmF0aW9uLCBhbmQg
aXQgZG9lcyBzbyB1c2luZworICAgICAgICBvcmlnaW5zIHRoYXQgc2hvdWxkIG5ldmVyIGJlIG9w
YXF1ZSwgc28gdGhlcmUgYXJlIG5vIGNvbXBhdGliaWxpdHkgY29uY2VybnMgaGVyZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3Bw
OgorICAgICAgICAod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29y
aWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmNwcDoKKyAgICAgICAgKF9XZWJLaXRTZWN1cml0eU9yaWdpbjo6X1dlYktpdFNlY3VyaXR5T3Jp
Z2luKToKKyAgICAgICAgKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKToKKyAgICAgICAgKHdl
YmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmlnaW5EYXRhKToKKyAgICAgICAgKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fbmV3KToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
bmV3X2Zvcl91cmkpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9j
b2wpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdCk6CisgICAgICAg
ICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KToKKyAgICAgICAgKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5faXNfb3BhcXVlKToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
dG9fc3RyaW5nKToKKyAgICAgICAgKHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmln
aW4pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgIChhZGRPcmlnaW5Ub01hcCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRTZWN1cml0eU9yaWdpbi5oOgorCiAyMDIxLTAzLTEwICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIGFkZGl0aW9u
YWwgYnVuZGxlIElEIHByb3BlcnR5IHRvIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3QuY3BwCmluZGV4IGI2NDVjZTU2YTJiZDMwODhmMGM0YTVmNjQxM2U5
MTk4ZTI4NjljNGIuLjhhZDhjNTM4OWUzN2Q4Zjk3M2U1YmQ0NjM2ZGZiZjM1Zjk3MGE1ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIFdlYktp
dFNlY3VyaXR5T3JpZ2luKiB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfc2VjdXJp
dHlfb3JpZ2luKFdlYktpdEF1CiAgICAgICAgIHByb3RvY29sID0gInNvY2tzIl9zOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocHJvdG9jb2wsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCksIHBy
b3RlY3Rpb25TcGFjZS5wb3J0KCkpKTsKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5D
cmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhKHByb3RvY29sLCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgp
LCBwcm90ZWN0aW9uU3BhY2UucG9ydCgpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmlu
ZGV4IDJlMDc4OWQ0MzAxZjhhODgxNTllOGJlZTAzMDY3YzE1NmFhMmY3NzQuLjQ5NjMzZjQ2Yjgw
NmRlOTg2ZGE0ZTIzZDQ1M2U3ZjVhM2U4NjFkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMw
LDI0ICszMCwyNCBAQAogICogQFRpdGxlOiBXZWJLaXRTZWN1cml0eU9yaWdpbgogICoKICAqICNX
ZWJLaXRTZWN1cml0eU9yaWdpbiBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGEgc2VjdXJpdHkgZG9t
YWluCi0gKiBkZWZpbmVkIGJ5IHdlYnNpdGVzLiBBIHNlY3VyaXR5IG9yaWdpbiBub3JtYWxseSBj
b25zaXN0cyBvZiBhCi0gKiBwcm90b2NvbCwgYSBob3N0bmFtZSwgYW5kIGEgcG9ydCBudW1iZXIu
IEl0IGlzIGFsc28gcG9zc2libGUgZm9yIGEKLSAqIHNlY3VyaXR5IG9yaWdpbiB0byBiZSBvcGFx
dWUsIGFzIGRlZmluZWQgYnkgdGhlIEhUTUwgc3RhbmRhcmQsIGluCi0gKiB3aGljaCBjYXNlIGl0
IGhhcyBubyBhc3NvY2lhdGVkIHByb3RvY29sLCBob3N0LCBvciBwb3J0LgorICogZGVmaW5lZCBi
eSB3ZWJzaXRlcy4gQSBzZWN1cml0eSBvcmlnaW4gY29uc2lzdHMgb2YgYSBwcm90b2NvbCwgYQor
ICogaG9zdG5hbWUsIGFuZCBhbiBvcHRpb25hbCBwb3J0IG51bWJlci4KICAqCi0gKiBXZWJzaXRl
cyB3aXRoIHRoZSBzYW1lIHNlY3VyaXR5IG9yaWdpbiBjYW4gYWNjZXNzIGVhY2ggb3RoZXIncwot
ICogcmVzb3VyY2VzIGZvciBjbGllbnQtc2lkZSBzY3JpcHRpbmcgb3IgZGF0YWJhc2UgYWNjZXNz
LgorICogUmVzb3VyY2VzIHdpdGggdGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luIGNhbiBnZW5lcmFs
bHkgYWNjZXNzIGVhY2gKKyAqIG90aGVyIGZvciBjbGllbnQtc2lkZSBzY3JpcHRpbmcgb3IgZGF0
YWJhc2UgYWNjZXNzLiBXaGVuIGNvbXBhcmluZworICogb3JpZ2lucywgYmV3YXJlIHRoYXQgaWYg
Ym90aCBwcm90b2NvbCBhbmQgaG9zdCBhcmUgJU5VTEwsIHRoZSBvcmlnaW5zCisgKiBzaG91bGQg
bm90IGJlIHRyZWF0ZWQgYXMgZXF1YWwuCiAgKgogICogU2luY2U6IDIuMTYKICAqLwogCiBzdHJ1
Y3QgX1dlYktpdFNlY3VyaXR5T3JpZ2luIHsKLSAgICBfV2ViS2l0U2VjdXJpdHlPcmlnaW4oUmVm
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIGNvcmVTZWN1cml0eU9yaWdpbikKLSAgICAgICAg
OiBzZWN1cml0eU9yaWdpbihXVEZNb3ZlKGNvcmVTZWN1cml0eU9yaWdpbikpCisgICAgZXhwbGlj
aXQgX1dlYktpdFNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGRh
dGEpCisgICAgICAgIDogc2VjdXJpdHlPcmlnaW5EYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgewog
ICAgIH0KIAotICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47
CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKICAg
ICBDU3RyaW5nIHByb3RvY29sOwogICAgIENTdHJpbmcgaG9zdDsKICAgICBpbnQgcmVmZXJlbmNl
Q291bnQgeyAxIH07CkBAIC01NSwxNyArNTUsMTcgQEAgc3RydWN0IF9XZWJLaXRTZWN1cml0eU9y
aWdpbiB7CiAKIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0U2VjdXJpdHlPcmlnaW4sIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW4sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmLCB3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3VucmVmKQogCi1XZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0U2VjdXJp
dHlPcmlnaW5DcmVhdGUoUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIGNvcmVTZWN1cml0
eU9yaWdpbikKK1dlYktpdFNlY3VyaXR5T3JpZ2luKiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBkYXRhKQogewogICAgIFdlYktpdFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9yaWdpbio+KGZh
c3RNYWxsb2Moc2l6ZW9mKFdlYktpdFNlY3VyaXR5T3JpZ2luKSkpOwotICAgIG5ldyAob3JpZ2lu
KSBXZWJLaXRTZWN1cml0eU9yaWdpbihXVEZNb3ZlKGNvcmVTZWN1cml0eU9yaWdpbikpOworICAg
IG5ldyAob3JpZ2luKSBXZWJLaXRTZWN1cml0eU9yaWdpbihXVEZNb3ZlKGRhdGEpKTsKICAgICBy
ZXR1cm4gb3JpZ2luOwogfQogCi1XZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgd2Via2l0U2VjdXJp
dHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQor
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB3ZWJraXRTZWN1cml0eU9yaWdpbkdl
dFNlY3VyaXR5T3JpZ2luRGF0YShXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAg
IEFTU0VSVChvcmlnaW4pOwotICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgp
OworICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIAogLyoqCkBAIC04
OCwxMCArODgsMTAgQEAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fbmV3KGNvbnN0IGdjaGFyKiBwcm90b2NvbCwgY29uc3QgZ2MKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChob3N0LCBudWxscHRyKTsKIAogICAgIE9wdGlvbmFsPHVpbnQxNl90PiBvcHRpb25h
bFBvcnQ7Ci0gICAgaWYgKHBvcnQpCisgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHBvcnQsIHByb3RvY29sKSkKICAgICAgICAgb3B0aW9uYWxQb3J0ID0gcG9y
dDsKIAotICAgIHJldHVybiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpLCBTdHJpbmc6OmZy
b21VVEY4KGhvc3QpLCBvcHRpb25hbFBvcnQpKTsKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlP
cmlnaW5DcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhKFN0cmluZzo6ZnJvbVVURjgo
cHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBvcHRpb25hbFBvcnQpKTsKIH0KIAog
LyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5
T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2lu
Q3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChVUkwoVVJMKCksIFN0
cmluZzo6ZnJvbVVURjgodXJpKSkpKTsKIH0KIAogLyoqCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9p
ZCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbDoKICAqIEBvcmlnaW46
IGEgI1dlYktpdFNlY3VyaXR5T3JpZ2luCiAgKgotICogR2V0cyB0aGUgcHJvdG9jb2wgb2YgQG9y
aWdpbiwgb3IgJU5VTEwgaWYgQG9yaWdpbiBpcyBvcGFxdWUuCisgKiBHZXRzIHRoZSBwcm90b2Nv
bCBvZiBAb3JpZ2luLgogICoKICAqIFJldHVybnM6IChhbGxvdy1ub25lKTogVGhlIHByb3RvY29s
IG9mIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KICAqCkBAIC0xNjcsMTEgKzE2NywxMSBAQCBj
b25zdCBnY2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2woV2ViS2l0U2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmlnaW4s
IG51bGxwdHIpOwogCi0gICAgaWYgKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnByb3RvY29sKCku
aXNFbXB0eSgpKQorICAgIGlmIChvcmlnaW4tPnNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKG9yaWdpbi0+cHJv
dG9jb2wuaXNOdWxsKCkpCi0gICAgICAgIG9yaWdpbi0+cHJvdG9jb2wgPSBvcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luLT5wcm90b2NvbCgpLnV0ZjgoKTsKKyAgICAgICAgb3JpZ2luLT5wcm90b2NvbCA9
IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLnV0ZjgoKTsKICAgICByZXR1cm4g
b3JpZ2luLT5wcm90b2NvbC5kYXRhKCk7CiB9CiAKQEAgLTE3OSw4ICsxNzksOCBAQCBjb25zdCBn
Y2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2woV2ViS2l0U2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKICAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Q6CiAgKiBA
b3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgogICoKLSAqIEdldHMgdGhlIGhvc3RuYW1l
IG9mIEBvcmlnaW4sIG9yICVOVUxMIGlmIEBvcmlnaW4gaXMgb3BhcXVlIG9yIGlmIGl0cwotICog
cHJvdG9jb2wgZG9lcyBub3QgcmVxdWlyZSBhIGhvc3QgY29tcG9uZW50LgorICogR2V0cyB0aGUg
aG9zdG5hbWUgb2YgQG9yaWdpbi4gSXQgaXMgcmVhc29uYWJsZSBmb3IgdGhpcyB0byBiZSAlTlVM
TAorICogaWYgaXRzIHByb3RvY29sIGRvZXMgbm90IHJlcXVpcmUgYSBob3N0IGNvbXBvbmVudC4K
ICAqCiAgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IFRoZSBob3N0IG9mIHRoZSAjV2ViS2l0U2Vj
dXJpdHlPcmlnaW4KICAqCkBAIC0xOTAsMTEgKzE5MCwxMSBAQCBjb25zdCBnY2hhciogd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgbnVsbHB0cik7CiAKLSAgICBpZiAo
b3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+aG9zdCgpLmlzRW1wdHkoKSkKKyAgICBpZiAob3JpZ2lu
LT5zZWN1cml0eU9yaWdpbkRhdGEuaG9zdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKG9yaWdpbi0+aG9zdC5pc051bGwoKSkKLSAgICAgICAgb3JpZ2luLT5o
b3N0ID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+aG9zdCgpLnV0ZjgoKTsKKyAgICAgICAgb3Jp
Z2luLT5ob3N0ID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbkRhdGEuaG9zdC51dGY4KCk7CiAgICAg
cmV0dXJuIG9yaWdpbi0+aG9zdC5kYXRhKCk7CiB9CiAKQEAgLTIwNiw4ICsyMDYsNyBAQCBjb25z
dCBnY2hhciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChXZWJLaXRTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICogcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgZ2l2ZW4g
cHJvdG9jb2wuIEZvciBleGFtcGxlLAogICogaHR0cDovL2V4YW1wbGUuY29tIGhhcyB0aGUgc2Ft
ZSBzZWN1cml0eSBvcmlnaW4gYXMKICAqIGh0dHA6Ly9leGFtcGxlLmNvbTo4MCwgYW5kIHRoaXMg
ZnVuY3Rpb24gd2lsbCByZXR1cm4gMCBmb3IgYQotICogI1dlYktpdFNlY3VyaXR5T3JpZ2luIGNv
bnN0cnVjdGVkIGZyb20gZWl0aGVyIFVSSS4gSXQgd2lsbCBhbHNvCi0gKiByZXR1cm4gMCBpZiBA
b3JpZ2luIGlzIG9wYXF1ZS4KKyAqICNXZWJLaXRTZWN1cml0eU9yaWdpbiBjb25zdHJ1Y3RlZCBm
cm9tIGVpdGhlciBVUkkuCiAgKgogICogUmV0dXJuczogVGhlIHBvcnQgb2YgdGhlICNXZWJLaXRT
ZWN1cml0eU9yaWdpbi4KICAqCkBAIC0yMTcsMjUgKzIxNiwyOCBAQCBndWludDE2IHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmlnaW4sIDApOwogCi0gICAgcmV0dXJuIG9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBvcmlnaW4t
PnNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0LnZhbHVlT3IoMCk7CiB9CiAKIC8qKgogICogd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWU6CiAgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0
eU9yaWdpbgogICoKLSAqIEdldHMgd2hldGhlciBAb3JpZ2luIGlzIGFuIG9wYXF1ZSBzZWN1cml0
eSBvcmlnaW4sIHdoaWNoIGRvZXMgbm90Ci0gKiBwb3NzZXNzIGFuIGFzc29jaWF0ZWQgcHJvdG9j
b2wsIGhvc3QsIG9yIHBvcnQuCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgJUZBTFNFLiAjV2Vi
S2l0U2VjdXJpdHlPcmlnaW4gaXMgbm93IGEgc2ltcGxlCisgKiB3cmFwcGVyIGFyb3VuZCBhIDxw
cm90b2NvbCwgaG9zdCwgcG9ydD4gdHJpcGxldCwgYW5kIG5vIGxvbmdlcgorICogcmVwcmVzZW50
cyBhbiBvcmlnaW4gYXMgZGVmaW5lZCBieSB3ZWIgc3RhbmRhcmRzIHRoYXQgbWF5IGJlIG9wYXF1
ZS4KICAqCi0gKiBSZXR1cm5zOiAlVFJVRSBpZiBAb3JpZ2luIGlzIG9wYXF1ZS4KKyAqIFJldHVy
bnM6ICVGQUxTRQogICoKICAqIFNpbmNlOiAyLjE2CisgKgorICogRGVwcmVjYXRlZDogMi4zMgog
ICovCiBnYm9vbGVhbiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShXZWJLaXRTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwg
VFJVRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCBGQUxTRSk7CiAKLSAgICBy
ZXR1cm4gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi0+aXNVbmlxdWUoKTsKKyAgICByZXR1cm4gRkFM
U0U7CiB9CiAKIC8qKgpAQCAtMjQzLDggKzI0NSw4IEBAIGdib29sZWFuIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5faXNfb3BhcXVlKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgKiBAb3Jp
Z2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgogICoKICAqIEdldHMgYSBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgQG9yaWdpbi4gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbgotICogaXMgYSB2
YWxpZCBVUkkgd2l0aCBvbmx5IHByb3RvY29sLCBob3N0LCBhbmQgcG9ydCBjb21wb25lbnRzLiBJ
dCBtYXkKLSAqIGJlICVOVUxMLCBidXQgdXN1YWxseSBvbmx5IGlmIEBvcmlnaW4gaXMgb3BhcXVl
LgorICogaXMgYSB2YWxpZCBVUkkgd2l0aCBvbmx5IHByb3RvY29sLCBob3N0LCBhbmQgcG9ydCBj
b21wb25lbnRzLCBvcgorICogJU5VTEwuCiAgKgogICogUmV0dXJuczogKGFsbG93LW5vbmUpICh0
cmFuc2ZlciBmdWxsKTogYSBVUkkgcmVwcmVzZW50aW5nIEBvcmlnaW4uCiAgKgpAQCAtMjU0LDYg
KzI1Niw2IEBAIGdjaGFyKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhXZWJLaXRT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdp
biwgbnVsbHB0cik7CiAKLSAgICBDU3RyaW5nIGNzdHJpbmcgPSBvcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luLT50b1N0cmluZygpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGNzdHJpbmcgPSBvcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luRGF0YS50b1N0cmluZygpLnV0ZjgoKTsKICAgICByZXR1cm4gY3N0cmluZyA9
PSAibnVsbCIgPyBudWxscHRyIDogZ19zdHJkdXAgKGNzdHJpbmcuZGF0YSgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW5Qcml2YXRlLmgKaW5kZXggMGFmODc5YTM1NGExYzRlY2M0MzFmOTAzODY2MTY1
NjE1Nzk5ZDlhMy4uMWFlMDMzODBkMDI5MjU1N2E0NTUwYmUyNzY5YWRiZWQ1YTMwNjBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKQEAgLTIyLDUgKzIyLDUgQEAKICNpbmNsdWRlICJX
ZWJLaXRTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KIAotV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJik7Ci1XZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
d2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihXZWJLaXRTZWN1cml0eU9yaWdp
biopOworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKK2NvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbkRhdGEoV2ViS2l0
U2VjdXJpdHlPcmlnaW4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMmFlNTJiZWM1OWI1ZWJjYmYyZmYxNGI0
NjhkNjY1MDA1ZGRhODQ5NC4uOTM4ODI4MmViMWYwMGI3MzQxZWIyOTQ1NTQ1YTViNjNhNzk2MTc0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHAKQEAgLTE3MDQsNyArMTcwNCw3IEBAIGd1aW50IHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfd2ViX3Byb2Nlc3NfY291bnRfbGltaXQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCkKIAogc3RhdGljIHZvaWQgYWRkT3JpZ2luVG9NYXAoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9y
aWdpbiwgSGFzaE1hcDxTdHJpbmcsIGJvb2w+KiBtYXAsIGJvb2wgYWxsb3dlZCkKIHsKLSAgICBT
dHJpbmcgc3RyaW5nID0gd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmln
aW4pLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIHN0cmluZyA9IHdlYmtpdFNlY3VyaXR5T3JpZ2lu
R2V0U2VjdXJpdHlPcmlnaW5EYXRhKG9yaWdpbikudG9TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5n
ICE9ICJudWxsIikKICAgICAgICAgbWFwLT5zZXQoc3RyaW5nLCBhbGxvd2VkKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmln
aW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmln
aW4uaAppbmRleCA2ZGNhMmI3N2VhNjI3YWJkMTUwNTEyNmY5ZmI0MzdmMzg2ZTZlYmE0Li4wOWVk
YmNjOGQwZTA3ZDNmZjhlMTJmNzc5ZjY0Y2FlOTQ4YWJlYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCkBAIC01
OSw3ICs1OSw3IEBAIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3QgICAgIChXZWJLaXRT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKIFdFQktJVF9BUEkgZ3VpbnQxNgogd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfcG9ydCAgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwog
Ci1XRUJLSVRfQVBJIGdib29sZWFuCitXRUJLSVRfREVQUkVDQVRFRCBnYm9vbGVhbgogd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmln
aW4pOwogCiBXRUJLSVRfQVBJIGdjaGFyICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAppbmRleCA4MGUwNDUyM2M3ZjNl
NDZjNTJmMWJiODMxODQ1M2U2NDVkNWI5MmI1Li5lMmJkOWUwOTlhMDM2NDlkYjNlODgyZDU1MDYx
YjAzMjIxNjA3M2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCkBAIC01OSw3ICs1OSw3IEBAIHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X2hvc3QgICAgIChXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsK
IFdFQktJVF9BUEkgZ3VpbnQxNgogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydCAgICAg
KFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwogCi1XRUJLSVRfQVBJIGdib29sZWFuCitX
RUJLSVRfREVQUkVDQVRFRCBnYm9vbGVhbgogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFx
dWUgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwogCiBXRUJLSVRfQVBJIGdjaGFy
ICoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAw
YTgxM2Q0NmE1ZDFkYmMzZmI2NzQxZTEyMGMzNDBmNThhMTgwMTU0Li42N2FhMDVmOWViNjY0ZTg3
NmZkMWYzMTg3M2ZjMDUzYzhkZTM0MmEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDMtMTAgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjcyNDY5KTogRXBpcGhhbnkgVUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gZG93bmxvYWRpbmcgUERG
cywgV2ViS2l0U2VjdXJpdHlPcmlnaW4gc2hvdWxkIHVzZSBTZWN1cml0eU9yaWdpbkRhdGEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3Qg
dG8gZW5zdXJlIHNlY3VyaXR5IG9yaWdpbnMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGZv
ciBjdXN0b20gcHJvdG9jb2xzLgorICAgICAgICBBbHNvLCB1cGRhdGUgdGhlIHRlc3RzIHRvIGFj
Y29tb2RhdGUgdGhlIGRlcHJlY2F0aW9uIG9mIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3Bh
cXVlKCkuCisgICAgICAgIE5vdGFibHksIG9yaWdpbnMgZm9yIGRhdGE6Ly8gVVJJcyBhcmUgbm8g
bG9uZ2VyIHNwZWNpYWwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKHRlc3RTZWN1cml0eU9y
aWdpbkJhc2ljQ29uc3RydWN0b3IpOgorICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luVVJJQ29u
c3RydWN0b3IpOgorICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luRGVmYXVsdFBvcnQpOgorICAg
ICAgICAodGVzdFNlY3VyaXR5T3JpZ2luRmlsZVVSSSk6CisgICAgICAgICh0ZXN0U2VjdXJpdHlP
cmlnaW5EYXRhVVJJKToKKyAgICAgICAgKHRlc3RDdXN0b21Qcm90b2NvbE9yaWdpbik6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAodGVzdE9wYXF1ZVNlY3VyaXR5T3JpZ2luKTogRGVs
ZXRlZC4KKwogMjAyMS0wMy0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIEFkZCBhZGRpdGlvbmFsIGJ1bmRsZSBJRCBwcm9wZXJ0eSB0byBX
S1dlYlZpZXdDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmlu
ZGV4IDVkYzc0Yzc3OWJlZjMzZTFhNDdmMzhiZTc5MWI5YTM2YTc2NjMwNDkuLmIyY2I0MDQ2OTkw
OGEzNTlmMDZmYmEzZjNmNzEwM2IxMGU0MWNiZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlP
cmlnaW4uY3BwCkBAIC0zMSw3ICszMSw2IEBAIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdp
bkJhc2ljQ29uc3RydWN0b3IoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0
cCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0
KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDEyMzQpOwotICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIH0KIApAQCAtNDQsNyArNDMsNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5VUklDb25zdHJ1Y3RvcihUZXN0KiwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmln
aW4pLCA9PSwgMTIzNCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihv
cmlnaW4pOwogCiAgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3Vy
aSgiaHR0cDovLzEyNy4wLjAuMToxMjM0L3RoaXMvcGF0aC8/c2hvdWxkPWJlI2lnbm9yZWQiKTsK
QEAgLTU0LDcgKzUyLDYgQEAgc3RhdGljIHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luVVJJQ29uc3Ry
dWN0b3IoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOwogICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09
LCAiMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDEyMzQpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIH0KIApAQCAtNjcsNyArNjQsNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0UG9ydChUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3Jp
Z2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9j
bXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0g
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2lu
KSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogCiAgICAgb3Jp
Z2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAiMTI3LjAuMC4xIiwgODAp
OwpAQCAtNzcsNyArNzMsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0
UG9ydChUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0s
ICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl91bnJlZihvcmlnaW4pOwogCiAgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9uZXdfZm9yX3VyaSgiaHR0cDovLzEyNy4wLjAuMSIpOwpAQCAtODcsNyArODIsNiBAQCBzdGF0
aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0UG9ydChUZXN0KiwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9j
b2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwg
MCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUo
b3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogCiAg
ICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgiaHR0cDovLzEy
Ny4wLjAuMTo4MCIpOwpAQCAtOTcsNyArOTEsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlP
cmlnaW5EZWZhdWx0UG9ydChUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRw
Iik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qo
b3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0
X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCkBAIC0xMTAsMjAgKzEwMywyOCBA
QCBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5GaWxlVVJJKFRlc3QqLCBnY29uc3Rwb2lu
dGVyKQogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90
b2NvbChvcmlnaW4pLCA9PSwgImZpbGUiKTsKICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOwotICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIH0KIAotc3RhdGljIHZvaWQgdGVz
dE9wYXF1ZVNlY3VyaXR5T3JpZ2luKFRlc3QqLCBnY29uc3Rwb2ludGVyKQorc3RhdGljIHZvaWQg
dGVzdFNlY3VyaXR5T3JpZ2luRGF0YVVSSShUZXN0KiwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBX
ZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdf
Zm9yX3VyaSgiZGF0YTpMYWxpIGhvISIpOwogICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2luKTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9f
c3RyaW5nKG9yaWdpbikpOwotICAgIGdfYXNzZXJ0X251bGwoYXNTdHJpbmcpOwotICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSk7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImRhdGE6Ly8iKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2lu
KSwgPT0sICJkYXRhIik7CiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9ob3N0KG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKK30KKworc3RhdGljIHZvaWQgdGVzdEN1c3RvbVByb3Rv
Y29sT3JpZ2luKFRlc3QqLCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJzcXVpcnJl
bDovL2Zpc2giKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAi
c3F1aXJyZWwiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfaG9zdChvcmlnaW4pLCA9PSwgImZpc2giKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7CiAgICAgd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCkBAIC0xMzMsNyArMTM0LDggQEAgdm9p
ZCBiZWZvcmVBbGwoKQogICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlPcmlnaW4iLCAidXJp
LWNvbnN0cnVjdG9yIiwgdGVzdFNlY3VyaXR5T3JpZ2luVVJJQ29uc3RydWN0b3IpOwogICAgIFRl
c3Q6OmFkZCgiV2ViS2l0U2VjcnVpdHlPcmlnaW4iLCAiZGVmYXVsdC1wb3J0IiwgdGVzdFNlY3Vy
aXR5T3JpZ2luRGVmYXVsdFBvcnQpOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlPcmln
aW4iLCAiZmlsZS11cmkiLCB0ZXN0U2VjdXJpdHlPcmlnaW5GaWxlVVJJKTsKLSAgICBUZXN0Ojph
ZGQoIldlYktpdFNlY3J1aXR5T3JpZ2luIiwgIm9wYXF1ZS1vcmlnaW4iLCB0ZXN0T3BhcXVlU2Vj
dXJpdHlPcmlnaW4pOworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlPcmlnaW4iLCAiYmxv
Yi11cmkiLCB0ZXN0U2VjdXJpdHlPcmlnaW5EYXRhVVJJKTsKKyAgICBUZXN0OjphZGQoIldlYktp
dFNlY3VyaXR5T3JpZ2luIiwgImN1c3RvbS1wcm90b2NvbC1vcmlnaW4iLCB0ZXN0Q3VzdG9tUHJv
dG9jb2xPcmlnaW4pOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422883</attachid>
            <date>2021-03-10 15:32:54 -0800</date>
            <delta_ts>2021-03-11 01:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222943-20210310173253.patch</filename>
            <type>text/plain</type>
            <size>21626</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA0ZGE5MmE2YzUxYWFkNjg0
YzdmZmM5MDlhM2JjMjY2NTJhMmU0ZDYuLmFkMzMxYTRlNDdjNThkMTA3YTE5ZmZlOTA1YjM5ZTZk
N2M1NDkxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMDMtMTAgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjcyNDY5KTogW1dQRV1bR1RLXSBFcGlwaGFueSBVSSBwcm9jZXNzIGNyYXNoZXMgd2hlbiBkb3du
bG9hZGluZyBQREZzLCBXZWJLaXRTZWN1cml0eU9yaWdpbiBzaG91bGQgdXNlIFNlY3VyaXR5T3Jp
Z2luRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyOTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2luY2UgcjI3MjQ2OSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4gbm8gbG9uZ2VyIGFjY2VwdHMg
Y3VzdG9tIHByb3RvY29scyBleGNlcHQgdGhvc2UKKyAgICAgICAgcmVnaXN0ZXJlZCB3aXRoIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5LiBXZWJQYWdlIHJlZ2lzdGVycyBhbGwgY3VzdG9tIHByb3RvY29s
cywgYnV0CisgICAgICAgIFdlYlBhZ2VQcm94eSBkb2VzIG5vdCwgc28gV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4gbm93IG9ubHkgc3VwcG9ydHMgY3VzdG9tIHByb3RvY29scyBpbiB0aGUKKyAgICAg
ICAgd2ViIHByb2Nlc3MsIG5vdCB0aGUgVUkgcHJvY2Vzcy4gVGhpcyBjYXVzZXMgRXBpcGhhbnkg
dG8gY3Jhc2ggd2hlbiB0aGUgcHJvdG9jb2wgb2YgaXRzCisgICAgICAgIFdlYktpdFNlY3VyaXR5
T3JpZ2luIGlzIHVuZXhwZWN0ZWRseSBOVUxMLgorCisgICAgICAgIEFsZXggd2FudHMgdG8gcmVk
dWNlIHVzYWdlIG9mIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luIG91dHNpZGUgdGhlIHdlYiBwcm9j
ZXNzLCBzbyBpbnN0ZWFkIG9mCisgICAgICAgIHJlZ2lzdGVyaW5nIGN1c3RvbSBwcm90b2NvbHMg
d2l0aCBMZWdhY3lTY2hlbWVSZWdpc3RyeSBpbiB0aGUgVUkgcHJvY2VzcyAtLSBtYWtpbmcgaXQg
aGFyZGVyCisgICAgICAgIHRvIGV2ZW50dWFsbHkgZ2V0IHJpZCBvZiBMZWdhY3lTY2hlbWVSZWdp
c3RyeSAtLSB3ZSB3aWxsIHRyYW5zaXRpb24gV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAgICAgICAg
ZnJvbSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiB0byBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEsIHdoaWNoIGlzIGEgc2ltcGxlIGRhdGEgc3RvcmUKKyAgICAgICAgZm9yIDxwcm90b2NvbCwg
aG9zdCwgcG9ydD4uIFRoaXMgaXMgbW9zdGx5IHN1ZmZpY2llbnQgdG8gaW1wbGVtZW50IFdlYktp
dFNlY3VyaXR5T3JpZ2luLAorICAgICAgICBleGNlcHQgZm9yIHdlYmtpdF9zZWN1cml0eV9vcmln
aW5faXNfb3BhcXVlKCkuIEkgY29uc2lkZXJlZCBtdWx0aXBsZSB3YXlzIHRvIGhhbmRsZSB0aGlz
LAorICAgICAgICBidXQgdWx0aW1hdGVseSBkZWNpZGVkIHRvIGp1c3QgZGVwcmVjYXRlIGl0LiBF
cGlwaGFueSBpcyB0aGUgb25seSBjbGllbnQgdXNpbmcgdGhpcyBmdW5jdGlvbgorICAgICAgICBp
biBvcmRlciB0byBpbXBsZW1lbnQgYSBXZWJLaXRTZWN1cml0eU9yaWdpbiBlcXVhbGl0eSBvcGVy
YXRpb24sIGFuZCBpdCBkb2VzIHNvIHVzaW5nCisgICAgICAgIG9yaWdpbnMgdGhhdCBzaG91bGQg
bmV2ZXIgYmUgb3BhcXVlLCBzbyB0aGVyZSBhcmUgbm8gY29tcGF0aWJpbGl0eSBjb25jZXJucyBo
ZXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRf
c2VjdXJpdHlfb3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoX1dlYktpdFNlY3VyaXR5T3JpZ2luOjpfV2ViS2l0
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAod2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUpOgor
ICAgICAgICAod2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbkRhdGEpOgorICAg
ICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcpOgorICAgICAgICAod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9uZXdfZm9yX3VyaSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wcm90b2NvbCk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0
KToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQpOgorICAgICAgICAo
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUpOgorICAgICAgICAod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl90b19zdHJpbmcpOgorICAgICAgICAod2Via2l0U2VjdXJpdHlPcmlnaW5HZXRT
ZWN1cml0eU9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKGFkZE9yaWdpblRvTWFwKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg6CisKIDIwMjEtMDMtMTAg
IFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIGFkZGl0
aW9uYWwgdGVsZW1ldHJ5IHRvIFdlYkNvbnRlbnQgc2FuZGJveCAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlv
blJlcXVlc3QuY3BwCmluZGV4IGI2NDVjZTU2YTJiZDMwODhmMGM0YTVmNjQxM2U5MTk4ZTI4Njlj
NGIuLjhhZDhjNTM4OWUzN2Q4Zjk3M2U1YmQ0NjM2ZGZiZjM1Zjk3MGE1ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIFdlYktpdFNlY3VyaXR5
T3JpZ2luKiB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2lu
KFdlYktpdEF1CiAgICAgICAgIHByb3RvY29sID0gInNvY2tzIl9zOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUocHJvdG9jb2wsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCksIHByb3RlY3Rpb25T
cGFjZS5wb3J0KCkpKTsKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoU2Vj
dXJpdHlPcmlnaW5EYXRhKHByb3RvY29sLCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpLCBwcm90ZWN0
aW9uU3BhY2UucG9ydCgpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDJlMDc4
OWQ0MzAxZjhhODgxNTllOGJlZTAzMDY3YzE1NmFhMmY3NzQuLjQ5NjMzZjQ2YjgwNmRlOTg2ZGE0
ZTIzZDQ1M2U3ZjVhM2U4NjFkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMwLDI0ICszMCwy
NCBAQAogICogQFRpdGxlOiBXZWJLaXRTZWN1cml0eU9yaWdpbgogICoKICAqICNXZWJLaXRTZWN1
cml0eU9yaWdpbiBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGEgc2VjdXJpdHkgZG9tYWluCi0gKiBk
ZWZpbmVkIGJ5IHdlYnNpdGVzLiBBIHNlY3VyaXR5IG9yaWdpbiBub3JtYWxseSBjb25zaXN0cyBv
ZiBhCi0gKiBwcm90b2NvbCwgYSBob3N0bmFtZSwgYW5kIGEgcG9ydCBudW1iZXIuIEl0IGlzIGFs
c28gcG9zc2libGUgZm9yIGEKLSAqIHNlY3VyaXR5IG9yaWdpbiB0byBiZSBvcGFxdWUsIGFzIGRl
ZmluZWQgYnkgdGhlIEhUTUwgc3RhbmRhcmQsIGluCi0gKiB3aGljaCBjYXNlIGl0IGhhcyBubyBh
c3NvY2lhdGVkIHByb3RvY29sLCBob3N0LCBvciBwb3J0LgorICogZGVmaW5lZCBieSB3ZWJzaXRl
cy4gQSBzZWN1cml0eSBvcmlnaW4gY29uc2lzdHMgb2YgYSBwcm90b2NvbCwgYQorICogaG9zdG5h
bWUsIGFuZCBhbiBvcHRpb25hbCBwb3J0IG51bWJlci4KICAqCi0gKiBXZWJzaXRlcyB3aXRoIHRo
ZSBzYW1lIHNlY3VyaXR5IG9yaWdpbiBjYW4gYWNjZXNzIGVhY2ggb3RoZXIncwotICogcmVzb3Vy
Y2VzIGZvciBjbGllbnQtc2lkZSBzY3JpcHRpbmcgb3IgZGF0YWJhc2UgYWNjZXNzLgorICogUmVz
b3VyY2VzIHdpdGggdGhlIHNhbWUgc2VjdXJpdHkgb3JpZ2luIGNhbiBnZW5lcmFsbHkgYWNjZXNz
IGVhY2gKKyAqIG90aGVyIGZvciBjbGllbnQtc2lkZSBzY3JpcHRpbmcgb3IgZGF0YWJhc2UgYWNj
ZXNzLiBXaGVuIGNvbXBhcmluZworICogb3JpZ2lucywgYmV3YXJlIHRoYXQgaWYgYm90aCBwcm90
b2NvbCBhbmQgaG9zdCBhcmUgJU5VTEwsIHRoZSBvcmlnaW5zCisgKiBzaG91bGQgbm90IGJlIHRy
ZWF0ZWQgYXMgZXF1YWwuCiAgKgogICogU2luY2U6IDIuMTYKICAqLwogCiBzdHJ1Y3QgX1dlYktp
dFNlY3VyaXR5T3JpZ2luIHsKLSAgICBfV2ViS2l0U2VjdXJpdHlPcmlnaW4oUmVmPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYmIGNvcmVTZWN1cml0eU9yaWdpbikKLSAgICAgICAgOiBzZWN1cml0
eU9yaWdpbihXVEZNb3ZlKGNvcmVTZWN1cml0eU9yaWdpbikpCisgICAgZXhwbGljaXQgX1dlYktp
dFNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGRhdGEpCisgICAg
ICAgIDogc2VjdXJpdHlPcmlnaW5EYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgewogICAgIH0KIAot
ICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47CisgICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBDU3RyaW5n
IHByb3RvY29sOwogICAgIENTdHJpbmcgaG9zdDsKICAgICBpbnQgcmVmZXJlbmNlQ291bnQgeyAx
IH07CkBAIC01NSwxNyArNTUsMTcgQEAgc3RydWN0IF9XZWJLaXRTZWN1cml0eU9yaWdpbiB7CiAK
IEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0U2VjdXJpdHlPcmlnaW4sIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW4sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmLCB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX3VucmVmKQogCi1XZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0U2VjdXJpdHlPcmlnaW5D
cmVhdGUoUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIGNvcmVTZWN1cml0eU9yaWdpbikK
K1dlYktpdFNlY3VyaXR5T3JpZ2luKiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBkYXRhKQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9yaWdpbio+KGZhc3RNYWxsb2Mo
c2l6ZW9mKFdlYktpdFNlY3VyaXR5T3JpZ2luKSkpOwotICAgIG5ldyAob3JpZ2luKSBXZWJLaXRT
ZWN1cml0eU9yaWdpbihXVEZNb3ZlKGNvcmVTZWN1cml0eU9yaWdpbikpOworICAgIG5ldyAob3Jp
Z2luKSBXZWJLaXRTZWN1cml0eU9yaWdpbihXVEZNb3ZlKGRhdGEpKTsKICAgICByZXR1cm4gb3Jp
Z2luOwogfQogCi1XZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgd2Via2l0U2VjdXJpdHlPcmlnaW5H
ZXRTZWN1cml0eU9yaWdpbihXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB3ZWJraXRTZWN1cml0eU9yaWdpbkdldFNlY3VyaXR5
T3JpZ2luRGF0YShXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIEFTU0VSVChv
cmlnaW4pOwotICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpOworICAgIHJl
dHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIAogLyoqCkBAIC04OCwxMCArODgs
MTAgQEAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3KGNv
bnN0IGdjaGFyKiBwcm90b2NvbCwgY29uc3QgZ2MKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCho
b3N0LCBudWxscHRyKTsKIAogICAgIE9wdGlvbmFsPHVpbnQxNl90PiBvcHRpb25hbFBvcnQ7Ci0g
ICAgaWYgKHBvcnQpCisgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQsIHByb3RvY29sKSkKICAgICAgICAgb3B0aW9uYWxQb3J0ID0gcG9ydDsKIAotICAg
IHJldHVybiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhv
c3QpLCBvcHRpb25hbFBvcnQpKTsKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5DcmVh
dGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhKFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wp
LCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBvcHRpb25hbFBvcnQpKTsKIH0KIAogLyoqCkBAIC0x
MTAsNyArMTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbCh1cmksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3Jl
YXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHVyaSkpKSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChVUkwoVVJMKCksIFN0cmluZzo6ZnJv
bVVURjgodXJpKSkpKTsKIH0KIAogLyoqCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCB3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX3VucmVmKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgKiB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbDoKICAqIEBvcmlnaW46IGEgI1dlYktp
dFNlY3VyaXR5T3JpZ2luCiAgKgotICogR2V0cyB0aGUgcHJvdG9jb2wgb2YgQG9yaWdpbiwgb3Ig
JU5VTEwgaWYgQG9yaWdpbiBpcyBvcGFxdWUuCisgKiBHZXRzIHRoZSBwcm90b2NvbCBvZiBAb3Jp
Z2luLgogICoKICAqIFJldHVybnM6IChhbGxvdy1ub25lKTogVGhlIHByb3RvY29sIG9mIHRoZSAj
V2ViS2l0U2VjdXJpdHlPcmlnaW4KICAqCkBAIC0xNjcsMTEgKzE2NywxMSBAQCBjb25zdCBnY2hh
ciogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2woV2ViS2l0U2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmlnaW4sIG51bGxwdHIp
OwogCi0gICAgaWYgKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnByb3RvY29sKCkuaXNFbXB0eSgp
KQorICAgIGlmIChvcmlnaW4tPnNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKG9yaWdpbi0+cHJvdG9jb2wuaXNO
dWxsKCkpCi0gICAgICAgIG9yaWdpbi0+cHJvdG9jb2wgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
LT5wcm90b2NvbCgpLnV0ZjgoKTsKKyAgICAgICAgb3JpZ2luLT5wcm90b2NvbCA9IG9yaWdpbi0+
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLnV0ZjgoKTsKICAgICByZXR1cm4gb3JpZ2luLT5w
cm90b2NvbC5kYXRhKCk7CiB9CiAKQEAgLTE3OSw4ICsxNzksOCBAQCBjb25zdCBnY2hhciogd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2woV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKICAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Q6CiAgKiBAb3JpZ2luOiBh
ICNXZWJLaXRTZWN1cml0eU9yaWdpbgogICoKLSAqIEdldHMgdGhlIGhvc3RuYW1lIG9mIEBvcmln
aW4sIG9yICVOVUxMIGlmIEBvcmlnaW4gaXMgb3BhcXVlIG9yIGlmIGl0cwotICogcHJvdG9jb2wg
ZG9lcyBub3QgcmVxdWlyZSBhIGhvc3QgY29tcG9uZW50LgorICogR2V0cyB0aGUgaG9zdG5hbWUg
b2YgQG9yaWdpbi4gSXQgaXMgcmVhc29uYWJsZSBmb3IgdGhpcyB0byBiZSAlTlVMTAorICogaWYg
aXRzIHByb3RvY29sIGRvZXMgbm90IHJlcXVpcmUgYSBob3N0IGNvbXBvbmVudC4KICAqCiAgKiBS
ZXR1cm5zOiAoYWxsb3ctbm9uZSk6IFRoZSBob3N0IG9mIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmln
aW4KICAqCkBAIC0xOTAsMTEgKzE5MCwxMSBAQCBjb25zdCBnY2hhciogd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfaG9zdChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgbnVsbHB0cik7CiAKLSAgICBpZiAob3JpZ2luLT5z
ZWN1cml0eU9yaWdpbi0+aG9zdCgpLmlzRW1wdHkoKSkKKyAgICBpZiAob3JpZ2luLT5zZWN1cml0
eU9yaWdpbkRhdGEuaG9zdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKG9yaWdpbi0+aG9zdC5pc051bGwoKSkKLSAgICAgICAgb3JpZ2luLT5ob3N0ID0gb3Jp
Z2luLT5zZWN1cml0eU9yaWdpbi0+aG9zdCgpLnV0ZjgoKTsKKyAgICAgICAgb3JpZ2luLT5ob3N0
ID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbkRhdGEuaG9zdC51dGY4KCk7CiAgICAgcmV0dXJuIG9y
aWdpbi0+aG9zdC5kYXRhKCk7CiB9CiAKQEAgLTIwNiw4ICsyMDYsNyBAQCBjb25zdCBnY2hhciog
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogICogcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgZ2l2ZW4gcHJvdG9jb2wu
IEZvciBleGFtcGxlLAogICogaHR0cDovL2V4YW1wbGUuY29tIGhhcyB0aGUgc2FtZSBzZWN1cml0
eSBvcmlnaW4gYXMKICAqIGh0dHA6Ly9leGFtcGxlLmNvbTo4MCwgYW5kIHRoaXMgZnVuY3Rpb24g
d2lsbCByZXR1cm4gMCBmb3IgYQotICogI1dlYktpdFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdGVk
IGZyb20gZWl0aGVyIFVSSS4gSXQgd2lsbCBhbHNvCi0gKiByZXR1cm4gMCBpZiBAb3JpZ2luIGlz
IG9wYXF1ZS4KKyAqICNXZWJLaXRTZWN1cml0eU9yaWdpbiBjb25zdHJ1Y3RlZCBmcm9tIGVpdGhl
ciBVUkkuCiAgKgogICogUmV0dXJuczogVGhlIHBvcnQgb2YgdGhlICNXZWJLaXRTZWN1cml0eU9y
aWdpbi4KICAqCkBAIC0yMTcsMjUgKzIxNiwyOCBAQCBndWludDE2IHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3BvcnQoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChvcmlnaW4sIDApOwogCi0gICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJp
dHlPcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luRGF0YS5wb3J0LnZhbHVlT3IoMCk7CiB9CiAKIC8qKgogICogd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9pc19vcGFxdWU6CiAgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgog
ICoKLSAqIEdldHMgd2hldGhlciBAb3JpZ2luIGlzIGFuIG9wYXF1ZSBzZWN1cml0eSBvcmlnaW4s
IHdoaWNoIGRvZXMgbm90Ci0gKiBwb3NzZXNzIGFuIGFzc29jaWF0ZWQgcHJvdG9jb2wsIGhvc3Qs
IG9yIHBvcnQuCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgJUZBTFNFLiAjV2ViS2l0U2VjdXJp
dHlPcmlnaW4gaXMgbm93IGEgc2ltcGxlCisgKiB3cmFwcGVyIGFyb3VuZCBhIDxwcm90b2NvbCwg
aG9zdCwgcG9ydD4gdHJpcGxldCwgYW5kIG5vIGxvbmdlcgorICogcmVwcmVzZW50cyBhbiBvcmln
aW4gYXMgZGVmaW5lZCBieSB3ZWIgc3RhbmRhcmRzIHRoYXQgbWF5IGJlIG9wYXF1ZS4KICAqCi0g
KiBSZXR1cm5zOiAlVFJVRSBpZiBAb3JpZ2luIGlzIG9wYXF1ZS4KKyAqIFJldHVybnM6ICVGQUxT
RQogICoKICAqIFNpbmNlOiAyLjE2CisgKgorICogRGVwcmVjYXRlZDogMi4zMgogICovCiBnYm9v
bGVhbiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShXZWJLaXRTZWN1cml0eU9yaWdp
biogb3JpZ2luKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgVFJVRSk7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gb3Jp
Z2luLT5zZWN1cml0eU9yaWdpbi0+aXNVbmlxdWUoKTsKKyAgICByZXR1cm4gRkFMU0U7CiB9CiAK
IC8qKgpAQCAtMjQzLDggKzI0NSw4IEBAIGdib29sZWFuIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
aXNfb3BhcXVlKFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgKiBAb3JpZ2luOiBhICNX
ZWJLaXRTZWN1cml0eU9yaWdpbgogICoKICAqIEdldHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgQG9yaWdpbi4gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbgotICogaXMgYSB2YWxpZCBVUkkg
d2l0aCBvbmx5IHByb3RvY29sLCBob3N0LCBhbmQgcG9ydCBjb21wb25lbnRzLiBJdCBtYXkKLSAq
IGJlICVOVUxMLCBidXQgdXN1YWxseSBvbmx5IGlmIEBvcmlnaW4gaXMgb3BhcXVlLgorICogaXMg
YSB2YWxpZCBVUkkgd2l0aCBvbmx5IHByb3RvY29sLCBob3N0LCBhbmQgcG9ydCBjb21wb25lbnRz
LCBvcgorICogJU5VTEwuCiAgKgogICogUmV0dXJuczogKGFsbG93LW5vbmUpICh0cmFuc2ZlciBm
dWxsKTogYSBVUkkgcmVwcmVzZW50aW5nIEBvcmlnaW4uCiAgKgpAQCAtMjU0LDYgKzI1Niw2IEBA
IGdjaGFyKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhXZWJLaXRTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgbnVsbHB0
cik7CiAKLSAgICBDU3RyaW5nIGNzdHJpbmcgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT50b1N0
cmluZygpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIGNzdHJpbmcgPSBvcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luRGF0YS50b1N0cmluZygpLnV0ZjgoKTsKICAgICByZXR1cm4gY3N0cmluZyA9PSAibnVsbCIg
PyBudWxscHRyIDogZ19zdHJkdXAgKGNzdHJpbmcuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmln
aW5Qcml2YXRlLmgKaW5kZXggMGFmODc5YTM1NGExYzRlY2M0MzFmOTAzODY2MTY1NjE1Nzk5ZDlh
My4uMWFlMDMzODBkMDI5MjU1N2E0NTUwYmUyNzY5YWRiZWQ1YTMwNjBkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJp
dHlPcmlnaW5Qcml2YXRlLmgKQEAgLTIyLDUgKzIyLDUgQEAKICNpbmNsdWRlICJXZWJLaXRTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAotV2Vi
S2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJik7Ci1XZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgd2Via2l0U2Vj
dXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihXZWJLaXRTZWN1cml0eU9yaWdpbiopOworV2Vi
S2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmKTsKK2NvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
d2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbkRhdGEoV2ViS2l0U2VjdXJpdHlP
cmlnaW4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMmFlNTJiZWM1OWI1ZWJjYmYyZmYxNGI0NjhkNjY1MDA1
ZGRhODQ5NC4uOTM4ODI4MmViMWYwMGI3MzQxZWIyOTQ1NTQ1YTViNjNhNzk2MTc0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKQEAgLTE3MDQsNyArMTcwNCw3IEBAIGd1aW50IHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
d2ViX3Byb2Nlc3NfY291bnRfbGltaXQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIAogc3Rh
dGljIHZvaWQgYWRkT3JpZ2luVG9NYXAoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgSGFz
aE1hcDxTdHJpbmcsIGJvb2w+KiBtYXAsIGJvb2wgYWxsb3dlZCkKIHsKLSAgICBTdHJpbmcgc3Ry
aW5nID0gd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3Ry
aW5nKCk7CisgICAgU3RyaW5nIHN0cmluZyA9IHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJp
dHlPcmlnaW5EYXRhKG9yaWdpbikudG9TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nICE9ICJudWxs
IikKICAgICAgICAgbWFwLT5zZXQoc3RyaW5nLCBhbGxvd2VkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAppbmRl
eCA2ZGNhMmI3N2VhNjI3YWJkMTUwNTEyNmY5ZmI0MzdmMzg2ZTZlYmE0Li4wOWVkYmNjOGQwZTA3
ZDNmZjhlMTJmNzc5ZjY0Y2FlOTQ4YWJlYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCkBAIC01OSw3ICs1OSw3
IEBAIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3QgICAgIChXZWJLaXRTZWN1cml0eU9y
aWdpbiAqb3JpZ2luKTsKIFdFQktJVF9BUEkgZ3VpbnQxNgogd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcG9ydCAgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwogCi1XRUJLSVRf
QVBJIGdib29sZWFuCitXRUJLSVRfREVQUkVDQVRFRCBnYm9vbGVhbgogd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9pc19vcGFxdWUgICAgKFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwogCiBX
RUJLSVRfQVBJIGdjaGFyICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAppbmRleCA4MGUwNDUyM2M3ZjNlNDZjNTJmMWJi
ODMxODQ1M2U2NDVkNWI5MmI1Li5lMmJkOWUwOTlhMDM2NDlkYjNlODgyZDU1MDYxYjAzMjIxNjA3
M2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNl
Y3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRTZWN1cml0eU9yaWdpbi5oCkBAIC01OSw3ICs1OSw3IEBAIHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X2hvc3QgICAgIChXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKIFdFQktJVF9B
UEkgZ3VpbnQxNgogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydCAgICAgKFdlYktpdFNl
Y3VyaXR5T3JpZ2luICpvcmlnaW4pOwogCi1XRUJLSVRfQVBJIGdib29sZWFuCitXRUJLSVRfREVQ
UkVDQVRFRCBnYm9vbGVhbgogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUgICAgKFdl
YktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwogCiBXRUJLSVRfQVBJIGdjaGFyICoKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZjU1NGI5NWQ1
MDRhOTM5NTdkYTkxYzk2MGYyYmUwMDFlOTk5YTNhLi5lZTlhZDJhMTdhNzhmN2RiZTU5MWVhNjc5
NTMyZTg5Yzk0OGNhM2I3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDMtMTAgIE1pY2hhZWwgQ2F0YW56YXJv
ICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjcyNDY5KTog
W1dQRV1bR1RLXSBFcGlwaGFueSBVSSBwcm9jZXNzIGNyYXNoZXMgd2hlbiBkb3dubG9hZGluZyBQ
REZzLCBXZWJLaXRTZWN1cml0eU9yaWdpbiBzaG91bGQgdXNlIFNlY3VyaXR5T3JpZ2luRGF0YQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTQzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVz
dCB0byBlbnN1cmUgc2VjdXJpdHkgb3JpZ2lucyBjYW4gYmUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQg
Zm9yIGN1c3RvbSBwcm90b2NvbHMuCisgICAgICAgIEFsc28sIHVwZGF0ZSB0aGUgdGVzdHMgdG8g
YWNjb21vZGF0ZSB0aGUgZGVwcmVjYXRpb24gb2Ygd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19v
cGFxdWUoKS4KKyAgICAgICAgTm90YWJseSwgb3JpZ2lucyBmb3IgZGF0YTovLyBVUklzIGFyZSBu
byBsb25nZXIgc3BlY2lhbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAodGVzdFNlY3VyaXR5
T3JpZ2luQmFzaWNDb25zdHJ1Y3Rvcik6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5VUklD
b25zdHJ1Y3Rvcik6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0UG9ydCk6Cisg
ICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5GaWxlVVJJKToKKyAgICAgICAgKHRlc3RTZWN1cml0
eU9yaWdpbkRhdGFVUkkpOgorICAgICAgICAodGVzdEN1c3RvbVByb3RvY29sT3JpZ2luKToKKyAg
ICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICh0ZXN0T3BhcXVlU2VjdXJpdHlPcmlnaW4pOiBE
ZWxldGVkLgorCiAyMDIxLTAzLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1wcm92ZSBBcHBsZUxhbmd1YWdlc1Rlc3QuVXBkYXRlQXBwbGVMYW5ndWFnZXMg
QVBJIHRlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNWRjNzRjNzc5
YmVmMzNlMWE0N2YzOGJlNzkxYjlhMzZhNzY2MzA0OS4uYjJjYjQwNDY5OTA4YTM1OWYwNmZiYTNm
M2Y3MTAzYjEwZTQxY2JkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAgc3RhdGljIHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luQmFzaWNDb25zdHJ1
Y3RvcihUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0s
ICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMTIzNCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5
X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCkBAIC00NCw3ICs0Myw2IEBAIHN0YXRpYyB2b2lk
IHRlc3RTZWN1cml0eU9yaWdpblVSSUNvbnN0cnVjdG9yKFRlc3QqLCBnY29uc3Rwb2ludGVyKQog
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChv
cmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0
X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAxMjM0
KTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShv
cmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CiAKICAg
ICBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3
LjAuMC4xOjEyMzQvdGhpcy9wYXRoLz9zaG91bGQ9YmUjaWdub3JlZCIpOwpAQCAtNTQsNyArNTIs
NiBAQCBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5VUklDb25zdHJ1Y3RvcihUZXN0Kiwg
Z2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEi
KTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChv
cmlnaW4pLCA9PSwgMTIzNCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X29y
aWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJl
ZihvcmlnaW4pOwogfQogCkBAIC02Nyw3ICs2NCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0
eU9yaWdpbkRlZmF1bHRQb3J0KFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0
dHAiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9z
dChvcmlnaW4pLCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CiAKICAgICBvcmlnaW4gPSB3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX25ldygiaHR0cCIsICIxMjcuMC4wLjEiLCA4MCk7CkBAIC03Nyw3ICs3
Myw2IEBAIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkRlZmF1bHRQb3J0KFRlc3QqLCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEyNy4wLjAuMSIp
OwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9y
aWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9y
aWdpbik7CiAKICAgICBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJp
KCJodHRwOi8vMTI3LjAuMC4xIik7CkBAIC04Nyw3ICs4Miw2IEBAIHN0YXRpYyB2b2lkIHRlc3RT
ZWN1cml0eU9yaWdpbkRlZmF1bHRQb3J0KFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9
PSwgImh0dHAiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAg
ICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CiAKICAgICBvcmlnaW4gPSB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xOjgwIik7
CkBAIC05Nyw3ICs5MSw2IEBAIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkRlZmF1bHRQ
b3J0KFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwg
IjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX3VucmVmKG9yaWdpbik7CiB9CiAKQEAgLTExMCwyMCArMTAzLDI4IEBAIHN0YXRpYyB2b2lk
IHRlc3RTZWN1cml0eU9yaWdpbkZpbGVVUkkoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiks
ID09LCAiZmlsZSIpOwogICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfaG9zdChvcmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5
X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0T3BhcXVlU2VjdXJp
dHlPcmlnaW4oVGVzdCosIGdjb25zdHBvaW50ZXIpCitzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlP
cmlnaW5EYXRhVVJJKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJkYXRh
OkxhbGkgaG8hIik7CiAgICAgZ19hc3NlcnRfbm9ubnVsbChvcmlnaW4pOwogICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2lu
KSk7Ci0gICAgZ19hc3NlcnRfbnVsbChhc1N0cmluZyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIoYXNTdHJpbmcuZ2V0KCksID09LCAiZGF0YTovLyIpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImRhdGEi
KTsKICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3Jp
Z2luKSk7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Bv
cnQob3JpZ2luKSwgPT0sIDApOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NlY3VyaXR5X29y
aWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJl
ZihvcmlnaW4pOworfQorCitzdGF0aWMgdm9pZCB0ZXN0Q3VzdG9tUHJvdG9jb2xPcmlnaW4oVGVz
dCosIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9
IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoInNxdWlycmVsOi8vZmlzaCIpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJzcXVpcnJlbCIpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdp
biksID09LCAiZmlzaCIpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X3VucmVmKG9yaWdpbik7CiB9CiAKQEAgLTEzMyw3ICsxMzQsOCBAQCB2b2lkIGJlZm9yZUFsbCgp
CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU9yaWdpbiIsICJ1cmktY29uc3RydWN0b3Ii
LCB0ZXN0U2VjdXJpdHlPcmlnaW5VUklDb25zdHJ1Y3Rvcik7CiAgICAgVGVzdDo6YWRkKCJXZWJL
aXRTZWNydWl0eU9yaWdpbiIsICJkZWZhdWx0LXBvcnQiLCB0ZXN0U2VjdXJpdHlPcmlnaW5EZWZh
dWx0UG9ydCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU9yaWdpbiIsICJmaWxlLXVy
aSIsIHRlc3RTZWN1cml0eU9yaWdpbkZpbGVVUkkpOwotICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2Vj
cnVpdHlPcmlnaW4iLCAib3BhcXVlLW9yaWdpbiIsIHRlc3RPcGFxdWVTZWN1cml0eU9yaWdpbik7
CisgICAgVGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU9yaWdpbiIsICJibG9iLXVyaSIsIHRlc3RT
ZWN1cml0eU9yaWdpbkRhdGFVUkkpOworICAgIFRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlPcmln
aW4iLCAiY3VzdG9tLXByb3RvY29sLW9yaWdpbiIsIHRlc3RDdXN0b21Qcm90b2NvbE9yaWdpbik7
CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>