<?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>238797</bug_id>
          
          <creation_ts>2022-04-05 03:19:27 -0700</creation_ts>
          <short_desc>[GTK][WPE] RemoteInspector add support for IPv6</short_desc>
          <delta_ts>2022-04-07 07:24:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1858319</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 03:19:27 -0700</bug_when>
    <thetext>Make it possible to connect to remote inspector server using IPv6 address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858322</commentid>
    <comment_count>1</comment_count>
      <attachid>456686</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 03:24:13 -0700</bug_when>
    <thetext>Created attachment 456686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858341</commentid>
    <comment_count>2</comment_count>
      <attachid>456686</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-04-05 04:56:59 -0700</bug_when>
    <thetext>Comment on attachment 456686
Patch

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

&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:83
&gt; +        inspectorServerAddress.reset(g_strdup_printf(&quot;%s:%u&quot;, host.get(), inspectorPort));

Is there any reason why cannot use g_inet_address_to_string() always here
instead of checking the address family and performing the conversion by
hand? A quick test shows that it should work as inteded:

&gt;&gt;&gt; from gi.repository import Gio
&gt;&gt;&gt; Gio.InetSocketAddress.new_from_string(&quot;::0&quot;, 8000).to_string()
&apos;[::]:8000&apos;
&gt;&gt;&gt; Gio.InetSocketAddress.new_from_string(&quot;0.0.0.0&quot;, 8000).to_string()
&apos;0.0.0.0:8000&apos;
&gt;&gt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858345</commentid>
    <comment_count>3</comment_count>
      <attachid>456686</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 05:08:05 -0700</bug_when>
    <thetext>Comment on attachment 456686
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:83
&gt;&gt; +        inspectorServerAddress.reset(g_strdup_printf(&quot;%s:%u&quot;, host.get(), inspectorPort));
&gt; 
&gt; Is there any reason why cannot use g_inet_address_to_string() always here
&gt; instead of checking the address family and performing the conversion by
&gt; hand? A quick test shows that it should work as inteded:

Yes, g_inet_address_to_string() always returns the address without the square brackets. We could create a new GSocketInetAddress with the required port and then call to_string, but I just avoided to create another GObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858346</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 05:09:19 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #2)
&gt; Comment on attachment 456686 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456686&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:83
&gt; &gt; +        inspectorServerAddress.reset(g_strdup_printf(&quot;%s:%u&quot;, host.get(), inspectorPort));
&gt; 
&gt; Is there any reason why cannot use g_inet_address_to_string() always here
&gt; instead of checking the address family and performing the conversion by
&gt; hand? A quick test shows that it should work as inteded:
&gt; 
&gt; &gt;&gt;&gt; from gi.repository import Gio
&gt; &gt;&gt;&gt; Gio.InetSocketAddress.new_from_string(&quot;::0&quot;, 8000).to_string()
&gt; &apos;[::]:8000&apos;
&gt; &gt;&gt;&gt; Gio.InetSocketAddress.new_from_string(&quot;0.0.0.0&quot;, 8000).to_string()
&gt; &apos;0.0.0.0:8000&apos;
&gt; &gt;&gt;&gt;

That&apos;s InetSocketAddress, not InetAddress. That gio APIS are quite confusing wityh so many address classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858354</commentid>
    <comment_count>5</comment_count>
      <attachid>456686</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-04-05 05:43:49 -0700</bug_when>
    <thetext>Comment on attachment 456686
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:83
&gt;&gt;&gt;&gt; +        inspectorServerAddress.reset(g_strdup_printf(&quot;%s:%u&quot;, host.get(), inspectorPort));
&gt;&gt;&gt; 
&gt;&gt;&gt; Is there any reason why cannot use g_inet_address_to_string() always here
&gt;&gt;&gt; instead of checking the address family and performing the conversion by
&gt;&gt;&gt; hand? A quick test shows that it should work as inteded:
&gt;&gt; 
&gt;&gt; Yes, g_inet_address_to_string() always returns the address without the square brackets. We could create a new GSocketInetAddress with the required port and then call to_string, but I just avoided to create another GObject.
&gt; 
&gt; That&apos;s InetSocketAddress, not InetAddress. That gio APIS are quite confusing wityh so many address classes

But here we *do* have a GInetSocketAddress, note how in line 77 above there
is an explicit checked cast using the G_INET_SOCKET_ADDRESS() macro. Note
that the _to_string() method is virtual, and overriden by GInetSocketAddress:
when using g_inet_address_to_string() on a GInetSocketAddress the overriden
method from GInetSocketAddress will be used.

The above can just be:

    GUniquePtr&lt;char&gt; inspectorServerAddress(g_inet_address_to_string(G_INET_ADDRESS(socketAddress.get()));

 Hence,
if one calls g_inet_address_to_string() the implementa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858367</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-05 06:47:19 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #5)
&gt; Comment on attachment 456686 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456686&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:83
&gt; &gt;&gt;&gt;&gt; +        inspectorServerAddress.reset(g_strdup_printf(&quot;%s:%u&quot;, host.get(), inspectorPort));
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Is there any reason why cannot use g_inet_address_to_string() always here
&gt; &gt;&gt;&gt; instead of checking the address family and performing the conversion by
&gt; &gt;&gt;&gt; hand? A quick test shows that it should work as inteded:
&gt; &gt;&gt; 
&gt; &gt;&gt; Yes, g_inet_address_to_string() always returns the address without the square brackets. We could create a new GSocketInetAddress with the required port and then call to_string, but I just avoided to create another GObject.
&gt; &gt; 
&gt; &gt; That&apos;s InetSocketAddress, not InetAddress. That gio APIS are quite confusing wityh so many address classes
&gt; 
&gt; But here we *do* have a GInetSocketAddress, note how in line 77 above there
&gt; is an explicit checked cast using the G_INET_SOCKET_ADDRESS() macro. Note
&gt; that the _to_string() method is virtual, and overriden by GInetSocketAddress:
&gt; when using g_inet_address_to_string() on a GInetSocketAddress the overriden
&gt; method from GInetSocketAddress will be used.
&gt; 
&gt; The above can just be:
&gt; 
&gt;     GUniquePtr&lt;char&gt;
&gt; inspectorServerAddress(g_inet_address_to_string(G_INET_ADDRESS(socketAddress.
&gt; get()));

But that&apos;s not the port we want, we would need to create a new GInetSocketAddress with the same host but the new port and then call to_string().

&gt;  Hence,
&gt; if one calls g_inet_address_to_string() the implementa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858381</commentid>
    <comment_count>7</comment_count>
      <attachid>456686</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-04-05 08:11:02 -0700</bug_when>
    <thetext>Comment on attachment 456686
Patch

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

&gt; Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.cpp:194
&gt; -        g_warning(&quot;Failed to start remote inspector server on %s:%u: %s\n&quot;, address, port, error-&gt;message);
&gt; +        GUniquePtr&lt;char&gt; address(g_socket_connectable_to_string(G_SOCKET_CONNECTABLE(socketAddress.get())));
&gt; +        g_warning(&quot;Failed to start remote inspector server on %s: %s\n&quot;, address.get(), error-&gt;message);

No trailing \n! (Does other preexisting code have this problem?)

&gt; Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:71
&gt; +        char* addressPtr = inspectorAddress.get();
&gt; +        if (addressPtr[0] == &apos;[&apos; &amp;&amp; *(portPtr - 2) == &apos;]&apos;) {
&gt; +            // Strip the square brackets.
&gt; +            addressPtr++;
&gt; +            *(portPtr - 2) = &apos;\0&apos;;
&gt; +        }

Careful: if for some reason the colon is the first or second character in the string, then you&apos;ll have memory corruption here. Got to make sure it&apos;s safe before dereferencing *(portPtr - 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858792</commentid>
    <comment_count>8</comment_count>
      <attachid>456686</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-06 05:46:28 -0700</bug_when>
    <thetext>Comment on attachment 456686
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.cpp:194
&gt;&gt; +        g_warning(&quot;Failed to start remote inspector server on %s: %s\n&quot;, address.get(), error-&gt;message);
&gt; 
&gt; No trailing \n! (Does other preexisting code have this problem?)

I think I fixed the others in previous patches

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:71
&gt;&gt; +        }
&gt; 
&gt; Careful: if for some reason the colon is the first or second character in the string, then you&apos;ll have memory corruption here. Got to make sure it&apos;s safe before dereferencing *(portPtr - 2)

This case is actually covered already. 

char* portPtr = g_strrstr(inspectorAddress.get(), &quot;:&quot;);
if portPtr is nullptr we return early, so we know there&apos;s &apos;:&apos;

*portPtr = &apos;\0&apos;;
portPtr++;
we change &apos;:&apos; by &apos;\0&apos; and move to the next character

auto port = g_ascii_strtoull(portPtr, nullptr, 10);
if portPtr at this point points to &apos;\0&apos; strtoull fails, so we return early

so after this portPtr - 2 is always the position before the &apos;:&apos; that is now &apos;\0&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858796</commentid>
    <comment_count>9</comment_count>
      <attachid>456811</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-06 06:05:31 -0700</bug_when>
    <thetext>Created attachment 456811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859019</commentid>
    <comment_count>10</comment_count>
      <attachid>456686</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-04-06 14:33:09 -0700</bug_when>
    <thetext>Comment on attachment 456686
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:71
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; Careful: if for some reason the colon is the first or second character in the string, then you&apos;ll have memory corruption here. Got to make sure it&apos;s safe before dereferencing *(portPtr - 2)
&gt; 
&gt; This case is actually covered already. 
&gt; 
&gt; char* portPtr = g_strrstr(inspectorAddress.get(), &quot;:&quot;);
&gt; if portPtr is nullptr we return early, so we know there&apos;s &apos;:&apos;
&gt; 
&gt; *portPtr = &apos;\0&apos;;
&gt; portPtr++;
&gt; we change &apos;:&apos; by &apos;\0&apos; and move to the next character
&gt; 
&gt; auto port = g_ascii_strtoull(portPtr, nullptr, 10);
&gt; if portPtr at this point points to &apos;\0&apos; strtoull fails, so we return early
&gt; 
&gt; so after this portPtr - 2 is always the position before the &apos;:&apos; that is now &apos;\0&apos;

Say the input string is &quot;:1080&quot;. You replace the &apos;:&apos; with NUL &apos;\0&apos; and advance portPtr to point to the 1 in 1080. Next, you check *(portPtr -2) == &apos;]&apos;. Here, portPtr -1 is the &apos;\0&apos; and portPtr - 2 is a buffer underflow.

Am I doing something wrong? You&apos;re saying (portPtr - 2) is the &apos;\0&apos;, but it looks like that&apos;s actually (portPtr - 1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859021</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-04-06 14:34:59 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #10)
&gt; You&apos;re saying (portPtr - 2) is the &apos;\0&apos;, but it looks like that&apos;s actually (portPtr - 1).

Sorry, I misread your comment. OK, we agree that (portPtr - 2) is one position before the &apos;\0&apos; that was originally &apos;:&apos;. Problem is, if the input string is bogus and nothing is before the &apos;:&apos;, then that is out of bounds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859176</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-07 03:14:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; (In reply to Michael Catanzaro from comment #10)
&gt; &gt; You&apos;re saying (portPtr - 2) is the &apos;\0&apos;, but it looks like that&apos;s actually (portPtr - 1).
&gt; 
&gt; Sorry, I misread your comment. OK, we agree that (portPtr - 2) is one
&gt; position before the &apos;\0&apos; that was originally &apos;:&apos;. Problem is, if the input
&gt; string is bogus and nothing is before the &apos;:&apos;, then that is out of bounds.

In that case we don&apos;t reach portPtr - 2 because we first check that addressPtr[0] == &apos;[&apos; and it&apos;s &apos;:&apos; in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859177</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-07 03:15:47 -0700</bug_when>
    <thetext>Committed r292527 (249365@trunk): &lt;https://commits.webkit.org/249365@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859240</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-04-07 07:24:13 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; In that case we don&apos;t reach portPtr - 2 because we first check that
&gt; addressPtr[0] == &apos;[&apos; and it&apos;s &apos;:&apos; in that case.

Ah, yes :P</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456686</attachid>
            <date>2022-04-05 03:24:13 -0700</date>
            <delta_ts>2022-04-06 06:05:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-remote-inspector-ipv6.diff</filename>
            <type>text/plain</type>
            <size>14434</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE1YjFhYmFiNDc5OS4uYzI0ODAxMzkyMTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNC0wNSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBSZW1vdGVJbnNwZWN0b3IgYWRkIHN1cHBvcnQgZm9yIElQdjYKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODc5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGli
L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6c3RhcnQpOiBSZWNlaXZlIGEgR1NvY2tldEFkZHJlc3MgaW5zdGVhZCBv
ZiBhZGRyZXNzIGFuZCBwb3J0IHBhcmFtZXRlcnMuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oOgorCiAyMDIyLTA0LTAyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGRlZmF1bHQgY29uc3RydWN0b3Ig
dG8gQVNDSUlMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAK
aW5kZXggZDgwM2U0YWRkNjdmLi44ZTI1YjZiZDRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvclNlcnZlci5jcHAKQEAgLTE4MiwxNiArMTgyLDE2IEBAIFJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6flJlbW90ZUluc3BlY3RvclNlcnZlcigpCiAgICAgICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3NlcnZpY2UuZ2V0KCksIEdfU0lHTkFMX01BVENIX0RB
VEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOwogfQogCi1ib29sIFJlbW90ZUluc3Bl
Y3RvclNlcnZlcjo6c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCkKK2Jv
b2wgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydChHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiYm
IHNvY2tldEFkZHJlc3MpCiB7CiAgICAgbV9zZXJ2aWNlID0gYWRvcHRHUmVmKGdfc29ja2V0X3Nl
cnZpY2VfbmV3KCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zZXJ2aWNlLmdldCgpLCAiaW5j
b21pbmciLCBHX0NBTExCQUNLKGluY29taW5nQ29ubmVjdGlvbkNhbGxiYWNrKSwgdGhpcyk7CiAK
LSAgICBHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiBzb2NrZXRBZGRyZXNzID0gYWRvcHRHUmVmKGdf
aW5ldF9zb2NrZXRfYWRkcmVzc19uZXdfZnJvbV9zdHJpbmcoYWRkcmVzcywgcG9ydCkpOwogICAg
IEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+IGVmZmVjdGl2ZUFkZHJlc3M7CiAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlmICghZ19zb2NrZXRfbGlzdGVuZXJfYWRkX2FkZHJl
c3MoR19TT0NLRVRfTElTVEVORVIobV9zZXJ2aWNlLmdldCgpKSwgc29ja2V0QWRkcmVzcy5nZXQo
KSwgR19TT0NLRVRfVFlQRV9TVFJFQU0sIEdfU09DS0VUX1BST1RPQ09MX1RDUCwgbnVsbHB0ciwg
JmVmZmVjdGl2ZUFkZHJlc3Mub3V0UHRyKCksICZlcnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAg
Z193YXJuaW5nKCJGYWlsZWQgdG8gc3RhcnQgcmVtb3RlIGluc3BlY3RvciBzZXJ2ZXIgb24gJXM6
JXU6ICVzXG4iLCBhZGRyZXNzLCBwb3J0LCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYWRkcmVzcyhnX3NvY2tldF9jb25uZWN0YWJsZV90b19zdHJpbmcoR19TT0NL
RVRfQ09OTkVDVEFCTEUoc29ja2V0QWRkcmVzcy5nZXQoKSkpKTsKKyAgICAgICAgZ193YXJuaW5n
KCJGYWlsZWQgdG8gc3RhcnQgcmVtb3RlIGluc3BlY3RvciBzZXJ2ZXIgb24gJXM6ICVzXG4iLCBh
ZGRyZXNzLmdldCgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCmluZGV4IGY0Yzk5MzE1
MGY4OS4uZmRkM2IyNTFkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oPgogCit0eXBlZGVmIHN0cnVjdCBfR1Nv
Y2tldEFkZHJlc3MgR1NvY2tldEFkZHJlc3M7CiB0eXBlZGVmIHN0cnVjdCBfR1NvY2tldENvbm5l
Y3Rpb24gR1NvY2tldENvbm5lY3Rpb247CiB0eXBlZGVmIHN0cnVjdCBfR1NvY2tldFNlcnZpY2Ug
R1NvY2tldFNlcnZpY2U7CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXImIHNpbmdsZXRvbigpOwogICAg
IH5SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBzdGFydChHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiYmKTsKICAgICBib29s
IGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlOyB9CiAgICAgdWludDE2X3Qg
cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNlYzMzOTIwOTU0
MS4uMGZhOTkyMmNiNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA0LTA1ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XVtXUEVdIFJlbW90ZUluc3BlY3RvciBhZGQgc3VwcG9ydCBmb3IgSVB2NgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Nzk3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBj
b25uZWN0IHRvIHJlbW90ZSBpbnNwZWN0b3Igc2VydmVyIHVzaW5nIElQdjYgYWRkcmVzcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6IFBhcnNlIElQdjYg
YWRkcmVzcyBhbmQgYnVpbGQgR1NvY2tldEFkZHJlc3MgdG8gcGFzcyB0byBpbnNwZWN0b3Igb3QK
KyAgICAgICAgSFRUUCBzZXJ2ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KTogUmVtb3RlSW5zcGVj
dG9yQ2xpZW50IG5vdyBleHBlY3RzIGhvc3QgYW5kIHBvcnQgaW4gYQorICAgICAgICBzaW5nbGUg
U3RyaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OlJl
bW90ZUluc3BlY3RvckNsaWVudCk6IFJlY2VpdmUgdGhlIGhvc3QgYW5kIHBvcnQgaW4gYSBTdHJp
bmcuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JIVFRQU2VydmVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlci5oOgorCiAyMDIyLTA0LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgQ09SUC9DT0VQ
IGNoZWNrIGluIDMwNCByZXNwb25zZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEluaXRpYWxpemUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0SW5pdGlhbGl6ZS5jcHAKaW5kZXggNDg1NzRjZTFhZTJkLi4zOWQw
NDc0YTNlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEluaXRpYWxpemUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEluaXRpYWxpemUuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiV2ViS2l0
MkluaXRpYWxpemUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3Iu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KKyNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00Niw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoKQogICAgIGlmIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6
c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFy
c2VBZGRyZXNzID0gW10oY29uc3QgY2hhciogYWRkcmVzcywgZ3VpbnQ2NCYgcG9ydCkgLT4gR1Vu
aXF1ZVB0cjxjaGFyPiB7CisgICAgYXV0byBwYXJzZUFkZHJlc3MgPSBbXShjb25zdCBjaGFyKiBh
ZGRyZXNzKSAtPiBHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiB7CiAgICAgICAgIGlmICghYWRkcmVz
cyB8fCAhYWRkcmVzc1swXSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01Nywy
OSArNTksMzcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcigp
CiAKICAgICAgICAgKnBvcnRQdHIgPSAnXDAnOwogICAgICAgICBwb3J0UHRyKys7Ci0gICAgICAg
IHBvcnQgPSBnX2FzY2lpX3N0cnRvdWxsKHBvcnRQdHIsIG51bGxwdHIsIDEwKTsKLSAgICAgICAg
aWYgKCFwb3J0KQorICAgICAgICBhdXRvIHBvcnQgPSBnX2FzY2lpX3N0cnRvdWxsKHBvcnRQdHIs
IG51bGxwdHIsIDEwKTsKKyAgICAgICAgaWYgKCFwb3J0IHx8IHBvcnQgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgICAgICByZXR1cm4gaW5zcGVjdG9yQWRkcmVzczsKKyAgICAgICAgY2hhciogYWRkcmVzc1B0
ciA9IGluc3BlY3RvckFkZHJlc3MuZ2V0KCk7CisgICAgICAgIGlmIChhZGRyZXNzUHRyWzBdID09
ICdbJyAmJiAqKHBvcnRQdHIgLSAyKSA9PSAnXScpIHsKKyAgICAgICAgICAgIC8vIFN0cmlwIHRo
ZSBzcXVhcmUgYnJhY2tldHMuCisgICAgICAgICAgICBhZGRyZXNzUHRyKys7CisgICAgICAgICAg
ICAqKHBvcnRQdHIgLSAyKSA9ICdcMCc7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRv
cHRHUmVmKGdfaW5ldF9zb2NrZXRfYWRkcmVzc19uZXdfZnJvbV9zdHJpbmcoYWRkcmVzc1B0ciwg
cG9ydCkpOwogICAgIH07CiAKLSAgICBndWludDY0IGluc3BlY3RvckhUVFBQb3J0OwotICAgIGF1
dG8gaW5zcGVjdG9ySFRUUEFkZHJlc3MgPSBwYXJzZUFkZHJlc3MoaHR0cEFkZHJlc3MsIGluc3Bl
Y3RvckhUVFBQb3J0KTsKLSAgICBndWludDY0IGluc3BlY3RvclBvcnQ7Ci0gICAgYXV0byBpbnNw
ZWN0b3JBZGRyZXNzID0gIWh0dHBBZGRyZXNzID8gcGFyc2VBZGRyZXNzKGFkZHJlc3MsIGluc3Bl
Y3RvclBvcnQpIDogR1VuaXF1ZVB0cjxjaGFyPigpOwotICAgIGlmICghaW5zcGVjdG9ySFRUUEFk
ZHJlc3MgJiYgIWluc3BlY3RvckFkZHJlc3MpCisgICAgYXV0byBpbnNwZWN0b3JIVFRQQWRkcmVz
cyA9IHBhcnNlQWRkcmVzcyhodHRwQWRkcmVzcyk7CisgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVz
cz4gaW5zcGVjdG9yQWRkcmVzczsKKyAgICBpZiAoaW5zcGVjdG9ySFRUUEFkZHJlc3MpCisgICAg
ICAgIGluc3BlY3RvckFkZHJlc3MgPSBhZG9wdEdSZWYoR19TT0NLRVRfQUREUkVTUyhnX2luZXRf
c29ja2V0X2FkZHJlc3NfbmV3KGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhHX0lO
RVRfU09DS0VUX0FERFJFU1MoaW5zcGVjdG9ySFRUUEFkZHJlc3MuZ2V0KCkpKSwgMCkpKTsKKyAg
ICBlbHNlCisgICAgICAgIGluc3BlY3RvckFkZHJlc3MgPSBwYXJzZUFkZHJlc3MoYWRkcmVzcyk7
CisgICAgaWYgKCFpbnNwZWN0b3JIVFRQQWRkcmVzcyAmJiAhaW5zcGVjdG9yQWRkcmVzcykgewor
ICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZl
ciBvbiAlczogaW52YWxpZCBhZGRyZXNzIiwgYWRkcmVzcyA/IGFkZHJlc3MgOiBodHRwQWRkcmVz
cyk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIUluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JBZGRyZXNzID8gaW5z
cGVjdG9yQWRkcmVzcy5nZXQoKSA6IGluc3BlY3RvckhUVFBBZGRyZXNzLmdldCgpLCBpbnNwZWN0
b3JBZGRyZXNzID8gaW5zcGVjdG9yUG9ydCA6IDApKQorICAgIGlmICghSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0KFdURk1vdmUoaW5zcGVjdG9yQWRk
cmVzcykpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhhZGRyZXNzKTsKLQotICAgIGlmIChodHRwQWRk
cmVzcykgewotICAgICAgICBpbnNwZWN0b3JBZGRyZXNzLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
JXM6JXUiLCBpbnNwZWN0b3JIVFRQQWRkcmVzcy5nZXQoKSwgSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnBvcnQoKSkpOwotICAgICAgICBJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhpbnNwZWN0b3JBZGRyZXNz
LmdldCgpKTsKLSAgICAgICAgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9uKCku
c3RhcnQoaW5zcGVjdG9ySFRUUEFkZHJlc3MuZ2V0KCksIGluc3BlY3RvckhUVFBQb3J0LCBJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkucG9ydCgpKTsKKyAgICBp
ZiAoaW5zcGVjdG9ySFRUUEFkZHJlc3MpIHsKKyAgICAgICAgaWYgKFJlbW90ZUluc3BlY3RvckhU
VFBTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0KFdURk1vdmUoaW5zcGVjdG9ySFRUUEFkZHJlc3Mp
LCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkucG9ydCgpKSkK
KyAgICAgICAgICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRJbnNwZWN0b3JTZXJ2
ZXJBZGRyZXNzKFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnNpbmdsZXRvbigpLmluc3BlY3Rv
clNlcnZlckFkZHJlc3MoKS51dGY4KCkpOwogICAgIH0gZWxzZQogICAgICAgICBJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhhZGRyZXNzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA2N2I5
ZmVkZTZhMzcuLjYxZWFmYzczODE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
cXVlCiAgICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3Vy
ZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9z
dCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJM
Lmhvc3RBbmRQb3J0KCksICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAK
ICAgICBhdXRvKiBodG1sID0gY2xpZW50LT5idWlsZFRhcmdldExpc3RQYWdlKFJlbW90ZUluc3Bl
Y3RvckNsaWVudDo6SW5zcGVjdG9yVHlwZTo6VUkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggODhhZjJhZjRiZGU2Li4wNTg4NmU3ODU5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcApAQCAtMTY3LDggKzE2Nyw4IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rp
b246Ok1lc3NhZ2VIYW5kbGVycyYgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjptZXNzYWdlSGFuZGxl
cnMoCiAgICAgcmV0dXJuIG1lc3NhZ2VIYW5kbGVyczsKIH0KIAotUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQg
cG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDogbV9ob3N0QW5k
UG9ydChTdHJpbmc6OmZyb21VVEY4KGFkZHJlc3MpICsgJzonICsgU3RyaW5nOjpudW1iZXIocG9y
dCkpCitSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OlJlbW90ZUluc3BlY3RvckNsaWVudChTdHJpbmcm
JiBob3N0QW5kUG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImIG9ic2VydmVyKQorICAgIDog
bV9ob3N0QW5kUG9ydChXVEZNb3ZlKGhvc3RBbmRQb3J0KSkKICAgICAsIG1fb2JzZXJ2ZXIob2Jz
ZXJ2ZXIpCiAgICAgLCBtX2NhbmNlbGxhYmxlKGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygp
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGli
L1JlbW90ZUluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYzk2N2ZhN2U2ZmQ4Li45NTE3
OTA0MGNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9n
bGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKIGNsYXNzIFJlbW90ZUluc3BlY3RvckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQoKTsKIHB1YmxpYzoKLSAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29uc3Qg
Y2hhciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImKTsK
KyAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQoU3RyaW5nJiYgaG9zdEFuZFBvcnQsIFJlbW90ZUlu
c3BlY3Rvck9ic2VydmVyJik7CiAgICAgflJlbW90ZUluc3BlY3RvckNsaWVudCgpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdEFuZFBvcnQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1Jl
bW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5jcHAKaW5kZXggZTJiY2FhM2Jk
N2Q3Li5iOGI1MzQ1ZDU2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIu
Y3BwCkBAIC00MiwxOCArNDIsMTQgQEAgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlciYgUmVtb3Rl
SW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gc2VydmVyOwogfQog
Ci1ib29sIFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnN0YXJ0KGNvbnN0IGNoYXIqIGFkZHJl
c3MsIHVuc2lnbmVkIHBvcnQsIHVuc2lnbmVkIGluc3BlY3RvclBvcnQpCitib29sIFJlbW90ZUlu
c3BlY3RvckhUVFBTZXJ2ZXI6OnN0YXJ0KEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+JiYgc29ja2V0
QWRkcmVzcywgdW5zaWduZWQgaW5zcGVjdG9yUG9ydCkKIHsKICAgICBtX3NlcnZlciA9IGFkb3B0
R1JlZihzb3VwX3NlcnZlcl9uZXcoInNlcnZlci1oZWFkZXIiLCAiV2ViS2l0SW5zcGVjdG9ySFRU
UFNlcnZlciAiLCBudWxscHRyKSk7Ci0gICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gc29ja2V0
QWRkcmVzcyA9IGFkb3B0R1JlZihnX2luZXRfc29ja2V0X2FkZHJlc3NfbmV3X2Zyb21fc3RyaW5n
KGFkZHJlc3MsIHBvcnQpKTsKLSAgICBpZiAoIXNvY2tldEFkZHJlc3MpIHsKLSAgICAgICAgZ193
YXJuaW5nKCJGYWlsZWQgdG8gc3RhcnQgcmVtb3RlIGluc3BlY3RvciBIVFRQIHNlcnZlciBvbiAl
czoldTogaW52YWxpZCBhZGRyZXNzIiwgYWRkcmVzcywgcG9ydCk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYg
KCFzb3VwX3NlcnZlcl9saXN0ZW4obV9zZXJ2ZXIuZ2V0KCksIHNvY2tldEFkZHJlc3MuZ2V0KCks
IHN0YXRpY19jYXN0PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPigwKSwgJmVycm9yLm91dFB0cigp
KSkgewotICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9y
IEhUVFAgc2VydmVyIG9uICVzOiV1OiAlcyIsIGFkZHJlc3MsIHBvcnQsIGVycm9yLT5tZXNzYWdl
KTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBhZGRyZXNzKGdfc29ja2V0X2Nvbm5lY3RhYmxl
X3RvX3N0cmluZyhHX1NPQ0tFVF9DT05ORUNUQUJMRShzb2NrZXRBZGRyZXNzLmdldCgpKSkpOwor
ICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIEhUVFAg
c2VydmVyIG9uICVzOiAlcyIsIGFkZHJlc3MuZ2V0KCksIGVycm9yLT5tZXNzYWdlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzgsMTEgKzc0LDIzIEBAIGJvb2wgUmVtb3Rl
SW5zcGVjdG9ySFRUUFNlcnZlcjo6c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQg
cG9ydCwgdW5zaWduCiAgICAgICAgICAgICBodHRwU2VydmVyLmhhbmRsZVdlYlNvY2tldChwYXRo
LCBjb25uZWN0aW9uKTsKICAgICAgICAgfSwgdGhpcywgbnVsbHB0cik7CiAKLSAgICBtX2NsaWVu
dCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihhZGRyZXNzLCBpbnNwZWN0b3JQ
b3J0LCAqdGhpcyk7CisgICAgYXV0byogaW5ldEFkZHJlc3MgPSBnX2luZXRfc29ja2V0X2FkZHJl
c3NfZ2V0X2FkZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0KCkp
KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGhvc3QoZ19pbmV0X2FkZHJlc3NfdG9fc3RyaW5nKGlu
ZXRBZGRyZXNzKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0b3JTZXJ2ZXJBZGRyZXNz
OworICAgIGlmIChnX2luZXRfYWRkcmVzc19nZXRfZmFtaWx5KGluZXRBZGRyZXNzKSA9PSBHX1NP
Q0tFVF9GQU1JTFlfSVBWNikKKyAgICAgICAgaW5zcGVjdG9yU2VydmVyQWRkcmVzcy5yZXNldChn
X3N0cmR1cF9wcmludGYoIlslc106JXUiLCBob3N0LmdldCgpLCBpbnNwZWN0b3JQb3J0KSk7Cisg
ICAgZWxzZQorICAgICAgICBpbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzLnJlc2V0KGdfc3RyZHVwX3By
aW50ZigiJXM6JXUiLCBob3N0LmdldCgpLCBpbnNwZWN0b3JQb3J0KSk7CisgICAgbV9jbGllbnQg
PSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4oU3RyaW5nOjpmcm9tVVRGOChpbnNw
ZWN0b3JTZXJ2ZXJBZGRyZXNzLmdldCgpKSwgKnRoaXMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2NvbnN0IFN0cmluZyYgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6aW5zcGVjdG9yU2Vy
dmVyQWRkcmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPmhv
c3RBbmRQb3J0KCkgOiBlbXB0eVN0cmluZygpOworfQorCiB1bnNpZ25lZCBSZW1vdGVJbnNwZWN0
b3JIVFRQU2VydmVyOjpoYW5kbGVSZXF1ZXN0KGNvbnN0IGNoYXIqIHBhdGgsIFNvdXBNZXNzYWdl
SGVhZGVycyogcmVzcG9uc2VIZWFkZXJzLCBTb3VwTWVzc2FnZUJvZHkqIHJlc3BvbnNlQm9keSkg
Y29uc3QKIHsKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi8iKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRU
UFNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3Rl
SW5zcGVjdG9ySFRUUFNlcnZlci5oCmluZGV4IGYyNTM3NWFlNWE3Yi4uMzBhYzhmYzk1ZGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JIVFRQU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5oCkBAIC0zOCw4ICszOCw5IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlciYgc2luZ2xldG9uKCk7
CiAgICAgflJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBib29s
IHN0YXJ0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVuc2lnbmVkIHBvcnQsIHVuc2lnbmVkIGluc3Bl
Y3RvclBvcnQpOworICAgIGJvb2wgc3RhcnQoR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4mJiwgdW5z
aWduZWQgaW5zcGVjdG9yUG9ydCk7CiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVy
biAhIW1fc2VydmVyOyB9CisgICAgY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTZXJ2ZXJBZGRyZXNz
KCkgY29uc3Q7CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25u
ZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
OwogICAgIHZvaWQgdGFyZ2V0RGlkQ2xvc2UodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRf
dCB0YXJnZXRJRCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456811</attachid>
            <date>2022-04-06 06:05:31 -0700</date>
            <delta_ts>2022-04-06 06:31:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-remote-inspector-ipv6.diff</filename>
            <type>text/plain</type>
            <size>14437</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDYwNzBlMDBhZGQxOC4uMzgxODdkNWQ5ZGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNC0wNiAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBSZW1vdGVJbnNwZWN0b3IgYWRkIHN1cHBvcnQgZm9yIElQdjYKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODc5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGli
L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6c3RhcnQpOiBSZWNlaXZlIGEgR1NvY2tldEFkZHJlc3MgaW5zdGVhZCBv
ZiBhZGRyZXNzIGFuZCBwb3J0IHBhcmFtZXRlcnMuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oOgorCiAyMDIyLTA0LTA2ICBYYW4gTG9wZXog
IDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgRG9Ob3RIYXZlVGFnUmVnaXN0
ZXJzIG1vZGUgdG8gdW5ib3hEb3VibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmNwcAppbmRleCBkODAzZTRhZGQ2N2YuLjkzZTYyZGY4YWIwZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtMTgyLDE2ICsxODIsMTYgQEAgUmVtb3Rl
SW5zcGVjdG9yU2VydmVyOjp+UmVtb3RlSW5zcGVjdG9yU2VydmVyKCkKICAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fc2VydmljZS5nZXQoKSwgR19TSUdOQUxf
TUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CiB9CiAKLWJvb2wgUmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1bnNpZ25lZCBw
b3J0KQorYm9vbCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnN0YXJ0KEdSZWZQdHI8R1NvY2tldEFk
ZHJlc3M+JiYgc29ja2V0QWRkcmVzcykKIHsKICAgICBtX3NlcnZpY2UgPSBhZG9wdEdSZWYoZ19z
b2NrZXRfc2VydmljZV9uZXcoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3NlcnZpY2UuZ2V0
KCksICJpbmNvbWluZyIsIEdfQ0FMTEJBQ0soaW5jb21pbmdDb25uZWN0aW9uQ2FsbGJhY2spLCB0
aGlzKTsKIAotICAgIEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+IHNvY2tldEFkZHJlc3MgPSBhZG9w
dEdSZWYoZ19pbmV0X3NvY2tldF9hZGRyZXNzX25ld19mcm9tX3N0cmluZyhhZGRyZXNzLCBwb3J0
KSk7CiAgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gZWZmZWN0aXZlQWRkcmVzczsKICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX3NvY2tldF9saXN0ZW5lcl9h
ZGRfYWRkcmVzcyhHX1NPQ0tFVF9MSVNURU5FUihtX3NlcnZpY2UuZ2V0KCkpLCBzb2NrZXRBZGRy
ZXNzLmdldCgpLCBHX1NPQ0tFVF9UWVBFX1NUUkVBTSwgR19TT0NLRVRfUFJPVE9DT0xfVENQLCBu
dWxscHRyLCAmZWZmZWN0aXZlQWRkcmVzcy5vdXRQdHIoKSwgJmVycm9yLm91dFB0cigpKSkgewot
ICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZl
ciBvbiAlczoldTogJXNcbiIsIGFkZHJlc3MsIHBvcnQsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBhZGRyZXNzKGdfc29ja2V0X2Nvbm5lY3RhYmxlX3RvX3N0cmlu
ZyhHX1NPQ0tFVF9DT05ORUNUQUJMRShzb2NrZXRBZGRyZXNzLmdldCgpKSkpOworICAgICAgICBn
X3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZlciBvbiAlczog
JXMiLCBhZGRyZXNzLmdldCgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCmluZGV4IGY0
Yzk5MzE1MGY4OS4uZmRkM2IyNTFkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9y
U2VydmVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oPgogCit0eXBlZGVmIHN0cnVj
dCBfR1NvY2tldEFkZHJlc3MgR1NvY2tldEFkZHJlc3M7CiB0eXBlZGVmIHN0cnVjdCBfR1NvY2tl
dENvbm5lY3Rpb24gR1NvY2tldENvbm5lY3Rpb247CiB0eXBlZGVmIHN0cnVjdCBfR1NvY2tldFNl
cnZpY2UgR1NvY2tldFNlcnZpY2U7CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXImIHNpbmdsZXRvbigp
OwogICAgIH5SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgc3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydChHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiYmKTsKICAg
ICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlOyB9CiAgICAgdWlu
dDE2X3QgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk2MjI2
OTJlZTNmZC4uZmJmMjJiODUwOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA0
LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXVtXUEVdIFJlbW90ZUluc3BlY3RvciBhZGQgc3VwcG9ydCBmb3IgSVB2NgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Nzk3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJs
ZSB0byBjb25uZWN0IHRvIHJlbW90ZSBpbnNwZWN0b3Igc2VydmVyIHVzaW5nIElQdjYgYWRkcmVz
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6IFBhcnNl
IElQdjYgYWRkcmVzcyBhbmQgYnVpbGQgR1NvY2tldEFkZHJlc3MgdG8gcGFzcyB0byBpbnNwZWN0
b3Igb3QKKyAgICAgICAgSFRUUCBzZXJ2ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KTogUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50IG5vdyBleHBlY3RzIGhvc3QgYW5kIHBvcnQgaW4gYQorICAgICAgICBz
aW5nbGUgU3RyaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGll
bnQ6OlJlbW90ZUluc3BlY3RvckNsaWVudCk6IFJlY2VpdmUgdGhlIGhvc3QgYW5kIHBvcnQgaW4g
YSBTdHJpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JIVFRQU2VydmVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2ds
aWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5oOgorCiAyMDIyLTA0LTA2ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBG
aXggR1RLIGJ1aWxkIGFmdGVyIHIyOTI0NTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEluaXRpYWxpemUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5pdGlhbGl6ZS5jcHAKaW5kZXggNDg1NzRjZTFhZTJkLi4z
OWQwNDc0YTNlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEluaXRpYWxpemUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEluaXRpYWxpemUuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0
b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4K
KyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00Niw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIoKQogICAgIGlmIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
cGFyc2VBZGRyZXNzID0gW10oY29uc3QgY2hhciogYWRkcmVzcywgZ3VpbnQ2NCYgcG9ydCkgLT4g
R1VuaXF1ZVB0cjxjaGFyPiB7CisgICAgYXV0byBwYXJzZUFkZHJlc3MgPSBbXShjb25zdCBjaGFy
KiBhZGRyZXNzKSAtPiBHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiB7CiAgICAgICAgIGlmICghYWRk
cmVzcyB8fCAhYWRkcmVzc1swXSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01
NywyOSArNTksMzcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZl
cigpCiAKICAgICAgICAgKnBvcnRQdHIgPSAnXDAnOwogICAgICAgICBwb3J0UHRyKys7Ci0gICAg
ICAgIHBvcnQgPSBnX2FzY2lpX3N0cnRvdWxsKHBvcnRQdHIsIG51bGxwdHIsIDEwKTsKLSAgICAg
ICAgaWYgKCFwb3J0KQorICAgICAgICBhdXRvIHBvcnQgPSBnX2FzY2lpX3N0cnRvdWxsKHBvcnRQ
dHIsIG51bGxwdHIsIDEwKTsKKyAgICAgICAgaWYgKCFwb3J0IHx8IHBvcnQgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICByZXR1cm4gaW5zcGVjdG9yQWRkcmVzczsKKyAgICAgICAgY2hhciogYWRkcmVz
c1B0ciA9IGluc3BlY3RvckFkZHJlc3MuZ2V0KCk7CisgICAgICAgIGlmIChhZGRyZXNzUHRyWzBd
ID09ICdbJyAmJiAqKHBvcnRQdHIgLSAyKSA9PSAnXScpIHsKKyAgICAgICAgICAgIC8vIFN0cmlw
IHRoZSBzcXVhcmUgYnJhY2tldHMuCisgICAgICAgICAgICBhZGRyZXNzUHRyKys7CisgICAgICAg
ICAgICAqKHBvcnRQdHIgLSAyKSA9ICdcMCc7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
YWRvcHRHUmVmKGdfaW5ldF9zb2NrZXRfYWRkcmVzc19uZXdfZnJvbV9zdHJpbmcoYWRkcmVzc1B0
ciwgcG9ydCkpOwogICAgIH07CiAKLSAgICBndWludDY0IGluc3BlY3RvckhUVFBQb3J0OwotICAg
IGF1dG8gaW5zcGVjdG9ySFRUUEFkZHJlc3MgPSBwYXJzZUFkZHJlc3MoaHR0cEFkZHJlc3MsIGlu
c3BlY3RvckhUVFBQb3J0KTsKLSAgICBndWludDY0IGluc3BlY3RvclBvcnQ7Ci0gICAgYXV0byBp
bnNwZWN0b3JBZGRyZXNzID0gIWh0dHBBZGRyZXNzID8gcGFyc2VBZGRyZXNzKGFkZHJlc3MsIGlu
c3BlY3RvclBvcnQpIDogR1VuaXF1ZVB0cjxjaGFyPigpOwotICAgIGlmICghaW5zcGVjdG9ySFRU
UEFkZHJlc3MgJiYgIWluc3BlY3RvckFkZHJlc3MpCisgICAgYXV0byBpbnNwZWN0b3JIVFRQQWRk
cmVzcyA9IHBhcnNlQWRkcmVzcyhodHRwQWRkcmVzcyk7CisgICAgR1JlZlB0cjxHU29ja2V0QWRk
cmVzcz4gaW5zcGVjdG9yQWRkcmVzczsKKyAgICBpZiAoaW5zcGVjdG9ySFRUUEFkZHJlc3MpCisg
ICAgICAgIGluc3BlY3RvckFkZHJlc3MgPSBhZG9wdEdSZWYoR19TT0NLRVRfQUREUkVTUyhnX2lu
ZXRfc29ja2V0X2FkZHJlc3NfbmV3KGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhH
X0lORVRfU09DS0VUX0FERFJFU1MoaW5zcGVjdG9ySFRUUEFkZHJlc3MuZ2V0KCkpKSwgMCkpKTsK
KyAgICBlbHNlCisgICAgICAgIGluc3BlY3RvckFkZHJlc3MgPSBwYXJzZUFkZHJlc3MoYWRkcmVz
cyk7CisgICAgaWYgKCFpbnNwZWN0b3JIVFRQQWRkcmVzcyAmJiAhaW5zcGVjdG9yQWRkcmVzcykg
eworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNl
cnZlciBvbiAlczogaW52YWxpZCBhZGRyZXNzIiwgYWRkcmVzcyA/IGFkZHJlc3MgOiBodHRwQWRk
cmVzcyk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIUluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JBZGRyZXNzID8g
aW5zcGVjdG9yQWRkcmVzcy5nZXQoKSA6IGluc3BlY3RvckhUVFBBZGRyZXNzLmdldCgpLCBpbnNw
ZWN0b3JBZGRyZXNzID8gaW5zcGVjdG9yUG9ydCA6IDApKQorICAgIGlmICghSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0KFdURk1vdmUoaW5zcGVjdG9y
QWRkcmVzcykpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhhZGRyZXNzKTsKLQotICAgIGlmIChodHRw
QWRkcmVzcykgewotICAgICAgICBpbnNwZWN0b3JBZGRyZXNzLnJlc2V0KGdfc3RyZHVwX3ByaW50
ZigiJXM6JXUiLCBpbnNwZWN0b3JIVFRQQWRkcmVzcy5nZXQoKSwgSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnBvcnQoKSkpOwotICAgICAgICBJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhpbnNwZWN0b3JBZGRy
ZXNzLmdldCgpKTsKLSAgICAgICAgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9u
KCkuc3RhcnQoaW5zcGVjdG9ySFRUUEFkZHJlc3MuZ2V0KCksIGluc3BlY3RvckhUVFBQb3J0LCBJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkucG9ydCgpKTsKKyAg
ICBpZiAoaW5zcGVjdG9ySFRUUEFkZHJlc3MpIHsKKyAgICAgICAgaWYgKFJlbW90ZUluc3BlY3Rv
ckhUVFBTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0KFdURk1vdmUoaW5zcGVjdG9ySFRUUEFkZHJl
c3MpLCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkucG9ydCgp
KSkKKyAgICAgICAgICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRJbnNwZWN0b3JT
ZXJ2ZXJBZGRyZXNzKFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnNpbmdsZXRvbigpLmluc3Bl
Y3RvclNlcnZlckFkZHJlc3MoKS51dGY4KCkpOwogICAgIH0gZWxzZQogICAgICAgICBJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhhZGRyZXNzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAy
YTA2NmI4NWNjNDUuLjkwODJhYWNkZjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHJlcXVlCiAgICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVu
c3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwu
aG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0
VVJMLmhvc3RBbmRQb3J0KCksICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiAKICAgICBhdXRvKiBodG1sID0gY2xpZW50LT5idWlsZFRhcmdldExpc3RQYWdlKFJlbW90ZUlu
c3BlY3RvckNsaWVudDo6SW5zcGVjdG9yVHlwZTo6VUkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAKaW5kZXggODhhZjJhZjRiZGU2Li4wNTg4NmU3ODU5MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTY3LDggKzE2Nyw4IEBAIGNvbnN0IFNvY2tldENvbm5l
Y3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjptZXNzYWdlSGFu
ZGxlcnMoCiAgICAgcmV0dXJuIG1lc3NhZ2VIYW5kbGVyczsKIH0KIAotUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWdu
ZWQgcG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDogbV9ob3N0
QW5kUG9ydChTdHJpbmc6OmZyb21VVEY4KGFkZHJlc3MpICsgJzonICsgU3RyaW5nOjpudW1iZXIo
cG9ydCkpCitSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OlJlbW90ZUluc3BlY3RvckNsaWVudChTdHJp
bmcmJiBob3N0QW5kUG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImIG9ic2VydmVyKQorICAg
IDogbV9ob3N0QW5kUG9ydChXVEZNb3ZlKGhvc3RBbmRQb3J0KSkKICAgICAsIG1fb2JzZXJ2ZXIo
b2JzZXJ2ZXIpCiAgICAgLCBtX2NhbmNlbGxhYmxlKGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25l
dygpKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9n
bGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYzk2N2ZhN2U2ZmQ4Li45
NTE3OTA0MGNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKIGNsYXNzIFJlbW90ZUluc3BlY3RvckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQoKTsKIHB1YmxpYzoKLSAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29u
c3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXIm
KTsKKyAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQoU3RyaW5nJiYgaG9zdEFuZFBvcnQsIFJlbW90
ZUluc3BlY3Rvck9ic2VydmVyJik7CiAgICAgflJlbW90ZUluc3BlY3RvckNsaWVudCgpOwogCiAg
ICAgY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdEFuZFBv
cnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGli
L1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5jcHAKaW5kZXggZTJiY2Fh
M2JkN2Q3Li5iOGI1MzQ1ZDU2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2
ZXIuY3BwCkBAIC00MiwxOCArNDIsMTQgQEAgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlciYgUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gc2VydmVyOwog
fQogCi1ib29sIFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnN0YXJ0KGNvbnN0IGNoYXIqIGFk
ZHJlc3MsIHVuc2lnbmVkIHBvcnQsIHVuc2lnbmVkIGluc3BlY3RvclBvcnQpCitib29sIFJlbW90
ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnN0YXJ0KEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+JiYgc29j
a2V0QWRkcmVzcywgdW5zaWduZWQgaW5zcGVjdG9yUG9ydCkKIHsKICAgICBtX3NlcnZlciA9IGFk
b3B0R1JlZihzb3VwX3NlcnZlcl9uZXcoInNlcnZlci1oZWFkZXIiLCAiV2ViS2l0SW5zcGVjdG9y
SFRUUFNlcnZlciAiLCBudWxscHRyKSk7Ci0gICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gc29j
a2V0QWRkcmVzcyA9IGFkb3B0R1JlZihnX2luZXRfc29ja2V0X2FkZHJlc3NfbmV3X2Zyb21fc3Ry
aW5nKGFkZHJlc3MsIHBvcnQpKTsKLSAgICBpZiAoIXNvY2tldEFkZHJlc3MpIHsKLSAgICAgICAg
Z193YXJuaW5nKCJGYWlsZWQgdG8gc3RhcnQgcmVtb3RlIGluc3BlY3RvciBIVFRQIHNlcnZlciBv
biAlczoldTogaW52YWxpZCBhZGRyZXNzIiwgYWRkcmVzcywgcG9ydCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAg
aWYgKCFzb3VwX3NlcnZlcl9saXN0ZW4obV9zZXJ2ZXIuZ2V0KCksIHNvY2tldEFkZHJlc3MuZ2V0
KCksIHN0YXRpY19jYXN0PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPigwKSwgJmVycm9yLm91dFB0
cigpKSkgewotICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVj
dG9yIEhUVFAgc2VydmVyIG9uICVzOiV1OiAlcyIsIGFkZHJlc3MsIHBvcnQsIGVycm9yLT5tZXNz
YWdlKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBhZGRyZXNzKGdfc29ja2V0X2Nvbm5lY3Rh
YmxlX3RvX3N0cmluZyhHX1NPQ0tFVF9DT05ORUNUQUJMRShzb2NrZXRBZGRyZXNzLmdldCgpKSkp
OworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIEhU
VFAgc2VydmVyIG9uICVzOiAlcyIsIGFkZHJlc3MuZ2V0KCksIGVycm9yLT5tZXNzYWdlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzgsMTEgKzc0LDIzIEBAIGJvb2wgUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWdu
ZWQgcG9ydCwgdW5zaWduCiAgICAgICAgICAgICBodHRwU2VydmVyLmhhbmRsZVdlYlNvY2tldChw
YXRoLCBjb25uZWN0aW9uKTsKICAgICAgICAgfSwgdGhpcywgbnVsbHB0cik7CiAKLSAgICBtX2Ns
aWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihhZGRyZXNzLCBpbnNwZWN0
b3JQb3J0LCAqdGhpcyk7CisgICAgYXV0byogaW5ldEFkZHJlc3MgPSBnX2luZXRfc29ja2V0X2Fk
ZHJlc3NfZ2V0X2FkZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0
KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGhvc3QoZ19pbmV0X2FkZHJlc3NfdG9fc3RyaW5n
KGluZXRBZGRyZXNzKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0b3JTZXJ2ZXJBZGRy
ZXNzOworICAgIGlmIChnX2luZXRfYWRkcmVzc19nZXRfZmFtaWx5KGluZXRBZGRyZXNzKSA9PSBH
X1NPQ0tFVF9GQU1JTFlfSVBWNikKKyAgICAgICAgaW5zcGVjdG9yU2VydmVyQWRkcmVzcy5yZXNl
dChnX3N0cmR1cF9wcmludGYoIlslc106JXUiLCBob3N0LmdldCgpLCBpbnNwZWN0b3JQb3J0KSk7
CisgICAgZWxzZQorICAgICAgICBpbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzLnJlc2V0KGdfc3RyZHVw
X3ByaW50ZigiJXM6JXUiLCBob3N0LmdldCgpLCBpbnNwZWN0b3JQb3J0KSk7CisgICAgbV9jbGll
bnQgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4oU3RyaW5nOjpmcm9tVVRGOChp
bnNwZWN0b3JTZXJ2ZXJBZGRyZXNzLmdldCgpKSwgKnRoaXMpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2NvbnN0IFN0cmluZyYgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6aW5zcGVjdG9y
U2VydmVyQWRkcmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQt
Pmhvc3RBbmRQb3J0KCkgOiBlbXB0eVN0cmluZygpOworfQorCiB1bnNpZ25lZCBSZW1vdGVJbnNw
ZWN0b3JIVFRQU2VydmVyOjpoYW5kbGVSZXF1ZXN0KGNvbnN0IGNoYXIqIHBhdGgsIFNvdXBNZXNz
YWdlSGVhZGVycyogcmVzcG9uc2VIZWFkZXJzLCBTb3VwTWVzc2FnZUJvZHkqIHJlc3BvbnNlQm9k
eSkgY29uc3QKIHsKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi8iKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9y
SFRUUFNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlci5oCmluZGV4IGYyNTM3NWFlNWE3Yi4uMzBhYzhmYzk1ZGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JIVFRQU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5oCkBAIC0zOCw4ICszOCw5IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlciYgc2luZ2xldG9u
KCk7CiAgICAgflJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBi
b29sIHN0YXJ0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVuc2lnbmVkIHBvcnQsIHVuc2lnbmVkIGlu
c3BlY3RvclBvcnQpOworICAgIGJvb2wgc3RhcnQoR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4mJiwg
dW5zaWduZWQgaW5zcGVjdG9yUG9ydCk7CiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJl
dHVybiAhIW1fc2VydmVyOyB9CisgICAgY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTZXJ2ZXJBZGRy
ZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBj
b25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNv
bnN0OwogICAgIHZvaWQgdGFyZ2V0RGlkQ2xvc2UodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50
NjRfdCB0YXJnZXRJRCk7Cg==
</data>
<flag name="review"
          id="485221"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>