<?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>202847</bug_id>
          
          <creation_ts>2019-10-11 05:09:25 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add user messages API</short_desc>
          <delta_ts>2019-10-16 00:36:35 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201033</see_also>
          <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>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mcrha</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579072</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-11 05:09:25 -0700</bug_when>
    <thetext>We have never exposed an API to send/receive message to/from Web extensions to allow applications use their own IPC. Now with PSON enabled it&apos;s a lot more difficult to implement the custom IPC on the application side, because applications need to keep track of all the web processes launched, and the changes of web process in the web view to send the messages to the right extension. That&apos;s already done internally by WebKit, so it would be easier to provide a simple API so that apps don&apos;t need to worry about the web process being used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579073</commentid>
    <comment_count>1</comment_count>
    <who name="Milan Crha">mcrha</who>
    <bug_when>2019-10-11 05:14:37 -0700</bug_when>
    <thetext>The way I did it recently in Evolution was that I use JSC for the communication on both sides. If the script wants to say something to the client side, it does so through a custom signal of

&gt; window.webkit.messageHandlers.MYSIGNAL.postMessage(data);

to which the client side listens. And when the client side wants to say something to the extension, (well, I do not talk to the extension, I only call javascript routines loaded in the extension), I just use javascript calls too.

I mean, there are ways to rely on WebKit&apos;s IPC already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579075</commentid>
    <comment_count>2</comment_count>
      <attachid>380746</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-11 05:18:51 -0700</bug_when>
    <thetext>Created attachment 380746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579076</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-11 05:19:38 -0700</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 http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579077</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-11 05:19:52 -0700</bug_when>
    <thetext>For now, I&apos;ve only used the unit tests to check the API. I&apos;ll port ephy to use it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579078</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-11 05:23:52 -0700</bug_when>
    <thetext>(In reply to Milan Crha from comment #1)
&gt; The way I did it recently in Evolution was that I use JSC for the
&gt; communication on both sides. If the script wants to say something to the
&gt; client side, it does so through a custom signal of
&gt; 
&gt; &gt; window.webkit.messageHandlers.MYSIGNAL.postMessage(data);
&gt; 
&gt; to which the client side listens. And when the client side wants to say
&gt; something to the extension, (well, I do not talk to the extension, I only
&gt; call javascript routines loaded in the extension), I just use javascript
&gt; calls too.
&gt; 
&gt; I mean, there are ways to rely on WebKit&apos;s IPC already.

Yes, that&apos;s what we have suggested to do for simple cases to avoid having to implement your own IPC. But that&apos;s more limited, and doesn&apos;t cover all the cases. Epiphany does the same, but it still needs to use DBus for other cases. The new API will make both cases a lot easier in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579082</commentid>
    <comment_count>6</comment_count>
      <attachid>380746</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-10-11 06:37:51 -0700</bug_when>
    <thetext>Comment on attachment 380746
Patch

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

This looks really great, thanks for working on it, Carlos! I have
some use-cases in mind where this will come in very handy and allow
removing custom-written IPC code from applications. Kudos for reusing
GVariant to carry data around, and for future-proofing the feature by
allowing passing file descriptors around.

I just have one small nit/doubt/suggestion below :)

&gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:162
&gt; +     * after the message has been sent.

Maybe we want to explicitly have a note indicating that...

  “If the sender needs to keep the file descriptor, `dup(2)`
   can be used to send a new descriptor referring to the same
   data.”

I suggest this because my first thought was “what if I need to keep
referring to some shared data in both processes” and it took me a
minute to realize how to do it. Maybe for many people it&apos;s obvious,
but it won&apos;t hurt pointing it out, I think.

&gt; Source/WebKit/Shared/glib/UserMessage.cpp:50
&gt; +        GRefPtr&lt;GDBusMessage&gt; message = adoptGRef(g_dbus_message_new_method_call(nullptr, &quot;/&quot;, nullptr, &quot;_&quot;));

Is there any advantage here in abusing GDBusMessage over sending
directly a blob of bytes with the GVariant type and the payload?
Roughly, I am thinking of something like this:

  const GvariantType *payloadType = g_variant_get_type(parameters.get());
  encoder &lt;&lt; IPC::DataReference(g_variant_type_peek_string(payloadType),
                                g_variant_type_get_string_length(payloadType));
  encoder &lt;&lt; IPC::DataReference(g_variant_get_data(parameters.get(),
                                g_variant_get_size(parameters.get());

This doesn&apos;t incur in any allocations in the best case, and only one in the
worst case for the buffer where the GVariant gets serialized on demand if
needed. Using GDBusMessage involves an additional GObject (and its allocations
and deallocations), for no added benefit (I think).

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2105
&gt; +     * and the message has been replied, the operation in the #WebKitWebPage will

From the context I suppose that this is supposed to be

  “…and the message has not been replied…”
                        ^^^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579095</commentid>
    <comment_count>7</comment_count>
      <attachid>380746</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-10-11 07:42:04 -0700</bug_when>
    <thetext>Comment on attachment 380746
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2105
&gt;&gt; +     * and the message has been replied, the operation in the #WebKitWebPage will
&gt; 
&gt; From the context I suppose that this is supposed to be
&gt; 
&gt;   “…and the message has not been replied…”
&gt;                         ^^^

&quot;not been replied to&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579568</commentid>
    <comment_count>8</comment_count>
      <attachid>380746</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-14 01:09:50 -0700</bug_when>
    <thetext>Comment on attachment 380746
Patch

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

&gt;&gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:162
&gt;&gt; +     * after the message has been sent.
&gt; 
&gt; Maybe we want to explicitly have a note indicating that...
&gt; 
&gt;   “If the sender needs to keep the file descriptor, `dup(2)`
&gt;    can be used to send a new descriptor referring to the same
&gt;    data.”
&gt; 
&gt; I suggest this because my first thought was “what if I need to keep
&gt; referring to some shared data in both processes” and it took me a
&gt; minute to realize how to do it. Maybe for many people it&apos;s obvious,
&gt; but it won&apos;t hurt pointing it out, I think.

Or we could always dup and avoid confusions. I decided to steal mainly because I think of WebKitUserMessage as a temp object (that&apos;s also why it&apos;s initially unowned), that you don&apos;t care about after being sent.

&gt;&gt; Source/WebKit/Shared/glib/UserMessage.cpp:50
&gt;&gt; +        GRefPtr&lt;GDBusMessage&gt; message = adoptGRef(g_dbus_message_new_method_call(nullptr, &quot;/&quot;, nullptr, &quot;_&quot;));
&gt; 
&gt; Is there any advantage here in abusing GDBusMessage over sending
&gt; directly a blob of bytes with the GVariant type and the payload?
&gt; Roughly, I am thinking of something like this:
&gt; 
&gt;   const GvariantType *payloadType = g_variant_get_type(parameters.get());
&gt;   encoder &lt;&lt; IPC::DataReference(g_variant_type_peek_string(payloadType),
&gt;                                 g_variant_type_get_string_length(payloadType));
&gt;   encoder &lt;&lt; IPC::DataReference(g_variant_get_data(parameters.get(),
&gt;                                 g_variant_get_size(parameters.get());
&gt; 
&gt; This doesn&apos;t incur in any allocations in the best case, and only one in the
&gt; worst case for the buffer where the GVariant gets serialized on demand if
&gt; needed. Using GDBusMessage involves an additional GObject (and its allocations
&gt; and deallocations), for no added benefit (I think).

I decided to follow the same rules as a DBus message, and using GDBusMessage we avoided copying the serialization code. But there&apos;s actually no good reason for that, we could use GVariant data directly and remove all the restrictions of a DBus message (it must be a tuple with only complete types).

&gt;&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2105
&gt;&gt;&gt; +     * and the message has been replied, the operation in the #WebKitWebPage will
&gt;&gt; 
&gt;&gt; From the context I suppose that this is supposed to be
&gt;&gt; 
&gt;&gt;   “…and the message has not been replied…”
&gt;&gt;                         ^^^
&gt; 
&gt; &quot;not been replied to&quot;

Right!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579577</commentid>
    <comment_count>9</comment_count>
      <attachid>380864</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-14 03:05:33 -0700</bug_when>
    <thetext>Created attachment 380864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579584</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-14 03:34:47 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #8)
&gt; Comment on attachment 380746 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380746&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:162
&gt; &gt;&gt; +     * after the message has been sent.
&gt; &gt; 
&gt; &gt; Maybe we want to explicitly have a note indicating that...
&gt; &gt; 
&gt; &gt;   “If the sender needs to keep the file descriptor, `dup(2)`
&gt; &gt;    can be used to send a new descriptor referring to the same
&gt; &gt;    data.”
&gt; &gt; 
&gt; &gt; I suggest this because my first thought was “what if I need to keep
&gt; &gt; referring to some shared data in both processes” and it took me a
&gt; &gt; minute to realize how to do it. Maybe for many people it&apos;s obvious,
&gt; &gt; but it won&apos;t hurt pointing it out, I think.
&gt; 
&gt; Or we could always dup and avoid confusions. I decided to steal mainly
&gt; because I think of WebKitUserMessage as a temp object (that&apos;s also why it&apos;s
&gt; initially unowned), that you don&apos;t care about after being sent.

I&apos;ve realized that we should always dup, otherwise it would be impossible to send a message with fds using webkit_web_context_send_message_to_all_extensions(). I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579591</commentid>
    <comment_count>11</comment_count>
      <attachid>380871</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-14 03:44:54 -0700</bug_when>
    <thetext>Created attachment 380871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579641</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-14 08:48:38 -0700</bug_when>
    <thetext>This is how ephy code would be using this API:

https://gitlab.gnome.org/GNOME/epiphany/commit/87578a124becb345b0079879562203a2674f243b

 10 files changed, 380 insertions(+), 999 deletions(-)
 delete mode 100644 embed/ephy-web-process-extension-proxy.c
 delete mode 100644 embed/ephy-web-process-extension-proxy.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580039</commentid>
    <comment_count>13</comment_count>
      <attachid>380972</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-15 02:03:12 -0700</bug_when>
    <thetext>Created attachment 380972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580058</commentid>
    <comment_count>14</comment_count>
      <attachid>380972</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-10-15 04:42:51 -0700</bug_when>
    <thetext>Comment on attachment 380972
Patch

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

LGTM. I&apos;ll leave r+ for Adrian, though.

&gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:46
&gt; + * and Web extensions. A WebKitUserMessage always have a name, and it can also include parameters and

We&apos;ve never capitalized web before, at least not in web process or web extension. I wouldn&apos;t start now.

Also: have -&gt; has

&gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:49
&gt; + * corresponding #WebKitWebPage (and vice versa). One to one messages can be replied directly with

&quot;replied to&quot;

&gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:299
&gt; +    GRefPtr&lt;WebKitUserMessage&gt; adoptedReply = reply;

Probably a good idea to add your one-line comment about sinking the message here, since you did everywhere else, and it&apos;s not obvious.

&gt; Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp:46
&gt; +bool decode(Decoder&amp; decoder, GRefPtr&lt;GVariant&gt;&amp; variant)

Shouldn&apos;t it return Optional&lt;GRefPtr&lt;GVariant&gt;&amp;&gt;, using Optional return instead of an out parameter, as you did for the UserMessage class? I think this is an old-style decoder that we&apos;re supposed to be moving away from, when you used the modern style in UserMessage.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:162
&gt; +     * replied. Calling webkit_user_message_send_reply() will do nothing.

replied to.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:586
&gt; +    void sendMedssageToAllExtensions(WebKitUserMessage* message)

Medssage -&gt; Message

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:641
&gt; +static bool readFileDescritpor(int fd, char** contents, gsize* length)

Descritpor -&gt; Descriptor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580061</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-15 05:29:16 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; Comment on attachment 380972 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380972&amp;action=review
&gt; 
&gt; LGTM. I&apos;ll leave r+ for Adrian, though.

Thanks!

&gt; &gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:46
&gt; &gt; + * and Web extensions. A WebKitUserMessage always have a name, and it can also include parameters and
&gt; 
&gt; We&apos;ve never capitalized web before, at least not in web process or web
&gt; extension. I wouldn&apos;t start now.

I don&apos;t know who corrected me recently changing web to Web somewhere, anyway let&apos;s be consistent in our docs, I&apos;ll change it.

&gt; Also: have -&gt; has

Oops.

&gt; &gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:49
&gt; &gt; + * corresponding #WebKitWebPage (and vice versa). One to one messages can be replied directly with
&gt; 
&gt; &quot;replied to&quot;

Ok.

&gt; &gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:299
&gt; &gt; +    GRefPtr&lt;WebKitUserMessage&gt; adoptedReply = reply;
&gt; 
&gt; Probably a good idea to add your one-line comment about sinking the message
&gt; here, since you did everywhere else, and it&apos;s not obvious.

Didn&apos;t add it in this case because I thought the adopted prefix in the name was self-explanatory. I&apos;ll add the comment in any case, it won&apos;t hurt.

&gt; &gt; Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp:46
&gt; &gt; +bool decode(Decoder&amp; decoder, GRefPtr&lt;GVariant&gt;&amp; variant)
&gt; 
&gt; Shouldn&apos;t it return Optional&lt;GRefPtr&lt;GVariant&gt;&amp;&gt;, using Optional return
&gt; instead of an out parameter, as you did for the UserMessage class? I think
&gt; this is an old-style decoder that we&apos;re supposed to be moving away from,
&gt; when you used the modern style in UserMessage.

Right, I&apos;ll use Optional instead.

&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:162
&gt; &gt; +     * replied. Calling webkit_user_message_send_reply() will do nothing.
&gt; 
&gt; replied to.

Ok.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:586
&gt; &gt; +    void sendMedssageToAllExtensions(WebKitUserMessage* message)
&gt; 
&gt; Medssage -&gt; Message

Oops.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:641
&gt; &gt; +static bool readFileDescritpor(int fd, char** contents, gsize* length)
&gt; 
&gt; Descritpor -&gt; Descriptor

You are good catching my typos :-D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580077</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-10-15 06:50:32 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #15) 
&gt; I don&apos;t know who corrected me recently changing web to Web somewhere, anyway
&gt; let&apos;s be consistent in our docs, I&apos;ll change it.

That was Adrian... we had a little argument about that afterwards. I hope I&apos;ve successfully argued my case for lowercase web. :P

&gt; &gt; &gt; Source/WebKit/Shared/API/glib/WebKitUserMessage.cpp:299
&gt; &gt; &gt; +    GRefPtr&lt;WebKitUserMessage&gt; adoptedReply = reply;
&gt; &gt; 
&gt; &gt; Probably a good idea to add your one-line comment about sinking the message
&gt; &gt; here, since you did everywhere else, and it&apos;s not obvious.
&gt; 
&gt; Didn&apos;t add it in this case because I thought the adopted prefix in the name
&gt; was self-explanatory. I&apos;ll add the comment in any case, it won&apos;t hurt.

I didn&apos;t notice, but that arguably makes it even worse because people might assume from the variable name that you forgot to adopt the ref.

&gt; You are good catching my typos :-D

I think you use copy/paste more than I do. It&apos;s easy to make a typo once, when declaring or calling a function, but it&apos;s rare that I make the same typo in both places. So normally the compiler yells when I mess up. But if you use Ctrl+V to paste the function name, typos can go unnoticed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580079</commentid>
    <comment_count>17</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-10-15 06:58:36 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #16)
&gt; (In reply to Carlos Garcia Campos from comment #15) 
&gt; &gt; I don&apos;t know who corrected me recently changing web to Web somewhere, anyway
&gt; &gt; let&apos;s be consistent in our docs, I&apos;ll change it.
&gt; 
&gt; That was Adrian... we had a little argument about that afterwards. I hope
&gt; I&apos;ve successfully argued my case for lowercase web :P

It was me, indeed. In the end we agreed that it&apos;s okay to use
lowercase, in 2019 The Web™ is not such a special thing anymore
after all :-)

That way we also avoid the ugly looking “GNOME Web Web browser”
expression (“GNOME Web web browser” looks a bit better), and we
don&apos;t have to change all the lowercase occurrences that were
already in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580085</commentid>
    <comment_count>18</comment_count>
      <attachid>380972</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-10-15 07:29:44 -0700</bug_when>
    <thetext>Comment on attachment 380972
Patch

I had already a good feeling about this patch, and after reading
the MR uses the API in Epiphany I am truly convinced that having
this in WebKit{GTK,WPE} will be beneficial for most (if not all)
applications which are using WebExtensions. Really nice work :D

One last thing, could you please add also a definition to allow
usage of g_autoptr() for WebKitUserMessage in
Source/WebKit/UIProcess/API/{gtk,wpe}/WebKitAutocleanups.h and
Source/WebKit/WebProcess/InjectedBundle/API/{gtk,wpe}/WebKitWebExtensionAutocleanups.h?

With that, and the changes suggested by Michael, I think this will
be ready for landing 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580098</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-15 07:53:55 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #18)
&gt; Comment on attachment 380972 [details]
&gt; Patch
&gt; 
&gt; I had already a good feeling about this patch, and after reading
&gt; the MR uses the API in Epiphany I am truly convinced that having
&gt; this in WebKit{GTK,WPE} will be beneficial for most (if not all)
&gt; applications which are using WebExtensions. Really nice work :D
&gt; 
&gt; One last thing, could you please add also a definition to allow
&gt; usage of g_autoptr() for WebKitUserMessage in
&gt; Source/WebKit/UIProcess/API/{gtk,wpe}/WebKitAutocleanups.h and
&gt; Source/WebKit/WebProcess/InjectedBundle/API/{gtk,wpe}/
&gt; WebKitWebExtensionAutocleanups.h?

Sure, I always forget the auto cleanups thing.

&gt; With that, and the changes suggested by Michael, I think this will
&gt; be ready for landing 👍

\o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580105</commentid>
    <comment_count>20</comment_count>
      <attachid>380987</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-15 08:20:37 -0700</bug_when>
    <thetext>Created attachment 380987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580311</commentid>
    <comment_count>21</comment_count>
      <attachid>380987</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-10-15 15:17:23 -0700</bug_when>
    <thetext>Comment on attachment 380987
Patch

Just one minor nit: the autocleanup definitions are still missing from
Source/WebKit/WebProcess/InjectedBundle/API/{gtk,wpe}/WebKitWebExtensionAutocleanups.h
Please add them before landing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580467</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-16 00:06:31 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #21)
&gt; Comment on attachment 380987 [details]
&gt; Patch
&gt; 
&gt; Just one minor nit: the autocleanup definitions are still missing from
&gt; Source/WebKit/WebProcess/InjectedBundle/API/{gtk,wpe}/
&gt; WebKitWebExtensionAutocleanups.h
&gt; Please add them before landing :)

Are you sure we have to duplicate them? We don&apos;t do that for all other shared objects. Wouldn&apos;t we end up with duplicated symbols? it&apos;s the same library in the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580478</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-16 00:36:35 -0700</bug_when>
    <thetext>Committed r251181: &lt;https://trac.webkit.org/changeset/251181&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380746</attachid>
            <date>2019-10-11 05:18:51 -0700</date>
            <delta_ts>2019-10-14 03:05:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-user-messages.diff</filename>
            <type>text/plain</type>
            <size>131442</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDJjM2RlNWRlNTdm
Li45NDA2ZmJkMjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgbmV3IGZpbGVzIGNvbnRhaW5pbmcgdHJhbnNsYXRhYmxlIHN0cmluZ3Mu
CisKIDIwMTktMDktMDcgIENocmlzdGlhbiBLaXJiYWNoICA8Q2hyaXN0aWFuLktpcmJhY2hAZ29v
Z2xlbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlZCBHZXJtYW4gdHJhbnNsYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRleCBiNTRkMjFkMzY3Mi4u
NGNlYmQ5NTk5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9Q
T1RGSUxFUy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMu
aW4KQEAgLTcsNiArNyw3IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCiAuLi8uLi8uLi9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorLi4vLi4vLi4vV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKIC4uLy4uLy4uL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkVycm9yc1NvdXAuY3BwCkBAIC00
Myw0ICs0NCw1IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJLaXRJbnNwZWN0b3JXaW5kb3cuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogLi4vLi4vLi4vV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5jcHAKKy4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKIC4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExODg0YmY4
YmM2Li44NmU1YWRjOTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMTktMTAtMTEg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIG5ldmVyIGV4cG9zZWQgYW4gQVBJIHRvIHNl
bmQvcmVjZWl2ZSBtZXNzYWdlIHRvL2Zyb20gV2ViIGV4dGVuc2lvbnMsIHRvIGFsbG93IGFwcGxp
Y2F0aW9ucyB1c2UgdGhlaXIgb3duCisgICAgICAgIElQQy4gTm93LCB3aXRoIFBTT04gZW5hYmxl
ZCwgaXQncyBhIGxvdCBtb3JlIGRpZmZpY3VsdCB0byBpbXBsZW1lbnQgdGhlIGN1c3RvbSBJUEMg
b24gdGhlIGFwcGxpY2F0aW9uIHNpZGUsCisgICAgICAgIGJlY2F1c2UgYXBwbGljYXRpb25zIG5l
ZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgdGhlIHdlYiBwcm9jZXNzZXMgbGF1bmNoZWQsIGFuZCB0
aGUgY2hhbmdlcyBvZiB3ZWIgcHJvY2VzcyBpbiB0aGUKKyAgICAgICAgd2ViIHZpZXcgdG8gc2Vu
ZCB0aGUgbWVzc2FnZXMgdG8gdGhlIHJpZ2h0IGV4dGVuc2lvbi4gVGhhdCdzIGFscmVhZHkgZG9u
ZSBpbnRlcm5hbGx5IGJ5IFdlYktpdCwgc28gaXQgd291bGQgYmUKKyAgICAgICAgZWFzaWVyIHRv
IHByb3ZpZGUgYSBzaW1wbGUgQVBJIHNvIHRoYXQgYXBwcyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi
b3V0IHRoZSB3ZWIgcHJvY2VzcyBiZWluZyB1c2VkLiBUaGlzIHBhdGNoIGFkZAorICAgICAgICBX
ZWJLaXRVc2VyTWVzc2FnZSwgYSBzaW1wbGUgbWVzc2FnZSBBUEkgY29uc2lzdGluZyBvbiBhIG1l
c3NhZ2UgbmFtZSwgcGFyYW1ldGVycyBhbmQgZmlsZSBkZXNjcmlwdG9ycy4gVGhlCisgICAgICAg
IHBhcmFtZXRlcnMgYXJlIGV4YWN0bHkgdGhlIHNhbWUgZm9ybWF0IGFzIEdEQnVzLCBhIEdWYXJp
YW50IHRoYXQgaXMgdHVwbGUsIGFuZCBmb2xsb3dpbmcgdGhlIHNhbWUgcnVsZXMgb2YKKyAgICAg
ICAgREJ1cywgc28gdGhlIG1pZ3JhdGlvbiBvZiBhcHBsaWNhdGlvbnMgdXNpbmcgREJ1cyBzaG91
bGQgYmUgc3RyYWlnaHRmb3J3YXJkLiBNZXNzYWdlcyBjYW4gYmUgc2VudCBmcm9tIGEKKyAgICAg
ICAgV2ViS2l0V2ViQ29udGV4dCB0byBhbGwgdGhlIFdlYktpdFdlYkV4dGVuc2lvbnMsIG9yIGZy
b20gYSBXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzIFdlYktpdFdlYkNvbnRleHQsIG9yIGZyb20g
YQorICAgICAgICBXZWJLaXRXZWJWaWV3IHRvIGl0cyBXZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2
ZXJzYSkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bVdQRS5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlRGlzcG9zZSk6CisgICAgICAg
ICh3ZWJraXRVc2VyTWVzc2FnZUdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNz
YWdlU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVz
ZXJNZXNzYWdlR2V0TWVzc2FnZSk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX25ldyk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QpOgorICAgICAg
ICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSk6CisgICAgICAgICh3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9wYXJhbWV0ZXJzKToKKyAgICAgICAgKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KToKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmguCisgICAgICAgICogU2hhcmVkL2dsaWIvVXNlck1l
c3NhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2U6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVz
c2FnZTo6VXNlck1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAq
IFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RGlkUmVjZWl2ZVVzZXJNZXNz
YWdlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6Vmlld0NsaWVudDo6ZGlkUmVjZWl2ZVVzZXJNZXNzYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvV2ViVmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpkaWRSZWNl
aXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L3dlYmtpdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZVRvV2ViQ29u
dGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmlldyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25N
YW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmV4dGVu
c2lvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9uRGlk
UmVjZWl2ZVVzZXJNZXNzYWdlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRf
bWVzc2FnZV90b19jb250ZXh0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRf
bWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlBh
Z2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX3NlbmRf
bWVzc2FnZV90b192aWV3KToKKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2Vf
dG9fdmlld19maW5pc2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0
ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dl
YktpdFdlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93
cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKToKKwog
MjAxOS0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBhYm91dDpncHUgc2hvdWxkIGFsc28gc2hvdyB0aGUgY2xpZW50
IEVHTCBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhYTc2NTViOWQ1Ny4u
ZGZlMWM1MjkyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTA5LDYgKzEwOSw3IEBA
IHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmgKICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oCisgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
TWVzc2FnZS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYklu
c3BlY3Rvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJS
ZXNvdXJjZS5oCkBAIC02OTQsMTIgKzY5NSwxNCBAQCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04p
CiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0
TWVudS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktp
dENvbnRleHRNZW51SXRlbS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQ
SS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCisgICAgICAgICAgICAke1dFQktJVF9ESVJ9
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKICAgICAgICAgICAgICR7V0VC
S0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCiAgICAgICAgICAg
ICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKICAg
ICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnUuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudUFjdGlvbnMuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaAogICAgICAgICAgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgKKyAgICAgICAgICAgICR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lc3NhZ2UuaAogICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgK
ICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVz
cG9uc2UuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliLyouY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BF
LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA4OTc3NDIxYmIx
MC4uNzNmYjZhMWQ4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTM0LDYgKzEzNCw3
IEBAIHNldChXUEVfQVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmgKICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oCisgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2Vy
TWVzc2FnZS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJD
b250ZXh0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlJl
c291cmNlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZp
ZXcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1l
c3NhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YjJlNmI3
MTc2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dl
YktpdFVzZXJNZXNzYWdlLmNwcApAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0
VXNlck1lc3NhZ2UuaCIKKworI2luY2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgor
I2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
V1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZW51bSB7CisgICAgUFJP
UF8wLAorCisgICAgUFJPUF9OQU1FLAorICAgIFBST1BfUEFSQU1FVEVSUywKKyAgICBQUk9QX0ZE
X0xJU1QKK307CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBTaG9y
dF9kZXNjcmlwdGlvbjogQSB1c2VyIG1lc3NhZ2UKKyAqIEBUaXRsZTogV2ViS2l0VXNlck1lc3Nh
Z2UKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYkNvbnRleHQsICNXZWJLaXRXZWJWaWV3LCAjV2Vi
S2l0V2ViRXh0ZW5zaW9uLCAjV2ViS2l0V2ViUGFnZQorICoKKyAqIEEgV2ViS2l0VXNlck1lc3Nh
Z2UgaXMgYSBtZXNzYWdlIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gdGhlIFVJIHByb2Nlc3MKKyAqIGFuZCBXZWIgZXh0ZW5zaW9ucy4gQSBXZWJLaXRVc2Vy
TWVzc2FnZSBhbHdheXMgaGF2ZSBhIG5hbWUsIGFuZCBpdCBjYW4gYWxzbyBpbmNsdWRlIHBhcmFt
ZXRlcnMgYW5kCisgKiBVTklYIGZpbGUgZGVzY3JpcHRvcnMuIE1lc3NhZ2VzIGNhbiBiZSBzZW50
IGZyb20gYSAjV2ViS2l0V2ViQ29udGV4dCB0byBhbGwgI1dlYktpdFdlYkV4dGVuc2lvbjwhLS0g
LS0+cywKKyAqIGZyb20gYSAjV2ViS2l0V2ViRXh0ZW5zaW9uIHRvIGl0cyBjb3JyZXNwb25kaW5n
ICNXZWJLaXRXZWJDb250ZXh0LCBhbmQgZnJvbSBhICNXZWJLaXRXZWJWaWV3IHRvIGl0cworICog
Y29ycmVzcG9uZGluZyAjV2ViS2l0V2ViUGFnZSAoYW5kIHZpY2UgdmVyc2EpLiBPbmUgdG8gb25l
IG1lc3NhZ2VzIGNhbiBiZSByZXBsaWVkIGRpcmVjdGx5IHdpdGgKKyAqIHdlYmtpdF91c2VyX21l
c3NhZ2Vfc2VuZF9yZXBseSgpLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3N0cnVjdCBfV2Vi
S2l0VXNlck1lc3NhZ2VQcml2YXRlIHsKKyAgICBVc2VyTWVzc2FnZSBtZXNzYWdlOworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+IHJlcGx5SGFuZGxlcjsKK307CisK
K1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRVc2VyTWVzc2FnZSwgd2Via2l0X3VzZXJfbWVzc2Fn
ZSwgR19UWVBFX0lOSVRJQUxMWV9VTk9XTkVEKQorCitHX0RFRklORV9RVUFSSyhXZWJLaXRVc2Vy
TWVzc2FnZUVycm9yLCB3ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yKQorCitzdGF0aWMgdm9pZCB3
ZWJraXRVc2VyTWVzc2FnZURpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFVz
ZXJNZXNzYWdlKiBtZXNzYWdlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShvYmplY3QpOworCisgICAg
aWYgKGF1dG8gcmVwbHlIYW5kbGVyID0gc3RkOjpleGNoYW5nZShtZXNzYWdlLT5wcml2LT5yZXBs
eUhhbmRsZXIsIG51bGxwdHIpKQorICAgICAgICByZXBseUhhbmRsZXIoVXNlck1lc3NhZ2UobWVz
c2FnZS0+cHJpdi0+bWVzc2FnZS5uYW1lLCBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9N
RVNTQUdFKSk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfdXNlcl9tZXNzYWdlX3BhcmVu
dF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1l
c3NhZ2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFVzZXJNZXNzYWdlKiBt
ZXNzYWdlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9w
SWQpIHsKKyAgICBjYXNlIFBST1BfTkFNRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZh
bHVlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1BBUkFNRVRFUlM6CisgICAgICAgIGdfdmFsdWVfc2V0X3Zhcmlh
bnQodmFsdWUsIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRkRfTElTVDoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0KG1lc3NhZ2Up
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lc3NhZ2VTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1T
cGVjKQoreworICAgIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlID0gV0VCS0lUX1VTRVJfTUVT
U0FHRShvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfTkFN
RToKKyAgICAgICAgbWVzc2FnZS0+cHJpdi0+bWVzc2FnZS5uYW1lID0gZ192YWx1ZV9nZXRfc3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgbWVzc2FnZS0+cHJpdi0+bWVzc2FnZS50eXBlID0gVXNlck1l
c3NhZ2U6OlR5cGU6Ok1lc3NhZ2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQVJB
TUVURVJTOgorICAgICAgICBtZXNzYWdlLT5wcml2LT5tZXNzYWdlLnBhcmFtZXRlcnMgPSBnX3Zh
bHVlX2dldF92YXJpYW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZE
X0xJU1Q6CisgICAgICAgIG1lc3NhZ2UtPnByaXYtPm1lc3NhZ2UuZmlsZURlc2NyaXB0b3JzID0g
R19VTklYX0ZEX0xJU1QoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF91c2VyX21lc3NhZ2VfY2xhc3NfaW5pdChXZWJLaXRVc2VyTWVzc2FnZUNsYXNzKiBrbGFz
cykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGts
YXNzKTsKKworICAgIGdPYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFVzZXJNZXNzYWdlRGlz
cG9zZTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZXNzYWdl
R2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRVc2Vy
TWVzc2FnZVNldFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0VXNlck1lc3NhZ2U6
bmFtZToKKyAgICAgKgorICAgICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIG1lc3NhZ2UuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9OQU1FLAor
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAgICAgIm5hbWUiLAorICAgICAg
ICAgICAgXygiTmFtZSIpLAorICAgICAgICAgICAgXygiVGhlIHVzZXIgbWVzc2FnZSBuYW1lIiks
CisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxh
Z3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwor
CisgICAgLyoqCisgICAgICogV2ViS2l0VXNlck1lc3NhZ2U6cGFyYW1ldGVyczoKKyAgICAgKgor
ICAgICAqIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB1c2VyIG1lc3NhZ2UgYXMgYSAjR1ZhcmlhbnQg
dGhhdCBpcyBhIHR1cGxlLCBvciAlTlVMTAorICAgICAqIGlmIHRoZSBtZXNzYWdlIGRvZXNuJ3Qg
aW5jbHVkZSBwYXJhbWV0ZXJzLiBOb3RlIHRoYXQgb25seSBjb21wbGV0ZSB0eXBlcyBhcmUKKyAg
ICAgKiBhbGxvd2VkLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjgKKyAgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisg
ICAgICAgIFBST1BfUEFSQU1FVEVSUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX3ZhcmlhbnQoCisg
ICAgICAgICAgICAicGFyYW1ldGVycyIsCisgICAgICAgICAgICBfKCJQYXJhbWV0ZXJzIiksCisg
ICAgICAgICAgICBfKCJUaGUgdXNlciBtZXNzYWdlIHBhcmFtZXRlcnMiKSwKKyAgICAgICAgICAg
IEdfVkFSSUFOVF9UWVBFX1RVUExFLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFVzZXJNZXNzYWdl
OmZkLWxpc3Q6CisgICAgICoKKyAgICAgKiBUaGUgVU5JWCBmaWxlIGRlc2NyaXB0b3JzIG9mIHRo
ZSB1c2VyIG1lc3NhZ2UuIE5vdGUgdGhhdCBmaWxlIGRlc2NyaXB0b3JzIGFyZQorICAgICAqIHN0
b2xlbiBmcm9tIHRoZSAjR1VuaXhGRExpc3Qgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50LCBzbyB0
aGUgbGlzdCB3aWxsIGJlIGVtcHR5CisgICAgICogYWZ0ZXIgdGhlIG1lc3NhZ2UgaGFzIGJlZW4g
c2VudC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQ
Uk9QX0ZEX0xJU1QsCisgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAi
ZmQtbGlzdCIsCisgICAgICAgICAgICBfKCJGaWxlIERlc2NyaXB0b3IgTGlzdCIpLAorICAgICAg
ICAgICAgXygiVGhlIHVzZXIgbWVzc2FnZSBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMiKSwKKyAg
ICAgICAgICAgIEdfVFlQRV9VTklYX0ZEX0xJU1QsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
UGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09O
TFkpKSk7Cit9CisKK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShV
c2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIHJldHVyblZh
bHVlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9N
RVNTQUdFLCBudWxscHRyKSk7CisgICAgcmV0dXJuVmFsdWUtPnByaXYtPm1lc3NhZ2UgPSBXVEZN
b3ZlKG1lc3NhZ2UpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworV2ViS2l0VXNlck1l
c3NhZ2UqIHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJiByZXBseUhhbmRsZXIpCit7Cisg
ICAgV2ViS2l0VXNlck1lc3NhZ2UqIHJldHVyblZhbHVlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBudWxscHRyKSk7CisgICAgcmV0
dXJuVmFsdWUtPnByaXYtPm1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpOworICAgIHJldHVyblZh
bHVlLT5wcml2LT5yZXBseUhhbmRsZXIgPSBXVEZNb3ZlKHJlcGx5SGFuZGxlcik7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCitVc2VyTWVzc2FnZSYgd2Via2l0VXNlck1lc3NhZ2VHZXRN
ZXNzYWdlKFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIHJldHVybiBtZXNzYWdl
LT5wcml2LT5tZXNzYWdlOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3Ogor
ICogQG5hbWU6IHRoZSBtZXNzYWdlIG5hbWUKKyAqIEBwYXJhbWV0ZXJzOiAobnVsbGFibGUpOiB0
aGUgbWVzc2FnZSBwYXJhbWV0ZXJzIGFzIGEgI0dWYXJpYW50IHRoYXQgaXMgYSB0dXBsZSwgb3Ig
JU5VTEwKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdFVzZXJNZXNzYWdlIHdpdGggQG5hbWUu
IElmIEBwYXJhbWV0ZXJzIGlzIG5vdCAlTlVMTCwgaXQgbXVzdCBiZSBhIHR1cGxlCisgKiBjb250
YWluaW5nIG9ubHkgY29tcGxldGUgdHlwZXMuCisgKgorICogUmV0dXJuczogdGhlIG5ld2x5IGNy
ZWF0ZWQgI1dlYktpdFVzZXJNZXNzYWdlIG9iamVjdC4KKyAqCisgKiBTaW5jZTogMi4yOAorICov
CitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoY29uc3QgY2hhciog
bmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMpCit7CisgICAgcmV0dXJuIHdlYmtpdF91c2VyX21l
c3NhZ2VfbmV3X3dpdGhfZmRfbGlzdChuYW1lLCBwYXJhbWV0ZXJzLCBudWxscHRyKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3Q6CisgKiBAbmFtZTog
dGhlIG1lc3NhZ2UgbmFtZQorICogQHBhcmFtZXRlcnM6IChudWxsYWJsZSk6IHRoZSBtZXNzYWdl
IHBhcmFtZXRlcnMgYXMgYSAjR1ZhcmlhbnQgdGhhdCBpcyBhIHR1cGxlCisgKiBAZmRfbGlzdDog
KG51bGxhYmxlKTogdGhlIG1lc3NhZ2UgZmlsZSBkZXNjcmlwdG9ycworICoKKyAqIENyZWF0ZSBh
IG5ldyAjV2ViS2l0VXNlck1lc3NhZ2UgaW5jbHVkaW5nIGFsc28gYSBsaXN0IG9mIFVOSVggZmls
ZSBkZXNjcmlwdG9ycyB0byBiZSBzZW50LgorICogVGhlIGZpbGUgZGVzY3JpcHRvcnMgYXJlIHN0
b2xlbiBmcm9tIHRoZSAjR1VuaXhGRExpc3Qgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50LCBzbyB0
aGUgbGlzdAorICogd2lsbCBiZSBlbXB0eSBhZnRlciB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50
LgorICoKKyAqIFJldHVybnM6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRVc2VyTWVzc2FnZSBv
YmplY3QuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtp
dF91c2VyX21lc3NhZ2VfbmV3X3dpdGhfZmRfbGlzdChjb25zdCBjaGFyKiBuYW1lLCBHVmFyaWFu
dCogcGFyYW1ldGVycywgR1VuaXhGRExpc3QqIGZkTGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChuYW1lLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCghcGFyYW1l
dGVycyB8fCBnX3ZhcmlhbnRfaXNfb2ZfdHlwZShwYXJhbWV0ZXJzLCBHX1ZBUklBTlRfVFlQRV9U
VVBMRSksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFmZExpc3QgfHwgR19J
U19VTklYX0ZEX0xJU1QoZmRMaXN0KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gV0VCS0lUX1VT
RVJfTUVTU0FHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCAibmFtZSIs
IG5hbWUsICJwYXJhbWV0ZXJzIiwgcGFyYW1ldGVycywgImZkLWxpc3QiLCBmZExpc3QsIG51bGxw
dHIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lOgorICogQG1l
c3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKgorICogR2V0IHRoZSBAbWVzc2FnZSBuYW1l
CisgKgorICogUmV0dXJuczogdGhlIG1lc3NhZ2UgbmFtZQorICoKKyAqIFNpbmNlOiAyLjI4Cisg
Ki8KK2NvbnN0IGNoYXIqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUoV2ViS2l0VXNlck1l
c3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VT
RVJfTUVTU0FHRShtZXNzYWdlKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gbWVzc2FnZS0+cHJp
di0+bWVzc2FnZS5uYW1lLmRhdGEoKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdl
X2dldF9wYXJhbWV0ZXJzOgorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKgor
ICogR2V0IHRoZSBAbWVzc2FnZSBwYXJhbWV0ZXJzCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiB0aGUgbWVzc2FnZSBwYXJhbWV0ZXJzCisgKgorICogU2luY2U6IDIuMjgKKyAqLwor
R1ZhcmlhbnQqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMoV2ViS2l0VXNlck1l
c3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VT
RVJfTUVTU0FHRShtZXNzYWdlKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gbWVzc2FnZS0+cHJp
di0+bWVzc2FnZS5wYXJhbWV0ZXJzLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X2ZkX2xpc3Q6CisgKiBAbWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAq
CisgKiBHZXQgdGhlIEBtZXNzYWdlIGxpc3Qgb2YgZmlsZSBkZXNjcml0cG9yCisgKgorICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgbWVzc2FnZSBsaXN0IG9mIGZpbGUgZGVzY3JpcHRv
cnMKKyAqCisgKiBTaW5jZTogMi4yOAorICovCitHVW5peEZETGlzdCogd2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfZmRfbGlzdChXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpLCBudWxscHRy
KTsKKworICAgIHJldHVybiBtZXNzYWdlLT5wcml2LT5tZXNzYWdlLmZpbGVEZXNjcmlwdG9ycy5n
ZXQoKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHk6CisgKiBA
bWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEByZXBseTogYSAjV2ViS2l0VXNlck1l
c3NhZ2UgdG8gc2VuZCBhcyByZXBseQorICoKKyAqIFNlbmQgYSByZXBseSB0byBAbWVzc2FnZS4g
SWYgQHJlcGx5IGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICogWW91IGNhbiBvbmx5IHNl
bmQgYSByZXBseSB0byBhICNXZWJLaXRVc2VyTWVzc2FnZSB0aGF0IGhhcyBiZWVuCisgKiByZWNl
aXZlZC4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit2b2lkIHdlYmtpdF91c2VyX21lc3NhZ2Vf
c2VuZF9yZXBseShXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgV2ViS2l0VXNlck1lc3NhZ2Uq
IHJlcGx5KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRSht
ZXNzYWdlKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJl
cGx5KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChtZXNzYWdlLT5wcml2LT5yZXBseUhhbmRsZXIp
OworCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gYWRvcHRlZFJlcGx5ID0gcmVwbHk7
CisgICAgaWYgKGF1dG8gcmVwbHlIYW5kbGVyID0gc3RkOjpleGNoYW5nZShtZXNzYWdlLT5wcml2
LT5yZXBseUhhbmRsZXIsIG51bGxwdHIpKQorICAgICAgICByZXBseUhhbmRsZXIocmVwbHkgPyBy
ZXBseS0+cHJpdi0+bWVzc2FnZSA6IFVzZXJNZXNzYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmNlYWEwMWRlODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVz
c2FnZVByaXZhdGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKKyNp
bmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5oIgorCitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0
VXNlck1lc3NhZ2VDcmVhdGUoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKTsKK1dlYktpdFVzZXJNZXNz
YWdlKiB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXZWJLaXQ6OlVzZXJNZXNzYWdlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKT4mJik7CitXZWJLaXQ6OlVz
ZXJNZXNzYWdlJiB3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UoV2ViS2l0VXNlck1lc3NhZ2Uq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMzOWMxZmQwMjlhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKQEAgLTAsMCArMSwx
MTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlLmgiCisKKyNpbmNsdWRl
ICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPGdp
by9naW8uaD4KKyNpbmNsdWRlIDxnaW8vZ3VuaXhmZGxpc3QuaD4KKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFVzZXJNZXNzYWdl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIuZW5j
b2RlRW51bSh0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBUeXBlOjpOdWxsKQorICAgICAgICByZXR1
cm47CisKKyAgICBlbmNvZGVyIDw8IG5hbWU7CisgICAgaWYgKHR5cGUgPT0gVHlwZTo6RXJyb3Ip
IHsKKyAgICAgICAgZW5jb2RlciA8PCBlcnJvckNvZGU7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAocGFyYW1ldGVycykgeworICAgICAgICBHUmVmUHRyPEdEQnVzTWVzc2FnZT4g
bWVzc2FnZSA9IGFkb3B0R1JlZihnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2NhbGwobnVsbHB0
ciwgIi8iLCBudWxscHRyLCAiXyIpKTsKKyAgICAgICAgZ19kYnVzX21lc3NhZ2Vfc2V0X2JvZHko
bWVzc2FnZS5nZXQoKSwgcGFyYW1ldGVycy5nZXQoKSk7CisgICAgICAgIGdzaXplIGJ5dGVzTGVu
Z3RoOworICAgICAgICBHVW5pcXVlUHRyPGd1Y2hhcj4gYnl0ZXMoZ19kYnVzX21lc3NhZ2VfdG9f
YmxvYihtZXNzYWdlLmdldCgpLCAmYnl0ZXNMZW5ndGgsIEdfREJVU19DQVBBQklMSVRZX0ZMQUdT
X05PTkUsIG51bGxwdHIpKTsKKyAgICAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2Uo
Ynl0ZXMuZ2V0KCksIGJ5dGVzTGVuZ3RoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZW5jb2RlciA8
PCBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKKworICAgIFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+IGF0
dGFjaG1lbnRzOworICAgIGlmIChmaWxlRGVzY3JpcHRvcnMpIHsKKyAgICAgICAgaW50IGZkc0xl
bmd0aDsKKyAgICAgICAgR1VuaXF1ZVB0cjxnaW50PiBmZHMoZ191bml4X2ZkX2xpc3Rfc3RlYWxf
ZmRzKGZpbGVEZXNjcmlwdG9ycy5nZXQoKSwgJmZkc0xlbmd0aCkpOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGZkc0xlbmd0aDsgKytpKQorICAgICAgICAgICAgYXR0YWNobWVudHMuYXBw
ZW5kKElQQzo6QXR0YWNobWVudChmZHMuZ2V0KClbaV0pKTsKKyAgICB9CisgICAgZW5jb2RlciA8
PCBhdHRhY2htZW50czsKK30KKworT3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFVzZXJNZXNzYWdlIHJlc3VsdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQudHlwZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAocmVzdWx0LnR5cGUgPT0gVHlwZTo6TnVsbCkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5h
bWUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKHJlc3VsdC50eXBl
ID09IFR5cGU6OkVycm9yKSB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBlcnJvckNvZGU7
CisgICAgICAgIGRlY29kZXIgPj4gZXJyb3JDb2RlOworICAgICAgICBpZiAoIWVycm9yQ29kZSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmVzdWx0LmVycm9y
Q29kZSA9IGVycm9yQ29kZS52YWx1ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGRhdGEuc2l6ZSgp
KSB7CisgICAgICAgIEdSZWZQdHI8R0RCdXNNZXNzYWdlPiBtZXNzYWdlID0gYWRvcHRHUmVmKGdf
ZGJ1c19tZXNzYWdlX25ld19mcm9tX2Jsb2IoY29uc3RfY2FzdDxndWNoYXIqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpLCBHX0RCVVNfQ0FQQUJJTElUWV9GTEFHU19OT05FLCBudWxscHRyKSk7
CisgICAgICAgIGlmICghbWVzc2FnZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJlc3VsdC5wYXJhbWV0ZXJzID0gZ19kYnVzX21lc3NhZ2VfZ2V0X2JvZHkobWVz
c2FnZS5nZXQoKSk7CisgICAgfQorCisgICAgT3B0aW9uYWw8VmVjdG9yPElQQzo6QXR0YWNobWVu
dD4+IGF0dGFjaG1lbnRzOworICAgIGRlY29kZXIgPj4gYXR0YWNobWVudHM7CisgICAgaWYgKCFh
dHRhY2htZW50cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWF0dGFj
aG1lbnRzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVzdWx0LmZpbGVEZXNjcmlwdG9ycyA9IGFk
b3B0R1JlZihnX3VuaXhfZmRfbGlzdF9uZXcoKSk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNo
bWVudCA6ICphdHRhY2htZW50cykgeworICAgICAgICAgICAgaWYgKGdfdW5peF9mZF9saXN0X2Fw
cGVuZChyZXN1bHQuZmlsZURlc2NyaXB0b3JzLmdldCgpLCBhdHRhY2htZW50LnJlbGVhc2VGaWxl
RGVzY3JpcHRvcigpLCBudWxscHRyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYmRkNjRkNjgwMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IF9H
VW5peEZETGlzdCBHVW5peEZETGlzdDsKK3R5cGVkZWYgc3RydWN0IF9HVmFyaWFudCBHVmFyaWFu
dDsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBVc2VyTWVzc2FnZSB7CisgICAgZW51bSBj
bGFzcyBUeXBlIHsgTnVsbCwgTWVzc2FnZSwgRXJyb3IgfTsKKworICAgIFVzZXJNZXNzYWdlKCkK
KyAgICAgICAgOiB0eXBlKFR5cGU6Ok51bGwpCisgICAgeworICAgIH0KKworICAgIFVzZXJNZXNz
YWdlKGNvbnN0IENTdHJpbmcmIG5hbWUsIHVpbnQzMl90IGVycm9yQ29kZSkKKyAgICAgICAgOiB0
eXBlKFR5cGU6OkVycm9yKQorICAgICAgICAsIG5hbWUobmFtZSkKKyAgICAgICAgLCBlcnJvckNv
ZGUoZXJyb3JDb2RlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IGRlY29kZShJUEM6
OkRlY29kZXImKTsKKworICAgIFR5cGUgdHlwZSB7IFR5cGU6Ok51bGwgfTsKKyAgICBDU3RyaW5n
IG5hbWU7CisgICAgR1JlZlB0cjxHVmFyaWFudD4gcGFyYW1ldGVyczsKKyAgICBHUmVmUHRyPEdV
bml4RkRMaXN0PiBmaWxlRGVzY3JpcHRvcnM7CisgICAgdWludDMyX3QgZXJyb3JDb2RlIHsgMCB9
OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggMWU0ZTQyY2RkYmUuLmQ4ZmI4ZGE5M2Zm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTY3LDYgKzY3LDcgQEAgU2hhcmVkL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0
SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVx
dWVzdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3Bw
IEBuby11bmlmeQorU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlLmNwcCBAbm8tdW5p
ZnkKIAogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcAogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVy
LmNwcApAQCAtODMsNiArODQsNyBAQCBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBh
dGguY3BwCiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKIFNoYXJlZC9n
bGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCitTaGFyZWQvZ2xpYi9Vc2VyTWVzc2Fn
ZS5jcHAKIFNoYXJlZC9nbGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIuY3BwCiAKIFNoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC00MDQsNiArNDA2LDggQEAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKIAogV2ViUHJvY2Vz
cy9XZWJQYWdlL2F0ay9XZWJLaXRXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKIAorV2Vi
UHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisKIFdlYlByb2Nlc3MvV2ViUGFn
ZS9nc3RyZWFtZXIvV2ViUGFnZUdTdHJlYW1lci5jcHAKIAogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggYTIy
ZTRmMTA5OTQuLmRjYzk0OGY5YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNX
UEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTY4LDYgKzY4LDcg
QEAgU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVuaWZ5CiBT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQv
QVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0VVJJUmVzcG9uc2UuY3BwIEBuby11bmlmeQorU2hhcmVkL0FQSS9nbGliL1dlYktpdFVz
ZXJNZXNzYWdlLmNwcCBAbm8tdW5pZnkKIAogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2lt
cGxlVmlld3BvcnRDb250cm9sbGVyLmNwcApAQCAtODIsNiArODMsNyBAQCBTaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKIFNoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoR0xpYi5jcHAKK1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAogU2hhcmVkL2dsaWIv
V2ViQ29udGV4dE1lbnVJdGVtR2xpYi5jcHAKIAogU2hhcmVkL2xpYndwZS9OYXRpdmVXZWJLZXli
b2FyZEV2ZW50TGliV1BFLmNwcApAQCAtMjQ3LDYgKzI0OSw4IEBAIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCiAKIFdlYlByb2Nlc3MvV2Vi
UGFnZS9hdGsvV2ViS2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCiAKK1dlYlByb2Nl
c3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorCiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0
cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3BwCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUv
QWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNDA1
YjFjNWFkZTkuLjM2ZmJlZWFkZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNDcsMTAgKzQ3LDEyIEBACiAj
aW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQ
cml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5z
cGVjdG9yLmg+CkBAIC0xMjMsNiArMTI1LDcgQEAgZW51bSB7CiAgICAgSU5JVElBTElaRV9XRUJf
RVhURU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKICAg
ICBBVVRPTUFUSU9OX1NUQVJURUQsCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAogCiAgICAg
TEFTVF9TSUdOQUwKIH07CkBAIC0zNzIsNiArMzc1LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBwcml2LT5wcm9jZXNz
UG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAgICAgcHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0RGF0YVN0b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAgIHByaXYt
PnByb2Nlc3NQb29sLT5zZXRVc2VyTWVzc2FnZUhhbmRsZXIoW3dlYkNvbnRleHQgPSBHUmVmUHRy
PFdlYktpdFdlYkNvbnRleHQ+KHdlYkNvbnRleHQpXShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsKKyAgICAgICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVmLgorICAgICAgICBHUmVmUHRyPFdl
YktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZ2Jv
b2xlYW4gcmV0dXJuVmFsdWU7CisgICAgICAgIGdfc2lnbmFsX2VtaXQod2ViQ29udGV4dC5nZXQo
KSwgc2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2FnZS5nZXQoKSwg
JnJldHVyblZhbHVlKTsKKyAgICB9KTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFk
ZFByb2Nlc3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nl
c3NQb29sKTsKIApAQCAtNTc0LDYgKzU4MywzMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwog
ICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKICAgICAgICAgICAg
IEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNT
SU9OKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6OnVzZXItbWVzc2FnZS1y
ZWNlaXZlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgICAgICog
QG1lc3NhZ2U6IHRoZSAjV2ViS2l0VXNlck1lc3NhZ2UgcmVjZWl2ZWQKKyAgICAgKgorICAgICAq
IFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhICNXZWJLaXRVc2VyTWVzc2FnZSBpcyByZWNl
aXZlZCBmcm9tIGEKKyAgICAgKiAjV2ViS2l0V2ViRXh0ZW5zaW9uLiBZb3UgY2FuIHJlcGx5IHRv
IHRoZSBtZXNzYWdlIHVzaW5nCisgICAgICogd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5
KCkuCisgICAgICoKKyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdlIGFzeW5j
aHJvbm91c2x5IGJ5IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVzc2FnZSBh
bmQgcmV0dXJuaW5nICVUUlVFLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgaWYgdGhl
IG1lc3NhZ2Ugd2FzIGhhbmRsZWQsIG9yICVGQUxTRSBvdGhlcndpc2UuCisgICAgICoKKyAgICAg
KiBTaW5jZTogMi4yOAorICAgICAqLworICAgIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVE
XSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsCisgICAg
ICAgIEdfVFlQRV9GUk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViQ29udGV4dENsYXNzLCB1
c2VyX21lc3NhZ2VfcmVjZWl2ZWQpLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVl
X2hhbmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAor
ICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRVNT
QUdFKTsKIH0KIAogc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KGdwb2lu
dGVyKQpAQCAtMTY4MCw2ICsxNzE1LDI3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2luaXRp
YWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zKFdlYktpdFdlYkNvbnRleHQqIGNvCiAgICAg
Y29udGV4dC0+cHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXItPnNldE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKFdURk1vdmUobWFwKSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3Nl
bmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9uczoKKyAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdl
YkNvbnRleHQKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICoKKyAqIFNlbmQg
QG1lc3NhZ2UgdG8gYWxsICNXZWJLaXRXZWJFeHRlbnNpb248IS0tIC0tPnMgYXNzb2NpYXRlZCB0
byBAY29udGV4dC4KKyAqIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1bWVkLgor
ICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVz
c2FnZV90b19hbGxfZXh0ZW5zaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRV
c2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfQ09OVEVYVChjb250ZXh0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNF
Ul9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBj
YXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFk
b3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBjb250ZXh0
LT5wcml2LT5wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpCisgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24od2Via2l0VXNl
ck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwgMCk7Cit9CisKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dEluaXRpYWxpemVOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0KQogewogICAgIGdfc2lnbmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJTklUSUFMSVpF
X05PVElGSUNBVElPTl9QRVJNSVNTSU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAxMDdmNGRkMDQwNC4uYWY4
YWZiNDUwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCkBAIC01NiwxMiArNTYsMTQgQEAKICNpbmNsdWRlICJXZWJLaXRVSUNs
aWVudC5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRl
Lmg+CkBAIC0xNjMsNiArMTY1LDggQEAgZW51bSB7CiAgICAgU0hPV19PUFRJT05fTUVOVSwKICNl
bmRpZgogCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAorCiAgICAgTEFTVF9TSUdOQUwKIH07
CiAKQEAgLTQ0NCw2ICs0NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2ViVmlld0Rp
ZENoYW5nZVBhZ2VJRChtX3dlYlZpZXcpOwogICAgIH0KIAorICAgIHZvaWQgZGlkUmVjZWl2ZVVz
ZXJNZXNzYWdlKFdLV1BFOjpWaWV3JiwgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgd2Via2l0V2ViVmlld0RpZFJlY2VpdmVVc2VyTWVzc2FnZShtX3dl
YlZpZXcsIFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICB9CisKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogI2VuZGlmCkBAIC0yMDgx
LDYgKzIwOTAsMzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgIEdES19UWVBFX0VWRU5UIHwg
R19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUsCiAgICAgICAgIEdES19UWVBFX1JFQ1RBTkdMRSB8
IEdfU0lHTkFMX1RZUEVfU1RBVElDX1NDT1BFKTsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojp1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQ6Cisg
ICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBp
cyBlbWl0dGVkCisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2ViS2l0VXNlck1lc3NhZ2UgcmVjZWl2
ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhICNXZWJLaXRV
c2VyTWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZQorICAgICAqICNXZWJLaXRXZWJQYWdlIGNv
cnJlc3BvbmRpbmcgdG8gQHdlYl92aWV3LiBZb3UgY2FuIHJlcGx5IHRvIHRoZSBtZXNzYWdlCisg
ICAgICogdXNpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkuCisgICAgICoKKyAg
ICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdlIGFzeW5jaHJvbm91c2x5IGJ5IGNh
bGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVzc2FnZSBhbmQgcmV0dXJuaW5nICVU
UlVFLiBJZiB0aGUgbGFzdCByZWZlcmVuY2Ugb2YgQG1lc3NhZ2UgaXMgcmVtb3ZlZAorICAgICAq
IGFuZCB0aGUgbWVzc2FnZSBoYXMgYmVlbiByZXBsaWVkLCB0aGUgb3BlcmF0aW9uIGluIHRoZSAj
V2ViS2l0V2ViUGFnZSB3aWxsCisgICAgICogZmluaXNoIHdpdGggZXJyb3IgJVdFQktJVF9VU0VS
X01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJV
RSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgc2lnbmFsc1tVU0VSX01FU1NBR0Vf
UkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAidXNlci1tZXNzYWdlLXJlY2VpdmVk
IiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgR19T
SUdOQUxfUlVOX0xBU1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xh
c3MsIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCksCisgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9y
X3RydWVfaGFuZGxlZCwgbnVsbHB0ciwKKyAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX2dlbmVy
aWMsCisgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICBXRUJLSVRfVFlQRV9VU0VS
X01FU1NBR0UpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGlj
YXRpb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0yNTg2LDYgKzI2MjMsMTQg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3RGlkQ2hhbmdlUGFnZUlEKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAicGFnZS1pZCIpOwog
fQogCit2b2lkIHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFNpbmsgdGhl
IGZsb2F0aW5nIHJlZi4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2Fn
ZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25h
bF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNlck1l
c3NhZ2UuZ2V0KCksICZyZXR1cm5WYWx1ZSk7Cit9CisKICNpZiBQTEFURk9STShXUEUpCiAvKioK
ICAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2VuZDoKQEAgLTQyMjIsMyArNDI2Nyw3MCBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIHVucwogICAgICAgICB3ZWJWaWV3LT5wcml2LT5mcmFtZURpc3Bs
YXllZENhbGxiYWNrcy5yZW1vdmVGaXJzdE1hdGNoaW5nKG1hdGNoRnVuY3Rpb24pOwogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKFdQRSkKKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNz
YWdlX3RvX3BhZ2U6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBtZXNzYWdl
OiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNH
Q2FuY2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3lu
Yyk6IChudWxsYWJsZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBy
ZXF1ZXN0IGlzIHNhdGlzZmllZCBvciAlTlVMTAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0
aGUgZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2Fn
ZSB0byB0aGUgI1dlYktpdFdlYlBhZ2UgY29ycmVzcG9uZGluZyB0byBAd2ViX3ZpZXcuIElmIEBt
ZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBl
eHBlY3QgYW55IHJlcGx5LCBvciB5b3Ugc2ltcGx5IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2Fu
IHBhc3MgJU5VTEwgYXMgQGNhbGxiYWNrLgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlz
aGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKCkgdG8gZ2V0IHRoZSBtZXNz
YWdlIHJlcGx5LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3
X3NlbmRfbWVzc2FnZV90b19wYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJN
ZXNzYWdlKiBtZXNzYWdlLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNh
bGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJl
ZmVyZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNl
ck1lc3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBhdXRvJiBwYWdlID0gZ2V0
UGFnZSh3ZWJWaWV3KTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIHBhZ2UuZW5zdXJl
UnVubmluZ1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kTWVzc2FnZVRvV2Vi
RXh0ZW5zaW9uKHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNzYWdlKSksIHBhZ2Uud2Vi
UGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNl
ck1lc3NhZ2UmJik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShV
c2VyTWVzc2FnZSYmIHJlcGx5TWVzc2FnZSkgeworICAgICAgICBzd2l0Y2ggKHJlcGx5TWVzc2Fn
ZS50eXBlKSB7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5cGU6Ok51bGw6CisgICAgICAg
ICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lP
X0VSUk9SX0NBTkNFTExFRCwgXygiT3BlcmF0aW9uIHdhcyBjYW5jZWxsZWQiKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6TWVzc2FnZToKKyAg
ICAgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBnX29iamVjdF9yZWZf
c2luayh3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKHJlcGx5TWVzc2FnZSkpKSwgc3Rh
dGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfb2JqZWN0X3VucmVmKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6RXJyb3I6CisgICAgICAgICAg
ICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBXRUJLSVRfVVNFUl9NRVNTQUdF
X0VSUk9SLCByZXBseU1lc3NhZ2UuZXJyb3JDb2RlLCBfKCJNZXNzYWdlICVzIHdhcyBub3QgaGFu
ZGxlZCIpLCByZXBseU1lc3NhZ2UubmFtZS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIHBhZ2UuZW5zdXJlUnVubmluZ1Byb2Nlc3MoKS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25X
aXRoUmVwbHkod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwKKyAgICAgICAg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2Uud2ViUGFnZUlEKCkudG9VSW50NjQoKSk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2Zpbmlz
aDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJlc3VsdDogYSAjR0FzeW5j
UmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8g
aWdub3IKKyAqCisgKiBGaW5pc2ggYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdp
dGggd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKCkuCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBseSBv
ciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktp
dFVzZXJNZXNzYWdlKiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNo
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBl
cnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldyksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxp
ZChyZXN1bHQsIHdlYlZpZXcpLCBudWxscHRyKTsKKworICAgIHJldHVybiBXRUJLSVRfVVNFUl9N
RVNTQUdFKGdfdGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDhjNDUwNTVjZTc4Li4zMzI2NDE0MjE5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RS
ZXN1bHREYXRhLmgiCkBAIC0xMDEsMyArMTAyLDQgQEAgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1
dGhlbnRpY2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikK
IGdib29sZWFuIHdlYmtpdFdlYlZpZXdTY3JpcHREaWFsb2coV2ViS2l0V2ViVmlldyosIFdlYktp
dFNjcmlwdERpYWxvZyopOwogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld0RpZENoYW5nZVBhZ2VJRChXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdE
aWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6VXNlck1lc3NhZ2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lc3Nh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lc3NhZ2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTE1ZWQ3NDNjMjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZXNzYWdlLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5l
ZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9O
X0hfSU5TSURFX18pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0VXNlck1lc3NhZ2VfaAor
I2RlZmluZSBXZWJLaXRVc2VyTWVzc2FnZV9oCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UgICAgICAgICAgICAod2Via2l0X3VzZXJfbWVzc2Fn
ZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVT
U0FHRSwgV2ViS2l0VXNlck1lc3NhZ2UpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRVNTQUdF
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1VTRVJfTUVTU0FHRSkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FU1NBR0VfQ0xBU1Moa2xh
c3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNF
Ul9NRVNTQUdFLCBXZWJLaXRVc2VyTWVzc2FnZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VT
RVJfTUVTU0FHRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdF
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2VDbGFzcykpCisKKyNkZWZpbmUg
V0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUiB3ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJr
ICgpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgV2ViS2l0VXNl
ck1lc3NhZ2U7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFzcyAgIFdlYktp
dFVzZXJNZXNzYWdlQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VQcml2
YXRlIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZTsKKworLyoqCisgKiBXZWJLaXRVc2VyTWVzc2Fn
ZUVycm9yOgorICogQFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0U6IFRoZSBt
ZXNzYWdlIHdhcyBub3QgaGFuZGxlZCBieSB0aGUgcmVjZWl2ZXIuCisgKgorICogRW51bSB2YWx1
ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhhcHBlbmluZyB3aGVuIHNlbmRpbmcgdXNlciBtZXNz
YWdlcy4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJ
VF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UKK30gV2ViS2l0VXNlck1lc3NhZ2VFcnJv
cjsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZSB7CisgICAgR0luaXRpYWxseVVub3duZWQg
cGFyZW50OworCisgICAgV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlICpwcml2OworfTsKKworc3Ry
dWN0IF9XZWJLaXRVc2VyTWVzc2FnZUNsYXNzIHsKKyAgICBHSW5pdGlhbGx5VW5vd25lZENsYXNz
IHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQp
OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSAg
ICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBHUXVhcmsKK3dlYmtpdF91c2VyX21lc3NhZ2Vf
ZXJyb3JfcXVhcmsgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2Ug
Kgord2Via2l0X3VzZXJfbWVzc2FnZV9uZXcgICAgICAgICAgICAgIChjb25zdCBjaGFyICAgICAg
ICAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQg
ICAgICAgICAgKnBhcmFtZXRlcnMpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoK
K3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3X3dpdGhfZmRfbGlzdCAoY29uc3QgY2hhciAgICAgICAg
Km5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAg
ICAgICAgICpwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVW5peEZETGlzdCAgICAgICAqZmRfbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgY2hhciAq
Cit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lICAgICAgICAgKFdlYktpdFVzZXJNZXNzYWdl
ICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBHVmFyaWFudCAqCit3ZWJraXRfdXNlcl9tZXNzYWdl
X2dldF9wYXJhbWV0ZXJzICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lU
X0FQSSBHVW5peEZETGlzdCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0ICAgICAg
KFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
dXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkgICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2Fn
ZSAqcmVwbHkpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggOTVjZTVhNWY0ZjAu
LjRkYTljZTdkOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0TmV0d29ya1Byb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNl
Y3VyaXR5TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC0x
NDMsMTcgKzE0NCwxOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHQgewogc3RydWN0IF9XZWJL
aXRXZWJDb250ZXh0Q2xhc3MgewogICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7CiAKLSAgICB2b2lk
ICgqIGRvd25sb2FkX3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4
dCAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdERvd25sb2FkICAgICAgICAgICpkb3dubG9hZCk7Ci0gICAgdm9p
ZCAoKiBpbml0aWFsaXplX3dlYl9leHRlbnNpb25zKSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRl
eHQgICAgICAgICpjb250ZXh0KTsKLSAgICB2b2lkICgqIGluaXRpYWxpemVfbm90aWZpY2F0aW9u
X3Blcm1pc3Npb25zKSAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQpOwotICAgIHZv
aWQgKCogYXV0b21hdGlvbl9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250
ZXh0ICAgICAgICAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIHZv
aWQgICAgICgqIGRvd25sb2FkX3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
Q29udGV4dCAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAgICAqZG93bmxvYWQp
OworICAgIHZvaWQgICAgICgqIGluaXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAo
V2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQpOworICAgIHZvaWQgICAgICgqIGluaXRp
YWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zKSAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAg
KmNvbnRleHQpOworICAgIHZvaWQgICAgICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiAqc2Vzc2lvbik7CisgICAgZ2Jvb2xlYW4gKCogdXNlcl9tZXNzYWdlX3JlY2VpdmVk
KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVz
ZXJNZXNzYWdlICAgICAgICptZXNzYWdlKTsKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpAQCAtMzE4LDYgKzMyMCwxMCBA
QCB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
c3QgICAgICAgICAgICAgICAgICAgICAgICAgKmFsbG93ZWRfb3JpZ2lucywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpc3QgICAgICAgICAg
ICAgICAgICAgICAgICAgKmRpc2FsbG93ZWRfb3JpZ2lucyk7CiAKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyAgIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAg
ICAgICAgKm1lc3NhZ2UpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggOGMyMTlhM2IwMDgu
LjRmZjY5NmI2MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgorI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRl
eHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KQEAgLTI2OSw5ICsyNzAsMTAgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0T3B0aW9uTWVudSAgICAgICAgICAgICptZW51KTsKICAgICB2
b2lkICAgICAgICgqIHdlYl9wcm9jZXNzX3Rlcm1pbmF0ZWQpICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29u
KTsKKyAgICBnYm9vbGVhbiAgICgqIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCkgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICAgKm1l
c3NhZ2UpOwogCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7Ci0gICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCkBA
IC01NTIsNiArNTU0LDE4IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Jlc3Rv
cmVfc2Vzc2lvbl9zdGF0ZSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlICpzdGF0ZSk7CiAKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2Fn
ZSAgICAgICAgICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2VsbGFibGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QXN5bmNSZWFkeUNhbGxiYWNrICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAg
ICAgIHVzZXJfZGF0YSk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0
X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaCAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHRXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKIEdfRU5EX0RFQ0xTCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNTY2YjhjNmM2NTcuLjU4
NTZjYzQ0NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTcwLDYgKzcw
LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAog
d2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3Byb2Nlc3NfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNh
dGlvbl9wZXJtaXNzaW9ucword2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxf
ZXh0ZW5zaW9ucwogCiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdENhbGxiYWNrCkBAIC0yNzcsNiArMjc4LDggQEAgd2Via2l0X3dlYl92aWV3X2dldF9lZGl0
b3Jfc3RhdGUKIHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92
aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291
cmNlCit3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKK3dlYmtpdF93ZWJfdmll
d19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTE1MzgsNiArMTU0MSw4IEBA
IFdlYktpdFdlYkV4dGVuc2lvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9u
CiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplV2l0aFVzZXJEYXRhRnVuY3Rpb24KIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3Nh
Z2VfdG9fY29udGV4dAord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHRfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViRXh0ZW5zaW9uQ2xh
c3MKQEAgLTE1NjIsNiArMTU2Nyw4IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQKIHdlYmtpdF93
ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUKIHdlYmtpdF93
ZWJfcGFnZV9nZXRfZWRpdG9yCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcK
K3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2gKIAogPFNVQlNFQ1RJ
T04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdlQ2xhc3MKQEAgLTE3MzgsMyArMTc0NSwzMiBAQCB3
ZWJraXRfcHJpbnRfY3VzdG9tX3dpZGdldF9nZXRfdHlwZQogPEZJTEU+V2ViS2l0VVJJVXRpbGl0
aWVzPC9GSUxFPgogd2Via2l0X3VyaV9mb3JfZGlzcGxheQogPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KKzxGSUxFPldlYktpdFVzZXJNZXNzYWdlPC9GSUxFPgorV2ViS2l0VXNlck1lc3NhZ2UKK3dl
YmtpdF91c2VyX21lc3NhZ2VfbmV3Cit3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xp
c3QKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X3BhcmFtZXRlcnMKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QKK3dlYmtpdF91c2Vy
X21lc3NhZ2Vfc2VuZF9yZXBseQorCis8U1VCU0VDVElPTiBXZWJLaXRVc2VyTWVzc2FnZUVycm9y
PgorV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUgorV2ViS2l0VXNlck1lc3NhZ2VFcnJvcgord2Vi
a2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFyaworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dl
YktpdFVzZXJNZXNzYWdlQ2xhc3MKK1dFQktJVF9UWVBFX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VT
RVJfTUVTU0FHRQorV0VCS0lUX0lTX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRV9D
TEFTUworV0VCS0lUX0lTX1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lUX1VTRVJfTUVTU0FHRV9H
RVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0
ZQord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCmluZGV4IGM0NTMxMWRkZmJmLi41ZGFhYjA4NmU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApA
QCAtNjMsNiArNjMsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGlj
YXRpb25JbmZvLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRHZW9sb2Nh
dGlvbk1hbmFnZXIueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVzZXJN
ZXNzYWdlLnhtbCIvPgogICA8L2NoYXB0ZXI+CiAKICAgPGNoYXB0ZXI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGYzZWRjY2UxZWQ4Li4xNmVmN2ViNmQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTc5LDYg
Kzc5LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRW
ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKaW5kZXggMDU4OWJiMTM4NWIuLmIxM2RhNmQw
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGll
bnQuaApAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVzZXJN
ZXNzYWdlLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisKIHR5cGVkZWYg
c3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNHbG9iYWxDb250ZXh0UmVmOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ2LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVEb3dubG9hZFJlcXVlc3QoV0tXUEU6OlZpZXcmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TG9hZChXS1dQRTo6VmlldyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VQYWdlSUQoV0tXUEU6OlZpZXcmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZXNzYWdlKFdLV1BFOjpWaWV3JiwgV2ViS2l0OjpVc2Vy
TWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3NhZ2UmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpVc2VyTWVz
c2FnZSgpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGM4YjRlNzlkMTc2
Li4yMTcxMDliMzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQyNSw0ICs0MjUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaWRDaGFuZ2VXZWJQYWdlSUQoKSBjb25zdAogICAgIG1fdmlldy5kaWRDaGFuZ2VQYWdl
SUQoKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNl
ck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fdmlldy5kaWRSZWNlaXZlVXNlck1lc3Nh
Z2UoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuaAppbmRleCA4N2I3YmI5MjIzNy4uZmIzOGIxOTZmYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAg
LTQyLDYgKzQyLDcgQEAgZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhf
dDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsK
K3N0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIApA
QCAtNjAsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKCk7CiAj
ZW5kaWYKIAorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik7CisKIHByaXZhdGU6CiAgICAg
Ly8gUGFnZUNsaWVudAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVh
dGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggMGI5ZmFhMDY2ZTEuLmUw
ZjVhNzg5NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5j
cHAKQEAgLTIxMCw2ICsyMTAsMTEgQEAgdm9pZCBWaWV3OjpkaWRDaGFuZ2VQYWdlSUQoKQogICAg
IG1fY2xpZW50LT5kaWRDaGFuZ2VQYWdlSUQoKnRoaXMpOwogfQogCit2b2lkIFZpZXc6OmRpZFJl
Y2VpdmVVc2VyTWVzc2FnZShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVVc2VyTWVzc2FnZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFZpZXc6OnNldFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsKICAgICBtX3NpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAppbmRleCA5YmM2YjlmMTlhYy4uMTRlYjM4NTMy
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCkBAIC00OSw2
ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworc3RydWN0IFVzZXJNZXNzYWdl
OwogfQogCiBuYW1lc3BhY2UgV0tXUEUgewpAQCAtNjgsNiArNjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jik7CiAgICAg
dm9pZCB3aWxsU3RhcnRMb2FkKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQYWdlSUQoKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVVc2VyTWVzc2FnZShXZWJLaXQ6OlVzZXJNZXNzYWdlJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKT4mJik7CiAKICAgICBXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuICptX3BhZ2VQcm94eTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxZmY5OWNlYTExCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVz
c2FnZS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJL
SVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5T
SURFX18pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVj
dGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVzZXJNZXNzYWdlX2gKKyNkZWZpbmUgV2Vi
S2l0VXNlck1lc3NhZ2VfaAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdwZS9X
ZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9V
U0VSX01FU1NBR0UgICAgICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNl
ck1lc3NhZ2UpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FH
RSkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBXZWJL
aXRVc2VyTWVzc2FnZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRV9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9V
U0VSX01FU1NBR0UpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVT
U0FHRSwgV2ViS2l0VXNlck1lc3NhZ2VDbGFzcykpCisKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVT
U0FHRV9FUlJPUiB3ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICgpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2U7Cit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFzcyAgIFdlYktpdFVzZXJNZXNzYWdlQ2xh
c3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlIFdlYktpdFVzZXJN
ZXNzYWdlUHJpdmF0ZTsKKworLyoqCisgKiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yOgorICogQFdF
QktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0U6IFRoZSBtZXNzYWdlIHdhcyBub3Qg
aGFuZGxlZCBieSB0aGUgcmVjZWl2ZXIuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5v
dGUgZXJyb3JzIGhhcHBlbmluZyB3aGVuIHNlbmRpbmcgdXNlciBtZXNzYWdlcy4KKyAqCisgKiBT
aW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9VU0VSX01FU1NBR0Vf
VU5IQU5ETEVEX01FU1NBR0UKK30gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcjsKKworc3RydWN0IF9X
ZWJLaXRVc2VyTWVzc2FnZSB7CisgICAgR0luaXRpYWxseVVub3duZWQgcGFyZW50OworCisgICAg
V2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRVc2Vy
TWVzc2FnZUNsYXNzIHsKKyAgICBHSW5pdGlhbGx5VW5vd25lZENsYXNzIHBhcmVudF9jbGFzczsK
KworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSAgICAgICAgICh2b2lkKTsK
KworV0VCS0lUX0FQSSBHUXVhcmsKK3dlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsgICAg
ICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3VzZXJf
bWVzc2FnZV9uZXcgICAgICAgICAgICAgIChjb25zdCBjaGFyICAgICAgICAqbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgKnBhcmFt
ZXRlcnMpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2VyX21l
c3NhZ2VfbmV3X3dpdGhfZmRfbGlzdCAoY29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0
ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVW5peEZETGlzdCAg
ICAgICAqZmRfbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgY2hhciAqCit3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9uYW1lICAgICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKwor
V0VCS0lUX0FQSSBHVmFyaWFudCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJz
ICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBHVW5peEZETGlz
dCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0ICAgICAgKFdlYktpdFVzZXJNZXNz
YWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9tZXNzYWdlX3Nl
bmRfcmVwbHkgICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAqcmVwbHkpOworCitH
X0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggZGViODg1YzE4NWEuLjk5ODYzZmQ1MGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRl
eHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXROZXR3b3JrUHJveHlT
ZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KICNpbmNs
dWRlIDx3cGUvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRV
c2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaD4K
IAogR19CRUdJTl9ERUNMUwpAQCAtMTQzLDE3ICsxNDQsMTggQEAgc3RydWN0IF9XZWJLaXRXZWJD
b250ZXh0IHsKIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xh
c3MgcGFyZW50OwogCi0gICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAg
ICAqZG93bmxvYWQpOwotICAgIHZvaWQgKCogaW5pdGlhbGl6ZV93ZWJfZXh0ZW5zaW9ucykgICAg
ICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBp
bml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAg
ICAgICpjb250ZXh0KTsKLSAgICB2b2lkICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dG9tYXRpb25TZXNz
aW9uICpzZXNzaW9uKTsKKyAgICB2b2lkICAgICAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RG93bmxv
YWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX3dlYl9l
eHRlbnNpb25zKSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsK
KyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdl
YktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBhdXRvbWF0
aW9uX3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIGdib29sZWFuICgq
IHVzZXJfbWVzc2FnZV9yZWNlaXZlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAqbWVzc2FnZSk7CiAKICAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKLSAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5
cGUKQEAgLTMxNCw2ICszMTYsMTAgQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90
aWZpY2F0aW9uX3Blcm1pc3Npb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICphbGxvd2Vk
X29yaWdpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICpkaXNhbGxvd2VkX29yaWdpbnMp
OwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9f
YWxsX2V4dGVuc2lvbnMgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFVzZXJNZXNzYWdlICAgICAgICAgICAgICptZXNzYWdlKTsKKwogR19FTkRfREVDTFMKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmll
dy5oCmluZGV4IDJhNGE2MjA0MjM1Li45ZTVkM2Y0YzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlIDx3cGUvV2ViS2l0U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KKyNpbmNs
dWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29u
dGV4dC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5oPgpAQCAtMjQxLDYgKzI0Miw5IEBAIHN0cnVjdCBfV2Vi
S2l0V2ViVmlld0NsYXNzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXROb3RpZmljYXRpb24gICAgICAgICAgKm5vdGlmaWNhdGlvbik7
CiAgICAgdm9pZCAgICAgICAgICAgKCogd2ViX3Byb2Nlc3NfdGVybWluYXRlZCkgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gcmVhc29uKTsKKyAgICBnYm9vbGVhbiAgICAgICAoKiB1c2VyX21lc3NhZ2VfcmVj
ZWl2ZWQpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVz
ZXJNZXNzYWdlICAgICAgICAgICAqbWVzc2FnZSk7CisKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwpA
QCAtMjQ5LDcgKzI1Myw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDUpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDYpICh2b2lkKTsKLSAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDcpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUK
QEAgLTUyNSw2ICs1MjgsMTggQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tncm91bmRfY29sb3IgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0Q29sb3IgICAgICAgICAgICAgICAgICpjb2xvcik7CiAKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVz
ZXJNZXNzYWdlICAgICAgICAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgICAq
Y2FuY2VsbGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAgICAgICAgIGNhbGxiYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
ICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJN
ZXNzYWdlICoKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2ggICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQg
ICAgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICoqZXJyb3Ip
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAwMTlmODRi
YWUzNy4uNjc5MDNmNWQ4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTQ3LDYgKzQ3LDcgQEAg
d2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAogd2Via2l0
X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9ucword2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5z
aW9ucwogCiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENh
bGxiYWNrCkBAIC0yNTEsNiArMjUyLDggQEAgd2Via2l0X3dlYl92aWV3X2FkZF9mcmFtZV9kaXNw
bGF5ZWRfY2FsbGJhY2sKIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2Nh
bGxiYWNrCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IKIHdlYmtpdF93ZWJf
dmlld19zZXRfYmFja2dyb3VuZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90
b19wYWdlCit3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiAKIDxT
VUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
CkBAIC01ODcsNiArNTkwLDM1IEBAIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZQogd2Via2l0X3Vy
aV9yZXNwb25zZV9nZXRfdHlwZQogPC9TRUNUSU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktp
dFVzZXJNZXNzYWdlPC9GSUxFPgorV2ViS2l0VXNlck1lc3NhZ2UKK3dlYmtpdF91c2VyX21lc3Nh
Z2VfbmV3Cit3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QKK3dlYmtpdF91c2Vy
X21lc3NhZ2VfZ2V0X25hbWUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMKK3dl
YmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QKK3dlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9y
ZXBseQorCis8U1VCU0VDVElPTiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yPgorV0VCS0lUX1VTRVJf
TUVTU0FHRV9FUlJPUgorV2ViS2l0VXNlck1lc3NhZ2VFcnJvcgord2Via2l0X3VzZXJfbWVzc2Fn
ZV9lcnJvcl9xdWFyaworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFVzZXJNZXNzYWdl
Q2xhc3MKK1dFQktJVF9UWVBFX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRQorV0VC
S0lUX0lTX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lUX0lT
X1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKKworPFNV
QlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQord2Via2l0X3VzZXJf
bWVzc2FnZV9nZXRfdHlwZQorPC9TRUNUSU9OPgorCiA8U0VDVElPTj4KIDxGSUxFPldlYktpdFdp
bmRvd1Byb3BlcnRpZXM8L0ZJTEU+CiBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCmluZGV4IDY2
NjE0ZDk3MzgzLi4yZmU3YjIwZWZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9kb2NzL3dwZS1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9kb2NzL3dwZS1kb2NzLnNnbWwKQEAgLTU3LDYgKzU3LDcgQEAKICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgogICAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9XZWJLaXRDb2xvci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRVc2VyTWVzc2FnZS54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFw
dGVyPgpAQCAtOTMsNSArOTQsMTAgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWlu
ZGV4LTIuMjYueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAK
KyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi0yOCIgcm9sZT0iMi4yOCI+CisgICAgPHRpdGxlPklu
ZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuMjg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9hcGktaW5kZXgtMi4yOC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAg
PC9pbmRleD4KKwogICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlvbi1nbG9zc2FyeS54
bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KIDwvYm9vaz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCmluZGV4IDQ4NTIzYjQ3ZDE3Li45Y2MzMWNiNDk2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC03Myw2ICs3Myw3
IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaD4KICNpbmNs
dWRlIDx3cGUvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJN
ZXNzYWdlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4Yzc3NTA5NmNkMS4uZmM5
NWJiZGFiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOTks
NiArMjk5LDcgQEAgc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkRh
dGE7CiBzdHJ1Y3QgV2ViUG9wdXBJdGVtOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
Oworc3RydWN0IFVzZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQ7CiBlbnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwpAQCAtMTcyOSw2ICsxNzMw
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9p
ZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRp
b25JRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7
CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNlbmRNZXNz
YWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYlZp
ZXdXaXRoUmVwbHkoVXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVz
c2FnZSYmKT4mJik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGM2NTI3NjZjMjguLmI0MWY5NDY0NTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC01NzQsNCArNTc0LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBIQVZF
KFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICBEaWRDcmVhdGVDb250ZXh0Rm9yVmlz
aWJpbGl0eVByb3BhZ2F0aW9uKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJ
RCk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNl
bmRNZXNzYWdlVG9XZWJWaWV3KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdl
KQorICAgIFNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJN
ZXNzYWdlIHVzZXJNZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlN
ZXNzYWdlKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCAzYzhmNjM5NDczNS4uNGFmNjI4ZTMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNTEwLDYgKzUxMCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZFNhbmRib3hQYXRoKGNvbnN0IENTdHJpbmcmIHBhdGgsIFNhbmRib3hQZXJtaXNz
aW9uIHBlcm1pc3Npb24pIHsgbV9leHRyYVNhbmRib3hQYXRocy5hZGQocGF0aCwgcGVybWlzc2lv
bik7IH07CiAgICAgY29uc3QgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lvbj4mIHNh
bmRib3hQYXRocygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFTYW5kYm94UGF0aHM7IH07CiAgICAg
Ym9vbCBzYW5kYm94RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEVuYWJsZWQ7IH07
CisKKyAgICB2b2lkIHNldFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKFVzZXJNZXNz
YWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpPiYmIGhhbmRs
ZXIpIHsgbV91c2VyTWVzc2FnZUhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOyB9CisgICAgY29u
c3QgRnVuY3Rpb248dm9pZChVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVz
ZXJNZXNzYWdlJiYpPiYmKT4mIHVzZXJNZXNzYWdlSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlck1lc3NhZ2VIYW5kbGVyOyB9CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHNldFdlYlByb2Nl
c3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKQEAgLTc4OSw2ICs3OTIs
OCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGJv
b2wgbV9zYW5kYm94RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxDU3RyaW5nLCBTYW5k
Ym94UGVybWlzc2lvbj4gbV9leHRyYVNhbmRib3hQYXRoczsKKworICAgIEZ1bmN0aW9uPHZvaWQo
VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+
IG1fdXNlck1lc3NhZ2VIYW5kbGVyOwogI2VuZGlmCiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IG1fcHJv
Y2Vzc2VzV2l0aFVwbG9hZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IDViMDUyMTg5NGIyLi42NWY4Y2ZmMTc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYnNp
dGVEYXRhU3RvcmU7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKK3N0cnVjdCBVc2VyTWVz
c2FnZTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTQwNCw2ICs0
MDUsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhE
YXRhU3RvcmUoKTsKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHZv
aWQgc2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoVXNlck1lc3NhZ2UmJik7CisgICAgdm9pZCBzZW5k
TWVzc2FnZVRvV2ViQ29udGV4dFdpdGhSZXBseShVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBJ
c1dlYWsgeyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha09y
U3Ryb25nUHRyIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDBhYjk0MzU1MzMuLmUxMTllNmNi
OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC03Nyw0ICs3Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBQbHVnLWluIG1lc3NhZ2VzLgogICAgIHZvaWQgQWRk
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFz
aCkKICAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFz
aCkKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNlbmRNZXNzYWdl
VG9XZWJDb250ZXh0KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorICAg
IFNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNz
YWdlIHVzZXJNZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNz
YWdlKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA5Y2ExYzZiMGIyZC4uMzI4MTdiMWRk
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1By
b3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgpAQCAtNTYsNCArNTcsMTQgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1
bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGwKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZW5kTWVzc2FnZVRvV2ViQ29udGV4dFdpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV9wcm9jZXNzUG9vbC0+dXNlck1lc3NhZ2VIYW5kbGVyKCkoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQor
eworICAgIHNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KFdURk1vdmUobWVzc2FnZSks
IFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7Cit9CisKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDA4NjdkOTgzZTVkLi41NDBlM2Jj
Njg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlBhc3RlYm9hcmRQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAt
MTY2LDQgKzE2OCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Vtb2ppUGlja2VyKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCwgQ29tcGxldGlvbgogICAgIHdlYmtpdFdlYlZp
ZXdCYXNlU2hvd0Vtb2ppQ2hvb3NlcihXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkp
LCBjYXJldFJlY3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIVdFQktJVF9JU19XRUJfVklFVyh2aWV3V2lkZ2V0KCkpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNzYWdlKG1lc3NhZ2UubmFtZSwgV0VC
S0lUX1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgd2Via2l0V2ViVmlld0RpZFJlY2VpdmVVc2VyTWVzc2FnZShXRUJLSVRfV0VC
X1ZJRVcodmlld1dpZGdldCgpKSwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXco
VXNlck1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIHNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJl
cGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3Bl
L1dlYlBhZ2VQcm94eVdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFn
ZVByb3h5V1BFLmNwcAppbmRleCA5MDJlZTZmNTMzZS4uNmQxYjdjNWY3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCkBAIC04Miw0ICs4
MiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRpdG9y
U3RhdGUmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPihwYWdlQ2xpZW50KCkpLnNlbmRNZXNz
YWdlVG9XZWJWaWV3KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNz
YWdlJiYgbWVzc2FnZSkKK3sKKyAgICBzZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShXVEZN
b3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYmKSB7IH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5o
CmluZGV4IDk4NGMzYTk0NzUyLi44Yzk5NTVkN2NiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAog
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgaW5pdGlhbGl6
ZShJbmplY3RlZEJ1bmRsZSosIEFQSTo6T2JqZWN0Kik7CiAKKyAgICBXZWJLaXRXZWJFeHRlbnNp
b24qIGV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uLmdldCgpOyB9CisKIHBy
aXZhdGU6CiAgICAgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IGYwNWRlOGU1MTI0Li41YjIzYTUxYTY4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTIz
LDEwICsyMywxMyBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJBUElJ
bmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2lu
Y2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkV4
dGVuc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMTExLDYgKzExNCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGVudW0gewogICAgIFBBR0VfQ1JFQVRFRCwK
KyAgICBVU0VSX01FU1NBR0VfUkVDRUlWRUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE0
Niw2ICsxNTAsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3NfaW5p
dChXZWJLaXRXZWJFeHRlbnNpb25DbGFzcyoga2xhc3MpCiAgICAgICAgIGdfY2Nsb3N1cmVfbWFy
c2hhbF9WT0lEX19PQkpFQ1QsCiAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfUEFHRSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJFeHRlbnNpb246
OnVzZXItbWVzc2FnZS1yZWNlaXZlZDoKKyAgICAgKiBAZXh0ZW5zaW9uOiB0aGUgI1dlYktpdFdl
YkV4dGVuc2lvbiBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAbWVzc2Fn
ZTogdGhlICNXZWJLaXRVc2VyTWVzc2FnZSByZWNlaXZlZAorICAgICAqCisgICAgICogVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgI1dlYktpdFVzZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZy
b20gdGhlCisgICAgICogI1dlYktpdFdlYkNvbnRleHQgY29ycmVzcG9uZGluZyB0byBAZXh0ZW5z
aW9uLiBNZXNzYWdlcyBzZW50IGJ5ICNXZWJLaXRXZWJDb250ZXh0CisgICAgICogYXJlIGFsd2F5
cyBicm9hZGNhc3RlZCB0byBhbGwgI1dlYktpdFdlYkV4dGVuc2lvbjwhLS0gLS0+cyBhbmQgdGhl
eSBjYW4ndCBiZQorICAgICAqIHJlcGxpZWQuIENhbGxpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9z
ZW5kX3JlcGx5KCkgd2lsbCBkbyBub3RoaW5nLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjgK
KyAgICAgKi8KKyAgICBzaWduYWxzW1VTRVJfTUVTU0FHRV9SRUNFSVZFRF0gPSBnX3NpZ25hbF9u
ZXcoCisgICAgICAgICJ1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQiLAorICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAwLAor
ICAgICAgICBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2Vu
ZXJpYywKKyAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1VTRVJf
TUVTU0FHRSk7CiB9CiAKIGNsYXNzIFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudCB7CkBAIC0yMDAsNiArMjI2
LDEzIEBAIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVj
dGVkQnVuZGxlKiBidW5kbGUpCiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAordm9pZCB3ZWJr
aXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIFVzZXJNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICAvLyBTaW5rIHRoZSBmbG9h
dGluZyByZWYuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gdXNlck1lc3NhZ2UgPSB3
ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYm
KSB7IH0pOworICAgIGdfc2lnbmFsX2VtaXQoZXh0ZW5zaW9uLCBzaWduYWxzW1VTRVJfTUVTU0FH
RV9SRUNFSVZFRF0sIDAsIHVzZXJNZXNzYWdlLmdldCgpKTsKK30KKwogdm9pZCB3ZWJraXRXZWJF
eHRlbnNpb25TZXRHYXJiYWdlQ29sbGVjdE9uUGFnZURlc3Ryb3koV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24pCiB7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQpAQCAtMjI5LDMgKzI2
Miw2OCBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShXZWJL
aXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgZ3VpbgogCiAgICAgcmV0dXJuIDA7CiB9CisKKy8q
KgorICogd2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQ6CisgKiBA
ZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRV
c2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUg
b3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJs
ZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNh
dGlzZmllZCBvciAlTlVMTAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBw
YXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dl
YktpdFdlYkNvbnRleHQgY29ycmVzcG9uZGluZyB0byBAZXh0ZW5zaW9uLiBJZiBAbWVzc2FnZSBp
cyBmbG9hdGluZywgaXQncyBjb25zdW1lZC4KKyAqCisgKiBJZiB5b3UgZG9uJ3QgZXhwZWN0IGFu
eSByZXBseSwgb3IgeW91IHNpbXBseSB3YW50IHRvIGlnbm9yZSBpdCwgeW91IGNhbiBwYXNzICVO
VUxMIGFzIEBjYWxiYWNrLgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2Fs
bGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2goKSB0byBnZXQgdGhlIG1lc3Nh
Z2UgcmVwbHkuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUs
IEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKwor
ICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0aW5nLgor
ICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsK
KyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
U2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3Nh
Z2UpKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0
YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcoZXh0ZW5zaW9uLCBjYW5jZWxsYWJsZSwgY2FsbGJh
Y2ssIHVzZXJEYXRhKSk7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYm
KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGFzayA9IFdURk1vdmUodGFzayldKFVzZXJNZXNzYWdl
JiYgcmVwbHlNZXNzYWdlKSB7CisgICAgICAgIHN3aXRjaCAocmVwbHlNZXNzYWdlLnR5cGUpIHsK
KyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6TnVsbDoKKyAgICAgICAgICAgIGdfdGFz
a19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FO
Q0VMTEVELCBfKCJPcGVyYXRpb24gd2FzIGNhbmNlbGxlZCIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpNZXNzYWdlOgorICAgICAgICAgICAg
Z190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtp
dFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUocmVwbHlNZXNzYWdlKSkpLCBzdGF0aWNfY2FzdDxH
RGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIGdfdGFza19y
ZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1IsIHJl
cGx5TWVzc2FnZS5lcnJvckNvZGUsIF8oIk1lc3NhZ2UgJXMgd2FzIG5vdCBoYW5kbGVkIiksIHJl
cGx5TWVzc2FnZS5uYW1lLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH07CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlbmRN
ZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSht
ZXNzYWdlKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2g6CisgKiBAZXh0
ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jlc3Vs
dAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGlnbm9y
CisgKgorICogRmluaXNoIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRoIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0KCkuCisgKgorICogUmV0
dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBs
eSBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dl
YktpdFVzZXJNZXNzYWdlKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29u
dGV4dF9maW5pc2goV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCBleHRlbnNpb24pLCBudWxscHRyKTsK
KworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdfdGFza19wcm9wYWdhdGVfcG9pbnRl
cihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCmluZGV4IGUyNzM5YTkwZDI0Li5iNTQzNDBmYmMx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0
ZS5oCkBAIC0yMCw3ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlLmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJF
eHRlbnNpb24uaCIKIAogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSopOwordm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRS
ZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiwgV2ViS2l0OjpVc2VyTWVzc2Fn
ZSYmKTsKIHZvaWQgd2Via2l0V2ViRXh0ZW5zaW9uU2V0R2FyYmFnZUNvbGxlY3RPblBhZ2VEZXN0
cm95KFdlYktpdFdlYkV4dGVuc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCmluZGV4IGY5MWQxYmUxZjg4Li4wYzdlN2Y3NzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtNDEsMTAgKzQxLDEyIEBACiAjaW5jbHVkZSAiV2ViS2l0U2Ny
aXB0V29ybGRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRV
c2VyTWVzc2FnZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlByb2Nlc3NFbnVtVHlw
ZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudExvYWRlci5oPgpAQCAtNzAsNiArNzIsNyBAQCBlbnVtIHsKICAgICBGT1JNX0NP
TlRST0xTX0FTU09DSUFURUQsCiAgICAgRk9STV9DT05UUk9MU19BU1NPQ0lBVEVEX0ZPUl9GUkFN
RSwKICAgICBXSUxMX1NVQk1JVF9GT1JNLAorICAgIFVTRVJfTUVTU0FHRV9SRUNFSVZFRCwKIAog
ICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtNjY3LDYgKzY3MCwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRXZWJQYWdlQ2xhc3MqIGtsYXNzKQogICAgICAg
ICBXRUJLSVRfVFlQRV9GUkFNRSwKICAgICAgICAgR19UWVBFX1BUUl9BUlJBWSwKICAgICAgICAg
R19UWVBFX1BUUl9BUlJBWSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJQYWdlOjp1c2Vy
LW1lc3NhZ2UtcmVjZWl2ZWQ6CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ug
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2Vi
S2l0VXNlck1lc3NhZ2UgcmVjZWl2ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVt
aXR0ZWQgd2hlbiBhICNXZWJLaXRVc2VyTWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZQorICAg
ICAqICNXZWJLaXRXZWJWaWV3IGNvcnJlc3BvbmRpbmcgdG8gQHdlYl9wYWdlLiBZb3UgY2FuIHJl
cGx5IHRvIHRoZSBtZXNzYWdlCisgICAgICogdXNpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5k
X3JlcGx5KCkuCisgICAgICoKKyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdl
IGFzeW5jaHJvbm91c2x5IGJ5IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVz
c2FnZSBhbmQgcmV0dXJuaW5nICVUUlVFLiBJZiB0aGUgbGFzdCByZWZlcmVuY2Ugb2YgQG1lc3Nh
Z2UgaXMgcmVtb3ZlZAorICAgICAqIGFuZCB0aGUgbWVzc2FnZSBoYXMgYmVlbiByZXBsaWVkLCB0
aGUgb3BlcmF0aW9uIGluIHRoZSAjV2ViS2l0V2ViVmlldyB3aWxsCisgICAgICogZmluaXNoIHdp
dGggZXJyb3IgJVdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UuCisgICAgICoK
KyAgICAgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZB
TFNFIG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAg
c2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAi
dXNlci1tZXNzYWdlLXJlY2VpdmVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3Mp
LAorICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgMCwKKyAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJl
X21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCisgICAgICAgIFdF
QktJVF9UWVBFX1VTRVJfTUVTU0FHRSk7CiB9CiAKIFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQ
YWdlKFdlYktpdFdlYlBhZ2UgKndlYlBhZ2UpCkBAIC03MzMsNiArNzY0LDE0IEBAIHZvaWQgd2Vi
a2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lk
IHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogd2ViUGFn
ZSwgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNz
YWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5n
IHJlZi4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtp
dFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdl
YlBhZ2UsIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNlck1lc3NhZ2UuZ2V0
KCksICZyZXR1cm5WYWx1ZSk7Cit9CisKIC8qKgogICogd2Via2l0X3dlYl9wYWdlX2dldF9kb21f
ZG9jdW1lbnQ6CiAgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKQEAgLTgyMiwzICs4NjEs
NjggQEAgV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlKQogCiAgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvci5n
ZXQoKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXc6
CisgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRV
c2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUg
b3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJs
ZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNh
dGlzZmllZCBvciAlTlVMTAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBw
YXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dl
YktpdFdlYlZpZXcgY29ycmVzcG9uZGluZyB0byBAd2ViX3BhZ2UuIElmIEBtZXNzYWdlIGlzIGZs
b2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJl
cGx5LCBvciB5b3Ugc2ltcGx5IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwg
YXMgQGNhbGxiYWNrLgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJh
Y2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX3BhZ2Vf
c2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoKCkgdG8gZ2V0IHRoZSBtZXNzYWdlIHJlcGx5Lgor
ICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2Fn
ZV90b192aWV3KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNz
YWdlLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxi
YWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfUEFHRSh3ZWJQYWdlKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNF
Ul9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBj
YXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFk
b3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIHdl
YlBhZ2UtPnByaXYtPndlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VuZE1l
c3NhZ2VUb1dlYlZpZXcod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRH
UmVmKGdfdGFza19uZXcod2ViUGFnZSwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkp
OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+IGNvbXBsZXRpb25I
YW5kbGVyID0gW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShVc2VyTWVzc2FnZSYmIHJlcGx5TWVzc2Fn
ZSkgeworICAgICAgICBzd2l0Y2ggKHJlcGx5TWVzc2FnZS50eXBlKSB7CisgICAgICAgIGNhc2Ug
VXNlck1lc3NhZ2U6OlR5cGU6Ok51bGw6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19l
cnJvcih0YXNrLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCwgXygiT3Bl
cmF0aW9uIHdhcyBjYW5jZWxsZWQiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBVc2VyTWVzc2FnZTo6VHlwZTo6TWVzc2FnZToKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5f
cG9pbnRlcih0YXNrLmdldCgpLCBnX29iamVjdF9yZWZfc2luayh3ZWJraXRVc2VyTWVzc2FnZUNy
ZWF0ZShXVEZNb3ZlKHJlcGx5TWVzc2FnZSkpKSwgc3RhdGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+
KGdfb2JqZWN0X3VucmVmKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2Vy
TWVzc2FnZTo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJv
cih0YXNrLmdldCgpLCBXRUJLSVRfVVNFUl9NRVNTQUdFX0VSUk9SLCByZXBseU1lc3NhZ2UuZXJy
b3JDb2RlLCBfKCJNZXNzYWdlICVzIHdhcyBub3QgaGFuZGxlZCIpLCByZXBseU1lc3NhZ2UubmFt
ZS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9OworICAgIHdl
YlBhZ2UtPnByaXYtPndlYlBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseSh3ZWJraXRVc2VyTWVzc2FnZUdl
dE1lc3NhZ2UobWVzc2FnZSkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaDoKKyAqIEB3
ZWJfcGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0Cisg
KiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAq
CisgKiBGaW5pc2ggYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0
X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3KCkuCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBseSBvciAlTlVMTCBp
biBjYXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNz
YWdlKiB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoKFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSksIG51
bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQs
IHdlYlBhZ2UpLCBudWxscHRyKTsKKworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdf
dGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKaW5kZXggOGRjZDQyYTlkYmMu
LjI0MDUxNDgzZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZVByaXZh
dGUuaApAQCAtMTcsMTUgKzE3LDE1IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
ICAqLwogCi0jaWZuZGVmIFdlYktpdFdlYlBhZ2VQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0V2Vi
UGFnZVByaXZhdGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5Lmgi
CisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZS5oIgogCiBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRl
KFdlYktpdDo6V2ViUGFnZSopOwogdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2Uo
V2ViS2l0V2ViUGFnZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6RGljdGlvbmFy
eSYgbWVzc2FnZSk7Cit2b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2Vi
S2l0V2ViUGFnZSosIFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmKTsKIFdlYktpdDo6V2ViUGFnZSogd2Via2l0V2Vi
UGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSopOwogCi0jZW5kaWYgLy8gV2ViS2l0V2ViUGFnZVBy
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaAppbmRleCAzNDEz
NmEzN2QyNS4uNTQyMmZlNTdmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVu
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KIAogR19C
RUdJTl9ERUNMUwpAQCAtNzYsMTEgKzc3LDIzIEBAIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9u
Q2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X3R5cGUgKHZvaWQpOword2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgICAgICAgICAgICAg
ICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKLXdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQp
Oword2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICBwYWdlX2lkKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9f
Y29udGV4dCAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVz
c2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2Fs
bGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2Vf
dG9fY29udGV4dF9maW5pc2ggKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1
bHQgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgKiplcnJvcik7CiAKIEdfRU5EX0RFQ0xT
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAppbmRleCAwYTQ4NmRjYjI4NS4uMzE1YWM4
YjZkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5l
cy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RnJhbWUuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFZGl0b3Iu
aD4KICNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tLmg+CiAKQEAgLTc0LDIyICs3NSwzNCBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13
ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRE
T01Eb2N1bWVudCAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2Vi
UGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgICAgICAg
ICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGd1aW50NjQKLXdl
YmtpdF93ZWJfcGFnZV9nZXRfaWQgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7
Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQ
YWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3dlYl9w
YWdlX2dldF91cmkgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93
ZWJfcGFnZV9nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9w
YWdlKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRGcmFtZSAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X21h
aW5fZnJhbWUgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dl
dF9tYWluX2ZyYW1lICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYkVkaXRvciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAg
ICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9lZGl0
b3IgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyAgICAgICAgKFdl
YktpdFdlYlBhZ2UgICAgICAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNh
bmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VC
S0lUX0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdl
X3RvX3ZpZXdfZmluaXNoIChXZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICpy
ZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJy
b3IgICAgICAgICAgICAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1l
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggMWM5NWYxZDNhZWQuLmJjNGI0MjQwMDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRV
UklSZXNwb25zZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9uLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dw
ZS9XZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IGE2ZmZiNDg1MDQ4Li4w
OWFlZTM4Y2RjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03NiwxMSAr
NzcsMjMgQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJLSVRf
QVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Ug
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0
ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0ICAgICAgICAoV2ViS2l0
V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxh
YmxlICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
ICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoK
K3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaCAoV2Vi
S2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAqcmVzdWx0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3Ig
ICAgICAgICAgICAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0
V2ViUGFnZS5oCmluZGV4IDk1NWYwODdlNGY3Li4xODQxZTRhYzlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3Bl
L1dlYktpdFdlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0
RnJhbWUuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d3BlL3dlYmtpdGRvbS5oPgogCkBAIC03
MiwyMiArNzMsMzUgQEAgc3RydWN0IF9XZWJLaXRXZWJQYWdlQ2xhc3MgewogfTsKIAogV0VCS0lU
X0FQSSBHVHlwZQotd2Via2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgKHZvaWQpOword2Vi
a2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJ
VF9BUEkgV2ViS2l0RE9NRG9jdW1lbnQgKgotd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50ICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lUX0FQ
SSBndWludDY0Ci13ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9pZCAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoK
LXdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFn
ZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJQYWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgV2ViS2l0RnJhbWUgKgotd2Via2l0X3dl
Yl9wYWdlX2dldF9tYWluX2ZyYW1lICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtp
dF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndl
Yl9wYWdlKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJFZGl0b3IgKgotd2Via2l0X3dlYl9wYWdl
X2dldF9lZGl0b3IgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJf
cGFnZV9nZXRfZWRpdG9yICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdl
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3Zp
ZXcgICAgICAgIChXZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICptZXNzYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxh
YmxlICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgIHVzZXJf
ZGF0YSk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3dlYl9wYWdl
X3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCAoV2ViS2l0V2ViUGFnZSAgICAgICp3ZWJfcGFn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jl
c3VsdCAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0Vycm9yICAgICAgICAgICAgKiplcnJvcik7CisKIAogR19FTkRfREVDTFMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93
cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9u
cy0xLjAtc2VjdGlvbnMudHh0CmluZGV4IGU0NDgyOTZkOWZhLi41ZmRhOTU4MGQ1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9j
cy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMt
MS4wLXNlY3Rpb25zLnR4dApAQCAtMTMsNiArMTMsOCBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdl
YktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5p
dGlhbGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFn
ZQord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQKK3dlYmtpdF93
ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaAogCiA8U1VCU0VDVElP
TiBTdGFuZGFyZD4KIFdlYktpdFdlYkV4dGVuc2lvbkNsYXNzCkBAIC0zNyw2ICszOSw4IEBAIHdl
YmtpdF93ZWJfcGFnZV9nZXRfaWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X21haW5fZnJhbWUKIHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yCit3ZWJraXRf
d2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3Nh
Z2VfdG9fdmlld19maW5pc2gKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdl
Q2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCmluZGV4IDY5
ZWZkZDk2MzMxLi5kNWQzMzU0ZjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2Vi
LWV4dGVuc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFNjcmlw
dFdvcmxkLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0VVJJUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2Uu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dFdlYkV4dGVuc2lvbi5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjE3NjVj
MWY0ZjguLmM2ZDYyMzc3NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yNjgsNiArMjY4LDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3Ry
dWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5wdXRD
b250ZXh0Oworc3RydWN0IFVzZXJNZXNzYWdlOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0
YTsKIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczsKQEAgLTE2MzAsNiArMTYzMiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgU25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6
OkZyYW1lVmlldyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9u
KFVzZXJNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhS
ZXBseShVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYp
PiYmKTsKKyNlbmRpZgorCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IDMwOTZlMmU2OTQxLi5mZThmZDFiNTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODAsNCArNTgwLDgg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dl
cmVkKHN0cnVjdCBXZWJDb3JlOjpTeXN0ZW1QcmV2aWV3SW5mbyBwcmV2aWV3SW5mbywgU3RyaW5n
IG1lc3NhZ2UpCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQor
ICAgIFNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2Ug
dXNlck1lc3NhZ2UpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShzdHJ1
Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlVz
ZXJNZXNzYWdlIHJlcGx5TWVzc2FnZSkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjA1OThjNjI3MGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGli
LmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisKKyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgIldlYktpdEV4dGVuc2lvbk1h
bmFnZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgIldlYktp
dFdlYkV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNp
b25XaXRoUmVwbHkoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGV4dGVu
c2lvbiA9IFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmV4dGVuc2lvbigpOwor
ICAgIGlmICghZXh0ZW5zaW9uKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNz
YWdlKG1lc3NhZ2UubmFtZSwgV0VCS0lUX1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogcGFnZSA9IHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9wYWdlKGV4dGVuc2lvbiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyTWVzc2FnZSht
ZXNzYWdlLm5hbWUsIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1l
c3NhZ2UocGFnZSwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCit2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3Nh
Z2UmJiBtZXNzYWdlKQoreworICAgIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHko
V1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBhZTFm
NjAzMDgzYy4uMDZiOWEyMDQ1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtMTE2LDYgKzExNiw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViTG9hZGVyU3Ry
YXRlZ3k7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CitzdHJ1Y3Qg
VXNlck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVj
dCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczsKIGNsYXNzIFdlYlByb2Nlc3NTdXBwbGVt
ZW50OwpAQCAtNDYzLDYgKzQ2NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckN1cnJl
bnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdl
JiYpOworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dl
YkNvbm5lY3Rpb247CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2VhZDAxNjY1MDYuLjg1MTViNDM0NmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MTU2LDQgKzE1Niw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBTZW5kTWVzc2FnZVRvV2ViRXh0ZW5z
aW9uKHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5k
ZXggOWIwMDM3NDRmOWIuLjAwN2YwNDRkMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCisjaW5jbHVkZSAiV2ViS2l0
RXh0ZW5zaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAKICNpZiBVU0Uo
R1NUUkVBTUVSKQpAQCAtOTcsNCArOTksMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRl
cm1pbmF0ZSgpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVu
c2lvbihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIGV4dGVuc2lvbiA9
IFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmV4dGVuc2lvbigpKQorICAgICAg
ICB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3NhZ2UoZXh0ZW5zaW9uLCBXVEZN
b3ZlKG1lc3NhZ2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTc5NWY0YTFmNjguLmE1MGQ0
YThkZDg4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMTAtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSB0ZXN0IHRvIGNoZWNrIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFVzZXJNZXNz
YWdlVGVzdDo6d2ViVmlld1VzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChV
c2VyTWVzc2FnZVRlc3Q6OndlYkNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgor
ICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpVc2VyTWVzc2FnZVRlc3QpOgorICAgICAgICAoVXNl
ck1lc3NhZ2VUZXN0Ojp+VXNlck1lc3NhZ2VUZXN0KToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVz
dDo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpzZW5kTWVkc3NhZ2VU
b0FsbEV4dGVuc2lvbnMpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0Ojp2aWV3VXNlck1lc3Nh
Z2VSZWNlaXZlZCk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6OmNvbnRleHRVc2VyTWVzc2Fn
ZVJlY2VpdmVkKToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVzdDo6d2FpdFVudGlsVmlld01lc3Nh
Z2VSZWNlaXZlZCk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6OndhaXRVbnRpbENvbnRleHRN
ZXNzYWdlUmVjZWl2ZWQpOgorICAgICAgICAocmVhZEZpbGVEZXNjcml0cG9yKToKKyAgICAgICAg
KHRlc3RXZWJFeHRlbnNpb25Vc2VyTWVzc2FnZXMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5j
cHA6CisgICAgICAgIChkb2N1bWVudExvYWRlZENhbGxiYWNrKToKKyAgICAgICAgKHBhZ2VNZXNz
YWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKyAg
ICAgICAgKGV4dGVuc2lvbk1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEpOgorCiAyMDE5LTEwLTA4
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNTA1OTcpOiBbR1RLXVtXUEVdIDIuMjcuMSBzaG93cyBIVE1MIGNvbnRlbnQg
YXMgdGV4dC9wbGFpbiBpbiBjdXN0b20gcHJvdG9jb2xzIHdoZW4gcGFzc2luZyBhIGNoYXJzZXQg
aW4gY29udGVudCB0eXBlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAppbmRleCAyNGUxMzY3Y2E3YS4uMDI5
ZWI2NzQzMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxnaW8v
Z3VuaXhmZGxpc3QuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBH
VW5pcXVlUHRyPGNoYXI+IHNjcmlwdERpYWxvZ1Jlc3VsdDsKQEAgLTUzNyw2ICs1MzgsMjQ1IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25QYWdlSUQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgY2hlY2tUaXRsZSh0ZXN0LCBwcm94eS5nZXQoKSwgIlRpdGxlNiIp
OwogfQogCitjbGFzcyBVc2VyTWVzc2FnZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVi
bGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVXNlck1lc3NhZ2VUZXN0KTsKKworICAg
IHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgVXNlck1lc3NhZ2VUZXN0KiB0
ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlc3QtPnZpZXdVc2VyTWVzc2FnZVJlY2VpdmVk
KG1lc3NhZ2UpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiB3ZWJDb250ZXh0VXNlck1l
c3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRVc2VyTWVzc2Fn
ZSogbWVzc2FnZSwgVXNlck1lc3NhZ2VUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRlc3QtPmNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkKG1lc3NhZ2UpOworICAgIH0KKworICAg
IFVzZXJNZXNzYWdlVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2Vi
Q29udGV4dC5nZXQoKSwgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0sod2ViQ29u
dGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KG1fd2ViVmlldywgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0so
d2ViVmlld1VzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAg
IH5Vc2VyTWVzc2FnZVRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9tYXRjaGVkKG1fd2ViQ29udGV4dC5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwg
MCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJz
X2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAs
IG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOworICAgIH0KKworICAgIFdlYktpdFVzZXJNZXNzYWdl
KiBzZW5kTWVzc2FnZShXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiogZXJyb3Ig
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChtZXNzYWdlKSk7CisgICAgICAgIG1fcmVjZWl2ZWRWaWV3TWVzc2Fn
ZSA9IG51bGxwdHI7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFn
ZShtX3dlYlZpZXcsIG1lc3NhZ2UsIG51bGxwdHIsIFtdKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBz
dGF0aWNfY2FzdDxVc2VyTWVzc2FnZVRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICB0ZXN0
LT5tX3JlY2VpdmVkVmlld01lc3NhZ2UgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X3NlbmRf
bWVzc2FnZV90b19wYWdlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJnRlc3QtPm1f
cmVjZWl2ZWRFcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgaWYgKHRlc3QtPm1fcmVjZWl2
ZWRWaWV3TWVzc2FnZSkKKyAgICAgICAgICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHRlc3QtPm1fcmVjZWl2ZWRWaWV3TWVzc2FnZS5n
ZXQoKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwodGVzdC0+bV9yZWNlaXZlZEVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIHRlc3QtPnF1aXRN
YWluTG9vcCgpOworICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1f
bWFpbkxvb3ApOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAqZXJyb3IgPSBtX3Jl
Y2VpdmVkRXJyb3IuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX3JlY2VpdmVkVmlld01lc3NhZ2Uu
Z2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZW5kTWVkc3NhZ2VUb0FsbEV4dGVuc2lvbnMoV2Vi
S2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyhtX3dlYkNvbnRleHQu
Z2V0KCksIG1lc3NhZ2UpOworICAgIH0KKworICAgIGJvb2wgdmlld1VzZXJNZXNzYWdlUmVjZWl2
ZWQoV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAg
aWYgKCFnX3N0cmNtcDAobV9leHBlY3RlZFZpZXdNZXNzYWdlTmFtZS5kYXRhKCksIHdlYmtpdF91
c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSkpKSB7CisgICAgICAgICAgICBtX3JlY2VpdmVk
Vmlld01lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGJvb2wgY29udGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWQoV2ViS2l0VXNl
ck1lc3NhZ2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNt
cDAobV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZS5kYXRhKCksIHdlYmtpdF91c2VyX21lc3Nh
Z2VfZ2V0X25hbWUobWVzc2FnZSkpKSB7CisgICAgICAgICAgICBtX3JlY2VpdmVkQ29udGV4dE1l
c3NhZ2UgPSBtZXNzYWdlOworICAgICAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIFdlYktpdFVzZXJNZXNzYWdlKiB3YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVk
KGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lKQorICAgIHsKKyAgICAgICAgbV9leHBlY3RlZFZpZXdN
ZXNzYWdlTmFtZSA9IG1lc3NhZ2VOYW1lOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisgICAgICAgIG1fZXhwZWN0ZWRWaWV3TWVzc2FnZU5hbWUgPSB7IH07CisgICAgICAg
IHJldHVybiBtX3JlY2VpdmVkVmlld01lc3NhZ2UuZ2V0KCk7CisgICAgfQorCisgICAgV2ViS2l0
VXNlck1lc3NhZ2UqIHdhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoY29uc3QgY2hhciog
bWVzc2FnZU5hbWUpCisgICAgeworICAgICAgICBtX2V4cGVjdGVkQ29udGV4dE1lc3NhZ2VOYW1l
ID0gbWVzc2FnZU5hbWU7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAg
ICAgICAgbV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
IG1fcmVjZWl2ZWRDb250ZXh0TWVzc2FnZS5nZXQoKTsKKyAgICB9CisKKyAgICBHUmVmUHRyPFdl
YktpdFVzZXJNZXNzYWdlPiBtX3JlY2VpdmVkVmlld01lc3NhZ2U7CisgICAgR1JlZlB0cjxXZWJL
aXRVc2VyTWVzc2FnZT4gbV9yZWNlaXZlZENvbnRleHRNZXNzYWdlOworICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBtX3JlY2VpdmVkRXJyb3I7CisgICAgQ1N0cmluZyBtX2V4cGVjdGVkVmlld01l
c3NhZ2VOYW1lOworICAgIENTdHJpbmcgbV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZTsKK307
CisKK3N0YXRpYyBib29sIHJlYWRGaWxlRGVzY3JpdHBvcihpbnQgZmQsIGNoYXIqKiBjb250ZW50
cywgZ3NpemUqIGxlbmd0aCkKK3sKKyAgICBHU3RyaW5nKiBidWZmZXJTdHJpbmcgPSBnX3N0cmlu
Z19uZXcobnVsbHB0cik7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgZ2NoYXIgYnVmZmVy
WzQwOTZdOworICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gcmVhZChmZCwgYnVmZmVyLCBzaXpl
b2YoYnVmZmVyKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKKyAgICAgICAgICAg
IGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUoYnVmZmVyU3RyaW5n
LCBUUlVFKTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFieXRlc1JlYWQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBnX3N0cmlu
Z19hcHBlbmRfbGVuKGJ1ZmZlclN0cmluZywgYnVmZmVyLCBieXRlc1JlYWQpOworICAgIH0KKwor
ICAgICpsZW5ndGggPSBidWZmZXJTdHJpbmctPmxlbjsKKyAgICAqY29udGVudHMgPSBnX3N0cmlu
Z19mcmVlKGJ1ZmZlclN0cmluZywgRkFMU0UpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Vc2VyTWVzc2FnZXMoVXNlck1lc3NhZ2VUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIC8vIE5vcm1hbCBtZXNzYWdlIHdpdGggYSByZXBs
eS4KKyAgICBhdXRvKiBtZXNzYWdlID0gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuSGVs
bG8iLCBnX3ZhcmlhbnRfbmV3KCIocykiLCAiV2ViUHJvY2VzcyIpKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSwgPT0sICJUZXN0Lkhl
bGxvIik7CisgICAgYXV0byogcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3Bh
cmFtZXRlcnMobWVzc2FnZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAg
ICBjb25zdCBjaGFyKiBwYXJhbWV0ZXIgPSBudWxscHRyOworICAgIGdfdmFyaWFudF9nZXQocGFy
YW1ldGVycywgIigmcykiLCAmcGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocGFyYW1l
dGVyLCA9PSwgIldlYlByb2Nlc3MiKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X2ZkX2xpc3QobWVzc2FnZSkpOworICAgIGF1dG8qIHJlcGx5ID0gdGVzdC0+c2Vu
ZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNT
QUdFKHJlcGx5KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X25hbWUocmVwbHkpLCA9PSwgIlRlc3QuSGVsbG8iKTsKKyAgICBwYXJhbWV0ZXJzID0gd2Via2l0
X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChwYXJhbWV0ZXJzKTsKKyAgICBwYXJhbWV0ZXIgPSBudWxscHRyOworICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIigmcykiLCAmcGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
cGFyYW1ldGVyLCA9PSwgIlVJUHJvY2VzcyIpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfZmRfbGlzdChyZXBseSkpOworCisgICAgLy8gTWVzc2FnZSB3aXRoIG5v
IHBhcmFtZXRlcnMuCisgICAgbWVzc2FnZSA9IHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0
LlBpbmciLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2Vf
Z2V0X3BhcmFtZXRlcnMobWVzc2FnZSkpOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3NhZ2Uo
bWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJlcGx5
KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUocmVw
bHkpLCA9PSwgIlRlc3QuUG9uZyIpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSkpOworCisgICAgLy8gTWVzc2FnZSB3aXRoIGZpbGUg
ZGVzY3JpcHRvcnMuCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcigpLmRhdGEoKSwgInNpbXBsZS5qc29uIiwgbnVsbHB0
cikpOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3NhZ2Uod2Via2l0X3VzZXJfbWVzc2FnZV9u
ZXcoIlRlc3QuT3BlbkZpbGUiLCBnX3ZhcmlhbnRfbmV3KCIocykiLCBmaWxlbmFtZS5nZXQoKSkp
KTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAg
ICBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICBnaW50MzIgaGFuZGxlOwor
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihoKSIsICZoYW5kbGUpOworICAgIGdfYXNz
ZXJ0X2NtcGludChoYW5kbGUsID09LCAwKTsKKyAgICBhdXRvKiBmZExpc3QgPSB3ZWJraXRfdXNl
cl9tZXNzYWdlX2dldF9mZF9saXN0KHJlcGx5KTsKKyAgICBnX2Fzc2VydF90cnVlKEdfSVNfVU5J
WF9GRF9MSVNUKGZkTGlzdCkpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QoZmRMaXN0KSk7CisgICAgZ19hc3NlcnRfY21waW50KGdfdW5p
eF9mZF9saXN0X2dldF9sZW5ndGgoZmRMaXN0KSwgPT0sIDEpOworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICBpbnQgZmQgPSBnX3VuaXhfZmRfbGlzdF9nZXQoZmRMaXN0LCBo
YW5kbGUsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfY21waW50KGZkLCAhPSwgLTEp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGZkQ29udGVudHM7CisgICAgZ3NpemUgZmRDb250ZW50c0xlbmd0aDsKKyAgICBnX2Fz
c2VydF90cnVlKHJlYWRGaWxlRGVzY3JpdHBvcihmZCwgJmZkQ29udGVudHMub3V0UHRyKCksICZm
ZENvbnRlbnRzTGVuZ3RoKSk7CisgICAgY2xvc2UoZmQpOworICAgIEdVbmlxdWVPdXRQdHI8Y2hh
cj4gZmlsZUNvbnRlbnRzOworICAgIGdzaXplIGZpbGVDb250ZW50c0xlbmd0aDsKKyAgICBnX2Fz
c2VydF90cnVlKGdfZmlsZV9nZXRfY29udGVudHMoZmlsZW5hbWUuZ2V0KCksICZmaWxlQ29udGVu
dHMub3V0UHRyKCksICZmaWxlQ29udGVudHNMZW5ndGgsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBtZW0oZmRDb250ZW50cy5nZXQoKSwgZmRDb250ZW50c0xlbmd0aCwgZmlsZUNvbnRlbnRz
LmdldCgpLCBmaWxlQ29udGVudHNMZW5ndGgpOworCisgICAgLy8gVW5oYW5kbGVkIG1lc3NhZ2Uu
CisgICAgR0Vycm9yKiBtZXNzYWdlRXJyb3IgPSBudWxscHRyOworICAgIHJlcGx5ID0gdGVzdC0+
c2VuZE1lc3NhZ2Uod2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuSW52YWxpZCIsIG51bGxw
dHIpLCAmbWVzc2FnZUVycm9yKTsKKyAgICBnX2Fzc2VydF9udWxsKHJlcGx5KTsKKyAgICBnX2Fz
c2VydF9lcnJvcihtZXNzYWdlRXJyb3IsIFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1IsIFdFQktJ
VF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpOworCisgICAgLy8gTWVzc2FnZSB0aGF0
IGlzIG5ldmVyIHJlcGxpZWQuCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93ZWJDb250ZXh0Lmdl
dCgpKSk7CisgICAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKHdlYlZpZXcu
Z2V0KCksIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkluZmluaXRlIiwgbnVsbHB0ciks
IG51bGxwdHIsCisgICAgICAgIFtdKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGlj
X2Nhc3Q8VXNlck1lc3NhZ2VUZXN0Kj4odXNlckRhdGEpOworICAgICAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vi
X3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKFdFQktJVF9XRUJfVklFVyhvYmplY3Qp
LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfZXJyb3Io
ZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKTsKKyAgICAgICAg
ICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAgICB9LCB0ZXN0KTsKKyAgICBnX21haW5f
bG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisKKyAgICAvLyBXYWl0IGZvciByZWNlaXZlZCBt
ZXNzYWdlLgorICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIs
IG51bGxwdHIpOworICAgIG1lc3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxWaWV3TWVzc2FnZVJlY2Vp
dmVkKCJEb2N1bWVudExvYWRlZCIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJf
TUVTU0FHRShtZXNzYWdlKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3Nh
Z2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiRG9jdW1lbnRMb2FkZWQiKTsKKworICAgIC8vIFJl
cGx5IHRvIGEgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UodGVzdC0+bV93ZWJWaWV3LCB3ZWJraXRf
dXNlcl9tZXNzYWdlX25ldygiVGVzdC5Bc3luY1BpbmciLCBudWxscHRyKSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0cik7CisgICAgbWVzc2FnZSA9IHRlc3QtPndhaXRVbnRpbFZpZXdNZXNzYWdl
UmVjZWl2ZWQoIlRlc3QuUGluZyIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJf
TUVTU0FHRShtZXNzYWdlKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3Nh
Z2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiVGVzdC5QaW5nIik7CisgICAgd2Via2l0X3VzZXJf
bWVzc2FnZV9zZW5kX3JlcGx5KG1lc3NhZ2UsIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0
LlBvbmciLCBudWxscHRyKSk7CisgICAgbWVzc2FnZSA9IHRlc3QtPndhaXRVbnRpbFZpZXdNZXNz
YWdlUmVjZWl2ZWQoIlRlc3QuQXN5bmNQb25nIik7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
SVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSwgPT0sICJUZXN0LkFzeW5jUG9uZyIpOworCisg
ICAgLy8gQ3JlYXRlIGEgbmV3IHBhZ2UgYW5kIHdhaXQgZm9yIHBhZ2UgY3JlYXRlZCBtZXNzYWdl
LgorICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoVGVzdDo6Y3JlYXRlV2ViVmlldyh0ZXN0
LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKHdl
YlZpZXcuZ2V0KCksICI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIsIG51bGxwdHIpOworICAg
IG1lc3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJQYWdlQ3Jl
YXRlZCIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdl
KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVz
c2FnZSksID09LCAiUGFnZUNyZWF0ZWQiKTsKKyAgICBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJf
bWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBh
cmFtZXRlcnMpOworICAgIGd1aW50NjQgcGFnZUlEOworICAgIGdfdmFyaWFudF9nZXQocGFyYW1l
dGVycywgIih0KSIsICZwYWdlSUQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQocGFnZUlELCA9PSwg
d2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIFJl
cXVlc3QgdG8gc3RhcnQgYSBwaW5nIHRvIGFsbCBwcm9jZXNzZXMuCisgICAgdGVzdC0+c2VuZE1l
ZHNzYWdlVG9BbGxFeHRlbnNpb25zKHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LlJlcXVl
c3RQaW5nIiwgbnVsbHB0cikpOworICAgIC8vIFdlIHNob3VsZCByZWNlaXZlZCB0d28gcGluZyBy
ZXF1ZXN0cy4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBwaW5nMSA9IHRlc3QtPndh
aXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoIlBpbmciKTsKKyAgICBHUmVmUHRyPFdlYktp
dFVzZXJNZXNzYWdlPiBwaW5nMiA9IHRlc3QtPndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2
ZWQoIlBpbmciKTsKKyAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkocGluZzEuZ2V0
KCksIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQb25nIiwgbnVsbHB0cikpOworICAgIHRlc3Qt
PndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoIlRlc3QuRmluaXNoZWRQaW5nUmVxdWVz
dCIpOworICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShwaW5nMi5nZXQoKSwgd2Vi
a2l0X3VzZXJfbWVzc2FnZV9uZXcoIlBvbmciLCBudWxscHRyKSk7CisgICAgdGVzdC0+d2FpdFVu
dGlsQ29udGV4dE1lc3NhZ2VSZWNlaXZlZCgiVGVzdC5GaW5pc2hlZFBpbmdSZXF1ZXN0Iik7Cit9
CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJF
eHRlbnNpb24iLCAiZG9tLWRvY3VtZW50LXRpdGxlIiwgdGVzdFdlYkV4dGVuc2lvbkdldFRpdGxl
KTsKQEAgLTU1Myw2ICs3OTMsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImZvcm0tY29udHJvbHMtYXNzb2NpYXRlZC1zaWdu
YWwiLCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCk7CiAgICAgRm9ybVN1
Ym1pc3Npb25UZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLXN1Ym1pc3Npb24t
c3RlcHMiLCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybVN1Ym1pc3Npb25TdGVwcyk7CiAgICAgV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgInBhZ2UtaWQiLCB0ZXN0V2ViRXh0ZW5z
aW9uUGFnZUlEKTsKKyAgICBVc2VyTWVzc2FnZVRlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9u
IiwgInVzZXItbWVzc2FnZXMiLCB0ZXN0V2ViRXh0ZW5zaW9uVXNlck1lc3NhZ2VzKTsKIH0KIAog
dm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggYjNiOWM4YmZmZWEuLmE4NTVm
YTRiYTk0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
V2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0yMSw3ICsyMSwxMCBAQAogI2luY2x1ZGUg
IldlYlByb2Nlc3NUZXN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVm
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxm
Y250bC5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnaW8vZ3VuaXhmZGxpc3Qu
aD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2lmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgogI2VuZGlmCkBAIC0xNjIsNiArMTY1LDggQEAgc3RhdGljIHZvaWQgZG9j
dW1lbnRMb2FkZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJLaXRXZWJFeHRl
bnNpb24qIGUKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAjZW5kaWYKIAor
ICAgIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyh3ZWJQYWdlLCB3ZWJraXRf
dXNlcl9tZXNzYWdlX25ldygiRG9jdW1lbnRMb2FkZWQiLCBudWxscHRyKSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0cik7CisKICAgICBncG9pbnRlciBkYXRhID0gZ19vYmplY3RfZ2V0X2RhdGEo
R19PQkpFQ1QoZXh0ZW5zaW9uKSwgImRidXMtY29ubmVjdGlvbiIpOwogICAgIGlmIChkYXRhKQog
ICAgICAgICBlbWl0RG9jdW1lbnRMb2FkZWQoR19EQlVTX0NPTk5FQ1RJT04oZGF0YSkpOwpAQCAt
NDE2LDYgKzQyMSw2NiBAQCBzdGF0aWMgdm9pZCB3aWxsU3VibWl0Rm9ybUNhbGxiYWNrKFdlYktp
dFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdERPTUVsZW1lbnQqIGZvcgogICAgIH0KIH0KIAorc3Rh
dGljIGdib29sZWFuIHBhZ2VNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3
ZWJQYWdlLCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24pCit7CisgICAgY29uc3QgY2hhciogbWVzc2FnZU5hbWUgPSB3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpOworICAgIGlmICghZ19zdHJjbXAwKG1lc3NhZ2VOYW1l
LCAiVGVzdC5IZWxsbyIpKSB7CisgICAgICAgIGF1dG8qIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNl
cl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKG1lc3NhZ2UpOworICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKHBhcmFtZXRlcnMpOworICAgICAgICBjb25zdCBjaGFyKiBwYXJhbWV0ZXIgPSBudWxscHRy
OworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoJnMpIiwgJnBhcmFtZXRlcik7
CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIsID09LCAiV2ViUHJvY2VzcyIpOwor
ICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QobWVz
c2FnZSkpOworICAgICAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkobWVzc2FnZSwg
d2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuSGVsbG8iLCBnX3ZhcmlhbnRfbmV3KCIocyki
LCAiVUlQcm9jZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYg
KCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0LlBpbmciKSkgeworICAgICAgICBnX2Fzc2Vy
dF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSkpOworICAg
ICAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkobWVzc2FnZSwgd2Via2l0X3VzZXJf
bWVzc2FnZV9uZXcoIlRlc3QuUG9uZyIsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7
CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0Lk9wZW5GaWxl
IikpIHsKKyAgICAgICAgYXV0byogcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X3BhcmFtZXRlcnMobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVy
cyk7CisgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gbnVsbHB0cjsKKyAgICAgICAgZ192
YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKCZzKSIsICZmaWxlbmFtZSk7CisgICAgICAgIGludCBm
ZCA9IGdfb3BlbihmaWxlbmFtZSwgT19SRE9OTFksIDApOworICAgICAgICBnX2Fzc2VydF9jbXBp
bnQoZmQsICE9LCAtMSk7CisgICAgICAgIEdSZWZQdHI8R1VuaXhGRExpc3Q+IGZkTGlzdCA9IGFk
b3B0R1JlZihnX3VuaXhfZmRfbGlzdF9uZXcoKSk7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICAgICAgZ191bml4X2ZkX2xpc3RfYXBwZW5kKGZkTGlzdC5nZXQoKSwg
ZmQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKKyAgICAgICAgY2xvc2UoZmQpOworCisgICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vf
c2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3Qo
IlRlc3QuT3BlbkZpbGUiLCBnX3ZhcmlhbnRfbmV3KCIoaCkiLCAwKSwgZmRMaXN0LmdldCgpKSk7
CisgICAgICAgIC8vIEZpbGUgZGVzY3JpcHRvcnMgYXJlIHN0b2xlZCB3aGVuIHRoZSBtZXNzYWdl
IGlzIHNlbnQuCisgICAgICAgIGdfYXNzZXJ0X2NtcGludChnX3VuaXhfZmRfbGlzdF9nZXRfbGVu
Z3RoKGZkTGlzdC5nZXQoKSksID09LCAwKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQor
CisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0LkluZmluaXRlIikpIHsKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFn
X3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0LkFzeW5jUGluZyIpKSB7CisgICAgICAgIHdlYmtp
dF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyh3ZWJQYWdlLCB3ZWJraXRfdXNlcl9tZXNz
YWdlX25ldygiVGVzdC5QaW5nIiwgbnVsbHB0ciksIG51bGxwdHIsCisgICAgICAgICAgICBbXShH
T2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcikgeworICAgICAg
ICAgICAgICAgIGF1dG8qIHdlYlBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsKKyAgICAg
ICAgICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgICAgICAgICAg
R1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gcmVwbHkgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9w
YWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCh3ZWJQYWdlLCByZXN1bHQsICZlcnJvci5v
dXRQdHIoKSkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfbmFtZShyZXBseS5nZXQoKSksID09LCAiVGVzdC5Qb25nIik7CisgICAgICAgICAgICAgICAg
d2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3KHdlYlBhZ2UsIHdlYmtpdF91c2Vy
X21lc3NhZ2VfbmV3KCJUZXN0LkFzeW5jUG9uZyIsIG51bGxwdHIpLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyKTsKKyAgICAgICAgICAgIH0sIG51bGxwdHIpOworICAgICAgICByZXR1cm4gVFJV
RTsKKyAgICB9CisKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyB2b2lkIGVtaXRQYWdl
Q3JlYXRlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGd1aW50NjQgcGFnZUlEKQogewog
ICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCgKQEAgLTQzNiw2ICs1
MDEsOSBAQCBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lv
biogZXh0ZW5zaW9uLCBXZWJLaXRXZWJQYWdlKiB3ZQogICAgIGVsc2UKICAgICAgICAgZGVsYXll
ZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25hbChQYWdlQ3JlYXRlZFNpZ25hbCwgd2Vi
a2l0X3dlYl9wYWdlX2dldF9pZCh3ZWJQYWdlKSkpOwogCisgICAgd2Via2l0X3dlYl9leHRlbnNp
b25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQoZXh0ZW5zaW9uLCB3ZWJraXRfdXNlcl9tZXNzYWdl
X25ldygiUGFnZUNyZWF0ZWQiLCBnX3ZhcmlhbnRfbmV3KCIodCkiLCB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2lkKHdlYlBhZ2UpKSksCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwor
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxM
QkFDSyhkb2N1bWVudExvYWRlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdlYlBhZ2UsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZENhbGxi
YWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJl
cXVlc3QiLCBHX0NBTExCQUNLKHNlbmRSZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKQEAgLTQ0
Myw2ICs1MTEsMjYgQEAgc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0V2ViUGFnZSogd2UKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYlBhZ2UsICJjb250ZXh0LW1lbnUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51Q2FsbGJh
Y2spLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJmb3JtLWNvbnRy
b2xzLWFzc29jaWF0ZWQtZm9yLWZyYW1lIiwgR19DQUxMQkFDSyhmb3JtQ29udHJvbHNBc3NvY2lh
dGVkRm9yRnJhbWVDYWxsYmFjayksIGV4dGVuc2lvbik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3
ZWJQYWdlLCAid2lsbC1zdWJtaXQtZm9ybSIsIEdfQ0FMTEJBQ0sod2lsbFN1Ym1pdEZvcm1DYWxs
YmFjayksIGV4dGVuc2lvbik7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAidXNlci1t
ZXNzYWdlLXJlY2VpdmVkIiwgR19DQUxMQkFDSyhwYWdlTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2sp
LCBleHRlbnNpb24pOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gZXh0ZW5zaW9uTWVzc2FnZVJlY2Vp
dmVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFVzZXJNZXNz
YWdlKiBtZXNzYWdlKQoreworICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lID0gd2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKTsKKyAgICBpZiAoZ19zdHJjbXAwKG1lc3NhZ2VO
YW1lLCAiUmVxdWVzdFBpbmciKSkgeworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5k
X21lc3NhZ2VfdG9fY29udGV4dChleHRlbnNpb24sIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQ
aW5nIiwgbnVsbHB0ciksIG51bGxwdHIsCisgICAgICAgICAgICBbXShHT2JqZWN0KiBvYmplY3Qs
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcikgeworICAgICAgICAgICAgICAgIGF1dG8q
IGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKG9iamVjdCk7CisgICAgICAgICAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICAgICAgICAgIEdSZWZQdHI8
V2ViS2l0VXNlck1lc3NhZ2U+IHJlcGx5ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaChleHRlbnNpb24sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKSk7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdl
X2dldF9uYW1lKHJlcGx5LmdldCgpKSwgPT0sICJQb25nIik7CisgICAgICAgICAgICAgICAgd2Vi
a2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQoZXh0ZW5zaW9uLCB3ZWJr
aXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5GaW5pc2hlZFBpbmdSZXF1ZXN0IiwgbnVsbHB0ciks
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgfSwgbnVsbHB0cik7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3Rh
dGljIGNoYXIqIGVjaG9DYWxsYmFjayhjb25zdCBjaGFyKiBtZXNzYWdlKQpAQCAtNjE0LDYgKzcw
Miw3IEBAIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dp
dGhfdXNlcl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF9zY3JpcHRfd29ybGRfZ2V0X25hbWUoaXNvbGF0ZWRXb3JsZCksID09LCAiV2ViRXh0ZW5zaW9u
VGVzdFNjcmlwdFdvcmxkIik7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChl
eHRlbnNpb24pLCAid2stc2NyaXB0LXdvcmxkIiwgaXNvbGF0ZWRXb3JsZCwgZ19vYmplY3RfdW5y
ZWYpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChleHRlbnNpb24sICJ1c2VyLW1lc3NhZ2UtcmVj
ZWl2ZWQiLCBHX0NBTExCQUNLKGV4dGVuc2lvbk1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgbnVs
bHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdChleHRlbnNpb24sICJwYWdlLWNyZWF0ZWQiLCBH
X0NBTExCQUNLKHBhZ2VDcmVhdGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpLCAid2luZG93LW9iamVj
dC1jbGVhcmVkIiwgR19DQUxMQkFDSyh3aW5kb3dPYmplY3RDbGVhcmVkKSwgbnVsbHB0cik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380864</attachid>
            <date>2019-10-14 03:05:33 -0700</date>
            <delta_ts>2019-10-14 03:44:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-user-messages.diff</filename>
            <type>text/plain</type>
            <size>136477</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDJjM2RlNWRlNTdm
Li5lNzc5ZjdhZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgbmV3IGZpbGVzIGNvbnRhaW5pbmcgdHJhbnNsYXRhYmxlIHN0cmluZ3Mu
CisKIDIwMTktMDktMDcgIENocmlzdGlhbiBLaXJiYWNoICA8Q2hyaXN0aWFuLktpcmJhY2hAZ29v
Z2xlbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlZCBHZXJtYW4gdHJhbnNsYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRleCBiNTRkMjFkMzY3Mi4u
NGNlYmQ5NTk5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9Q
T1RGSUxFUy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMu
aW4KQEAgLTcsNiArNyw3IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCiAuLi8uLi8uLi9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorLi4vLi4vLi4vV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKIC4uLy4uLy4uL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkVycm9yc1NvdXAuY3BwCkBAIC00
Myw0ICs0NCw1IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJLaXRJbnNwZWN0b3JXaW5kb3cuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogLi4vLi4vLi4vV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5jcHAKKy4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKIC4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkYjdmNDQ2
NzQ5Li42MWY4MzcyNjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMTktMTAtMTQg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIG5ldmVyIGV4cG9zZWQgYW4gQVBJIHRvIHNl
bmQvcmVjZWl2ZSBtZXNzYWdlcyB0by9mcm9tIFdlYiBleHRlbnNpb25zLCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdXNlIHRoZWlyIG93bgorICAgICAgICBJUEMuIE5vdywgd2l0aCBQU09OIGVuYWJs
ZWQsIGl0J3MgYSBsb3QgbW9yZSBkaWZmaWN1bHQgdG8gaW1wbGVtZW50IHRoZSBjdXN0b20gSVBD
IG9uIHRoZSBhcHBsaWNhdGlvbiBzaWRlLAorICAgICAgICBiZWNhdXNlIGFwcGxpY2F0aW9ucyBu
ZWVkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHRoZSB3ZWIgcHJvY2Vzc2VzIGxhdW5jaGVkLCBhbmQg
dGhlIGNoYW5nZXMgb2Ygd2ViIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIHdlYiB2aWV3IHRvIHNl
bmQgdGhlIG1lc3NhZ2VzIHRvIHRoZSByaWdodCBleHRlbnNpb24uIFRoYXQncyBhbHJlYWR5IGRv
bmUgaW50ZXJuYWxseSBieSBXZWJLaXQsIHNvIGl0IHdvdWxkIGJlCisgICAgICAgIGVhc2llciB0
byBwcm92aWRlIGEgc2ltcGxlIEFQSSBzbyB0aGF0IGFwcHMgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCB0aGUgd2ViIHByb2Nlc3MgYmVpbmcgdXNlZC4gVGhpcyBwYXRjaCBhZGRzCisgICAgICAg
IFdlYktpdFVzZXJNZXNzYWdlLCBhIHNpbXBsZSBtZXNzYWdlIEFQSSBjb25zaXN0aW5nIG9uIGEg
bWVzc2FnZSBuYW1lLCBwYXJhbWV0ZXJzIGFuZCBmaWxlIGRlc2NyaXB0b3JzLiBNZXNzYWdlcwor
ICAgICAgICBjYW4gYmUgc2VudCBmcm9tIGEgV2ViS2l0V2ViQ29udGV4dCB0byBhbGwgdGhlIFdl
YktpdFdlYkV4dGVuc2lvbnMsIG9yIGZyb20gYSBXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzCisg
ICAgICAgIFdlYktpdFdlYkNvbnRleHQsIG9yIGZyb20gYSBXZWJLaXRXZWJWaWV3IHRvIGl0cyBX
ZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2ZXJzYSkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFVzZXJN
ZXNzYWdlRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRVc2VyTWVzc2FnZUdldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3VzZXJfbWVzc2FnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlQ3Jl
YXRlKToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldyk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX25l
d193aXRoX2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKToKKyAgICAgICAg
KHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJf
bWVzc2FnZV9zZW5kX3JlcGx5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lc3NhZ2VQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50
Q29kZXJzR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5o
OiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVzc2FnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lc3NhZ2U6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2dsaWIvVXNlck1l
c3NhZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlOjpVc2VyTWVzc2Fn
ZSk6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
Y29udGV4dF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21l
c3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAg
ICAoQVBJOjpWaWV3Q2xpZW50OjpkaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OmRpZFJlY2VpdmVVc2VyTWVzc2FnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6ZXh0ZW5zaW9uIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3Nh
Z2UpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHQpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHRfZmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2Vy
TWVzc2FnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcp
OgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJl
eHRlbnNpb25zLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kTWVzc2Fn
ZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vu
ZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24pOgorCiAyMDE5LTEwLTA4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIGFib3V0OmdwdSBzaG91bGQgYWxzbyBzaG93IHRoZSBjbGllbnQgRUdMIGV4dGVuc2lv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGFhNzY1NWI5ZDU3Li5kZmUxYzUyOTIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDksNiArMTA5LDcgQEAgc2V0KFdlYktpdDJH
VEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmgKQEAg
LTY5NCwxMiArNjk1LDE0IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAgICAgICAgICAg
ICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51LmNwcAogICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJ
dGVtLmNwcAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0
SGl0VGVzdFJlc3VsdC5jcHAKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9n
bGliL1dlYktpdFVzZXJNZXNzYWdlLmNwcAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJ
Un0vU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAogICAgICAgICAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgICAg
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0
aW9ucy5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51SXRlbS5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAorICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oCiAgICAgICAgICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaAogICAgICAgICAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oCiAgICAg
ICAgICAgICAke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
Ki5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDg5Nzc0MjFiYjEwLi43M2ZiNmExZDg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xMzQsNiArMTM0LDcgQEAgc2V0KFdQRV9B
UElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViUmVzb3VyY2UuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxODM0MDQ4OWYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3Nh
Z2UuY3BwCkBAIC0wLDAgKzEsMzA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5o
IgorCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgiCisjaW5jbHVkZSA8Z2lv
L2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQ
Uk9QX05BTUUsCisgICAgUFJPUF9QQVJBTUVURVJTLAorICAgIFBST1BfRkRfTElTVAorfTsKKwor
LyoqCisgKiBTRUNUSU9OOiBXZWJLaXRVc2VyTWVzc2FnZQorICogQFNob3J0X2Rlc2NyaXB0aW9u
OiBBIHVzZXIgbWVzc2FnZQorICogQFRpdGxlOiBXZWJLaXRVc2VyTWVzc2FnZQorICogQFNlZV9h
bHNvOiAjV2ViS2l0V2ViQ29udGV4dCwgI1dlYktpdFdlYlZpZXcsICNXZWJLaXRXZWJFeHRlbnNp
b24sICNXZWJLaXRXZWJQYWdlCisgKgorICogQSBXZWJLaXRVc2VyTWVzc2FnZSBpcyBhIG1lc3Nh
Z2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgVUkg
cHJvY2VzcworICogYW5kIFdlYiBleHRlbnNpb25zLiBBIFdlYktpdFVzZXJNZXNzYWdlIGFsd2F5
cyBoYXZlIGEgbmFtZSwgYW5kIGl0IGNhbiBhbHNvIGluY2x1ZGUgcGFyYW1ldGVycyBhbmQKKyAq
IFVOSVggZmlsZSBkZXNjcmlwdG9ycy4gTWVzc2FnZXMgY2FuIGJlIHNlbnQgZnJvbSBhICNXZWJL
aXRXZWJDb250ZXh0IHRvIGFsbCAjV2ViS2l0V2ViRXh0ZW5zaW9uPCEtLSAtLT5zLAorICogZnJv
bSBhICNXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzIGNvcnJlc3BvbmRpbmcgI1dlYktpdFdlYkNv
bnRleHQsIGFuZCBmcm9tIGEgI1dlYktpdFdlYlZpZXcgdG8gaXRzCisgKiBjb3JyZXNwb25kaW5n
ICNXZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2ZXJzYSkuIE9uZSB0byBvbmUgbWVzc2FnZXMgY2Fu
IGJlIHJlcGxpZWQgZGlyZWN0bHkgd2l0aAorICogd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3Jl
cGx5KCkuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2Fn
ZVByaXZhdGUgeworICAgIFVzZXJNZXNzYWdlIG1lc3NhZ2U7CisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4gcmVwbHlIYW5kbGVyOworfTsKKworV0VCS0lUX0RFRklO
RV9UWVBFKFdlYktpdFVzZXJNZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlLCBHX1RZUEVfSU5J
VElBTExZX1VOT1dORUQpCisKK0dfREVGSU5FX1FVQVJLKFdlYktpdFVzZXJNZXNzYWdlRXJyb3Is
IHdlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3IpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZXNz
YWdlRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIG1l
c3NhZ2UgPSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7CisKKyAgICBpZiAoYXV0byByZXBs
eUhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1lc3NhZ2UtPnByaXYtPnJlcGx5SGFuZGxlciwgbnVs
bHB0cikpCisgICAgICAgIHJlcGx5SGFuZGxlcihVc2VyTWVzc2FnZShtZXNzYWdlLT5wcml2LT5t
ZXNzYWdlLm5hbWUsIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpKTsKKwor
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91c2VyX21lc3NhZ2VfcGFyZW50X2NsYXNzKS0+ZGlz
cG9zZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVzc2FnZUdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UgPSBXRUJL
SVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNh
c2UgUFJPUF9OQU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF91
c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfUEFSQU1FVEVSUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfdmFyaWFudCh2YWx1ZSwgd2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9GRF9MSVNUOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QobWVzc2FnZSkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRVc2VyTWVzc2FnZVNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAg
V2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UgPSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAgICBt
ZXNzYWdlLT5wcml2LT5tZXNzYWdlLm5hbWUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOwor
ICAgICAgICBtZXNzYWdlLT5wcml2LT5tZXNzYWdlLnR5cGUgPSBVc2VyTWVzc2FnZTo6VHlwZTo6
TWVzc2FnZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBUkFNRVRFUlM6CisgICAg
ICAgIG1lc3NhZ2UtPnByaXYtPm1lc3NhZ2UucGFyYW1ldGVycyA9IGdfdmFsdWVfZ2V0X3Zhcmlh
bnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRkRfTElTVDoKKyAgICAg
ICAgbWVzc2FnZS0+cHJpdi0+bWVzc2FnZS5maWxlRGVzY3JpcHRvcnMgPSBHX1VOSVhfRkRfTElT
VChnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJfbWVz
c2FnZV9jbGFzc19pbml0KFdlYktpdFVzZXJNZXNzYWdlQ2xhc3MqIGtsYXNzKQoreworICAgIEdP
YmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAg
Z09iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0VXNlck1lc3NhZ2VEaXNwb3NlOworICAgIGdP
YmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VXNlck1lc3NhZ2VHZXRQcm9wZXJ0eTsK
KyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJv
cGVydHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyTWVzc2FnZTpuYW1lOgorICAgICAq
CisgICAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgbWVzc2FnZS4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
KyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX05BTUUsCisgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAibmFtZSIsCisgICAgICAgICAgICBfKCJOYW1l
IiksCisgICAgICAgICAgICBfKCJUaGUgdXNlciBtZXNzYWdlIG5hbWUiKSwKKyAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRVc2VyTWVzc2FnZTpwYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogVGhlIHBh
cmFtZXRlcnMgb2YgdGhlIHVzZXIgbWVzc2FnZSBhcyBhICNHVmFyaWFudCwgb3IgJU5VTEwKKyAg
ICAgKiBpZiB0aGUgbWVzc2FnZSBkb2Vzbid0IGluY2x1ZGUgcGFyYW1ldGVycy4gTm90ZSB0aGF0
IG9ubHkgY29tcGxldGUgdHlwZXMgYXJlCisgICAgICogYWxsb3dlZC4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1BBUkFNRVRFUlMsCisgICAg
ICAgIGdfcGFyYW1fc3BlY192YXJpYW50KAorICAgICAgICAgICAgInBhcmFtZXRlcnMiLAorICAg
ICAgICAgICAgXygiUGFyYW1ldGVycyIpLAorICAgICAgICAgICAgXygiVGhlIHVzZXIgbWVzc2Fn
ZSBwYXJhbWV0ZXJzIiksCisgICAgICAgICAgICBHX1ZBUklBTlRfVFlQRV9BTlksCisgICAgICAg
ICAgICBudWxscHRyLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoq
CisgICAgICogV2ViS2l0VXNlck1lc3NhZ2U6ZmQtbGlzdDoKKyAgICAgKgorICAgICAqIFRoZSBV
TklYIGZpbGUgZGVzY3JpcHRvcnMgb2YgdGhlIHVzZXIgbWVzc2FnZS4gTm90ZSB0aGF0IGZpbGUg
ZGVzY3JpcHRvcnMgYXJlCisgICAgICogc3RvbGVuIGZyb20gdGhlICNHVW5peEZETGlzdCB3aGVu
IHRoZSBtZXNzYWdlIGlzIHNlbnQsIHNvIHRoZSBsaXN0IHdpbGwgYmUgZW1wdHkKKyAgICAgKiBh
ZnRlciB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50LiBJZiB0aGUgc2VuZGVyIG5lZWRzIHRvIGtl
ZXAgdGhlIGZpbGUgZGVzY3JpcHRvcnMsCisgICAgICogYGR1cCgyKWAgY2FuIGJlIHVzZWQgdG8g
c2VuZCBhIG5ldyBkZXNjcmlwdG9yIHJlZmVycmluZyB0byB0aGUgc2FtZSBkYXRhLgorICAgICAq
CisgICAgICogU2luY2U6IDIuMjgKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfRkRfTElTVCwK
KyAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKKyAgICAgICAgICAgICJmZC1saXN0IiwKKyAg
ICAgICAgICAgIF8oIkZpbGUgRGVzY3JpcHRvciBMaXN0IiksCisgICAgICAgICAgICBfKCJUaGUg
dXNlciBtZXNzYWdlIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycyIpLAorICAgICAgICAgICAgR19U
WVBFX1VOSVhfRkRfTElTVCwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKK30KKwor
V2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFVzZXJNZXNzYWdlJiYg
bWVzc2FnZSkKK3sKKyAgICBXZWJLaXRVc2VyTWVzc2FnZSogcmV0dXJuVmFsdWUgPSBXRUJLSVRf
VVNFUl9NRVNTQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsIG51bGxw
dHIpKTsKKyAgICByZXR1cm5WYWx1ZS0+cHJpdi0+bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSk7
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0
VXNlck1lc3NhZ2VDcmVhdGUoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIHJlcGx5SGFuZGxlcikKK3sKKyAgICBXZWJLaXRVc2Vy
TWVzc2FnZSogcmV0dXJuVmFsdWUgPSBXRUJLSVRfVVNFUl9NRVNTQUdFKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsIG51bGxwdHIpKTsKKyAgICByZXR1cm5WYWx1ZS0+cHJp
di0+bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSk7CisgICAgcmV0dXJuVmFsdWUtPnByaXYtPnJl
cGx5SGFuZGxlciA9IFdURk1vdmUocmVwbHlIYW5kbGVyKTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKK1VzZXJNZXNzYWdlJiB3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UoV2ViS2l0
VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIG1lc3NhZ2UtPnByaXYtPm1lc3Nh
Z2U7Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVzc2FnZV9uZXc6CisgKiBAbmFtZTogdGhl
IG1lc3NhZ2UgbmFtZQorICogQHBhcmFtZXRlcnM6IChudWxsYWJsZSk6IHRoZSBtZXNzYWdlIHBh
cmFtZXRlcnMgYXMgYSAjR1ZhcmlhbnQsIG9yICVOVUxMCisgKgorICogQ3JlYXRlIGEgbmV3ICNX
ZWJLaXRVc2VyTWVzc2FnZSB3aXRoIEBuYW1lLgorICoKKyAqIFJldHVybnM6IHRoZSBuZXdseSBj
cmVhdGVkICNXZWJLaXRVc2VyTWVzc2FnZSBvYmplY3QuCisgKgorICogU2luY2U6IDIuMjgKKyAq
LworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KGNvbnN0IGNoYXIq
IG5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVybiB3ZWJraXRfdXNlcl9t
ZXNzYWdlX25ld193aXRoX2ZkX2xpc3QobmFtZSwgcGFyYW1ldGVycywgbnVsbHB0cik7Cit9CisK
Ky8qKgorICogd2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9saXN0OgorICogQG5hbWU6
IHRoZSBtZXNzYWdlIG5hbWUKKyAqIEBwYXJhbWV0ZXJzOiAobnVsbGFibGUpOiB0aGUgbWVzc2Fn
ZSBwYXJhbWV0ZXJzIGFzIGEgI0dWYXJpYW50CisgKiBAZmRfbGlzdDogKG51bGxhYmxlKTogdGhl
IG1lc3NhZ2UgZmlsZSBkZXNjcmlwdG9ycworICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0VXNl
ck1lc3NhZ2UgaW5jbHVkaW5nIGFsc28gYSBsaXN0IG9mIFVOSVggZmlsZSBkZXNjcmlwdG9ycyB0
byBiZSBzZW50LgorICogVGhlIGZpbGUgZGVzY3JpcHRvcnMgYXJlIHN0b2xlbiBmcm9tIHRoZSAj
R1VuaXhGRExpc3Qgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50LCBzbyB0aGUgbGlzdAorICogd2ls
bCBiZSBlbXB0eSBhZnRlciB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50LgorICoKKyAqIFJldHVy
bnM6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRVc2VyTWVzc2FnZSBvYmplY3QuCisgKgorICog
U2luY2U6IDIuMjgKKyAqLworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdF91c2VyX21lc3NhZ2Vf
bmV3X3dpdGhfZmRfbGlzdChjb25zdCBjaGFyKiBuYW1lLCBHVmFyaWFudCogcGFyYW1ldGVycywg
R1VuaXhGRExpc3QqIGZkTGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBu
dWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZmRMaXN0IHx8IEdfSVNfVU5JWF9G
RF9MSVNUKGZkTGlzdCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIFdFQktJVF9VU0VSX01FU1NB
R0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgIm5hbWUiLCBuYW1lLCAi
cGFyYW1ldGVycyIsIHBhcmFtZXRlcnMsICJmZC1saXN0IiwgZmRMaXN0LCBudWxscHRyKSk7Cit9
CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZToKKyAqIEBtZXNzYWdlOiBh
ICNXZWJLaXRVc2VyTWVzc2FnZQorICoKKyAqIEdldCB0aGUgQG1lc3NhZ2UgbmFtZQorICoKKyAq
IFJldHVybnM6IHRoZSBtZXNzYWdlIG5hbWUKKyAqCisgKiBTaW5jZTogMi4yOAorICovCitjb25z
dCBjaGFyKiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKFdlYktpdFVzZXJNZXNzYWdlKiBt
ZXNzYWdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NB
R0UobWVzc2FnZSksIG51bGxwdHIpOworCisgICAgcmV0dXJuIG1lc3NhZ2UtPnByaXYtPm1lc3Nh
Z2UubmFtZS5kYXRhKCk7Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFy
YW1ldGVyczoKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICoKKyAqIEdldCB0
aGUgQG1lc3NhZ2UgcGFyYW1ldGVycworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTog
dGhlIG1lc3NhZ2UgcGFyYW1ldGVycworICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK0dWYXJpYW50
KiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKFdlYktpdFVzZXJNZXNzYWdlKiBt
ZXNzYWdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NB
R0UobWVzc2FnZSksIG51bGxwdHIpOworCisgICAgcmV0dXJuIG1lc3NhZ2UtPnByaXYtPm1lc3Nh
Z2UucGFyYW1ldGVycy5nZXQoKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9mZF9saXN0OgorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKgorICogR2V0
IHRoZSBAbWVzc2FnZSBsaXN0IG9mIGZpbGUgZGVzY3JpdHBvcgorICoKKyAqIFJldHVybnM6ICh0
cmFuc2ZlciBub25lKTogdGhlIG1lc3NhZ2UgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzCisgKgor
ICogU2luY2U6IDIuMjgKKyAqLworR1VuaXhGRExpc3QqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X2ZkX2xpc3QoV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSwgbnVsbHB0cik7CisKKyAg
ICByZXR1cm4gbWVzc2FnZS0+cHJpdi0+bWVzc2FnZS5maWxlRGVzY3JpcHRvcnMuZ2V0KCk7Cit9
CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5OgorICogQG1lc3NhZ2U6
IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKiBAcmVwbHk6IGEgI1dlYktpdFVzZXJNZXNzYWdlIHRv
IHNlbmQgYXMgcmVwbHkKKyAqCisgKiBTZW5kIGEgcmVwbHkgdG8gQG1lc3NhZ2UuIElmIEByZXBs
eSBpcyBmbG9hdGluZywgaXQncyBjb25zdW1lZC4KKyAqIFlvdSBjYW4gb25seSBzZW5kIGEgcmVw
bHkgdG8gYSAjV2ViS2l0VXNlck1lc3NhZ2UgdGhhdCBoYXMgYmVlbgorICogcmVjZWl2ZWQuCisg
KgorICogU2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVw
bHkoV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIFdlYktpdFVzZXJNZXNzYWdlKiByZXBseSkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShyZXBseSkpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwobWVzc2FnZS0+cHJpdi0+cmVwbHlIYW5kbGVyKTsKKworICAg
IEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFkb3B0ZWRSZXBseSA9IHJlcGx5OworICAgIGlm
IChhdXRvIHJlcGx5SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobWVzc2FnZS0+cHJpdi0+cmVwbHlI
YW5kbGVyLCBudWxscHRyKSkKKyAgICAgICAgcmVwbHlIYW5kbGVyKHJlcGx5ID8gcmVwbHktPnBy
aXYtPm1lc3NhZ2UgOiBVc2VyTWVzc2FnZSgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJjZWFhMDFkZTgxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2VQcml2
YXRlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlVzZXJNZXNzYWdlLmgiCisjaW5jbHVkZSAi
V2ViS2l0VXNlck1lc3NhZ2UuaCIKKworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdFVzZXJNZXNz
YWdlQ3JlYXRlKFdlYktpdDo6VXNlck1lc3NhZ2UmJik7CitXZWJLaXRVc2VyTWVzc2FnZSogd2Vi
a2l0VXNlck1lc3NhZ2VDcmVhdGUoV2ViS2l0OjpVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3NhZ2UmJik+JiYpOworV2ViS2l0OjpVc2VyTWVzc2Fn
ZSYgd2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKFdlYktpdFVzZXJNZXNzYWdlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxYmQ5ZDQ4M2Q5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3Bw
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
R0xpYi5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBHVmFyaWFudCogdmFyaWFudCkKK3sKKyAgICBpZiAo
IXZhcmlhbnQpIHsKKyAgICAgICAgZW5jb2RlciA8PCBDU3RyaW5nKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBlbmNvZGVyIDw8IENTdHJpbmcoZ192YXJpYW50X2dldF90eXBlX3N0
cmluZyh2YXJpYW50KSk7CisgICAgZW5jb2RlciA8PCBEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihnX3ZhcmlhbnRfZ2V0X2RhdGEodmFyaWFudCkpLCBnX3ZhcmlhbnRf
Z2V0X3NpemUodmFyaWFudCkpOworfQorCitib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBH
UmVmUHRyPEdWYXJpYW50PiYgdmFyaWFudCkKK3sKKyAgICBDU3RyaW5nIHZhcmlhbnRUeXBlU3Ry
aW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFyaWFudFR5cGVTdHJpbmcpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodmFyaWFudFR5cGVTdHJpbmcuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFnX3ZhcmlhbnRfdHlwZV9zdHJpbmdfaXNf
dmFsaWQodmFyaWFudFR5cGVTdHJpbmcuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRGF0YVJlZmVyZW5jZSBkYXRhOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisJcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogdmFyaWFudFR5cGUgPSBnX3ZhcmlhbnRfdHlw
ZV9uZXcodmFyaWFudFR5cGVTdHJpbmcuZGF0YSgpKTsKKyAgICB2YXJpYW50ID0gZ192YXJpYW50
X25ld19mcm9tX2RhdGEodmFyaWFudFR5cGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgRkFM
U0UsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGdfdmFyaWFudF90eXBlX2ZyZWUodmFyaWFudFR5
cGUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNzA5NjgxZTg4ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmgKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR1ZhcmlhbnQgR1ZhcmlhbnQ7
CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29kZShFbmNvZGVyJiwgR1ZhcmlhbnQqKTsK
K2Jvb2wgZGVjb2RlKERlY29kZXImLCBHUmVmUHRyPEdWYXJpYW50PiYpOworCit9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3Nh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiMDYxMWNlMWUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlLmgiCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVyc0dMaWIuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgVXNlck1lc3NhZ2U6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHR5cGUpOworICAgIGlmICh0eXBlID09IFR5cGU6Ok51
bGwpCisgICAgICAgIHJldHVybjsKKworICAgIGVuY29kZXIgPDwgbmFtZTsKKyAgICBpZiAodHlw
ZSA9PSBUeXBlOjpFcnJvcikgeworICAgICAgICBlbmNvZGVyIDw8IGVycm9yQ29kZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHBhcmFtZXRlcnMu
Z2V0KCkpOworCisgICAgVmVjdG9yPElQQzo6QXR0YWNobWVudD4gYXR0YWNobWVudHM7CisgICAg
aWYgKGZpbGVEZXNjcmlwdG9ycykgeworICAgICAgICBpbnQgZmRzTGVuZ3RoOworICAgICAgICBH
VW5pcXVlUHRyPGdpbnQ+IGZkcyhnX3VuaXhfZmRfbGlzdF9zdGVhbF9mZHMoZmlsZURlc2NyaXB0
b3JzLmdldCgpLCAmZmRzTGVuZ3RoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmRz
TGVuZ3RoOyArK2kpCisgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoSVBDOjpBdHRhY2ht
ZW50KGZkcy5nZXQoKVtpXSkpOworICAgIH0KKyAgICBlbmNvZGVyIDw8IGF0dGFjaG1lbnRzOwor
fQorCitPcHRpb25hbDxVc2VyTWVzc2FnZT4gVXNlck1lc3NhZ2U6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCit7CisgICAgVXNlck1lc3NhZ2UgcmVzdWx0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHJlc3VsdC50eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGlmIChyZXN1bHQudHlwZSA9PSBUeXBlOjpOdWxsKQorICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubmFtZSkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAocmVzdWx0LnR5cGUgPT0gVHlwZTo6RXJyb3Ip
IHsKKyAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGVycm9yQ29kZTsKKyAgICAgICAgZGVjb2Rl
ciA+PiBlcnJvckNvZGU7CisgICAgICAgIGlmICghZXJyb3JDb2RlKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXN1bHQuZXJyb3JDb2RlID0gZXJyb3JDb2Rl
LnZhbHVlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCFJUEM6
OmRlY29kZShkZWNvZGVyLCByZXN1bHQucGFyYW1ldGVycykpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4gYXR0YWNo
bWVudHM7CisgICAgZGVjb2RlciA+PiBhdHRhY2htZW50czsKKyAgICBpZiAoIWF0dGFjaG1lbnRz
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghYXR0YWNobWVudHMtPmlz
RW1wdHkoKSkgeworICAgICAgICByZXN1bHQuZmlsZURlc2NyaXB0b3JzID0gYWRvcHRHUmVmKGdf
dW5peF9mZF9saXN0X25ldygpKTsKKyAgICAgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogKmF0
dGFjaG1lbnRzKSB7CisgICAgICAgICAgICBpZiAoZ191bml4X2ZkX2xpc3RfYXBwZW5kKHJlc3Vs
dC5maWxlRGVzY3JpcHRvcnMuZ2V0KCksIGF0dGFjaG1lbnQucmVsZWFzZUZpbGVEZXNjcmlwdG9y
KCksIG51bGxwdHIpID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmJiZGQ2NGQ2ODAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dVbml4RkRMaXN0
IEdVbml4RkRMaXN0OwordHlwZWRlZiBzdHJ1Y3QgX0dWYXJpYW50IEdWYXJpYW50OworCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IFVzZXJNZXNzYWdlIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUg
eyBOdWxsLCBNZXNzYWdlLCBFcnJvciB9OworCisgICAgVXNlck1lc3NhZ2UoKQorICAgICAgICA6
IHR5cGUoVHlwZTo6TnVsbCkKKyAgICB7CisgICAgfQorCisgICAgVXNlck1lc3NhZ2UoY29uc3Qg
Q1N0cmluZyYgbmFtZSwgdWludDMyX3QgZXJyb3JDb2RlKQorICAgICAgICA6IHR5cGUoVHlwZTo6
RXJyb3IpCisgICAgICAgICwgbmFtZShuYW1lKQorICAgICAgICAsIGVycm9yQ29kZShlcnJvckNv
ZGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0
OworICAgIHN0YXRpYyBPcHRpb25hbDxVc2VyTWVzc2FnZT4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OworCisgICAgVHlwZSB0eXBlIHsgVHlwZTo6TnVsbCB9OworICAgIENTdHJpbmcgbmFtZTsKKyAg
ICBHUmVmUHRyPEdWYXJpYW50PiBwYXJhbWV0ZXJzOworICAgIEdSZWZQdHI8R1VuaXhGRExpc3Q+
IGZpbGVEZXNjcmlwdG9yczsKKyAgICB1aW50MzJfdCBlcnJvckNvZGUgeyAwIH07Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzR1RLLnR4dAppbmRleCAxZTRlNDJjZGRiZS4uYzllMTUzZDZhMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzR1RLLnR4dApAQCAtNjcsNiArNjcsNyBAQCBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVz
dWx0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBA
bm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5
CitTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwIEBuby11bmlmeQogCiBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCiBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC04
Miw3ICs4Myw5IEBAIFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKIAog
U2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCitTaGFyZWQvZ2xpYi9Bcmd1
bWVudENvZGVyc0dMaWIuY3BwCiBTaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGli
LmNwcAorU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuY3BwCiBTaGFyZWQvZ2xpYi9XZWJDb250ZXh0
TWVudUl0ZW1HbGliLmNwcAogCiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAt
NDA0LDYgKzQwNyw4IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUhvc3QuY3BwCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViS2l0V2ViUGFnZUFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCiAKK1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VH
TGliLmNwcAorCiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIu
Y3BwCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IGEyMmU0ZjEwOTk0Li41YjUxNGQ1MjE2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0CkBAIC02OCw2ICs2OCw3IEBAIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RS
ZXN1bHQuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3Bw
IEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcCBAbm8tdW5p
ZnkKK1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAgQG5vLXVuaWZ5CiAKIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1NpbXBsZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAg
LTgxLDcgKzgyLDkgQEAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdp
bk1vZHVsZVVuaXguY3BwCiAKIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAK
IAorU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcAogU2hhcmVkL2dsaWIvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKK1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAogU2hh
cmVkL2dsaWIvV2ViQ29udGV4dE1lbnVJdGVtR2xpYi5jcHAKIAogU2hhcmVkL2xpYndwZS9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50TGliV1BFLmNwcApAQCAtMjQ3LDYgKzI1MCw4IEBAIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCiAKIFdlYlBy
b2Nlc3MvV2ViUGFnZS9hdGsvV2ViS2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCiAK
K1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorCiBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3BwCiAKIFdlYlByb2Nlc3MvV2ViUGFn
ZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
aW5kZXggNDA1YjFjNWFkZTkuLjM2ZmJlZWFkZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNDcsMTAgKzQ3
LDEyIEBACiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UmVtb3RlSW5zcGVjdG9yLmg+CkBAIC0xMjMsNiArMTI1LDcgQEAgZW51bSB7CiAgICAgSU5JVElB
TElaRV9XRUJfRVhURU5TSU9OUywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNT
SU9OUywKICAgICBBVVRPTUFUSU9OX1NUQVJURUQsCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVE
LAogCiAgICAgTEFTVF9TSUdOQUwKIH07CkBAIC0zNzIsNiArMzc1LDEyIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBwcml2
LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAg
ICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0RGF0YVN0b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOwor
ICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRVc2VyTWVzc2FnZUhhbmRsZXIoW3dlYkNvbnRleHQg
PSBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+KHdlYkNvbnRleHQpXShVc2VyTWVzc2FnZSYmIG1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsKKyAgICAgICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVmLgorICAgICAgICBH
UmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdl
Q3JlYXRlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgICAgIGdfc2lnbmFsX2VtaXQod2ViQ29u
dGV4dC5nZXQoKSwgc2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2Fn
ZS5nZXQoKSwgJnJldHVyblZhbHVlKTsKKyAgICB9KTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnBy
aXYtPnByb2Nlc3NQb29sKTsKIApAQCAtNTc0LDYgKzU4MywzMiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRl
eHRDbGFzcwogICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKICAg
ICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUT01B
VElPTl9TRVNTSU9OKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6OnVzZXIt
bWVzc2FnZS1yZWNlaXZlZDoKKyAgICAgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0
CisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2ViS2l0VXNlck1lc3NhZ2UgcmVjZWl2ZWQKKyAgICAg
KgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhICNXZWJLaXRVc2VyTWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIGEKKyAgICAgKiAjV2ViS2l0V2ViRXh0ZW5zaW9uLiBZb3UgY2Fu
IHJlcGx5IHRvIHRoZSBtZXNzYWdlIHVzaW5nCisgICAgICogd2Via2l0X3VzZXJfbWVzc2FnZV9z
ZW5kX3JlcGx5KCkuCisgICAgICoKKyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNz
YWdlIGFzeW5jaHJvbm91c2x5IGJ5IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBA
bWVzc2FnZSBhbmQgcmV0dXJuaW5nICVUUlVFLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRS
VUUgaWYgdGhlIG1lc3NhZ2Ugd2FzIGhhbmRsZWQsIG9yICVGQUxTRSBvdGhlcndpc2UuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIHNpZ25hbHNbVVNFUl9NRVNTQUdF
X1JFQ0VJVkVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInVzZXItbWVzc2FnZS1yZWNlaXZl
ZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgIEdf
U0lHTkFMX1JVTl9MQVNULAorICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViQ29udGV4
dENsYXNzLCB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVs
YXRvcl90cnVlX2hhbmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9n
ZW5lcmljLAorICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVf
VVNFUl9NRVNTQUdFKTsKIH0KIAogc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1bHRXZWJDb250
ZXh0KGdwb2ludGVyKQpAQCAtMTY4MCw2ICsxNzE1LDI3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X2luaXRpYWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zKFdlYktpdFdlYkNvbnRleHQq
IGNvCiAgICAgY29udGV4dC0+cHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXItPnNldE5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKFdURk1vdmUobWFwKSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9j
b250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9uczoKKyAqIEBjb250ZXh0OiB0aGUg
I1dlYktpdFdlYkNvbnRleHQKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICoK
KyAqIFNlbmQgQG1lc3NhZ2UgdG8gYWxsICNXZWJLaXRXZWJFeHRlbnNpb248IS0tIC0tPnMgYXNz
b2NpYXRlZCB0byBAY29udGV4dC4KKyAqIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNv
bnN1bWVkLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0
X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVy
ZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1l
c3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3Mg
OiBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpCisgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24o
d2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwgMCk7Cit9CisKIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dEluaXRpYWxpemVOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0KQogewogICAgIGdfc2lnbmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJ
TklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAxMDdmNGRk
MDQwNC4uODQyYWU0OGJiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC01NiwxMiArNTYsMTQgQEAKICNpbmNsdWRlICJX
ZWJLaXRVSUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNl
ck1lc3NhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8anNjL0pTQ0NvbnRl
eHRQcml2YXRlLmg+CkBAIC0xNjMsNiArMTY1LDggQEAgZW51bSB7CiAgICAgU0hPV19PUFRJT05f
TUVOVSwKICNlbmRpZgogCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAorCiAgICAgTEFTVF9T
SUdOQUwKIH07CiAKQEAgLTQ0NCw2ICs0NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0
V2ViVmlld0RpZENoYW5nZVBhZ2VJRChtX3dlYlZpZXcpOwogICAgIH0KIAorICAgIHZvaWQgZGlk
UmVjZWl2ZVVzZXJNZXNzYWdlKFdLV1BFOjpWaWV3JiwgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Via2l0V2ViVmlld0RpZFJlY2VpdmVVc2VyTWVz
c2FnZShtX3dlYlZpZXcsIFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICB9CisKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogI2VuZGlm
CkBAIC0yMDgxLDYgKzIwOTAsMzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNz
X2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgIEdES19UWVBF
X0VWRU5UIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUsCiAgICAgICAgIEdES19UWVBFX1JF
Q1RBTkdMRSB8IEdfU0lHTkFMX1RZUEVfU1RBVElDX1NDT1BFKTsKICNlbmRpZiAvLyBQTEFURk9S
TShHVEspCisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojp1c2VyLW1lc3NhZ2UtcmVj
ZWl2ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2ViS2l0VXNlck1lc3Nh
Z2UgcmVjZWl2ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBh
ICNXZWJLaXRVc2VyTWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZQorICAgICAqICNXZWJLaXRX
ZWJQYWdlIGNvcnJlc3BvbmRpbmcgdG8gQHdlYl92aWV3LiBZb3UgY2FuIHJlcGx5IHRvIHRoZSBt
ZXNzYWdlCisgICAgICogdXNpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkuCisg
ICAgICoKKyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdlIGFzeW5jaHJvbm91
c2x5IGJ5IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVzc2FnZSBhbmQgcmV0
dXJuaW5nICVUUlVFLiBJZiB0aGUgbGFzdCByZWZlcmVuY2Ugb2YgQG1lc3NhZ2UgaXMgcmVtb3Zl
ZAorICAgICAqIGFuZCB0aGUgbWVzc2FnZSBoYXMgbm90IGJlZW4gcmVwbGllZCB0bywgdGhlIG9w
ZXJhdGlvbiBpbiB0aGUgI1dlYktpdFdlYlBhZ2Ugd2lsbAorICAgICAqIGZpbmlzaCB3aXRoIGVy
cm9yICVXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFLgorICAgICAqCisgICAg
ICogUmV0dXJuczogJVRSVUUgaWYgdGhlIG1lc3NhZ2Ugd2FzIGhhbmRsZWQsIG9yICVGQUxTRSBv
dGhlcndpc2UuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIHNpZ25h
bHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInVzZXIt
bWVzc2FnZS1yZWNlaXZlZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFz
cyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICBHX1NUUlVDVF9PRkZTRVQo
V2ViS2l0V2ViVmlld0NsYXNzLCB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpLAorICAgICAgICBnX3Np
Z25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAg
V0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0NhbmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAt
MjU4Niw2ICsyNjIzLDE0IEBAIHZvaWQgd2Via2l0V2ViVmlld0RpZENoYW5nZVBhZ2VJRChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJWaWV3
KSwgInBhZ2UtaWQiKTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3RGlkUmVjZWl2ZVVzZXJNZXNz
YWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICAvLyBTaW5rIHRoZSBmbG9hdGluZyByZWYuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVz
c2FnZT4gdXNlck1lc3NhZ2UgPSB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKG1lc3Nh
Z2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFs
dWU7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1VTRVJfTUVTU0FHRV9SRUNF
SVZFRF0sIDAsIHVzZXJNZXNzYWdlLmdldCgpLCAmcmV0dXJuVmFsdWUpOworfQorCiAjaWYgUExB
VEZPUk0oV1BFKQogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tlbmQ6CkBAIC00MjIy
LDMgKzQyNjcsNzAgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXll
ZF9jYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCB1bnMKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+ZnJhbWVEaXNwbGF5ZWRDYWxsYmFja3MucmVtb3ZlRmlyc3RNYXRjaGluZyhtYXRjaEZ1
bmN0aW9uKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShXUEUpCisKKy8qKgorICogd2Via2l0X3dl
Yl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJW
aWV3CisgKiBAbWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBjYW5jZWxsYWJsZTog
KG51bGxhYmxlKTogYSAjR0NhbmNlbGxhYmxlIG9yICVOVUxMIHRvIGlnbm9yZQorICogQGNhbGxi
YWNrOiAoc2NvcGUgYXN5bmMpOiAobnVsbGFibGUpOiBBICNHQXN5bmNSZWFkeUNhbGxiYWNrIHRv
IGNhbGwgd2hlbiB0aGUgcmVxdWVzdCBpcyBzYXRpc2ZpZWQgb3IgJU5VTEwKKyAqIEB1c2VyX2Rh
dGE6IChjbG9zdXJlKTogdGhlIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBmdW5jdGlvbgorICoK
KyAqIFNlbmQgQG1lc3NhZ2UgdG8gdGhlICNXZWJLaXRXZWJQYWdlIGNvcnJlc3BvbmRpbmcgdG8g
QHdlYl92aWV3LiBJZiBAbWVzc2FnZSBpcyBmbG9hdGluZywgaXQncyBjb25zdW1lZC4KKyAqCisg
KiBJZiB5b3UgZG9uJ3QgZXhwZWN0IGFueSByZXBseSwgb3IgeW91IHNpbXBseSB3YW50IHRvIGln
bm9yZSBpdCwgeW91IGNhbiBwYXNzICVOVUxMIGFzIEBjYWxsYmFjay4KKyAqIFdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgY2FuIHRo
ZW4gY2FsbAorICogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaCgp
IHRvIGdldCB0aGUgbWVzc2FnZSByZXBseS4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit2b2lk
IHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJs
ZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSk7CisKKyAgICAv
LyBXZSBzaW5rIHRoZSByZWZlcmVuY2UgaW4gY2FzZSBvZiBiZWluZyBmbG9hdGluZy4KKyAgICBH
UmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBhZG9wdGVkTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAg
YXV0byYgcGFnZSA9IGdldFBhZ2Uod2ViVmlldyk7CisgICAgaWYgKCFjYWxsYmFjaykgeworICAg
ICAgICBwYWdlLmVuc3VyZVJ1bm5pbmdQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbih3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVz
c2FnZSkpLCBwYWdlLndlYlBhZ2VJRCgpLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdl
YlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0oVXNlck1lc3NhZ2UmJiByZXBseU1lc3NhZ2UpIHsKKyAgICAgICAgc3dp
dGNoIChyZXBseU1lc3NhZ2UudHlwZSkgeworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBl
OjpOdWxsOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwg
R19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2Vs
bGVkIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5
cGU6Ok1lc3NhZ2U6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQo
KSwgZ19vYmplY3RfcmVmX3Npbmsod2Via2l0VXNlck1lc3NhZ2VDcmVhdGUoV1RGTW92ZShyZXBs
eU1lc3NhZ2UpKSksIHN0YXRpY19jYXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJlZikp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5cGU6OkVy
cm9yOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgV0VC
S0lUX1VTRVJfTUVTU0FHRV9FUlJPUiwgcmVwbHlNZXNzYWdlLmVycm9yQ29kZSwgXygiTWVzc2Fn
ZSAlcyB3YXMgbm90IGhhbmRsZWQiKSwgcmVwbHlNZXNzYWdlLm5hbWUuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfTsKKyAgICBwYWdlLmVuc3VyZVJ1bm5pbmdQ
cm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kTWVzc2Fn
ZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNz
YWdlKSksCisgICAgICAgIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdlLndlYlBhZ2VJ
RCgpLnRvVUludDY0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3Nh
Z2VfdG9fcGFnZV9maW5pc2g6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBy
ZXN1bHQ6IGEgI0dBc3luY1Jlc3VsdAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVy
cm9yIG9yICVOVUxMIHRvIGlnbm9yCisgKgorICogRmluaXNoIGFuIGFzeW5jaHJvbm91cyBvcGVy
YXRpb24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSgp
LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAjV2ViS2l0VXNlck1lc3NhZ2Ug
d2l0aCB0aGUgcmVwbHkgb3IgJU5VTEwgaW4gY2FzZSBvZiBlcnJvci4KKyAqCisgKiBTaW5jZTog
Mi4yOAorICovCitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2Fn
ZV90b19wYWdlX2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCB3ZWJWaWV3KSwgbnVsbHB0cik7CisKKyAgICByZXR1
cm4gV0VCS0lUX1VTRVJfTUVTU0FHRShnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIoR19UQVNLKHJl
c3VsdCksIGVycm9yKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCA4YzQ1MDU1Y2U3OC4uMzMyNjQx
NDIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNs
dWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgpAQCAtMTAxLDMgKzEwMiw0IEBAIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGUoV2ViS2l0V2ViVmlldyosIFdlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdCopCiBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3U2NyaXB0RGlhbG9nKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRTY3JpcHREaWFsb2cqKTsKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdS
dW5GaWxlQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7
CiB2b2lkIHdlYmtpdFdlYlZpZXdEaWRDaGFuZ2VQYWdlSUQoV2ViS2l0V2ViVmlldyopOwordm9p
ZCB3ZWJraXRXZWJWaWV3RGlkUmVjZWl2ZVVzZXJNZXNzYWdlKFdlYktpdFdlYlZpZXcqLCBXZWJL
aXQ6OlVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpVc2VyTWVz
c2FnZSYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVzZXJNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmExNWVkNzQzYzI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJ
REVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJL
SVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtp
dDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktp
dFVzZXJNZXNzYWdlX2gKKyNkZWZpbmUgV2ViS2l0VXNlck1lc3NhZ2VfaAorCisjaW5jbHVkZSA8
Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFICAgICAgICAgICAgKHdl
YmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FH
RShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9VU0VSX01FU1NBR0UsIFdlYktpdFVzZXJNZXNzYWdlKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9N
RVNTQUdFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2VDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19VU0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKSkKKyNkZWZpbmUgV0VC
S0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsIFdlYktpdFVzZXJNZXNzYWdlQ2xh
c3MpKQorCisjZGVmaW5lIFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1Igd2Via2l0X3VzZXJfbWVz
c2FnZV9lcnJvcl9xdWFyayAoKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2Ug
ICAgICAgIFdlYktpdFVzZXJNZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNz
YWdlQ2xhc3MgICBXZWJLaXRVc2VyTWVzc2FnZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFVzZXJNZXNzYWdlUHJpdmF0ZSBXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGU7CisKKy8qKgorICog
V2ViS2l0VXNlck1lc3NhZ2VFcnJvcjoKKyAqIEBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExF
RF9NRVNTQUdFOiBUaGUgbWVzc2FnZSB3YXMgbm90IGhhbmRsZWQgYnkgdGhlIHJlY2VpdmVyLgor
ICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIGVycm9ycyBoYXBwZW5pbmcgd2hlbiBz
ZW5kaW5nIHVzZXIgbWVzc2FnZXMuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordHlwZWRlZiBl
bnVtIHsKKyAgICBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFCit9IFdlYktp
dFVzZXJNZXNzYWdlRXJyb3I7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2UgeworICAgIEdJ
bml0aWFsbHlVbm93bmVkIHBhcmVudDsKKworICAgIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZSAq
cHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFzcyB7CisgICAgR0luaXRp
YWxseVVub3duZWRDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgR1F1YXJrCit3ZWJr
aXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdl
YktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3ICAgICAgICAgICAgICAo
Y29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0ZXJzKTsKKworV0VCS0lUX0FQSSBXZWJL
aXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QgKGNv
bnN0IGNoYXIgICAgICAgICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVmFyaWFudCAgICAgICAgICAqcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1VuaXhGRExpc3QgICAgICAgKmZkX2xpc3QpOworCitXRUJLSVRf
QVBJIGNvbnN0IGNoYXIgKgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSAgICAgICAgIChX
ZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgR1ZhcmlhbnQgKgord2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVz
c2FnZSk7CisKK1dFQktJVF9BUEkgR1VuaXhGRExpc3QgKgord2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfZmRfbGlzdCAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5ICAgICAgIChXZWJLaXRVc2Vy
TWVzc2FnZSAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlck1lc3NhZ2UgKnJlcGx5KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmlu
ZGV4IDk1Y2U1YTVmNGYwLi40ZGE5Y2U3ZDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdE5ldHdvcmtQcm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZXNzYWdl
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaD4KIAogR19C
RUdJTl9ERUNMUwpAQCAtMTQzLDE3ICsxNDQsMTggQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0
IHsKIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFy
ZW50OwogCi0gICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAgICAqZG93
bmxvYWQpOwotICAgIHZvaWQgKCogaW5pdGlhbGl6ZV93ZWJfZXh0ZW5zaW9ucykgICAgICAgICAg
IChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFs
aXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpj
b250ZXh0KTsKLSAgICB2b2lkICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpz
ZXNzaW9uKTsKKyAgICB2b2lkICAgICAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RG93bmxvYWQgICAg
ICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX3dlYl9leHRlbnNp
b25zKSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2
b2lkICAgICAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdl
YkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIGdib29sZWFuICgqIHVzZXJf
bWVzc2FnZV9yZWNlaXZlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAqbWVzc2FnZSk7CiAKICAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEp
ICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKLSAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAg
LTMxOCw2ICszMjAsMTAgQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90aWZpY2F0
aW9uX3Blcm1pc3Npb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICphbGxvd2VkX29yaWdp
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICpkaXNhbGxvd2VkX29yaWdpbnMpOwogCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4
dGVuc2lvbnMgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVz
ZXJNZXNzYWdlICAgICAgICAgICAgICptZXNzYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmlu
ZGV4IDhjMjE5YTNiMDA4Li40ZmY2OTZiNjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0
b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291cmNlLmg+CkBAIC0yNjksOSAr
MjcwLDEwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE9wdGlvbk1lbnUgICAgICAgICAg
ICAqbWVudSk7CiAgICAgdm9pZCAgICAgICAoKiB3ZWJfcHJvY2Vzc190ZXJtaW5hdGVkKSAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uIHJlYXNvbik7CisgICAgZ2Jvb2xlYW4gICAoKiB1c2VyX21lc3NhZ2VfcmVjZWl2
ZWQpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3Nh
Z2UgICAgICAgICAgICptZXNzYWdlKTsKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkg
KHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogfTsKIAogV0VC
S0lUX0FQSSBHVHlwZQpAQCAtNTUyLDYgKzU1NCwxOCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtp
dF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSAqc3Rh
dGUpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9f
cGFnZSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAg
ICAgKmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRl
ciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJN
ZXNzYWdlICoKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2ggICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAg
ICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICoqZXJyb3IpOworCiBH
X0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4
IDU2NmI4YzZjNjU3Li41ODU2Y2M0NDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CkBAIC03MCw2ICs3MCw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlm
aWNhdGVfZm9yX2hvc3QKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbAogd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfaW5p
dGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5k
X21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdl
YktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMjc3LDYgKzI3OCw4IEBAIHdlYmtpdF93
ZWJfdmlld19nZXRfZWRpdG9yX3N0YXRlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nlc3Npb25fc3Rh
dGUKIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUKIHdlYmtpdF93ZWJfdmll
d19nZXRfbWFpbl9yZXNvdXJjZQord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdl
Cit3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiAKIDxTVUJTRUNU
SU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0x
NTM4LDYgKzE1NDEsOCBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbklu
aXRpYWxpemVGdW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0
YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRl
bnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRf
bWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktp
dFdlYkV4dGVuc2lvbkNsYXNzCkBAIC0xNTYyLDYgKzE1NjcsOCBAQCB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2lkCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaQogd2Via2l0X3dlYl9wYWdlX2dldF9tYWlu
X2ZyYW1lCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcgord2Via2l0X3dlYl9wYWdlX3NlbmRf
bWVzc2FnZV90b192aWV3Cit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmlu
aXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViUGFnZUNsYXNzCkBAIC0xNzM4
LDMgKzE3NDUsMzIgQEAgd2Via2l0X3ByaW50X2N1c3RvbV93aWRnZXRfZ2V0X3R5cGUKIDxGSUxF
PldlYktpdFVSSVV0aWxpdGllczwvRklMRT4KIHdlYmtpdF91cmlfZm9yX2Rpc3BsYXkKIDwvU0VD
VElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyTWVzc2FnZTwvRklMRT4KK1dlYktp
dFVzZXJNZXNzYWdlCit3ZWJraXRfdXNlcl9tZXNzYWdlX25ldword2Via2l0X3VzZXJfbWVzc2Fn
ZV9uZXdfd2l0aF9mZF9saXN0Cit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lCit3ZWJraXRf
dXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9s
aXN0Cit3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkKKworPFNVQlNFQ1RJT04gV2ViS2l0
VXNlck1lc3NhZ2VFcnJvcj4KK1dFQktJVF9VU0VSX01FU1NBR0VfRVJST1IKK1dlYktpdFVzZXJN
ZXNzYWdlRXJyb3IKK3dlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsKKworPFNVQlNFQ1RJ
T04gU3RhbmRhcmQ+CitXZWJLaXRVc2VyTWVzc2FnZUNsYXNzCitXRUJLSVRfVFlQRV9VU0VSX01F
U1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0UKK1dFQktJVF9JU19VU0VSX01FU1NBR0UKK1dFQktJ
VF9VU0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJVF9JU19VU0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJ
VF9VU0VSX01FU1NBR0VfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRV
c2VyTWVzc2FnZVByaXZhdGUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUKKzwvU0VDVElP
Tj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCBjNDUzMTFkZGZiZi4uNWRhYWIwODZlODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1kb2NzLnNnbWwKQEAgLTYzLDYgKzYzLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0QXV0b21hdGlvblNlc3Npb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRVc2VyTWVzc2FnZS54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVy
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBmM2VkY2Nl
MWVkOC4uMTZlZjdlYjZkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29u
dGVudEZpbHRlclN0b3JlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29u
dGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCmluZGV4IDA1ODli
YjEzODViLi5iMTNkYTZkMGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9BUElWaWV3Q2xpZW50LmgKQEAgLTI1LDYgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTR2xvYmFsQ29udGV4dFJl
ZjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Niw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdLV1BFOjpWaWV3JiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydExvYWQoV0tXUEU6
OlZpZXcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUGFnZUlEKFdLV1BFOjpWaWV3
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVzc2FnZShXS1dQRTo6Vmll
dyYsIFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
OlVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6VXNlck1lc3NhZ2UoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApp
bmRleCBjOGI0ZTc5ZDE3Ni4uMjE3MTA5YjM0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00MjUsNCArNDI1LDkgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlV2ViUGFnZUlEKCkgY29uc3QKICAgICBtX3Zp
ZXcuZGlkQ2hhbmdlUGFnZUlEKCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNlbmRNZXNz
YWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChVc2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3ZpZXcuZGlk
UmVjZWl2ZVVzZXJNZXNzYWdlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggODdiN2JiOTIyMzcuLmZi
MzhiMTk2ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Bh
Z2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5oCkBAIC00Miw2ICs0Miw3IEBAIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXI7CitzdHJ1Y3QgVXNlck1lc3NhZ2U7CiAKIGVudW0gY2xhc3MgVW5kb09y
UmVkbyA6IGJvb2w7CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIEF0a09iamVjdCog
YWNjZXNzaWJsZSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJWaWV3KFVz
ZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOwor
CiBwcml2YXRlOgogICAgIC8vIFBhZ2VDbGllbnQKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2lu
Z0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4
IDBiOWZhYTA2NmUxLi5lMGY1YTc4OTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0yMTAsNiArMjEwLDExIEBAIHZvaWQgVmlldzo6ZGlkQ2hh
bmdlUGFnZUlEKCkKICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlUGFnZUlEKCp0aGlzKTsKIH0KIAor
dm9pZCBWaWV3OjpkaWRSZWNlaXZlVXNlck1lc3NhZ2UoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlVXNlck1lc3NhZ2UoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBWaWV3Ojpz
ZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiB7CiAgICAgbV9zaXplID0gc2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKaW5kZXggOWJjNmI5
ZjE5YWMuLjE0ZWIzODUzMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dQRVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERvd25s
b2FkUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK3N0
cnVjdCBVc2VyTWVzc2FnZTsKIH0KIAogbmFtZXNwYWNlIFdLV1BFIHsKQEAgLTY4LDYgKzY5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxv
YWRQcm94eSYpOwogICAgIHZvaWQgd2lsbFN0YXJ0TG9hZCgpOwogICAgIHZvaWQgZGlkQ2hhbmdl
UGFnZUlEKCk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0OjpVc2VyTWVz
c2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3NhZ2UmJik+JiYp
OwogCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UoKSB7IHJldHVybiAqbV9wYWdlUHJv
eHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRVc2VyTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRV
c2VyTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MWZm
OTljZWExMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0VXNlck1lc3NhZ2UuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VC
X0VYVEVOU0lPTl9IX0lOU0lERV9fKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBi
ZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyTWVzc2Fn
ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJNZXNzYWdlX2gKKworI2luY2x1ZGUgPGdpby9naW8uaD4K
KyNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZp
bmUgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFICAgICAgICAgICAgKHdlYmtpdF91c2VyX21lc3Nh
Z2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01F
U1NBR0UsIFdlYktpdFVzZXJNZXNzYWdlKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FH
RShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9VU0VSX01FU1NBR0UpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VT
RVJfTUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19V
U0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FH
RV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJL
SVRfVFlQRV9VU0VSX01FU1NBR0UsIFdlYktpdFVzZXJNZXNzYWdlQ2xhc3MpKQorCisjZGVmaW5l
IFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1Igd2Via2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFy
ayAoKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgIFdlYktpdFVz
ZXJNZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlQ2xhc3MgICBXZWJL
aXRVc2VyTWVzc2FnZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlUHJp
dmF0ZSBXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGU7CisKKy8qKgorICogV2ViS2l0VXNlck1lc3Nh
Z2VFcnJvcjoKKyAqIEBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFOiBUaGUg
bWVzc2FnZSB3YXMgbm90IGhhbmRsZWQgYnkgdGhlIHJlY2VpdmVyLgorICoKKyAqIEVudW0gdmFs
dWVzIHVzZWQgdG8gZGVub3RlIGVycm9ycyBoYXBwZW5pbmcgd2hlbiBzZW5kaW5nIHVzZXIgbWVz
c2FnZXMuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJL
SVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFCit9IFdlYktpdFVzZXJNZXNzYWdlRXJy
b3I7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2UgeworICAgIEdJbml0aWFsbHlVbm93bmVk
IHBhcmVudDsKKworICAgIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0
cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFzcyB7CisgICAgR0luaXRpYWxseVVub3duZWRDbGFz
cyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lk
KTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUg
ICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgR1F1YXJrCit3ZWJraXRfdXNlcl9tZXNzYWdl
X2Vycm9yX3F1YXJrICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdl
ICoKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3ICAgICAgICAgICAgICAoY29uc3QgY2hhciAgICAg
ICAgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50
ICAgICAgICAgICpwYXJhbWV0ZXJzKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAq
Cit3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QgKGNvbnN0IGNoYXIgICAgICAg
ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAg
ICAgICAgICAqcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1VuaXhGRExpc3QgICAgICAgKmZkX2xpc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIg
Kgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSAgICAgICAgIChXZWJLaXRVc2VyTWVzc2Fn
ZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgR1ZhcmlhbnQgKgord2Via2l0X3VzZXJfbWVzc2Fn
ZV9nZXRfcGFyYW1ldGVycyAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJ
VF9BUEkgR1VuaXhGRExpc3QgKgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdCAgICAg
IChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5ICAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2Fn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3Nh
Z2UgKnJlcGx5KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGRlYjg4NWMxODVh
Li45OTg2M2ZkNTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3cGUvV2Vi
S2l0TmV0d29ya1Byb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNs
dWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTE0MywxNyArMTQ0LDE4IEBAIHN0
cnVjdCBfV2ViS2l0V2ViQ29udGV4dCB7CiBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRDbGFzcyB7
CiAgICAgR09iamVjdENsYXNzIHBhcmVudDsKIAotICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRl
ZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGluaXRpYWxpemVfd2Vi
X2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OwotICAgIHZvaWQgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0
YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CisgICAgdm9pZCAgICAgKCogZG93bmxvYWRf
c3RhcnRlZCkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdERvd25sb2FkICAgICAgICAgICpkb3dubG9hZCk7CisgICAgdm9pZCAgICAgKCog
aW5pdGlhbGl6ZV93ZWJfZXh0ZW5zaW9ucykgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAg
ICAgICAqY29udGV4dCk7CisgICAgdm9pZCAgICAgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25f
cGVybWlzc2lvbnMpIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9p
ZCAgICAgKCogYXV0b21hdGlvbl9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJD
b250ZXh0ICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsK
KyAgICBnYm9vbGVhbiAoKiB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpICAgICAgICAgICAgICAgKFdl
YktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgKm1l
c3NhZ2UpOwogCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQyKSAodm9pZCk7Ci0gICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CiB9Owog
CiBXRUJLSVRfQVBJIEdUeXBlCkBAIC0zMTQsNiArMzE2LDEwIEBAIHdlYmtpdF93ZWJfY29udGV4
dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlzdCAgICAgICAgICAgICAgICAg
ICAgICAgICAqYWxsb3dlZF9vcmlnaW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAqZGlz
YWxsb3dlZF9vcmlnaW5zKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRf
c2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAg
ICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CisK
IEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCAyYTRhNjIwNDIzNS4uOWU1ZDNmNGM3YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2Uu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlld0JhY2tlbmQuaD4KQEAgLTI0MSw2ICsyNDIs
OSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Tm90aWZpY2F0aW9uICAgICAgICAg
ICpub3RpZmljYXRpb24pOwogICAgIHZvaWQgICAgICAgICAgICgqIHdlYl9wcm9jZXNzX3Rlcm1p
bmF0ZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbik7CisgICAgZ2Jvb2xlYW4gICAgICAgKCog
dXNlcl9tZXNzYWdlX3JlY2VpdmVkKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICAgKm1lc3NhZ2UpOworCiAKICAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKQEAgLTI0OSw3ICsyNTMsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyB7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7CiAgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQ1KSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ2
KSAodm9pZCk7Ci0gICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ3KSAodm9pZCk7CiB9OwogCiBX
RUJLSVRfQVBJIEdUeXBlCkBAIC01MjUsNiArNTI4LDE4IEBAIFdFQktJVF9BUEkgdm9pZAogd2Vi
a2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAg
ICAqY29sb3IpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3Nh
Z2VfdG9fcGFnZSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICAgKm1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUg
ICAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgICBj
YWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lU
X0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3Rv
X3BhZ2VfZmluaXNoICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAg
ICAgICAgICAqKmVycm9yKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50
eHQKaW5kZXggMDE5Zjg0YmFlMzcuLjY3OTAzZjVkODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBA
IC00Nyw2ICs0Nyw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVf
Zm9yX2hvc3QKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbAogd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6
ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3Nh
Z2VfdG9fYWxsX2V4dGVuc2lvbnMKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVS
SVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMjUxLDYgKzI1Miw4IEBAIHdlYmtpdF93ZWJfdmll
d19hZGRfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrCiB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2Zy
YW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2Nv
bG9yCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IKK3dlYmtpdF93ZWJfdmll
d19zZW5kX21lc3NhZ2VfdG9fcGFnZQord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19w
YWdlX2ZpbmlzaAogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdApAQCAtNTg3LDYgKzU5MCwzNSBAQCBXZWJLaXRVUklSZXNwb25zZVBy
aXZhdGUKIHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRVc2VyTWVzc2FnZTwvRklMRT4KK1dlYktpdFVzZXJNZXNzYWdlCit3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldword2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9s
aXN0Cit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9wYXJhbWV0ZXJzCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0Cit3ZWJraXRfdXNl
cl9tZXNzYWdlX3NlbmRfcmVwbHkKKworPFNVQlNFQ1RJT04gV2ViS2l0VXNlck1lc3NhZ2VFcnJv
cj4KK1dFQktJVF9VU0VSX01FU1NBR0VfRVJST1IKK1dlYktpdFVzZXJNZXNzYWdlRXJyb3IKK3dl
YmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
ZWJLaXRVc2VyTWVzc2FnZUNsYXNzCitXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UKK1dFQktJVF9V
U0VSX01FU1NBR0UKK1dFQktJVF9JU19VU0VSX01FU1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0Vf
Q0xBU1MKK1dFQktJVF9JU19VU0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJVF9VU0VSX01FU1NBR0Vf
R0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRVc2VyTWVzc2FnZVByaXZh
dGUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwogPFNFQ1RJT04+
CiA8RklMRT5XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPC9GSUxFPgogV2ViS2l0V2luZG93UHJvcGVy
dGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRv
Y3Muc2dtbAppbmRleCA2NjYxNGQ5NzM4My4uMmZlN2IyMGVmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCkBAIC01Nyw2ICs1
Nyw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54
bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3IueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci54bWwiLz4KKyAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0VXNlck1lc3NhZ2UueG1sIi8+CiAgIDwvY2hh
cHRlcj4KIAogICA8Y2hhcHRlcj4KQEAgLTkzLDUgKzk0LDEwIEBACiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL2FwaS1pbmRleC0yLjI2LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRl
PgogICA8L2luZGV4PgogCisgIDxpbmRleCBpZD0iYXBpLWluZGV4LTItMjgiIHJvbGU9IjIuMjgi
PgorICAgIDx0aXRsZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjI4PC90aXRsZT4KKyAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMjgueG1sIj48eGk6ZmFsbGJhY2sgLz48
L3hpOmluY2x1ZGU+CisgIDwvaW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2Fubm90
YXRpb24tZ2xvc3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8L2Jvb2s+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAppbmRleCA0ODUyM2I0N2Qx
Ny4uOWNjMzFjYjQ5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvd2Via2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQu
aApAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyQ29udGVudEZpbHRl
clN0b3JlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1ZGUg
PHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRWZXJzaW9uLmg+
CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0
V2ViUmVzb3VyY2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
YTY5NDg4ZGU2NzYuLjBlZDQ2Y2U5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMzAxLDYgKzMwMSw3IEBAIHN0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhOwogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0cnVjdCBVUkxTY2hl
bWVUYXNrUGFyYW1ldGVyczsKK3N0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsK
QEAgLTE3MzgsNiArMTczOSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJl
cGx5JiYpOwogICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVp
bnQ2NF90IGdlb2xvY2F0aW9uSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmKTsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOworI2VuZGlmCisKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiB1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzOTM3ZDIwNGU4
Li5kNzQzYzFjMzY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtNTc4LDQgKzU3OCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBTZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKKyAgICBTZW5kTWVzc2FnZVRvV2ViVmlldyhzdHJ1Y3QgV2ViS2l0OjpV
c2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkKKyAgICBTZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBs
eShzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkgLT4gKHN0cnVjdCBXZWJL
aXQ6OlVzZXJNZXNzYWdlIHJlcGx5TWVzc2FnZSkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOWUxYWY3MjEyNTAuLjUwYzkwMTI0
OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUwMyw2
ICs1MDMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTYW5kYm94UGF0aChjb25zdCBDU3RyaW5n
JiBwYXRoLCBTYW5kYm94UGVybWlzc2lvbiBwZXJtaXNzaW9uKSB7IG1fZXh0cmFTYW5kYm94UGF0
aHMuYWRkKHBhdGgsIHBlcm1pc3Npb24pOyB9OwogICAgIGNvbnN0IEhhc2hNYXA8Q1N0cmluZywg
U2FuZGJveFBlcm1pc3Npb24+JiBzYW5kYm94UGF0aHMoKSBjb25zdCB7IHJldHVybiBtX2V4dHJh
U2FuZGJveFBhdGhzOyB9OwogICAgIGJvb2wgc2FuZGJveEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3NhbmRib3hFbmFibGVkOyB9OworCisgICAgdm9pZCBzZXRVc2VyTWVzc2FnZUhhbmRsZXIo
RnVuY3Rpb248dm9pZChVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJN
ZXNzYWdlJiYpPiYmKT4mJiBoYW5kbGVyKSB7IG1fdXNlck1lc3NhZ2VIYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKTsgfQorICAgIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVXNlck1lc3NhZ2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+JiB1c2VyTWVzc2FnZUhhbmRs
ZXIoKSBjb25zdCB7IHJldHVybiBtX3VzZXJNZXNzYWdlSGFuZGxlcjsgfQogI2VuZGlmCiAgICAg
CiAgICAgdm9pZCBzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcik7CkBAIC03ODMsNiArNzg2LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKICAgICBib29sIG1fc2FuZGJveEVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IEhhc2hNYXA8Q1N0cmluZywgU2FuZGJveFBlcm1pc3Npb24+IG1fZXh0cmFTYW5kYm94UGF0aHM7
CisKKyAgICBGdW5jdGlvbjx2b2lkKFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVXNlck1lc3NhZ2UmJik+JiYpPiBtX3VzZXJNZXNzYWdlSGFuZGxlcjsKICNlbmRpZgogCiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFBy
b2Nlc3NBc3NlcnRpb24+PiBtX3Byb2Nlc3Nlc1dpdGhVcGxvYWRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBjMDdiMWVlODNlMS4uMDIzZGExY2VkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC04MCw2ICs4
MCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0
YVR5cGU7CitzdHJ1Y3QgVXNlck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVu
Y2VzU3RvcmU7CkBAIC00MjgsNiArNDI5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1heWJl
U2h1dERvd24oKTsKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHZv
aWQgc2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoVXNlck1lc3NhZ2UmJik7CisgICAgdm9pZCBzZW5k
TWVzc2FnZVRvV2ViQ29udGV4dFdpdGhSZXBseShVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBJ
c1dlYWsgeyBObywgWWVzIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha09y
U3Ryb25nUHRyIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDBhYjk0MzU1MzMuLmUxMTllNmNi
OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC03Nyw0ICs3Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBQbHVnLWluIG1lc3NhZ2VzLgogICAgIHZvaWQgQWRk
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFz
aCkKICAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFz
aCkKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNlbmRNZXNzYWdl
VG9XZWJDb250ZXh0KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorICAg
IFNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNz
YWdlIHVzZXJNZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNz
YWdlKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA5Y2ExYzZiMGIyZC4uMzI4MTdiMWRk
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1By
b3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgpAQCAtNTYsNCArNTcsMTQgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1
bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGwKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZW5kTWVzc2FnZVRvV2ViQ29udGV4dFdpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV9wcm9jZXNzUG9vbC0+dXNlck1lc3NhZ2VIYW5kbGVyKCkoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQor
eworICAgIHNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KFdURk1vdmUobWVzc2FnZSks
IFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7Cit9CisKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDA4NjdkOTgzZTVkLi41NDBlM2Jj
Njg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlBhc3RlYm9hcmRQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAt
MTY2LDQgKzE2OCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Vtb2ppUGlja2VyKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCwgQ29tcGxldGlvbgogICAgIHdlYmtpdFdlYlZp
ZXdCYXNlU2hvd0Vtb2ppQ2hvb3NlcihXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkp
LCBjYXJldFJlY3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIVdFQktJVF9JU19XRUJfVklFVyh2aWV3V2lkZ2V0KCkpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNzYWdlKG1lc3NhZ2UubmFtZSwgV0VC
S0lUX1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgd2Via2l0V2ViVmlld0RpZFJlY2VpdmVVc2VyTWVzc2FnZShXRUJLSVRfV0VC
X1ZJRVcodmlld1dpZGdldCgpKSwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXco
VXNlck1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIHNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJl
cGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3Bl
L1dlYlBhZ2VQcm94eVdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFn
ZVByb3h5V1BFLmNwcAppbmRleCA5MDJlZTZmNTMzZS4uNmQxYjdjNWY3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCkBAIC04Miw0ICs4
MiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRpdG9y
U3RhdGUmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPihwYWdlQ2xpZW50KCkpLnNlbmRNZXNz
YWdlVG9XZWJWaWV3KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNz
YWdlJiYgbWVzc2FnZSkKK3sKKyAgICBzZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShXVEZN
b3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYmKSB7IH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5o
CmluZGV4IDk4NGMzYTk0NzUyLi44Yzk5NTVkN2NiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAog
ICAgIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgaW5pdGlhbGl6
ZShJbmplY3RlZEJ1bmRsZSosIEFQSTo6T2JqZWN0Kik7CiAKKyAgICBXZWJLaXRXZWJFeHRlbnNp
b24qIGV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uLmdldCgpOyB9CisKIHBy
aXZhdGU6CiAgICAgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IGYwNWRlOGU1MTI0Li41YjIzYTUxYTY4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTIz
LDEwICsyMywxMyBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJBUElJ
bmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2lu
Y2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkV4
dGVuc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMTExLDYgKzExNCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGVudW0gewogICAgIFBBR0VfQ1JFQVRFRCwK
KyAgICBVU0VSX01FU1NBR0VfUkVDRUlWRUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE0
Niw2ICsxNTAsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3NfaW5p
dChXZWJLaXRXZWJFeHRlbnNpb25DbGFzcyoga2xhc3MpCiAgICAgICAgIGdfY2Nsb3N1cmVfbWFy
c2hhbF9WT0lEX19PQkpFQ1QsCiAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfUEFHRSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJFeHRlbnNpb246
OnVzZXItbWVzc2FnZS1yZWNlaXZlZDoKKyAgICAgKiBAZXh0ZW5zaW9uOiB0aGUgI1dlYktpdFdl
YkV4dGVuc2lvbiBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAbWVzc2Fn
ZTogdGhlICNXZWJLaXRVc2VyTWVzc2FnZSByZWNlaXZlZAorICAgICAqCisgICAgICogVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgI1dlYktpdFVzZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZy
b20gdGhlCisgICAgICogI1dlYktpdFdlYkNvbnRleHQgY29ycmVzcG9uZGluZyB0byBAZXh0ZW5z
aW9uLiBNZXNzYWdlcyBzZW50IGJ5ICNXZWJLaXRXZWJDb250ZXh0CisgICAgICogYXJlIGFsd2F5
cyBicm9hZGNhc3RlZCB0byBhbGwgI1dlYktpdFdlYkV4dGVuc2lvbjwhLS0gLS0+cyBhbmQgdGhl
eSBjYW4ndCBiZQorICAgICAqIHJlcGxpZWQuIENhbGxpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9z
ZW5kX3JlcGx5KCkgd2lsbCBkbyBub3RoaW5nLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjgK
KyAgICAgKi8KKyAgICBzaWduYWxzW1VTRVJfTUVTU0FHRV9SRUNFSVZFRF0gPSBnX3NpZ25hbF9u
ZXcoCisgICAgICAgICJ1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQiLAorICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAwLAor
ICAgICAgICBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2Vu
ZXJpYywKKyAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1VTRVJf
TUVTU0FHRSk7CiB9CiAKIGNsYXNzIFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudCB7CkBAIC0yMDAsNiArMjI2
LDEzIEBAIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVj
dGVkQnVuZGxlKiBidW5kbGUpCiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAordm9pZCB3ZWJr
aXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIFVzZXJNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICAvLyBTaW5rIHRoZSBmbG9h
dGluZyByZWYuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gdXNlck1lc3NhZ2UgPSB3
ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYm
KSB7IH0pOworICAgIGdfc2lnbmFsX2VtaXQoZXh0ZW5zaW9uLCBzaWduYWxzW1VTRVJfTUVTU0FH
RV9SRUNFSVZFRF0sIDAsIHVzZXJNZXNzYWdlLmdldCgpKTsKK30KKwogdm9pZCB3ZWJraXRXZWJF
eHRlbnNpb25TZXRHYXJiYWdlQ29sbGVjdE9uUGFnZURlc3Ryb3koV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24pCiB7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQpAQCAtMjI5LDMgKzI2
Miw2OCBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShXZWJL
aXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgZ3VpbgogCiAgICAgcmV0dXJuIDA7CiB9CisKKy8q
KgorICogd2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQ6CisgKiBA
ZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRV
c2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUg
b3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJs
ZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNh
dGlzZmllZCBvciAlTlVMTAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBw
YXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dl
YktpdFdlYkNvbnRleHQgY29ycmVzcG9uZGluZyB0byBAZXh0ZW5zaW9uLiBJZiBAbWVzc2FnZSBp
cyBmbG9hdGluZywgaXQncyBjb25zdW1lZC4KKyAqCisgKiBJZiB5b3UgZG9uJ3QgZXhwZWN0IGFu
eSByZXBseSwgb3IgeW91IHNpbXBseSB3YW50IHRvIGlnbm9yZSBpdCwgeW91IGNhbiBwYXNzICVO
VUxMIGFzIEBjYWxiYWNrLgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2Fs
bGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2goKSB0byBnZXQgdGhlIG1lc3Nh
Z2UgcmVwbHkuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUs
IEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKwor
ICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0aW5nLgor
ICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsK
KyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
U2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3Nh
Z2UpKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0
YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcoZXh0ZW5zaW9uLCBjYW5jZWxsYWJsZSwgY2FsbGJh
Y2ssIHVzZXJEYXRhKSk7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYm
KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGFzayA9IFdURk1vdmUodGFzayldKFVzZXJNZXNzYWdl
JiYgcmVwbHlNZXNzYWdlKSB7CisgICAgICAgIHN3aXRjaCAocmVwbHlNZXNzYWdlLnR5cGUpIHsK
KyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6TnVsbDoKKyAgICAgICAgICAgIGdfdGFz
a19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FO
Q0VMTEVELCBfKCJPcGVyYXRpb24gd2FzIGNhbmNlbGxlZCIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpNZXNzYWdlOgorICAgICAgICAgICAg
Z190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtp
dFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUocmVwbHlNZXNzYWdlKSkpLCBzdGF0aWNfY2FzdDxH
RGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIGdfdGFza19y
ZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1IsIHJl
cGx5TWVzc2FnZS5lcnJvckNvZGUsIF8oIk1lc3NhZ2UgJXMgd2FzIG5vdCBoYW5kbGVkIiksIHJl
cGx5TWVzc2FnZS5uYW1lLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH07CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlbmRN
ZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSht
ZXNzYWdlKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2g6CisgKiBAZXh0
ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jlc3Vs
dAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGlnbm9y
CisgKgorICogRmluaXNoIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRoIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0KCkuCisgKgorICogUmV0
dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBs
eSBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dl
YktpdFVzZXJNZXNzYWdlKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29u
dGV4dF9maW5pc2goV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCBleHRlbnNpb24pLCBudWxscHRyKTsK
KworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdfdGFza19wcm9wYWdhdGVfcG9pbnRl
cihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCmluZGV4IGUyNzM5YTkwZDI0Li5iNTQzNDBmYmMx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0
ZS5oCkBAIC0yMCw3ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlLmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJF
eHRlbnNpb24uaCIKIAogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSopOwordm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRS
ZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiwgV2ViS2l0OjpVc2VyTWVzc2Fn
ZSYmKTsKIHZvaWQgd2Via2l0V2ViRXh0ZW5zaW9uU2V0R2FyYmFnZUNvbGxlY3RPblBhZ2VEZXN0
cm95KFdlYktpdFdlYkV4dGVuc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCmluZGV4IGY5MWQxYmUxZjg4Li4wYzdlN2Y3NzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtNDEsMTAgKzQxLDEyIEBACiAjaW5jbHVkZSAiV2ViS2l0U2Ny
aXB0V29ybGRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRV
c2VyTWVzc2FnZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlByb2Nlc3NFbnVtVHlw
ZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudExvYWRlci5oPgpAQCAtNzAsNiArNzIsNyBAQCBlbnVtIHsKICAgICBGT1JNX0NP
TlRST0xTX0FTU09DSUFURUQsCiAgICAgRk9STV9DT05UUk9MU19BU1NPQ0lBVEVEX0ZPUl9GUkFN
RSwKICAgICBXSUxMX1NVQk1JVF9GT1JNLAorICAgIFVTRVJfTUVTU0FHRV9SRUNFSVZFRCwKIAog
ICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtNjY3LDYgKzY3MCwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRXZWJQYWdlQ2xhc3MqIGtsYXNzKQogICAgICAg
ICBXRUJLSVRfVFlQRV9GUkFNRSwKICAgICAgICAgR19UWVBFX1BUUl9BUlJBWSwKICAgICAgICAg
R19UWVBFX1BUUl9BUlJBWSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJQYWdlOjp1c2Vy
LW1lc3NhZ2UtcmVjZWl2ZWQ6CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ug
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2Vi
S2l0VXNlck1lc3NhZ2UgcmVjZWl2ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVt
aXR0ZWQgd2hlbiBhICNXZWJLaXRVc2VyTWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZQorICAg
ICAqICNXZWJLaXRXZWJWaWV3IGNvcnJlc3BvbmRpbmcgdG8gQHdlYl9wYWdlLiBZb3UgY2FuIHJl
cGx5IHRvIHRoZSBtZXNzYWdlCisgICAgICogdXNpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5k
X3JlcGx5KCkuCisgICAgICoKKyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdl
IGFzeW5jaHJvbm91c2x5IGJ5IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVz
c2FnZSBhbmQgcmV0dXJuaW5nICVUUlVFLiBJZiB0aGUgbGFzdCByZWZlcmVuY2Ugb2YgQG1lc3Nh
Z2UgaXMgcmVtb3ZlZAorICAgICAqIGFuZCB0aGUgbWVzc2FnZSBoYXMgYmVlbiByZXBsaWVkLCB0
aGUgb3BlcmF0aW9uIGluIHRoZSAjV2ViS2l0V2ViVmlldyB3aWxsCisgICAgICogZmluaXNoIHdp
dGggZXJyb3IgJVdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UuCisgICAgICoK
KyAgICAgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZB
TFNFIG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAg
c2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAi
dXNlci1tZXNzYWdlLXJlY2VpdmVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3Mp
LAorICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgMCwKKyAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJl
X21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCisgICAgICAgIFdF
QktJVF9UWVBFX1VTRVJfTUVTU0FHRSk7CiB9CiAKIFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQ
YWdlKFdlYktpdFdlYlBhZ2UgKndlYlBhZ2UpCkBAIC03MzMsNiArNzY0LDE0IEBAIHZvaWQgd2Vi
a2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lk
IHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogd2ViUGFn
ZSwgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNz
YWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5n
IHJlZi4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtp
dFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdl
YlBhZ2UsIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNlck1lc3NhZ2UuZ2V0
KCksICZyZXR1cm5WYWx1ZSk7Cit9CisKIC8qKgogICogd2Via2l0X3dlYl9wYWdlX2dldF9kb21f
ZG9jdW1lbnQ6CiAgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKQEAgLTgyMiwzICs4NjEs
NjggQEAgV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlKQogCiAgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvci5n
ZXQoKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXc6
CisgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRV
c2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUg
b3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJs
ZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNh
dGlzZmllZCBvciAlTlVMTAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBw
YXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dl
YktpdFdlYlZpZXcgY29ycmVzcG9uZGluZyB0byBAd2ViX3BhZ2UuIElmIEBtZXNzYWdlIGlzIGZs
b2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJl
cGx5LCBvciB5b3Ugc2ltcGx5IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwg
YXMgQGNhbGxiYWNrLgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJh
Y2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX3BhZ2Vf
c2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoKCkgdG8gZ2V0IHRoZSBtZXNzYWdlIHJlcGx5Lgor
ICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2Fn
ZV90b192aWV3KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNz
YWdlLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxi
YWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfUEFHRSh3ZWJQYWdlKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNF
Ul9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBj
YXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFk
b3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIHdl
YlBhZ2UtPnByaXYtPndlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VuZE1l
c3NhZ2VUb1dlYlZpZXcod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRH
UmVmKGdfdGFza19uZXcod2ViUGFnZSwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkp
OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+IGNvbXBsZXRpb25I
YW5kbGVyID0gW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShVc2VyTWVzc2FnZSYmIHJlcGx5TWVzc2Fn
ZSkgeworICAgICAgICBzd2l0Y2ggKHJlcGx5TWVzc2FnZS50eXBlKSB7CisgICAgICAgIGNhc2Ug
VXNlck1lc3NhZ2U6OlR5cGU6Ok51bGw6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19l
cnJvcih0YXNrLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCwgXygiT3Bl
cmF0aW9uIHdhcyBjYW5jZWxsZWQiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBVc2VyTWVzc2FnZTo6VHlwZTo6TWVzc2FnZToKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5f
cG9pbnRlcih0YXNrLmdldCgpLCBnX29iamVjdF9yZWZfc2luayh3ZWJraXRVc2VyTWVzc2FnZUNy
ZWF0ZShXVEZNb3ZlKHJlcGx5TWVzc2FnZSkpKSwgc3RhdGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+
KGdfb2JqZWN0X3VucmVmKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2Vy
TWVzc2FnZTo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJv
cih0YXNrLmdldCgpLCBXRUJLSVRfVVNFUl9NRVNTQUdFX0VSUk9SLCByZXBseU1lc3NhZ2UuZXJy
b3JDb2RlLCBfKCJNZXNzYWdlICVzIHdhcyBub3QgaGFuZGxlZCIpLCByZXBseU1lc3NhZ2UubmFt
ZS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9OworICAgIHdl
YlBhZ2UtPnByaXYtPndlYlBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseSh3ZWJraXRVc2VyTWVzc2FnZUdl
dE1lc3NhZ2UobWVzc2FnZSkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaDoKKyAqIEB3
ZWJfcGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0Cisg
KiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAq
CisgKiBGaW5pc2ggYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0
X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3KCkuCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBseSBvciAlTlVMTCBp
biBjYXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNz
YWdlKiB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoKFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSksIG51
bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQs
IHdlYlBhZ2UpLCBudWxscHRyKTsKKworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdf
dGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKaW5kZXggOGRjZDQyYTlkYmMu
LjI0MDUxNDgzZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZVByaXZh
dGUuaApAQCAtMTcsMTUgKzE3LDE1IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
ICAqLwogCi0jaWZuZGVmIFdlYktpdFdlYlBhZ2VQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0V2Vi
UGFnZVByaXZhdGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5Lmgi
CisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZS5oIgogCiBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRl
KFdlYktpdDo6V2ViUGFnZSopOwogdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2Uo
V2ViS2l0V2ViUGFnZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6RGljdGlvbmFy
eSYgbWVzc2FnZSk7Cit2b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2Vi
S2l0V2ViUGFnZSosIFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmKTsKIFdlYktpdDo6V2ViUGFnZSogd2Via2l0V2Vi
UGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSopOwogCi0jZW5kaWYgLy8gV2ViS2l0V2ViUGFnZVBy
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaAppbmRleCAzNDEz
NmEzN2QyNS4uNTQyMmZlNTdmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVu
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KIAogR19C
RUdJTl9ERUNMUwpAQCAtNzYsMTEgKzc3LDIzIEBAIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9u
Q2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X3R5cGUgKHZvaWQpOword2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgICAgICAgICAgICAg
ICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKLXdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQp
Oword2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICBwYWdlX2lkKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9f
Y29udGV4dCAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVz
c2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2Fs
bGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2Vf
dG9fY29udGV4dF9maW5pc2ggKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1
bHQgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgKiplcnJvcik7CiAKIEdfRU5EX0RFQ0xT
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAppbmRleCAwYTQ4NmRjYjI4NS4uMzE1YWM4
YjZkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5l
cy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RnJhbWUuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFZGl0b3Iu
aD4KICNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tLmg+CiAKQEAgLTc0LDIyICs3NSwzNCBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13
ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRE
T01Eb2N1bWVudCAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2Vi
UGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgICAgICAg
ICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGd1aW50NjQKLXdl
YmtpdF93ZWJfcGFnZV9nZXRfaWQgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7
Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQ
YWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3dlYl9w
YWdlX2dldF91cmkgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93
ZWJfcGFnZV9nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9w
YWdlKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRGcmFtZSAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X21h
aW5fZnJhbWUgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dl
dF9tYWluX2ZyYW1lICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYkVkaXRvciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAg
ICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9lZGl0
b3IgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyAgICAgICAgKFdl
YktpdFdlYlBhZ2UgICAgICAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNh
bmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VC
S0lUX0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdl
X3RvX3ZpZXdfZmluaXNoIChXZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICpy
ZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJy
b3IgICAgICAgICAgICAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1l
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggMWM5NWYxZDNhZWQuLmJjNGI0MjQwMDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRV
UklSZXNwb25zZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9uLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dw
ZS9XZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IGE2ZmZiNDg1MDQ4Li4w
OWFlZTM4Y2RjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03NiwxMSAr
NzcsMjMgQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJLSVRf
QVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Ug
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0
ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0ICAgICAgICAoV2ViS2l0
V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxh
YmxlICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
ICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoK
K3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaCAoV2Vi
S2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAqcmVzdWx0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3Ig
ICAgICAgICAgICAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0
V2ViUGFnZS5oCmluZGV4IDk1NWYwODdlNGY3Li4xODQxZTRhYzlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3Bl
L1dlYktpdFdlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0
RnJhbWUuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d3BlL3dlYmtpdGRvbS5oPgogCkBAIC03
MiwyMiArNzMsMzUgQEAgc3RydWN0IF9XZWJLaXRXZWJQYWdlQ2xhc3MgewogfTsKIAogV0VCS0lU
X0FQSSBHVHlwZQotd2Via2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgKHZvaWQpOword2Vi
a2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJ
VF9BUEkgV2ViS2l0RE9NRG9jdW1lbnQgKgotd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50ICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lUX0FQ
SSBndWludDY0Ci13ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9pZCAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoK
LXdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFn
ZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJQYWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgV2ViS2l0RnJhbWUgKgotd2Via2l0X3dl
Yl9wYWdlX2dldF9tYWluX2ZyYW1lICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtp
dF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndl
Yl9wYWdlKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJFZGl0b3IgKgotd2Via2l0X3dlYl9wYWdl
X2dldF9lZGl0b3IgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJf
cGFnZV9nZXRfZWRpdG9yICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdl
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3Zp
ZXcgICAgICAgIChXZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICptZXNzYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxh
YmxlICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgIHVzZXJf
ZGF0YSk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3dlYl9wYWdl
X3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCAoV2ViS2l0V2ViUGFnZSAgICAgICp3ZWJfcGFn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jl
c3VsdCAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0Vycm9yICAgICAgICAgICAgKiplcnJvcik7CisKIAogR19FTkRfREVDTFMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93
cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9u
cy0xLjAtc2VjdGlvbnMudHh0CmluZGV4IGU0NDgyOTZkOWZhLi41ZmRhOTU4MGQ1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9j
cy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMt
MS4wLXNlY3Rpb25zLnR4dApAQCAtMTMsNiArMTMsOCBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdl
YktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5p
dGlhbGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFn
ZQord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQKK3dlYmtpdF93
ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaAogCiA8U1VCU0VDVElP
TiBTdGFuZGFyZD4KIFdlYktpdFdlYkV4dGVuc2lvbkNsYXNzCkBAIC0zNyw2ICszOSw4IEBAIHdl
YmtpdF93ZWJfcGFnZV9nZXRfaWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X21haW5fZnJhbWUKIHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yCit3ZWJraXRf
d2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3Nh
Z2VfdG9fdmlld19maW5pc2gKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdl
Q2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCmluZGV4IDY5
ZWZkZDk2MzMxLi5kNWQzMzU0ZjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2Vi
LWV4dGVuc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFNjcmlw
dFdvcmxkLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0VVJJUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2Uu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dFdlYkV4dGVuc2lvbi5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDVlZmVh
N2M5NjQuLjIyYjM4NzU3MjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yNjgsNiArMjY4LDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3Ry
dWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5wdXRD
b250ZXh0Oworc3RydWN0IFVzZXJNZXNzYWdlOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0
YTsKIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczsKQEAgLTE2MzAsNiArMTYzMiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgU25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6
OkZyYW1lVmlldyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9u
KFVzZXJNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhS
ZXBseShVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYp
PiYmKTsKKyNlbmRpZgorCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IDE1MDY0ODk3ODRhLi5mNmMwMjY0MTIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODAsNCArNTgwLDgg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dl
cmVkKHN0cnVjdCBXZWJDb3JlOjpTeXN0ZW1QcmV2aWV3SW5mbyBwcmV2aWV3SW5mbywgU3RyaW5n
IG1lc3NhZ2UpCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQor
ICAgIFNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2Ug
dXNlck1lc3NhZ2UpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShzdHJ1
Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlVz
ZXJNZXNzYWdlIHJlcGx5TWVzc2FnZSkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjA1OThjNjI3MGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGli
LmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisKKyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgIldlYktpdEV4dGVuc2lvbk1h
bmFnZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgIldlYktp
dFdlYkV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNp
b25XaXRoUmVwbHkoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGV4dGVu
c2lvbiA9IFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmV4dGVuc2lvbigpOwor
ICAgIGlmICghZXh0ZW5zaW9uKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNz
YWdlKG1lc3NhZ2UubmFtZSwgV0VCS0lUX1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogcGFnZSA9IHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9wYWdlKGV4dGVuc2lvbiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyTWVzc2FnZSht
ZXNzYWdlLm5hbWUsIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1l
c3NhZ2UocGFnZSwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCit2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3Nh
Z2UmJiBtZXNzYWdlKQoreworICAgIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHko
V1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBhZTFm
NjAzMDgzYy4uMDZiOWEyMDQ1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtMTE2LDYgKzExNiw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViTG9hZGVyU3Ry
YXRlZ3k7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CitzdHJ1Y3Qg
VXNlck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVj
dCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczsKIGNsYXNzIFdlYlByb2Nlc3NTdXBwbGVt
ZW50OwpAQCAtNDYzLDYgKzQ2NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckN1cnJl
bnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdl
JiYpOworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dl
YkNvbm5lY3Rpb247CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2VhZDAxNjY1MDYuLjg1MTViNDM0NmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MTU2LDQgKzE1Niw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBTZW5kTWVzc2FnZVRvV2ViRXh0ZW5z
aW9uKHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5k
ZXggOWIwMDM3NDRmOWIuLjAwN2YwNDRkMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCisjaW5jbHVkZSAiV2ViS2l0
RXh0ZW5zaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAKICNpZiBVU0Uo
R1NUUkVBTUVSKQpAQCAtOTcsNCArOTksMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRl
cm1pbmF0ZSgpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVu
c2lvbihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIGV4dGVuc2lvbiA9
IFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmV4dGVuc2lvbigpKQorICAgICAg
ICB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3NhZ2UoZXh0ZW5zaW9uLCBXVEZN
b3ZlKG1lc3NhZ2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDM0NzlmYTQ1ZjguLmE0YmNk
ZDIwNDk3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSB0ZXN0IHRvIGNoZWNrIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFVzZXJNZXNz
YWdlVGVzdDo6d2ViVmlld1VzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChV
c2VyTWVzc2FnZVRlc3Q6OndlYkNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgor
ICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpVc2VyTWVzc2FnZVRlc3QpOgorICAgICAgICAoVXNl
ck1lc3NhZ2VUZXN0Ojp+VXNlck1lc3NhZ2VUZXN0KToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVz
dDo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpzZW5kTWVkc3NhZ2VU
b0FsbEV4dGVuc2lvbnMpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0Ojp2aWV3VXNlck1lc3Nh
Z2VSZWNlaXZlZCk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6OmNvbnRleHRVc2VyTWVzc2Fn
ZVJlY2VpdmVkKToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVzdDo6d2FpdFVudGlsVmlld01lc3Nh
Z2VSZWNlaXZlZCk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6OndhaXRVbnRpbENvbnRleHRN
ZXNzYWdlUmVjZWl2ZWQpOgorICAgICAgICAocmVhZEZpbGVEZXNjcml0cG9yKToKKyAgICAgICAg
KHRlc3RXZWJFeHRlbnNpb25Vc2VyTWVzc2FnZXMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5j
cHA6CisgICAgICAgIChkb2N1bWVudExvYWRlZENhbGxiYWNrKToKKyAgICAgICAgKHBhZ2VNZXNz
YWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKyAg
ICAgICAgKGV4dGVuc2lvbk1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEpOgorCiAyMDE5LTEwLTA4
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNTA1OTcpOiBbR1RLXVtXUEVdIDIuMjcuMSBzaG93cyBIVE1MIGNvbnRlbnQg
YXMgdGV4dC9wbGFpbiBpbiBjdXN0b20gcHJvdG9jb2xzIHdoZW4gcGFzc2luZyBhIGNoYXJzZXQg
aW4gY29udGVudCB0eXBlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAppbmRleCAyNGUxMzY3Y2E3YS4uNjk5
NDRkZTg0NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxnaW8v
Z3VuaXhmZGxpc3QuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBH
VW5pcXVlUHRyPGNoYXI+IHNjcmlwdERpYWxvZ1Jlc3VsdDsKQEAgLTUzNyw2ICs1MzgsMjYzIEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25QYWdlSUQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgY2hlY2tUaXRsZSh0ZXN0LCBwcm94eS5nZXQoKSwgIlRpdGxlNiIp
OwogfQogCitjbGFzcyBVc2VyTWVzc2FnZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVi
bGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVXNlck1lc3NhZ2VUZXN0KTsKKworICAg
IHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgVXNlck1lc3NhZ2VUZXN0KiB0
ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlc3QtPnZpZXdVc2VyTWVzc2FnZVJlY2VpdmVk
KG1lc3NhZ2UpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiB3ZWJDb250ZXh0VXNlck1l
c3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRVc2VyTWVzc2Fn
ZSogbWVzc2FnZSwgVXNlck1lc3NhZ2VUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRlc3QtPmNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkKG1lc3NhZ2UpOworICAgIH0KKworICAg
IFVzZXJNZXNzYWdlVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2Vi
Q29udGV4dC5nZXQoKSwgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0sod2ViQ29u
dGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KG1fd2ViVmlldywgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0so
d2ViVmlld1VzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAg
IH5Vc2VyTWVzc2FnZVRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9tYXRjaGVkKG1fd2ViQ29udGV4dC5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwg
MCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJz
X2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAs
IG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOworICAgIH0KKworICAgIFdlYktpdFVzZXJNZXNzYWdl
KiBzZW5kTWVzc2FnZShXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiogZXJyb3Ig
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChtZXNzYWdlKSk7CisgICAgICAgIG1fcmVjZWl2ZWRWaWV3TWVzc2Fn
ZSA9IG51bGxwdHI7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFn
ZShtX3dlYlZpZXcsIG1lc3NhZ2UsIG51bGxwdHIsIFtdKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBz
dGF0aWNfY2FzdDxVc2VyTWVzc2FnZVRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICB0ZXN0
LT5tX3JlY2VpdmVkVmlld01lc3NhZ2UgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X3NlbmRf
bWVzc2FnZV90b19wYWdlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJnRlc3QtPm1f
cmVjZWl2ZWRFcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgaWYgKHRlc3QtPm1fcmVjZWl2
ZWRWaWV3TWVzc2FnZSkKKyAgICAgICAgICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHRlc3QtPm1fcmVjZWl2ZWRWaWV3TWVzc2FnZS5n
ZXQoKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwodGVzdC0+bV9yZWNlaXZlZEVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIHRlc3QtPnF1aXRN
YWluTG9vcCgpOworICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1f
bWFpbkxvb3ApOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAqZXJyb3IgPSBtX3Jl
Y2VpdmVkRXJyb3IuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX3JlY2VpdmVkVmlld01lc3NhZ2Uu
Z2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZW5kTWVkc3NhZ2VUb0FsbEV4dGVuc2lvbnMoV2Vi
S2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyhtX3dlYkNvbnRleHQu
Z2V0KCksIG1lc3NhZ2UpOworICAgIH0KKworICAgIGJvb2wgdmlld1VzZXJNZXNzYWdlUmVjZWl2
ZWQoV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAg
aWYgKCFnX3N0cmNtcDAobV9leHBlY3RlZFZpZXdNZXNzYWdlTmFtZS5kYXRhKCksIHdlYmtpdF91
c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSkpKSB7CisgICAgICAgICAgICBtX3JlY2VpdmVk
Vmlld01lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGJvb2wgY29udGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWQoV2ViS2l0VXNl
ck1lc3NhZ2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNt
cDAobV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZS5kYXRhKCksIHdlYmtpdF91c2VyX21lc3Nh
Z2VfZ2V0X25hbWUobWVzc2FnZSkpKSB7CisgICAgICAgICAgICBtX3JlY2VpdmVkQ29udGV4dE1l
c3NhZ2UgPSBtZXNzYWdlOworICAgICAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIFdlYktpdFVzZXJNZXNzYWdlKiB3YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVk
KGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lKQorICAgIHsKKyAgICAgICAgbV9leHBlY3RlZFZpZXdN
ZXNzYWdlTmFtZSA9IG1lc3NhZ2VOYW1lOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisgICAgICAgIG1fZXhwZWN0ZWRWaWV3TWVzc2FnZU5hbWUgPSB7IH07CisgICAgICAg
IHJldHVybiBtX3JlY2VpdmVkVmlld01lc3NhZ2UuZ2V0KCk7CisgICAgfQorCisgICAgV2ViS2l0
VXNlck1lc3NhZ2UqIHdhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoY29uc3QgY2hhciog
bWVzc2FnZU5hbWUpCisgICAgeworICAgICAgICBtX2V4cGVjdGVkQ29udGV4dE1lc3NhZ2VOYW1l
ID0gbWVzc2FnZU5hbWU7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAg
ICAgICAgbV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZSA9IHsgfTsKKyAgICAgICAgcmV0dXJu
IG1fcmVjZWl2ZWRDb250ZXh0TWVzc2FnZS5nZXQoKTsKKyAgICB9CisKKyAgICBHUmVmUHRyPFdl
YktpdFVzZXJNZXNzYWdlPiBtX3JlY2VpdmVkVmlld01lc3NhZ2U7CisgICAgR1JlZlB0cjxXZWJL
aXRVc2VyTWVzc2FnZT4gbV9yZWNlaXZlZENvbnRleHRNZXNzYWdlOworICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBtX3JlY2VpdmVkRXJyb3I7CisgICAgQ1N0cmluZyBtX2V4cGVjdGVkVmlld01l
c3NhZ2VOYW1lOworICAgIENTdHJpbmcgbV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZTsKK307
CisKK3N0YXRpYyBib29sIHJlYWRGaWxlRGVzY3JpdHBvcihpbnQgZmQsIGNoYXIqKiBjb250ZW50
cywgZ3NpemUqIGxlbmd0aCkKK3sKKyAgICBHU3RyaW5nKiBidWZmZXJTdHJpbmcgPSBnX3N0cmlu
Z19uZXcobnVsbHB0cik7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgZ2NoYXIgYnVmZmVy
WzQwOTZdOworICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gcmVhZChmZCwgYnVmZmVyLCBzaXpl
b2YoYnVmZmVyKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKKyAgICAgICAgICAg
IGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUoYnVmZmVyU3RyaW5n
LCBUUlVFKTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFieXRlc1JlYWQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBnX3N0cmlu
Z19hcHBlbmRfbGVuKGJ1ZmZlclN0cmluZywgYnVmZmVyLCBieXRlc1JlYWQpOworICAgIH0KKwor
ICAgICpsZW5ndGggPSBidWZmZXJTdHJpbmctPmxlbjsKKyAgICAqY29udGVudHMgPSBnX3N0cmlu
Z19mcmVlKGJ1ZmZlclN0cmluZywgRkFMU0UpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Vc2VyTWVzc2FnZXMoVXNlck1lc3NhZ2VUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIC8vIE5vcm1hbCBtZXNzYWdlIHdpdGggYSByZXBs
eS4KKyAgICBhdXRvKiBtZXNzYWdlID0gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuSGVs
bG8iLCBnX3ZhcmlhbnRfbmV3KCJzIiwgIldlYlByb2Nlc3MiKSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiVGVzdC5IZWxs
byIpOworICAgIGF1dG8qIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJh
bWV0ZXJzKG1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7CisgICAg
Y29uc3QgY2hhciogcGFyYW1ldGVyID0gbnVsbHB0cjsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFt
ZXRlcnMsICImcyIsICZwYXJhbWV0ZXIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIs
ID09LCAiV2ViUHJvY2VzcyIpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2Fn
ZV9nZXRfZmRfbGlzdChtZXNzYWdlKSk7CisgICAgYXV0byogcmVwbHkgPSB0ZXN0LT5zZW5kTWVz
c2FnZShtZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0Uo
cmVwbHkpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFt
ZShyZXBseSksID09LCAiVGVzdC5IZWxsbyIpOworICAgIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNl
cl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKHJlcGx5KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBh
cmFtZXRlcnMpOworICAgIHBhcmFtZXRlciA9IG51bGxwdHI7CisgICAgZ192YXJpYW50X2dldChw
YXJhbWV0ZXJzLCAiJnMiLCAmcGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocGFyYW1l
dGVyLCA9PSwgIlVJUHJvY2VzcyIpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfZmRfbGlzdChyZXBseSkpOworCisgICAgLy8gTWVzc2FnZSB3aXRoIG5vIHBhcmFt
ZXRlcnMuCisgICAgbWVzc2FnZSA9IHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LlBpbmci
LCBudWxscHRyKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3Bh
cmFtZXRlcnMobWVzc2FnZSkpOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3NhZ2UobWVzc2Fn
ZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJlcGx5KSk7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUocmVwbHkpLCA9
PSwgIlRlc3QuUG9uZyIpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfcGFyYW1ldGVycyhyZXBseSkpOworCisgICAgLy8gTWVzc2FnZSB3aXRoIG1heWJlIHR5cGUg
aW4gcGFyYW1ldGVycy4KKyAgICBtZXNzYWdlID0gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRl
c3QuT3B0aW9uYWwiLCBnX3ZhcmlhbnRfbmV3KCIoc21zKSIsICJIZWxsbyIsICJXb3JsZCIpKTsK
KyAgICByZXBseSA9IHRlc3QtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShyZXBseSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKHJlcGx5KSwgPT0sICJUZXN0Lk9wdGlvbmFsIik7
CisgICAgcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMocmVw
bHkpOworICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7CisgICAgZ192YXJpYW50X2dl
dChwYXJhbWV0ZXJzLCAiJnMiLCAmcGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocGFy
YW1ldGVyLCA9PSwgIldvcmxkIik7CisgICAgbWVzc2FnZSA9IHdlYmtpdF91c2VyX21lc3NhZ2Vf
bmV3KCJUZXN0Lk9wdGlvbmFsIiwgZ192YXJpYW50X25ldygiKHNtcykiLCAiSGVsbG8iLCBudWxs
cHRyKSk7CisgICAgcmVwbHkgPSB0ZXN0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKyAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBseSksID09LCAiVGVzdC5PcHRp
b25hbCIpOworICAgIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0
ZXJzKHJlcGx5KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBhcmFtZXRlcnMpOworICAgIGdfdmFy
aWFudF9nZXQocGFyYW1ldGVycywgIiZzIiwgJnBhcmFtZXRlcik7CisgICAgZ19hc3NlcnRfY21w
c3RyKHBhcmFtZXRlciwgPT0sICJOVUxMIik7CisKKyAgICAvLyBNZXNzYWdlIHdpdGggZmlsZSBk
ZXNjcmlwdG9ycy4KKyAgICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVuYW1lKGdfYnVpbGRfZmlsZW5h
bWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpLCAic2ltcGxlLmpzb24iLCBudWxscHRy
KSk7CisgICAgcmVwbHkgPSB0ZXN0LT5zZW5kTWVzc2FnZSh3ZWJraXRfdXNlcl9tZXNzYWdlX25l
dygiVGVzdC5PcGVuRmlsZSIsIGdfdmFyaWFudF9uZXcoInMiLCBmaWxlbmFtZS5nZXQoKSkpKTsK
KyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAgICBw
YXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICBnaW50MzIgaGFuZGxlOworICAg
IGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgImgiLCAmaGFuZGxlKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoaGFuZGxlLCA9PSwgMCk7CisgICAgYXV0byogZmRMaXN0ID0gd2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfZmRfbGlzdChyZXBseSk7CisgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX1VOSVhfRkRf
TElTVChmZExpc3QpKTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKGZkTGlzdCkpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3VuaXhfZmRf
bGlzdF9nZXRfbGVuZ3RoKGZkTGlzdCksID09LCAxKTsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgaW50IGZkID0gZ191bml4X2ZkX2xpc3RfZ2V0KGZkTGlzdCwgaGFuZGxl
LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdfYXNzZXJ0X2NtcGludChmZCwgIT0sIC0xKTsKKyAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgR1VuaXF1ZU91dFB0cjxjaGFy
PiBmZENvbnRlbnRzOworICAgIGdzaXplIGZkQ29udGVudHNMZW5ndGg7CisgICAgZ19hc3NlcnRf
dHJ1ZShyZWFkRmlsZURlc2NyaXRwb3IoZmQsICZmZENvbnRlbnRzLm91dFB0cigpLCAmZmRDb250
ZW50c0xlbmd0aCkpOworICAgIGNsb3NlKGZkKTsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGZp
bGVDb250ZW50czsKKyAgICBnc2l6ZSBmaWxlQ29udGVudHNMZW5ndGg7CisgICAgZ19hc3NlcnRf
dHJ1ZShnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmdldCgpLCAmZmlsZUNvbnRlbnRzLm91
dFB0cigpLCAmZmlsZUNvbnRlbnRzTGVuZ3RoLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21w
bWVtKGZkQ29udGVudHMuZ2V0KCksIGZkQ29udGVudHNMZW5ndGgsIGZpbGVDb250ZW50cy5nZXQo
KSwgZmlsZUNvbnRlbnRzTGVuZ3RoKTsKKworICAgIC8vIFVuaGFuZGxlZCBtZXNzYWdlLgorICAg
IEdFcnJvciogbWVzc2FnZUVycm9yID0gbnVsbHB0cjsKKyAgICByZXBseSA9IHRlc3QtPnNlbmRN
ZXNzYWdlKHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkludmFsaWQiLCBudWxscHRyKSwg
Jm1lc3NhZ2VFcnJvcik7CisgICAgZ19hc3NlcnRfbnVsbChyZXBseSk7CisgICAgZ19hc3NlcnRf
ZXJyb3IobWVzc2FnZUVycm9yLCBXRUJLSVRfVVNFUl9NRVNTQUdFX0VSUk9SLCBXRUJLSVRfVVNF
Ul9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFKTsKKworICAgIC8vIE1lc3NhZ2UgdGhhdCBpcyBu
ZXZlciByZXBsaWVkLgorICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyhUZXN0OjpjcmVhdGVXZWJWaWV3KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkp
OworICAgIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSh3ZWJWaWV3LmdldCgp
LCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5JbmZpbml0ZSIsIG51bGxwdHIpLCBudWxs
cHRyLAorICAgICAgICBbXShHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0
PFVzZXJNZXNzYWdlVGVzdCo+KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl92aWV3
X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaChXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSwgcmVz
dWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9y
LmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCk7CisgICAgICAgICAgICB0
ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgZ19tYWluX2xvb3Bf
cnVuKHRlc3QtPm1fbWFpbkxvb3ApOworCisgICAgLy8gV2FpdCBmb3IgcmVjZWl2ZWQgbWVzc2Fn
ZS4KKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCBudWxs
cHRyKTsKKyAgICBtZXNzYWdlID0gdGVzdC0+d2FpdFVudGlsVmlld01lc3NhZ2VSZWNlaXZlZCgi
RG9jdW1lbnRMb2FkZWQiKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NB
R0UobWVzc2FnZSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9uYW1lKG1lc3NhZ2UpLCA9PSwgIkRvY3VtZW50TG9hZGVkIik7CisKKyAgICAvLyBSZXBseSB0
byBhIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAgd2Via2l0X3dl
Yl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKHRlc3QtPm1fd2ViVmlldywgd2Via2l0X3VzZXJf
bWVzc2FnZV9uZXcoIlRlc3QuQXN5bmNQaW5nIiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOworICAgIG1lc3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxWaWV3TWVzc2FnZVJlY2Vp
dmVkKCJUZXN0LlBpbmciKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NB
R0UobWVzc2FnZSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9uYW1lKG1lc3NhZ2UpLCA9PSwgIlRlc3QuUGluZyIpOworICAgIHdlYmtpdF91c2VyX21lc3Nh
Z2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5Qb25n
IiwgbnVsbHB0cikpOworICAgIG1lc3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxWaWV3TWVzc2FnZVJl
Y2VpdmVkKCJUZXN0LkFzeW5jUG9uZyIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VT
RVJfTUVTU0FHRShtZXNzYWdlKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiVGVzdC5Bc3luY1BvbmciKTsKKworICAgIC8v
IENyZWF0ZSBhIG5ldyBwYWdlIGFuZCB3YWl0IGZvciBwYWdlIGNyZWF0ZWQgbWVzc2FnZS4KKyAg
ICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93
ZWJDb250ZXh0LmdldCgpKSk7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbCh3ZWJWaWV3
LmdldCgpLCAiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICBtZXNz
YWdlID0gdGVzdC0+d2FpdFVudGlsQ29udGV4dE1lc3NhZ2VSZWNlaXZlZCgiUGFnZUNyZWF0ZWQi
KTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2Up
LCA9PSwgIlBhZ2VDcmVhdGVkIik7CisgICAgcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3Nh
Z2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0
ZXJzKTsKKyAgICBndWludDY0IHBhZ2VJRDsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMs
ICIodCkiLCAmcGFnZUlEKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHBhZ2VJRCwgPT0sIHdlYmtp
dF93ZWJfdmlld19nZXRfcGFnZV9pZCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICAvLyBSZXF1ZXN0
IHRvIHN0YXJ0IGEgcGluZyB0byBhbGwgcHJvY2Vzc2VzLgorICAgIHRlc3QtPnNlbmRNZWRzc2Fn
ZVRvQWxsRXh0ZW5zaW9ucyh3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5SZXF1ZXN0UGlu
ZyIsIG51bGxwdHIpKTsKKyAgICAvLyBXZSBzaG91bGQgcmVjZWl2ZWQgdHdvIHBpbmcgcmVxdWVz
dHMuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gcGluZzEgPSB0ZXN0LT53YWl0VW50
aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJQaW5nIik7CisgICAgR1JlZlB0cjxXZWJLaXRVc2Vy
TWVzc2FnZT4gcGluZzIgPSB0ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJQ
aW5nIik7CisgICAgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KHBpbmcxLmdldCgpLCB3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiUG9uZyIsIG51bGxwdHIpKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJUZXN0LkZpbmlzaGVkUGluZ1JlcXVlc3QiKTsK
KyAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkocGluZzIuZ2V0KCksIHdlYmtpdF91
c2VyX21lc3NhZ2VfbmV3KCJQb25nIiwgbnVsbHB0cikpOworICAgIHRlc3QtPndhaXRVbnRpbENv
bnRleHRNZXNzYWdlUmVjZWl2ZWQoIlRlc3QuRmluaXNoZWRQaW5nUmVxdWVzdCIpOworfQorCiB2
b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5z
aW9uIiwgImRvbS1kb2N1bWVudC10aXRsZSIsIHRlc3RXZWJFeHRlbnNpb25HZXRUaXRsZSk7CkBA
IC01NTMsNiArODExLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQo
IldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQtc2lnbmFsIiwg
dGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOwogICAgIEZvcm1TdWJtaXNz
aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZm9ybS1zdWJtaXNzaW9uLXN0ZXBz
IiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1TdWJtaXNzaW9uU3RlcHMpOwogICAgIFdlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJwYWdlLWlkIiwgdGVzdFdlYkV4dGVuc2lvblBh
Z2VJRCk7CisgICAgVXNlck1lc3NhZ2VUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJ1
c2VyLW1lc3NhZ2VzIiwgdGVzdFdlYkV4dGVuc2lvblVzZXJNZXNzYWdlcyk7CiB9CiAKIHZvaWQg
YWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGIzYjljOGJmZmVhLi40YTE1MWQzOTcw
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4
dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjEsNyArMjEsMTAgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzVGVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8ZmNudGwu
aD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+Cisj
aW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KICNlbmRpZgpAQCAtMTYyLDYgKzE2NSw4IEBAIHN0YXRpYyB2b2lkIGRvY3VtZW50
TG9hZGVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0V2ViRXh0ZW5zaW9u
KiBlCiAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogI2VuZGlmCiAKKyAgICB3
ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcod2ViUGFnZSwgd2Via2l0X3VzZXJf
bWVzc2FnZV9uZXcoIkRvY3VtZW50TG9hZGVkIiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOworCiAgICAgZ3BvaW50ZXIgZGF0YSA9IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JK
RUNUKGV4dGVuc2lvbiksICJkYnVzLWNvbm5lY3Rpb24iKTsKICAgICBpZiAoZGF0YSkKICAgICAg
ICAgZW1pdERvY3VtZW50TG9hZGVkKEdfREJVU19DT05ORUNUSU9OKGRhdGEpKTsKQEAgLTQxNiw2
ICs0MjEsNzcgQEAgc3RhdGljIHZvaWQgd2lsbFN1Ym1pdEZvcm1DYWxsYmFjayhXZWJLaXRXZWJQ
YWdlKiB3ZWJQYWdlLCBXZWJLaXRET01FbGVtZW50KiBmb3IKICAgICB9CiB9CiAKK3N0YXRpYyBn
Ym9vbGVhbiBwYWdlTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFn
ZSwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uKQoreworICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lID0gd2Via2l0X3VzZXJfbWVzc2Fn
ZV9nZXRfbmFtZShtZXNzYWdlKTsKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRl
c3QuSGVsbG8iKSkgeworICAgICAgICBhdXRvKiBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChw
YXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcGFyYW1ldGVyID0gbnVsbHB0cjsKKyAg
ICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiJnMiLCAmcGFyYW1ldGVyKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlciwgPT0sICJXZWJQcm9jZXNzIik7CisgICAgICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdChtZXNzYWdlKSk7
CisgICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRf
dXNlcl9tZXNzYWdlX25ldygiVGVzdC5IZWxsbyIsIGdfdmFyaWFudF9uZXcoInMiLCAiVUlQcm9j
ZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNt
cDAobWVzc2FnZU5hbWUsICJUZXN0Lk9wdGlvbmFsIikpIHsKKyAgICAgICAgYXV0byogcGFyYW1l
dGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSk7CisJZ19h
c3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcGFyYW1ldGVy
MSA9IG51bGxwdHI7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhcmFtZXRlcjIgPSBudWxscHRyOwor
ICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoJnNtJnMpIiwgJnBhcmFtZXRlcjEs
ICZwYXJhbWV0ZXIyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlcjEsID09LCAi
SGVsbG8iKTsKKyAgICAgICAgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KG1lc3NhZ2Us
IHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0Lk9wdGlvbmFsIiwgZ192YXJpYW50X25ldygi
cyIsIHBhcmFtZXRlcjIgPyBwYXJhbWV0ZXIyIDogIk5VTEwiKSkpOworICAgICAgICByZXR1cm4g
VFJVRTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3QuUGlu
ZyIpKSB7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFy
YW1ldGVycyhtZXNzYWdlKSk7CisgICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBs
eShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5Qb25nIiwgbnVsbHB0cikp
OworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXNz
YWdlTmFtZSwgIlRlc3QuT3BlbkZpbGUiKSkgeworICAgICAgICBhdXRvKiBwYXJhbWV0ZXJzID0g
d2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAgICAgICAgZ19h
c3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUg
PSBudWxscHRyOworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICImcyIsICZmaWxl
bmFtZSk7CisgICAgICAgIGludCBmZCA9IGdfb3BlbihmaWxlbmFtZSwgT19SRE9OTFksIDApOwor
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZmQsICE9LCAtMSk7CisgICAgICAgIEdSZWZQdHI8R1Vu
aXhGRExpc3Q+IGZkTGlzdCA9IGFkb3B0R1JlZihnX3VuaXhfZmRfbGlzdF9uZXcoKSk7CisgICAg
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgZ191bml4X2ZkX2xpc3Rf
YXBwZW5kKGZkTGlzdC5nZXQoKSwgZmQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgY2xvc2UoZmQpOworCisgICAgICAg
IHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNz
YWdlX25ld193aXRoX2ZkX2xpc3QoIlRlc3QuT3BlbkZpbGUiLCBnX3ZhcmlhbnRfbmV3KCJoIiwg
MCksIGZkTGlzdC5nZXQoKSkpOworICAgICAgICAvLyBGaWxlIGRlc2NyaXB0b3JzIGFyZSBzdG9s
ZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50LgorICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZ191
bml4X2ZkX2xpc3RfZ2V0X2xlbmd0aChmZExpc3QuZ2V0KCkpLCA9PSwgMCk7CisgICAgICAgIHJl
dHVybiBUUlVFOworICAgIH0KKworICAgIGlmICghZ19zdHJjbXAwKG1lc3NhZ2VOYW1lLCAiVGVz
dC5JbmZpbml0ZSIpKSB7CisgICAgICAgIGFib3J0KCk7CisgICAgICAgIHJldHVybiBUUlVFOwor
ICAgIH0KKworICAgIGlmICghZ19zdHJjbXAwKG1lc3NhZ2VOYW1lLCAiVGVzdC5Bc3luY1Bpbmci
KSkgeworICAgICAgICB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcod2ViUGFn
ZSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuUGluZyIsIG51bGxwdHIpLCBudWxscHRy
LAorICAgICAgICAgICAgW10oR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
Z3BvaW50ZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiB3ZWJQYWdlID0gV0VCS0lUX1dFQl9Q
QUdFKG9iamVjdCk7CisgICAgICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OworICAgICAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IHJlcGx5ID0gYWRv
cHRHUmVmKHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2god2ViUGFn
ZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9u
b19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUocmVwbHkuZ2V0KCkpLCA9PSwgIlRlc3QuUG9uZyIp
OworICAgICAgICAgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyh3
ZWJQYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5Bc3luY1BvbmciLCBudWxscHRy
KSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICB9LCBudWxscHRyKTsK
KyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworfQorCiBz
dGF0aWMgdm9pZCBlbWl0UGFnZUNyZWF0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBn
dWludDY0IHBhZ2VJRCkKIHsKICAgICBib29sIG9rID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9z
aWduYWwoCkBAIC00MzYsNiArNTEyLDkgQEAgc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFj
ayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0V2ViUGFnZSogd2UKICAgICBl
bHNlCiAgICAgICAgIGRlbGF5ZWRTaWduYWxzUXVldWUuYXBwZW5kKERlbGF5ZWRTaWduYWwoUGFn
ZUNyZWF0ZWRTaWduYWwsIHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQod2ViUGFnZSkpKTsKIAorICAg
IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0KGV4dGVuc2lvbiwg
d2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlBhZ2VDcmVhdGVkIiwgZ192YXJpYW50X25ldygiKHQp
Iiwgd2Via2l0X3dlYl9wYWdlX2dldF9pZCh3ZWJQYWdlKSkpLAorICAgICAgICBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyKTsKKwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImRvY3Vt
ZW50LWxvYWRlZCIsIEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksIGV4dGVuc2lv
bik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAibm90aWZ5Ojp1cmkiLCBHX0NBTExC
QUNLKHVyaUNoYW5nZWRDYWxsYmFjayksIGV4dGVuc2lvbik7CiAgICAgZ19zaWduYWxfY29ubmVj
dCh3ZWJQYWdlLCAic2VuZC1yZXF1ZXN0IiwgR19DQUxMQkFDSyhzZW5kUmVxdWVzdENhbGxiYWNr
KSwgbnVsbHB0cik7CkBAIC00NDMsNiArNTIyLDI2IEBAIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVk
Q2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2UqIHdl
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFD
Syhjb250ZXh0TWVudUNhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3
ZWJQYWdlLCAiZm9ybS1jb250cm9scy1hc3NvY2lhdGVkLWZvci1mcmFtZSIsIEdfQ0FMTEJBQ0so
Zm9ybUNvbnRyb2xzQXNzb2NpYXRlZEZvckZyYW1lQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgIndpbGwtc3VibWl0LWZvcm0iLCBHX0NBTExCQUNL
KHdpbGxTdWJtaXRGb3JtQ2FsbGJhY2spLCBleHRlbnNpb24pOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViUGFnZSwgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0socGFnZU1lc3Nh
Z2VSZWNlaXZlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIGdib29sZWFuIGV4
dGVuc2lvbk1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uLCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBjb25zdCBjaGFyKiBtZXNz
YWdlTmFtZSA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSk7CisgICAgaWYg
KGdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlJlcXVlc3RQaW5nIikpIHsKKyAgICAgICAgd2Via2l0
X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQoZXh0ZW5zaW9uLCB3ZWJraXRf
dXNlcl9tZXNzYWdlX25ldygiUGluZyIsIG51bGxwdHIpLCBudWxscHRyLAorICAgICAgICAgICAg
W10oR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihvYmpl
Y3QpOworICAgICAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAg
ICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiByZXBseSA9IGFkb3B0R1JlZih3
ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2goZXh0ZW5z
aW9uLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBseS5nZXQoKSksID09LCAiUG9uZyIpOwor
ICAgICAgICAgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250
ZXh0KGV4dGVuc2lvbiwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuRmluaXNoZWRQaW5n
UmVxdWVzdCIsIG51bGxwdHIpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAg
ICAgIH0sIG51bGxwdHIpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICByZXR1
cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyBjaGFyKiBlY2hvQ2FsbGJhY2soY29uc3QgY2hhciogbWVz
c2FnZSkKQEAgLTYxNCw2ICs3MTMsNyBAQCBleHRlcm4gIkMiIHZvaWQgd2Via2l0X3dlYl9leHRl
bnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0YShXZWJLaXRXZWJFeHRlbnNpbwogICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9uYW1lKGlzb2xhdGVkV29ybGQp
LCA9PSwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpOwogICAgIGdfb2JqZWN0X3NldF9k
YXRhX2Z1bGwoR19PQkpFQ1QoZXh0ZW5zaW9uKSwgIndrLXNjcmlwdC13b3JsZCIsIGlzb2xhdGVk
V29ybGQsIGdfb2JqZWN0X3VucmVmKTsKIAorICAgIGdfc2lnbmFsX2Nvbm5lY3QoZXh0ZW5zaW9u
LCAidXNlci1tZXNzYWdlLXJlY2VpdmVkIiwgR19DQUxMQkFDSyhleHRlbnNpb25NZXNzYWdlUmVj
ZWl2ZWRDYWxsYmFjayksIG51bGxwdHIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZXh0ZW5zaW9u
LCAicGFnZS1jcmVhdGVkIiwgR19DQUxMQkFDSyhwYWdlQ3JlYXRlZENhbGxiYWNrKSwgZXh0ZW5z
aW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X2RlZmF1
bHQoKSwgIndpbmRvdy1vYmplY3QtY2xlYXJlZCIsIEdfQ0FMTEJBQ0sod2luZG93T2JqZWN0Q2xl
YXJlZCksIG51bGxwdHIpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380871</attachid>
            <date>2019-10-14 03:44:54 -0700</date>
            <delta_ts>2019-10-15 02:03:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-user-messages.diff</filename>
            <type>text/plain</type>
            <size>135870</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDJjM2RlNWRlNTdm
Li5lNzc5ZjdhZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgbmV3IGZpbGVzIGNvbnRhaW5pbmcgdHJhbnNsYXRhYmxlIHN0cmluZ3Mu
CisKIDIwMTktMDktMDcgIENocmlzdGlhbiBLaXJiYWNoICA8Q2hyaXN0aWFuLktpcmJhY2hAZ29v
Z2xlbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlZCBHZXJtYW4gdHJhbnNsYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRleCBiNTRkMjFkMzY3Mi4u
NGNlYmQ5NTk5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9Q
T1RGSUxFUy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMu
aW4KQEAgLTcsNiArNyw3IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCiAuLi8uLi8uLi9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorLi4vLi4vLi4vV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKIC4uLy4uLy4uL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkVycm9yc1NvdXAuY3BwCkBAIC00
Myw0ICs0NCw1IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJLaXRJbnNwZWN0b3JXaW5kb3cuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogLi4vLi4vLi4vV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5jcHAKKy4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKIC4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkYjdmNDQ2
NzQ5Li42MWY4MzcyNjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMTktMTAtMTQg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIG5ldmVyIGV4cG9zZWQgYW4gQVBJIHRvIHNl
bmQvcmVjZWl2ZSBtZXNzYWdlcyB0by9mcm9tIFdlYiBleHRlbnNpb25zLCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdXNlIHRoZWlyIG93bgorICAgICAgICBJUEMuIE5vdywgd2l0aCBQU09OIGVuYWJs
ZWQsIGl0J3MgYSBsb3QgbW9yZSBkaWZmaWN1bHQgdG8gaW1wbGVtZW50IHRoZSBjdXN0b20gSVBD
IG9uIHRoZSBhcHBsaWNhdGlvbiBzaWRlLAorICAgICAgICBiZWNhdXNlIGFwcGxpY2F0aW9ucyBu
ZWVkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHRoZSB3ZWIgcHJvY2Vzc2VzIGxhdW5jaGVkLCBhbmQg
dGhlIGNoYW5nZXMgb2Ygd2ViIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIHdlYiB2aWV3IHRvIHNl
bmQgdGhlIG1lc3NhZ2VzIHRvIHRoZSByaWdodCBleHRlbnNpb24uIFRoYXQncyBhbHJlYWR5IGRv
bmUgaW50ZXJuYWxseSBieSBXZWJLaXQsIHNvIGl0IHdvdWxkIGJlCisgICAgICAgIGVhc2llciB0
byBwcm92aWRlIGEgc2ltcGxlIEFQSSBzbyB0aGF0IGFwcHMgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCB0aGUgd2ViIHByb2Nlc3MgYmVpbmcgdXNlZC4gVGhpcyBwYXRjaCBhZGRzCisgICAgICAg
IFdlYktpdFVzZXJNZXNzYWdlLCBhIHNpbXBsZSBtZXNzYWdlIEFQSSBjb25zaXN0aW5nIG9uIGEg
bWVzc2FnZSBuYW1lLCBwYXJhbWV0ZXJzIGFuZCBmaWxlIGRlc2NyaXB0b3JzLiBNZXNzYWdlcwor
ICAgICAgICBjYW4gYmUgc2VudCBmcm9tIGEgV2ViS2l0V2ViQ29udGV4dCB0byBhbGwgdGhlIFdl
YktpdFdlYkV4dGVuc2lvbnMsIG9yIGZyb20gYSBXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzCisg
ICAgICAgIFdlYktpdFdlYkNvbnRleHQsIG9yIGZyb20gYSBXZWJLaXRXZWJWaWV3IHRvIGl0cyBX
ZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2ZXJzYSkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFVzZXJN
ZXNzYWdlRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRVc2VyTWVzc2FnZUdldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3VzZXJfbWVzc2FnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlQ3Jl
YXRlKToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldyk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX25l
d193aXRoX2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKToKKyAgICAgICAg
KHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJf
bWVzc2FnZV9zZW5kX3JlcGx5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lc3NhZ2VQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50
Q29kZXJzR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5o
OiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVzc2FnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lc3NhZ2U6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2dsaWIvVXNlck1l
c3NhZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlOjpVc2VyTWVzc2Fn
ZSk6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
Y29udGV4dF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21l
c3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAg
ICAoQVBJOjpWaWV3Q2xpZW50OjpkaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OmRpZFJlY2VpdmVVc2VyTWVzc2FnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6ZXh0ZW5zaW9uIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3Nh
Z2UpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHQpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHRfZmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2Vy
TWVzc2FnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcp
OgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJl
eHRlbnNpb25zLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kTWVzc2Fn
ZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vu
ZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24pOgorCiAyMDE5LTEwLTA4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIGFib3V0OmdwdSBzaG91bGQgYWxzbyBzaG93IHRoZSBjbGllbnQgRUdMIGV4dGVuc2lv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGFhNzY1NWI5ZDU3Li5kZmUxYzUyOTIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDksNiArMTA5LDcgQEAgc2V0KFdlYktpdDJH
VEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmgKQEAg
LTY5NCwxMiArNjk1LDE0IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAgICAgICAgICAg
ICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51LmNwcAogICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJ
dGVtLmNwcAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0
SGl0VGVzdFJlc3VsdC5jcHAKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9n
bGliL1dlYktpdFVzZXJNZXNzYWdlLmNwcAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJ
Un0vU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAogICAgICAgICAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgICAg
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0
aW9ucy5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51SXRlbS5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAorICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oCiAgICAgICAgICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaAogICAgICAgICAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oCiAgICAg
ICAgICAgICAke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
Ki5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDg5Nzc0MjFiYjEwLi43M2ZiNmExZDg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xMzQsNiArMTM0LDcgQEAgc2V0KFdQRV9B
UElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViUmVzb3VyY2UuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNhM2Y4ODlhNjFjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3Nh
Z2UuY3BwCkBAIC0wLDAgKzEsMzAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5o
IgorCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgiCisjaW5jbHVkZSA8Z2lv
L2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQ
Uk9QX05BTUUsCisgICAgUFJPUF9QQVJBTUVURVJTLAorICAgIFBST1BfRkRfTElTVAorfTsKKwor
LyoqCisgKiBTRUNUSU9OOiBXZWJLaXRVc2VyTWVzc2FnZQorICogQFNob3J0X2Rlc2NyaXB0aW9u
OiBBIHVzZXIgbWVzc2FnZQorICogQFRpdGxlOiBXZWJLaXRVc2VyTWVzc2FnZQorICogQFNlZV9h
bHNvOiAjV2ViS2l0V2ViQ29udGV4dCwgI1dlYktpdFdlYlZpZXcsICNXZWJLaXRXZWJFeHRlbnNp
b24sICNXZWJLaXRXZWJQYWdlCisgKgorICogQSBXZWJLaXRVc2VyTWVzc2FnZSBpcyBhIG1lc3Nh
Z2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgVUkg
cHJvY2VzcworICogYW5kIFdlYiBleHRlbnNpb25zLiBBIFdlYktpdFVzZXJNZXNzYWdlIGFsd2F5
cyBoYXZlIGEgbmFtZSwgYW5kIGl0IGNhbiBhbHNvIGluY2x1ZGUgcGFyYW1ldGVycyBhbmQKKyAq
IFVOSVggZmlsZSBkZXNjcmlwdG9ycy4gTWVzc2FnZXMgY2FuIGJlIHNlbnQgZnJvbSBhICNXZWJL
aXRXZWJDb250ZXh0IHRvIGFsbCAjV2ViS2l0V2ViRXh0ZW5zaW9uPCEtLSAtLT5zLAorICogZnJv
bSBhICNXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzIGNvcnJlc3BvbmRpbmcgI1dlYktpdFdlYkNv
bnRleHQsIGFuZCBmcm9tIGEgI1dlYktpdFdlYlZpZXcgdG8gaXRzCisgKiBjb3JyZXNwb25kaW5n
ICNXZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2ZXJzYSkuIE9uZSB0byBvbmUgbWVzc2FnZXMgY2Fu
IGJlIHJlcGxpZWQgZGlyZWN0bHkgd2l0aAorICogd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3Jl
cGx5KCkuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2Fn
ZVByaXZhdGUgeworICAgIFVzZXJNZXNzYWdlIG1lc3NhZ2U7CisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4gcmVwbHlIYW5kbGVyOworfTsKKworV0VCS0lUX0RFRklO
RV9UWVBFKFdlYktpdFVzZXJNZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlLCBHX1RZUEVfSU5J
VElBTExZX1VOT1dORUQpCisKK0dfREVGSU5FX1FVQVJLKFdlYktpdFVzZXJNZXNzYWdlRXJyb3Is
IHdlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3IpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZXNz
YWdlRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIG1l
c3NhZ2UgPSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7CisKKyAgICBpZiAoYXV0byByZXBs
eUhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1lc3NhZ2UtPnByaXYtPnJlcGx5SGFuZGxlciwgbnVs
bHB0cikpCisgICAgICAgIHJlcGx5SGFuZGxlcihVc2VyTWVzc2FnZShtZXNzYWdlLT5wcml2LT5t
ZXNzYWdlLm5hbWUsIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpKTsKKwor
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91c2VyX21lc3NhZ2VfcGFyZW50X2NsYXNzKS0+ZGlz
cG9zZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVzc2FnZUdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UgPSBXRUJL
SVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNh
c2UgUFJPUF9OQU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF91
c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfUEFSQU1FVEVSUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfdmFyaWFudCh2YWx1ZSwgd2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9GRF9MSVNUOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QobWVzc2FnZSkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRVc2VyTWVzc2FnZVNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAg
V2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UgPSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAgICBt
ZXNzYWdlLT5wcml2LT5tZXNzYWdlLm5hbWUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOwor
ICAgICAgICBtZXNzYWdlLT5wcml2LT5tZXNzYWdlLnR5cGUgPSBVc2VyTWVzc2FnZTo6VHlwZTo6
TWVzc2FnZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBUkFNRVRFUlM6CisgICAg
ICAgIG1lc3NhZ2UtPnByaXYtPm1lc3NhZ2UucGFyYW1ldGVycyA9IGdfdmFsdWVfZ2V0X3Zhcmlh
bnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRkRfTElTVDoKKyAgICAg
ICAgbWVzc2FnZS0+cHJpdi0+bWVzc2FnZS5maWxlRGVzY3JpcHRvcnMgPSBHX1VOSVhfRkRfTElT
VChnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJfbWVz
c2FnZV9jbGFzc19pbml0KFdlYktpdFVzZXJNZXNzYWdlQ2xhc3MqIGtsYXNzKQoreworICAgIEdP
YmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAg
Z09iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0VXNlck1lc3NhZ2VEaXNwb3NlOworICAgIGdP
YmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VXNlck1lc3NhZ2VHZXRQcm9wZXJ0eTsK
KyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJv
cGVydHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2VyTWVzc2FnZTpuYW1lOgorICAgICAq
CisgICAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgbWVzc2FnZS4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgK
KyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX05BTUUsCisgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAibmFtZSIsCisgICAgICAgICAgICBfKCJOYW1l
IiksCisgICAgICAgICAgICBfKCJUaGUgdXNlciBtZXNzYWdlIG5hbWUiKSwKKyAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRVc2VyTWVzc2FnZTpwYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogVGhlIHBh
cmFtZXRlcnMgb2YgdGhlIHVzZXIgbWVzc2FnZSBhcyBhICNHVmFyaWFudCwgb3IgJU5VTEwKKyAg
ICAgKiBpZiB0aGUgbWVzc2FnZSBkb2Vzbid0IGluY2x1ZGUgcGFyYW1ldGVycy4gTm90ZSB0aGF0
IG9ubHkgY29tcGxldGUgdHlwZXMgYXJlCisgICAgICogYWxsb3dlZC4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1BBUkFNRVRFUlMsCisgICAg
ICAgIGdfcGFyYW1fc3BlY192YXJpYW50KAorICAgICAgICAgICAgInBhcmFtZXRlcnMiLAorICAg
ICAgICAgICAgXygiUGFyYW1ldGVycyIpLAorICAgICAgICAgICAgXygiVGhlIHVzZXIgbWVzc2Fn
ZSBwYXJhbWV0ZXJzIiksCisgICAgICAgICAgICBHX1ZBUklBTlRfVFlQRV9BTlksCisgICAgICAg
ICAgICBudWxscHRyLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoq
CisgICAgICogV2ViS2l0VXNlck1lc3NhZ2U6ZmQtbGlzdDoKKyAgICAgKgorICAgICAqIFRoZSBV
TklYIGZpbGUgZGVzY3JpcHRvcnMgb2YgdGhlIHVzZXIgbWVzc2FnZS4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0ZEX0xJU1QsCisgICAgICAg
IGdfcGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAiZmQtbGlzdCIsCisgICAgICAgICAg
ICBfKCJGaWxlIERlc2NyaXB0b3IgTGlzdCIpLAorICAgICAgICAgICAgXygiVGhlIHVzZXIgbWVz
c2FnZSBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMiKSwKKyAgICAgICAgICAgIEdfVFlQRV9VTklY
X0ZEX0xJU1QsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7Cit9CisKK1dlYktpdFVz
ZXJNZXNzYWdlKiB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShVc2VyTWVzc2FnZSYmIG1lc3NhZ2Up
Cit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIHJldHVyblZhbHVlID0gV0VCS0lUX1VTRVJfTUVT
U0FHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBudWxscHRyKSk7Cisg
ICAgcmV0dXJuVmFsdWUtPnByaXYtPm1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdFVzZXJNZXNz
YWdlQ3JlYXRlKFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChV
c2VyTWVzc2FnZSYmKT4mJiByZXBseUhhbmRsZXIpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2Uq
IHJldHVyblZhbHVlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfVVNFUl9NRVNTQUdFLCBudWxscHRyKSk7CisgICAgcmV0dXJuVmFsdWUtPnByaXYtPm1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpOworICAgIHJldHVyblZhbHVlLT5wcml2LT5yZXBseUhhbmRs
ZXIgPSBXVEZNb3ZlKHJlcGx5SGFuZGxlcik7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
CitVc2VyTWVzc2FnZSYgd2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKFdlYktpdFVzZXJNZXNz
YWdlKiBtZXNzYWdlKQoreworICAgIHJldHVybiBtZXNzYWdlLT5wcml2LT5tZXNzYWdlOworfQor
CisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3OgorICogQG5hbWU6IHRoZSBtZXNzYWdl
IG5hbWUKKyAqIEBwYXJhbWV0ZXJzOiAobnVsbGFibGUpOiB0aGUgbWVzc2FnZSBwYXJhbWV0ZXJz
IGFzIGEgI0dWYXJpYW50LCBvciAlTlVMTAorICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0VXNl
ck1lc3NhZ2Ugd2l0aCBAbmFtZS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgbmV3bHkgY3JlYXRlZCAj
V2ViS2l0VXNlck1lc3NhZ2Ugb2JqZWN0LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktp
dFVzZXJNZXNzYWdlKiB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldyhjb25zdCBjaGFyKiBuYW1lLCBH
VmFyaWFudCogcGFyYW1ldGVycykKK3sKKyAgICByZXR1cm4gd2Via2l0X3VzZXJfbWVzc2FnZV9u
ZXdfd2l0aF9mZF9saXN0KG5hbWUsIHBhcmFtZXRlcnMsIG51bGxwdHIpOworfQorCisvKioKKyAq
IHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3X3dpdGhfZmRfbGlzdDoKKyAqIEBuYW1lOiB0aGUgbWVz
c2FnZSBuYW1lCisgKiBAcGFyYW1ldGVyczogKG51bGxhYmxlKTogdGhlIG1lc3NhZ2UgcGFyYW1l
dGVycyBhcyBhICNHVmFyaWFudAorICogQGZkX2xpc3Q6IChudWxsYWJsZSk6IHRoZSBtZXNzYWdl
IGZpbGUgZGVzY3JpcHRvcnMKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdFVzZXJNZXNzYWdl
IGluY2x1ZGluZyBhbHNvIGEgbGlzdCBvZiBVTklYIGZpbGUgZGVzY3JpcHRvcnMgdG8gYmUgc2Vu
dC4KKyAqCisgKiBSZXR1cm5zOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0VXNlck1lc3NhZ2Ug
b2JqZWN0LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJr
aXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QoY29uc3QgY2hhciogbmFtZSwgR1Zhcmlh
bnQqIHBhcmFtZXRlcnMsIEdVbml4RkRMaXN0KiBmZExpc3QpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwobmFtZSwgbnVsbHB0cik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWZkTGlz
dCB8fCBHX0lTX1VOSVhfRkRfTElTVChmZExpc3QpLCBudWxscHRyKTsKKworICAgIHJldHVybiBX
RUJLSVRfVVNFUl9NRVNTQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0Us
ICJuYW1lIiwgbmFtZSwgInBhcmFtZXRlcnMiLCBwYXJhbWV0ZXJzLCAiZmQtbGlzdCIsIGZkTGlz
dCwgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWU6
CisgKiBAbWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqCisgKiBHZXQgdGhlIEBtZXNz
YWdlIG5hbWUKKyAqCisgKiBSZXR1cm5zOiB0aGUgbWVzc2FnZSBuYW1lCisgKgorICogU2luY2U6
IDIuMjgKKyAqLworY29uc3QgY2hhciogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShXZWJL
aXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpLCBudWxscHRyKTsKKworICAgIHJldHVybiBtZXNz
YWdlLT5wcml2LT5tZXNzYWdlLm5hbWUuZGF0YSgpOworfQorCisvKioKKyAqIHdlYmtpdF91c2Vy
X21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnM6CisgKiBAbWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3Nh
Z2UKKyAqCisgKiBHZXQgdGhlIEBtZXNzYWdlIHBhcmFtZXRlcnMKKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6IHRoZSBtZXNzYWdlIHBhcmFtZXRlcnMKKyAqCisgKiBTaW5jZTogMi4y
OAorICovCitHVmFyaWFudCogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhXZWJL
aXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpLCBudWxscHRyKTsKKworICAgIHJldHVybiBtZXNz
YWdlLT5wcml2LT5tZXNzYWdlLnBhcmFtZXRlcnMuZ2V0KCk7Cit9CisKKy8qKgorICogd2Via2l0
X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdDoKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVz
c2FnZQorICoKKyAqIEdldCB0aGUgQG1lc3NhZ2UgbGlzdCBvZiBmaWxlIGRlc2NyaXRwb3IKKyAq
CisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBtZXNzYWdlIGxpc3Qgb2YgZmlsZSBk
ZXNjcmlwdG9ycworICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK0dVbml4RkRMaXN0KiB3ZWJraXRf
dXNlcl9tZXNzYWdlX2dldF9mZF9saXN0KFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSks
IG51bGxwdHIpOworCisgICAgcmV0dXJuIG1lc3NhZ2UtPnByaXYtPm1lc3NhZ2UuZmlsZURlc2Ny
aXB0b3JzLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBs
eToKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICogQHJlcGx5OiBhICNXZWJL
aXRVc2VyTWVzc2FnZSB0byBzZW5kIGFzIHJlcGx5CisgKgorICogU2VuZCBhIHJlcGx5IHRvIEBt
ZXNzYWdlLiBJZiBAcmVwbHkgaXMgZmxvYXRpbmcsIGl0J3MgY29uc3VtZWQuCisgKiBZb3UgY2Fu
IG9ubHkgc2VuZCBhIHJlcGx5IHRvIGEgI1dlYktpdFVzZXJNZXNzYWdlIHRoYXQgaGFzIGJlZW4K
KyAqIHJlY2VpdmVkLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJf
bWVzc2FnZV9zZW5kX3JlcGx5KFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlLCBXZWJLaXRVc2Vy
TWVzc2FnZSogcmVwbHkpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9N
RVNTQUdFKG1lc3NhZ2UpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01F
U1NBR0UocmVwbHkpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG1lc3NhZ2UtPnByaXYtPnJlcGx5
SGFuZGxlcik7CisKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBhZG9wdGVkUmVwbHkg
PSByZXBseTsKKyAgICBpZiAoYXV0byByZXBseUhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1lc3Nh
Z2UtPnByaXYtPnJlcGx5SGFuZGxlciwgbnVsbHB0cikpCisgICAgICAgIHJlcGx5SGFuZGxlcihy
ZXBseSA/IHJlcGx5LT5wcml2LT5tZXNzYWdlIDogVXNlck1lc3NhZ2UoKSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlUHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iY2VhYTAxZGU4
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dFVzZXJNZXNzYWdlUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVc2VyTWVzc2Fn
ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlLmgiCisKK1dlYktpdFVzZXJNZXNzYWdl
KiB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpOworV2ViS2l0
VXNlck1lc3NhZ2UqIHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdlYktpdDo6VXNlck1lc3NhZ2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmKTsKK1dl
YktpdDo6VXNlck1lc3NhZ2UmIHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShXZWJLaXRVc2Vy
TWVzc2FnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVu
dENvZGVyc0dMaWIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVy
c0dMaWIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MjI3NmRj
NDhiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1l
bnRDb2RlcnNHTGliLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVyc0dMaWIuaCIKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKwordm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgR1ZhcmlhbnQqIHZhcmlh
bnQpCit7CisgICAgaWYgKCF2YXJpYW50KSB7CisgICAgICAgIGVuY29kZXIgPDwgQ1N0cmluZygp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZW5jb2RlciA8PCBDU3RyaW5nKGdfdmFy
aWFudF9nZXRfdHlwZV9zdHJpbmcodmFyaWFudCkpOworICAgIGVuY29kZXIgPDwgRGF0YVJlZmVy
ZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ192YXJpYW50X2dldF9kYXRhKHZhcmlh
bnQpKSwgZ192YXJpYW50X2dldF9zaXplKHZhcmlhbnQpKTsKK30KKworYm9vbCBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgR1JlZlB0cjxHVmFyaWFudD4mIHZhcmlhbnQpCit7CisgICAgQ1N0cmlu
ZyB2YXJpYW50VHlwZVN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhcmlhbnRUeXBl
U3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHZhcmlhbnRUeXBlU3Ry
aW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghZ192YXJpYW50
X3R5cGVfc3RyaW5nX2lzX3ZhbGlkKHZhcmlhbnRUeXBlU3RyaW5nLmRhdGEoKSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIERhdGFSZWZlcmVuY2UgZGF0YTsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiB2YXJp
YW50VHlwZSA9IGdfdmFyaWFudF90eXBlX25ldyh2YXJpYW50VHlwZVN0cmluZy5kYXRhKCkpOwor
ICAgIHZhcmlhbnQgPSBnX3ZhcmlhbnRfbmV3X2Zyb21fZGF0YSh2YXJpYW50VHlwZSwgZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpLCBGQUxTRSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgZ192YXJp
YW50X3R5cGVfZnJlZSh2YXJpYW50VHlwZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1
bWVudENvZGVyc0dMaWIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2Rl
cnNHTGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE3MDk2ODFl
ODhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVu
dENvZGVyc0dMaWIuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK3R5cGVkZWYgc3Ry
dWN0IF9HVmFyaWFudCBHVmFyaWFudDsKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgZW5jb2Rl
KEVuY29kZXImLCBHVmFyaWFudCopOworYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdSZWZQdHI8R1Zh
cmlhbnQ+Jik7CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGli
L1VzZXJNZXNzYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ZjYwMGNiMGEwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGli
L1VzZXJNZXNzYWdlLmNwcApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJVc2VyTWVzc2FnZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNHTGliLmgiCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
IDxnaW8vZ3VuaXhmZGxpc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVXNlck1l
c3NhZ2U6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKHR5cGUpOworICAgIGlmICh0eXBlID09IFR5cGU6Ok51bGwpCisgICAgICAg
IHJldHVybjsKKworICAgIGVuY29kZXIgPDwgbmFtZTsKKyAgICBpZiAodHlwZSA9PSBUeXBlOjpF
cnJvcikgeworICAgICAgICBlbmNvZGVyIDw8IGVycm9yQ29kZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHBhcmFtZXRlcnMuZ2V0KCkpOworCisg
ICAgVmVjdG9yPElQQzo6QXR0YWNobWVudD4gYXR0YWNobWVudHM7CisgICAgaWYgKGZpbGVEZXNj
cmlwdG9ycykgeworICAgICAgICBpbnQgbGVuZ3RoID0gZ191bml4X2ZkX2xpc3RfZ2V0X2xlbmd0
aChmaWxlRGVzY3JpcHRvcnMuZ2V0KCkpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQorICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKElQQzo6QXR0YWNobWVu
dChnX3VuaXhfZmRfbGlzdF9nZXQoZmlsZURlc2NyaXB0b3JzLmdldCgpLCBpLCBudWxscHRyKSkp
OworICAgIH0KKyAgICBlbmNvZGVyIDw8IGF0dGFjaG1lbnRzOworfQorCitPcHRpb25hbDxVc2Vy
TWVzc2FnZT4gVXNlck1lc3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgVXNlck1lc3NhZ2UgcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3Vs
dC50eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlmIChyZXN1bHQu
dHlwZSA9PSBUeXBlOjpOdWxsKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBpZiAocmVzdWx0LnR5cGUgPT0gVHlwZTo6RXJyb3IpIHsKKyAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGVycm9yQ29kZTsKKyAgICAgICAgZGVjb2RlciA+PiBlcnJvckNvZGU7Cisg
ICAgICAgIGlmICghZXJyb3JDb2RlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICByZXN1bHQuZXJyb3JDb2RlID0gZXJyb3JDb2RlLnZhbHVlKCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBy
ZXN1bHQucGFyYW1ldGVycykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4gYXR0YWNobWVudHM7CisgICAgZGVjb2Rl
ciA+PiBhdHRhY2htZW50czsKKyAgICBpZiAoIWF0dGFjaG1lbnRzKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghYXR0YWNobWVudHMtPmlzRW1wdHkoKSkgeworICAgICAg
ICByZXN1bHQuZmlsZURlc2NyaXB0b3JzID0gYWRvcHRHUmVmKGdfdW5peF9mZF9saXN0X25ldygp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogKmF0dGFjaG1lbnRzKSB7CisgICAg
ICAgICAgICBpZiAoZ191bml4X2ZkX2xpc3RfYXBwZW5kKHJlc3VsdC5maWxlRGVzY3JpcHRvcnMu
Z2V0KCksIGF0dGFjaG1lbnQucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCksIG51bGxwdHIpID09IC0x
KQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Vz
ZXJNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJiZGQ2
NGQ2ODAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2Vy
TWVzc2FnZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dVbml4RkRMaXN0IEdVbml4RkRMaXN0OwordHlw
ZWRlZiBzdHJ1Y3QgX0dWYXJpYW50IEdWYXJpYW50OworCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFVzZXJNZXNzYWdlIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBOdWxsLCBNZXNzYWdlLCBF
cnJvciB9OworCisgICAgVXNlck1lc3NhZ2UoKQorICAgICAgICA6IHR5cGUoVHlwZTo6TnVsbCkK
KyAgICB7CisgICAgfQorCisgICAgVXNlck1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbmFtZSwgdWlu
dDMyX3QgZXJyb3JDb2RlKQorICAgICAgICA6IHR5cGUoVHlwZTo6RXJyb3IpCisgICAgICAgICwg
bmFtZShuYW1lKQorICAgICAgICAsIGVycm9yQ29kZShlcnJvckNvZGUpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRp
b25hbDxVc2VyTWVzc2FnZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgVHlwZSB0eXBl
IHsgVHlwZTo6TnVsbCB9OworICAgIENTdHJpbmcgbmFtZTsKKyAgICBHUmVmUHRyPEdWYXJpYW50
PiBwYXJhbWV0ZXJzOworICAgIEdSZWZQdHI8R1VuaXhGRExpc3Q+IGZpbGVEZXNjcmlwdG9yczsK
KyAgICB1aW50MzJfdCBlcnJvckNvZGUgeyAwIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApp
bmRleCAxZTRlNDJjZGRiZS4uYzllMTUzZDZhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtNjcs
NiArNjcsNyBAQCBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBAbm8t
dW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBAbm8tdW5pZnkK
IFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CitTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0VXNlck1lc3NhZ2UuY3BwIEBuby11bmlmeQogCiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC04Miw3ICs4Myw5IEBAIFNoYXJl
ZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKIAogU2hhcmVkL2NhaXJvL1NoYXJl
YWJsZUJpdG1hcENhaXJvLmNwcAogCitTaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3Bw
CiBTaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAorU2hhcmVkL2dsaWIv
VXNlck1lc3NhZ2UuY3BwCiBTaGFyZWQvZ2xpYi9XZWJDb250ZXh0TWVudUl0ZW1HbGliLmNwcAog
CiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtNDA0LDYgKzQwNyw4IEBAIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCiAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViS2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCiAKK1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3BwCiAKIFdlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0
CmluZGV4IGEyMmU0ZjEwOTk0Li41YjUxNGQ1MjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC02
OCw2ICs2OCw3IEBAIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIEBu
by11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIEBuby11bmlm
eQogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwIEBuby11bmlmeQogU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcCBAbm8tdW5pZnkKK1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAgQG5vLXVuaWZ5CiAKIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1NpbXBsZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTgxLDcgKzgyLDkgQEAgU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCiAK
IFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorU2hhcmVkL2dsaWIvQXJn
dW1lbnRDb2RlcnNHTGliLmNwcAogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xp
Yi5jcHAKK1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAogU2hhcmVkL2dsaWIvV2ViQ29udGV4
dE1lbnVJdGVtR2xpYi5jcHAKIAogU2hhcmVkL2xpYndwZS9OYXRpdmVXZWJLZXlib2FyZEV2ZW50
TGliV1BFLmNwcApAQCAtMjQ3LDYgKzI1MCw4IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsv
V2ViS2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCiAKK1dlYlByb2Nlc3MvV2ViUGFn
ZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorCiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dl
YlBhZ2VHU3RyZWFtZXIuY3BwCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0
ZWRTdXJmYWNlTGliV1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNDA1YjFjNWFkZTku
LjM2ZmJlZWFkZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNDcsMTAgKzQ3LDEyIEBACiAjaW5jbHVkZSAi
V2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+
CkBAIC0xMjMsNiArMTI1LDcgQEAgZW51bSB7CiAgICAgSU5JVElBTElaRV9XRUJfRVhURU5TSU9O
UywKICAgICBJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNTSU9OUywKICAgICBBVVRPTUFU
SU9OX1NUQVJURUQsCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAogCiAgICAgTEFTVF9TSUdO
QUwKIH07CkBAIC0zNzIsNiArMzc1LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRD
b25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdl
YlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAgICAgcHJpdi0+cHJvY2Vzc1Bv
b2wtPnNldFByaW1hcnlEYXRhU3RvcmUod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0
b3JlKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAgIHByaXYtPnByb2Nlc3NQ
b29sLT5zZXRVc2VyTWVzc2FnZUhhbmRsZXIoW3dlYkNvbnRleHQgPSBHUmVmUHRyPFdlYktpdFdl
YkNvbnRleHQ+KHdlYkNvbnRleHQpXShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAg
ICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVmLgorICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJN
ZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgICAgIGdfc2lnbmFsX2VtaXQod2ViQ29udGV4dC5nZXQoKSwgc2lnbmFs
c1tVU0VSX01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2FnZS5nZXQoKSwgJnJldHVyblZh
bHVlKTsKKyAgICB9KTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQ
b29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29sKTsK
IApAQCAtNTc0LDYgKzU4MywzMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xh
c3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogICAgICAgICAg
ICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKICAgICAgICAgICAgIEdfVFlQRV9O
T05FLCAxLAogICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUT01BVElPTl9TRVNTSU9OKTsKKwor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6OnVzZXItbWVzc2FnZS1yZWNlaXZlZDoK
KyAgICAgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgICAgICogQG1lc3NhZ2U6
IHRoZSAjV2ViS2l0VXNlck1lc3NhZ2UgcmVjZWl2ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhICNXZWJLaXRVc2VyTWVzc2FnZSBpcyByZWNlaXZlZCBmcm9t
IGEKKyAgICAgKiAjV2ViS2l0V2ViRXh0ZW5zaW9uLiBZb3UgY2FuIHJlcGx5IHRvIHRoZSBtZXNz
YWdlIHVzaW5nCisgICAgICogd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkuCisgICAg
ICoKKyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdlIGFzeW5jaHJvbm91c2x5
IGJ5IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVzc2FnZSBhbmQgcmV0dXJu
aW5nICVUUlVFLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgaWYgdGhlIG1lc3NhZ2Ug
d2FzIGhhbmRsZWQsIG9yICVGQUxTRSBvdGhlcndpc2UuCisgICAgICoKKyAgICAgKiBTaW5jZTog
Mi4yOAorICAgICAqLworICAgIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSA9IGdfc2ln
bmFsX25ldygKKyAgICAgICAgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsCisgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViQ29udGV4dENsYXNzLCB1c2VyX21lc3Nh
Z2VfcmVjZWl2ZWQpLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQs
IG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBH
X1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKTsKIH0K
IAogc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KGdwb2ludGVyKQpAQCAt
MTY4MCw2ICsxNzE1LDI3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90
aWZpY2F0aW9uX3Blcm1pc3Npb25zKFdlYktpdFdlYkNvbnRleHQqIGNvCiAgICAgY29udGV4dC0+
cHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXItPnNldE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdU
Rk1vdmUobWFwKSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2Fn
ZV90b19hbGxfZXh0ZW5zaW9uczoKKyAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRleHQK
KyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICoKKyAqIFNlbmQgQG1lc3NhZ2Ug
dG8gYWxsICNXZWJLaXRXZWJFeHRlbnNpb248IS0tIC0tPnMgYXNzb2NpYXRlZCB0byBAY29udGV4
dC4KKyAqIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICoKKyAqIFNp
bmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19h
bGxfZXh0ZW5zaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRVc2VyTWVzc2Fn
ZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVY
VChjb250ZXh0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdF
KG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBjYXNlIG9mIGJl
aW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFkb3B0ZWRNZXNz
YWdlID0gbWVzc2FnZTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBjb250ZXh0LT5wcml2LT5w
cm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24od2Via2l0VXNlck1lc3NhZ2VH
ZXRNZXNzYWdlKG1lc3NhZ2UpKSwgMCk7Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dEluaXRp
YWxpemVOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIGdfc2lnbmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJTklUSUFMSVpFX05PVElGSUNB
VElPTl9QRVJNSVNTSU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAxMDdmNGRkMDQwNC4uODQyYWU0OGJiNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCkBAIC01NiwxMiArNTYsMTQgQEAKICNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJ
UmVzcG9uc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJSZXNvdXJjZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRv
d1Byb3BlcnRpZXNQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CkBAIC0x
NjMsNiArMTY1LDggQEAgZW51bSB7CiAgICAgU0hPV19PUFRJT05fTUVOVSwKICNlbmRpZgogCisg
ICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAorCiAgICAgTEFTVF9TSUdOQUwKIH07CiAKQEAgLTQ0
NCw2ICs0NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2ViVmlld0RpZENoYW5nZVBh
Z2VJRChtX3dlYlZpZXcpOwogICAgIH0KIAorICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZXNzYWdl
KFdLV1BFOjpWaWV3JiwgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgd2Via2l0V2ViVmlld0RpZFJlY2VpdmVVc2VyTWVzc2FnZShtX3dlYlZpZXcsIFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9CisKICAg
ICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogI2VuZGlmCkBAIC0yMDgxLDYgKzIwOTAs
MzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmll
d0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgIEdES19UWVBFX0VWRU5UIHwgR19TSUdOQUxf
VFlQRV9TVEFUSUNfU0NPUEUsCiAgICAgICAgIEdES19UWVBFX1JFQ1RBTkdMRSB8IEdfU0lHTkFM
X1RZUEVfU1RBVElDX1NDT1BFKTsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCisKKyAgICAvKioK
KyAgICAgKiBXZWJLaXRXZWJWaWV3Ojp1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQ6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2ViS2l0VXNlck1lc3NhZ2UgcmVjZWl2ZWQKKyAgICAg
KgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhICNXZWJLaXRVc2VyTWVzc2Fn
ZSBpcyByZWNlaXZlZCBmcm9tIHRoZQorICAgICAqICNXZWJLaXRXZWJQYWdlIGNvcnJlc3BvbmRp
bmcgdG8gQHdlYl92aWV3LiBZb3UgY2FuIHJlcGx5IHRvIHRoZSBtZXNzYWdlCisgICAgICogdXNp
bmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkuCisgICAgICoKKyAgICAgKiBZb3Ug
Y2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdlIGFzeW5jaHJvbm91c2x5IGJ5IGNhbGxpbmcgZ19v
YmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVzc2FnZSBhbmQgcmV0dXJuaW5nICVUUlVFLiBJZiB0
aGUgbGFzdCByZWZlcmVuY2Ugb2YgQG1lc3NhZ2UgaXMgcmVtb3ZlZAorICAgICAqIGFuZCB0aGUg
bWVzc2FnZSBoYXMgbm90IGJlZW4gcmVwbGllZCB0bywgdGhlIG9wZXJhdGlvbiBpbiB0aGUgI1dl
YktpdFdlYlBhZ2Ugd2lsbAorICAgICAqIGZpbmlzaCB3aXRoIGVycm9yICVXRUJLSVRfVVNFUl9N
RVNTQUdFX1VOSEFORExFRF9NRVNTQUdFLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUg
aWYgdGhlIG1lc3NhZ2Ugd2FzIGhhbmRsZWQsIG9yICVGQUxTRSBvdGhlcndpc2UuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JF
Q0VJVkVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIs
CisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgIEdfU0lH
TkFMX1JVTl9MQVNULAorICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNz
LCB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90
cnVlX2hhbmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmlj
LAorICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9N
RVNTQUdFKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0
aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMjU4Niw2ICsyNjIzLDE0IEBA
IHZvaWQgd2Via2l0V2ViVmlld0RpZENoYW5nZVBhZ2VJRChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJWaWV3KSwgInBhZ2UtaWQiKTsKIH0K
IAordm9pZCB3ZWJraXRXZWJWaWV3RGlkUmVjZWl2ZVVzZXJNZXNzYWdlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChV
c2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBTaW5rIHRoZSBm
bG9hdGluZyByZWYuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gdXNlck1lc3NhZ2Ug
PSB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1VTRVJfTUVTU0FHRV9SRUNFSVZFRF0sIDAsIHVzZXJNZXNz
YWdlLmdldCgpLCAmcmV0dXJuVmFsdWUpOworfQorCiAjaWYgUExBVEZPUk0oV1BFKQogLyoqCiAg
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tlbmQ6CkBAIC00MjIyLDMgKzQyNjcsNzAgQEAgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjayhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCB1bnMKICAgICAgICAgd2ViVmlldy0+cHJpdi0+ZnJhbWVEaXNwbGF5
ZWRDYWxsYmFja3MucmVtb3ZlRmlyc3RNYXRjaGluZyhtYXRjaEZ1bmN0aW9uKTsKIH0KICNlbmRp
ZiAvLyBQTEFURk9STShXUEUpCisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2Fn
ZV90b19wYWdlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAbWVzc2FnZTog
YSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBjYW5jZWxsYWJsZTogKG51bGxhYmxlKTogYSAjR0Nh
bmNlbGxhYmxlIG9yICVOVUxMIHRvIGlnbm9yZQorICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMp
OiAobnVsbGFibGUpOiBBICNHQXN5bmNSZWFkeUNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgcmVx
dWVzdCBpcyBzYXRpc2ZpZWQgb3IgJU5VTEwKKyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdGhl
IGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBmdW5jdGlvbgorICoKKyAqIFNlbmQgQG1lc3NhZ2Ug
dG8gdGhlICNXZWJLaXRXZWJQYWdlIGNvcnJlc3BvbmRpbmcgdG8gQHdlYl92aWV3LiBJZiBAbWVz
c2FnZSBpcyBmbG9hdGluZywgaXQncyBjb25zdW1lZC4KKyAqCisgKiBJZiB5b3UgZG9uJ3QgZXhw
ZWN0IGFueSByZXBseSwgb3IgeW91IHNpbXBseSB3YW50IHRvIGlnbm9yZSBpdCwgeW91IGNhbiBw
YXNzICVOVUxMIGFzIEBjYWxsYmFjay4KKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hl
ZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgY2FuIHRoZW4gY2FsbAorICogd2Via2l0
X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaCgpIHRvIGdldCB0aGUgbWVzc2Fn
ZSByZXBseS4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19z
ZW5kX21lc3NhZ2VfdG9fcGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRVc2VyTWVz
c2FnZSogbWVzc2FnZSwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxs
YmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSk7CisKKyAgICAvLyBXZSBzaW5rIHRoZSByZWZl
cmVuY2UgaW4gY2FzZSBvZiBiZWluZyBmbG9hdGluZy4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJN
ZXNzYWdlPiBhZG9wdGVkTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgYXV0byYgcGFnZSA9IGdldFBh
Z2Uod2ViVmlldyk7CisgICAgaWYgKCFjYWxsYmFjaykgeworICAgICAgICBwYWdlLmVuc3VyZVJ1
bm5pbmdQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1dlYkV4
dGVuc2lvbih3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkpLCBwYWdlLndlYlBh
Z2VJRCgpLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1JlZlB0
cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxl
LCBjYWxsYmFjaywgdXNlckRhdGEpKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJN
ZXNzYWdlJiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oVXNl
ck1lc3NhZ2UmJiByZXBseU1lc3NhZ2UpIHsKKyAgICAgICAgc3dpdGNoIChyZXBseU1lc3NhZ2Uu
dHlwZSkgeworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpOdWxsOgorICAgICAgICAg
ICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19F
UlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3YXMgY2FuY2VsbGVkIikpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5cGU6Ok1lc3NhZ2U6CisgICAg
ICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgZ19vYmplY3RfcmVmX3Np
bmsod2Via2l0VXNlck1lc3NhZ2VDcmVhdGUoV1RGTW92ZShyZXBseU1lc3NhZ2UpKSksIHN0YXRp
Y19jYXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJlZikpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5cGU6OkVycm9yOgorICAgICAgICAgICAg
Z190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgV0VCS0lUX1VTRVJfTUVTU0FHRV9F
UlJPUiwgcmVwbHlNZXNzYWdlLmVycm9yQ29kZSwgXygiTWVzc2FnZSAlcyB3YXMgbm90IGhhbmRs
ZWQiKSwgcmVwbHlNZXNzYWdlLm5hbWUuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfTsKKyAgICBwYWdlLmVuc3VyZVJ1bm5pbmdQcm9jZXNzKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0
aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNzYWdlKSksCisgICAgICAgIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdlLndlYlBhZ2VJRCgpLnRvVUludDY0KCkpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2g6
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jl
c3VsdAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGln
bm9yCisgKgorICogRmluaXNoIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRo
IHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSgpLgorICoKKyAqIFJldHVybnM6
ICh0cmFuc2ZlciBmdWxsKTogYSAjV2ViS2l0VXNlck1lc3NhZ2Ugd2l0aCB0aGUgcmVwbHkgb3Ig
JU5VTEwgaW4gY2FzZSBvZiBlcnJvci4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCitXZWJLaXRV
c2VyTWVzc2FnZSogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJy
b3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQo
cmVzdWx0LCB3ZWJWaWV3KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gV0VCS0lUX1VTRVJfTUVT
U0FHRShnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIoR19UQVNLKHJlc3VsdCksIGVycm9yKSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAppbmRleCA4YzQ1MDU1Y2U3OC4uMzMyNjQxNDIxOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlICJJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
LmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVz
dWx0RGF0YS5oIgpAQCAtMTAxLDMgKzEwMiw0IEBAIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBdXRo
ZW50aWNhdGUoV2ViS2l0V2ViVmlldyosIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCopCiBn
Ym9vbGVhbiB3ZWJraXRXZWJWaWV3U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRT
Y3JpcHREaWFsb2cqKTsKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcihXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdEaWRDaGFuZ2VQYWdlSUQoV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJWaWV3RGlk
UmVjZWl2ZVVzZXJNZXNzYWdlKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OlVzZXJNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmExNWVkNzQzYzI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
TWVzc2FnZS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEln
YWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9I
X0lOU0lERV9fKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVzZXJNZXNzYWdlX2gKKyNk
ZWZpbmUgV2ViS2l0VXNlck1lc3NhZ2VfaAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFICAgICAgICAgICAgKHdlYmtpdF91c2VyX21lc3NhZ2Vf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FU1NB
R0UsIFdlYktpdFVzZXJNZXNzYWdlKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQ
RV9VU0VSX01FU1NBR0UpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJf
TUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VS
X01FU1NBR0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRV9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9VU0VSX01FU1NBR0UsIFdlYktpdFVzZXJNZXNzYWdlQ2xhc3MpKQorCisjZGVmaW5lIFdF
QktJVF9VU0VSX01FU1NBR0VfRVJST1Igd2Via2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFyayAo
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgIFdlYktpdFVzZXJN
ZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlQ2xhc3MgICBXZWJLaXRV
c2VyTWVzc2FnZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0
ZSBXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGU7CisKKy8qKgorICogV2ViS2l0VXNlck1lc3NhZ2VF
cnJvcjoKKyAqIEBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFOiBUaGUgbWVz
c2FnZSB3YXMgbm90IGhhbmRsZWQgYnkgdGhlIHJlY2VpdmVyLgorICoKKyAqIEVudW0gdmFsdWVz
IHVzZWQgdG8gZGVub3RlIGVycm9ycyBoYXBwZW5pbmcgd2hlbiBzZW5kaW5nIHVzZXIgbWVzc2Fn
ZXMuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRf
VVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFCit9IFdlYktpdFVzZXJNZXNzYWdlRXJyb3I7
CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2UgeworICAgIEdJbml0aWFsbHlVbm93bmVkIHBh
cmVudDsKKworICAgIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVj
dCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFzcyB7CisgICAgR0luaXRpYWxseVVub3duZWRDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUgICAg
ICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgR1F1YXJrCit3ZWJraXRfdXNlcl9tZXNzYWdlX2Vy
cm9yX3F1YXJrICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoK
K3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3ICAgICAgICAgICAgICAoY29uc3QgY2hhciAgICAgICAg
Km5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAg
ICAgICAgICpwYXJhbWV0ZXJzKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3
ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QgKGNvbnN0IGNoYXIgICAgICAgICpu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAg
ICAgICAqcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1VuaXhGRExpc3QgICAgICAgKmZkX2xpc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgor
d2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSAgICAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAq
bWVzc2FnZSk7CisKK1dFQktJVF9BUEkgR1ZhcmlhbnQgKgord2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfcGFyYW1ldGVycyAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9B
UEkgR1VuaXhGRExpc3QgKgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdCAgICAgIChX
ZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3Vz
ZXJfbWVzc2FnZV9zZW5kX3JlcGx5ICAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2Ug
KnJlcGx5KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDk1Y2U1YTVmNGYwLi40
ZGE5Y2U3ZDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdE5ldHdvcmtQcm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1
cml0eU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtMTQz
LDE3ICsxNDQsMTggQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVjdCBfV2ViS2l0
V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0gICAgdm9pZCAo
KiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQg
ICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAgICAqZG93bmxvYWQpOwotICAgIHZvaWQg
KCogaW5pdGlhbGl6ZV93ZWJfZXh0ZW5zaW9ucykgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0
ICAgICAgICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKLSAgICB2b2lk
ICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4
dCAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKKyAgICB2b2lk
ICAgICAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNv
bnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsK
KyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX3dlYl9leHRlbnNpb25zKSAgICAgICAgICAgKFdl
YktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFs
aXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpj
b250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBhdXRvbWF0aW9uX3N0YXJ0ZWQpICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0QXV0b21hdGlvblNl
c3Npb24gKnNlc3Npb24pOworICAgIGdib29sZWFuICgqIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCkg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2Vy
TWVzc2FnZSAgICAgICAqbWVzc2FnZSk7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDAp
ICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDMpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTMxOCw2ICszMjAsMTAgQEAg
d2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaXN0
ICAgICAgICAgICAgICAgICAgICAgICAgICphbGxvd2VkX29yaWdpbnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICpkaXNhbGxvd2VkX29yaWdpbnMpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMgICAoV2ViS2l0
V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAgICAgICAg
ICAgICptZXNzYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDhjMjE5YTNiMDA4Li40
ZmY2OTZiNjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNl
dHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdlYlJlc291cmNlLmg+CkBAIC0yNjksOSArMjcwLDEwIEBAIHN0cnVjdCBf
V2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdE9wdGlvbk1lbnUgICAgICAgICAgICAqbWVudSk7CiAgICAgdm9p
ZCAgICAgICAoKiB3ZWJfcHJvY2Vzc190ZXJtaW5hdGVkKSAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbik7
CisgICAgZ2Jvb2xlYW4gICAoKiB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAgICptZXNz
YWdlKTsKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwotICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpAQCAt
NTUyLDYgKzU1NCwxOCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19yZXN0b3Jl
X3Nlc3Npb25fc3RhdGUgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSAqc3RhdGUpOwogCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2Ug
ICAgICAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz
eW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAg
ICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2ggICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0Vycm9yICAgICAgICAgICAgICAgICAgICoqZXJyb3IpOworCiBHX0VORF9ERUNMUwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDU2NmI4YzZjNjU3Li41ODU2
Y2M0NDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC03MCw2ICs3MCw3
IEBAIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKIHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbAogd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRp
b25fcGVybWlzc2lvbnMKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4
dGVuc2lvbnMKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjawpAQCAtMjc3LDYgKzI3OCw4IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfZWRpdG9y
X3N0YXRlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nlc3Npb25fc3RhdGUKIHdlYmtpdF93ZWJfdmll
d19yZXN0b3JlX3Nlc3Npb25fc3RhdGUKIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJj
ZQord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCit3ZWJraXRfd2ViX3ZpZXdf
c2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0xNTM4LDYgKzE1NDEsOCBAQCBX
ZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgog
V2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9uCiB3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdl
X3RvX2NvbnRleHQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0
X2ZpbmlzaAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYkV4dGVuc2lvbkNsYXNz
CkBAIC0xNTYyLDYgKzE1NjcsOCBAQCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkCiB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X3VyaQogd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lCiB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X2VkaXRvcgord2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3Cit3
ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoCiAKIDxTVUJTRUNUSU9O
IFN0YW5kYXJkPgogV2ViS2l0V2ViUGFnZUNsYXNzCkBAIC0xNzM4LDMgKzE3NDUsMzIgQEAgd2Vi
a2l0X3ByaW50X2N1c3RvbV93aWRnZXRfZ2V0X3R5cGUKIDxGSUxFPldlYktpdFVSSVV0aWxpdGll
czwvRklMRT4KIHdlYmtpdF91cmlfZm9yX2Rpc3BsYXkKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+
Cis8RklMRT5XZWJLaXRVc2VyTWVzc2FnZTwvRklMRT4KK1dlYktpdFVzZXJNZXNzYWdlCit3ZWJr
aXRfdXNlcl9tZXNzYWdlX25ldword2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9saXN0
Cit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9w
YXJhbWV0ZXJzCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0Cit3ZWJraXRfdXNlcl9t
ZXNzYWdlX3NlbmRfcmVwbHkKKworPFNVQlNFQ1RJT04gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcj4K
K1dFQktJVF9VU0VSX01FU1NBR0VfRVJST1IKK1dlYktpdFVzZXJNZXNzYWdlRXJyb3IKK3dlYmtp
dF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJL
aXRVc2VyTWVzc2FnZUNsYXNzCitXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UKK1dFQktJVF9VU0VS
X01FU1NBR0UKK1dFQktJVF9JU19VU0VSX01FU1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0VfQ0xB
U1MKK1dFQktJVF9JU19VU0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJVF9VU0VSX01FU1NBR0VfR0VU
X0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUK
K3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bAppbmRleCBjNDUzMTFkZGZiZi4uNWRhYWIwODZlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAg
LTYzLDYgKzYzLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0
aW9uSW5mby54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRp
b25NYW5hZ2VyLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVz
c2FnZS54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBmM2VkY2NlMWVkOC4uMTZlZjdlYjZkNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC03OSw2ICs3
OSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVy
c2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCmluZGV4IDA1ODliYjEzODViLi5iMTNkYTZkMGY1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50
LmgKQEAgLTI1LDYgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJVc2VyTWVz
c2FnZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCiB0eXBlZGVmIHN0
cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTR2xvYmFsQ29udGV4dFJlZjsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00Niw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KFdLV1BFOjpWaWV3JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydExvYWQoV0tXUEU6OlZpZXcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUGFnZUlEKFdLV1BFOjpWaWV3JikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVzc2FnZShXS1dQRTo6VmlldyYsIFdlYktpdDo6VXNlck1l
c3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6VXNlck1lc3Nh
Z2UoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBjOGI0ZTc5ZDE3Ni4u
MjE3MTA5YjM0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
UGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
UGFnZUNsaWVudEltcGwuY3BwCkBAIC00MjUsNCArNDI1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkQ2hhbmdlV2ViUGFnZUlEKCkgY29uc3QKICAgICBtX3ZpZXcuZGlkQ2hhbmdlUGFnZUlE
KCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJN
ZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3ZpZXcuZGlkUmVjZWl2ZVVzZXJNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggODdiN2JiOTIyMzcuLmZiMzhiMTk2ZmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC00
Miw2ICs0Miw3IEBAIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI7Citz
dHJ1Y3QgVXNlck1lc3NhZ2U7CiAKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiAKQEAg
LTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIEF0a09iamVjdCogYWNjZXNzaWJsZSgpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOworCiBwcml2YXRlOgogICAgIC8v
IFBhZ2VDbGllbnQKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRl
RHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IDBiOWZhYTA2NmUxLi5lMGY1
YTc4OTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3Bw
CkBAIC0yMTAsNiArMjEwLDExIEBAIHZvaWQgVmlldzo6ZGlkQ2hhbmdlUGFnZUlEKCkKICAgICBt
X2NsaWVudC0+ZGlkQ2hhbmdlUGFnZUlEKCp0aGlzKTsKIH0KIAordm9pZCBWaWV3OjpkaWRSZWNl
aXZlVXNlck1lc3NhZ2UoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlVXNlck1lc3NhZ2UoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBWaWV3OjpzZXRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7CiAgICAgbV9zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKaW5kZXggOWJjNmI5ZjE5YWMuLjE0ZWIzODUzMjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaApAQCAtNDksNiAr
NDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK3N0cnVjdCBVc2VyTWVzc2FnZTsK
IH0KIAogbmFtZXNwYWNlIFdLV1BFIHsKQEAgLTY4LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpOwogICAgIHZv
aWQgd2lsbFN0YXJ0TG9hZCgpOwogICAgIHZvaWQgZGlkQ2hhbmdlUGFnZUlEKCk7CisgICAgdm9p
ZCBkaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0OjpVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3NhZ2UmJik+JiYpOwogCiAgICAgV2ViS2l0OjpX
ZWJQYWdlUHJveHkmIHBhZ2UoKSB7IHJldHVybiAqbV9wYWdlUHJveHk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MWZmOTljZWExMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lc3Nh
Z2UuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lU
Ml9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lE
RV9fKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyTWVzc2FnZV9oCisjZGVmaW5lIFdlYktp
dFVzZXJNZXNzYWdlX2gKKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3cGUvV2Vi
S2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNF
Ul9NRVNTQUdFICAgICAgICAgICAgKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsIFdlYktpdFVzZXJN
ZXNzYWdlKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0Up
KQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0
VXNlck1lc3NhZ2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX01FU1NBR0VfQ0xBU1Mo
a2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNF
Ul9NRVNTQUdFKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1Mob2JqKSAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX01FU1NB
R0UsIFdlYktpdFVzZXJNZXNzYWdlQ2xhc3MpKQorCisjZGVmaW5lIFdFQktJVF9VU0VSX01FU1NB
R0VfRVJST1Igd2Via2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFyayAoKQorCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlQ2xhc3MgICBXZWJLaXRVc2VyTWVzc2FnZUNsYXNz
OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZSBXZWJLaXRVc2VyTWVz
c2FnZVByaXZhdGU7CisKKy8qKgorICogV2ViS2l0VXNlck1lc3NhZ2VFcnJvcjoKKyAqIEBXRUJL
SVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFOiBUaGUgbWVzc2FnZSB3YXMgbm90IGhh
bmRsZWQgYnkgdGhlIHJlY2VpdmVyLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3Rl
IGVycm9ycyBoYXBwZW5pbmcgd2hlbiBzZW5kaW5nIHVzZXIgbWVzc2FnZXMuCisgKgorICogU2lu
Y2U6IDIuMjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfVVNFUl9NRVNTQUdFX1VO
SEFORExFRF9NRVNTQUdFCit9IFdlYktpdFVzZXJNZXNzYWdlRXJyb3I7CisKK3N0cnVjdCBfV2Vi
S2l0VXNlck1lc3NhZ2UgeworICAgIEdJbml0aWFsbHlVbm93bmVkIHBhcmVudDsKKworICAgIFdl
YktpdFVzZXJNZXNzYWdlUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0VXNlck1l
c3NhZ2VDbGFzcyB7CisgICAgR0luaXRpYWxseVVub3duZWRDbGFzcyBwYXJlbnRfY2xhc3M7CisK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lk
KTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9B
UEkgR1R5cGUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7CisK
K1dFQktJVF9BUEkgR1F1YXJrCit3ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICAgICAg
KHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2VyX21l
c3NhZ2VfbmV3ICAgICAgICAgICAgICAoY29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0
ZXJzKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfdXNlcl9tZXNz
YWdlX25ld193aXRoX2ZkX2xpc3QgKGNvbnN0IGNoYXIgICAgICAgICpuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAqcGFyYW1ldGVy
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VuaXhGRExpc3QgICAg
ICAgKmZkX2xpc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfbmFtZSAgICAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dF
QktJVF9BUEkgR1ZhcmlhbnQgKgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyAg
IChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgR1VuaXhGRExpc3Qg
Kgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdCAgICAgIChXZWJLaXRVc2VyTWVzc2Fn
ZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3VzZXJfbWVzc2FnZV9zZW5k
X3JlcGx5ICAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgKnJlcGx5KTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGRlYjg4NWMxODVhLi45OTg2M2ZkNTBlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0TmV0d29ya1Byb3h5U2V0
dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmg+CiAjaW5jbHVk
ZSA8d3BlL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNl
ck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmg+CiAK
IEdfQkVHSU5fREVDTFMKQEAgLTE0MywxNyArMTQ0LDE4IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29u
dGV4dCB7CiBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRDbGFzcyB7CiAgICAgR09iamVjdENsYXNz
IHBhcmVudDsKIAotICAgIHZvaWQgKCogZG93bmxvYWRfc3RhcnRlZCkgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RG93bmxvYWQgICAgICAgICAg
KmRvd25sb2FkKTsKLSAgICB2b2lkICgqIGluaXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAg
ICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQpOwotICAgIHZvaWQgKCogaW5p
dGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJLaXRXZWJDb250ZXh0ICAgICAg
ICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBhdXRvbWF0aW9uX3N0YXJ0ZWQpICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
biAqc2Vzc2lvbik7CisgICAgdm9pZCAgICAgKCogZG93bmxvYWRfc3RhcnRlZCkgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdERvd25sb2Fk
ICAgICAgICAgICpkb3dubG9hZCk7CisgICAgdm9pZCAgICAgKCogaW5pdGlhbGl6ZV93ZWJfZXh0
ZW5zaW9ucykgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7Cisg
ICAgdm9pZCAgICAgKCogaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMpIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7CisgICAgdm9pZCAgICAgKCogYXV0b21hdGlv
bl9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKKyAgICBnYm9vbGVhbiAoKiB1
c2VyX21lc3NhZ2VfcmVjZWl2ZWQpICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAg
ICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgKm1lc3NhZ2UpOwogCiAgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQxKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7Ci0gICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBl
CkBAIC0zMTQsNiArMzE2LDEwIEBAIHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlm
aWNhdGlvbl9wZXJtaXNzaW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAqYWxsb3dlZF9v
cmlnaW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAqZGlzYWxsb3dlZF9vcmlnaW5zKTsK
IAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2Fs
bF9leHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRVc2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aAppbmRleCAyYTRhNjIwNDIzNS4uOWU1ZDNmNGM3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5j
bHVkZSA8d3BlL1dlYktpdFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVJlcXVl
c3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CisjaW5jbHVk
ZSA8d3BlL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRl
eHQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0V2ViVmlld0JhY2tlbmQuaD4KQEAgLTI0MSw2ICsyNDIsOSBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdDbGFzcyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0Tm90aWZpY2F0aW9uICAgICAgICAgICpub3RpZmljYXRpb24pOwog
ICAgIHZvaWQgICAgICAgICAgICgqIHdlYl9wcm9jZXNzX3Rlcm1pbmF0ZWQpICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uIHJlYXNvbik7CisgICAgZ2Jvb2xlYW4gICAgICAgKCogdXNlcl9tZXNzYWdlX3JlY2Vp
dmVkKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2Vy
TWVzc2FnZSAgICAgICAgICAgKm1lc3NhZ2UpOworCiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKQEAg
LTI0OSw3ICsyNTMsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ1
KSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ2KSAodm9pZCk7Ci0gICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQ3KSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCkBA
IC01MjUsNiArNTI4LDE4IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X2dldF9i
YWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3IpOwogCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2Vy
TWVzc2FnZSAgICAgICAgICAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICAgKmNh
bmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgICBjYWxsYmFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAg
ICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyTWVz
c2FnZSAqCit3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAg
ICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsK
KwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5kZXggMDE5Zjg0YmFl
MzcuLjY3OTAzZjVkODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC00Nyw2ICs0Nyw3IEBAIHdl
YmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKIHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9j
ZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVy
bWlzc2lvbnMKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lv
bnMKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxs
YmFjawpAQCAtMjUxLDYgKzI1Miw4IEBAIHdlYmtpdF93ZWJfdmlld19hZGRfZnJhbWVfZGlzcGxh
eWVkX2NhbGxiYWNrCiB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxs
YmFjawogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yCiB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9f
cGFnZQord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogCiA8U1VC
U0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApA
QCAtNTg3LDYgKzU5MCwzNSBAQCBXZWJLaXRVUklSZXNwb25zZVByaXZhdGUKIHdlYmtpdF91cmlf
cmVzcG9uc2VfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRV
c2VyTWVzc2FnZTwvRklMRT4KK1dlYktpdFVzZXJNZXNzYWdlCit3ZWJraXRfdXNlcl9tZXNzYWdl
X25ldword2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9saXN0Cit3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9uYW1lCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzCit3ZWJr
aXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0Cit3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVw
bHkKKworPFNVQlNFQ1RJT04gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcj4KK1dFQktJVF9VU0VSX01F
U1NBR0VfRVJST1IKK1dlYktpdFVzZXJNZXNzYWdlRXJyb3IKK3dlYmtpdF91c2VyX21lc3NhZ2Vf
ZXJyb3JfcXVhcmsKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRVc2VyTWVzc2FnZUNs
YXNzCitXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0UKK1dFQktJ
VF9JU19VU0VSX01FU1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJVF9JU19V
U0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJVF9VU0VSX01FU1NBR0VfR0VUX0NMQVNTCisKKzxTVUJT
RUNUSU9OIFByaXZhdGU+CitXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUKK3dlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXaW5k
b3dQcm9wZXJ0aWVzPC9GSUxFPgogV2ViS2l0V2luZG93UHJvcGVydGllcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS1kb2NzLnNnbWwgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbAppbmRleCA2NjYx
NGQ5NzM4My4uMmZlN2IyMGVmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3IueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0VXNlck1lc3NhZ2UueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hhcHRl
cj4KQEAgLTkzLDUgKzk0LDEwIEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRl
eC0yLjI2LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgogICA8L2luZGV4PgogCisg
IDxpbmRleCBpZD0iYXBpLWluZGV4LTItMjgiIHJvbGU9IjIuMjgiPgorICAgIDx0aXRsZT5JbmRl
eCBvZiBuZXcgc3ltYm9scyBpbiAyLjI4PC90aXRsZT4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvYXBpLWluZGV4LTIuMjgueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CisgIDwv
aW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2Fubm90YXRpb24tZ2xvc3NhcnkueG1s
Ij48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8L2Jvb2s+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS93ZWJraXQuaAppbmRleCA0ODUyM2I0N2QxNy4uOWNjMzFjYjQ5NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaApAQCAtNzMsNiArNzMsNyBA
QAogI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmg+CiAjaW5jbHVk
ZSA8d3BlL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVz
c2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3BlL1dl
YktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2UuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY5NDg4ZGU2NzYuLjBlZDQ2
Y2U5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzAxLDYg
KzMwMSw3IEBAIHN0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Owogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsK
K3N0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50OwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKQEAgLTE3MzgsNiArMTczOSwx
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQg
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9u
SUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpOwog
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJWaWV3
V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3Nh
Z2UmJik+JiYpOworI2VuZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzOTM3ZDIwNGU4Li5kNzQzYzFjMzY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNTc4LDQgKzU3OCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKICAgICBTZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHN0
cnVjdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24pOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAg
ICBTZW5kTWVzc2FnZVRvV2ViVmlldyhzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVz
c2FnZSkKKyAgICBTZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShzdHJ1Y3QgV2ViS2l0OjpV
c2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHJl
cGx5TWVzc2FnZSkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggOWUxYWY3MjEyNTAuLjUwYzkwMTI0OWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUwMyw2ICs1MDMsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRTYW5kYm94UGF0aChjb25zdCBDU3RyaW5nJiBwYXRoLCBTYW5kYm94UGVy
bWlzc2lvbiBwZXJtaXNzaW9uKSB7IG1fZXh0cmFTYW5kYm94UGF0aHMuYWRkKHBhdGgsIHBlcm1p
c3Npb24pOyB9OwogICAgIGNvbnN0IEhhc2hNYXA8Q1N0cmluZywgU2FuZGJveFBlcm1pc3Npb24+
JiBzYW5kYm94UGF0aHMoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhU2FuZGJveFBhdGhzOyB9Owog
ICAgIGJvb2wgc2FuZGJveEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hFbmFibGVk
OyB9OworCisgICAgdm9pZCBzZXRVc2VyTWVzc2FnZUhhbmRsZXIoRnVuY3Rpb248dm9pZChVc2Vy
TWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKT4mJiBo
YW5kbGVyKSB7IG1fdXNlck1lc3NhZ2VIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsgfQorICAg
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoVXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChVc2VyTWVzc2FnZSYmKT4mJik+JiB1c2VyTWVzc2FnZUhhbmRsZXIoKSBjb25zdCB7IHJldHVy
biBtX3VzZXJNZXNzYWdlSGFuZGxlcjsgfQogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBzZXRXZWJQ
cm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CkBAIC03ODMsNiAr
Nzg2LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAg
ICBib29sIG1fc2FuZGJveEVuYWJsZWQgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8Q1N0cmluZywg
U2FuZGJveFBlcm1pc3Npb24+IG1fZXh0cmFTYW5kYm94UGF0aHM7CisKKyAgICBGdW5jdGlvbjx2
b2lkKFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+
JiYpPiBtX3VzZXJNZXNzYWdlSGFuZGxlcjsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NBc3NlcnRpb24+PiBt
X3Byb2Nlc3Nlc1dpdGhVcGxvYWRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCBjMDdiMWVlODNlMS4uMDIzZGExY2VkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC04MCw2ICs4MCw3IEBAIGNsYXNzIFdlYlBy
b2Nlc3NQb29sOwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBjbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7CitzdHJ1Y3QgVXNl
ck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIHN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBAIC00Mjgs
NiArNDI5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1heWJlU2h1dERvd24oKTsKIAorI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dl
YkNvbnRleHQoVXNlck1lc3NhZ2UmJik7CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViQ29udGV4
dFdpdGhSZXBseShVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNz
YWdlJiYpPiYmKTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBJc1dlYWsgeyBObywgWWVzIH07
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha09yU3Ryb25nUHRyIHsKICAgICBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZDBhYjk0MzU1MzMuLmUxMTllNmNiOTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC03
Nyw0ICs3Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgIyBQbHVnLWluIG1lc3NhZ2VzLgogICAgIHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCkKICAgICB2b2lkIFBsdWdJ
bkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCkKKworI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNlbmRNZXNzYWdlVG9XZWJDb250ZXh0KHN0cnVj
dCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorICAgIFNlbmRNZXNzYWdlVG9XZWJD
b250ZXh0V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKSAt
PiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNzYWdlKSBBc3luYworI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQ
cm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJv
eHlHTGliLmNwcAppbmRleCA5Y2ExYzZiMGIyZC4uMzI4MTdiMWRkNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgogCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRGlzcGxheS5oPgpAQCAtNTYsNCArNTcsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlv
bnMmIGwKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZVRvV2Vi
Q29udGV4dFdpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wcm9j
ZXNzUG9vbC0+dXNlck1lc3NhZ2VIYW5kbGVyKCkoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3Nh
Z2VUb1dlYkNvbnRleHQoVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIHNlbmRNZXNzYWdl
VG9XZWJDb250ZXh0V2l0aFJlcGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYp
IHsgfSk7Cit9CisKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCmluZGV4IDA4NjdkOTgzZTVkLi41NDBlM2JjNjg0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTI4LDcgKzI4
LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIlBhZ2VDbGllbnRJ
bXBsLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMTY2LDQgKzE2OCwxOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Vtb2ppUGlja2VyKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNhcmV0UmVjdCwgQ29tcGxldGlvbgogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0Vtb2ppQ2hv
b3NlcihXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBjYXJldFJlY3QsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNz
YWdlVG9XZWJWaWV3V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBp
ZiAoIVdFQktJVF9JU19XRUJfVklFVyh2aWV3V2lkZ2V0KCkpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFVzZXJNZXNzYWdlKG1lc3NhZ2UubmFtZSwgV0VCS0lUX1VTRVJfTUVTU0FHRV9V
TkhBTkRMRURfTUVTU0FHRSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2Via2l0
V2ViVmlld0RpZFJlY2VpdmVVc2VyTWVzc2FnZShXRUJLSVRfV0VCX1ZJRVcodmlld1dpZGdldCgp
KSwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiBtZXNz
YWdlKQoreworICAgIHNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFdURk1vdmUobWVzc2Fn
ZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcAppbmRl
eCA5MDJlZTZmNTMzZS4uNmQxYjdjNWY3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCkBAIC04Miw0ICs4MiwxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRpdG9yU3RhdGUmKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmll
d1dpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc3RhdGljX2Nhc3Q8
UGFnZUNsaWVudEltcGwmPihwYWdlQ2xpZW50KCkpLnNlbmRNZXNzYWdlVG9XZWJWaWV3KFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSkKK3sK
KyAgICBzZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShV
c2VyTWVzc2FnZSYmKSB7IH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRFeHRlbnNpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oCmluZGV4IDk4NGMzYTk0NzUy
Li44Yzk5NTVkN2NiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9u
TWFuYWdlci5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgaW5pdGlhbGl6ZShJbmplY3RlZEJ1bmRsZSos
IEFQSTo6T2JqZWN0Kik7CiAKKyAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgV2ViS2l0
RXh0ZW5zaW9uTWFuYWdlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCmluZGV4IGYwNWRlOGU1MTI0Li41YjIzYTUxYTY4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4
dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTIzLDEwICsyMywxMyBAQAogI2lu
Y2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRs
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJN
ZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvR0NDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgpAQCAtMTExLDYgKzExNCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIGVudW0gewogICAgIFBBR0VfQ1JFQVRFRCwKKyAgICBVU0VSX01FU1NBR0Vf
UkVDRUlWRUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTE0Niw2ICsxNTAsMjggQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3NfaW5pdChXZWJLaXRXZWJFeHRlbnNp
b25DbGFzcyoga2xhc3MpCiAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19PQkpFQ1Qs
CiAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICBXRUJLSVRfVFlQRV9XRUJfUEFHRSk7
CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJFeHRlbnNpb246OnVzZXItbWVzc2FnZS1yZWNl
aXZlZDoKKyAgICAgKiBAZXh0ZW5zaW9uOiB0aGUgI1dlYktpdFdlYkV4dGVuc2lvbiBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAbWVzc2FnZTogdGhlICNXZWJLaXRVc2Vy
TWVzc2FnZSByZWNlaXZlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3
aGVuIGEgI1dlYktpdFVzZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gdGhlCisgICAgICogI1dl
YktpdFdlYkNvbnRleHQgY29ycmVzcG9uZGluZyB0byBAZXh0ZW5zaW9uLiBNZXNzYWdlcyBzZW50
IGJ5ICNXZWJLaXRXZWJDb250ZXh0CisgICAgICogYXJlIGFsd2F5cyBicm9hZGNhc3RlZCB0byBh
bGwgI1dlYktpdFdlYkV4dGVuc2lvbjwhLS0gLS0+cyBhbmQgdGhleSBjYW4ndCBiZQorICAgICAq
IHJlcGxpZWQuIENhbGxpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkgd2lsbCBk
byBub3RoaW5nLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjgKKyAgICAgKi8KKyAgICBzaWdu
YWxzW1VTRVJfTUVTU0FHRV9SRUNFSVZFRF0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJ1c2Vy
LW1lc3NhZ2UtcmVjZWl2ZWQiLAorICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisg
ICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAwLAorICAgICAgICBudWxscHRyLCBu
dWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgR19U
WVBFX05PTkUsIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSk7CiB9CiAKIGNs
YXNzIFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkNsaWVudCB7CkBAIC0yMDAsNiArMjI2LDEzIEBAIFdlYktpdFdlYkV4
dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUp
CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAordm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRS
ZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFVzZXJNZXNz
YWdlJiYgbWVzc2FnZSkKK3sKKyAgICAvLyBTaW5rIHRoZSBmbG9hdGluZyByZWYuCisgICAgR1Jl
ZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gdXNlck1lc3NhZ2UgPSB3ZWJraXRVc2VyTWVzc2FnZUNy
ZWF0ZShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYmKSB7IH0pOworICAgIGdfc2ln
bmFsX2VtaXQoZXh0ZW5zaW9uLCBzaWduYWxzW1VTRVJfTUVTU0FHRV9SRUNFSVZFRF0sIDAsIHVz
ZXJNZXNzYWdlLmdldCgpKTsKK30KKwogdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25TZXRHYXJiYWdl
Q29sbGVjdE9uUGFnZURlc3Ryb3koV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCiB7CiAj
aWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQpAQCAtMjI5LDMgKzI2Miw2OCBAQCBXZWJLaXRXZWJQ
YWdlKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4
dGVuc2lvbiwgZ3VpbgogCiAgICAgcmV0dXJuIDA7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9l
eHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQ6CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJL
aXRXZWJFeHRlbnNpb24KKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICogQGNh
bmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3Jl
CisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJsZSk6IEEgI0dBc3luY1JlYWR5
Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZCBvciAlTlVMTAor
ICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1
bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dlYktpdFdlYkNvbnRleHQgY29y
cmVzcG9uZGluZyB0byBAZXh0ZW5zaW9uLiBJZiBAbWVzc2FnZSBpcyBmbG9hdGluZywgaXQncyBj
b25zdW1lZC4KKyAqCisgKiBJZiB5b3UgZG9uJ3QgZXhwZWN0IGFueSByZXBseSwgb3IgeW91IHNp
bXBseSB3YW50IHRvIGlnbm9yZSBpdCwgeW91IGNhbiBwYXNzICVOVUxMIGFzIEBjYWxiYWNrLgor
ICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxs
ZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3Nh
Z2VfdG9fY29udGV4dF9maW5pc2goKSB0byBnZXQgdGhlIG1lc3NhZ2UgcmVwbHkuCisgKgorICog
U2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2Vf
dG9fY29udGV4dChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0VXNlck1lc3Nh
Z2UqIG1lc3NhZ2UsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJh
Y2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhl
IHJlZmVyZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0
VXNlck1lc3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBpZiAoIWNhbGxiYWNr
KSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2VuZE1lc3NhZ2VUb1dlYkNv
bnRleHQod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdf
dGFza19uZXcoZXh0ZW5zaW9uLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Cisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGFzayA9IFdURk1vdmUodGFzayldKFVzZXJNZXNzYWdlJiYgcmVwbHlNZXNzYWdlKSB7
CisgICAgICAgIHN3aXRjaCAocmVwbHlNZXNzYWdlLnR5cGUpIHsKKyAgICAgICAgY2FzZSBVc2Vy
TWVzc2FnZTo6VHlwZTo6TnVsbDoKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9y
KHRhc2suZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVyYXRp
b24gd2FzIGNhbmNlbGxlZCIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVz
ZXJNZXNzYWdlOjpUeXBlOjpNZXNzYWdlOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9wb2lu
dGVyKHRhc2suZ2V0KCksIGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRl
KFdURk1vdmUocmVwbHlNZXNzYWdlKSkpLCBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19v
YmplY3RfdW5yZWYpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVzZXJNZXNz
YWdlOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRh
c2suZ2V0KCksIFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1IsIHJlcGx5TWVzc2FnZS5lcnJvckNv
ZGUsIF8oIk1lc3NhZ2UgJXMgd2FzIG5vdCBoYW5kbGVkIiksIHJlcGx5TWVzc2FnZS5uYW1lLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH07CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlbmRNZXNzYWdlVG9XZWJDb250ZXh0
V2l0aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNzYWdlKSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9z
ZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2g6CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRX
ZWJFeHRlbnNpb24KKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jlc3VsdAorICogQGVycm9yOiByZXR1
cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGlnbm9yCisgKgorICogRmluaXNoIGFu
IGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X3NlbmRfbWVzc2FnZV90b19jb250ZXh0KCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1
bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBseSBvciAlTlVMTCBpbiBjYXNl
IG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdlKiB3
ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2goV2ViS2l0
V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBl
cnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lP
TihleHRlbnNpb24pLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tf
aXNfdmFsaWQocmVzdWx0LCBleHRlbnNpb24pLCBudWxscHRyKTsKKworICAgIHJldHVybiBXRUJL
SVRfVVNFUl9NRVNTQUdFKGdfdGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwg
ZXJyb3IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9u
UHJpdmF0ZS5oCmluZGV4IGUyNzM5YTkwZDI0Li5iNTQzNDBmYmMxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4
dGVuc2lvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oCkBAIC0yMCw3ICsyMCw5
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVk
ZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb24uaCIKIAogV2Vi
S2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZSopOwordm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3NhZ2Uo
V2ViS2l0V2ViRXh0ZW5zaW9uKiwgV2ViS2l0OjpVc2VyTWVzc2FnZSYmKTsKIHZvaWQgd2Via2l0
V2ViRXh0ZW5zaW9uU2V0R2FyYmFnZUNvbGxlY3RPblBhZ2VEZXN0cm95KFdlYktpdFdlYkV4dGVu
c2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGY5MWQxYmUx
Zjg4Li4wYzdlN2Y3NzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApA
QCAtNDEsMTAgKzQxLDEyIEBACiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRV
UklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlByb2Nlc3NFbnVtVHlwZXMuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5o
PgpAQCAtNzAsNiArNzIsNyBAQCBlbnVtIHsKICAgICBGT1JNX0NPTlRST0xTX0FTU09DSUFURUQs
CiAgICAgRk9STV9DT05UUk9MU19BU1NPQ0lBVEVEX0ZPUl9GUkFNRSwKICAgICBXSUxMX1NVQk1J
VF9GT1JNLAorICAgIFVTRVJfTUVTU0FHRV9SRUNFSVZFRCwKIAogICAgIExBU1RfU0lHTkFMCiB9
OwpAQCAtNjY3LDYgKzY3MCwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3BhZ2VfY2xhc3Nf
aW5pdChXZWJLaXRXZWJQYWdlQ2xhc3MqIGtsYXNzKQogICAgICAgICBXRUJLSVRfVFlQRV9GUkFN
RSwKICAgICAgICAgR19UWVBFX1BUUl9BUlJBWSwKICAgICAgICAgR19UWVBFX1BUUl9BUlJBWSk7
CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJQYWdlOjp1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQ6
CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ugb24gd2hpY2ggdGhlIHNpZ25h
bCBpcyBlbWl0dGVkCisgICAgICogQG1lc3NhZ2U6IHRoZSAjV2ViS2l0VXNlck1lc3NhZ2UgcmVj
ZWl2ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhICNXZWJL
aXRVc2VyTWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZQorICAgICAqICNXZWJLaXRXZWJWaWV3
IGNvcnJlc3BvbmRpbmcgdG8gQHdlYl9wYWdlLiBZb3UgY2FuIHJlcGx5IHRvIHRoZSBtZXNzYWdl
CisgICAgICogdXNpbmcgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkuCisgICAgICoK
KyAgICAgKiBZb3UgY2FuIGhhbmRsZSB0aGUgdXNlciBtZXNzYWdlIGFzeW5jaHJvbm91c2x5IGJ5
IGNhbGxpbmcgZ19vYmplY3RfcmVmKCkgb24KKyAgICAgKiBAbWVzc2FnZSBhbmQgcmV0dXJuaW5n
ICVUUlVFLiBJZiB0aGUgbGFzdCByZWZlcmVuY2Ugb2YgQG1lc3NhZ2UgaXMgcmVtb3ZlZAorICAg
ICAqIGFuZCB0aGUgbWVzc2FnZSBoYXMgYmVlbiByZXBsaWVkLCB0aGUgb3BlcmF0aW9uIGluIHRo
ZSAjV2ViS2l0V2ViVmlldyB3aWxsCisgICAgICogZmluaXNoIHdpdGggZXJyb3IgJVdFQktJVF9V
U0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAl
VFJVRSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAg
ICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgc2lnbmFsc1tVU0VSX01FU1NB
R0VfUkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAidXNlci1tZXNzYWdlLXJlY2Vp
dmVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICBHX1NJR05B
TF9SVU5fTEFTVCwKKyAgICAgICAgMCwKKyAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1
ZV9oYW5kbGVkLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywK
KyAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1VTRVJfTUVT
U0FHRSk7CiB9CiAKIFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKFdlYktpdFdlYlBhZ2Ug
KndlYlBhZ2UpCkBAIC03MzMsNiArNzY0LDE0IEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2Vp
dmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIHdlYmtpdFdlYlBhZ2VEaWRS
ZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgVXNlck1lc3NhZ2UmJiBt
ZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5nIHJlZi4KKyAgICBHUmVmUHRy
PFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRl
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBnYm9v
bGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlBhZ2UsIHNpZ25hbHNbVVNF
Ul9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNlck1lc3NhZ2UuZ2V0KCksICZyZXR1cm5WYWx1ZSk7
Cit9CisKIC8qKgogICogd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQ6CiAgKiBAd2Vi
X3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKQEAgLTgyMiwzICs4NjEsNjggQEAgV2ViS2l0V2ViRWRp
dG9yKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQog
CiAgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvci5nZXQoKTsKIH0KKworLyoqCisg
KiB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXc6CisgKiBAd2ViX3BhZ2U6IGEg
I1dlYktpdFdlYlBhZ2UKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICogQGNh
bmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3Jl
CisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJsZSk6IEEgI0dBc3luY1JlYWR5
Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZCBvciAlTlVMTAor
ICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1
bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dlYktpdFdlYlZpZXcgY29ycmVz
cG9uZGluZyB0byBAd2ViX3BhZ2UuIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1
bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJlcGx5LCBvciB5b3Ugc2ltcGx5
IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwgYXMgQGNhbGxiYWNrLgorICog
V2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQu
IFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3Zp
ZXdfZmluaXNoKCkgdG8gZ2V0IHRoZSBtZXNzYWdlIHJlcGx5LgorICoKKyAqIFNpbmNlOiAyLjI4
CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3KFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlLCBHQ2FuY2VsbGFibGUq
IGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2Vy
RGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdl
KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2Up
KTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0
aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVz
c2FnZTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIHdlYlBhZ2UtPnByaXYtPndlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VuZE1lc3NhZ2VUb1dlYlZpZXcod2Vi
a2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2Vi
UGFnZSwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3Rhc2sgPSBX
VEZNb3ZlKHRhc2spXShVc2VyTWVzc2FnZSYmIHJlcGx5TWVzc2FnZSkgeworICAgICAgICBzd2l0
Y2ggKHJlcGx5TWVzc2FnZS50eXBlKSB7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5cGU6
Ok51bGw6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBH
X0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCwgXygiT3BlcmF0aW9uIHdhcyBjYW5jZWxs
ZWQiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlw
ZTo6TWVzc2FnZToKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgp
LCBnX29iamVjdF9yZWZfc2luayh3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKHJlcGx5
TWVzc2FnZSkpKSwgc3RhdGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfb2JqZWN0X3VucmVmKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6RXJy
b3I6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBXRUJL
SVRfVVNFUl9NRVNTQUdFX0VSUk9SLCByZXBseU1lc3NhZ2UuZXJyb3JDb2RlLCBfKCJNZXNzYWdl
ICVzIHdhcyBub3QgaGFuZGxlZCIpLCByZXBseU1lc3NhZ2UubmFtZS5kYXRhKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9OworICAgIHdlYlBhZ2UtPnByaXYtPndlYlBh
Z2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZW5kTWVzc2Fn
ZVRvV2ViVmlld1dpdGhSZXBseSh3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9w
YWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaDoKKyAqIEB3ZWJfcGFnZTogYSAjV2ViS2l0
V2ViUGFnZQorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBs
b2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAqCisgKiBGaW5pc2ggYW4gYXN5
bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVz
c2FnZV90b192aWV3KCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhICNXZWJL
aXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBseSBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yLgor
ICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJraXRfd2ViX3Bh
Z2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSksIG51bGxwdHIpOworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIHdlYlBhZ2UpLCBudWxscHRy
KTsKKworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdfdGFza19wcm9wYWdhdGVfcG9p
bnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2VQcml2YXRlLmgKaW5kZXggOGRjZDQyYTlkYmMuLjI0MDUxNDgzZWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZVByaXZhdGUuaApAQCAtMTcsMTUgKzE3
LDE1IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdl
YktpdFdlYlBhZ2VQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0V2ViUGFnZVByaXZhdGVfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiVXNlck1l
c3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5o
IgogCiBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYktpdDo6V2ViUGFnZSop
Owogdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSosIGNv
bnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6RGljdGlvbmFyeSYgbWVzc2FnZSk7Cit2b2lk
IHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViUGFnZSosIFdlYktp
dDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNz
YWdlJiYpPiYmKTsKIFdlYktpdDo6V2ViUGFnZSogd2Via2l0V2ViUGFnZUdldFBhZ2UoV2ViS2l0
V2ViUGFnZSopOwogCi0jZW5kaWYgLy8gV2ViS2l0V2ViUGFnZVByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaAppbmRleCAzNDEzNmEzN2QyNS4uNTQyMmZlNTdm
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNzYs
MTEgKzc3LDIzIEBAIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MgewogfTsKIAogV0VC
S0lUX0FQSSBHVHlwZQotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgKHZvaWQpOword2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsK
IAogV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9w
YWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOword2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24g
KmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICBwYWdlX2lkKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dCAgICAgICAgKFdl
YktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgKm1lc3NhZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5j
ZWxsYWJsZSAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2lu
dGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyTWVzc2Fn
ZSAqCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dF9maW5pc2gg
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgKnJlc3VsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vy
cm9yICAgICAgICAgICAgKiplcnJvcik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYlBhZ2UuaAppbmRleCAwYTQ4NmRjYjI4NS4uMzE1YWM4YjZkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRXZWJQYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RnJhbWUuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZXNzYWdl
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFZGl0b3IuaD4KICNpbmNsdWRlIDx3ZWJr
aXRkb20vd2Via2l0ZG9tLmg+CiAKQEAgLTc0LDIyICs3NSwzNCBAQCBzdHJ1Y3QgX1dlYktpdFdl
YlBhZ2VDbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX3BhZ2VfZ2V0
X3R5cGUgICAgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUgICAgICAgICAg
ICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRET01Eb2N1bWVudCAqCi13ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwor
d2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgICAgICAgICAgICAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF93ZWJfcGFnZV9nZXRf
aWQgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2lkICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CiAK
IFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3dlYl9wYWdlX2dldF91cmkgICAgICAg
ICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfdXJpICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lUX0FQ
SSBXZWJLaXRGcmFtZSAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUgICAoV2ViS2l0
V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lICAgICAg
ICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdl
YkVkaXRvciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAgICAgICAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyAgICAgICAgKFdlYktpdFdlYlBhZ2UgICAgICAq
d2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRVc2VyTWVzc2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFj
ayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2Vy
TWVzc2FnZSAqCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoIChX
ZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICpyZXN1bHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAqKmVy
cm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0
ZW5zaW9uLmgKaW5kZXggMWM5NWYxZDNhZWQuLmJjNGI0MjQwMDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4
dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRV
UklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkVkaXRvci5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dl
YktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IGE2ZmZiNDg1MDQ4Li4wOWFlZTM4Y2RjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2Vi
S2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4K
KyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0
V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03NiwxMSArNzcsMjMgQEAgc3RydWN0IF9X
ZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
dHlwZSAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdl
YlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UgKFdlYktpdFdlYkV4dGVuc2lv
biAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAg
ICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAg
ICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9u
X3NlbmRfbWVzc2FnZV90b19jb250ZXh0ICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRl
bnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICpjYW5jZWxs
YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICB1c2VyX2Rh
dGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF93ZWJfZXh0ZW5z
aW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaCAoV2ViS2l0V2ViRXh0ZW5zaW9uICpl
eHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAqKmVycm9y
KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oCmluZGV4IDk1
NWYwODdlNGY3Li4xODQxZTRhYzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYlBhZ2UuaApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RnJhbWUuaD4KKyNpbmNsdWRl
IDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRWRpdG9y
Lmg+CiAjaW5jbHVkZSA8d3BlL3dlYmtpdGRvbS5oPgogCkBAIC03MiwyMiArNzMsMzUgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJQYWdlQ2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0
X3dlYl9wYWdlX2dldF90eXBlICAgICAgICAgKHZvaWQpOword2Via2l0X3dlYl9wYWdlX2dldF90
eXBlICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0RE9NRG9j
dW1lbnQgKgotd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgKFdlYktpdFdlYlBhZ2Ug
KndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50ICAgICAgICAgICAg
KFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lUX0FQSSBndWludDY0Ci13ZWJraXRf
d2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Vi
a2l0X3dlYl9wYWdlX2dldF9pZCAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAq
d2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF93ZWJfcGFnZV9n
ZXRfdXJpICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X3VyaSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7
CiAKIFdFQktJVF9BUEkgV2ViS2l0RnJhbWUgKgotd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2Zy
YW1lICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfbWFp
bl9mcmFtZSAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lU
X0FQSSBXZWJLaXRXZWJFZGl0b3IgKgotd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IgICAgICAg
KFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcgICAgICAgIChXZWJLaXRX
ZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICptZXNzYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICpjYW5jZWxs
YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3lu
Y1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgIHVzZXJfZGF0YSk7CisKK1dFQktJVF9B
UEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192
aWV3X2ZpbmlzaCAoV2ViS2l0V2ViUGFnZSAgICAgICp3ZWJfcGFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAqcmVzdWx0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAg
ICAgICAgICAgKiplcnJvcik7CisKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0
ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0
CmluZGV4IGU0NDgyOTZkOWZhLi41ZmRhOTU4MGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9u
cy0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMS4wLXNlY3Rpb25zLnR4dApA
QCAtMTMsNiArMTMsOCBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbklu
aXRpYWxpemVGdW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0
YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRl
bnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRf
bWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktp
dFdlYkV4dGVuc2lvbkNsYXNzCkBAIC0zNyw2ICszOSw4IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRf
aWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUKIHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNz
YWdlX3RvX3ZpZXcKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2gK
IAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQYWdlQ2xhc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13
ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCmluZGV4IDY5ZWZkZDk2MzMxLi5kNWQzMzU0
ZjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAjaW5jbHVk
ZSA8d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVzcG9u
c2UuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oPgog
I2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDVlZmVhN2M5NjQuLjIyYjM4NzU3MjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNjgs
NiArMjY4LDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogc3Ry
dWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJz
Owogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5wdXRDb250ZXh0Oworc3RydWN0IFVz
ZXJNZXNzYWdlOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTsKIHN0cnVjdCBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQ7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKQEAg
LTE2MzAsNiArMTYzMiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludFNuYXBzaG90QXRT
aXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU25h
cHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkZyYW1lVmlldyYsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
UEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdlJiYpOwor
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShVc2VyTWVzc2FnZSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKTsKKyNlbmRpZgorCiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE1MDY0ODk3ODRhLi5m
NmMwMjY0MTIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODAsNCArNTgwLDggQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBTeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKHN0cnVjdCBXZWJDb3Jl
OjpTeXN0ZW1QcmV2aWV3SW5mbyBwcmV2aWV3SW5mbywgU3RyaW5nIG1lc3NhZ2UpCiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNlbmRNZXNzYWdlVG9X
ZWJFeHRlbnNpb24oc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpCisgICAg
U2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVz
c2FnZSB1c2VyTWVzc2FnZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHJlcGx5TWVz
c2FnZSkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uYjA1OThjNjI3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJVc2Vy
TWVzc2FnZS5oIgorI2luY2x1ZGUgIldlYktpdEV4dGVuc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJXZWJLaXRVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgor
I2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHkoVXNlck1l
c3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGV4dGVuc2lvbiA9IFdlYktpdEV4dGVu
c2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmV4dGVuc2lvbigpOworICAgIGlmICghZXh0ZW5zaW9u
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNzYWdlKG1lc3NhZ2UubmFtZSwg
V0VCS0lUX1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byogcGFnZSA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdl
KGV4dGVuc2lvbiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGlmICghcGFnZSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyTWVzc2FnZShtZXNzYWdlLm5hbWUsIFdFQktJ
VF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlVXNlck1lc3NhZ2UocGFnZSwgV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBh
Z2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQorewor
ICAgIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwg
W10oVXNlck1lc3NhZ2UmJikgeyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBhZTFmNjAzMDgzYy4uMDZiOWEyMDQ1
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTE2LDYgKzExNiw3
IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3k7CiBjbGFzcyBXZWJQ
YWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CitzdHJ1Y3QgVXNlck1lc3NhZ2U7CiBzdHJ1
Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVyczsKIGNsYXNzIFdlYlByb2Nlc3NTdXBwbGVtZW50OwpAQCAtNDYzLDYgKzQ2
NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9y
VGVzdGluZygpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdlJiYpOworI2VuZGlmCisKICAg
ICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFn
ZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggY2VhZDAxNjY1MDYuLjg1MTViNDM0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTU2LDQgKzE1Niw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKKyAgICBTZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKHN0cnVjdCBXZWJLaXQ6
OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5kZXggOWIwMDM3NDRmOWIuLjAw
N2YwNDRkMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc0dMaWIuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogCisjaW5jbHVkZSAiV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5o
IgorI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAKICNpZiBVU0UoR1NUUkVBTUVSKQpAQCAtOTcs
NCArOTksMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzczo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihVc2VyTWVzc2FnZSYm
IG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIGV4dGVuc2lvbiA9IFdlYktpdEV4dGVuc2lvbk1h
bmFnZXI6OnNpbmdsZXRvbigpLmV4dGVuc2lvbigpKQorICAgICAgICB3ZWJraXRXZWJFeHRlbnNp
b25EaWRSZWNlaXZlVXNlck1lc3NhZ2UoZXh0ZW5zaW9uLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDM0NzlmYTQ1ZjguLmE0YmNkZDIwNDk3IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTktMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIGNoZWNrIHRo
ZSBuZXcgQVBJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVzdDo6d2ViVmlld1Vz
ZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6Ondl
YkNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoVXNlck1lc3Nh
Z2VUZXN0OjpVc2VyTWVzc2FnZVRlc3QpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0Ojp+VXNl
ck1lc3NhZ2VUZXN0KToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVzdDo6c2VuZE1lc3NhZ2UpOgor
ICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpzZW5kTWVkc3NhZ2VUb0FsbEV4dGVuc2lvbnMpOgor
ICAgICAgICAoVXNlck1lc3NhZ2VUZXN0Ojp2aWV3VXNlck1lc3NhZ2VSZWNlaXZlZCk6CisgICAg
ICAgIChVc2VyTWVzc2FnZVRlc3Q6OmNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkKToKKyAgICAg
ICAgKFVzZXJNZXNzYWdlVGVzdDo6d2FpdFVudGlsVmlld01lc3NhZ2VSZWNlaXZlZCk6CisgICAg
ICAgIChVc2VyTWVzc2FnZVRlc3Q6OndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQpOgor
ICAgICAgICAocmVhZEZpbGVEZXNjcml0cG9yKToKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25V
c2VyTWVzc2FnZXMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgIChkb2N1
bWVudExvYWRlZENhbGxiYWNrKToKKyAgICAgICAgKHBhZ2VNZXNzYWdlUmVjZWl2ZWRDYWxsYmFj
ayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKyAgICAgICAgKGV4dGVuc2lvbk1l
c3NhZ2VSZWNlaXZlZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2lu
aXRpYWxpemVfd2l0aF91c2VyX2RhdGEpOgorCiAyMDE5LTEwLTA4ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNTA1OTcp
OiBbR1RLXVtXUEVdIDIuMjcuMSBzaG93cyBIVE1MIGNvbnRlbnQgYXMgdGV4dC9wbGFpbiBpbiBj
dXN0b20gcHJvdG9jb2xzIHdoZW4gcGFzc2luZyBhIGNoYXJzZXQgaW4gY29udGVudCB0eXBlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4
dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJFeHRlbnNpb25zLmNwcAppbmRleCAyNGUxMzY3Y2E3YS4uNjk5NDRkZTg0NDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJF
eHRlbnNpb25zLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj
aW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxnaW8vZ3VuaXhmZGxpc3QuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHNj
cmlwdERpYWxvZ1Jlc3VsdDsKQEAgLTUzNyw2ICs1MzgsMjYzIEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJFeHRlbnNpb25QYWdlSUQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
Y2hlY2tUaXRsZSh0ZXN0LCBwcm94eS5nZXQoKSwgIlRpdGxlNiIpOwogfQogCitjbGFzcyBVc2Vy
TWVzc2FnZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJ
Ql9URVNUX0ZJWFRVUkUoVXNlck1lc3NhZ2VUZXN0KTsKKworICAgIHN0YXRpYyBnYm9vbGVhbiB3
ZWJWaWV3VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRV
c2VyTWVzc2FnZSogbWVzc2FnZSwgVXNlck1lc3NhZ2VUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRlc3QtPnZpZXdVc2VyTWVzc2FnZVJlY2VpdmVkKG1lc3NhZ2UpOworICAgIH0K
KworICAgIHN0YXRpYyBnYm9vbGVhbiB3ZWJDb250ZXh0VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxi
YWNrKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgVXNlck1l
c3NhZ2VUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlc3QtPmNvbnRleHRVc2Vy
TWVzc2FnZVJlY2VpdmVkKG1lc3NhZ2UpOworICAgIH0KKworICAgIFVzZXJNZXNzYWdlVGVzdCgp
CisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwgInVz
ZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0sod2ViQ29udGV4dFVzZXJNZXNzYWdlUmVj
ZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmll
dywgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld1VzZXJNZXNzYWdl
UmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIH5Vc2VyTWVzc2FnZVRlc3Qo
KQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1f
d2ViQ29udGV4dC5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVs
bHB0ciwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hl
ZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIs
IHRoaXMpOworICAgIH0KKworICAgIFdlYktpdFVzZXJNZXNzYWdlKiBzZW5kTWVzc2FnZShXZWJL
aXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiogZXJyb3IgPSBudWxscHRyKQorICAgIHsK
KyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
ZXNzYWdlKSk7CisgICAgICAgIG1fcmVjZWl2ZWRWaWV3TWVzc2FnZSA9IG51bGxwdHI7CisgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZShtX3dlYlZpZXcsIG1lc3Nh
Z2UsIG51bGxwdHIsIFtdKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxVc2VyTWVz
c2FnZVRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICB0ZXN0LT5tX3JlY2VpdmVkVmlld01l
c3NhZ2UgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2Zp
bmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJnRlc3QtPm1fcmVjZWl2ZWRFcnJvci5vdXRQ
dHIoKSkpOworICAgICAgICAgICAgaWYgKHRlc3QtPm1fcmVjZWl2ZWRWaWV3TWVzc2FnZSkKKyAg
ICAgICAgICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKHRlc3QtPm1fcmVjZWl2ZWRWaWV3TWVzc2FnZS5nZXQoKSkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9yZWNlaXZl
ZEVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAg
ICB9LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgICAgICAqZXJyb3IgPSBtX3JlY2VpdmVkRXJyb3IuZ2V0KCk7
CisgICAgICAgIHJldHVybiBtX3JlY2VpdmVkVmlld01lc3NhZ2UuZ2V0KCk7CisgICAgfQorCisg
ICAgdm9pZCBzZW5kTWVkc3NhZ2VUb0FsbEV4dGVuc2lvbnMoV2ViS2l0VXNlck1lc3NhZ2UqIG1l
c3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NlbmRf
bWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyhtX3dlYkNvbnRleHQuZ2V0KCksIG1lc3NhZ2UpOwor
ICAgIH0KKworICAgIGJvb2wgdmlld1VzZXJNZXNzYWdlUmVjZWl2ZWQoV2ViS2l0VXNlck1lc3Nh
Z2UqIG1lc3NhZ2UpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAobV9l
eHBlY3RlZFZpZXdNZXNzYWdlTmFtZS5kYXRhKCksIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25h
bWUobWVzc2FnZSkpKSB7CisgICAgICAgICAgICBtX3JlY2VpdmVkVmlld01lc3NhZ2UgPSBtZXNz
YWdlOworICAgICAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJv
b2wgY29udGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWQoV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2Up
CisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKG1lc3NhZ2UpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAobV9leHBlY3RlZENvbnRl
eHRNZXNzYWdlTmFtZS5kYXRhKCksIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2Fn
ZSkpKSB7CisgICAgICAgICAgICBtX3JlY2VpdmVkQ29udGV4dE1lc3NhZ2UgPSBtZXNzYWdlOwor
ICAgICAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFdlYktpdFVz
ZXJNZXNzYWdlKiB3YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVkKGNvbnN0IGNoYXIqIG1lc3Nh
Z2VOYW1lKQorICAgIHsKKyAgICAgICAgbV9leHBlY3RlZFZpZXdNZXNzYWdlTmFtZSA9IG1lc3Nh
Z2VOYW1lOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIG1f
ZXhwZWN0ZWRWaWV3TWVzc2FnZU5hbWUgPSB7IH07CisgICAgICAgIHJldHVybiBtX3JlY2VpdmVk
Vmlld01lc3NhZ2UuZ2V0KCk7CisgICAgfQorCisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIHdhaXRV
bnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoY29uc3QgY2hhciogbWVzc2FnZU5hbWUpCisgICAg
eworICAgICAgICBtX2V4cGVjdGVkQ29udGV4dE1lc3NhZ2VOYW1lID0gbWVzc2FnZU5hbWU7Cisg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgbV9leHBlY3RlZENv
bnRleHRNZXNzYWdlTmFtZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcmVjZWl2ZWRDb250ZXh0
TWVzc2FnZS5nZXQoKTsKKyAgICB9CisKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBt
X3JlY2VpdmVkVmlld01lc3NhZ2U7CisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gbV9y
ZWNlaXZlZENvbnRleHRNZXNzYWdlOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBtX3JlY2Vp
dmVkRXJyb3I7CisgICAgQ1N0cmluZyBtX2V4cGVjdGVkVmlld01lc3NhZ2VOYW1lOworICAgIENT
dHJpbmcgbV9leHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZTsKK307CisKK3N0YXRpYyBib29sIHJl
YWRGaWxlRGVzY3JpdHBvcihpbnQgZmQsIGNoYXIqKiBjb250ZW50cywgZ3NpemUqIGxlbmd0aCkK
K3sKKyAgICBHU3RyaW5nKiBidWZmZXJTdHJpbmcgPSBnX3N0cmluZ19uZXcobnVsbHB0cik7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgZ2NoYXIgYnVmZmVyWzQwOTZdOworICAgICAgICBn
c3NpemUgYnl0ZXNSZWFkID0gcmVhZChmZCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAg
ICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdB
SU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUoYnVmZmVyU3RyaW5nLCBUUlVFKTsKKworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFieXRlc1JlYWQp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBnX3N0cmluZ19hcHBlbmRfbGVuKGJ1ZmZl
clN0cmluZywgYnVmZmVyLCBieXRlc1JlYWQpOworICAgIH0KKworICAgICpsZW5ndGggPSBidWZm
ZXJTdHJpbmctPmxlbjsKKyAgICAqY29udGVudHMgPSBnX3N0cmluZ19mcmVlKGJ1ZmZlclN0cmlu
ZywgRkFMU0UpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJF
eHRlbnNpb25Vc2VyTWVzc2FnZXMoVXNlck1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIC8vIE5vcm1hbCBtZXNzYWdlIHdpdGggYSByZXBseS4KKyAgICBhdXRvKiBtZXNz
YWdlID0gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuSGVsbG8iLCBnX3ZhcmlhbnRfbmV3
KCJzIiwgIldlYlByb2Nlc3MiKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiVGVzdC5IZWxsbyIpOworICAgIGF1dG8qIHBh
cmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKG1lc3NhZ2UpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7CisgICAgY29uc3QgY2hhciogcGFyYW1l
dGVyID0gbnVsbHB0cjsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICImcyIsICZwYXJh
bWV0ZXIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIsID09LCAiV2ViUHJvY2VzcyIp
OworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdChtZXNz
YWdlKSk7CisgICAgYXV0byogcmVwbHkgPSB0ZXN0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKyAg
ICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBseSksID09LCAiVGVz
dC5IZWxsbyIpOworICAgIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJh
bWV0ZXJzKHJlcGx5KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBhcmFtZXRlcnMpOworICAgIHBh
cmFtZXRlciA9IG51bGxwdHI7CisgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiJnMiLCAm
cGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocGFyYW1ldGVyLCA9PSwgIlVJUHJvY2Vz
cyIpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdChy
ZXBseSkpOworCisgICAgLy8gTWVzc2FnZSB3aXRoIG5vIHBhcmFtZXRlcnMuCisgICAgbWVzc2Fn
ZSA9IHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LlBpbmciLCBudWxscHRyKTsKKyAgICBn
X2Fzc2VydF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSkp
OworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJlcGx5KSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUocmVwbHkpLCA9PSwgIlRlc3QuUG9uZyIpOwor
ICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBs
eSkpOworCisgICAgLy8gTWVzc2FnZSB3aXRoIG1heWJlIHR5cGUgaW4gcGFyYW1ldGVycy4KKyAg
ICBtZXNzYWdlID0gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuT3B0aW9uYWwiLCBnX3Zh
cmlhbnRfbmV3KCIoc21zKSIsICJIZWxsbyIsICJXb3JsZCIpKTsKKyAgICByZXBseSA9IHRlc3Qt
PnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJf
TUVTU0FHRShyZXBseSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdl
X2dldF9uYW1lKHJlcGx5KSwgPT0sICJUZXN0Lk9wdGlvbmFsIik7CisgICAgcGFyYW1ldGVycyA9
IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMocmVwbHkpOworICAgIGdfYXNzZXJ0
X25vbm51bGwocGFyYW1ldGVycyk7CisgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiJnMi
LCAmcGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocGFyYW1ldGVyLCA9PSwgIldvcmxk
Iik7CisgICAgbWVzc2FnZSA9IHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0Lk9wdGlvbmFs
IiwgZ192YXJpYW50X25ldygiKHNtcykiLCAiSGVsbG8iLCBudWxscHRyKSk7CisgICAgcmVwbHkg
PSB0ZXN0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9J
U19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJf
bWVzc2FnZV9nZXRfbmFtZShyZXBseSksID09LCAiVGVzdC5PcHRpb25hbCIpOworICAgIHBhcmFt
ZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKHJlcGx5KTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKHBhcmFtZXRlcnMpOworICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVy
cywgIiZzIiwgJnBhcmFtZXRlcik7CisgICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlciwgPT0s
ICJOVUxMIik7CisKKyAgICAvLyBNZXNzYWdlIHdpdGggZmlsZSBkZXNjcmlwdG9ycy4KKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3Vy
Y2VzRGlyKCkuZGF0YSgpLCAic2ltcGxlLmpzb24iLCBudWxscHRyKSk7CisgICAgcmVwbHkgPSB0
ZXN0LT5zZW5kTWVzc2FnZSh3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5PcGVuRmlsZSIs
IGdfdmFyaWFudF9uZXcoInMiLCBmaWxlbmFtZS5nZXQoKSkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAgICBwYXJhbWV0ZXJzID0gd2Via2l0
X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChwYXJhbWV0ZXJzKTsKKyAgICBnaW50MzIgaGFuZGxlOworICAgIGdfdmFyaWFudF9nZXQocGFy
YW1ldGVycywgImgiLCAmaGFuZGxlKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoaGFuZGxlLCA9PSwg
MCk7CisgICAgYXV0byogZmRMaXN0ID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdChy
ZXBseSk7CisgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX1VOSVhfRkRfTElTVChmZExpc3QpKTsKKyAg
ICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGZk
TGlzdCkpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3VuaXhfZmRfbGlzdF9nZXRfbGVuZ3RoKGZk
TGlzdCksID09LCAxKTsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgaW50
IGZkID0gZ191bml4X2ZkX2xpc3RfZ2V0KGZkTGlzdCwgaGFuZGxlLCAmZXJyb3Iub3V0UHRyKCkp
OworICAgIGdfYXNzZXJ0X2NtcGludChmZCwgIT0sIC0xKTsKKyAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7CisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBmZENvbnRlbnRzOworICAg
IGdzaXplIGZkQ29udGVudHNMZW5ndGg7CisgICAgZ19hc3NlcnRfdHJ1ZShyZWFkRmlsZURlc2Ny
aXRwb3IoZmQsICZmZENvbnRlbnRzLm91dFB0cigpLCAmZmRDb250ZW50c0xlbmd0aCkpOworICAg
IGNsb3NlKGZkKTsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGZpbGVDb250ZW50czsKKyAgICBn
c2l6ZSBmaWxlQ29udGVudHNMZW5ndGg7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfZ2V0X2Nv
bnRlbnRzKGZpbGVuYW1lLmdldCgpLCAmZmlsZUNvbnRlbnRzLm91dFB0cigpLCAmZmlsZUNvbnRl
bnRzTGVuZ3RoLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wbWVtKGZkQ29udGVudHMuZ2V0
KCksIGZkQ29udGVudHNMZW5ndGgsIGZpbGVDb250ZW50cy5nZXQoKSwgZmlsZUNvbnRlbnRzTGVu
Z3RoKTsKKworICAgIC8vIFVuaGFuZGxlZCBtZXNzYWdlLgorICAgIEdFcnJvciogbWVzc2FnZUVy
cm9yID0gbnVsbHB0cjsKKyAgICByZXBseSA9IHRlc3QtPnNlbmRNZXNzYWdlKHdlYmtpdF91c2Vy
X21lc3NhZ2VfbmV3KCJUZXN0LkludmFsaWQiLCBudWxscHRyKSwgJm1lc3NhZ2VFcnJvcik7Cisg
ICAgZ19hc3NlcnRfbnVsbChyZXBseSk7CisgICAgZ19hc3NlcnRfZXJyb3IobWVzc2FnZUVycm9y
LCBXRUJLSVRfVVNFUl9NRVNTQUdFX0VSUk9SLCBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExF
RF9NRVNTQUdFKTsKKworICAgIC8vIE1lc3NhZ2UgdGhhdCBpcyBuZXZlciByZXBsaWVkLgorICAg
IEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhUZXN0Ojpj
cmVhdGVXZWJWaWV3KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIHdlYmtpdF93ZWJf
dmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSh3ZWJWaWV3LmdldCgpLCB3ZWJraXRfdXNlcl9tZXNz
YWdlX25ldygiVGVzdC5JbmZpbml0ZSIsIG51bGxwdHIpLCBudWxscHRyLAorICAgICAgICBbXShH
T2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkg
eworICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFVzZXJNZXNzYWdlVGVzdCo+
KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19w
YWdlX2ZpbmlzaChXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRy
KCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX0lPX0VSUk9S
LCBHX0lPX0VSUk9SX0NBTkNFTExFRCk7CisgICAgICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3Ao
KTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxv
b3ApOworCisgICAgLy8gV2FpdCBmb3IgcmVjZWl2ZWQgbWVzc2FnZS4KKyAgICB0ZXN0LT5sb2Fk
SHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICBtZXNzYWdl
ID0gdGVzdC0+d2FpdFVudGlsVmlld01lc3NhZ2VSZWNlaXZlZCgiRG9jdW1lbnRMb2FkZWQiKTsK
KyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpLCA9
PSwgIkRvY3VtZW50TG9hZGVkIik7CisKKyAgICAvLyBSZXBseSB0byBhIG1lc3NhZ2UgcmVjZWl2
ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2Fn
ZV90b19wYWdlKHRlc3QtPm1fd2ViVmlldywgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3Qu
QXN5bmNQaW5nIiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIG1l
c3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVkKCJUZXN0LlBpbmciKTsK
KyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpLCA9
PSwgIlRlc3QuUGluZyIpOworICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNz
YWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5Qb25nIiwgbnVsbHB0cikpOworICAg
IG1lc3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVkKCJUZXN0LkFzeW5j
UG9uZyIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdl
KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVz
c2FnZSksID09LCAiVGVzdC5Bc3luY1BvbmciKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBwYWdl
IGFuZCB3YWl0IGZvciBwYWdlIGNyZWF0ZWQgbWVzc2FnZS4KKyAgICB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7
CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbCh3ZWJWaWV3LmdldCgpLCAiPGh0bWw+PGJv
ZHk+PC9ib2R5PjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICBtZXNzYWdlID0gdGVzdC0+d2FpdFVu
dGlsQ29udGV4dE1lc3NhZ2VSZWNlaXZlZCgiUGFnZUNyZWF0ZWQiKTsKKyAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpLCA9PSwgIlBhZ2VDcmVhdGVk
Iik7CisgICAgcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMo
bWVzc2FnZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICBndWludDY0
IHBhZ2VJRDsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIodCkiLCAmcGFnZUlEKTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHBhZ2VJRCwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfcGFn
ZV9pZCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICAvLyBSZXF1ZXN0IHRvIHN0YXJ0IGEgcGluZyB0
byBhbGwgcHJvY2Vzc2VzLgorICAgIHRlc3QtPnNlbmRNZWRzc2FnZVRvQWxsRXh0ZW5zaW9ucyh3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5SZXF1ZXN0UGluZyIsIG51bGxwdHIpKTsKKyAg
ICAvLyBXZSBzaG91bGQgcmVjZWl2ZWQgdHdvIHBpbmcgcmVxdWVzdHMuCisgICAgR1JlZlB0cjxX
ZWJLaXRVc2VyTWVzc2FnZT4gcGluZzEgPSB0ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2FnZVJl
Y2VpdmVkKCJQaW5nIik7CisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gcGluZzIgPSB0
ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJQaW5nIik7CisgICAgd2Via2l0
X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KHBpbmcxLmdldCgpLCB3ZWJraXRfdXNlcl9tZXNzYWdl
X25ldygiUG9uZyIsIG51bGxwdHIpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2Fn
ZVJlY2VpdmVkKCJUZXN0LkZpbmlzaGVkUGluZ1JlcXVlc3QiKTsKKyAgICB3ZWJraXRfdXNlcl9t
ZXNzYWdlX3NlbmRfcmVwbHkocGluZzIuZ2V0KCksIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQ
b25nIiwgbnVsbHB0cikpOworICAgIHRlc3QtPndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2
ZWQoIlRlc3QuRmluaXNoZWRQaW5nUmVxdWVzdCIpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRvbS1kb2N1bWVu
dC10aXRsZSIsIHRlc3RXZWJFeHRlbnNpb25HZXRUaXRsZSk7CkBAIC01NTMsNiArODExLDcgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lv
biIsICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQtc2lnbmFsIiwgdGVzdFdlYkV4dGVuc2lvbkZv
cm1Db250cm9sc0Fzc29jaWF0ZWQpOwogICAgIEZvcm1TdWJtaXNzaW9uVGVzdDo6YWRkKCJXZWJL
aXRXZWJFeHRlbnNpb24iLCAiZm9ybS1zdWJtaXNzaW9uLXN0ZXBzIiwgdGVzdFdlYkV4dGVuc2lv
bkZvcm1TdWJtaXNzaW9uU3RlcHMpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4
dGVuc2lvbiIsICJwYWdlLWlkIiwgdGVzdFdlYkV4dGVuc2lvblBhZ2VJRCk7CisgICAgVXNlck1l
c3NhZ2VUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJ1c2VyLW1lc3NhZ2VzIiwgdGVz
dFdlYkV4dGVuc2lvblVzZXJNZXNzYWdlcyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRl
c3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lv
blRlc3QuY3BwCmluZGV4IGIzYjljOGJmZmVhLi42ZDJhNDg2MDRiMiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0
LmNwcApAQCAtMjEsNyArMjEsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnaW8v
Z2lvLmg+CisjaW5jbHVkZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi9nc3Rk
aW8uaD4KICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNlbmRpZgpA
QCAtMTYyLDYgKzE2NSw4IEBAIHN0YXRpYyB2b2lkIGRvY3VtZW50TG9hZGVkQ2FsbGJhY2soV2Vi
S2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBlCiAgICAgR19HTlVDX0VO
RF9JR05PUkVfREVQUkVDQVRJT05TOwogI2VuZGlmCiAKKyAgICB3ZWJraXRfd2ViX3BhZ2Vfc2Vu
ZF9tZXNzYWdlX3RvX3ZpZXcod2ViUGFnZSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIkRvY3Vt
ZW50TG9hZGVkIiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworCiAgICAg
Z3BvaW50ZXIgZGF0YSA9IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGV4dGVuc2lvbiksICJk
YnVzLWNvbm5lY3Rpb24iKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgZW1pdERvY3VtZW50TG9h
ZGVkKEdfREJVU19DT05ORUNUSU9OKGRhdGEpKTsKQEAgLTQxNiw2ICs0MjEsNzUgQEAgc3RhdGlj
IHZvaWQgd2lsbFN1Ym1pdEZvcm1DYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJL
aXRET01FbGVtZW50KiBmb3IKICAgICB9CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBwYWdlTWVzc2Fn
ZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0VXNlck1lc3Nh
Z2UqIG1lc3NhZ2UsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGNvbnN0
IGNoYXIqIG1lc3NhZ2VOYW1lID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdl
KTsKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3QuSGVsbG8iKSkgeworICAg
ICAgICBhdXRvKiBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVy
cyhtZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICAg
ICAgY29uc3QgY2hhciogcGFyYW1ldGVyID0gbnVsbHB0cjsKKyAgICAgICAgZ192YXJpYW50X2dl
dChwYXJhbWV0ZXJzLCAiJnMiLCAmcGFyYW1ldGVyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHBhcmFtZXRlciwgPT0sICJXZWJQcm9jZXNzIik7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdChtZXNzYWdlKSk7CisgICAgICAgIHdlYmtpdF91
c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygi
VGVzdC5IZWxsbyIsIGdfdmFyaWFudF9uZXcoInMiLCAiVUlQcm9jZXNzIikpKTsKKyAgICAgICAg
cmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJU
ZXN0Lk9wdGlvbmFsIikpIHsKKyAgICAgICAgYXV0byogcGFyYW1ldGVycyA9IHdlYmtpdF91c2Vy
X21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwocGFyYW1ldGVycyk7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhcmFtZXRlcjEgPSBudWxscHRy
OworICAgICAgICBjb25zdCBjaGFyKiBwYXJhbWV0ZXIyID0gbnVsbHB0cjsKKyAgICAgICAgZ192
YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKCZzbSZzKSIsICZwYXJhbWV0ZXIxLCAmcGFyYW1ldGVy
Mik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIxLCA9PSwgIkhlbGxvIik7Cisg
ICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNl
cl9tZXNzYWdlX25ldygiVGVzdC5PcHRpb25hbCIsIGdfdmFyaWFudF9uZXcoInMiLCBwYXJhbWV0
ZXIyID8gcGFyYW1ldGVyMiA6ICJOVUxMIikpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAg
fQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0LlBpbmciKSkgeworICAg
ICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVz
c2FnZSkpOworICAgICAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkobWVzc2FnZSwg
d2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuUG9uZyIsIG51bGxwdHIpKTsKKyAgICAgICAg
cmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJU
ZXN0Lk9wZW5GaWxlIikpIHsKKyAgICAgICAgYXV0byogcGFyYW1ldGVycyA9IHdlYmtpdF91c2Vy
X21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwocGFyYW1ldGVycyk7CisgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gbnVsbHB0cjsK
KyAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiJnMiLCAmZmlsZW5hbWUpOworICAg
ICAgICBpbnQgZmQgPSBnX29wZW4oZmlsZW5hbWUsIE9fUkRPTkxZLCAwKTsKKyAgICAgICAgZ19h
c3NlcnRfY21waW50KGZkLCAhPSwgLTEpOworICAgICAgICBHUmVmUHRyPEdVbml4RkRMaXN0PiBm
ZExpc3QgPSBhZG9wdEdSZWYoZ191bml4X2ZkX2xpc3RfbmV3KCkpOworICAgICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIGdfdW5peF9mZF9saXN0X2FwcGVuZChmZExp
c3QuZ2V0KCksIGZkLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKworICAgICAgICB3ZWJraXRfdXNl
cl9tZXNzYWdlX3NlbmRfcmVwbHkobWVzc2FnZSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0
aF9mZF9saXN0KCJUZXN0Lk9wZW5GaWxlIiwgZ192YXJpYW50X25ldygiaCIsIDApLCBmZExpc3Qu
Z2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNt
cDAobWVzc2FnZU5hbWUsICJUZXN0LkluZmluaXRlIikpIHsKKyAgICAgICAgYWJvcnQoKTsKKyAg
ICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5h
bWUsICJUZXN0LkFzeW5jUGluZyIpKSB7CisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21l
c3NhZ2VfdG9fdmlldyh3ZWJQYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5QaW5n
IiwgbnVsbHB0ciksIG51bGxwdHIsCisgICAgICAgICAgICBbXShHT2JqZWN0KiBvYmplY3QsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcikgeworICAgICAgICAgICAgICAgIGF1dG8qIHdl
YlBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsKKyAgICAgICAgICAgICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRVc2Vy
TWVzc2FnZT4gcmVwbHkgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90
b192aWV3X2ZpbmlzaCh3ZWJQYWdlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAg
ICAgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBseS5nZXQo
KSksID09LCAiVGVzdC5Qb25nIik7CisgICAgICAgICAgICAgICAgd2Via2l0X3dlYl9wYWdlX3Nl
bmRfbWVzc2FnZV90b192aWV3KHdlYlBhZ2UsIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0
LkFzeW5jUG9uZyIsIG51bGxwdHIpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIH0sIG51bGxwdHIpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyB2b2lkIGVtaXRQYWdlQ3JlYXRlZChHREJ1c0Nvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIGd1aW50NjQgcGFnZUlEKQogewogICAgIGJvb2wgb2sgPSBnX2Ri
dXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCgKQEAgLTQzNiw2ICs1MTAsOSBAQCBzdGF0aWMgdm9p
ZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJL
aXRXZWJQYWdlKiB3ZQogICAgIGVsc2UKICAgICAgICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBl
bmQoRGVsYXllZFNpZ25hbChQYWdlQ3JlYXRlZFNpZ25hbCwgd2Via2l0X3dlYl9wYWdlX2dldF9p
ZCh3ZWJQYWdlKSkpOwogCisgICAgd2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3Rv
X2NvbnRleHQoZXh0ZW5zaW9uLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiUGFnZUNyZWF0ZWQi
LCBnX3ZhcmlhbnRfbmV3KCIodCkiLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkKHdlYlBhZ2UpKSks
CisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworCiAgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJQYWdlLCAiZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxMQkFDSyhkb2N1bWVudExvYWRl
ZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJu
b3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNL
KHNlbmRSZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKQEAgLTQ0Myw2ICs1MjAsMjYgQEAgc3Rh
dGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViS2l0V2ViUGFnZSogd2UKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJjb250
ZXh0LW1lbnUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51Q2FsbGJhY2spLCBudWxscHRyKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQtZm9y
LWZyYW1lIiwgR19DQUxMQkFDSyhmb3JtQ29udHJvbHNBc3NvY2lhdGVkRm9yRnJhbWVDYWxsYmFj
ayksIGV4dGVuc2lvbik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAid2lsbC1zdWJt
aXQtZm9ybSIsIEdfQ0FMTEJBQ0sod2lsbFN1Ym1pdEZvcm1DYWxsYmFjayksIGV4dGVuc2lvbik7
CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAidXNlci1tZXNzYWdlLXJlY2VpdmVkIiwg
R19DQUxMQkFDSyhwYWdlTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCBleHRlbnNpb24pOworfQor
CitzdGF0aWMgZ2Jvb2xlYW4gZXh0ZW5zaW9uTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0
V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQorewor
ICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFt
ZShtZXNzYWdlKTsKKyAgICBpZiAoZ19zdHJjbXAwKG1lc3NhZ2VOYW1lLCAiUmVxdWVzdFBpbmci
KSkgeworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4
dChleHRlbnNpb24sIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQaW5nIiwgbnVsbHB0ciksIG51
bGxwdHIsCisgICAgICAgICAgICBbXShHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBncG9pbnRlcikgeworICAgICAgICAgICAgICAgIGF1dG8qIGV4dGVuc2lvbiA9IFdFQktJ
VF9XRUJfRVhURU5TSU9OKG9iamVjdCk7CisgICAgICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOworICAgICAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+
IHJlcGx5ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19j
b250ZXh0X2ZpbmlzaChleHRlbnNpb24sIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAg
ICAgICAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKHJlcGx5Lmdl
dCgpKSwgPT0sICJQb25nIik7CisgICAgICAgICAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25f
c2VuZF9tZXNzYWdlX3RvX2NvbnRleHQoZXh0ZW5zaW9uLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25l
dygiVGVzdC5GaW5pc2hlZFBpbmdSZXF1ZXN0IiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOworICAgICAgICAgICAgfSwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBUUlVF
OworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIGNoYXIqIGVjaG9DYWxs
YmFjayhjb25zdCBjaGFyKiBtZXNzYWdlKQpAQCAtNjE0LDYgKzcxMSw3IEBAIGV4dGVybiAiQyIg
dm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktp
dFdlYkV4dGVuc2lvCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0
X25hbWUoaXNvbGF0ZWRXb3JsZCksID09LCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIik7
CiAgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChleHRlbnNpb24pLCAid2stc2Ny
aXB0LXdvcmxkIiwgaXNvbGF0ZWRXb3JsZCwgZ19vYmplY3RfdW5yZWYpOwogCisgICAgZ19zaWdu
YWxfY29ubmVjdChleHRlbnNpb24sICJ1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQiLCBHX0NBTExCQUNL
KGV4dGVuc2lvbk1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWdu
YWxfY29ubmVjdChleHRlbnNpb24sICJwYWdlLWNyZWF0ZWQiLCBHX0NBTExCQUNLKHBhZ2VDcmVh
dGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3Nj
cmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwgR19DQUxM
QkFDSyh3aW5kb3dPYmplY3RDbGVhcmVkKSwgbnVsbHB0cik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380972</attachid>
            <date>2019-10-15 02:03:12 -0700</date>
            <delta_ts>2019-10-15 08:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-user-messages.diff</filename>
            <type>text/plain</type>
            <size>136145</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDJjM2RlNWRlNTdm
Li5lNzc5ZjdhZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgbmV3IGZpbGVzIGNvbnRhaW5pbmcgdHJhbnNsYXRhYmxlIHN0cmluZ3Mu
CisKIDIwMTktMDktMDcgIENocmlzdGlhbiBLaXJiYWNoICA8Q2hyaXN0aWFuLktpcmJhY2hAZ29v
Z2xlbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlZCBHZXJtYW4gdHJhbnNsYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRleCBiNTRkMjFkMzY3Mi4u
NGNlYmQ5NTk5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9Q
T1RGSUxFUy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMu
aW4KQEAgLTcsNiArNyw3IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCiAuLi8uLi8uLi9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorLi4vLi4vLi4vV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKIC4uLy4uLy4uL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkVycm9yc1NvdXAuY3BwCkBAIC00
Myw0ICs0NCw1IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJLaXRJbnNwZWN0b3JXaW5kb3cuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogLi4vLi4vLi4vV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5jcHAKKy4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKIC4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMDBhZGU0
NzBmLi42Y2QxNTZlYjA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMTktMTAtMTQg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIG5ldmVyIGV4cG9zZWQgYW4gQVBJIHRvIHNl
bmQvcmVjZWl2ZSBtZXNzYWdlcyB0by9mcm9tIFdlYiBleHRlbnNpb25zLCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdXNlIHRoZWlyIG93bgorICAgICAgICBJUEMuIE5vdywgd2l0aCBQU09OIGVuYWJs
ZWQsIGl0J3MgYSBsb3QgbW9yZSBkaWZmaWN1bHQgdG8gaW1wbGVtZW50IHRoZSBjdXN0b20gSVBD
IG9uIHRoZSBhcHBsaWNhdGlvbiBzaWRlLAorICAgICAgICBiZWNhdXNlIGFwcGxpY2F0aW9ucyBu
ZWVkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHRoZSB3ZWIgcHJvY2Vzc2VzIGxhdW5jaGVkLCBhbmQg
dGhlIGNoYW5nZXMgb2Ygd2ViIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIHdlYiB2aWV3IHRvIHNl
bmQgdGhlIG1lc3NhZ2VzIHRvIHRoZSByaWdodCBleHRlbnNpb24uIFRoYXQncyBhbHJlYWR5IGRv
bmUgaW50ZXJuYWxseSBieSBXZWJLaXQsIHNvIGl0IHdvdWxkIGJlCisgICAgICAgIGVhc2llciB0
byBwcm92aWRlIGEgc2ltcGxlIEFQSSBzbyB0aGF0IGFwcHMgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCB0aGUgd2ViIHByb2Nlc3MgYmVpbmcgdXNlZC4gVGhpcyBwYXRjaCBhZGRzCisgICAgICAg
IFdlYktpdFVzZXJNZXNzYWdlLCBhIHNpbXBsZSBtZXNzYWdlIEFQSSBjb25zaXN0aW5nIG9uIGEg
bWVzc2FnZSBuYW1lLCBwYXJhbWV0ZXJzIGFuZCBmaWxlIGRlc2NyaXB0b3JzLiBNZXNzYWdlcwor
ICAgICAgICBjYW4gYmUgc2VudCBmcm9tIGEgV2ViS2l0V2ViQ29udGV4dCB0byBhbGwgdGhlIFdl
YktpdFdlYkV4dGVuc2lvbnMsIG9yIGZyb20gYSBXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzCisg
ICAgICAgIFdlYktpdFdlYkNvbnRleHQsIG9yIGZyb20gYSBXZWJLaXRXZWJWaWV3IHRvIGl0cyBX
ZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2ZXJzYSkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFVzZXJN
ZXNzYWdlRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRVc2VyTWVzc2FnZUdldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3VzZXJfbWVzc2FnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlQ3Jl
YXRlKToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldyk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX25l
d193aXRoX2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKToKKyAgICAgICAg
KHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJf
bWVzc2FnZV9zZW5kX3JlcGx5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lc3NhZ2VQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50
Q29kZXJzR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5o
OiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVzc2FnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lc3NhZ2U6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2dsaWIvVXNlck1l
c3NhZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlOjpVc2VyTWVzc2Fn
ZSk6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
Y29udGV4dF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21l
c3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAg
ICAoQVBJOjpWaWV3Q2xpZW50OjpkaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OmRpZFJlY2VpdmVVc2VyTWVzc2FnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6ZXh0ZW5zaW9uIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3Nh
Z2UpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHQpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHRfZmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2Vy
TWVzc2FnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcp
OgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJl
eHRlbnNpb25zLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kTWVzc2Fn
ZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vu
ZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24pOgorCiAyMDE5LTEwLTE1ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIEljb25EYXRhYmFzZSBpcyBub3QgdGhyZWFkIHNhZmUgeWV0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCBhYTc2NTViOWQ1Ny4uZGZlMWM1MjkyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMTA5LDYgKzEwOSw3IEBAIHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFE
RVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dEZpbHRlclN0b3JlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCkBAIC02OTQsMTIgKzY5NSwxNCBA
QCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5jcHAKICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKICAgICAgICAg
ICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3Bw
CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVz
c2FnZS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktp
dFVSSVJlcXVlc3QuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXNwb25zZS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICAgICAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0u
aAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRU
ZXN0UmVzdWx0LmgKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlck1lc3NhZ2UuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaAogICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliLyouY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZQppbmRleCA4OTc3NDIxYmIxMC4uNzNmYjZhMWQ4N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZQpAQCAtMTM0LDYgKzEzNCw3IEBAIHNldChXUEVfQVBJX0lOU1RBTExFRF9IRUFE
RVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVu
dEZpbHRlclN0b3JlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlJlc291cmNlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4zYTNmODg5YTYxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlLmNwcApAQCAtMCwwICsx
LDMwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIKKworI2luY2x1ZGUgIldl
YktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgor
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9OQU1FLAorICAgIFBS
T1BfUEFSQU1FVEVSUywKKyAgICBQUk9QX0ZEX0xJU1QKK307CisKKy8qKgorICogU0VDVElPTjog
V2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSB1c2VyIG1lc3NhZ2UK
KyAqIEBUaXRsZTogV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYkNv
bnRleHQsICNXZWJLaXRXZWJWaWV3LCAjV2ViS2l0V2ViRXh0ZW5zaW9uLCAjV2ViS2l0V2ViUGFn
ZQorICoKKyAqIEEgV2ViS2l0VXNlck1lc3NhZ2UgaXMgYSBtZXNzYWdlIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFVJIHByb2Nlc3MKKyAqIGFuZCBX
ZWIgZXh0ZW5zaW9ucy4gQSBXZWJLaXRVc2VyTWVzc2FnZSBhbHdheXMgaGF2ZSBhIG5hbWUsIGFu
ZCBpdCBjYW4gYWxzbyBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kCisgKiBVTklYIGZpbGUgZGVzY3Jp
cHRvcnMuIE1lc3NhZ2VzIGNhbiBiZSBzZW50IGZyb20gYSAjV2ViS2l0V2ViQ29udGV4dCB0byBh
bGwgI1dlYktpdFdlYkV4dGVuc2lvbjwhLS0gLS0+cywKKyAqIGZyb20gYSAjV2ViS2l0V2ViRXh0
ZW5zaW9uIHRvIGl0cyBjb3JyZXNwb25kaW5nICNXZWJLaXRXZWJDb250ZXh0LCBhbmQgZnJvbSBh
ICNXZWJLaXRXZWJWaWV3IHRvIGl0cworICogY29ycmVzcG9uZGluZyAjV2ViS2l0V2ViUGFnZSAo
YW5kIHZpY2UgdmVyc2EpLiBPbmUgdG8gb25lIG1lc3NhZ2VzIGNhbiBiZSByZXBsaWVkIGRpcmVj
dGx5IHdpdGgKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseSgpLgorICoKKyAqIFNp
bmNlOiAyLjI4CisgKi8KK3N0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlIHsKKyAgICBV
c2VyTWVzc2FnZSBtZXNzYWdlOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3Nh
Z2UmJik+IHJlcGx5SGFuZGxlcjsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRVc2Vy
TWVzc2FnZSwgd2Via2l0X3VzZXJfbWVzc2FnZSwgR19UWVBFX0lOSVRJQUxMWV9VTk9XTkVEKQor
CitHX0RFRklORV9RVUFSSyhXZWJLaXRVc2VyTWVzc2FnZUVycm9yLCB3ZWJraXRfdXNlcl9tZXNz
YWdlX2Vycm9yKQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVzc2FnZURpc3Bvc2UoR09iamVj
dCogb2JqZWN0KQoreworICAgIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlID0gV0VCS0lUX1VT
RVJfTUVTU0FHRShvYmplY3QpOworCisgICAgaWYgKGF1dG8gcmVwbHlIYW5kbGVyID0gc3RkOjpl
eGNoYW5nZShtZXNzYWdlLT5wcml2LT5yZXBseUhhbmRsZXIsIG51bGxwdHIpKQorICAgICAgICBy
ZXBseUhhbmRsZXIoVXNlck1lc3NhZ2UobWVzc2FnZS0+cHJpdi0+bWVzc2FnZS5uYW1lLCBXRUJL
SVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFKSk7CisKKyAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfdXNlcl9tZXNzYWdlX3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lc3NhZ2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQor
eworICAgIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShv
YmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfTkFNRToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9u
YW1lKG1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBUkFNRVRFUlM6
CisgICAgICAgIGdfdmFsdWVfc2V0X3ZhcmlhbnQodmFsdWUsIHdlYmtpdF91c2VyX21lc3NhZ2Vf
Z2V0X3BhcmFtZXRlcnMobWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RkRfTElTVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9mZF9saXN0KG1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0VXNlck1lc3Nh
Z2VTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFVzZXJNZXNzYWdl
KiBtZXNzYWdlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShvYmplY3QpOworCisgICAgc3dpdGNoIChw
cm9wSWQpIHsKKyAgICBjYXNlIFBST1BfTkFNRToKKyAgICAgICAgbWVzc2FnZS0+cHJpdi0+bWVz
c2FnZS5uYW1lID0gZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKTsKKyAgICAgICAgbWVzc2FnZS0+
cHJpdi0+bWVzc2FnZS50eXBlID0gVXNlck1lc3NhZ2U6OlR5cGU6Ok1lc3NhZ2U7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9QQVJBTUVURVJTOgorICAgICAgICBtZXNzYWdlLT5wcml2
LT5tZXNzYWdlLnBhcmFtZXRlcnMgPSBnX3ZhbHVlX2dldF92YXJpYW50KHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZEX0xJU1Q6CisgICAgICAgIG1lc3NhZ2UtPnByaXYt
Pm1lc3NhZ2UuZmlsZURlc2NyaXB0b3JzID0gR19VTklYX0ZEX0xJU1QoZ192YWx1ZV9nZXRfb2Jq
ZWN0KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF91c2VyX21lc3NhZ2VfY2xhc3NfaW5pdChX
ZWJLaXRVc2VyTWVzc2FnZUNsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIGdPYmplY3RDbGFzcy0+ZGlz
cG9zZSA9IHdlYmtpdFVzZXJNZXNzYWdlRGlzcG9zZTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdFVzZXJNZXNzYWdlR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNz
LT5zZXRfcHJvcGVydHkgPSB3ZWJraXRVc2VyTWVzc2FnZVNldFByb3BlcnR5OworCisgICAgLyoq
CisgICAgICogV2ViS2l0VXNlck1lc3NhZ2U6bmFtZToKKyAgICAgKgorICAgICAqIFRoZSBuYW1l
IG9mIHRoZSB1c2VyIG1lc3NhZ2UuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RD
bGFzcywKKyAgICAgICAgUFJPUF9OQU1FLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAor
ICAgICAgICAgICAgIm5hbWUiLAorICAgICAgICAgICAgXygiTmFtZSIpLAorICAgICAgICAgICAg
XygiVGhlIHVzZXIgbWVzc2FnZSBuYW1lIiksCisgICAgICAgICAgICBudWxscHRyLAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0VXNlck1l
c3NhZ2U6cGFyYW1ldGVyczoKKyAgICAgKgorICAgICAqIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB1
c2VyIG1lc3NhZ2UgYXMgYSAjR1ZhcmlhbnQsIG9yICVOVUxMCisgICAgICogaWYgdGhlIG1lc3Nh
Z2UgZG9lc24ndCBpbmNsdWRlIHBhcmFtZXRlcnMuIE5vdGUgdGhhdCBvbmx5IGNvbXBsZXRlIHR5
cGVzIGFyZQorICAgICAqIGFsbG93ZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgUFJPUF9QQVJBTUVURVJTLAorICAgICAgICBnX3BhcmFtX3NwZWNf
dmFyaWFudCgKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIiwKKyAgICAgICAgICAgIF8oIlBhcmFt
ZXRlcnMiKSwKKyAgICAgICAgICAgIF8oIlRoZSB1c2VyIG1lc3NhZ2UgcGFyYW1ldGVycyIpLAor
ICAgICAgICAgICAgR19WQVJJQU5UX1RZUEVfQU5ZLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
IHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFVz
ZXJNZXNzYWdlOmZkLWxpc3Q6CisgICAgICoKKyAgICAgKiBUaGUgVU5JWCBmaWxlIGRlc2NyaXB0
b3JzIG9mIHRoZSB1c2VyIG1lc3NhZ2UuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgUFJPUF9GRF9MSVNULAorICAgICAgICBnX3BhcmFtX3NwZWNfb2Jq
ZWN0KAorICAgICAgICAgICAgImZkLWxpc3QiLAorICAgICAgICAgICAgXygiRmlsZSBEZXNjcmlw
dG9yIExpc3QiKSwKKyAgICAgICAgICAgIF8oIlRoZSB1c2VyIG1lc3NhZ2UgbGlzdCBvZiBmaWxl
IGRlc2NyaXB0b3JzIiksCisgICAgICAgICAgICBHX1RZUEVfVU5JWF9GRF9MSVNULAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworfQorCitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0
VXNlck1lc3NhZ2VDcmVhdGUoVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIFdlYktpdFVz
ZXJNZXNzYWdlKiByZXR1cm5WYWx1ZSA9IFdFQktJVF9VU0VSX01FU1NBR0UoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgbnVsbHB0cikpOworICAgIHJldHVyblZhbHVlLT5w
cml2LT5tZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Cit9CisKK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShVc2VyTWVz
c2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYg
cmVwbHlIYW5kbGVyKQoreworICAgIFdlYktpdFVzZXJNZXNzYWdlKiByZXR1cm5WYWx1ZSA9IFdF
QktJVF9VU0VSX01FU1NBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwg
bnVsbHB0cikpOworICAgIHJldHVyblZhbHVlLT5wcml2LT5tZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKTsKKyAgICByZXR1cm5WYWx1ZS0+cHJpdi0+cmVwbHlIYW5kbGVyID0gV1RGTW92ZShyZXBs
eUhhbmRsZXIpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVXNlck1lc3NhZ2UmIHdl
YmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sK
KyAgICByZXR1cm4gbWVzc2FnZS0+cHJpdi0+bWVzc2FnZTsKK30KKworLyoqCisgKiB3ZWJraXRf
dXNlcl9tZXNzYWdlX25ldzoKKyAqIEBuYW1lOiB0aGUgbWVzc2FnZSBuYW1lCisgKiBAcGFyYW1l
dGVyczogKG51bGxhYmxlKTogdGhlIG1lc3NhZ2UgcGFyYW1ldGVycyBhcyBhICNHVmFyaWFudCwg
b3IgJU5VTEwKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdFVzZXJNZXNzYWdlIHdpdGggQG5h
bWUuCisgKgorICogUmV0dXJuczogdGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFVzZXJNZXNzYWdl
IG9iamVjdC4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCitXZWJLaXRVc2VyTWVzc2FnZSogd2Vi
a2l0X3VzZXJfbWVzc2FnZV9uZXcoY29uc3QgY2hhciogbmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRl
cnMpCit7CisgICAgcmV0dXJuIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3X3dpdGhfZmRfbGlzdChu
YW1lLCBwYXJhbWV0ZXJzLCBudWxscHRyKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNz
YWdlX25ld193aXRoX2ZkX2xpc3Q6CisgKiBAbmFtZTogdGhlIG1lc3NhZ2UgbmFtZQorICogQHBh
cmFtZXRlcnM6IChudWxsYWJsZSk6IHRoZSBtZXNzYWdlIHBhcmFtZXRlcnMgYXMgYSAjR1Zhcmlh
bnQKKyAqIEBmZF9saXN0OiAobnVsbGFibGUpOiB0aGUgbWVzc2FnZSBmaWxlIGRlc2NyaXB0b3Jz
CisgKgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRVc2VyTWVzc2FnZSBpbmNsdWRpbmcgYWxzbyBh
IGxpc3Qgb2YgVU5JWCBmaWxlIGRlc2NyaXB0b3JzIHRvIGJlIHNlbnQuCisgKgorICogUmV0dXJu
czogdGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFVzZXJNZXNzYWdlIG9iamVjdC4KKyAqCisgKiBT
aW5jZTogMi4yOAorICovCitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0X3VzZXJfbWVzc2FnZV9u
ZXdfd2l0aF9mZF9saXN0KGNvbnN0IGNoYXIqIG5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBH
VW5peEZETGlzdCogZmRMaXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIG51
bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFmZExpc3QgfHwgR19JU19VTklYX0ZE
X0xJU1QoZmRMaXN0KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gV0VCS0lUX1VTRVJfTUVTU0FH
RShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCAibmFtZSIsIG5hbWUsICJw
YXJhbWV0ZXJzIiwgcGFyYW1ldGVycywgImZkLWxpc3QiLCBmZExpc3QsIG51bGxwdHIpKTsKK30K
KworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lOgorICogQG1lc3NhZ2U6IGEg
I1dlYktpdFVzZXJNZXNzYWdlCisgKgorICogR2V0IHRoZSBAbWVzc2FnZSBuYW1lCisgKgorICog
UmV0dXJuczogdGhlIG1lc3NhZ2UgbmFtZQorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK2NvbnN0
IGNoYXIqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUoV2ViS2l0VXNlck1lc3NhZ2UqIG1l
c3NhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FH
RShtZXNzYWdlKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gbWVzc2FnZS0+cHJpdi0+bWVzc2Fn
ZS5uYW1lLmRhdGEoKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJh
bWV0ZXJzOgorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKgorICogR2V0IHRo
ZSBAbWVzc2FnZSBwYXJhbWV0ZXJzCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0
aGUgbWVzc2FnZSBwYXJhbWV0ZXJzCisgKgorICogU2luY2U6IDIuMjgKKyAqLworR1ZhcmlhbnQq
IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMoV2ViS2l0VXNlck1lc3NhZ2UqIG1l
c3NhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FH
RShtZXNzYWdlKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gbWVzc2FnZS0+cHJpdi0+bWVzc2Fn
ZS5wYXJhbWV0ZXJzLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X2ZkX2xpc3Q6CisgKiBAbWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqCisgKiBHZXQg
dGhlIEBtZXNzYWdlIGxpc3Qgb2YgZmlsZSBkZXNjcml0cG9yCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIG5vbmUpOiB0aGUgbWVzc2FnZSBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMKKyAqCisg
KiBTaW5jZTogMi4yOAorICovCitHVW5peEZETGlzdCogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRf
ZmRfbGlzdChXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpLCBudWxscHRyKTsKKworICAg
IHJldHVybiBtZXNzYWdlLT5wcml2LT5tZXNzYWdlLmZpbGVEZXNjcmlwdG9ycy5nZXQoKTsKK30K
KworLyoqCisgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHk6CisgKiBAbWVzc2FnZTog
YSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEByZXBseTogYSAjV2ViS2l0VXNlck1lc3NhZ2UgdG8g
c2VuZCBhcyByZXBseQorICoKKyAqIFNlbmQgYSByZXBseSB0byBAbWVzc2FnZS4gSWYgQHJlcGx5
IGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICogWW91IGNhbiBvbmx5IHNlbmQgYSByZXBs
eSB0byBhICNXZWJLaXRVc2VyTWVzc2FnZSB0aGF0IGhhcyBiZWVuCisgKiByZWNlaXZlZC4KKyAq
CisgKiBTaW5jZTogMi4yOAorICovCit2b2lkIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBs
eShXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSwgV2ViS2l0VXNlck1lc3NhZ2UqIHJlcGx5KQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSk7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJlcGx5KSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChtZXNzYWdlLT5wcml2LT5yZXBseUhhbmRsZXIpOworCisgICAg
R1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gYWRvcHRlZFJlcGx5ID0gcmVwbHk7CisgICAgaWYg
KGF1dG8gcmVwbHlIYW5kbGVyID0gc3RkOjpleGNoYW5nZShtZXNzYWdlLT5wcml2LT5yZXBseUhh
bmRsZXIsIG51bGxwdHIpKQorICAgICAgICByZXBseUhhbmRsZXIocmVwbHkgPyByZXBseS0+cHJp
di0+bWVzc2FnZSA6IFVzZXJNZXNzYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmNlYWEwMWRlODEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZVByaXZh
dGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKKyNpbmNsdWRlICJX
ZWJLaXRVc2VyTWVzc2FnZS5oIgorCitXZWJLaXRVc2VyTWVzc2FnZSogd2Via2l0VXNlck1lc3Nh
Z2VDcmVhdGUoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKTsKK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJr
aXRVc2VyTWVzc2FnZUNyZWF0ZShXZWJLaXQ6OlVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKT4mJik7CitXZWJLaXQ6OlVzZXJNZXNzYWdl
JiB3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UoV2ViS2l0VXNlck1lc3NhZ2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDIyNzZkYzQ4YjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNH
TGliLmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8Z2xpYi5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIEdWYXJpYW50KiB2YXJpYW50KQoreworICAgIGlmICgh
dmFyaWFudCkgeworICAgICAgICBlbmNvZGVyIDw8IENTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGVuY29kZXIgPDwgQ1N0cmluZyhnX3ZhcmlhbnRfZ2V0X3R5cGVfc3Ry
aW5nKHZhcmlhbnQpKTsKKyAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGdfdmFyaWFudF9nZXRfZGF0YSh2YXJpYW50KSksIGdfdmFyaWFudF9n
ZXRfc2l6ZSh2YXJpYW50KSk7Cit9CisKK2Jvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEdS
ZWZQdHI8R1ZhcmlhbnQ+JiB2YXJpYW50KQoreworICAgIENTdHJpbmcgdmFyaWFudFR5cGVTdHJp
bmc7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YXJpYW50VHlwZVN0cmluZykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICh2YXJpYW50VHlwZVN0cmluZy5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWdfdmFyaWFudF90eXBlX3N0cmluZ19pc192
YWxpZCh2YXJpYW50VHlwZVN0cmluZy5kYXRhKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBEYXRhUmVmZXJlbmNlIGRhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogdmFyaWFudFR5cGUgPSBnX3Zhcmlh
bnRfdHlwZV9uZXcodmFyaWFudFR5cGVTdHJpbmcuZGF0YSgpKTsKKyAgICB2YXJpYW50ID0gZ192
YXJpYW50X25ld19mcm9tX2RhdGEodmFyaWFudFR5cGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSwgRkFMU0UsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGdfdmFyaWFudF90eXBlX2ZyZWUodmFy
aWFudFR5cGUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNzA5NjgxZTg4ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmgKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR1ZhcmlhbnQgR1Zh
cmlhbnQ7CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29kZShFbmNvZGVyJiwgR1Zhcmlh
bnQqKTsKK2Jvb2wgZGVjb2RlKERlY29kZXImLCBHUmVmUHRyPEdWYXJpYW50PiYpOworCit9IC8v
IG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNl
ck1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2MDBjYjBhMDFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAK
QEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIK
KworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzR0xpYi5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQu
aCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8Z2lvL2d1bml4ZmRsaXN0
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFVzZXJNZXNzYWdlOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIuZW5jb2RlRW51bSh0eXBl
KTsKKyAgICBpZiAodHlwZSA9PSBUeXBlOjpOdWxsKQorICAgICAgICByZXR1cm47CisKKyAgICBl
bmNvZGVyIDw8IG5hbWU7CisgICAgaWYgKHR5cGUgPT0gVHlwZTo6RXJyb3IpIHsKKyAgICAgICAg
ZW5jb2RlciA8PCBlcnJvckNvZGU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJUEM6
OmVuY29kZShlbmNvZGVyLCBwYXJhbWV0ZXJzLmdldCgpKTsKKworICAgIFZlY3RvcjxJUEM6OkF0
dGFjaG1lbnQ+IGF0dGFjaG1lbnRzOworICAgIGlmIChmaWxlRGVzY3JpcHRvcnMpIHsKKyAgICAg
ICAgaW50IGxlbmd0aCA9IGdfdW5peF9mZF9saXN0X2dldF9sZW5ndGgoZmlsZURlc2NyaXB0b3Jz
LmdldCgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChJUEM6OkF0dGFjaG1lbnQoZ191bml4X2ZkX2xpc3Rf
Z2V0KGZpbGVEZXNjcmlwdG9ycy5nZXQoKSwgaSwgbnVsbHB0cikpKTsKKyAgICB9CisgICAgZW5j
b2RlciA8PCBhdHRhY2htZW50czsKK30KKworT3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNz
YWdlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFVzZXJNZXNzYWdlIHJl
c3VsdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQudHlwZSkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAocmVzdWx0LnR5cGUgPT0gVHlwZTo6TnVs
bCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm5hbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKHJlc3Vs
dC50eXBlID09IFR5cGU6OkVycm9yKSB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBlcnJv
ckNvZGU7CisgICAgICAgIGRlY29kZXIgPj4gZXJyb3JDb2RlOworICAgICAgICBpZiAoIWVycm9y
Q29kZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmVzdWx0
LmVycm9yQ29kZSA9IGVycm9yQ29kZS52YWx1ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LnBhcmFtZXRlcnMp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8VmVjdG9yPElQ
Qzo6QXR0YWNobWVudD4+IGF0dGFjaG1lbnRzOworICAgIGRlY29kZXIgPj4gYXR0YWNobWVudHM7
CisgICAgaWYgKCFhdHRhY2htZW50cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBpZiAoIWF0dGFjaG1lbnRzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVzdWx0LmZpbGVEZXNj
cmlwdG9ycyA9IGFkb3B0R1JlZihnX3VuaXhfZmRfbGlzdF9uZXcoKSk7CisgICAgICAgIGZvciAo
YXV0byYgYXR0YWNobWVudCA6ICphdHRhY2htZW50cykgeworICAgICAgICAgICAgaWYgKGdfdW5p
eF9mZF9saXN0X2FwcGVuZChyZXN1bHQuZmlsZURlc2NyaXB0b3JzLmdldCgpLCBhdHRhY2htZW50
LnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpLCBudWxscHRyKSA9PSAtMSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2Vy
TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYmRkNjRkNjgwMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuaApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3R5cGVk
ZWYgc3RydWN0IF9HVW5peEZETGlzdCBHVW5peEZETGlzdDsKK3R5cGVkZWYgc3RydWN0IF9HVmFy
aWFudCBHVmFyaWFudDsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3Mg
RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBVc2VyTWVzc2FnZSB7
CisgICAgZW51bSBjbGFzcyBUeXBlIHsgTnVsbCwgTWVzc2FnZSwgRXJyb3IgfTsKKworICAgIFVz
ZXJNZXNzYWdlKCkKKyAgICAgICAgOiB0eXBlKFR5cGU6Ok51bGwpCisgICAgeworICAgIH0KKwor
ICAgIFVzZXJNZXNzYWdlKGNvbnN0IENTdHJpbmcmIG5hbWUsIHVpbnQzMl90IGVycm9yQ29kZSkK
KyAgICAgICAgOiB0eXBlKFR5cGU6OkVycm9yKQorICAgICAgICAsIG5hbWUobmFtZSkKKyAgICAg
ICAgLCBlcnJvckNvZGUoZXJyb3JDb2RlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8VXNlck1lc3NhZ2U+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgIFR5cGUgdHlwZSB7IFR5cGU6Ok51bGwgfTsK
KyAgICBDU3RyaW5nIG5hbWU7CisgICAgR1JlZlB0cjxHVmFyaWFudD4gcGFyYW1ldGVyczsKKyAg
ICBHUmVmUHRyPEdVbml4RkRMaXN0PiBmaWxlRGVzY3JpcHRvcnM7CisgICAgdWludDMyX3QgZXJy
b3JDb2RlIHsgMCB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggMWU0ZTQyY2RkYmUu
LmM5ZTE1M2Q2YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTY3LDYgKzY3LDcgQEAgU2hhcmVk
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0VVJJUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVzcG9uc2UuY3BwIEBuby11bmlmeQorU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdl
LmNwcCBAbm8tdW5pZnkKIAogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmlld3Bv
cnRDb250cm9sbGVyLmNwcApAQCAtODIsNyArODMsOSBAQCBTaGFyZWQvUGx1Z2lucy91bml4L1Bs
dWdpblNlYXJjaFBhdGguY3BwCiAKIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5j
cHAKIAorU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcAogU2hhcmVkL2dsaWIvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKK1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAog
U2hhcmVkL2dsaWIvV2ViQ29udGV4dE1lbnVJdGVtR2xpYi5jcHAKIAogU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKQEAgLTQwNCw2ICs0MDcsOCBAQCBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAogCiBXZWJQcm9jZXNzL1dlYlBh
Z2UvYXRrL1dlYktpdFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAogCitXZWJQcm9jZXNz
L1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKKwogV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJl
YW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCBhMjJlNGYxMDk5
NC4uNWI1MTRkNTIxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtNjgsNiArNjgsNyBAQCBTaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CitTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3Nh
Z2UuY3BwIEBuby11bmlmeQogCiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3
cG9ydENvbnRyb2xsZXIuY3BwCkBAIC04MSw3ICs4Miw5IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAogCiBTaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKK1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5j
cHAKIFNoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCitTaGFyZWQvZ2xp
Yi9Vc2VyTWVzc2FnZS5jcHAKIFNoYXJlZC9nbGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIuY3Bw
CiAKIFNoYXJlZC9saWJ3cGUvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTI0
Nyw2ICsyNTAsOCBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVIb3N0LmNwcAogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYktpdFdlYlBhZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAogCitXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xp
Yi5jcHAKKwogV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1lci9XZWJQYWdlR1N0cmVhbWVyLmNw
cAogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5j
cHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGM2MGUyZDc5NjY1Li42YjQ4MjJmZjA3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKQEAgLTQ3LDEwICs0NywxMiBAQAogI2luY2x1ZGUgIldlYktpdFNldHRpbmdzUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgpAQCAtMTIzLDYgKzEyNSw3
IEBAIGVudW0gewogICAgIElOSVRJQUxJWkVfV0VCX0VYVEVOU0lPTlMsCiAgICAgSU5JVElBTEla
RV9OT1RJRklDQVRJT05fUEVSTUlTU0lPTlMsCiAgICAgQVVUT01BVElPTl9TVEFSVEVELAorICAg
IFVTRVJfTUVTU0FHRV9SRUNFSVZFRCwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMzcyLDYg
KzM3NSwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogCiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlKGNvbmZpZ3VyYXRpb24pOwogICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0
YVN0b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0VXNlck1lc3Nh
Z2VIYW5kbGVyKFt3ZWJDb250ZXh0XShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAg
ICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVmLgorICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJN
ZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgICAgIGdfc2lnbmFsX2VtaXQod2ViQ29udGV4dCwgc2lnbmFsc1tVU0VS
X01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2FnZS5nZXQoKSwgJnJldHVyblZhbHVlKTsK
KyAgICB9KTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29sKTsKIApAQCAt
NDE1LDYgKzQyNCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgICAgIHByaXYtPmZhdmljb25EYXRhYmFzZSA9IG51bGxwdHI7CiAg
ICAgfQogCisgICAgaWYgKHByaXYtPnByb2Nlc3NQb29sKSB7CisgICAgICAgIHByaXYtPnByb2Nl
c3NQb29sLT5zZXRVc2VyTWVzc2FnZUhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
d2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCkBAIC01NzQs
NiArNTg4LDMyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdl
YktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4dENsYXNzCiAgICAgICAgICAgICBnX2NjbG9z
dXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPTUFUSU9OX1NFU1NJT04pOworCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViQ29udGV4dDo6dXNlci1tZXNzYWdlLXJlY2VpdmVkOgorICAgICAqIEBj
b250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRleHQKKyAgICAgKiBAbWVzc2FnZTogdGhlICNXZWJL
aXRVc2VyTWVzc2FnZSByZWNlaXZlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1p
dHRlZCB3aGVuIGEgI1dlYktpdFVzZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gYQorICAgICAq
ICNXZWJLaXRXZWJFeHRlbnNpb24uIFlvdSBjYW4gcmVwbHkgdG8gdGhlIG1lc3NhZ2UgdXNpbmcK
KyAgICAgKiB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKS4KKyAgICAgKgorICAgICAq
IFlvdSBjYW4gaGFuZGxlIHRoZSB1c2VyIG1lc3NhZ2UgYXN5bmNocm9ub3VzbHkgYnkgY2FsbGlu
ZyBnX29iamVjdF9yZWYoKSBvbgorICAgICAqIEBtZXNzYWdlIGFuZCByZXR1cm5pbmcgJVRSVUUu
CisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxl
ZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAg
ICovCisgICAgc2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAor
ICAgICAgICAidXNlci1tZXNzYWdlLXJlY2VpdmVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIEdf
U1RSVUNUX09GRlNFVChXZWJLaXRXZWJDb250ZXh0Q2xhc3MsIHVzZXJfbWVzc2FnZV9yZWNlaXZl
ZCksCisgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgbnVsbHB0ciwK
KyAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX2dlbmVyaWMsCisgICAgICAgIEdfVFlQRV9CT09M
RUFOLCAxLAorICAgICAgICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpOwogfQogCiBzdGF0aWMg
Z3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50ZXIpCkBAIC0xNjgwLDYgKzE3
MjAsMjcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25f
cGVybWlzc2lvbnMoV2ViS2l0V2ViQ29udGV4dCogY28KICAgICBjb250ZXh0LT5wcml2LT5ub3Rp
ZmljYXRpb25Qcm92aWRlci0+c2V0Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV1RGTW92ZShtYXAp
KTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9l
eHRlbnNpb25zOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQG1lc3Nh
Z2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKgorICogU2VuZCBAbWVzc2FnZSB0byBhbGwgI1dl
YktpdFdlYkV4dGVuc2lvbjwhLS0gLS0+cyBhc3NvY2lhdGVkIHRvIEBjb250ZXh0LgorICogSWYg
QG1lc3NhZ2UgaXMgZmxvYXRpbmcsIGl0J3MgY29uc3VtZWQuCisgKgorICogU2luY2U6IDIuMjgK
KyAqLwordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNp
b25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdl
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQp
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkp
OworCisgICAgLy8gV2Ugc2luayB0aGUgcmVmZXJlbmNlIGluIGNhc2Ugb2YgYmVpbmcgZmxvYXRp
bmcuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gYWRvcHRlZE1lc3NhZ2UgPSBtZXNz
YWdlOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29s
LT5wcm9jZXNzZXMoKSkKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbih3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2Uo
bWVzc2FnZSkpLCAwKTsKK30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19z
aWduYWxfZW1pdChjb250ZXh0LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1J
U1NJT05TXSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCmluZGV4IDEwN2Y0ZGQwNDA0Li44NDJhZTQ4YmI0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAg
LTU2LDEyICs1NiwxNCBAQAogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlJlc291cmNl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGll
c1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDxqc2MvSlNDQ29udGV4dFByaXZhdGUuaD4KQEAgLTE2Myw2ICsxNjUs
OCBAQCBlbnVtIHsKICAgICBTSE9XX09QVElPTl9NRU5VLAogI2VuZGlmCiAKKyAgICBVU0VSX01F
U1NBR0VfUkVDRUlWRUQsCisKICAgICBMQVNUX1NJR05BTAogfTsKIApAQCAtNDQ0LDYgKzQ0OCwx
MSBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXRXZWJWaWV3RGlkQ2hhbmdlUGFnZUlEKG1fd2Vi
Vmlldyk7CiAgICAgfQogCisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lc3NhZ2UoV0tXUEU6OlZp
ZXcmLCBVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1l
c3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3
ZWJraXRXZWJWaWV3RGlkUmVjZWl2ZVVzZXJNZXNzYWdlKG1fd2ViVmlldywgV1RGTW92ZShtZXNz
YWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KKwogICAgIFdlYktpdFdl
YlZpZXcqIG1fd2ViVmlldzsKIH07CiAjZW5kaWYKQEAgLTIwODEsNiArMjA5MCwzNCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICAgICAgR0RLX1RZUEVfRVZFTlQgfCBHX1NJR05BTF9UWVBFX1NUQVRJ
Q19TQ09QRSwKICAgICAgICAgR0RLX1RZUEVfUkVDVEFOR0xFIHwgR19TSUdOQUxfVFlQRV9TVEFU
SUNfU0NPUEUpOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKKworICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6OnVzZXItbWVzc2FnZS1yZWNlaXZlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRo
ZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBA
bWVzc2FnZTogdGhlICNXZWJLaXRVc2VyTWVzc2FnZSByZWNlaXZlZAorICAgICAqCisgICAgICog
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgI1dlYktpdFVzZXJNZXNzYWdlIGlzIHJlY2Vp
dmVkIGZyb20gdGhlCisgICAgICogI1dlYktpdFdlYlBhZ2UgY29ycmVzcG9uZGluZyB0byBAd2Vi
X3ZpZXcuIFlvdSBjYW4gcmVwbHkgdG8gdGhlIG1lc3NhZ2UKKyAgICAgKiB1c2luZyB3ZWJraXRf
dXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKS4KKyAgICAgKgorICAgICAqIFlvdSBjYW4gaGFuZGxl
IHRoZSB1c2VyIG1lc3NhZ2UgYXN5bmNocm9ub3VzbHkgYnkgY2FsbGluZyBnX29iamVjdF9yZWYo
KSBvbgorICAgICAqIEBtZXNzYWdlIGFuZCByZXR1cm5pbmcgJVRSVUUuIElmIHRoZSBsYXN0IHJl
ZmVyZW5jZSBvZiBAbWVzc2FnZSBpcyByZW1vdmVkCisgICAgICogYW5kIHRoZSBtZXNzYWdlIGhh
cyBub3QgYmVlbiByZXBsaWVkIHRvLCB0aGUgb3BlcmF0aW9uIGluIHRoZSAjV2ViS2l0V2ViUGFn
ZSB3aWxsCisgICAgICogZmluaXNoIHdpdGggZXJyb3IgJVdFQktJVF9VU0VSX01FU1NBR0VfVU5I
QU5ETEVEX01FU1NBR0UuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgbWVz
c2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjI4CisgICAgICovCisgICAgc2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdID0g
Z19zaWduYWxfbmV3KAorICAgICAgICAidXNlci1tZXNzYWdlLXJlY2VpdmVkIiwKKyAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHVzZXJfbWVz
c2FnZV9yZWNlaXZlZCksCisgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxl
ZCwgbnVsbHB0ciwKKyAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX2dlbmVyaWMsCisgICAgICAg
IEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0yNTg2LDYgKzI2MjMsMTQgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3RGlkQ2hhbmdlUGFnZUlEKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAicGFnZS1pZCIpOwogfQogCit2b2lkIHdl
YmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
VXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdl
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5nIHJl
Zi4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVz
ZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZp
ZXcsIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNlck1lc3NhZ2UuZ2V0KCks
ICZyZXR1cm5WYWx1ZSk7Cit9CisKICNpZiBQTEFURk9STShXUEUpCiAvKioKICAqIHdlYmtpdF93
ZWJfdmlld19nZXRfYmFja2VuZDoKQEAgLTQyMjIsMyArNDI2Nyw3MCBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIHVucwogICAgICAgICB3ZWJWaWV3LT5wcml2LT5mcmFtZURpc3BsYXllZENhbGxiYWNr
cy5yZW1vdmVGaXJzdE1hdGNoaW5nKG1hdGNoRnVuY3Rpb24pOwogfQogI2VuZGlmIC8vIFBMQVRG
T1JNKFdQRSkKKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2U6
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRV
c2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxlOiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUg
b3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJs
ZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNh
dGlzZmllZCBvciAlTlVMTAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBw
YXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisgKgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dl
YktpdFdlYlBhZ2UgY29ycmVzcG9uZGluZyB0byBAd2ViX3ZpZXcuIElmIEBtZXNzYWdlIGlzIGZs
b2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJl
cGx5LCBvciB5b3Ugc2ltcGx5IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwg
YXMgQGNhbGxiYWNrLgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJh
Y2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdf
c2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKCkgdG8gZ2V0IHRoZSBtZXNzYWdlIHJlcGx5Lgor
ICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2Fn
ZV90b19wYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNz
YWdlLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxi
YWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNF
Ul9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAgIC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBj
YXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFk
b3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3
KTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIHBhZ2UuZW5zdXJlUnVubmluZ1Byb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKHdl
YmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNzYWdlKSksIHBhZ2Uud2ViUGFnZUlEKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0
YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNr
LCB1c2VyRGF0YSkpOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+
IGNvbXBsZXRpb25IYW5kbGVyID0gW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShVc2VyTWVzc2FnZSYm
IHJlcGx5TWVzc2FnZSkgeworICAgICAgICBzd2l0Y2ggKHJlcGx5TWVzc2FnZS50eXBlKSB7Cisg
ICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5cGU6Ok51bGw6CisgICAgICAgICAgICBnX3Rhc2tf
cmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNF
TExFRCwgXygiT3BlcmF0aW9uIHdhcyBjYW5jZWxsZWQiKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6TWVzc2FnZToKKyAgICAgICAgICAgIGdf
dGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBnX29iamVjdF9yZWZfc2luayh3ZWJraXRV
c2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKHJlcGx5TWVzc2FnZSkpKSwgc3RhdGljX2Nhc3Q8R0Rl
c3Ryb3lOb3RpZnk+KGdfb2JqZWN0X3VucmVmKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICBnX3Rhc2tfcmV0
dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBXRUJLSVRfVVNFUl9NRVNTQUdFX0VSUk9SLCByZXBs
eU1lc3NhZ2UuZXJyb3JDb2RlLCBfKCJNZXNzYWdlICVzIHdhcyBub3QgaGFuZGxlZCIpLCByZXBs
eU1lc3NhZ2UubmFtZS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9OworICAgIHBhZ2UuZW5zdXJlUnVubmluZ1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHkod2Vi
a2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwKKyAgICAgICAgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHBhZ2Uud2ViUGFnZUlEKCkudG9VSW50NjQoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaDoKKyAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBA
ZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAqCisg
KiBGaW5pc2ggYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dl
Yl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2FnZSB3aXRoIHRoZSByZXBseSBvciAlTlVMTCBpbiBj
YXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdl
KiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxw
dHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIHdl
YlZpZXcpLCBudWxscHRyKTsKKworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdfdGFz
a19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IDhjNDUwNTVjZTc4Li4zMzI2NDE0MjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNs
dWRlICJVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIK
ICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHREYXRhLmgi
CkBAIC0xMDEsMyArMTAyLDQgQEAgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1dGhlbnRpY2F0ZShX
ZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikKIGdib29sZWFuIHdl
YmtpdFdlYlZpZXdTY3JpcHREaWFsb2coV2ViS2l0V2ViVmlldyosIFdlYktpdFNjcmlwdERpYWxv
ZyopOwogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld0RpZENoYW5n
ZVBhZ2VJRChXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNl
ck1lc3NhZ2UoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lc3NhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lc3NhZ2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTE1ZWQ3NDNjMjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmgK
QEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NP
TVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18p
CisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0
bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0VXNlck1lc3NhZ2VfaAorI2RlZmluZSBXZWJL
aXRVc2VyTWVzc2FnZV9oCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQ
RV9VU0VSX01FU1NBR0UgICAgICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0
VXNlck1lc3NhZ2UpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG9iaikgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVT
U0FHRSkpCisjZGVmaW5lIFdFQktJVF9VU0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBX
ZWJLaXRVc2VyTWVzc2FnZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRV9D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9VU0VSX01FU1NBR0UpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJf
TUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2VDbGFzcykpCisKKyNkZWZpbmUgV0VCS0lUX1VTRVJf
TUVTU0FHRV9FUlJPUiB3ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICgpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2U7Cit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFzcyAgIFdlYktpdFVzZXJNZXNzYWdl
Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlIFdlYktpdFVz
ZXJNZXNzYWdlUHJpdmF0ZTsKKworLyoqCisgKiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yOgorICog
QFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0U6IFRoZSBtZXNzYWdlIHdhcyBu
b3QgaGFuZGxlZCBieSB0aGUgcmVjZWl2ZXIuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBk
ZW5vdGUgZXJyb3JzIGhhcHBlbmluZyB3aGVuIHNlbmRpbmcgdXNlciBtZXNzYWdlcy4KKyAqCisg
KiBTaW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9VU0VSX01FU1NB
R0VfVU5IQU5ETEVEX01FU1NBR0UKK30gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcjsKKworc3RydWN0
IF9XZWJLaXRVc2VyTWVzc2FnZSB7CisgICAgR0luaXRpYWxseVVub3duZWQgcGFyZW50OworCisg
ICAgV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRV
c2VyTWVzc2FnZUNsYXNzIHsKKyAgICBHSW5pdGlhbGx5VW5vd25lZENsYXNzIHBhcmVudF9jbGFz
czsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikg
KHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VC
S0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSAgICAgICAgICh2b2lk
KTsKKworV0VCS0lUX0FQSSBHUXVhcmsKK3dlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsg
ICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3Vz
ZXJfbWVzc2FnZV9uZXcgICAgICAgICAgICAgIChjb25zdCBjaGFyICAgICAgICAqbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgKnBh
cmFtZXRlcnMpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2Vy
X21lc3NhZ2VfbmV3X3dpdGhfZmRfbGlzdCAoY29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJh
bWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVW5peEZETGlz
dCAgICAgICAqZmRfbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgY2hhciAqCit3ZWJraXRfdXNl
cl9tZXNzYWdlX2dldF9uYW1lICAgICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsK
KworV0VCS0lUX0FQSSBHVmFyaWFudCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0
ZXJzICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBHVW5peEZE
TGlzdCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0ICAgICAgKFdlYktpdFVzZXJN
ZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9tZXNzYWdl
X3NlbmRfcmVwbHkgICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAqcmVwbHkpOwor
CitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggOTVjZTVhNWY0ZjAuLjRkYTljZTdkOTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TmV0d29y
a1Byb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5TWFuYWdl
ci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC0xNDMsMTcgKzE0NCwx
OCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHQgewogc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0
Q2xhc3MgewogICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7CiAKLSAgICB2b2lkICgqIGRvd25sb2Fk
X3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdERvd25sb2FkICAgICAgICAgICpkb3dubG9hZCk7Ci0gICAgdm9pZCAoKiBpbml0aWFs
aXplX3dlYl9leHRlbnNpb25zKSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpj
b250ZXh0KTsKLSAgICB2b2lkICgqIGluaXRpYWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25z
KSAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQpOwotICAgIHZvaWQgKCogYXV0b21h
dGlvbl9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAq
Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIHZvaWQgICAgICgqIGRv
d25sb2FkX3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAg
ICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAgICAqZG93bmxvYWQpOworICAgIHZvaWQg
ICAgICgqIGluaXRpYWxpemVfd2ViX2V4dGVuc2lvbnMpICAgICAgICAgICAoV2ViS2l0V2ViQ29u
dGV4dCAgICAgICAgKmNvbnRleHQpOworICAgIHZvaWQgICAgICgqIGluaXRpYWxpemVfbm90aWZp
Y2F0aW9uX3Blcm1pc3Npb25zKSAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQpOwor
ICAgIHZvaWQgICAgICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vz
c2lvbik7CisgICAgZ2Jvb2xlYW4gKCogdXNlcl9tZXNzYWdlX3JlY2VpdmVkKSAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAg
ICAgICptZXNzYWdlKTsKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwog
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMikgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQp
OwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpAQCAtMzE4LDYgKzMyMCwxMCBAQCB3ZWJraXRfd2Vi
X2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpc3QgICAgICAgICAg
ICAgICAgICAgICAgICAgKmFsbG93ZWRfb3JpZ2lucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpc3QgICAgICAgICAgICAgICAgICAgICAg
ICAgKmRpc2FsbG93ZWRfb3JpZ2lucyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9j
b250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucyAgIChXZWJLaXRXZWJDb250ZXh0
ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAgICAgKm1lc3Nh
Z2UpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggOGMyMTlhM2IwMDguLjRmZjY5NmI2MzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNl
ck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0V2ViUmVzb3VyY2UuaD4KQEAgLTI2OSw5ICsyNzAsMTAgQEAgc3RydWN0IF9XZWJLaXRXZWJW
aWV3Q2xhc3MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0T3B0aW9uTWVudSAgICAgICAgICAgICptZW51KTsKICAgICB2b2lkICAgICAgICgq
IHdlYl9wcm9jZXNzX3Rlcm1pbmF0ZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKTsKKyAgICBnYm9v
bGVhbiAgICgqIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICAgKm1lc3NhZ2UpOwogCiAg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7Ci0gICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQxKSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCkBAIC01NTIsNiArNTU0
LDE4IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9z
dGF0ZSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlICpzdGF0ZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAgICpt
ZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNh
bGxiYWNrICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0
YSk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3dlYl92aWV3X3Nl
bmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaCAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAg
ICAgICAgICAgICAgICAgKiplcnJvcik7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4w
LXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNTY2YjhjNmM2NTcuLjU4NTZjYzQ0NzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTcwLDYgKzcwLDcgQEAgd2Via2l0
X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAogd2Via2l0X3dlYl9j
b250ZXh0X2dldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3Nf
bW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNz
aW9ucword2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucwog
CiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNr
CkBAIC0yNzcsNiArMjc4LDggQEAgd2Via2l0X3dlYl92aWV3X2dldF9lZGl0b3Jfc3RhdGUKIHdl
YmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVf
c2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlCit3ZWJraXRf
d2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3Nh
Z2VfdG9fcGFnZV9maW5pc2gKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4K
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTE1MzgsNiArMTU0MSw4IEBAIFdlYktpdFdlYkV4
dGVuc2lvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uCiBXZWJLaXRXZWJF
eHRlbnNpb25Jbml0aWFsaXplV2l0aFVzZXJEYXRhRnVuY3Rpb24KIHdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF9wYWdlCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4
dAord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHRfZmluaXNoCiAK
IDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MKQEAgLTE1NjIs
NiArMTU2Nyw4IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRf
dXJpCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUKIHdlYmtpdF93ZWJfcGFnZV9nZXRf
ZWRpdG9yCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcKK3dlYmtpdF93ZWJf
cGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2gKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+
CiBXZWJLaXRXZWJQYWdlQ2xhc3MKQEAgLTE3MzgsMyArMTc0NSwzMiBAQCB3ZWJraXRfcHJpbnRf
Y3VzdG9tX3dpZGdldF9nZXRfdHlwZQogPEZJTEU+V2ViS2l0VVJJVXRpbGl0aWVzPC9GSUxFPgog
d2Via2l0X3VyaV9mb3JfZGlzcGxheQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldl
YktpdFVzZXJNZXNzYWdlPC9GSUxFPgorV2ViS2l0VXNlck1lc3NhZ2UKK3dlYmtpdF91c2VyX21l
c3NhZ2VfbmV3Cit3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QKK3dlYmtpdF91
c2VyX21lc3NhZ2VfZ2V0X25hbWUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMK
K3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QKK3dlYmtpdF91c2VyX21lc3NhZ2Vfc2Vu
ZF9yZXBseQorCis8U1VCU0VDVElPTiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yPgorV0VCS0lUX1VT
RVJfTUVTU0FHRV9FUlJPUgorV2ViS2l0VXNlck1lc3NhZ2VFcnJvcgord2Via2l0X3VzZXJfbWVz
c2FnZV9lcnJvcl9xdWFyaworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFVzZXJNZXNz
YWdlQ2xhc3MKK1dFQktJVF9UWVBFX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRQor
V0VCS0lUX0lTX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lU
X0lTX1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKKwor
PFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQord2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfdHlwZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IGM0
NTMxMWRkZmJmLi41ZGFhYjA4NmU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNjMsNiArNjMs
NyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi54
bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIu
eG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVzZXJNZXNzYWdlLnhtbCIv
PgogICA8L2NoYXB0ZXI+CiAKICAgPGNoYXB0ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oCmluZGV4IGYzZWRjY2UxZWQ4Li4xNmVmN2ViNmQ0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTc5LDYgKzc5LDcgQEAKICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJJbnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvQVBJVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9BUElWaWV3Q2xpZW50LmgKaW5kZXggMDU4OWJiMTM4NWIuLmIxM2RhNmQwZjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApAQCAtMjUs
NiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVzZXJNZXNzYWdlLmgiCisj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisKIHR5cGVkZWYgc3RydWN0IE9wYXF1
ZUpTQ29udGV4dCogSlNHbG9iYWxDb250ZXh0UmVmOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTQ2LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJl
cXVlc3QoV0tXUEU6OlZpZXcmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFN0YXJ0TG9hZChXS1dQRTo6VmlldyYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VQYWdlSUQoV0tXUEU6OlZpZXcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVVzZXJNZXNzYWdlKFdLV1BFOjpWaWV3JiwgV2ViS2l0OjpVc2VyTWVzc2FnZSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpVc2VyTWVzc2FnZSgpKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGM4YjRlNzlkMTc2Li4yMTcxMDliMzRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTQyNSw0ICs0MjUsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFu
Z2VXZWJQYWdlSUQoKSBjb25zdAogICAgIG1fdmlldy5kaWRDaGFuZ2VQYWdlSUQoKTsKIH0KIAor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiBt
ZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIG1fdmlldy5kaWRSZWNlaXZlVXNlck1lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVu
dEltcGwuaAppbmRleCA4N2I3YmI5MjIzNy4uZmIzOGIxOTZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTQyLDYgKzQyLDcg
QEAgZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsKK3N0cnVjdCBVc2Vy
TWVzc2FnZTsKIAogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIApAQCAtNjAsNiArNjEs
OCBAQCBwdWJsaWM6CiAgICAgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKCk7CiAjZW5kaWYKIAorICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik7CisKIHByaXZhdGU6CiAgICAgLy8gUGFnZUNsaWVu
dAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJl
YVByb3h5KFdlYlByb2Nlc3NQcm94eSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggMGI5ZmFhMDY2ZTEuLmUwZjVhNzg5NGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKQEAgLTIxMCw2
ICsyMTAsMTEgQEAgdm9pZCBWaWV3OjpkaWRDaGFuZ2VQYWdlSUQoKQogICAgIG1fY2xpZW50LT5k
aWRDaGFuZ2VQYWdlSUQoKnRoaXMpOwogfQogCit2b2lkIFZpZXc6OmRpZFJlY2VpdmVVc2VyTWVz
c2FnZShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1l
c3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVVc2VyTWVzc2FnZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiB2b2lkIFZpZXc6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSkKIHsKICAgICBtX3NpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dQRVZpZXcuaAppbmRleCA5YmM2YjlmMTlhYy4uMTRlYjM4NTMyMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCkBAIC00OSw2ICs0OSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOworc3RydWN0IFVzZXJNZXNzYWdlOwogfQogCiBuYW1l
c3BhY2UgV0tXUEUgewpAQCAtNjgsNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVE
b3dubG9hZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jik7CiAgICAgdm9pZCB3aWxsU3Rh
cnRMb2FkKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQYWdlSUQoKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVVc2VyTWVzc2FnZShXZWJLaXQ6OlVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpVc2VyTWVzc2FnZSYmKT4mJik7CiAKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94
eSYgcGFnZSgpIHsgcmV0dXJuICptX3BhZ2VQcm94eTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxZmY5OWNlYTExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAh
ZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCisjZXJy
b3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRp
ZgorCisjaWZuZGVmIFdlYktpdFVzZXJNZXNzYWdlX2gKKyNkZWZpbmUgV2ViS2l0VXNlck1lc3Nh
Z2VfaAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVz
Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0Ug
ICAgICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJL
SVRfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NB
U1QoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2UpKQor
I2RlZmluZSBXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSkpCisjZGVmaW5l
IFdFQktJVF9VU0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBXZWJLaXRVc2VyTWVzc2Fn
ZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRV9DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0Up
KQorI2RlZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lO
U1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0
VXNlck1lc3NhZ2VDbGFzcykpCisKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUiB3
ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICgpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRVc2VyTWVzc2FnZSAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2U7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0VXNlck1lc3NhZ2VDbGFzcyAgIFdlYktpdFVzZXJNZXNzYWdlQ2xhc3M7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0
ZTsKKworLyoqCisgKiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yOgorICogQFdFQktJVF9VU0VSX01F
U1NBR0VfVU5IQU5ETEVEX01FU1NBR0U6IFRoZSBtZXNzYWdlIHdhcyBub3QgaGFuZGxlZCBieSB0
aGUgcmVjZWl2ZXIuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhh
cHBlbmluZyB3aGVuIHNlbmRpbmcgdXNlciBtZXNzYWdlcy4KKyAqCisgKiBTaW5jZTogMi4yOAor
ICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01F
U1NBR0UKK30gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcjsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVz
c2FnZSB7CisgICAgR0luaXRpYWxseVVub3duZWQgcGFyZW50OworCisgICAgV2ViS2l0VXNlck1l
c3NhZ2VQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZUNsYXNz
IHsKKyAgICBHSW5pdGlhbGx5VW5vd25lZENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQor
d2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQ
SSBHUXVhcmsKK3dlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsgICAgICAodm9pZCk7CisK
K1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3VzZXJfbWVzc2FnZV9uZXcg
ICAgICAgICAgICAgIChjb25zdCBjaGFyICAgICAgICAqbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgKnBhcmFtZXRlcnMpOworCitX
RUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3X3dp
dGhfZmRfbGlzdCAoY29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0ZXJzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVW5peEZETGlzdCAgICAgICAqZmRfbGlz
dCk7CisKK1dFQktJVF9BUEkgY29uc3QgY2hhciAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9u
YW1lICAgICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBH
VmFyaWFudCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzICAgKFdlYktpdFVz
ZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBHVW5peEZETGlzdCAqCit3ZWJraXRf
dXNlcl9tZXNzYWdlX2dldF9mZF9saXN0ICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdl
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkgICAg
ICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAqcmVwbHkpOworCitHX0VORF9ERUNMUwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJDb250ZXh0LmgKaW5kZXggZGViODg1YzE4NWEuLjk5ODYzZmQ1MGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncy5oPgog
I2luY2x1ZGUgPHdwZS9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5o
PgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaD4KIAogR19CRUdJTl9E
RUNMUwpAQCAtMTQzLDE3ICsxNDQsMTggQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0
cnVjdCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50Owog
Ci0gICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAgICAqZG93bmxvYWQp
OwotICAgIHZvaWQgKCogaW5pdGlhbGl6ZV93ZWJfZXh0ZW5zaW9ucykgICAgICAgICAgIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25v
dGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0
KTsKLSAgICB2b2lkICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9u
KTsKKyAgICB2b2lkICAgICAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RG93bmxvYWQgICAgICAgICAg
KmRvd25sb2FkKTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX3dlYl9leHRlbnNpb25zKSAg
ICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAg
ICAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRl
eHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBhdXRvbWF0aW9uX3N0YXJ0ZWQp
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIGdib29sZWFuICgqIHVzZXJfbWVzc2Fn
ZV9yZWNlaXZlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAqbWVzc2FnZSk7CiAKICAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lk
KTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKLSAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTMxNCw2
ICszMTYsMTAgQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90aWZpY2F0aW9uX3Bl
cm1pc3Npb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICphbGxvd2VkX29yaWdpbnMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaXN0
ICAgICAgICAgICAgICAgICAgICAgICAgICpkaXNhbGxvd2VkX29yaWdpbnMpOwogCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lv
bnMgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNz
YWdlICAgICAgICAgICAgICptZXNzYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDJh
NGE2MjA0MjM1Li45ZTVkM2Y0YzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDx3cGUv
V2ViS2l0U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3cGUvV2Vi
S2l0VXNlck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJW
aWV3QmFja2VuZC5oPgpAQCAtMjQxLDYgKzI0Miw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Ns
YXNzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXROb3RpZmljYXRpb24gICAgICAgICAgKm5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCAg
ICAgICAgICAgKCogd2ViX3Byb2Nlc3NfdGVybWluYXRlZCkgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVh
c29uKTsKKyAgICBnYm9vbGVhbiAgICAgICAoKiB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAg
ICAgICAgICAqbWVzc2FnZSk7CisKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZv
aWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwpAQCAtMjQ5LDcgKzI1
Myw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDQpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDUpICh2b2lkKTsK
ICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDYpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDcpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTUyNSw2ICs1
MjgsMTggQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRf
Y29sb3IgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0Q29sb3IgICAgICAgICAgICAgICAgICpjb2xvcik7CiAKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAg
ICAgICAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgICAqY2FuY2VsbGFibGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QXN5bmNSZWFkeUNhbGxiYWNrICAgICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAg
ICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dl
YmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2ggICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAg
ICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICoqZXJyb3IpOworCiBHX0VORF9E
RUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAwMTlmODRiYWUzNy4uNjc5MDNm
NWQ4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTQ3LDYgKzQ3LDcgQEAgd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAogd2Via2l0X3dlYl9jb250ZXh0
X2dldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwK
IHdlYmtpdF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucwor
d2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucwogCiA8U1VC
U0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrCkBAIC0y
NTEsNiArMjUyLDggQEAgd2Via2l0X3dlYl92aWV3X2FkZF9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJh
Y2sKIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrCiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IKIHdlYmtpdF93ZWJfdmlld19zZXRfYmFj
a2dyb3VuZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCit3ZWJr
aXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdl
YktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC01ODcsNiAr
NTkwLDM1IEBAIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZQogd2Via2l0X3VyaV9yZXNwb25zZV9n
ZXRfdHlwZQogPC9TRUNUSU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJNZXNzYWdl
PC9GSUxFPgorV2ViS2l0VXNlck1lc3NhZ2UKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3Cit3ZWJr
aXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X25hbWUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMKK3dlYmtpdF91c2VyX21l
c3NhZ2VfZ2V0X2ZkX2xpc3QKK3dlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseQorCis8U1VC
U0VDVElPTiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yPgorV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJP
UgorV2ViS2l0VXNlck1lc3NhZ2VFcnJvcgord2Via2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFy
aworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFVzZXJNZXNzYWdlQ2xhc3MKK1dFQktJ
VF9UWVBFX1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRQorV0VCS0lUX0lTX1VTRVJf
TUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lUX0lTX1VTRVJfTUVTU0FH
RV9DTEFTUworV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJp
dmF0ZT4KK1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRf
dHlwZQorPC9TRUNUSU9OPgorCiA8U0VDVElPTj4KIDxGSUxFPldlYktpdFdpbmRvd1Byb3BlcnRp
ZXM8L0ZJTEU+CiBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCmluZGV4IDY2NjE0ZDk3MzgzLi4y
ZmU3YjIwZWZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS1kb2NzLnNnbWwKQEAgLTU3LDYgKzU3LDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRDb2xvci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRVc2VyTWVzc2FnZS54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpAQCAtOTMs
NSArOTQsMTAgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMjYueG1s
Ij48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlk
PSJhcGktaW5kZXgtMi0yOCIgcm9sZT0iMi4yOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBz
eW1ib2xzIGluIDIuMjg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5k
ZXgtMi4yOC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgPC9pbmRleD4KKwog
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlvbi1nbG9zc2FyeS54bWwiPjx4aTpmYWxs
YmFjayAvPjwveGk6aW5jbHVkZT4KIDwvYm9vaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL3dlYmtpdC5oCmluZGV4IDQ4NTIzYjQ3ZDE3Li45Y2MzMWNiNDk2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVk
ZSA8d3BlL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29u
dGV4dC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4NDhmOTY4MzQ3Ni4uMGViZjcxYjZjMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMDEsNiArMzAxLDcgQEAg
c3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkRhdGE7CiBzdHJ1Y3Qg
V2ViUG9wdXBJdGVtOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOworc3RydWN0IFVz
ZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7CiBl
bnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwpAQCAtMTczNiw2ICsxNzM3LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0
b3RhbEJ5dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCByZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKKyNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJWaWV3
KFVzZXJNZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHko
VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMmQwYmZmOGMxMTQuLjMwNDNlY2U0ZTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzYsNCAr
NTc2LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogICAgIFNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNv
cmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbik7CiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNlbmRNZXNz
YWdlVG9XZWJWaWV3KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorICAg
IFNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdl
IHVzZXJNZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNzYWdl
KSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCA3OGJkYzA0N2ExZS4uZjllNjRlMDA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNTAxLDYgKzUwMSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFNhbmRib3hQYXRoKGNvbnN0IENTdHJpbmcmIHBhdGgsIFNhbmRib3hQZXJtaXNzaW9uIHBl
cm1pc3Npb24pIHsgbV9leHRyYVNhbmRib3hQYXRocy5hZGQocGF0aCwgcGVybWlzc2lvbik7IH07
CiAgICAgY29uc3QgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lvbj4mIHNhbmRib3hQ
YXRocygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFTYW5kYm94UGF0aHM7IH07CiAgICAgYm9vbCBz
YW5kYm94RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEVuYWJsZWQ7IH07CisKKyAg
ICB2b2lkIHNldFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKFVzZXJNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpPiYmIGhhbmRsZXIpIHsg
bV91c2VyTWVzc2FnZUhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOyB9CisgICAgY29uc3QgRnVu
Y3Rpb248dm9pZChVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNz
YWdlJiYpPiYmKT4mIHVzZXJNZXNzYWdlSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlck1l
c3NhZ2VIYW5kbGVyOyB9CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHNldFdlYlByb2Nlc3NIYXNV
cGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKQEAgLTc4MCw2ICs3ODMsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGJvb2wgbV9z
YW5kYm94RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVy
bWlzc2lvbj4gbV9leHRyYVNhbmRib3hQYXRoczsKKworICAgIEZ1bmN0aW9uPHZvaWQoVXNlck1l
c3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+IG1fdXNl
ck1lc3NhZ2VIYW5kbGVyOwogI2VuZGlmCiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IG1fcHJvY2Vzc2Vz
V2l0aFVwbG9hZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmlu
ZGV4IGE5NzM5OWU0ZTg3Li44YTQ3ZTgxM2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7
CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRh
U3RvcmU7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKK3N0cnVjdCBVc2VyTWVzc2FnZTsK
IHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTQyNSw2ICs0MjYsMTEg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWF5YmVTaHV0RG93bigpOwogCisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViQ29udGV4dChV
c2VyTWVzc2FnZSYmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5
KFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYp
OworI2VuZGlmCisKICAgICBlbnVtIGNsYXNzIElzV2VhayB7IE5vLCBZZXMgfTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrT3JTdHJvbmdQdHIgewogICAgIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBkMGFiOTQzNTUzMy4uZTExOWU2Y2I5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTc3LDQgKzc3LDkg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFBs
dWctaW4gbWVzc2FnZXMuCiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFN0
cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoKQogICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2
ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJfdCBoYXNoKQorCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXUEUpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoc3RydWN0IFdlYktpdDo6
VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRo
UmVwbHkoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpIC0+IChzdHJ1Y3Qg
V2ViS2l0OjpVc2VyTWVzc2FnZSByZXBseU1lc3NhZ2UpIEFzeW5jCisjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3Bw
CmluZGV4IDljYTFjNmIwYjJkLi4wYTg0YTc1OTBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAK
KyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5Lmg+CkBAIC01Niw0ICs1NywxNSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZv
cm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbAogICAg
IH0KIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0
aFJlcGx5KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2Vy
TWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoY29uc3QgYXV0byYg
dXNlck1lc3NhZ2VIYW5kbGVyID0gbV9wcm9jZXNzUG9vbC0+dXNlck1lc3NhZ2VIYW5kbGVyKCkp
CisgICAgICAgIHVzZXJNZXNzYWdlSGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2Fn
ZVRvV2ViQ29udGV4dChVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgc2VuZE1lc3NhZ2VU
b1dlYkNvbnRleHRXaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikg
eyB9KTsKK30KKwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKaW5kZXggMDg2N2Q5ODNlNWQuLjU0MGUzYmM2ODQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMjgsNyArMjgs
OSBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiAjaW5jbHVkZSAiUGFnZUNsaWVudElt
cGwuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0xNjYsNCArMTY4LDE5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93RW1vamlQaWNrZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y2FyZXRSZWN0LCBDb21wbGV0aW9uCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTaG93RW1vamlDaG9v
c2VyKFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSksIGNhcmV0UmVjdCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3Nh
Z2VUb1dlYlZpZXdXaXRoUmVwbHkoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlm
ICghV0VCS0lUX0lTX1dFQl9WSUVXKHZpZXdXaWRnZXQoKSkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoVXNlck1lc3NhZ2UobWVzc2FnZS5uYW1lLCBXRUJLSVRfVVNFUl9NRVNTQUdFX1VO
SEFORExFRF9NRVNTQUdFKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3ZWJraXRX
ZWJWaWV3RGlkUmVjZWl2ZVVzZXJNZXNzYWdlKFdFQktJVF9XRUJfVklFVyh2aWV3V2lkZ2V0KCkp
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmIG1lc3Nh
Z2UpCit7CisgICAgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdl
KSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCmluZGV4
IDkwMmVlNmY1MzNlLi42ZDFiN2M1ZjdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAKQEAgLTgyLDQgKzgyLDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3
V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChV
c2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzdGF0aWNfY2FzdDxQ
YWdlQ2xpZW50SW1wbCY+KHBhZ2VDbGllbnQoKSkuc2VuZE1lc3NhZ2VUb1dlYlZpZXcoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQorewor
ICAgIHNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVz
ZXJNZXNzYWdlJiYpIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dEV4dGVuc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmgKaW5kZXggOTg0YzNhOTQ3NTIu
LjhjOTk1NWQ3Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25N
YW5hZ2VyLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogCiAgICAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZCBpbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiwg
QVBJOjpPYmplY3QqKTsKIAorICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9leHRlbnNpb24uZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBXZWJLaXRF
eHRlbnNpb25NYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHAKaW5kZXggZjA1ZGU4ZTUxMjQuLjViMjNhNTFhNjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMjMsMTAgKzIzLDEzIEBACiAjaW5j
bHVkZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1l
c3NhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9HQ0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL1dURkdUeXBlLmg+CkBAIC0xMTEsNiArMTE0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogZW51bSB7CiAgICAgUEFHRV9DUkVBVEVELAorICAgIFVTRVJfTUVTU0FHRV9S
RUNFSVZFRCwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMTQ2LDYgKzE1MCwyOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9jbGFzc19pbml0KFdlYktpdFdlYkV4dGVuc2lv
bkNsYXNzKiBrbGFzcykKICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwK
ICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QQUdFKTsK
KworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkV4dGVuc2lvbjo6dXNlci1tZXNzYWdlLXJlY2Vp
dmVkOgorICAgICAqIEBleHRlbnNpb246IHRoZSAjV2ViS2l0V2ViRXh0ZW5zaW9uIG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBtZXNzYWdlOiB0aGUgI1dlYktpdFVzZXJN
ZXNzYWdlIHJlY2VpdmVkCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gYSAjV2ViS2l0VXNlck1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSB0aGUKKyAgICAgKiAjV2Vi
S2l0V2ViQ29udGV4dCBjb3JyZXNwb25kaW5nIHRvIEBleHRlbnNpb24uIE1lc3NhZ2VzIHNlbnQg
YnkgI1dlYktpdFdlYkNvbnRleHQKKyAgICAgKiBhcmUgYWx3YXlzIGJyb2FkY2FzdGVkIHRvIGFs
bCAjV2ViS2l0V2ViRXh0ZW5zaW9uPCEtLSAtLT5zIGFuZCB0aGV5IGNhbid0IGJlCisgICAgICog
cmVwbGllZC4gQ2FsbGluZyB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKSB3aWxsIGRv
IG5vdGhpbmcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIHNpZ25h
bHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInVzZXIt
bWVzc2FnZS1yZWNlaXZlZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAg
ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51
bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBHX1RZ
UEVfTk9ORSwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKTsKIH0KIAogY2xh
c3MgV2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Q2xpZW50IHsKQEAgLTIwMCw2ICsyMjYsMTMgQEAgV2ViS2l0V2ViRXh0
ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkK
ICAgICByZXR1cm4gZXh0ZW5zaW9uOwogfQogCit2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJl
Y2VpdmVVc2VyTWVzc2FnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgVXNlck1lc3Nh
Z2UmJiBtZXNzYWdlKQoreworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5nIHJlZi4KKyAgICBHUmVm
UHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3Jl
YXRlKFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CisgICAgZ19zaWdu
YWxfZW1pdChleHRlbnNpb24sIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNl
ck1lc3NhZ2UuZ2V0KCkpOworfQorCiB2b2lkIHdlYmtpdFdlYkV4dGVuc2lvblNldEdhcmJhZ2VD
b2xsZWN0T25QYWdlRGVzdHJveShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKIHsKICNp
ZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCkBAIC0yMjksMyArMjYyLDY4IEBAIFdlYktpdFdlYlBh
Z2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uLCBndWluCiAKICAgICByZXR1cm4gMDsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dDoKKyAqIEBleHRlbnNpb246IGEgI1dlYktp
dFdlYkV4dGVuc2lvbgorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKiBAY2Fu
Y2VsbGFibGU6IChudWxsYWJsZSk6IGEgI0dDYW5jZWxsYWJsZSBvciAlTlVMTCB0byBpZ25vcmUK
KyAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogKG51bGxhYmxlKTogQSAjR0FzeW5jUmVhZHlD
YWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVkIG9yICVOVUxMCisg
KiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVu
Y3Rpb24KKyAqCisgKiBTZW5kIEBtZXNzYWdlIHRvIHRoZSAjV2ViS2l0V2ViQ29udGV4dCBjb3Jy
ZXNwb25kaW5nIHRvIEBleHRlbnNpb24uIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNv
bnN1bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJlcGx5LCBvciB5b3Ugc2lt
cGx5IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwgYXMgQGNhbGJhY2suCisg
KiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxl
ZC4gWW91IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2Fn
ZV90b19jb250ZXh0X2ZpbmlzaCgpIHRvIGdldCB0aGUgbWVzc2FnZSByZXBseS4KKyAqCisgKiBT
aW5jZTogMi4yOAorICovCit2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90
b19jb250ZXh0KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRVc2VyTWVzc2Fn
ZSogbWVzc2FnZSwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFj
ayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pKTsKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworCisgICAgLy8gV2Ugc2luayB0aGUg
cmVmZXJlbmNlIGluIGNhc2Ugb2YgYmVpbmcgZmxvYXRpbmcuCisgICAgR1JlZlB0cjxXZWJLaXRV
c2VyTWVzc2FnZT4gYWRvcHRlZE1lc3NhZ2UgPSBtZXNzYWdlOworICAgIGlmICghY2FsbGJhY2sp
IHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTZW5kTWVzc2FnZVRvV2ViQ29u
dGV4dCh3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkpLCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190
YXNrX25ldyhleHRlbnNpb24sIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiBjb21wbGV0aW9uSGFuZGxl
ciA9IFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oVXNlck1lc3NhZ2UmJiByZXBseU1lc3NhZ2UpIHsK
KyAgICAgICAgc3dpdGNoIChyZXBseU1lc3NhZ2UudHlwZSkgeworICAgICAgICBjYXNlIFVzZXJN
ZXNzYWdlOjpUeXBlOjpOdWxsOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3Io
dGFzay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlv
biB3YXMgY2FuY2VsbGVkIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNl
ck1lc3NhZ2U6OlR5cGU6Ok1lc3NhZ2U6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50
ZXIodGFzay5nZXQoKSwgZ19vYmplY3RfcmVmX3Npbmsod2Via2l0VXNlck1lc3NhZ2VDcmVhdGUo
V1RGTW92ZShyZXBseU1lc3NhZ2UpKSksIHN0YXRpY19jYXN0PEdEZXN0cm95Tm90aWZ5PihnX29i
amVjdF91bnJlZikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlck1lc3Nh
Z2U6OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFz
ay5nZXQoKSwgV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUiwgcmVwbHlNZXNzYWdlLmVycm9yQ29k
ZSwgXygiTWVzc2FnZSAlcyB3YXMgbm90IGhhbmRsZWQiKSwgcmVwbHlNZXNzYWdlLm5hbWUuZGF0
YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRX
aXRoUmVwbHkod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3Nl
bmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaDoKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdl
YkV4dGVuc2lvbgorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVy
biBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAqCisgKiBGaW5pc2ggYW4g
YXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl9leHRlbnNpb25f
c2VuZF9tZXNzYWdlX3RvX2NvbnRleHQoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVs
bCk6IGEgI1dlYktpdFVzZXJNZXNzYWdlIHdpdGggdGhlIHJlcGx5IG9yICVOVUxMIGluIGNhc2Ug
b2YgZXJyb3IuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0VXNlck1lc3NhZ2UqIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaChXZWJLaXRX
ZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVy
cm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5TSU9O
KGV4dGVuc2lvbiksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19p
c192YWxpZChyZXN1bHQsIGV4dGVuc2lvbiksIG51bGxwdHIpOworCisgICAgcmV0dXJuIFdFQktJ
VF9VU0VSX01FU1NBR0UoZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKEdfVEFTSyhyZXN1bHQpLCBl
cnJvcikpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Q
cml2YXRlLmgKaW5kZXggZTI3MzlhOTBkMjQuLmI1NDM0MGZiYzFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0
ZW5zaW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgKQEAgLTIwLDcgKzIwLDkg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRl
ICJVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgogCiBXZWJL
aXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShXZWJLaXQ6OkluamVjdGVk
QnVuZGxlKik7Cit2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVVc2VyTWVzc2FnZShX
ZWJLaXRXZWJFeHRlbnNpb24qLCBXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpOwogdm9pZCB3ZWJraXRX
ZWJFeHRlbnNpb25TZXRHYXJiYWdlQ29sbGVjdE9uUGFnZURlc3Ryb3koV2ViS2l0V2ViRXh0ZW5z
aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggZjkxZDFiZTFm
ODguLjBjN2U3Zjc3NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBA
IC00MSwxMCArNDEsMTIgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVS
SVJlc3BvbnNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdlYkVkaXRvclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUHJvY2Vzc0VudW1UeXBlcy5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+
CkBAIC03MCw2ICs3Miw3IEBAIGVudW0gewogICAgIEZPUk1fQ09OVFJPTFNfQVNTT0NJQVRFRCwK
ICAgICBGT1JNX0NPTlRST0xTX0FTU09DSUFURURfRk9SX0ZSQU1FLAogICAgIFdJTExfU1VCTUlU
X0ZPUk0sCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAogCiAgICAgTEFTVF9TSUdOQUwKIH07
CkBAIC02NjcsNiArNjcwLDM0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9jbGFzc19p
bml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCiAgICAgICAgIFdFQktJVF9UWVBFX0ZSQU1F
LAogICAgICAgICBHX1RZUEVfUFRSX0FSUkFZLAogICAgICAgICBHX1RZUEVfUFRSX0FSUkFZKTsK
KworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlBhZ2U6OnVzZXItbWVzc2FnZS1yZWNlaXZlZDoK
KyAgICAgKiBAd2ViX3BhZ2U6IHRoZSAjV2ViS2l0V2ViUGFnZSBvbiB3aGljaCB0aGUgc2lnbmFs
IGlzIGVtaXR0ZWQKKyAgICAgKiBAbWVzc2FnZTogdGhlICNXZWJLaXRVc2VyTWVzc2FnZSByZWNl
aXZlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgI1dlYktp
dFVzZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gdGhlCisgICAgICogI1dlYktpdFdlYlZpZXcg
Y29ycmVzcG9uZGluZyB0byBAd2ViX3BhZ2UuIFlvdSBjYW4gcmVwbHkgdG8gdGhlIG1lc3NhZ2UK
KyAgICAgKiB1c2luZyB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKS4KKyAgICAgKgor
ICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoZSB1c2VyIG1lc3NhZ2UgYXN5bmNocm9ub3VzbHkgYnkg
Y2FsbGluZyBnX29iamVjdF9yZWYoKSBvbgorICAgICAqIEBtZXNzYWdlIGFuZCByZXR1cm5pbmcg
JVRSVUUuIElmIHRoZSBsYXN0IHJlZmVyZW5jZSBvZiBAbWVzc2FnZSBpcyByZW1vdmVkCisgICAg
ICogYW5kIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHJlcGxpZWQsIHRoZSBvcGVyYXRpb24gaW4gdGhl
ICNXZWJLaXRXZWJWaWV3IHdpbGwKKyAgICAgKiBmaW5pc2ggd2l0aCBlcnJvciAlV0VCS0lUX1VT
RVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRS4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVU
UlVFIGlmIHRoZSBtZXNzYWdlIHdhcyBoYW5kbGVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICAg
ICAqCisgICAgICogU2luY2U6IDIuMjgKKyAgICAgKi8KKyAgICBzaWduYWxzW1VTRVJfTUVTU0FH
RV9SRUNFSVZFRF0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJ1c2VyLW1lc3NhZ2UtcmVjZWl2
ZWQiLAorICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFM
X1JVTl9MQVNULAorICAgICAgICAwLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVl
X2hhbmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAor
ICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRVNT
QUdFKTsKIH0KIAogV2ViUGFnZSogd2Via2l0V2ViUGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSAq
d2ViUGFnZSkKQEAgLTczMyw2ICs3NjQsMTQgQEAgdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2
ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmEKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViUGFnZURpZFJl
Y2VpdmVVc2VyTWVzc2FnZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBVc2VyTWVzc2FnZSYmIG1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVmLgorICAgIEdSZWZQdHI8
V2ViS2l0VXNlck1lc3NhZ2U+IHVzZXJNZXNzYWdlID0gd2Via2l0VXNlck1lc3NhZ2VDcmVhdGUo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGdib29s
ZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViUGFnZSwgc2lnbmFsc1tVU0VS
X01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2FnZS5nZXQoKSwgJnJldHVyblZhbHVlKTsK
K30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudDoKICAqIEB3ZWJf
cGFnZTogYSAjV2ViS2l0V2ViUGFnZQpAQCAtODIyLDMgKzg2MSw2OCBAQCBXZWJLaXRXZWJFZGl0
b3IqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAK
ICAgICByZXR1cm4gd2ViUGFnZS0+cHJpdi0+d2ViRWRpdG9yLmdldCgpOwogfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldzoKKyAqIEB3ZWJfcGFnZTogYSAj
V2ViS2l0V2ViUGFnZQorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKiBAY2Fu
Y2VsbGFibGU6IChudWxsYWJsZSk6IGEgI0dDYW5jZWxsYWJsZSBvciAlTlVMTCB0byBpZ25vcmUK
KyAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogKG51bGxhYmxlKTogQSAjR0FzeW5jUmVhZHlD
YWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVkIG9yICVOVUxMCisg
KiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVu
Y3Rpb24KKyAqCisgKiBTZW5kIEBtZXNzYWdlIHRvIHRoZSAjV2ViS2l0V2ViVmlldyBjb3JyZXNw
b25kaW5nIHRvIEB3ZWJfcGFnZS4gSWYgQG1lc3NhZ2UgaXMgZmxvYXRpbmcsIGl0J3MgY29uc3Vt
ZWQuCisgKgorICogSWYgeW91IGRvbid0IGV4cGVjdCBhbnkgcmVwbHksIG9yIHlvdSBzaW1wbHkg
d2FudCB0byBpZ25vcmUgaXQsIHlvdSBjYW4gcGFzcyAlTlVMTCBhcyBAY2FsbGJhY2suCisgKiBX
aGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4g
WW91IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmll
d19maW5pc2goKSB0byBnZXQgdGhlIG1lc3NhZ2UgcmVwbHkuCisgKgorICogU2luY2U6IDIuMjgK
KyAqLwordm9pZCB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcoV2ViS2l0V2Vi
UGFnZSogd2ViUGFnZSwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIEdDYW5jZWxsYWJsZSog
Y2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJE
YXRhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2Up
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkp
OworCisgICAgLy8gV2Ugc2luayB0aGUgcmVmZXJlbmNlIGluIGNhc2Ugb2YgYmVpbmcgZmxvYXRp
bmcuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gYWRvcHRlZE1lc3NhZ2UgPSBtZXNz
YWdlOworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgd2ViUGFnZS0+cHJpdi0+d2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZW5kTWVzc2FnZVRvV2ViVmlldyh3ZWJr
aXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJQ
YWdlLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGFzayA9IFdU
Rk1vdmUodGFzayldKFVzZXJNZXNzYWdlJiYgcmVwbHlNZXNzYWdlKSB7CisgICAgICAgIHN3aXRj
aCAocmVwbHlNZXNzYWdlLnR5cGUpIHsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6
TnVsbDoKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIEdf
SU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVyYXRpb24gd2FzIGNhbmNlbGxl
ZCIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBl
OjpNZXNzYWdlOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCks
IGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUocmVwbHlN
ZXNzYWdlKSkpLCBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpFcnJv
cjoKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIFdFQktJ
VF9VU0VSX01FU1NBR0VfRVJST1IsIHJlcGx5TWVzc2FnZS5lcnJvckNvZGUsIF8oIk1lc3NhZ2Ug
JXMgd2FzIG5vdCBoYW5kbGVkIiksIHJlcGx5TWVzc2FnZS5uYW1lLmRhdGEoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH07CisgICAgd2ViUGFnZS0+cHJpdi0+d2ViUGFn
ZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlbmRNZXNzYWdl
VG9XZWJWaWV3V2l0aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNzYWdlKSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Bh
Z2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoOgorICogQHdlYl9wYWdlOiBhICNXZWJLaXRX
ZWJQYWdlCisgKiBAcmVzdWx0OiBhICNHQXN5bmNSZXN1bHQKKyAqIEBlcnJvcjogcmV0dXJuIGxv
Y2F0aW9uIGZvciBlcnJvciBvciAlTlVMTCB0byBpZ25vcgorICoKKyAqIEZpbmlzaCBhbiBhc3lu
Y2hyb25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNz
YWdlX3RvX3ZpZXcoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgI1dlYktp
dFVzZXJNZXNzYWdlIHdpdGggdGhlIHJlcGx5IG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCisg
KgorICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdF93ZWJfcGFn
ZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2goV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgbnVsbHB0cik7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwgd2ViUGFnZSksIG51bGxwdHIp
OworCisgICAgcmV0dXJuIFdFQktJVF9VU0VSX01FU1NBR0UoZ190YXNrX3Byb3BhZ2F0ZV9wb2lu
dGVyKEdfVEFTSyhyZXN1bHQpLCBlcnJvcikpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2VQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViUGFnZVByaXZhdGUuaAppbmRleCA4ZGNkNDJhOWRiYy4uMjQwNTE0ODNlZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0xNywxNSArMTcs
MTUgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgV2Vi
S2l0V2ViUGFnZVByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJVc2VyTWVz
c2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAKIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViS2l0OjpXZWJQYWdlKik7
CiB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpEaWN0aW9uYXJ5JiBtZXNzYWdlKTsKK3ZvaWQg
d2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2VyTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgV2ViS2l0
OjpVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3Nh
Z2UmJik+JiYpOwogV2ViS2l0OjpXZWJQYWdlKiB3ZWJraXRXZWJQYWdlR2V0UGFnZShXZWJLaXRX
ZWJQYWdlKik7CiAKLSNlbmRpZiAvLyBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRX
ZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IDM0MTM2YTM3ZDI1Li41NDIyZmU1N2Yx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03Niwx
MSArNzcsMjMgQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJL
SVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwog
CiBXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3Bh
Z2UgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAq
ZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0ICAgICAgICAoV2Vi
S2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNl
bGxhYmxlICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50
ZXIgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdl
ICoKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaCAo
V2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAqcmVzdWx0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJy
b3IgICAgICAgICAgICAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZS5oCmluZGV4IDBhNDg2ZGNiMjg1Li4zMTVhYzhiNmQ4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRGcmFtZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2Uu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtp
dGRvbS93ZWJraXRkb20uaD4KIApAQCAtNzQsMjIgKzc1LDM0IEBAIHN0cnVjdCBfV2ViS2l0V2Vi
UGFnZUNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfcGFnZV9nZXRf
dHlwZSAgICAgICAgICh2b2lkKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZSAgICAgICAgICAg
ICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdERPTURvY3VtZW50ICoKLXdlYmtp
dF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3
ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAgICAgICAgICAgIChXZWJLaXRXZWJQYWdl
ICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X3dlYl9wYWdlX2dldF9p
ZCAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9n
ZXRfaWQgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAog
V0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSAgICAgICAg
ICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF91cmkgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJ
IFdlYktpdEZyYW1lICoKLXdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSAgIChXZWJLaXRX
ZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUgICAgICAg
ICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
RWRpdG9yICoKLXdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yICAgICAgIChXZWJLaXRXZWJQYWdl
ICp3ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3ICAgICAgICAoV2ViS2l0V2ViUGFnZSAgICAgICp3
ZWJfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNr
IGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3BvaW50ZXIgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJN
ZXNzYWdlICoKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2ggKFdl
YktpdFdlYlBhZ2UgICAgICAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICoqZXJy
b3IpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRl
bnNpb24uaAppbmRleCAxYzk1ZjFkM2FlZC4uYmM0YjQyNDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0U2NyaXB0V29ybGQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVS
SVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0VmVyc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFeHRlbnNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2Vi
S2l0V2ViRXh0ZW5zaW9uLmgKaW5kZXggYTZmZmI0ODUwNDguLjA5YWVlMzhjZGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJL
aXRXZWJFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgor
I2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRX
ZWJQYWdlLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTc2LDExICs3NywyMyBAQCBzdHJ1Y3QgX1dl
YktpdFdlYkV4dGVuc2lvbkNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF90eXBlICh2b2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90
eXBlICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
UGFnZSAqCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAoV2ViS2l0V2ViRXh0ZW5zaW9u
ICpleHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAg
ICAgICAgICBwYWdlX2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAg
ICAgICAgcGFnZV9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25f
c2VuZF9tZXNzYWdlX3RvX2NvbnRleHQgICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVu
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0VXNlck1lc3NhZ2UgICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNhbmNlbGxh
YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgIHVzZXJfZGF0
YSk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3dlYl9leHRlbnNp
b25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHRfZmluaXNoIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4
dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICoqZXJyb3Ip
OwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJQYWdlLmgKaW5kZXggOTU1
ZjA4N2U0ZjcuLjE4NDFlNGFjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRGcmFtZS5oPgorI2luY2x1ZGUg
PHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJFZGl0b3Iu
aD4KICNpbmNsdWRlIDx3cGUvd2Via2l0ZG9tLmg+CiAKQEAgLTcyLDIyICs3MywzNSBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRf
d2ViX3BhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5
cGUgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRET01Eb2N1
bWVudCAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2ViUGFnZSAq
d2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgICAgICAgICAgICAo
V2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF93
ZWJfcGFnZV9nZXRfaWQgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3
ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3dlYl9wYWdlX2dl
dF91cmkgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFn
ZV9nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsK
IAogV0VCS0lUX0FQSSBXZWJLaXRGcmFtZSAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9tYWlu
X2ZyYW1lICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRf
QVBJIFdlYktpdFdlYkVkaXRvciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAgICAgICAo
V2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyAgICAgICAgKFdlYktpdFdl
YlBhZ2UgICAgICAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNhbmNlbGxh
YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3Zp
ZXdfZmluaXNoIChXZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICpyZXN1bHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAg
ICAgICAgICAqKmVycm9yKTsKKwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRl
bnNpb25zLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNpb25zLTEuMC1zZWN0aW9ucy50eHQK
aW5kZXggZTQ0ODI5NmQ5ZmEuLjVmZGE5NTgwZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNpb25z
LTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0CkBA
IC0xMyw2ICsxMyw4IEBAIFdlYktpdFdlYkV4dGVuc2lvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5p
dGlhbGl6ZUZ1bmN0aW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplV2l0aFVzZXJEYXRh
RnVuY3Rpb24KIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlCit3ZWJraXRfd2ViX2V4dGVu
c2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dAord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9t
ZXNzYWdlX3RvX2NvbnRleHRfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0
V2ViRXh0ZW5zaW9uQ2xhc3MKQEAgLTM3LDYgKzM5LDggQEAgd2Via2l0X3dlYl9wYWdlX2dldF9p
ZAogd2Via2l0X3dlYl9wYWdlX2dldF91cmkKIHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFt
ZQogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3Nh
Z2VfdG9fdmlldword2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaAog
CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlBhZ2VDbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdl
Yi1leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggNjllZmRkOTYzMzEuLmQ1ZDMzNTRm
MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0U2NyaXB0V29ybGQuaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRVUklSZXNwb25z
ZS5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXRXZWJFZGl0b3IuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdFdlYkhpdFRlc3RSZXN1bHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0NWVmZWE3Yzk2NC4uMjJiMzg3NTcyMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI2OCw2
ICsyNjgsOCBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1
Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7
CiBzdHJ1Y3QgUHJpbnRJbmZvOworc3RydWN0IFRleHRJbnB1dENvbnRleHQ7CitzdHJ1Y3QgVXNl
ck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOwogc3RydWN0IFdlYkF1dG9j
b3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAt
MTYzMCw2ICsxNjMyLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50U25hcHNob3RBdFNp
emUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFw
c2hvdE9wdGlvbnMsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQ
RSkKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3NhZ2UmJik7Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOworI2VuZGlmCisKICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMTUwNjQ4OTc4NGEuLmY2
YzAyNjQxMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU4MCw0ICs1ODAsOCBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogICAgIFN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQoc3RydWN0IFdlYkNvcmU6
OlN5c3RlbVByZXZpZXdJbmZvIHByZXZpZXdJbmZvLCBTdHJpbmcgbWVzc2FnZSkKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgU2VuZE1lc3NhZ2VUb1dl
YkV4dGVuc2lvbihzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkKKyAgICBT
ZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNz
YWdlIHVzZXJNZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNz
YWdlKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5iMDU5OGM2MjcwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIlVzZXJN
ZXNzYWdlLmgiCisjaW5jbHVkZSAiV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oIgorI2luY2x1ZGUg
IldlYktpdFVzZXJNZXNzYWdlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uLmgiCisj
aW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViUGFnZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShVc2VyTWVz
c2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogZXh0ZW5zaW9uID0gV2ViS2l0RXh0ZW5z
aW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuZXh0ZW5zaW9uKCk7CisgICAgaWYgKCFleHRlbnNpb24p
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoVXNlck1lc3NhZ2UobWVzc2FnZS5uYW1lLCBX
RUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Uo
ZXh0ZW5zaW9uLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKCFwYWdlKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNzYWdlKG1lc3NhZ2UubmFtZSwgV0VCS0lU
X1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2VyTWVzc2FnZShwYWdlLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7Cisg
ICAgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBb
XShVc2VyTWVzc2FnZSYmKSB7IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDc5OGQwODYxY2U2Li5kZDYwZThkODFl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMTcsNiArMTE3LDcg
QEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneTsKIGNsYXNzIFdlYlBh
Z2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKK3N0cnVjdCBVc2VyTWVzc2FnZTsKIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CkBAIC00NjUsNiArNDY2
LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JU
ZXN0aW5nKCk7CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3NhZ2UmJik7CisjZW5kaWYKKwogICAg
IFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdl
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAyNDc2YzQzOGJjMy4uYzdmM2UwYWQ4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNTcsNCArMTU3LDggQEAgbWVz
c2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBVbmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGUpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQorICAgIFNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oc3RydWN0IFdlYktpdDo6
VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAppbmRleCA5YjAwMzc0NGY5Yi4uMDA3
ZjA0NGQzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzR0xpYi5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAKKyNpbmNsdWRlICJXZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC05Nyw0
ICs5OSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdlJiYg
bWVzc2FnZSkKK3sKKyAgICBpZiAoYXV0byogZXh0ZW5zaW9uID0gV2ViS2l0RXh0ZW5zaW9uTWFu
YWdlcjo6c2luZ2xldG9uKCkuZXh0ZW5zaW9uKCkpCisgICAgICAgIHdlYmtpdFdlYkV4dGVuc2lv
bkRpZFJlY2VpdmVVc2VyTWVzc2FnZShleHRlbnNpb24sIFdURk1vdmUobWVzc2FnZSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0ZmVmNTIyZjE2MS4uYmZlMjdhNzFiMmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAor
MjAxOS0xMC0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS11bV1BFXSBBZGQgdXNlciBtZXNzYWdlcyBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjg0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8gY2hlY2sgdGhl
IG5ldyBBUEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0Ojp3ZWJWaWV3VXNl
ck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVzdDo6d2Vi
Q29udGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChVc2VyTWVzc2Fn
ZVRlc3Q6OlVzZXJNZXNzYWdlVGVzdCk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6On5Vc2Vy
TWVzc2FnZVRlc3QpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpzZW5kTWVzc2FnZSk6Cisg
ICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6OnNlbmRNZWRzc2FnZVRvQWxsRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6OnZpZXdVc2VyTWVzc2FnZVJlY2VpdmVkKToKKyAgICAg
ICAgKFVzZXJNZXNzYWdlVGVzdDo6Y29udGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWQpOgorICAgICAg
ICAoVXNlck1lc3NhZ2VUZXN0Ojp3YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVkKToKKyAgICAg
ICAgKFVzZXJNZXNzYWdlVGVzdDo6d2FpdFVudGlsQ29udGV4dE1lc3NhZ2VSZWNlaXZlZCk6Cisg
ICAgICAgIChyZWFkRmlsZURlc2NyaXRwb3IpOgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvblVz
ZXJNZXNzYWdlcyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKGRvY3Vt
ZW50TG9hZGVkQ2FsbGJhY2spOgorICAgICAgICAocGFnZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNr
KToKKyAgICAgICAgKHBhZ2VDcmVhdGVkQ2FsbGJhY2spOgorICAgICAgICAoZXh0ZW5zaW9uTWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25faW5p
dGlhbGl6ZV93aXRoX3VzZXJfZGF0YSk6CisKIDIwMTktMTAtMTUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQ2hlY2sgd2Ug
ZG9uJ3QgbGVhayB0aGUgV2ViS2l0V2ViQ29udGV4dCBpbiBhbGwgdGVzdHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lv
bnMuY3BwCmluZGV4IDI0ZTEzNjdjYTdhLi42OTk0NGRlODQ0MiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJX
ZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KIAogc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gc2NyaXB0RGlhbG9n
UmVzdWx0OwpAQCAtNTM3LDYgKzUzOCwyNjMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lv
blBhZ2VJRChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBjaGVja1RpdGxl
KHRlc3QsIHByb3h5LmdldCgpLCAiVGl0bGU2Iik7CiB9CiAKK2NsYXNzIFVzZXJNZXNzYWdlVGVz
dCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShVc2VyTWVzc2FnZVRlc3QpOworCisgICAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdVc2Vy
TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJNZXNzYWdl
KiBtZXNzYWdlLCBVc2VyTWVzc2FnZVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICByZXR1cm4g
dGVzdC0+dmlld1VzZXJNZXNzYWdlUmVjZWl2ZWQobWVzc2FnZSk7CisgICAgfQorCisgICAgc3Rh
dGljIGdib29sZWFuIHdlYkNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0
V2ViQ29udGV4dCosIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlLCBVc2VyTWVzc2FnZVRlc3Qq
IHRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gdGVzdC0+Y29udGV4dFVzZXJNZXNzYWdlUmVj
ZWl2ZWQobWVzc2FnZSk7CisgICAgfQorCisgICAgVXNlck1lc3NhZ2VUZXN0KCkKKyAgICB7Cisg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAidXNlci1tZXNzYWdl
LXJlY2VpdmVkIiwgR19DQUxMQkFDSyh3ZWJDb250ZXh0VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxi
YWNrKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAidXNlci1t
ZXNzYWdlLXJlY2VpdmVkIiwgR19DQUxMQkFDSyh3ZWJWaWV3VXNlck1lc3NhZ2VSZWNlaXZlZENh
bGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgflVzZXJNZXNzYWdlVGVzdCgpCisgICAgewor
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJDb250ZXh0
LmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlz
KTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fd2ViVmll
dywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7Cisg
ICAgfQorCisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIHNlbmRNZXNzYWdlKFdlYktpdFVzZXJNZXNz
YWdlKiBtZXNzYWdlLCBHRXJyb3IqKiBlcnJvciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBh
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsK
KyAgICAgICAgbV9yZWNlaXZlZFZpZXdNZXNzYWdlID0gbnVsbHB0cjsKKyAgICAgICAgd2Via2l0
X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKG1fd2ViVmlldywgbWVzc2FnZSwgbnVsbHB0
ciwgW10oR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkg
eworICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFVzZXJNZXNzYWdlVGVzdCo+
KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIHRlc3QtPm1fcmVjZWl2ZWRWaWV3TWVzc2FnZSA9IGFk
b3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKHRlc3Qt
Pm1fd2ViVmlldywgcmVzdWx0LCAmdGVzdC0+bV9yZWNlaXZlZEVycm9yLm91dFB0cigpKSk7Cisg
ICAgICAgICAgICBpZiAodGVzdC0+bV9yZWNlaXZlZFZpZXdNZXNzYWdlKQorICAgICAgICAgICAg
ICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
dGVzdC0+bV9yZWNlaXZlZFZpZXdNZXNzYWdlLmdldCgpKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0LT5tX3JlY2VpdmVkRXJyb3IuZ2V0
KCkpOworICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgICAgIH0sIHRoaXMp
OworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgICplcnJvciA9IG1fcmVjZWl2ZWRFcnJvci5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIG1fcmVjZWl2ZWRWaWV3TWVzc2FnZS5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
bmRNZWRzc2FnZVRvQWxsRXh0ZW5zaW9ucyhXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKKyAg
ICB7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QobWVzc2FnZSkpOworICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3Rv
X2FsbF9leHRlbnNpb25zKG1fd2ViQ29udGV4dC5nZXQoKSwgbWVzc2FnZSk7CisgICAgfQorCisg
ICAgYm9vbCB2aWV3VXNlck1lc3NhZ2VSZWNlaXZlZChXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2Fn
ZSkKKyAgICB7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QobWVzc2FnZSkpOworICAgICAgICBpZiAoIWdfc3RyY21wMChtX2V4cGVjdGVkVmll
d01lc3NhZ2VOYW1lLmRhdGEoKSwgd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdl
KSkpIHsKKyAgICAgICAgICAgIG1fcmVjZWl2ZWRWaWV3TWVzc2FnZSA9IG1lc3NhZ2U7CisgICAg
ICAgICAgICBxdWl0TWFpbkxvb3AoKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBjb250ZXh0
VXNlck1lc3NhZ2VSZWNlaXZlZChXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2FnZSkKKyAgICB7Cisg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobWVz
c2FnZSkpOworICAgICAgICBpZiAoIWdfc3RyY21wMChtX2V4cGVjdGVkQ29udGV4dE1lc3NhZ2VO
YW1lLmRhdGEoKSwgd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSkpIHsKKyAg
ICAgICAgICAgIG1fcmVjZWl2ZWRDb250ZXh0TWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgICAgICAg
ICBxdWl0TWFpbkxvb3AoKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgV2ViS2l0VXNlck1lc3NhZ2Uq
IHdhaXRVbnRpbFZpZXdNZXNzYWdlUmVjZWl2ZWQoY29uc3QgY2hhciogbWVzc2FnZU5hbWUpCisg
ICAgeworICAgICAgICBtX2V4cGVjdGVkVmlld01lc3NhZ2VOYW1lID0gbWVzc2FnZU5hbWU7Cisg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgbV9leHBlY3RlZFZp
ZXdNZXNzYWdlTmFtZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcmVjZWl2ZWRWaWV3TWVzc2Fn
ZS5nZXQoKTsKKyAgICB9CisKKyAgICBXZWJLaXRVc2VyTWVzc2FnZSogd2FpdFVudGlsQ29udGV4
dE1lc3NhZ2VSZWNlaXZlZChjb25zdCBjaGFyKiBtZXNzYWdlTmFtZSkKKyAgICB7CisgICAgICAg
IG1fZXhwZWN0ZWRDb250ZXh0TWVzc2FnZU5hbWUgPSBtZXNzYWdlTmFtZTsKKyAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICBtX2V4cGVjdGVkQ29udGV4dE1lc3Nh
Z2VOYW1lID0geyB9OworICAgICAgICByZXR1cm4gbV9yZWNlaXZlZENvbnRleHRNZXNzYWdlLmdl
dCgpOworICAgIH0KKworICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IG1fcmVjZWl2ZWRW
aWV3TWVzc2FnZTsKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBtX3JlY2VpdmVkQ29u
dGV4dE1lc3NhZ2U7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IG1fcmVjZWl2ZWRFcnJvcjsK
KyAgICBDU3RyaW5nIG1fZXhwZWN0ZWRWaWV3TWVzc2FnZU5hbWU7CisgICAgQ1N0cmluZyBtX2V4
cGVjdGVkQ29udGV4dE1lc3NhZ2VOYW1lOworfTsKKworc3RhdGljIGJvb2wgcmVhZEZpbGVEZXNj
cml0cG9yKGludCBmZCwgY2hhcioqIGNvbnRlbnRzLCBnc2l6ZSogbGVuZ3RoKQoreworICAgIEdT
dHJpbmcqIGJ1ZmZlclN0cmluZyA9IGdfc3RyaW5nX25ldyhudWxscHRyKTsKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICBnY2hhciBidWZmZXJbNDA5Nl07CisgICAgICAgIGdzc2l6ZSBieXRl
c1JlYWQgPSByZWFkKGZkLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgaWYgKGJ5
dGVzUmVhZCA9PSAtMSkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFV09VTERCTE9DSykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgZ19zdHJpbmdfZnJlZShidWZmZXJTdHJpbmcsIFRSVUUpOworCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWJ5dGVzUmVhZCkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9sZW4oYnVmZmVyU3RyaW5nLCBi
dWZmZXIsIGJ5dGVzUmVhZCk7CisgICAgfQorCisgICAgKmxlbmd0aCA9IGJ1ZmZlclN0cmluZy0+
bGVuOworICAgICpjb250ZW50cyA9IGdfc3RyaW5nX2ZyZWUoYnVmZmVyU3RyaW5nLCBGQUxTRSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvblVz
ZXJNZXNzYWdlcyhVc2VyTWVzc2FnZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
Ly8gTm9ybWFsIG1lc3NhZ2Ugd2l0aCBhIHJlcGx5LgorICAgIGF1dG8qIG1lc3NhZ2UgPSB3ZWJr
aXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5IZWxsbyIsIGdfdmFyaWFudF9uZXcoInMiLCAiV2Vi
UHJvY2VzcyIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRf
bmFtZShtZXNzYWdlKSwgPT0sICJUZXN0LkhlbGxvIik7CisgICAgYXV0byogcGFyYW1ldGVycyA9
IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICBjb25zdCBjaGFyKiBwYXJhbWV0ZXIgPSBudWxs
cHRyOworICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIiZzIiwgJnBhcmFtZXRlcik7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlciwgPT0sICJXZWJQcm9jZXNzIik7CisgICAgZ19h
c3NlcnRfbnVsbCh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0KG1lc3NhZ2UpKTsKKyAg
ICBhdXRvKiByZXBseSA9IHRlc3QtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShyZXBseSkpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKHJlcGx5KSwgPT0sICJUZXN0LkhlbGxvIik7
CisgICAgcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMocmVw
bHkpOworICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7CisgICAgcGFyYW1ldGVyID0g
bnVsbHB0cjsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICImcyIsICZwYXJhbWV0ZXIp
OworICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIsID09LCAiVUlQcm9jZXNzIik7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0KHJlcGx5KSk7CisK
KyAgICAvLyBNZXNzYWdlIHdpdGggbm8gcGFyYW1ldGVycy4KKyAgICBtZXNzYWdlID0gd2Via2l0
X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuUGluZyIsIG51bGxwdHIpOworICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKSk7CisgICAgcmVw
bHkgPSB0ZXN0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBseSksID09LCAiVGVzdC5Qb25nIik7CisgICAgZ19hc3Nl
cnRfbnVsbCh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKHJlcGx5KSk7CisKKyAg
ICAvLyBNZXNzYWdlIHdpdGggbWF5YmUgdHlwZSBpbiBwYXJhbWV0ZXJzLgorICAgIG1lc3NhZ2Ug
PSB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5PcHRpb25hbCIsIGdfdmFyaWFudF9uZXco
IihzbXMpIiwgIkhlbGxvIiwgIldvcmxkIikpOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3Nh
Z2UobWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJl
cGx5KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUo
cmVwbHkpLCA9PSwgIlRlc3QuT3B0aW9uYWwiKTsKKyAgICBwYXJhbWV0ZXJzID0gd2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChw
YXJhbWV0ZXJzKTsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICImcyIsICZwYXJhbWV0
ZXIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIsID09LCAiV29ybGQiKTsKKyAgICBt
ZXNzYWdlID0gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuT3B0aW9uYWwiLCBnX3Zhcmlh
bnRfbmV3KCIoc21zKSIsICJIZWxsbyIsIG51bGxwdHIpKTsKKyAgICByZXBseSA9IHRlc3QtPnNl
bmRNZXNzYWdlKG1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJfTUVT
U0FHRShyZXBseSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9uYW1lKHJlcGx5KSwgPT0sICJUZXN0Lk9wdGlvbmFsIik7CisgICAgcGFyYW1ldGVycyA9IHdl
YmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMocmVwbHkpOworICAgIGdfYXNzZXJ0X25v
bm51bGwocGFyYW1ldGVycyk7CisgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiJnMiLCAm
cGFyYW1ldGVyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocGFyYW1ldGVyLCA9PSwgIk5VTEwiKTsK
KworICAgIC8vIE1lc3NhZ2Ugd2l0aCBmaWxlIGRlc2NyaXB0b3JzLgorICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoKS5k
YXRhKCksICJzaW1wbGUuanNvbiIsIG51bGxwdHIpKTsKKyAgICByZXBseSA9IHRlc3QtPnNlbmRN
ZXNzYWdlKHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0Lk9wZW5GaWxlIiwgZ192YXJpYW50
X25ldygicyIsIGZpbGVuYW1lLmdldCgpKSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lT
X1VTRVJfTUVTU0FHRShyZXBseSkpOworICAgIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNz
YWdlX2dldF9wYXJhbWV0ZXJzKHJlcGx5KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBhcmFtZXRl
cnMpOworICAgIGdpbnQzMiBoYW5kbGU7CisgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAi
aCIsICZoYW5kbGUpOworICAgIGdfYXNzZXJ0X2NtcGludChoYW5kbGUsID09LCAwKTsKKyAgICBh
dXRvKiBmZExpc3QgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9mZF9saXN0KHJlcGx5KTsKKyAg
ICBnX2Fzc2VydF90cnVlKEdfSVNfVU5JWF9GRF9MSVNUKGZkTGlzdCkpOworICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZmRMaXN0KSk7Cisg
ICAgZ19hc3NlcnRfY21waW50KGdfdW5peF9mZF9saXN0X2dldF9sZW5ndGgoZmRMaXN0KSwgPT0s
IDEpOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBpbnQgZmQgPSBnX3Vu
aXhfZmRfbGlzdF9nZXQoZmRMaXN0LCBoYW5kbGUsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19h
c3NlcnRfY21waW50KGZkLCAhPSwgLTEpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKKyAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGZkQ29udGVudHM7CisgICAgZ3NpemUgZmRD
b250ZW50c0xlbmd0aDsKKyAgICBnX2Fzc2VydF90cnVlKHJlYWRGaWxlRGVzY3JpdHBvcihmZCwg
JmZkQ29udGVudHMub3V0UHRyKCksICZmZENvbnRlbnRzTGVuZ3RoKSk7CisgICAgY2xvc2UoZmQp
OworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZmlsZUNvbnRlbnRzOworICAgIGdzaXplIGZpbGVD
b250ZW50c0xlbmd0aDsKKyAgICBnX2Fzc2VydF90cnVlKGdfZmlsZV9nZXRfY29udGVudHMoZmls
ZW5hbWUuZ2V0KCksICZmaWxlQ29udGVudHMub3V0UHRyKCksICZmaWxlQ29udGVudHNMZW5ndGgs
IG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBtZW0oZmRDb250ZW50cy5nZXQoKSwgZmRDb250
ZW50c0xlbmd0aCwgZmlsZUNvbnRlbnRzLmdldCgpLCBmaWxlQ29udGVudHNMZW5ndGgpOworCisg
ICAgLy8gVW5oYW5kbGVkIG1lc3NhZ2UuCisgICAgR0Vycm9yKiBtZXNzYWdlRXJyb3IgPSBudWxs
cHRyOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3NhZ2Uod2Via2l0X3VzZXJfbWVzc2FnZV9u
ZXcoIlRlc3QuSW52YWxpZCIsIG51bGxwdHIpLCAmbWVzc2FnZUVycm9yKTsKKyAgICBnX2Fzc2Vy
dF9udWxsKHJlcGx5KTsKKyAgICBnX2Fzc2VydF9lcnJvcihtZXNzYWdlRXJyb3IsIFdFQktJVF9V
U0VSX01FU1NBR0VfRVJST1IsIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0Up
OworCisgICAgLy8gTWVzc2FnZSB0aGF0IGlzIG5ldmVyIHJlcGxpZWQuCisgICAgR1JlZlB0cjxX
ZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKFRlc3Q6OmNyZWF0ZVdlYlZp
ZXcodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgd2Via2l0X3dlYl92aWV3X3NlbmRf
bWVzc2FnZV90b19wYWdlKHdlYlZpZXcuZ2V0KCksIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJU
ZXN0LkluZmluaXRlIiwgbnVsbHB0ciksIG51bGxwdHIsCisgICAgICAgIFtdKEdPYmplY3QqIG9i
amVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAg
ICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8VXNlck1lc3NhZ2VUZXN0Kj4odXNlckRhdGEp
OworICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICAgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNo
KFdFQktJVF9XRUJfVklFVyhvYmplY3QpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAg
ICAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJS
T1JfQ0FOQ0VMTEVEKTsKKyAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAg
ICB9LCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisKKyAg
ICAvLyBXYWl0IGZvciByZWNlaXZlZCBtZXNzYWdlLgorICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRt
bD48Ym9keT48L2JvZHk+PC9odG1sPiIsIG51bGxwdHIpOworICAgIG1lc3NhZ2UgPSB0ZXN0LT53
YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVkKCJEb2N1bWVudExvYWRlZCIpOworICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiRG9jdW1l
bnRMb2FkZWQiKTsKKworICAgIC8vIFJlcGx5IHRvIGEgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRo
ZSB3ZWIgcHJvY2Vzcy4KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2Uo
dGVzdC0+bV93ZWJWaWV3LCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5Bc3luY1Bpbmci
LCBudWxscHRyKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgbWVzc2FnZSA9IHRl
c3QtPndhaXRVbnRpbFZpZXdNZXNzYWdlUmVjZWl2ZWQoIlRlc3QuUGluZyIpOworICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiVGVzdC5Q
aW5nIik7CisgICAgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KG1lc3NhZ2UsIHdlYmtp
dF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LlBvbmciLCBudWxscHRyKSk7CisgICAgbWVzc2FnZSA9
IHRlc3QtPndhaXRVbnRpbFZpZXdNZXNzYWdlUmVjZWl2ZWQoIlRlc3QuQXN5bmNQb25nIik7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSwgPT0s
ICJUZXN0LkFzeW5jUG9uZyIpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHBhZ2UgYW5kIHdhaXQg
Zm9yIHBhZ2UgY3JlYXRlZCBtZXNzYWdlLgorICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
VGVzdDo6Y3JlYXRlV2ViVmlldyh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9odG1sKHdlYlZpZXcuZ2V0KCksICI8aHRtbD48Ym9keT48L2JvZHk+
PC9odG1sPiIsIG51bGxwdHIpOworICAgIG1lc3NhZ2UgPSB0ZXN0LT53YWl0VW50aWxDb250ZXh0
TWVzc2FnZVJlY2VpdmVkKCJQYWdlQ3JlYXRlZCIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0lTX1VTRVJfTUVTU0FHRShtZXNzYWdlKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91
c2VyX21lc3NhZ2VfZ2V0X25hbWUobWVzc2FnZSksID09LCAiUGFnZUNyZWF0ZWQiKTsKKyAgICBw
YXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKHBhcmFtZXRlcnMpOworICAgIGd1aW50NjQgcGFnZUlEOwor
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIih0KSIsICZwYWdlSUQpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQocGFnZUlELCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHdlYlZp
ZXcuZ2V0KCkpKTsKKworICAgIC8vIFJlcXVlc3QgdG8gc3RhcnQgYSBwaW5nIHRvIGFsbCBwcm9j
ZXNzZXMuCisgICAgdGVzdC0+c2VuZE1lZHNzYWdlVG9BbGxFeHRlbnNpb25zKHdlYmtpdF91c2Vy
X21lc3NhZ2VfbmV3KCJUZXN0LlJlcXVlc3RQaW5nIiwgbnVsbHB0cikpOworICAgIC8vIFdlIHNo
b3VsZCByZWNlaXZlZCB0d28gcGluZyByZXF1ZXN0cy4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJN
ZXNzYWdlPiBwaW5nMSA9IHRlc3QtPndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoIlBp
bmciKTsKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBwaW5nMiA9IHRlc3QtPndhaXRV
bnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoIlBpbmciKTsKKyAgICB3ZWJraXRfdXNlcl9tZXNz
YWdlX3NlbmRfcmVwbHkocGluZzEuZ2V0KCksIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQb25n
IiwgbnVsbHB0cikpOworICAgIHRlc3QtPndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQo
IlRlc3QuRmluaXNoZWRQaW5nUmVxdWVzdCIpOworICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2Vu
ZF9yZXBseShwaW5nMi5nZXQoKSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlBvbmciLCBudWxs
cHRyKSk7CisgICAgdGVzdC0+d2FpdFVudGlsQ29udGV4dE1lc3NhZ2VSZWNlaXZlZCgiVGVzdC5G
aW5pc2hlZFBpbmdSZXF1ZXN0Iik7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9tLWRvY3VtZW50LXRpdGxlIiwg
dGVzdFdlYkV4dGVuc2lvbkdldFRpdGxlKTsKQEAgLTU1Myw2ICs4MTEsNyBAQCB2b2lkIGJlZm9y
ZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImZvcm0t
Y29udHJvbHMtYXNzb2NpYXRlZC1zaWduYWwiLCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xz
QXNzb2NpYXRlZCk7CiAgICAgRm9ybVN1Ym1pc3Npb25UZXN0OjphZGQoIldlYktpdFdlYkV4dGVu
c2lvbiIsICJmb3JtLXN1Ym1pc3Npb24tc3RlcHMiLCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybVN1Ym1p
c3Npb25TdGVwcyk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwg
InBhZ2UtaWQiLCB0ZXN0V2ViRXh0ZW5zaW9uUGFnZUlEKTsKKyAgICBVc2VyTWVzc2FnZVRlc3Q6
OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgInVzZXItbWVzc2FnZXMiLCB0ZXN0V2ViRXh0ZW5z
aW9uVXNlck1lc3NhZ2VzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAK
aW5kZXggYjNiOWM4YmZmZWEuLjZkMmE0ODYwNGIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0y
MSw3ICsyMSwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNS
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNp
bmNsdWRlIDxnaW8vZ3VuaXhmZGxpc3QuaD4KKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2lm
IFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2VuZGlmCkBAIC0xNjIsNiAr
MTY1LDggQEAgc3RhdGljIHZvaWQgZG9jdW1lbnRMb2FkZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdl
KiB3ZWJQYWdlLCBXZWJLaXRXZWJFeHRlbnNpb24qIGUKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9E
RVBSRUNBVElPTlM7CiAjZW5kaWYKIAorICAgIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2Vf
dG9fdmlldyh3ZWJQYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiRG9jdW1lbnRMb2FkZWQi
LCBudWxscHRyKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKICAgICBncG9pbnRlciBk
YXRhID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoZXh0ZW5zaW9uKSwgImRidXMtY29ubmVj
dGlvbiIpOwogICAgIGlmIChkYXRhKQogICAgICAgICBlbWl0RG9jdW1lbnRMb2FkZWQoR19EQlVT
X0NPTk5FQ1RJT04oZGF0YSkpOwpAQCAtNDE2LDYgKzQyMSw3NSBAQCBzdGF0aWMgdm9pZCB3aWxs
U3VibWl0Rm9ybUNhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdERPTUVsZW1l
bnQqIGZvcgogICAgIH0KIH0KIAorc3RhdGljIGdib29sZWFuIHBhZ2VNZXNzYWdlUmVjZWl2ZWRD
YWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJLaXRVc2VyTWVzc2FnZSogbWVzc2Fn
ZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgY29uc3QgY2hhciogbWVz
c2FnZU5hbWUgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpOworICAgIGlm
ICghZ19zdHJjbXAwKG1lc3NhZ2VOYW1lLCAiVGVzdC5IZWxsbyIpKSB7CisgICAgICAgIGF1dG8q
IHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKG1lc3NhZ2Up
OworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHBhcmFtZXRlcnMpOworICAgICAgICBjb25zdCBj
aGFyKiBwYXJhbWV0ZXIgPSBudWxscHRyOworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRl
cnMsICImcyIsICZwYXJhbWV0ZXIpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIocGFyYW1ldGVy
LCA9PSwgIldlYlByb2Nlc3MiKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9mZF9saXN0KG1lc3NhZ2UpKTsKKyAgICAgICAgd2Via2l0X3VzZXJfbWVzc2Fn
ZV9zZW5kX3JlcGx5KG1lc3NhZ2UsIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkhlbGxv
IiwgZ192YXJpYW50X25ldygicyIsICJVSVByb2Nlc3MiKSkpOworICAgICAgICByZXR1cm4gVFJV
RTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3QuT3B0aW9u
YWwiKSkgeworICAgICAgICBhdXRvKiBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0
ZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcGFyYW1ldGVyMSA9IG51bGxwdHI7CisgICAgICAg
IGNvbnN0IGNoYXIqIHBhcmFtZXRlcjIgPSBudWxscHRyOworICAgICAgICBnX3ZhcmlhbnRfZ2V0
KHBhcmFtZXRlcnMsICIoJnNtJnMpIiwgJnBhcmFtZXRlcjEsICZwYXJhbWV0ZXIyKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlcjEsID09LCAiSGVsbG8iKTsKKyAgICAgICAgd2Vi
a2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KG1lc3NhZ2UsIHdlYmtpdF91c2VyX21lc3NhZ2Vf
bmV3KCJUZXN0Lk9wdGlvbmFsIiwgZ192YXJpYW50X25ldygicyIsIHBhcmFtZXRlcjIgPyBwYXJh
bWV0ZXIyIDogIk5VTEwiKSkpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBp
ZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3QuUGluZyIpKSB7CisgICAgICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKSk7Cisg
ICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNl
cl9tZXNzYWdlX25ldygiVGVzdC5Qb25nIiwgbnVsbHB0cikpOworICAgICAgICByZXR1cm4gVFJV
RTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3QuT3BlbkZp
bGUiKSkgeworICAgICAgICBhdXRvKiBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0
ZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUgPSBudWxscHRyOworICAgICAgICBn
X3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICImcyIsICZmaWxlbmFtZSk7CisgICAgICAgIGludCBm
ZCA9IGdfb3BlbihmaWxlbmFtZSwgT19SRE9OTFksIDApOworICAgICAgICBnX2Fzc2VydF9jbXBp
bnQoZmQsICE9LCAtMSk7CisgICAgICAgIEdSZWZQdHI8R1VuaXhGRExpc3Q+IGZkTGlzdCA9IGFk
b3B0R1JlZihnX3VuaXhfZmRfbGlzdF9uZXcoKSk7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICAgICAgZ191bml4X2ZkX2xpc3RfYXBwZW5kKGZkTGlzdC5nZXQoKSwg
ZmQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKKyAgICAgICAgY2xvc2UoZmQpOworCisgICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vf
c2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3Qo
IlRlc3QuT3BlbkZpbGUiLCBnX3ZhcmlhbnRfbmV3KCJoIiwgMCksIGZkTGlzdC5nZXQoKSkpOwor
ICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdl
TmFtZSwgIlRlc3QuSW5maW5pdGUiKSkgeworICAgICAgICBhYm9ydCgpOworICAgICAgICByZXR1
cm4gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3Qu
QXN5bmNQaW5nIikpIHsKKyAgICAgICAgd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192
aWV3KHdlYlBhZ2UsIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LlBpbmciLCBudWxscHRy
KSwgbnVsbHB0ciwKKyAgICAgICAgICAgIFtdKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGdwb2ludGVyKSB7CisgICAgICAgICAgICAgICAgYXV0byogd2ViUGFnZSA9IFdF
QktJVF9XRUJfUEFHRShvYmplY3QpOworICAgICAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICAgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBy
ZXBseSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmlu
aXNoKHdlYlBhZ2UsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgICAgICAgICAgICAg
Z19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKHJlcGx5LmdldCgpKSwgPT0sICJU
ZXN0LlBvbmciKTsKKyAgICAgICAgICAgICAgICB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdl
X3RvX3ZpZXcod2ViUGFnZSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuQXN5bmNQb25n
IiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgfSwg
bnVsbHB0cik7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHJldHVybiBGQUxT
RTsKK30KKwogc3RhdGljIHZvaWQgZW1pdFBhZ2VDcmVhdGVkKEdEQnVzQ29ubmVjdGlvbiogY29u
bmVjdGlvbiwgZ3VpbnQ2NCBwYWdlSUQpCiB7CiAgICAgYm9vbCBvayA9IGdfZGJ1c19jb25uZWN0
aW9uX2VtaXRfc2lnbmFsKApAQCAtNDM2LDYgKzUxMCw5IEBAIHN0YXRpYyB2b2lkIHBhZ2VDcmVh
dGVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2Uq
IHdlCiAgICAgZWxzZQogICAgICAgICBkZWxheWVkU2lnbmFsc1F1ZXVlLmFwcGVuZChEZWxheWVk
U2lnbmFsKFBhZ2VDcmVhdGVkU2lnbmFsLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkKHdlYlBhZ2Up
KSk7CiAKKyAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dChl
eHRlbnNpb24sIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQYWdlQ3JlYXRlZCIsIGdfdmFyaWFu
dF9uZXcoIih0KSIsIHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQod2ViUGFnZSkpKSwKKyAgICAgICAg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBh
Z2UsICJkb2N1bWVudC1sb2FkZWQiLCBHX0NBTExCQUNLKGRvY3VtZW50TG9hZGVkQ2FsbGJhY2sp
LCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgIm5vdGlmeTo6dXJp
IiwgR19DQUxMQkFDSyh1cmlDaGFuZ2VkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2ViUGFnZSwgInNlbmQtcmVxdWVzdCIsIEdfQ0FMTEJBQ0soc2VuZFJlcXVl
c3RDYWxsYmFjayksIG51bGxwdHIpOwpAQCAtNDQzLDYgKzUyMCwyNiBAQCBzdGF0aWMgdm9pZCBw
YWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRX
ZWJQYWdlKiB3ZQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImNvbnRleHQtbWVudSIs
IEdfQ0FMTEJBQ0soY29udGV4dE1lbnVDYWxsYmFjayksIG51bGxwdHIpOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViUGFnZSwgImZvcm0tY29udHJvbHMtYXNzb2NpYXRlZC1mb3ItZnJhbWUiLCBH
X0NBTExCQUNLKGZvcm1Db250cm9sc0Fzc29jaWF0ZWRGb3JGcmFtZUNhbGxiYWNrKSwgZXh0ZW5z
aW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJ3aWxsLXN1Ym1pdC1mb3JtIiwg
R19DQUxMQkFDSyh3aWxsU3VibWl0Rm9ybUNhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlBhZ2UsICJ1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQiLCBHX0NBTExCQUNL
KHBhZ2VNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIGV4dGVuc2lvbik7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiBleHRlbnNpb25NZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNp
b24qIGV4dGVuc2lvbiwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgY29uc3Qg
Y2hhciogbWVzc2FnZU5hbWUgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2Up
OworICAgIGlmIChnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJSZXF1ZXN0UGluZyIpKSB7CisgICAg
ICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0KGV4dGVuc2lv
biwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlBpbmciLCBudWxscHRyKSwgbnVsbHB0ciwKKyAg
ICAgICAgICAgIFtdKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2lu
dGVyKSB7CisgICAgICAgICAgICAgICAgYXV0byogZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRF
TlNJT04ob2JqZWN0KTsKKyAgICAgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gcmVwbHkgPSBh
ZG9wdEdSZWYod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHRfZmlu
aXNoKGV4dGVuc2lvbiwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgICAgICAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUocmVwbHkuZ2V0KCkpLCA9PSwg
IlBvbmciKTsKKyAgICAgICAgICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3Nh
Z2VfdG9fY29udGV4dChleHRlbnNpb24sIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkZp
bmlzaGVkUGluZ1JlcXVlc3QiLCBudWxscHRyKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7
CisgICAgICAgICAgICB9LCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQor
CisgICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgY2hhciogZWNob0NhbGxiYWNrKGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCkBAIC02MTQsNiArNzExLDcgQEAgZXh0ZXJuICJDIiB2b2lkIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEoV2ViS2l0V2ViRXh0ZW5z
aW8KICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfbmFtZShpc29s
YXRlZFdvcmxkKSwgPT0sICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKTsKICAgICBnX29i
amVjdF9zZXRfZGF0YV9mdWxsKEdfT0JKRUNUKGV4dGVuc2lvbiksICJ3ay1zY3JpcHQtd29ybGQi
LCBpc29sYXRlZFdvcmxkLCBnX29iamVjdF91bnJlZik7CiAKKyAgICBnX3NpZ25hbF9jb25uZWN0
KGV4dGVuc2lvbiwgInVzZXItbWVzc2FnZS1yZWNlaXZlZCIsIEdfQ0FMTEJBQ0soZXh0ZW5zaW9u
TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
KGV4dGVuc2lvbiwgInBhZ2UtY3JlYXRlZCIsIEdfQ0FMTEJBQ0socGFnZUNyZWF0ZWRDYWxsYmFj
ayksIGV4dGVuc2lvbik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJraXRfc2NyaXB0X3dvcmxk
X2dldF9kZWZhdWx0KCksICJ3aW5kb3ctb2JqZWN0LWNsZWFyZWQiLCBHX0NBTExCQUNLKHdpbmRv
d09iamVjdENsZWFyZWQpLCBudWxscHRyKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380987</attachid>
            <date>2019-10-15 08:20:37 -0700</date>
            <delta_ts>2019-10-15 15:17:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-user-messages.diff</filename>
            <type>text/plain</type>
            <size>138078</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDJjM2RlNWRlNTdm
Li5lNzc5ZjdhZmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3Bv
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBP
VEZJTEVTLmluOiBBZGQgbmV3IGZpbGVzIGNvbnRhaW5pbmcgdHJhbnNsYXRhYmxlIHN0cmluZ3Mu
CisKIDIwMTktMDktMDcgIENocmlzdGlhbiBLaXJiYWNoICA8Q2hyaXN0aWFuLktpcmJhY2hAZ29v
Z2xlbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlZCBHZXJtYW4gdHJhbnNsYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRleCBiNTRkMjFkMzY3Mi4u
NGNlYmQ5NTk5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9Q
T1RGSUxFUy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMu
aW4KQEAgLTcsNiArNyw3IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCiAuLi8uLi8uLi9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorLi4vLi4vLi4vV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZS5jcHAKIC4uLy4uLy4uL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkVycm9yc1NvdXAuY3BwCkBAIC00
Myw0ICs0NCw1IEBAIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJLaXRJbnNwZWN0b3JXaW5kb3cuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogLi4vLi4vLi4vV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5jcHAKKy4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKIC4uLy4uLy4uL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkM2I1OWI5
NzJmLi5mMmIyZDQzYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMTktMTAtMTQg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdW1dQRV0gQWRkIHVzZXIgbWVzc2FnZXMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIG5ldmVyIGV4cG9zZWQgYW4gQVBJIHRvIHNl
bmQvcmVjZWl2ZSBtZXNzYWdlcyB0by9mcm9tIFdlYiBleHRlbnNpb25zLCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdXNlIHRoZWlyIG93bgorICAgICAgICBJUEMuIE5vdywgd2l0aCBQU09OIGVuYWJs
ZWQsIGl0J3MgYSBsb3QgbW9yZSBkaWZmaWN1bHQgdG8gaW1wbGVtZW50IHRoZSBjdXN0b20gSVBD
IG9uIHRoZSBhcHBsaWNhdGlvbiBzaWRlLAorICAgICAgICBiZWNhdXNlIGFwcGxpY2F0aW9ucyBu
ZWVkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHRoZSB3ZWIgcHJvY2Vzc2VzIGxhdW5jaGVkLCBhbmQg
dGhlIGNoYW5nZXMgb2Ygd2ViIHByb2Nlc3MgaW4gdGhlCisgICAgICAgIHdlYiB2aWV3IHRvIHNl
bmQgdGhlIG1lc3NhZ2VzIHRvIHRoZSByaWdodCBleHRlbnNpb24uIFRoYXQncyBhbHJlYWR5IGRv
bmUgaW50ZXJuYWxseSBieSBXZWJLaXQsIHNvIGl0IHdvdWxkIGJlCisgICAgICAgIGVhc2llciB0
byBwcm92aWRlIGEgc2ltcGxlIEFQSSBzbyB0aGF0IGFwcHMgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCB0aGUgd2ViIHByb2Nlc3MgYmVpbmcgdXNlZC4gVGhpcyBwYXRjaCBhZGRzCisgICAgICAg
IFdlYktpdFVzZXJNZXNzYWdlLCBhIHNpbXBsZSBtZXNzYWdlIEFQSSBjb25zaXN0aW5nIG9uIGEg
bWVzc2FnZSBuYW1lLCBwYXJhbWV0ZXJzIGFuZCBmaWxlIGRlc2NyaXB0b3JzLiBNZXNzYWdlcwor
ICAgICAgICBjYW4gYmUgc2VudCBmcm9tIGEgV2ViS2l0V2ViQ29udGV4dCB0byBhbGwgdGhlIFdl
YktpdFdlYkV4dGVuc2lvbnMsIG9yIGZyb20gYSBXZWJLaXRXZWJFeHRlbnNpb24gdG8gaXRzCisg
ICAgICAgIFdlYktpdFdlYkNvbnRleHQsIG9yIGZyb20gYSBXZWJLaXRXZWJWaWV3IHRvIGl0cyBX
ZWJLaXRXZWJQYWdlIChhbmQgdmljZSB2ZXJzYSkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFVzZXJN
ZXNzYWdlRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRVc2VyTWVzc2FnZUdldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3VzZXJfbWVzc2FnZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlQ3Jl
YXRlKToKKyAgICAgICAgKHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldyk6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX25l
d193aXRoX2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZSk6
CisgICAgICAgICh3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKToKKyAgICAgICAg
KHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QpOgorICAgICAgICAod2Via2l0X3VzZXJf
bWVzc2FnZV9zZW5kX3JlcGx5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lc3NhZ2VQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50
Q29kZXJzR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5o
OiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVzc2FnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lc3NhZ2U6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2dsaWIvVXNlck1l
c3NhZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlOjpVc2VyTWVzc2Fn
ZSk6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAg
ICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
Y29udGV4dF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21l
c3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAg
ICAoQVBJOjpWaWV3Q2xpZW50OjpkaWRSZWNlaXZlVXNlck1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OmRpZFJlY2VpdmVVc2VyTWVzc2FnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6ZXh0ZW5zaW9uIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlVXNlck1lc3Nh
Z2UpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHQpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRl
eHRfZmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2Vy
TWVzc2FnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcp
OgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJl
eHRlbnNpb25zLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kTWVzc2Fn
ZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vu
ZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24pOgorCiAyMDE5LTEwLTE1ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIEljb25EYXRhYmFzZSBpcyBub3QgdGhyZWFkIHNhZmUgeWV0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCBhYTc2NTViOWQ1Ny4uZGZlMWM1MjkyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMTA5LDYgKzEwOSw3IEBAIHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFE
RVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dEZpbHRlclN0b3JlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCkBAIC02OTQsMTIgKzY5NSwxNCBA
QCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5jcHAKICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKICAgICAgICAg
ICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3Bw
CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVz
c2FnZS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktp
dFVSSVJlcXVlc3QuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXNwb25zZS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICAgICAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0u
aAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRU
ZXN0UmVzdWx0LmgKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlck1lc3NhZ2UuaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaAogICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliLyouY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZQppbmRleCA4OTc3NDIxYmIxMC4uNzNmYjZhMWQ4N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZQpAQCAtMTM0LDYgKzEzNCw3IEBAIHNldChXUEVfQVBJX0lOU1RBTExFRF9IRUFE
RVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVu
dEZpbHRlclN0b3JlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlJlc291cmNlLmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi43NjAyNzlmYTc5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlLmNwcApAQCAtMCwwICsx
LDMwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIKKworI2luY2x1ZGUgIldl
YktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgor
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9OQU1FLAorICAgIFBS
T1BfUEFSQU1FVEVSUywKKyAgICBQUk9QX0ZEX0xJU1QKK307CisKKy8qKgorICogU0VDVElPTjog
V2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSB1c2VyIG1lc3NhZ2UK
KyAqIEBUaXRsZTogV2ViS2l0VXNlck1lc3NhZ2UKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYkNv
bnRleHQsICNXZWJLaXRXZWJWaWV3LCAjV2ViS2l0V2ViRXh0ZW5zaW9uLCAjV2ViS2l0V2ViUGFn
ZQorICoKKyAqIEEgV2ViS2l0VXNlck1lc3NhZ2UgaXMgYSBtZXNzYWdlIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFVJIHByb2Nlc3MKKyAqIGFuZCB3
ZWIgZXh0ZW5zaW9ucy4gQSBXZWJLaXRVc2VyTWVzc2FnZSBhbHdheXMgaGFzIGEgbmFtZSwgYW5k
IGl0IGNhbiBhbHNvIGluY2x1ZGUgcGFyYW1ldGVycyBhbmQKKyAqIFVOSVggZmlsZSBkZXNjcmlw
dG9ycy4gTWVzc2FnZXMgY2FuIGJlIHNlbnQgZnJvbSBhICNXZWJLaXRXZWJDb250ZXh0IHRvIGFs
bCAjV2ViS2l0V2ViRXh0ZW5zaW9uPCEtLSAtLT5zLAorICogZnJvbSBhICNXZWJLaXRXZWJFeHRl
bnNpb24gdG8gaXRzIGNvcnJlc3BvbmRpbmcgI1dlYktpdFdlYkNvbnRleHQsIGFuZCBmcm9tIGEg
I1dlYktpdFdlYlZpZXcgdG8gaXRzCisgKiBjb3JyZXNwb25kaW5nICNXZWJLaXRXZWJQYWdlIChh
bmQgdmljZSB2ZXJzYSkuIE9uZSB0byBvbmUgbWVzc2FnZXMgY2FuIGJlIHJlcGxpZWQgdG8gZGly
ZWN0bHkgd2l0aAorICogd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5KCkuCisgKgorICog
U2luY2U6IDIuMjgKKyAqLworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUgeworICAg
IFVzZXJNZXNzYWdlIG1lc3NhZ2U7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVz
c2FnZSYmKT4gcmVwbHlIYW5kbGVyOworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFVz
ZXJNZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlLCBHX1RZUEVfSU5JVElBTExZX1VOT1dORUQp
CisKK0dfREVGSU5FX1FVQVJLKFdlYktpdFVzZXJNZXNzYWdlRXJyb3IsIHdlYmtpdF91c2VyX21l
c3NhZ2VfZXJyb3IpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZXNzYWdlRGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UgPSBXRUJLSVRf
VVNFUl9NRVNTQUdFKG9iamVjdCk7CisKKyAgICBpZiAoYXV0byByZXBseUhhbmRsZXIgPSBzdGQ6
OmV4Y2hhbmdlKG1lc3NhZ2UtPnByaXYtPnJlcGx5SGFuZGxlciwgbnVsbHB0cikpCisgICAgICAg
IHJlcGx5SGFuZGxlcihVc2VyTWVzc2FnZShtZXNzYWdlLT5wcml2LT5tZXNzYWdlLm5hbWUsIFdF
QktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UpKTsKKworICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF91c2VyX21lc3NhZ2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVzc2FnZUdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMp
Cit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UgPSBXRUJLSVRfVVNFUl9NRVNTQUdF
KG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9OQU1FOgor
ICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X25hbWUobWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFSQU1FVEVS
UzoKKyAgICAgICAgZ192YWx1ZV9zZXRfdmFyaWFudCh2YWx1ZSwgd2Via2l0X3VzZXJfbWVzc2Fn
ZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9GRF9MSVNUOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF91c2Vy
X21lc3NhZ2VfZ2V0X2ZkX2xpc3QobWVzc2FnZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVz
c2FnZVNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0VXNlck1lc3Nh
Z2UqIG1lc3NhZ2UgPSBXRUJLSVRfVVNFUl9NRVNTQUdFKG9iamVjdCk7CisKKyAgICBzd2l0Y2gg
KHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAgICBtZXNzYWdlLT5wcml2LT5t
ZXNzYWdlLm5hbWUgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworICAgICAgICBtZXNzYWdl
LT5wcml2LT5tZXNzYWdlLnR5cGUgPSBVc2VyTWVzc2FnZTo6VHlwZTo6TWVzc2FnZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBUkFNRVRFUlM6CisgICAgICAgIG1lc3NhZ2UtPnBy
aXYtPm1lc3NhZ2UucGFyYW1ldGVycyA9IGdfdmFsdWVfZ2V0X3ZhcmlhbnQodmFsdWUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRkRfTElTVDoKKyAgICAgICAgbWVzc2FnZS0+cHJp
di0+bWVzc2FnZS5maWxlRGVzY3JpcHRvcnMgPSBHX1VOSVhfRkRfTElTVChnX3ZhbHVlX2dldF9v
YmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMp
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJfbWVzc2FnZV9jbGFzc19pbml0
KFdlYktpdFVzZXJNZXNzYWdlQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgZ09iamVjdENsYXNzLT5k
aXNwb3NlID0gd2Via2l0VXNlck1lc3NhZ2VEaXNwb3NlOworICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0VXNlck1lc3NhZ2VHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xh
c3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFVzZXJNZXNzYWdlU2V0UHJvcGVydHk7CisKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRVc2VyTWVzc2FnZTpuYW1lOgorICAgICAqCisgICAgICogVGhlIG5h
bWUgb2YgdGhlIHVzZXIgbWVzc2FnZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVj
dENsYXNzLAorICAgICAgICBQUk9QX05BTUUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
CisgICAgICAgICAgICAibmFtZSIsCisgICAgICAgICAgICBfKCJOYW1lIiksCisgICAgICAgICAg
ICBfKCJUaGUgdXNlciBtZXNzYWdlIG5hbWUiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRVc2Vy
TWVzc2FnZTpwYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogVGhlIHBhcmFtZXRlcnMgb2YgdGhl
IHVzZXIgbWVzc2FnZSBhcyBhICNHVmFyaWFudCwgb3IgJU5VTEwKKyAgICAgKiBpZiB0aGUgbWVz
c2FnZSBkb2Vzbid0IGluY2x1ZGUgcGFyYW1ldGVycy4gTm90ZSB0aGF0IG9ubHkgY29tcGxldGUg
dHlwZXMgYXJlCisgICAgICogYWxsb3dlZC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX1BBUkFNRVRFUlMsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y192YXJpYW50KAorICAgICAgICAgICAgInBhcmFtZXRlcnMiLAorICAgICAgICAgICAgXygiUGFy
YW1ldGVycyIpLAorICAgICAgICAgICAgXygiVGhlIHVzZXIgbWVzc2FnZSBwYXJhbWV0ZXJzIiks
CisgICAgICAgICAgICBHX1ZBUklBTlRfVFlQRV9BTlksCisgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0
VXNlck1lc3NhZ2U6ZmQtbGlzdDoKKyAgICAgKgorICAgICAqIFRoZSBVTklYIGZpbGUgZGVzY3Jp
cHRvcnMgb2YgdGhlIHVzZXIgbWVzc2FnZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4Cisg
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09i
amVjdENsYXNzLAorICAgICAgICBQUk9QX0ZEX0xJU1QsCisgICAgICAgIGdfcGFyYW1fc3BlY19v
YmplY3QoCisgICAgICAgICAgICAiZmQtbGlzdCIsCisgICAgICAgICAgICBfKCJGaWxlIERlc2Ny
aXB0b3IgTGlzdCIpLAorICAgICAgICAgICAgXygiVGhlIHVzZXIgbWVzc2FnZSBsaXN0IG9mIGZp
bGUgZGVzY3JpcHRvcnMiKSwKKyAgICAgICAgICAgIEdfVFlQRV9VTklYX0ZEX0xJU1QsCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7Cit9CisKK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJr
aXRVc2VyTWVzc2FnZUNyZWF0ZShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgV2ViS2l0
VXNlck1lc3NhZ2UqIHJldHVyblZhbHVlID0gV0VCS0lUX1VTRVJfTUVTU0FHRShnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBudWxscHRyKSk7CisgICAgcmV0dXJuVmFsdWUt
PnByaXYtPm1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFVzZXJN
ZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4m
JiByZXBseUhhbmRsZXIpCit7CisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIHJldHVyblZhbHVlID0g
V0VCS0lUX1VTRVJfTUVTU0FHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdF
LCBudWxscHRyKSk7CisgICAgcmV0dXJuVmFsdWUtPnByaXYtPm1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpOworICAgIHJldHVyblZhbHVlLT5wcml2LT5yZXBseUhhbmRsZXIgPSBXVEZNb3ZlKHJl
cGx5SGFuZGxlcik7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitVc2VyTWVzc2FnZSYg
d2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQor
eworICAgIHJldHVybiBtZXNzYWdlLT5wcml2LT5tZXNzYWdlOworfQorCisvKioKKyAqIHdlYmtp
dF91c2VyX21lc3NhZ2VfbmV3OgorICogQG5hbWU6IHRoZSBtZXNzYWdlIG5hbWUKKyAqIEBwYXJh
bWV0ZXJzOiAobnVsbGFibGUpOiB0aGUgbWVzc2FnZSBwYXJhbWV0ZXJzIGFzIGEgI0dWYXJpYW50
LCBvciAlTlVMTAorICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0VXNlck1lc3NhZ2Ugd2l0aCBA
bmFtZS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0VXNlck1lc3Nh
Z2Ugb2JqZWN0LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdlKiB3
ZWJraXRfdXNlcl9tZXNzYWdlX25ldyhjb25zdCBjaGFyKiBuYW1lLCBHVmFyaWFudCogcGFyYW1l
dGVycykKK3sKKyAgICByZXR1cm4gd2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9saXN0
KG5hbWUsIHBhcmFtZXRlcnMsIG51bGxwdHIpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21l
c3NhZ2VfbmV3X3dpdGhfZmRfbGlzdDoKKyAqIEBuYW1lOiB0aGUgbWVzc2FnZSBuYW1lCisgKiBA
cGFyYW1ldGVyczogKG51bGxhYmxlKTogdGhlIG1lc3NhZ2UgcGFyYW1ldGVycyBhcyBhICNHVmFy
aWFudAorICogQGZkX2xpc3Q6IChudWxsYWJsZSk6IHRoZSBtZXNzYWdlIGZpbGUgZGVzY3JpcHRv
cnMKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdFVzZXJNZXNzYWdlIGluY2x1ZGluZyBhbHNv
IGEgbGlzdCBvZiBVTklYIGZpbGUgZGVzY3JpcHRvcnMgdG8gYmUgc2VudC4KKyAqCisgKiBSZXR1
cm5zOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0VXNlck1lc3NhZ2Ugb2JqZWN0LgorICoKKyAq
IFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJraXRfdXNlcl9tZXNzYWdl
X25ld193aXRoX2ZkX2xpc3QoY29uc3QgY2hhciogbmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMs
IEdVbml4RkRMaXN0KiBmZExpc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwg
bnVsbHB0cik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWZkTGlzdCB8fCBHX0lTX1VOSVhf
RkRfTElTVChmZExpc3QpLCBudWxscHRyKTsKKworICAgIHJldHVybiBXRUJLSVRfVVNFUl9NRVNT
QUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsICJuYW1lIiwgbmFtZSwg
InBhcmFtZXRlcnMiLCBwYXJhbWV0ZXJzLCAiZmQtbGlzdCIsIGZkTGlzdCwgbnVsbHB0cikpOwor
fQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWU6CisgKiBAbWVzc2FnZTog
YSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqCisgKiBHZXQgdGhlIEBtZXNzYWdlIG5hbWUKKyAqCisg
KiBSZXR1cm5zOiB0aGUgbWVzc2FnZSBuYW1lCisgKgorICogU2luY2U6IDIuMjgKKyAqLworY29u
c3QgY2hhciogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShXZWJLaXRVc2VyTWVzc2FnZSog
bWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNT
QUdFKG1lc3NhZ2UpLCBudWxscHRyKTsKKworICAgIHJldHVybiBtZXNzYWdlLT5wcml2LT5tZXNz
YWdlLm5hbWUuZGF0YSgpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3Bh
cmFtZXRlcnM6CisgKiBAbWVzc2FnZTogYSAjV2ViS2l0VXNlck1lc3NhZ2UKKyAqCisgKiBHZXQg
dGhlIEBtZXNzYWdlIHBhcmFtZXRlcnMKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IHRoZSBtZXNzYWdlIHBhcmFtZXRlcnMKKyAqCisgKiBTaW5jZTogMi4yOAorICovCitHVmFyaWFu
dCogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhXZWJLaXRVc2VyTWVzc2FnZSog
bWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNT
QUdFKG1lc3NhZ2UpLCBudWxscHRyKTsKKworICAgIHJldHVybiBtZXNzYWdlLT5wcml2LT5tZXNz
YWdlLnBhcmFtZXRlcnMuZ2V0KCk7Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfbWVzc2FnZV9n
ZXRfZmRfbGlzdDoKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICoKKyAqIEdl
dCB0aGUgQG1lc3NhZ2UgbGlzdCBvZiBmaWxlIGRlc2NyaXRwb3IKKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6IHRoZSBtZXNzYWdlIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycworICoK
KyAqIFNpbmNlOiAyLjI4CisgKi8KK0dVbml4RkRMaXN0KiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9mZF9saXN0KFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSksIG51bGxwdHIpOworCisg
ICAgcmV0dXJuIG1lc3NhZ2UtPnByaXYtPm1lc3NhZ2UuZmlsZURlc2NyaXB0b3JzLmdldCgpOwor
fQorCisvKioKKyAqIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseToKKyAqIEBtZXNzYWdl
OiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICogQHJlcGx5OiBhICNXZWJLaXRVc2VyTWVzc2FnZSB0
byBzZW5kIGFzIHJlcGx5CisgKgorICogU2VuZCBhIHJlcGx5IHRvIEBtZXNzYWdlLiBJZiBAcmVw
bHkgaXMgZmxvYXRpbmcsIGl0J3MgY29uc3VtZWQuCisgKiBZb3UgY2FuIG9ubHkgc2VuZCBhIHJl
cGx5IHRvIGEgI1dlYktpdFVzZXJNZXNzYWdlIHRoYXQgaGFzIGJlZW4KKyAqIHJlY2VpdmVkLgor
ICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3Jl
cGx5KFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlLCBXZWJLaXRVc2VyTWVzc2FnZSogcmVwbHkp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2Up
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKG1lc3NhZ2UtPnByaXYtPnJlcGx5SGFuZGxlcik7CisKKyAg
ICAvLyBXZSBzaW5rIHRoZSByZWZlcmVuY2UgaW4gY2FzZSBvZiBiZWluZyBmbG9hdGluZy4KKyAg
ICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiBhZG9wdGVkUmVwbHkgPSByZXBseTsKKyAgICBp
ZiAoYXV0byByZXBseUhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1lc3NhZ2UtPnByaXYtPnJlcGx5
SGFuZGxlciwgbnVsbHB0cikpCisgICAgICAgIHJlcGx5SGFuZGxlcihyZXBseSA/IHJlcGx5LT5w
cml2LT5tZXNzYWdlIDogVXNlck1lc3NhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iY2VhYTAxZGU4MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlUHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUg
IldlYktpdFVzZXJNZXNzYWdlLmgiCisKK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJraXRVc2VyTWVz
c2FnZUNyZWF0ZShXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpOworV2ViS2l0VXNlck1lc3NhZ2UqIHdl
YmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmKTsKK1dlYktpdDo6VXNlck1lc3Nh
Z2UmIHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShXZWJLaXRVc2VyTWVzc2FnZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYWQzNmQ5NzAyMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNw
cApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
c0dMaWIuaCIKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxnbGliLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgR1ZhcmlhbnQqIHZhcmlhbnQpCit7CisgICAgaWYg
KCF2YXJpYW50KSB7CisgICAgICAgIGVuY29kZXIgPDwgQ1N0cmluZygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZW5jb2RlciA8PCBDU3RyaW5nKGdfdmFyaWFudF9nZXRfdHlwZV9z
dHJpbmcodmFyaWFudCkpOworICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZ192YXJpYW50X2dldF9kYXRhKHZhcmlhbnQpKSwgZ192YXJpYW50
X2dldF9zaXplKHZhcmlhbnQpKTsKK30KKworT3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIENTdHJpbmcgdmFyaWFudFR5cGVTdHJpbmc7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YXJpYW50VHlwZVN0cmluZykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAodmFyaWFudFR5cGVTdHJpbmcuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBHUmVmUHRyPEdWYXJpYW50PigpOworCisgICAgaWYgKCFnX3Zhcmlh
bnRfdHlwZV9zdHJpbmdfaXNfdmFsaWQodmFyaWFudFR5cGVTdHJpbmcuZGF0YSgpKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIERhdGFSZWZlcmVuY2UgZGF0YTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgYXV0byogdmFyaWFudFR5cGUgPSBnX3ZhcmlhbnRfdHlwZV9uZXcodmFyaWFudFR5cGVT
dHJpbmcuZGF0YSgpKTsKKyAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50
X25ld19mcm9tX2RhdGEodmFyaWFudFR5cGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgRkFM
U0UsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGdfdmFyaWFudF90eXBlX2ZyZWUodmFyaWFudFR5
cGUpOworICAgIHJldHVybiB2YXJpYW50OworfQorCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZjQ1NzA1OThmMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR1ZhcmlhbnQgR1Zhcmlh
bnQ7CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIGVuY29kZShFbmNvZGVyJiwgR1ZhcmlhbnQq
KTsKK09wdGlvbmFsPEdSZWZQdHI8R1ZhcmlhbnQ+PiBkZWNvZGUoRGVjb2RlciYpOworCit9IC8v
IG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNl
ck1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRjODllMmQxMWRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlLmgi
CisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc0dMaWIuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPGdpby9ndW5peGZkbGlz
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBVc2VyTWVzc2FnZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlw
ZSk7CisgICAgaWYgKHR5cGUgPT0gVHlwZTo6TnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZW5jb2RlciA8PCBuYW1lOworICAgIGlmICh0eXBlID09IFR5cGU6OkVycm9yKSB7CisgICAgICAg
IGVuY29kZXIgPDwgZXJyb3JDb2RlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVBD
OjplbmNvZGUoZW5jb2RlciwgcGFyYW1ldGVycy5nZXQoKSk7CisKKyAgICBWZWN0b3I8SVBDOjpB
dHRhY2htZW50PiBhdHRhY2htZW50czsKKyAgICBpZiAoZmlsZURlc2NyaXB0b3JzKSB7CisgICAg
ICAgIGludCBsZW5ndGggPSBnX3VuaXhfZmRfbGlzdF9nZXRfbGVuZ3RoKGZpbGVEZXNjcmlwdG9y
cy5nZXQoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoSVBDOjpBdHRhY2htZW50KGdfdW5peF9mZF9saXN0
X2dldChmaWxlRGVzY3JpcHRvcnMuZ2V0KCksIGksIG51bGxwdHIpKSk7CisgICAgfQorICAgIGVu
Y29kZXIgPDwgYXR0YWNobWVudHM7Cit9CisKK09wdGlvbmFsPFVzZXJNZXNzYWdlPiBVc2VyTWVz
c2FnZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBVc2VyTWVzc2FnZSBy
ZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnR5cGUpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKHJlc3VsdC50eXBlID09IFR5cGU6Ok51
bGwpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5uYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlmIChyZXN1
bHQudHlwZSA9PSBUeXBlOjpFcnJvcikgeworICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZXJy
b3JDb2RlOworICAgICAgICBkZWNvZGVyID4+IGVycm9yQ29kZTsKKyAgICAgICAgaWYgKCFlcnJv
ckNvZGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJlc3Vs
dC5lcnJvckNvZGUgPSBlcnJvckNvZGUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBPcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gcGFyYW1ldGVycyA9IElQ
Qzo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghcGFyYW1ldGVycykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQucGFyYW1ldGVycyA9IFdURk1vdmUoKnBhcmFtZXRl
cnMpOworCisgICAgT3B0aW9uYWw8VmVjdG9yPElQQzo6QXR0YWNobWVudD4+IGF0dGFjaG1lbnRz
OworICAgIGRlY29kZXIgPj4gYXR0YWNobWVudHM7CisgICAgaWYgKCFhdHRhY2htZW50cykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWF0dGFjaG1lbnRzLT5pc0VtcHR5
KCkpIHsKKyAgICAgICAgcmVzdWx0LmZpbGVEZXNjcmlwdG9ycyA9IGFkb3B0R1JlZihnX3VuaXhf
ZmRfbGlzdF9uZXcoKSk7CisgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6ICphdHRhY2ht
ZW50cykgeworICAgICAgICAgICAgaWYgKGdfdW5peF9mZF9saXN0X2FwcGVuZChyZXN1bHQuZmls
ZURlc2NyaXB0b3JzLmdldCgpLCBhdHRhY2htZW50LnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpLCBu
dWxscHRyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5iYmRkNjRkNjgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2dsaWIvVXNlck1lc3NhZ2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HVW5peEZETGlzdCBHVW5p
eEZETGlzdDsKK3R5cGVkZWYgc3RydWN0IF9HVmFyaWFudCBHVmFyaWFudDsKKworbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0cnVjdCBVc2VyTWVzc2FnZSB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsgTnVs
bCwgTWVzc2FnZSwgRXJyb3IgfTsKKworICAgIFVzZXJNZXNzYWdlKCkKKyAgICAgICAgOiB0eXBl
KFR5cGU6Ok51bGwpCisgICAgeworICAgIH0KKworICAgIFVzZXJNZXNzYWdlKGNvbnN0IENTdHJp
bmcmIG5hbWUsIHVpbnQzMl90IGVycm9yQ29kZSkKKyAgICAgICAgOiB0eXBlKFR5cGU6OkVycm9y
KQorICAgICAgICAsIG5hbWUobmFtZSkKKyAgICAgICAgLCBlcnJvckNvZGUoZXJyb3JDb2RlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKwor
ICAgIFR5cGUgdHlwZSB7IFR5cGU6Ok51bGwgfTsKKyAgICBDU3RyaW5nIG5hbWU7CisgICAgR1Jl
ZlB0cjxHVmFyaWFudD4gcGFyYW1ldGVyczsKKyAgICBHUmVmUHRyPEdVbml4RkRMaXN0PiBmaWxl
RGVzY3JpcHRvcnM7CisgICAgdWludDMyX3QgZXJyb3JDb2RlIHsgMCB9OworfTsKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0dUSy50eHQKaW5kZXggMWU0ZTQyY2RkYmUuLmM5ZTE1M2Q2YTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKQEAgLTY3LDYgKzY3LDcgQEAgU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51
SXRlbS5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5j
cHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgQG5vLXVu
aWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIEBuby11bmlmeQorU2hh
cmVkL0FQSS9nbGliL1dlYktpdFVzZXJNZXNzYWdlLmNwcCBAbm8tdW5pZnkKIAogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmNwcApAQCAtODIsNyAr
ODMsOSBAQCBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCiAKIFNoYXJl
ZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAorU2hhcmVkL2dsaWIvQXJndW1lbnRD
b2RlcnNHTGliLmNwcAogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAK
K1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAogU2hhcmVkL2dsaWIvV2ViQ29udGV4dE1lbnVJ
dGVtR2xpYi5jcHAKIAogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTQwNCw2
ICs0MDcsOCBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVIb3N0LmNwcAogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYktpdFdlYlBhZ2VBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAogCitXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5j
cHAKKwogV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAog
CiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzV1BFLnR4dAppbmRleCBhMjJlNGYxMDk5NC4uNWI1MTRkNTIxNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dApAQCAtNjgsNiArNjgsNyBAQCBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0
LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8t
dW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CitT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2UuY3BwIEBuby11bmlmeQogCiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC04MSw3
ICs4Miw5IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVVbml4LmNwcAogCiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKK1No
YXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKIFNoYXJlZC9nbGliL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEdMaWIuY3BwCitTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKIFNoYXJlZC9n
bGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIuY3BwCiAKIFNoYXJlZC9saWJ3cGUvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTI0Nyw2ICsyNTAsOCBAQCBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAogCiBXZWJQcm9jZXNz
L1dlYlBhZ2UvYXRrL1dlYktpdFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAogCitXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKKwogV2ViUHJvY2Vzcy9XZWJQYWdl
L2dzdHJlYW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvbGli
d3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDZhNDllOTljY2UzLi4xMjZiY2NmMTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTQ3LDEwICs0NywxMiBA
QAogI2luY2x1ZGUgIldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVS
SVNjaGVtZVJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90
ZUluc3BlY3Rvci5oPgpAQCAtMTIzLDYgKzEyNSw3IEBAIGVudW0gewogICAgIElOSVRJQUxJWkVf
V0VCX0VYVEVOU0lPTlMsCiAgICAgSU5JVElBTElaRV9OT1RJRklDQVRJT05fUEVSTUlTU0lPTlMs
CiAgICAgQVVUT01BVElPTl9TVEFSVEVELAorICAgIFVTRVJfTUVTU0FHRV9SRUNFSVZFRCwKIAog
ICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMzcyLDYgKzM3NSwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgcHJpdi0+cHJv
Y2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwogICAgIHBy
aXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBw
cml2LT5wcm9jZXNzUG9vbC0+c2V0VXNlck1lc3NhZ2VIYW5kbGVyKFt3ZWJDb250ZXh0XShVc2Vy
TWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVm
LgorICAgICAgICBHUmVmUHRyPFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtp
dFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgICAgIGdfc2lnbmFs
X2VtaXQod2ViQ29udGV4dCwgc2lnbmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdLCAwLCB1c2Vy
TWVzc2FnZS5nZXQoKSwgJnJldHVyblZhbHVlKTsKKyAgICB9KTsKIAogICAgIHdlYmtpdFdlYnNp
dGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSwgKnByaXYtPnByb2Nlc3NQb29sKTsKIApAQCAtNDE1LDYgKzQyNCwxMSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJDb250ZXh0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHByaXYt
PmZhdmljb25EYXRhYmFzZSA9IG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKHByaXYtPnByb2Nl
c3NQb29sKSB7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRVc2VyTWVzc2FnZUhhbmRs
ZXIobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sID0gbnVsbHB0cjsKKyAgICB9
CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+
ZGlzcG9zZShvYmplY3QpOwogfQogCkBAIC01NzQsNiArNTg4LDMyIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29u
dGV4dENsYXNzCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAog
ICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRP
TUFUSU9OX1NFU1NJT04pOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViQ29udGV4dDo6dXNl
ci1tZXNzYWdlLXJlY2VpdmVkOgorICAgICAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRl
eHQKKyAgICAgKiBAbWVzc2FnZTogdGhlICNXZWJLaXRVc2VyTWVzc2FnZSByZWNlaXZlZAorICAg
ICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgI1dlYktpdFVzZXJNZXNz
YWdlIGlzIHJlY2VpdmVkIGZyb20gYQorICAgICAqICNXZWJLaXRXZWJFeHRlbnNpb24uIFlvdSBj
YW4gcmVwbHkgdG8gdGhlIG1lc3NhZ2UgdXNpbmcKKyAgICAgKiB3ZWJraXRfdXNlcl9tZXNzYWdl
X3NlbmRfcmVwbHkoKS4KKyAgICAgKgorICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoZSB1c2VyIG1l
c3NhZ2UgYXN5bmNocm9ub3VzbHkgYnkgY2FsbGluZyBnX29iamVjdF9yZWYoKSBvbgorICAgICAq
IEBtZXNzYWdlIGFuZCByZXR1cm5pbmcgJVRSVUUuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAl
VFJVRSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAg
ICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgc2lnbmFsc1tVU0VSX01FU1NB
R0VfUkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAidXNlci1tZXNzYWdlLXJlY2Vp
dmVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAg
R19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJDb250
ZXh0Q2xhc3MsIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCksCisgICAgICAgIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX3RydWVfaGFuZGxlZCwgbnVsbHB0ciwKKyAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFs
X2dlbmVyaWMsCisgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICBXRUJLSVRfVFlQ
RV9VU0VSX01FU1NBR0UpOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNv
bnRleHQoZ3BvaW50ZXIpCkBAIC0xNjgwLDYgKzE3MjAsMjcgQEAgdm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMoV2ViS2l0V2ViQ29udGV4
dCogY28KICAgICBjb250ZXh0LT5wcml2LT5ub3RpZmljYXRpb25Qcm92aWRlci0+c2V0Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoV1RGTW92ZShtYXApKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zOgorICogQGNvbnRleHQ6IHRo
ZSAjV2ViS2l0V2ViQ29udGV4dAorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisg
KgorICogU2VuZCBAbWVzc2FnZSB0byBhbGwgI1dlYktpdFdlYkV4dGVuc2lvbjwhLS0gLS0+cyBh
c3NvY2lhdGVkIHRvIEBjb250ZXh0LgorICogSWYgQG1lc3NhZ2UgaXMgZmxvYXRpbmcsIGl0J3Mg
Y29uc3VtZWQuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX2NvbnRl
eHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworCisgICAgLy8gV2Ugc2luayB0aGUgcmVm
ZXJlbmNlIGluIGNhc2Ugb2YgYmVpbmcgZmxvYXRpbmcuCisgICAgR1JlZlB0cjxXZWJLaXRVc2Vy
TWVzc2FnZT4gYWRvcHRlZE1lc3NhZ2UgPSBtZXNzYWdlOworICAgIGZvciAoYXV0byYgcHJvY2Vz
cyA6IGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5wcm9jZXNzZXMoKSkKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lv
bih3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkpLCAwKTsKK30KKwogdm9pZCB3
ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdChjb250ZXh0LCBzaWduYWxz
W0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05TXSwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGMzYjVj
OWM3Y2U1Li42Y2ExMzg3MTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTU2LDEyICs1NiwxNCBAQAogI2luY2x1ZGUg
IldlYktpdFVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRV
c2VyTWVzc2FnZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdlYlJlc291cmNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxqc2MvSlNDQ29u
dGV4dFByaXZhdGUuaD4KQEAgLTE2Myw2ICsxNjUsOCBAQCBlbnVtIHsKICAgICBTSE9XX09QVElP
Tl9NRU5VLAogI2VuZGlmCiAKKyAgICBVU0VSX01FU1NBR0VfUkVDRUlWRUQsCisKICAgICBMQVNU
X1NJR05BTAogfTsKIApAQCAtNDQ0LDYgKzQ0OCwxMSBAQCBwcml2YXRlOgogICAgICAgICB3ZWJr
aXRXZWJWaWV3RGlkQ2hhbmdlUGFnZUlEKG1fd2ViVmlldyk7CiAgICAgfQogCisgICAgdm9pZCBk
aWRSZWNlaXZlVXNlck1lc3NhZ2UoV0tXUEU6OlZpZXcmLCBVc2VyTWVzc2FnZSYmIG1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRXZWJWaWV3RGlkUmVjZWl2ZVVzZXJN
ZXNzYWdlKG1fd2ViVmlldywgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIH0KKwogICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAjZW5k
aWYKQEAgLTIwNzksNiArMjA4OCwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgR0RLX1RZ
UEVfRVZFTlQgfCBHX1NJR05BTF9UWVBFX1NUQVRJQ19TQ09QRSwKICAgICAgICAgR0RLX1RZUEVf
UkVDVEFOR0xFIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUpOwogI2VuZGlmIC8vIFBMQVRG
T1JNKEdUSykKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnVzZXItbWVzc2FnZS1y
ZWNlaXZlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0
aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAbWVzc2FnZTogdGhlICNXZWJLaXRVc2VyTWVz
c2FnZSByZWNlaXZlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVu
IGEgI1dlYktpdFVzZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gdGhlCisgICAgICogI1dlYktp
dFdlYlBhZ2UgY29ycmVzcG9uZGluZyB0byBAd2ViX3ZpZXcuIFlvdSBjYW4gcmVwbHkgdG8gdGhl
IG1lc3NhZ2UKKyAgICAgKiB1c2luZyB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKS4K
KyAgICAgKgorICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoZSB1c2VyIG1lc3NhZ2UgYXN5bmNocm9u
b3VzbHkgYnkgY2FsbGluZyBnX29iamVjdF9yZWYoKSBvbgorICAgICAqIEBtZXNzYWdlIGFuZCBy
ZXR1cm5pbmcgJVRSVUUuIElmIHRoZSBsYXN0IHJlZmVyZW5jZSBvZiBAbWVzc2FnZSBpcyByZW1v
dmVkCisgICAgICogYW5kIHRoZSBtZXNzYWdlIGhhcyBub3QgYmVlbiByZXBsaWVkIHRvLCB0aGUg
b3BlcmF0aW9uIGluIHRoZSAjV2ViS2l0V2ViUGFnZSB3aWxsCisgICAgICogZmluaXNoIHdpdGgg
ZXJyb3IgJVdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UuCisgICAgICoKKyAg
ICAgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgbWVzc2FnZSB3YXMgaGFuZGxlZCwgb3IgJUZBTFNF
IG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgc2ln
bmFsc1tVU0VSX01FU1NBR0VfUkVDRUlWRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAidXNl
ci1tZXNzYWdlLXJlY2VpdmVkIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0Ns
YXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNF
VChXZWJLaXRXZWJWaWV3Q2xhc3MsIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCksCisgICAgICAgIGdf
c2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgbnVsbHB0ciwKKyAgICAgICAgZ19jY2xv
c3VyZV9tYXJzaGFsX2dlbmVyaWMsCisgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAg
ICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBA
IC0yNTgyLDYgKzI2MTksMTQgQEAgdm9pZCB3ZWJraXRXZWJWaWV3RGlkQ2hhbmdlUGFnZUlEKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlZp
ZXcpLCAicGFnZS1pZCIpOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1l
c3NhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5nIHJlZi4KKyAgICBHUmVmUHRyPFdlYktpdFVzZXJN
ZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBnYm9vbGVhbiByZXR1cm5W
YWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JF
Q0VJVkVEXSwgMCwgdXNlck1lc3NhZ2UuZ2V0KCksICZyZXR1cm5WYWx1ZSk7Cit9CisKICNpZiBQ
TEFURk9STShXUEUpCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2VuZDoKQEAgLTQy
MTgsMyArNDI2Myw3MCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxh
eWVkX2NhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIHVucwogICAgICAgICB3ZWJWaWV3
LT5wcml2LT5mcmFtZURpc3BsYXllZENhbGxiYWNrcy5yZW1vdmVGaXJzdE1hdGNoaW5nKG1hdGNo
RnVuY3Rpb24pOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFdQRSkKKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2U6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqIEBtZXNzYWdlOiBhICNXZWJLaXRVc2VyTWVzc2FnZQorICogQGNhbmNlbGxhYmxl
OiAobnVsbGFibGUpOiBhICNHQ2FuY2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2Fs
bGJhY2s6IChzY29wZSBhc3luYyk6IChudWxsYWJsZSk6IEEgI0dBc3luY1JlYWR5Q2FsbGJhY2sg
dG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZCBvciAlTlVMTAorICogQHVzZXJf
ZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCisg
KgorICogU2VuZCBAbWVzc2FnZSB0byB0aGUgI1dlYktpdFdlYlBhZ2UgY29ycmVzcG9uZGluZyB0
byBAd2ViX3ZpZXcuIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1bWVkLgorICoK
KyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJlcGx5LCBvciB5b3Ugc2ltcGx5IHdhbnQgdG8g
aWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwgYXMgQGNhbGxiYWNrLgorICogV2hlbiB0aGUg
b3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4g
dGhlbiBjYWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNo
KCkgdG8gZ2V0IHRoZSBtZXNzYWdlIHJlcGx5LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3Zv
aWQgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxh
YmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKworICAg
IC8vIFdlIHNpbmsgdGhlIHJlZmVyZW5jZSBpbiBjYXNlIG9mIGJlaW5nIGZsb2F0aW5nLgorICAg
IEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IGFkb3B0ZWRNZXNzYWdlID0gbWVzc2FnZTsKKyAg
ICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7Cisg
ICAgICAgIHBhZ2UuZW5zdXJlUnVubmluZ1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZSht
ZXNzYWdlKSksIHBhZ2Uud2ViUGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXco
d2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXShVc2VyTWVzc2FnZSYmIHJlcGx5TWVzc2FnZSkgeworICAgICAgICBz
d2l0Y2ggKHJlcGx5TWVzc2FnZS50eXBlKSB7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6OlR5
cGU6Ok51bGw6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgp
LCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCwgXygiT3BlcmF0aW9uIHdhcyBjYW5j
ZWxsZWQiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6
VHlwZTo6TWVzc2FnZToKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdl
dCgpLCBnX29iamVjdF9yZWZfc2luayh3ZWJraXRVc2VyTWVzc2FnZUNyZWF0ZShXVEZNb3ZlKHJl
cGx5TWVzc2FnZSkpKSwgc3RhdGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfb2JqZWN0X3VucmVm
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6
RXJyb3I6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNrLmdldCgpLCBX
RUJLSVRfVVNFUl9NRVNTQUdFX0VSUk9SLCByZXBseU1lc3NhZ2UuZXJyb3JDb2RlLCBfKCJNZXNz
YWdlICVzIHdhcyBub3QgaGFuZGxlZCIpLCByZXBseU1lc3NhZ2UubmFtZS5kYXRhKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9OworICAgIHBhZ2UuZW5zdXJlUnVubmlu
Z1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNz
YWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHkod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1l
c3NhZ2UpKSwKKyAgICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2Uud2ViUGFn
ZUlEKCkudG9VSW50NjQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVz
c2FnZV90b19wYWdlX2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICog
QHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3Ig
ZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAqCisgKiBGaW5pc2ggYW4gYXN5bmNocm9ub3VzIG9w
ZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdl
KCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhICNXZWJLaXRVc2VyTWVzc2Fn
ZSB3aXRoIHRoZSByZXBseSBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yLgorICoKKyAqIFNpbmNl
OiAyLjI4CisgKi8KK1dlYktpdFVzZXJNZXNzYWdlKiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNz
YWdlX3RvX3BhZ2VfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIHdlYlZpZXcpLCBudWxscHRyKTsKKworICAgIHJl
dHVybiBXRUJLSVRfVVNFUl9NRVNTQUdFKGdfdGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0so
cmVzdWx0KSwgZXJyb3IpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDhjNDUwNTVjZTc4Li4zMzI2
NDE0MjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2lu
Y2x1ZGUgIldlYkhpdFRlc3RSZXN1bHREYXRhLmgiCkBAIC0xMDEsMyArMTAyLDQgQEAgZ2Jvb2xl
YW4gd2Via2l0V2ViVmlld0F1dGhlbnRpY2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVu
dGljYXRpb25SZXF1ZXN0KikKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdTY3JpcHREaWFsb2coV2Vi
S2l0V2ViVmlldyosIFdlYktpdFNjcmlwdERpYWxvZyopOwogZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d1J1bkZpbGVDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qq
KTsKIHZvaWQgd2Via2l0V2ViVmlld0RpZENoYW5nZVBhZ2VJRChXZWJLaXRXZWJWaWV3Kik7Cit2
b2lkIHdlYmtpdFdlYlZpZXdEaWRSZWNlaXZlVXNlck1lc3NhZ2UoV2ViS2l0V2ViVmlldyosIFdl
YktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OlVzZXJN
ZXNzYWdlJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0QXV0b2NsZWFudXBzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dG9jbGVhbnVwcy5oCmluZGV4IDc4Y2VjNTkxMDZjLi41NzU3ZjU3NzYyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51
cHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVh
bnVwcy5oCkBAIC02Miw2ICs2Miw3IEBAIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LCBnX29iamVjdF91bnJlZikKIEdfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLCBnX29iamVjdF91bnJl
ZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIsIGdfb2JqZWN0X3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LCBnX29iamVjdF91bnJlZikKK0dfREVGSU5FX0FV
VE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRVc2VyTWVzc2FnZSwgZ19vYmplY3RfdW5yZWYpCiBH
X0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0V2ViQ29udGV4dCwgZ19vYmplY3Rf
dW5yZWYpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0V2ViSW5zcGVjdG9y
LCBnX29iamVjdF91bnJlZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRX
ZWJSZXNvdXJjZSwgZ19vYmplY3RfdW5yZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmExNWVkNzQzYzI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVzc2FnZS5oCkBAIC0wLDAgKzEsMTAy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChf
X1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYg
IWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKQorI2Vycm9yICJPbmx5
IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgor
CisjaWZuZGVmIFdlYktpdFVzZXJNZXNzYWdlX2gKKyNkZWZpbmUgV2ViS2l0VXNlck1lc3NhZ2Vf
aAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5l
cy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdF
ICAgICAgICAgICAgKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VC
S0lUX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9D
QVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsIFdlYktpdFVzZXJNZXNzYWdlKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpKQorI2RlZmlu
ZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNlck1lc3Nh
Z2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdF
KSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UsIFdlYktp
dFVzZXJNZXNzYWdlQ2xhc3MpKQorCisjZGVmaW5lIFdFQktJVF9VU0VSX01FU1NBR0VfRVJST1Ig
d2Via2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFyayAoKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0VXNlck1lc3NhZ2UgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFVzZXJNZXNzYWdlQ2xhc3MgICBXZWJLaXRVc2VyTWVzc2FnZUNsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZSBXZWJLaXRVc2VyTWVzc2FnZVByaXZh
dGU7CisKKy8qKgorICogV2ViS2l0VXNlck1lc3NhZ2VFcnJvcjoKKyAqIEBXRUJLSVRfVVNFUl9N
RVNTQUdFX1VOSEFORExFRF9NRVNTQUdFOiBUaGUgbWVzc2FnZSB3YXMgbm90IGhhbmRsZWQgYnkg
dGhlIHJlY2VpdmVyLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIGVycm9ycyBo
YXBwZW5pbmcgd2hlbiBzZW5kaW5nIHVzZXIgbWVzc2FnZXMuCisgKgorICogU2luY2U6IDIuMjgK
KyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9N
RVNTQUdFCit9IFdlYktpdFVzZXJNZXNzYWdlRXJyb3I7CisKK3N0cnVjdCBfV2ViS2l0VXNlck1l
c3NhZ2UgeworICAgIEdJbml0aWFsbHlVbm93bmVkIHBhcmVudDsKKworICAgIFdlYktpdFVzZXJN
ZXNzYWdlUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0VXNlck1lc3NhZ2VDbGFz
cyB7CisgICAgR0luaXRpYWxseVVub3duZWRDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9B
UEkgR1F1YXJrCit3ZWJraXRfdXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICAgICAgKHZvaWQpOwor
CitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3
ICAgICAgICAgICAgICAoY29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0ZXJzKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX25ld193
aXRoX2ZkX2xpc3QgKGNvbnN0IGNoYXIgICAgICAgICpuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAqcGFyYW1ldGVycywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VuaXhGRExpc3QgICAgICAgKmZkX2xp
c3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRf
bmFtZSAgICAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkg
R1ZhcmlhbnQgKgord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyAgIChXZWJLaXRV
c2VyTWVzc2FnZSAqbWVzc2FnZSk7CisKK1dFQktJVF9BUEkgR1VuaXhGRExpc3QgKgord2Via2l0
X3VzZXJfbWVzc2FnZV9nZXRfZmRfbGlzdCAgICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2Fn
ZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3VzZXJfbWVzc2FnZV9zZW5kX3JlcGx5ICAg
ICAgIChXZWJLaXRVc2VyTWVzc2FnZSAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgKnJlcGx5KTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oCmluZGV4IDk1Y2U1YTVmNGYwLi40ZGE5Y2U3ZDkxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5ldHdvcmtQcm94eVNldHRpbmdz
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtMTQzLDE3ICsxNDQsMTggQEAgc3RydWN0IF9X
ZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50OwogCi0gICAgdm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9h
ZCAgICAgICAgICAqZG93bmxvYWQpOwotICAgIHZvaWQgKCogaW5pdGlhbGl6ZV93ZWJfZXh0ZW5z
aW9ucykgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAqY29udGV4dCk7Ci0gICAg
dm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNv
bnRleHQgICAgICAgICpjb250ZXh0KTsKLSAgICB2b2lkICgqIGF1dG9tYXRpb25fc3RhcnRlZCkg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uICpzZXNzaW9uKTsKKyAgICB2b2lkICAgICAoKiBkb3dubG9hZF9zdGFydGVk
KSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0RG93bmxvYWQgICAgICAgICAgKmRvd25sb2FkKTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFs
aXplX3dlYl9leHRlbnNpb25zKSAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpj
b250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNz
aW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAo
KiBhdXRvbWF0aW9uX3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQg
ICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIGdi
b29sZWFuICgqIHVzZXJfbWVzc2FnZV9yZWNlaXZlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
Q29udGV4dCAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgICAgICAqbWVzc2FnZSk7
CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2
b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKIH07CiAKIFdFQktJ
VF9BUEkgR1R5cGUKQEAgLTMxOCw2ICszMjAsMTAgQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRp
YWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAg
ICphbGxvd2VkX29yaWdpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICpkaXNhbGxvd2Vk
X29yaWdpbnMpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21l
c3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAgICAgICAgICAgICptZXNzYWdlKTsKKwogR19FTkRf
REVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCmluZGV4IDhjMjE5YTNiMDA4Li40ZmY2OTZiNjM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ5LDYgKzQ5
LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291cmNl
Lmg+CkBAIC0yNjksOSArMjcwLDEwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE9wdGlv
bk1lbnUgICAgICAgICAgICAqbWVudSk7CiAgICAgdm9pZCAgICAgICAoKiB3ZWJfcHJvY2Vzc190
ZXJtaW5hdGVkKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbik7CisgICAgZ2Jvb2xlYW4gICAoKiB1c2Vy
X21lc3NhZ2VfcmVjZWl2ZWQpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAgICptZXNzYWdlKTsKIAogICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMCkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZv
aWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpAQCAtNTUyLDYgKzU1NCwxOCBAQCBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZSAqc3RhdGUpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19z
ZW5kX21lc3NhZ2VfdG9fcGFnZSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2UgICAgICAgICAqbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxs
YWJsZSAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAg
Y2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRf
QVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9f
cGFnZV9maW5pc2ggICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAg
ICoqZXJyb3IpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CmluZGV4IDU2NmI4YzZjNjU3Li41ODU2Y2M0NDc0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CkBAIC03MCw2ICs3MCw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9h
bGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJv
Y2Vzc19tb2RlbAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRf
d2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMKK3dlYmtpdF93
ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMKIAogPFNVQlNFQ1RJT04g
VVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMjc3LDYgKzI3
OCw4IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfZWRpdG9yX3N0YXRlCiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3Nlc3Npb25fc3RhdGUKIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUK
IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZQord2Via2l0X3dlYl92aWV3X3NlbmRf
bWVzc2FnZV90b19wYWdlCit3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmlu
aXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0CkBAIC0xNTM4LDYgKzE1NDEsOCBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktp
dFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlh
bGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZQor
d2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQKK3dlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaAogCiA8U1VCU0VDVElPTiBT
dGFuZGFyZD4KIFdlYktpdFdlYkV4dGVuc2lvbkNsYXNzCkBAIC0xNTYyLDYgKzE1NjcsOCBAQCB3
ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaQogd2Via2l0X3dl
Yl9wYWdlX2dldF9tYWluX2ZyYW1lCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcgord2Via2l0
X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3Cit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNz
YWdlX3RvX3ZpZXdfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViUGFn
ZUNsYXNzCkBAIC0xNzM4LDMgKzE3NDUsMzIgQEAgd2Via2l0X3ByaW50X2N1c3RvbV93aWRnZXRf
Z2V0X3R5cGUKIDxGSUxFPldlYktpdFVSSVV0aWxpdGllczwvRklMRT4KIHdlYmtpdF91cmlfZm9y
X2Rpc3BsYXkKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyTWVzc2Fn
ZTwvRklMRT4KK1dlYktpdFVzZXJNZXNzYWdlCit3ZWJraXRfdXNlcl9tZXNzYWdlX25ldword2Vi
a2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9saXN0Cit3ZWJraXRfdXNlcl9tZXNzYWdlX2dl
dF9uYW1lCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzCit3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9mZF9saXN0Cit3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkKKworPFNV
QlNFQ1RJT04gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcj4KK1dFQktJVF9VU0VSX01FU1NBR0VfRVJS
T1IKK1dlYktpdFVzZXJNZXNzYWdlRXJyb3IKK3dlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVh
cmsKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRVc2VyTWVzc2FnZUNsYXNzCitXRUJL
SVRfVFlQRV9VU0VSX01FU1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0UKK1dFQktJVF9JU19VU0VS
X01FU1NBR0UKK1dFQktJVF9VU0VSX01FU1NBR0VfQ0xBU1MKK1dFQktJVF9JU19VU0VSX01FU1NB
R0VfQ0xBU1MKK1dFQktJVF9VU0VSX01FU1NBR0VfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFBy
aXZhdGU+CitXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCBjNDUzMTFkZGZiZi4uNWRh
YWIwODZlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTYzLDYgKzYzLDcgQEAKICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Npb24ueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIvPgorICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVzc2FnZS54bWwiLz4KICAgPC9jaGFwdGVy
PgogCiAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aAppbmRleCBmM2VkY2NlMWVkOC4uMTZlZjdlYjZkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2Fn
ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVj
dG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZp
ZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVu
dC5oCmluZGV4IDA1ODliYjEzODViLi5iMTNkYTZkMGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKQEAgLTI1LDYgKzI1LDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpT
R2xvYmFsQ29udGV4dFJlZjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Niw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdLV1BFOjpW
aWV3JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
dGFydExvYWQoV0tXUEU6OlZpZXcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUGFn
ZUlEKFdLV1BFOjpWaWV3JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVz
c2FnZShXS1dQRTo6VmlldyYsIFdlYktpdDo6VXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6VXNlck1lc3NhZ2UoKSk7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9Q
YWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcAppbmRleCBjOGI0ZTc5ZDE3Ni4uMjE3MTA5YjM0ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00
MjUsNCArNDI1LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlV2ViUGFnZUlEKCkg
Y29uc3QKICAgICBtX3ZpZXcuZGlkQ2hhbmdlUGFnZUlEKCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBtX3ZpZXcuZGlkUmVjZWl2ZVVzZXJNZXNzYWdlKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXgg
ODdiN2JiOTIyMzcuLmZiMzhiMTk2ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC00Miw2ICs0Miw3IEBAIGVudW0gY2xhc3Mg
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI7CitzdHJ1Y3QgVXNlck1lc3NhZ2U7CiAKIGVu
dW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgog
ICAgIEF0a09iamVjdCogYWNjZXNzaWJsZSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNlbmRNZXNz
YWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1l
c3NhZ2UmJik+JiYpOworCiBwcml2YXRlOgogICAgIC8vIFBhZ2VDbGllbnQKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9j
ZXNzUHJveHkmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwCmluZGV4IDBiOWZhYTA2NmUxLi5lMGY1YTc4OTRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0yMTAsNiArMjEwLDExIEBAIHZv
aWQgVmlldzo6ZGlkQ2hhbmdlUGFnZUlEKCkKICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlUGFnZUlE
KCp0aGlzKTsKIH0KIAordm9pZCBWaWV3OjpkaWRSZWNlaXZlVXNlck1lc3NhZ2UoVXNlck1lc3Nh
Z2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlVXNlck1lc3NhZ2Uo
KnRoaXMsIFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwogdm9pZCBWaWV3OjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiB7CiAg
ICAgbV9zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3
LmgKaW5kZXggOWJjNmI5ZjE5YWMuLjE0ZWIzODUzMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dQRVZpZXcuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKK3N0cnVjdCBVc2VyTWVzc2FnZTsKIH0KIAogbmFtZXNwYWNlIFdLV1BFIHsK
QEAgLTY4LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0
KFdlYktpdDo6RG93bmxvYWRQcm94eSYpOwogICAgIHZvaWQgd2lsbFN0YXJ0TG9hZCgpOwogICAg
IHZvaWQgZGlkQ2hhbmdlUGFnZUlEKCk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lc3NhZ2Uo
V2ViS2l0OjpVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6VXNl
ck1lc3NhZ2UmJik+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UoKSB7IHJl
dHVybiAqbV9wYWdlUHJveHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRBdXRvY2xlYW51cHMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0QXV0b2NsZWFudXBzLmgKaW5kZXggMWQyMDZjNmRmMjMuLjQ1MzAyZjZk
OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEF1
dG9jbGVhbnVwcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
QXV0b2NsZWFudXBzLmgKQEAgLTU4LDYgKzU4LDcgQEAgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQ
X0ZVTkMgKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QsIGdfb2JqZWN0X3VucmVmKQogR19ERUZJTkVf
QVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUsIGdfb2Jq
ZWN0X3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdFVzZXJDb250
ZW50TWFuYWdlciwgZ19vYmplY3RfdW5yZWYpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVO
QyAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsIGdfb2JqZWN0X3VucmVmKQorR19E
RUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdFVzZXJNZXNzYWdlLCBnX29iamVjdF91
bnJlZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRXZWJDb250ZXh0LCBn
X29iamVjdF91bnJlZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRXZWJS
ZXNvdXJjZSwgZ19vYmplY3RfdW5yZWYpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAo
V2ViS2l0V2ViVmlldywgZ19vYmplY3RfdW5yZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjUxZmY5OWNlYTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVzc2FnZS5oCkBAIC0wLDAgKzEs
MTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAm
JiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCisjZXJyb3IgIk9u
bHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisj
aWZuZGVmIFdlYktpdFVzZXJNZXNzYWdlX2gKKyNkZWZpbmUgV2ViS2l0VXNlck1lc3NhZ2VfaAor
CisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UgICAgICAg
ICAgICAod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfVVNF
Ul9NRVNTQUdFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9i
aiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNlck1lc3NhZ2UpKQorI2RlZmlu
ZSBXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSkpCisjZGVmaW5lIFdFQktJ
VF9VU0VSX01FU1NBR0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFLCBXZWJLaXRVc2VyTWVzc2FnZUNsYXNz
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfTUVTU0FHRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VSX01FU1NBR0UpKQorI2Rl
ZmluZSBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNF
X0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJfTUVTU0FHRSwgV2ViS2l0VXNlck1l
c3NhZ2VDbGFzcykpCisKKyNkZWZpbmUgV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUiB3ZWJraXRf
dXNlcl9tZXNzYWdlX2Vycm9yX3F1YXJrICgpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2Vy
TWVzc2FnZSAgICAgICAgV2ViS2l0VXNlck1lc3NhZ2U7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
VXNlck1lc3NhZ2VDbGFzcyAgIFdlYktpdFVzZXJNZXNzYWdlQ2xhc3M7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZTsKKwor
LyoqCisgKiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yOgorICogQFdFQktJVF9VU0VSX01FU1NBR0Vf
VU5IQU5ETEVEX01FU1NBR0U6IFRoZSBtZXNzYWdlIHdhcyBub3QgaGFuZGxlZCBieSB0aGUgcmVj
ZWl2ZXIuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhhcHBlbmlu
ZyB3aGVuIHNlbmRpbmcgdXNlciBtZXNzYWdlcy4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit0
eXBlZGVmIGVudW0geworICAgIFdFQktJVF9VU0VSX01FU1NBR0VfVU5IQU5ETEVEX01FU1NBR0UK
K30gV2ViS2l0VXNlck1lc3NhZ2VFcnJvcjsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZSB7
CisgICAgR0luaXRpYWxseVVub3duZWQgcGFyZW50OworCisgICAgV2ViS2l0VXNlck1lc3NhZ2VQ
cml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRVc2VyTWVzc2FnZUNsYXNzIHsKKyAg
ICBHSW5pdGlhbGx5VW5vd25lZENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0
X3VzZXJfbWVzc2FnZV9nZXRfdHlwZSAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBHUXVh
cmsKK3dlYmtpdF91c2VyX21lc3NhZ2VfZXJyb3JfcXVhcmsgICAgICAodm9pZCk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3VzZXJfbWVzc2FnZV9uZXcgICAgICAg
ICAgICAgIChjb25zdCBjaGFyICAgICAgICAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgKnBhcmFtZXRlcnMpOworCitXRUJLSVRf
QVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3X3dpdGhfZmRf
bGlzdCAoY29uc3QgY2hhciAgICAgICAgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICpwYXJhbWV0ZXJzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVW5peEZETGlzdCAgICAgICAqZmRfbGlzdCk7CisK
K1dFQktJVF9BUEkgY29uc3QgY2hhciAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lICAg
ICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBHVmFyaWFu
dCAqCit3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzICAgKFdlYktpdFVzZXJNZXNz
YWdlICptZXNzYWdlKTsKKworV0VCS0lUX0FQSSBHVW5peEZETGlzdCAqCit3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9mZF9saXN0ICAgICAgKFdlYktpdFVzZXJNZXNzYWdlICptZXNzYWdlKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkgICAgICAgKFdl
YktpdFVzZXJNZXNzYWdlICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAqcmVwbHkpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250
ZXh0LmgKaW5kZXggZGViODg1YzE4NWEuLjk5ODYzZmQ1MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2luY2x1
ZGUgPHdwZS9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaD4KIAogR19CRUdJTl9ERUNMUwpA
QCAtMTQzLDE3ICsxNDQsMTggQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0IHsKIHN0cnVjdCBf
V2ViS2l0V2ViQ29udGV4dENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0gICAg
dm9pZCAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNv
bnRleHQgICAgICAgICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAgICAgICAgICAqZG93bmxvYWQpOwotICAg
IHZvaWQgKCogaW5pdGlhbGl6ZV93ZWJfZXh0ZW5zaW9ucykgICAgICAgICAgIChXZWJLaXRXZWJD
b250ZXh0ICAgICAgICAqY29udGV4dCk7Ci0gICAgdm9pZCAoKiBpbml0aWFsaXplX25vdGlmaWNh
dGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKLSAg
ICB2b2lkICgqIGF1dG9tYXRpb25fc3RhcnRlZCkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
Q29udGV4dCAgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKKyAg
ICB2b2lkICAgICAoKiBkb3dubG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RG93bmxvYWQgICAgICAgICAgKmRvd25s
b2FkKTsKKyAgICB2b2lkICAgICAoKiBpbml0aWFsaXplX3dlYl9leHRlbnNpb25zKSAgICAgICAg
ICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBp
bml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucykgKFdlYktpdFdlYkNvbnRleHQgICAg
ICAgICpjb250ZXh0KTsKKyAgICB2b2lkICAgICAoKiBhdXRvbWF0aW9uX3N0YXJ0ZWQpICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0QXV0b21h
dGlvblNlc3Npb24gKnNlc3Npb24pOworICAgIGdib29sZWFuICgqIHVzZXJfbWVzc2FnZV9yZWNl
aXZlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRVc2VyTWVzc2FnZSAgICAgICAqbWVzc2FnZSk7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTMxNCw2ICszMTYs
MTAgQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Np
b25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICphbGxvd2VkX29yaWdpbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaXN0ICAgICAg
ICAgICAgICAgICAgICAgICAgICpkaXNhbGxvd2VkX29yaWdpbnMpOwogCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMgICAo
V2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAg
ICAgICAgICAgICptZXNzYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDJhNGE2MjA0
MjM1Li45ZTVkM2Y0YzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUg
PHdwZS9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0VXNl
ck1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUg
PHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJWaWV3QmFj
a2VuZC5oPgpAQCAtMjQxLDYgKzI0Miw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXROb3RpZmljYXRpb24gICAgICAgICAgKm5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCAgICAgICAg
ICAgKCogd2ViX3Byb2Nlc3NfdGVybWluYXRlZCkgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKTsK
KyAgICBnYm9vbGVhbiAgICAgICAoKiB1c2VyX21lc3NhZ2VfcmVjZWl2ZWQpICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAgICAgICAg
ICAqbWVzc2FnZSk7CisKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwog
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwpAQCAtMjQ5LDcgKzI1Myw2IEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDQpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDUpICh2b2lkKTsKICAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDYpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDcpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKQEAgLTUyNSw2ICs1MjgsMTgg
QEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3Ig
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0Q29sb3IgICAgICAgICAgICAgICAgICpjb2xvcik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAgICAgICAg
ICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNS
ZWFkeUNhbGxiYWNrICAgICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAg
ICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoKK3dlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2ggICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICAgKnJl
c3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICoqZXJyb3IpOworCiBHX0VORF9ERUNMUwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9j
cy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
ZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAwMTlmODRiYWUzNy4uNjc5MDNmNWQ4NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4w
LXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTQ3LDYgKzQ3LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0
X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9w
cm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwKIHdlYmtp
dF93ZWJfY29udGV4dF9pbml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucword2Via2l0
X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucwogCiA8U1VCU0VDVElP
TiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrCkBAIC0yNTEsNiAr
MjUyLDggQEAgd2Via2l0X3dlYl92aWV3X2FkZF9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKIHdl
YmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrCiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IKIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3Vu
ZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCit3ZWJraXRfd2Vi
X3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC01ODcsNiArNTkwLDM1
IEBAIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZQogd2Via2l0X3VyaV9yZXNwb25zZV9nZXRfdHlw
ZQogPC9TRUNUSU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJNZXNzYWdlPC9GSUxF
PgorV2ViS2l0VXNlck1lc3NhZ2UKK3dlYmtpdF91c2VyX21lc3NhZ2VfbmV3Cit3ZWJraXRfdXNl
cl9tZXNzYWdlX25ld193aXRoX2ZkX2xpc3QKK3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUK
K3dlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMKK3dlYmtpdF91c2VyX21lc3NhZ2Vf
Z2V0X2ZkX2xpc3QKK3dlYmtpdF91c2VyX21lc3NhZ2Vfc2VuZF9yZXBseQorCis8U1VCU0VDVElP
TiBXZWJLaXRVc2VyTWVzc2FnZUVycm9yPgorV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUgorV2Vi
S2l0VXNlck1lc3NhZ2VFcnJvcgord2Via2l0X3VzZXJfbWVzc2FnZV9lcnJvcl9xdWFyaworCis8
U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFVzZXJNZXNzYWdlQ2xhc3MKK1dFQktJVF9UWVBF
X1VTRVJfTUVTU0FHRQorV0VCS0lUX1VTRVJfTUVTU0FHRQorV0VCS0lUX0lTX1VTRVJfTUVTU0FH
RQorV0VCS0lUX1VTRVJfTUVTU0FHRV9DTEFTUworV0VCS0lUX0lTX1VTRVJfTUVTU0FHRV9DTEFT
UworV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4K
K1dlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQord2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZQor
PC9TRUNUSU9OPgorCiA8U0VDVElPTj4KIDxGSUxFPldlYktpdFdpbmRvd1Byb3BlcnRpZXM8L0ZJ
TEU+CiBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCmluZGV4IDY2NjE0ZDk3MzgzLi4yZmU3YjIw
ZWZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS1kb2NzLnNnbWwKQEAgLTU3LDYgKzU3LDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRDb2xvci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2Vy
TWVzc2FnZS54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpAQCAtOTMsNSArOTQs
MTAgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMjYueG1sIj48eGk6
ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGkt
aW5kZXgtMi0yOCIgcm9sZT0iMi4yOCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xz
IGluIDIuMjg8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4y
OC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KKyAgPC9pbmRleD4KKwogICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlvbi1nbG9zc2FyeS54bWwiPjx4aTpmYWxsYmFjayAv
PjwveGk6aW5jbHVkZT4KIDwvYm9vaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dl
YmtpdC5oCmluZGV4IDQ4NTIzYjQ3ZDE3Li45Y2MzMWNiNDk2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSA8d3Bl
L1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVk
ZSA8d3BlL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29udGV4dC5o
PgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA4NDhmOTY4MzQ3Ni4uMGViZjcxYjZjMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMDEsNiArMzAxLDcgQEAgc3RydWN0
IFByaW50SW5mbzsKIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkRhdGE7CiBzdHJ1Y3QgV2ViUG9w
dXBJdGVtOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOworc3RydWN0IFVzZXJNZXNz
YWdlOwogCiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7CiBlbnVtIGNs
YXNzIFVuZG9PclJlZG8gOiBib29sOwpAQCAtMTczNiw2ICsxNzM3LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKKyNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJN
ZXNzYWdlJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoVXNlck1l
c3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMmQwYmZmOGMxMTQuLjMwNDNlY2U0ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzYsNCArNTc2LDkg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAg
IFNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbik7CiAjZW5kaWYK
KworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNlbmRNZXNzYWdlVG9X
ZWJWaWV3KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJNZXNzYWdlKQorICAgIFNlbmRN
ZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVzZXJN
ZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNzYWdlKSBBc3lu
YworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRl
eCA3OGJkYzA0N2ExZS4uZjllNjRlMDA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtNTAxLDYgKzUwMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNh
bmRib3hQYXRoKGNvbnN0IENTdHJpbmcmIHBhdGgsIFNhbmRib3hQZXJtaXNzaW9uIHBlcm1pc3Np
b24pIHsgbV9leHRyYVNhbmRib3hQYXRocy5hZGQocGF0aCwgcGVybWlzc2lvbik7IH07CiAgICAg
Y29uc3QgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lvbj4mIHNhbmRib3hQYXRocygp
IGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFTYW5kYm94UGF0aHM7IH07CiAgICAgYm9vbCBzYW5kYm94
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEVuYWJsZWQ7IH07CisKKyAgICB2b2lk
IHNldFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKFVzZXJNZXNzYWdlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpPiYmIGhhbmRsZXIpIHsgbV91c2Vy
TWVzc2FnZUhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOyB9CisgICAgY29uc3QgRnVuY3Rpb248
dm9pZChVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYp
PiYmKT4mIHVzZXJNZXNzYWdlSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlck1lc3NhZ2VI
YW5kbGVyOyB9CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHNldFdlYlByb2Nlc3NIYXNVcGxvYWRz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKQEAgLTc4MCw2ICs3ODMsOCBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGJvb2wgbV9zYW5kYm94
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lv
bj4gbV9leHRyYVNhbmRib3hQYXRoczsKKworICAgIEZ1bmN0aW9uPHZvaWQoVXNlck1lc3NhZ2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+IG1fdXNlck1lc3Nh
Z2VIYW5kbGVyOwogI2VuZGlmCiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IG1fcHJvY2Vzc2VzV2l0aFVw
bG9hZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGE5
NzM5OWU0ZTg3Li44YTQ3ZTgxM2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKK3N0cnVjdCBVc2VyTWVzc2FnZTsKIHN0cnVj
dCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTQyNSw2ICs0MjYsMTEgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgbWF5YmVTaHV0RG93bigpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViQ29udGV4dChVc2VyTWVz
c2FnZSYmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5KFVzZXJN
ZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOworI2Vu
ZGlmCisKICAgICBlbnVtIGNsYXNzIElzV2VhayB7IE5vLCBZZXMgfTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBXZWFrT3JTdHJvbmdQdHIgewogICAgIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBkMGFiOTQzNTUzMy4uZTExOWU2Y2I5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTc3LDQgKzc3LDkgQEAgbWVz
c2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFBsdWctaW4g
bWVzc2FnZXMuCiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFN0cmluZyBw
YWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoKQogICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJ
bnRlcmFjdGlvbih1aW50MzJfdCBoYXNoKQorCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkNvbnRleHQoc3RydWN0IFdlYktpdDo6VXNlck1l
c3NhZ2UgdXNlck1lc3NhZ2UpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRoUmVwbHko
c3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpIC0+IChzdHJ1Y3QgV2ViS2l0
OjpVc2VyTWVzc2FnZSByZXBseU1lc3NhZ2UpIEFzeW5jCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4
IDljYTFjNmIwYjJkLi4wYTg0YTc1OTBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNpbmNs
dWRlICJVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5
Lmg+CkBAIC01Niw0ICs1NywxNSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRM
YXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbAogICAgIH0KIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJDb250ZXh0V2l0aFJlcGx5
KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2Fn
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoY29uc3QgYXV0byYgdXNlck1l
c3NhZ2VIYW5kbGVyID0gbV9wcm9jZXNzUG9vbC0+dXNlck1lc3NhZ2VIYW5kbGVyKCkpCisgICAg
ICAgIHVzZXJNZXNzYWdlSGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZVRvV2Vi
Q29udGV4dChVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgc2VuZE1lc3NhZ2VUb1dlYkNv
bnRleHRXaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsK
K30KKwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKaW5kZXggMDg2N2Q5ODNlNWQuLjU0MGUzYmM2ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMjgsNyArMjgsOSBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIK
KyNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0xNjYsNCArMTY4LDE5IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzaG93RW1vamlQaWNrZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2FyZXRS
ZWN0LCBDb21wbGV0aW9uCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTaG93RW1vamlDaG9vc2VyKFdF
QktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSksIGNhcmV0UmVjdCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dl
YlZpZXdXaXRoUmVwbHkoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFVzZXJNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghV0VC
S0lUX0lTX1dFQl9WSUVXKHZpZXdXaWRnZXQoKSkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoVXNlck1lc3NhZ2UobWVzc2FnZS5uYW1lLCBXRUJLSVRfVVNFUl9NRVNTQUdFX1VOSEFORExF
RF9NRVNTQUdFKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3ZWJraXRXZWJWaWV3
RGlkUmVjZWl2ZVVzZXJNZXNzYWdlKFdFQktJVF9XRUJfVklFVyh2aWV3V2lkZ2V0KCkpLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7
CisgICAgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10o
VXNlck1lc3NhZ2UmJikgeyB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCmluZGV4IDkwMmVl
NmY1MzNlLi42ZDFiN2M1ZjdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3Bl
L1dlYlBhZ2VQcm94eVdQRS5jcHAKQEAgLTgyLDQgKzgyLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJl
cGx5KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVz
c2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzdGF0aWNfY2FzdDxQYWdlQ2xp
ZW50SW1wbCY+KHBhZ2VDbGllbnQoKSkuc2VuZE1lc3NhZ2VUb1dlYlZpZXcoV1RGTW92ZShtZXNz
YWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIHNl
bmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNz
YWdlJiYpIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVu
c2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmgKaW5kZXggOTg0YzNhOTQ3NTIuLjhjOTk1
NWQ3Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2Vy
LmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogCiAgICAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgdm9pZCBpbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiwgQVBJOjpP
YmplY3QqKTsKIAorICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHRlbnNpb24uZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBXZWJLaXRFeHRlbnNp
b25NYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5j
cHAKaW5kZXggZjA1ZGU4ZTUxMjQuLjhlYjUxNzlmYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMjMsMTAgKzIzLDEzIEBACiAjaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HQ0Nv
bnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL1dURkdUeXBlLmg+CkBAIC0xMTEsNiArMTE0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogZW51bSB7CiAgICAgUEFHRV9DUkVBVEVELAorICAgIFVTRVJfTUVTU0FHRV9SRUNFSVZF
RCwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMTQ2LDYgKzE1MCwyOCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9jbGFzc19pbml0KFdlYktpdFdlYkV4dGVuc2lvbkNsYXNz
KiBrbGFzcykKICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKICAgICAg
ICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9QQUdFKTsKKworICAg
IC8qKgorICAgICAqIFdlYktpdFdlYkV4dGVuc2lvbjo6dXNlci1tZXNzYWdlLXJlY2VpdmVkOgor
ICAgICAqIEBleHRlbnNpb246IHRoZSAjV2ViS2l0V2ViRXh0ZW5zaW9uIG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBtZXNzYWdlOiB0aGUgI1dlYktpdFVzZXJNZXNzYWdl
IHJlY2VpdmVkCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSAj
V2ViS2l0VXNlck1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSB0aGUKKyAgICAgKiAjV2ViS2l0V2Vi
Q29udGV4dCBjb3JyZXNwb25kaW5nIHRvIEBleHRlbnNpb24uIE1lc3NhZ2VzIHNlbnQgYnkgI1dl
YktpdFdlYkNvbnRleHQKKyAgICAgKiBhcmUgYWx3YXlzIGJyb2FkY2FzdGVkIHRvIGFsbCAjV2Vi
S2l0V2ViRXh0ZW5zaW9uPCEtLSAtLT5zIGFuZCB0aGV5IGNhbid0IGJlCisgICAgICogcmVwbGll
ZCB0by4gQ2FsbGluZyB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKSB3aWxsIGRvIG5v
dGhpbmcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIHNpZ25hbHNb
VVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInVzZXItbWVz
c2FnZS1yZWNlaXZlZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxw
dHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBHX1RZUEVf
Tk9ORSwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdFKTsKIH0KIAogY2xhc3Mg
V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6Q2xpZW50IHsKQEAgLTIwMCw2ICsyMjYsMTMgQEAgV2ViS2l0V2ViRXh0ZW5z
aW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKICAg
ICByZXR1cm4gZXh0ZW5zaW9uOwogfQogCit2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2Vp
dmVVc2VyTWVzc2FnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgVXNlck1lc3NhZ2Um
JiBtZXNzYWdlKQoreworICAgIC8vIFNpbmsgdGhlIGZsb2F0aW5nIHJlZi4KKyAgICBHUmVmUHRy
PFdlYktpdFVzZXJNZXNzYWdlPiB1c2VyTWVzc2FnZSA9IHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRl
KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CisgICAgZ19zaWduYWxf
ZW1pdChleHRlbnNpb24sIHNpZ25hbHNbVVNFUl9NRVNTQUdFX1JFQ0VJVkVEXSwgMCwgdXNlck1l
c3NhZ2UuZ2V0KCkpOworfQorCiB2b2lkIHdlYmtpdFdlYkV4dGVuc2lvblNldEdhcmJhZ2VDb2xs
ZWN0T25QYWdlRGVzdHJveShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKIHsKICNpZiBF
TkFCTEUoREVWRUxPUEVSX01PREUpCkBAIC0yMjksMyArMjYyLDY4IEBAIFdlYktpdFdlYlBhZ2Uq
IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uLCBndWluCiAKICAgICByZXR1cm4gMDsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dDoKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdl
YkV4dGVuc2lvbgorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKiBAY2FuY2Vs
bGFibGU6IChudWxsYWJsZSk6IGEgI0dDYW5jZWxsYWJsZSBvciAlTlVMTCB0byBpZ25vcmUKKyAq
IEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogKG51bGxhYmxlKTogQSAjR0FzeW5jUmVhZHlDYWxs
YmFjayB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVkIG9yICVOVUxMCisgKiBA
dXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rp
b24KKyAqCisgKiBTZW5kIEBtZXNzYWdlIHRvIHRoZSAjV2ViS2l0V2ViQ29udGV4dCBjb3JyZXNw
b25kaW5nIHRvIEBleHRlbnNpb24uIElmIEBtZXNzYWdlIGlzIGZsb2F0aW5nLCBpdCdzIGNvbnN1
bWVkLgorICoKKyAqIElmIHlvdSBkb24ndCBleHBlY3QgYW55IHJlcGx5LCBvciB5b3Ugc2ltcGx5
IHdhbnQgdG8gaWdub3JlIGl0LCB5b3UgY2FuIHBhc3MgJU5VTEwgYXMgQGNhbGJhY2suCisgKiBX
aGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4g
WW91IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90
b19jb250ZXh0X2ZpbmlzaCgpIHRvIGdldCB0aGUgbWVzc2FnZSByZXBseS4KKyAqCisgKiBTaW5j
ZTogMi4yOAorICovCit2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19j
b250ZXh0KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRVc2VyTWVzc2FnZSog
bWVzc2FnZSwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBj
YWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworCisgICAgLy8gV2Ugc2luayB0aGUgcmVm
ZXJlbmNlIGluIGNhc2Ugb2YgYmVpbmcgZmxvYXRpbmcuCisgICAgR1JlZlB0cjxXZWJLaXRVc2Vy
TWVzc2FnZT4gYWRvcHRlZE1lc3NhZ2UgPSBtZXNzYWdlOworICAgIGlmICghY2FsbGJhY2spIHsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTZW5kTWVzc2FnZVRvV2ViQ29udGV4
dCh3ZWJraXRVc2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNr
X25ldyhleHRlbnNpb24sIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKKyAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiBjb21wbGV0aW9uSGFuZGxlciA9
IFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oVXNlck1lc3NhZ2UmJiByZXBseU1lc3NhZ2UpIHsKKyAg
ICAgICAgc3dpdGNoIChyZXBseU1lc3NhZ2UudHlwZSkgeworICAgICAgICBjYXNlIFVzZXJNZXNz
YWdlOjpUeXBlOjpOdWxsOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFz
ay5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJhdGlvbiB3
YXMgY2FuY2VsbGVkIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlck1l
c3NhZ2U6OlR5cGU6Ok1lc3NhZ2U6CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIo
dGFzay5nZXQoKSwgZ19vYmplY3RfcmVmX3Npbmsod2Via2l0VXNlck1lc3NhZ2VDcmVhdGUoV1RG
TW92ZShyZXBseU1lc3NhZ2UpKSksIHN0YXRpY19jYXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVj
dF91bnJlZikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlck1lc3NhZ2U6
OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5n
ZXQoKSwgV0VCS0lUX1VTRVJfTUVTU0FHRV9FUlJPUiwgcmVwbHlNZXNzYWdlLmVycm9yQ29kZSwg
XygiTWVzc2FnZSAlcyB3YXMgbm90IGhhbmRsZWQiKSwgcmVwbHlNZXNzYWdlLm5hbWUuZGF0YSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2VuZE1lc3NhZ2VUb1dlYkNvbnRleHRXaXRo
UmVwbHkod2Via2l0VXNlck1lc3NhZ2VHZXRNZXNzYWdlKG1lc3NhZ2UpKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRf
bWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaDoKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4
dGVuc2lvbgorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBs
b2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3IKKyAqCisgKiBGaW5pc2ggYW4gYXN5
bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl9leHRlbnNpb25fc2Vu
ZF9tZXNzYWdlX3RvX2NvbnRleHQoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6
IGEgI1dlYktpdFVzZXJNZXNzYWdlIHdpdGggdGhlIHJlcGx5IG9yICVOVUxMIGluIGNhc2Ugb2Yg
ZXJyb3IuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaChXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9y
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5TSU9OKGV4
dGVuc2lvbiksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192
YWxpZChyZXN1bHQsIGV4dGVuc2lvbiksIG51bGxwdHIpOworCisgICAgcmV0dXJuIFdFQktJVF9V
U0VSX01FU1NBR0UoZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKEdfVEFTSyhyZXN1bHQpLCBlcnJv
cikpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2
YXRlLmgKaW5kZXggZTI3MzlhOTBkMjQuLmI1NDM0MGZiYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgKQEAgLTIwLDcgKzIwLDkgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJV
c2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgogCiBXZWJLaXRX
ZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlKik7Cit2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVVc2VyTWVzc2FnZShXZWJL
aXRXZWJFeHRlbnNpb24qLCBXZWJLaXQ6OlVzZXJNZXNzYWdlJiYpOwogdm9pZCB3ZWJraXRXZWJF
eHRlbnNpb25TZXRHYXJiYWdlQ29sbGVjdE9uUGFnZURlc3Ryb3koV2ViS2l0V2ViRXh0ZW5zaW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggZjkxZDFiZTFmODgu
LjBjN2U3Zjc3NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC00
MSwxMCArNDEsMTIgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJl
c3BvbnNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYkVkaXRvclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJI
aXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViUHJvY2Vzc0VudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CkBA
IC03MCw2ICs3Miw3IEBAIGVudW0gewogICAgIEZPUk1fQ09OVFJPTFNfQVNTT0NJQVRFRCwKICAg
ICBGT1JNX0NPTlRST0xTX0FTU09DSUFURURfRk9SX0ZSQU1FLAogICAgIFdJTExfU1VCTUlUX0ZP
Uk0sCisgICAgVVNFUl9NRVNTQUdFX1JFQ0VJVkVELAogCiAgICAgTEFTVF9TSUdOQUwKIH07CkBA
IC02NjcsNiArNjcwLDM0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0
KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCiAgICAgICAgIFdFQktJVF9UWVBFX0ZSQU1FLAog
ICAgICAgICBHX1RZUEVfUFRSX0FSUkFZLAogICAgICAgICBHX1RZUEVfUFRSX0FSUkFZKTsKKwor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYlBhZ2U6OnVzZXItbWVzc2FnZS1yZWNlaXZlZDoKKyAg
ICAgKiBAd2ViX3BhZ2U6IHRoZSAjV2ViS2l0V2ViUGFnZSBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgKiBAbWVzc2FnZTogdGhlICNXZWJLaXRVc2VyTWVzc2FnZSByZWNlaXZl
ZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgI1dlYktpdFVz
ZXJNZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gdGhlCisgICAgICogI1dlYktpdFdlYlZpZXcgY29y
cmVzcG9uZGluZyB0byBAd2ViX3BhZ2UuIFlvdSBjYW4gcmVwbHkgdG8gdGhlIG1lc3NhZ2UKKyAg
ICAgKiB1c2luZyB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkoKS4KKyAgICAgKgorICAg
ICAqIFlvdSBjYW4gaGFuZGxlIHRoZSB1c2VyIG1lc3NhZ2UgYXN5bmNocm9ub3VzbHkgYnkgY2Fs
bGluZyBnX29iamVjdF9yZWYoKSBvbgorICAgICAqIEBtZXNzYWdlIGFuZCByZXR1cm5pbmcgJVRS
VUUuIElmIHRoZSBsYXN0IHJlZmVyZW5jZSBvZiBAbWVzc2FnZSBpcyByZW1vdmVkCisgICAgICog
YW5kIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHJlcGxpZWQsIHRoZSBvcGVyYXRpb24gaW4gdGhlICNX
ZWJLaXRXZWJWaWV3IHdpbGwKKyAgICAgKiBmaW5pc2ggd2l0aCBlcnJvciAlV0VCS0lUX1VTRVJf
TUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRS4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVUUlVF
IGlmIHRoZSBtZXNzYWdlIHdhcyBoYW5kbGVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICAgICAq
CisgICAgICogU2luY2U6IDIuMjgKKyAgICAgKi8KKyAgICBzaWduYWxzW1VTRVJfTUVTU0FHRV9S
RUNFSVZFRF0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJ1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQi
LAorICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAwLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hh
bmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAg
ICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfVVNFUl9NRVNTQUdF
KTsKIH0KIAogV2ViUGFnZSogd2Via2l0V2ViUGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSAqd2Vi
UGFnZSkKQEAgLTczMyw2ICs3NjQsMTQgQEAgdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1l
c3NhZ2UoV2ViS2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmEKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2Vp
dmVVc2VyTWVzc2FnZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBVc2VyTWVzc2FnZSYmIG1lc3Nh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgLy8gU2luayB0aGUgZmxvYXRpbmcgcmVmLgorICAgIEdSZWZQdHI8V2Vi
S2l0VXNlck1lc3NhZ2U+IHVzZXJNZXNzYWdlID0gd2Via2l0VXNlck1lc3NhZ2VDcmVhdGUoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGdib29sZWFu
IHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViUGFnZSwgc2lnbmFsc1tVU0VSX01F
U1NBR0VfUkVDRUlWRURdLCAwLCB1c2VyTWVzc2FnZS5nZXQoKSwgJnJldHVyblZhbHVlKTsKK30K
KwogLyoqCiAgKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudDoKICAqIEB3ZWJfcGFn
ZTogYSAjV2ViS2l0V2ViUGFnZQpAQCAtODIyLDMgKzg2MSw2OCBAQCBXZWJLaXRXZWJFZGl0b3Iq
IHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAg
ICByZXR1cm4gd2ViUGFnZS0+cHJpdi0+d2ViRWRpdG9yLmdldCgpOwogfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldzoKKyAqIEB3ZWJfcGFnZTogYSAjV2Vi
S2l0V2ViUGFnZQorICogQG1lc3NhZ2U6IGEgI1dlYktpdFVzZXJNZXNzYWdlCisgKiBAY2FuY2Vs
bGFibGU6IChudWxsYWJsZSk6IGEgI0dDYW5jZWxsYWJsZSBvciAlTlVMTCB0byBpZ25vcmUKKyAq
IEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogKG51bGxhYmxlKTogQSAjR0FzeW5jUmVhZHlDYWxs
YmFjayB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVkIG9yICVOVUxMCisgKiBA
dXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rp
b24KKyAqCisgKiBTZW5kIEBtZXNzYWdlIHRvIHRoZSAjV2ViS2l0V2ViVmlldyBjb3JyZXNwb25k
aW5nIHRvIEB3ZWJfcGFnZS4gSWYgQG1lc3NhZ2UgaXMgZmxvYXRpbmcsIGl0J3MgY29uc3VtZWQu
CisgKgorICogSWYgeW91IGRvbid0IGV4cGVjdCBhbnkgcmVwbHksIG9yIHlvdSBzaW1wbHkgd2Fu
dCB0byBpZ25vcmUgaXQsIHlvdSBjYW4gcGFzcyAlTlVMTCBhcyBAY2FsbGJhY2suCisgKiBXaGVu
IHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4gWW91
IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19m
aW5pc2goKSB0byBnZXQgdGhlIG1lc3NhZ2UgcmVwbHkuCisgKgorICogU2luY2U6IDIuMjgKKyAq
Lwordm9pZCB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXcoV2ViS2l0V2ViUGFn
ZSogd2ViUGFnZSwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIEdDYW5jZWxsYWJsZSogY2Fu
Y2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRh
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOwor
CisgICAgLy8gV2Ugc2luayB0aGUgcmVmZXJlbmNlIGluIGNhc2Ugb2YgYmVpbmcgZmxvYXRpbmcu
CisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gYWRvcHRlZE1lc3NhZ2UgPSBtZXNzYWdl
OworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgd2ViUGFnZS0+cHJpdi0+d2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZW5kTWVzc2FnZVRvV2ViVmlldyh3ZWJraXRV
c2VyTWVzc2FnZUdldE1lc3NhZ2UobWVzc2FnZSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJQYWdl
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGFzayA9IFdURk1v
dmUodGFzayldKFVzZXJNZXNzYWdlJiYgcmVwbHlNZXNzYWdlKSB7CisgICAgICAgIHN3aXRjaCAo
cmVwbHlNZXNzYWdlLnR5cGUpIHsKKyAgICAgICAgY2FzZSBVc2VyTWVzc2FnZTo6VHlwZTo6TnVs
bDoKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIEdfSU9f
RVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVELCBfKCJPcGVyYXRpb24gd2FzIGNhbmNlbGxlZCIp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpN
ZXNzYWdlOgorICAgICAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGdf
b2JqZWN0X3JlZl9zaW5rKHdlYmtpdFVzZXJNZXNzYWdlQ3JlYXRlKFdURk1vdmUocmVwbHlNZXNz
YWdlKSkpLCBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVzZXJNZXNzYWdlOjpUeXBlOjpFcnJvcjoK
KyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2suZ2V0KCksIFdFQktJVF9V
U0VSX01FU1NBR0VfRVJST1IsIHJlcGx5TWVzc2FnZS5lcnJvckNvZGUsIF8oIk1lc3NhZ2UgJXMg
d2FzIG5vdCBoYW5kbGVkIiksIHJlcGx5TWVzc2FnZS5uYW1lLmRhdGEoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH07CisgICAgd2ViUGFnZS0+cHJpdi0+d2ViUGFnZS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlbmRNZXNzYWdlVG9X
ZWJWaWV3V2l0aFJlcGx5KHdlYmtpdFVzZXJNZXNzYWdlR2V0TWVzc2FnZShtZXNzYWdlKSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3BhZ2Vf
c2VuZF9tZXNzYWdlX3RvX3ZpZXdfZmluaXNoOgorICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQ
YWdlCisgKiBAcmVzdWx0OiBhICNHQXN5bmNSZXN1bHQKKyAqIEBlcnJvcjogcmV0dXJuIGxvY2F0
aW9uIGZvciBlcnJvciBvciAlTlVMTCB0byBpZ25vcgorICoKKyAqIEZpbmlzaCBhbiBhc3luY2hy
b25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdl
X3RvX3ZpZXcoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgI1dlYktpdFVz
ZXJNZXNzYWdlIHdpdGggdGhlIHJlcGx5IG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCisgKgor
ICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0VXNlck1lc3NhZ2UqIHdlYmtpdF93ZWJfcGFnZV9z
ZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2goV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR0FzeW5j
UmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgbnVsbHB0cik7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwgd2ViUGFnZSksIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIFdFQktJVF9VU0VSX01FU1NBR0UoZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVy
KEdfVEFTSyhyZXN1bHQpLCBlcnJvcikpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZVByaXZhdGUuaAppbmRleCA4ZGNkNDJhOWRiYy4uMjQwNTE0ODNlZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0xNywxNSArMTcsMTUg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgV2ViS2l0
V2ViUGFnZVByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2Fn
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAK
IFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViS2l0OjpXZWJQYWdlKik7CiB2
b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpEaWN0aW9uYXJ5JiBtZXNzYWdlKTsKK3ZvaWQgd2Vi
a2l0V2ViUGFnZURpZFJlY2VpdmVVc2VyTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgV2ViS2l0OjpV
c2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6VXNlck1lc3NhZ2Um
Jik+JiYpOwogV2ViS2l0OjpXZWJQYWdlKiB3ZWJraXRXZWJQYWdlR2V0UGFnZShXZWJLaXRXZWJQ
YWdlKik7CiAKLSNlbmRpZiAvLyBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJF
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IDM0MTM2YTM3ZDI1Li41NDIyZmU1N2YxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRE
ZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03NiwxMSAr
NzcsMjMgQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJLSVRf
QVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Ug
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0
ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0ICAgICAgICAoV2ViS2l0
V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxh
YmxlICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
ICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNzYWdlICoK
K3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaCAoV2Vi
S2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAqcmVzdWx0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3Ig
ICAgICAgICAgICAqKmVycm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViUGFnZS5oCmluZGV4IDBhNDg2ZGNiMjg1Li4zMTVhYzhiNmQ4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRGcmFtZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlck1lc3NhZ2UuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtpdGRv
bS93ZWJraXRkb20uaD4KIApAQCAtNzQsMjIgKzc1LDM0IEBAIHN0cnVjdCBfV2ViS2l0V2ViUGFn
ZUNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfcGFnZV9nZXRfdHlw
ZSAgICAgICAgICh2b2lkKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZSAgICAgICAgICAgICAg
ICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdERPTURvY3VtZW50ICoKLXdlYmtpdF93
ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50IChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3
ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X3dlYl9wYWdlX2dldF9pZCAg
ICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRf
aWQgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VC
S0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSAgICAgICAgICAo
V2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF91cmkgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIFdl
YktpdEZyYW1lICoKLXdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSAgIChXZWJLaXRXZWJQ
YWdlICp3ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUgICAgICAgICAg
ICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViRWRp
dG9yICoKLXdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yICAgICAgIChXZWJLaXRXZWJQYWdlICp3
ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9w
YWdlX3NlbmRfbWVzc2FnZV90b192aWV3ICAgICAgICAoV2ViS2l0V2ViUGFnZSAgICAgICp3ZWJf
cGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFVzZXJNZXNzYWdlICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrIGNh
bGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bv
aW50ZXIgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJNZXNz
YWdlICoKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlld19maW5pc2ggKFdlYktp
dFdlYlBhZ2UgICAgICAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICoqZXJyb3Ip
OwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNp
b24uaAppbmRleCAxYzk1ZjFkM2FlZC4uYmM0YjQyNDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5z
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0U2NyaXB0V29ybGQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
VmVyc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJFeHRlbnNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0
V2ViRXh0ZW5zaW9uLmgKaW5kZXggYTZmZmI0ODUwNDguLjA5YWVlMzhjZGNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRX
ZWJFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJQ
YWdlLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTc2LDExICs3NywyMyBAQCBzdHJ1Y3QgX1dlYktp
dFdlYkV4dGVuc2lvbkNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF90eXBlICh2b2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBl
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViUGFn
ZSAqCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAoV2ViS2l0V2ViRXh0ZW5zaW9uICpl
eHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAg
ICAgICBwYWdlX2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAg
ICAgcGFnZV9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fc2Vu
ZF9tZXNzYWdlX3RvX2NvbnRleHQgICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VXNlck1lc3NhZ2UgICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNhbmNlbGxhYmxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgIHVzZXJfZGF0YSk7
CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlck1lc3NhZ2UgKgord2Via2l0X3dlYl9leHRlbnNpb25f
c2VuZF9tZXNzYWdlX3RvX2NvbnRleHRfZmluaXNoIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVu
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0FzeW5jUmVzdWx0ICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICoqZXJyb3IpOwog
CiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJQYWdlLmgKaW5kZXggOTU1ZjA4
N2U0ZjcuLjE4NDFlNGFjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViUGFnZS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRGcmFtZS5oPgorI2luY2x1ZGUgPHdw
ZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJFZGl0b3IuaD4K
ICNpbmNsdWRlIDx3cGUvd2Via2l0ZG9tLmg+CiAKQEAgLTcyLDIyICs3MywzNSBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYlBhZ2VDbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2Vi
X3BhZ2VfZ2V0X3R5cGUgICAgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUg
ICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRET01Eb2N1bWVu
dCAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCAoV2ViS2l0V2ViUGFnZSAqd2Vi
X3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgICAgICAgICAgICAoV2Vi
S2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJIGd1aW50NjQKLXdlYmtpdF93ZWJf
cGFnZV9nZXRfaWQgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJraXRf
d2ViX3BhZ2VfZ2V0X2lkICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJf
cGFnZSk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3dlYl9wYWdlX2dldF91
cmkgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9n
ZXRfdXJpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAog
V0VCS0lUX0FQSSBXZWJLaXRGcmFtZSAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUg
ICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2Zy
YW1lICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCiBXRUJLSVRfQVBJ
IFdlYktpdFdlYkVkaXRvciAqCi13ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAgICAgICAoV2Vi
S2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyAgICAgICAgKFdlYktpdFdlYlBh
Z2UgICAgICAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVc2VyTWVzc2FnZSAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgKmNhbmNlbGxhYmxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVh
ZHlDYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRVc2VyTWVzc2FnZSAqCit3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3ZpZXdf
ZmluaXNoIChXZWJLaXRXZWJQYWdlICAgICAgKndlYl9wYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICpyZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAg
ICAgICAqKmVycm9yKTsKKwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNp
b25zLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNpb25zLTEuMC1zZWN0aW9ucy50eHQKaW5k
ZXggZTQ0ODI5NmQ5ZmEuLjVmZGE5NTgwZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNpb25zLTEu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0xLjAtc2VjdGlvbnMudHh0CkBAIC0x
Myw2ICsxMyw4IEBAIFdlYktpdFdlYkV4dGVuc2lvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlh
bGl6ZUZ1bmN0aW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplV2l0aFVzZXJEYXRhRnVu
Y3Rpb24KIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlCit3ZWJraXRfd2ViX2V4dGVuc2lv
bl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dAord2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNz
YWdlX3RvX2NvbnRleHRfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2Vi
RXh0ZW5zaW9uQ2xhc3MKQEAgLTM3LDYgKzM5LDggQEAgd2Via2l0X3dlYl9wYWdlX2dldF9pZAog
d2Via2l0X3dlYl9wYWdlX2dldF91cmkKIHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZQog
d2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IKK3dlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2Vf
dG9fdmlldword2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaAogCiA8
U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlBhZ2VDbGFzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1l
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
d3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggNjllZmRkOTYzMzEuLmQ1ZDMzNTRmMzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0U2NyaXB0V29ybGQuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRVUklSZXNwb25zZS5o
PgorI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJL
aXRXZWJFZGl0b3IuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdFdlYkhpdFRlc3RSZXN1bHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0NWVmZWE3Yzk2NC4uMjJiMzg3NTcyMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI2OCw2ICsy
NjgsOCBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBz
dHJ1Y3QgUHJpbnRJbmZvOworc3RydWN0IFRleHRJbnB1dENvbnRleHQ7CitzdHJ1Y3QgVXNlck1l
c3NhZ2U7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOwogc3RydWN0IFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtMTYz
MCw2ICsxNjMyLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50U25hcHNob3RBdFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFwc2hv
dE9wdGlvbnMsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Jik7CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkK
KyAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3NhZ2UmJik7CisgICAg
dm9pZCBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOworI2VuZGlmCisKICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMTUwNjQ4OTc4NGEuLmY2YzAy
NjQxMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU4MCw0ICs1ODAsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogICAgIFN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQoc3RydWN0IFdlYkNvcmU6OlN5
c3RlbVByZXZpZXdJbmZvIHByZXZpZXdJbmZvLCBTdHJpbmcgbWVzc2FnZSkKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgU2VuZE1lc3NhZ2VUb1dlYkV4
dGVuc2lvbihzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkKKyAgICBTZW5k
TWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdl
IHVzZXJNZXNzYWdlKSAtPiAoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgcmVwbHlNZXNzYWdl
KSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5iMDU5OGM2MjcwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIlVzZXJNZXNz
YWdlLmgiCisjaW5jbHVkZSAiV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIldl
YktpdFVzZXJNZXNzYWdlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgV2ViUGFnZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShVc2VyTWVzc2Fn
ZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogZXh0ZW5zaW9uID0gV2ViS2l0RXh0ZW5zaW9u
TWFuYWdlcjo6c2luZ2xldG9uKCkuZXh0ZW5zaW9uKCk7CisgICAgaWYgKCFleHRlbnNpb24pIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoVXNlck1lc3NhZ2UobWVzc2FnZS5uYW1lLCBXRUJL
SVRfVVNFUl9NRVNTQUdFX1VOSEFORExFRF9NRVNTQUdFKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0
ZW5zaW9uLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKCFwYWdlKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJNZXNzYWdlKG1lc3NhZ2UubmFtZSwgV0VCS0lUX1VT
RVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVVc2VyTWVzc2FnZShwYWdlLCBXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAg
c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShV
c2VyTWVzc2FnZSYmKSB7IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDc5OGQwODYxY2U2Li5kZDYwZThkODFlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMTcsNiArMTE3LDcgQEAg
Y2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneTsKIGNsYXNzIFdlYlBhZ2U7
CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKK3N0cnVjdCBVc2VyTWVzc2FnZTsKIHN0cnVjdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CkBAIC00NjUsNiArNDY2LDEw
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0
aW5nKCk7CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3NhZ2UmJik7CisjZW5kaWYKKwogICAgIFJl
ZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAogICAgIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCAyNDc2YzQzOGJjMy4uYzdmM2UwYWQ4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNTcsNCArMTU3LDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBVbmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBoYW5kbGUpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorICAgIFNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oc3RydWN0IFdlYktpdDo6VXNl
ck1lc3NhZ2UgdXNlck1lc3NhZ2UpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAppbmRleCA5YjAwMzc0NGY5Yi4uMDA3ZjA0
NGQzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
R0xpYi5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAKKyNpbmNsdWRlICJXZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmgiCisj
aW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC05Nyw0ICs5
OSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKIH0KIAordm9p
ZCBXZWJQcm9jZXNzOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdlJiYgbWVz
c2FnZSkKK3sKKyAgICBpZiAoYXV0byogZXh0ZW5zaW9uID0gV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
cjo6c2luZ2xldG9uKCkuZXh0ZW5zaW9uKCkpCisgICAgICAgIHdlYmtpdFdlYkV4dGVuc2lvbkRp
ZFJlY2VpdmVVc2VyTWVzc2FnZShleHRlbnNpb24sIFdURk1vdmUobWVzc2FnZSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA2ZDk1YzY3YjcyMC4uNmJhNmZiMmU5YmYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAx
OS0xMC0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dUS11bV1BFXSBBZGQgdXNlciBtZXNzYWdlcyBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjg0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8gY2hlY2sgdGhlIG5l
dyBBUEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0Ojp3ZWJWaWV3VXNlck1l
c3NhZ2VSZWNlaXZlZENhbGxiYWNrKToKKyAgICAgICAgKFVzZXJNZXNzYWdlVGVzdDo6d2ViQ29u
dGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChVc2VyTWVzc2FnZVRl
c3Q6OlVzZXJNZXNzYWdlVGVzdCk6CisgICAgICAgIChVc2VyTWVzc2FnZVRlc3Q6On5Vc2VyTWVz
c2FnZVRlc3QpOgorICAgICAgICAoVXNlck1lc3NhZ2VUZXN0OjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgIChVc2VyTWVzc2FnZVRlc3Q6OnNlbmRNZWRzc2FnZVRvQWxsRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChVc2VyTWVzc2FnZVRlc3Q6OnZpZXdVc2VyTWVzc2FnZVJlY2VpdmVkKToKKyAgICAgICAg
KFVzZXJNZXNzYWdlVGVzdDo6Y29udGV4dFVzZXJNZXNzYWdlUmVjZWl2ZWQpOgorICAgICAgICAo
VXNlck1lc3NhZ2VUZXN0Ojp3YWl0VW50aWxWaWV3TWVzc2FnZVJlY2VpdmVkKToKKyAgICAgICAg
KFVzZXJNZXNzYWdlVGVzdDo6d2FpdFVudGlsQ29udGV4dE1lc3NhZ2VSZWNlaXZlZCk6CisgICAg
ICAgIChyZWFkRmlsZURlc2NyaXRwb3IpOgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvblVzZXJN
ZXNzYWdlcyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKGRvY3VtZW50
TG9hZGVkQ2FsbGJhY2spOgorICAgICAgICAocGFnZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKToK
KyAgICAgICAgKHBhZ2VDcmVhdGVkQ2FsbGJhY2spOgorICAgICAgICAoZXh0ZW5zaW9uTWVzc2Fn
ZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlh
bGl6ZV93aXRoX3VzZXJfZGF0YSk6CisKIDIwMTktMTAtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQ2hlY2sgd2UgZG9u
J3QgbGVhayB0aGUgV2ViS2l0V2ViQ29udGV4dCBpbiBhbGwgdGVzdHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwCmluZGV4IDI0ZTEzNjdjYTdhLi4wNmIwM2FlOTc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJXZWJW
aWV3VGVzdC5oIgorI2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KIAogc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gc2NyaXB0RGlhbG9nUmVz
dWx0OwpAQCAtNTM3LDYgKzUzOCwyNjMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvblBh
Z2VJRChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBjaGVja1RpdGxlKHRl
c3QsIHByb3h5LmdldCgpLCAiVGl0bGU2Iik7CiB9CiAKK2NsYXNzIFVzZXJNZXNzYWdlVGVzdCA6
IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RShVc2VyTWVzc2FnZVRlc3QpOworCisgICAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdVc2VyTWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJNZXNzYWdlKiBt
ZXNzYWdlLCBVc2VyTWVzc2FnZVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gdGVz
dC0+dmlld1VzZXJNZXNzYWdlUmVjZWl2ZWQobWVzc2FnZSk7CisgICAgfQorCisgICAgc3RhdGlj
IGdib29sZWFuIHdlYkNvbnRleHRVc2VyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0V2Vi
Q29udGV4dCosIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlLCBVc2VyTWVzc2FnZVRlc3QqIHRl
c3QpCisgICAgeworICAgICAgICByZXR1cm4gdGVzdC0+Y29udGV4dFVzZXJNZXNzYWdlUmVjZWl2
ZWQobWVzc2FnZSk7CisgICAgfQorCisgICAgVXNlck1lc3NhZ2VUZXN0KCkKKyAgICB7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAidXNlci1tZXNzYWdlLXJl
Y2VpdmVkIiwgR19DQUxMQkFDSyh3ZWJDb250ZXh0VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNr
KSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAidXNlci1tZXNz
YWdlLXJlY2VpdmVkIiwgR19DQUxMQkFDSyh3ZWJWaWV3VXNlck1lc3NhZ2VSZWNlaXZlZENhbGxi
YWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgflVzZXJNZXNzYWdlVGVzdCgpCisgICAgeworICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJDb250ZXh0Lmdl
dCgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsK
KyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fd2ViVmlldywg
R19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CisgICAg
fQorCisgICAgV2ViS2l0VXNlck1lc3NhZ2UqIHNlbmRNZXNzYWdlKFdlYktpdFVzZXJNZXNzYWdl
KiBtZXNzYWdlLCBHRXJyb3IqKiBlcnJvciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1lc3NhZ2UpKTsKKyAg
ICAgICAgbV9yZWNlaXZlZFZpZXdNZXNzYWdlID0gbnVsbHB0cjsKKyAgICAgICAgd2Via2l0X3dl
Yl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlKG1fd2ViVmlldywgbWVzc2FnZSwgbnVsbHB0ciwg
W10oR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewor
ICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFVzZXJNZXNzYWdlVGVzdCo+KHVz
ZXJEYXRhKTsKKyAgICAgICAgICAgIHRlc3QtPm1fcmVjZWl2ZWRWaWV3TWVzc2FnZSA9IGFkb3B0
R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoKHRlc3QtPm1f
d2ViVmlldywgcmVzdWx0LCAmdGVzdC0+bV9yZWNlaXZlZEVycm9yLm91dFB0cigpKSk7CisgICAg
ICAgICAgICBpZiAodGVzdC0+bV9yZWNlaXZlZFZpZXdNZXNzYWdlKQorICAgICAgICAgICAgICAg
IHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodGVz
dC0+bV9yZWNlaXZlZFZpZXdNZXNzYWdlLmdldCgpKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0LT5tX3JlY2VpdmVkRXJyb3IuZ2V0KCkp
OworICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgICAgIH0sIHRoaXMpOwor
ICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIGlmIChlcnJvcikK
KyAgICAgICAgICAgICplcnJvciA9IG1fcmVjZWl2ZWRFcnJvci5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIG1fcmVjZWl2ZWRWaWV3TWVzc2FnZS5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9BbGxFeHRlbnNpb25zKFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
ZXNzYWdlKSk7CisgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxs
X2V4dGVuc2lvbnMobV93ZWJDb250ZXh0LmdldCgpLCBtZXNzYWdlKTsKKyAgICB9CisKKyAgICBi
b29sIHZpZXdVc2VyTWVzc2FnZVJlY2VpdmVkKFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChtZXNzYWdlKSk7CisgICAgICAgIGlmICghZ19zdHJjbXAwKG1fZXhwZWN0ZWRWaWV3TWVz
c2FnZU5hbWUuZGF0YSgpLCB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpKSkg
eworICAgICAgICAgICAgbV9yZWNlaXZlZFZpZXdNZXNzYWdlID0gbWVzc2FnZTsKKyAgICAgICAg
ICAgIHF1aXRNYWluTG9vcCgpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIGNvbnRleHRVc2Vy
TWVzc2FnZVJlY2VpdmVkKFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtZXNzYWdl
KSk7CisgICAgICAgIGlmICghZ19zdHJjbXAwKG1fZXhwZWN0ZWRDb250ZXh0TWVzc2FnZU5hbWUu
ZGF0YSgpLCB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpKSkgeworICAgICAg
ICAgICAgbV9yZWNlaXZlZENvbnRleHRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICAgICAgICAgIHF1
aXRNYWluTG9vcCgpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBXZWJLaXRVc2VyTWVzc2FnZSogd2Fp
dFVudGlsVmlld01lc3NhZ2VSZWNlaXZlZChjb25zdCBjaGFyKiBtZXNzYWdlTmFtZSkKKyAgICB7
CisgICAgICAgIG1fZXhwZWN0ZWRWaWV3TWVzc2FnZU5hbWUgPSBtZXNzYWdlTmFtZTsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICBtX2V4cGVjdGVkVmlld01l
c3NhZ2VOYW1lID0geyB9OworICAgICAgICByZXR1cm4gbV9yZWNlaXZlZFZpZXdNZXNzYWdlLmdl
dCgpOworICAgIH0KKworICAgIFdlYktpdFVzZXJNZXNzYWdlKiB3YWl0VW50aWxDb250ZXh0TWVz
c2FnZVJlY2VpdmVkKGNvbnN0IGNoYXIqIG1lc3NhZ2VOYW1lKQorICAgIHsKKyAgICAgICAgbV9l
eHBlY3RlZENvbnRleHRNZXNzYWdlTmFtZSA9IG1lc3NhZ2VOYW1lOworICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIG1fZXhwZWN0ZWRDb250ZXh0TWVzc2FnZU5h
bWUgPSB7IH07CisgICAgICAgIHJldHVybiBtX3JlY2VpdmVkQ29udGV4dE1lc3NhZ2UuZ2V0KCk7
CisgICAgfQorCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gbV9yZWNlaXZlZFZpZXdN
ZXNzYWdlOworICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IG1fcmVjZWl2ZWRDb250ZXh0
TWVzc2FnZTsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gbV9yZWNlaXZlZEVycm9yOworICAg
IENTdHJpbmcgbV9leHBlY3RlZFZpZXdNZXNzYWdlTmFtZTsKKyAgICBDU3RyaW5nIG1fZXhwZWN0
ZWRDb250ZXh0TWVzc2FnZU5hbWU7Cit9OworCitzdGF0aWMgYm9vbCByZWFkRmlsZURlc2NyaXB0
b3IoaW50IGZkLCBjaGFyKiogY29udGVudHMsIGdzaXplKiBsZW5ndGgpCit7CisgICAgR1N0cmlu
ZyogYnVmZmVyU3RyaW5nID0gZ19zdHJpbmdfbmV3KG51bGxwdHIpOworICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIGdjaGFyIGJ1ZmZlcls0MDk2XTsKKyAgICAgICAgZ3NzaXplIGJ5dGVzUmVh
ZCA9IHJlYWQoZmQsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICBpZiAoYnl0ZXNS
ZWFkID09IC0xKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09
IEVXT1VMREJMT0NLKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBn
X3N0cmluZ19mcmVlKGJ1ZmZlclN0cmluZywgVFJVRSk7CisKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYnl0ZXNSZWFkKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX2xlbihidWZmZXJTdHJpbmcsIGJ1ZmZl
ciwgYnl0ZXNSZWFkKTsKKyAgICB9CisKKyAgICAqbGVuZ3RoID0gYnVmZmVyU3RyaW5nLT5sZW47
CisgICAgKmNvbnRlbnRzID0gZ19zdHJpbmdfZnJlZShidWZmZXJTdHJpbmcsIEZBTFNFKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uVXNlck1l
c3NhZ2VzKFVzZXJNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBO
b3JtYWwgbWVzc2FnZSB3aXRoIGEgcmVwbHkuCisgICAgYXV0byogbWVzc2FnZSA9IHdlYmtpdF91
c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkhlbGxvIiwgZ192YXJpYW50X25ldygicyIsICJXZWJQcm9j
ZXNzIikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1l
KG1lc3NhZ2UpLCA9PSwgIlRlc3QuSGVsbG8iKTsKKyAgICBhdXRvKiBwYXJhbWV0ZXJzID0gd2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHBhcmFtZXRlcnMpOworICAgIGNvbnN0IGNoYXIqIHBhcmFtZXRlciA9IG51bGxwdHI7
CisgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiJnMiLCAmcGFyYW1ldGVyKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIocGFyYW1ldGVyLCA9PSwgIldlYlByb2Nlc3MiKTsKKyAgICBnX2Fzc2Vy
dF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QobWVzc2FnZSkpOworICAgIGF1
dG8qIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKHJlcGx5KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF91c2VyX21lc3NhZ2VfZ2V0X25hbWUocmVwbHkpLCA9PSwgIlRlc3QuSGVsbG8iKTsKKyAg
ICBwYXJhbWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICBwYXJhbWV0ZXIgPSBudWxs
cHRyOworICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIiZzIiwgJnBhcmFtZXRlcik7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlciwgPT0sICJVSVByb2Nlc3MiKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QocmVwbHkpKTsKKworICAg
IC8vIE1lc3NhZ2Ugd2l0aCBubyBwYXJhbWV0ZXJzLgorICAgIG1lc3NhZ2UgPSB3ZWJraXRfdXNl
cl9tZXNzYWdlX25ldygiVGVzdC5QaW5nIiwgbnVsbHB0cik7CisgICAgZ19hc3NlcnRfbnVsbCh3
ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKG1lc3NhZ2UpKTsKKyAgICByZXBseSA9
IHRlc3QtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lT
X1VTRVJfTUVTU0FHRShyZXBseSkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9uYW1lKHJlcGx5KSwgPT0sICJUZXN0LlBvbmciKTsKKyAgICBnX2Fzc2VydF9u
dWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMocmVwbHkpKTsKKworICAgIC8v
IE1lc3NhZ2Ugd2l0aCBtYXliZSB0eXBlIGluIHBhcmFtZXRlcnMuCisgICAgbWVzc2FnZSA9IHdl
YmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0Lk9wdGlvbmFsIiwgZ192YXJpYW50X25ldygiKHNt
cykiLCAiSGVsbG8iLCAiV29ybGQiKSk7CisgICAgcmVwbHkgPSB0ZXN0LT5zZW5kTWVzc2FnZSht
ZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UocmVwbHkp
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBs
eSksID09LCAiVGVzdC5PcHRpb25hbCIpOworICAgIHBhcmFtZXRlcnMgPSB3ZWJraXRfdXNlcl9t
ZXNzYWdlX2dldF9wYXJhbWV0ZXJzKHJlcGx5KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBhcmFt
ZXRlcnMpOworICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIiZzIiwgJnBhcmFtZXRlcik7
CisgICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlciwgPT0sICJXb3JsZCIpOworICAgIG1lc3Nh
Z2UgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5PcHRpb25hbCIsIGdfdmFyaWFudF9u
ZXcoIihzbXMpIiwgIkhlbGxvIiwgbnVsbHB0cikpOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1l
c3NhZ2UobWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdF
KHJlcGx5KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X25h
bWUocmVwbHkpLCA9PSwgIlRlc3QuT3B0aW9uYWwiKTsKKyAgICBwYXJhbWV0ZXJzID0gd2Via2l0
X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhyZXBseSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChwYXJhbWV0ZXJzKTsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICImcyIsICZwYXJh
bWV0ZXIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIsID09LCAiTlVMTCIpOworCisg
ICAgLy8gTWVzc2FnZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgR1VuaXF1ZVB0cjxjaGFy
PiBmaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcigpLmRhdGEo
KSwgInNpbXBsZS5qc29uIiwgbnVsbHB0cikpOworICAgIHJlcGx5ID0gdGVzdC0+c2VuZE1lc3Nh
Z2Uod2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3QuT3BlbkZpbGUiLCBnX3ZhcmlhbnRfbmV3
KCJzIiwgZmlsZW5hbWUuZ2V0KCkpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVNF
Ul9NRVNTQUdFKHJlcGx5KSk7CisgICAgcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2Vf
Z2V0X3BhcmFtZXRlcnMocmVwbHkpOworICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7
CisgICAgZ2ludDMyIGhhbmRsZTsKKyAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICJoIiwg
JmhhbmRsZSk7CisgICAgZ19hc3NlcnRfY21waW50KGhhbmRsZSwgPT0sIDApOworICAgIGF1dG8q
IGZkTGlzdCA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X2ZkX2xpc3QocmVwbHkpOworICAgIGdf
YXNzZXJ0X3RydWUoR19JU19VTklYX0ZEX0xJU1QoZmRMaXN0KSk7CisgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChmZExpc3QpKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZ191bml4X2ZkX2xpc3RfZ2V0X2xlbmd0aChmZExpc3QpLCA9PSwgMSk7
CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIGludCBmZCA9IGdfdW5peF9m
ZF9saXN0X2dldChmZExpc3QsIGhhbmRsZSwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQoZmQsICE9LCAtMSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZmRDb250ZW50czsKKyAgICBnc2l6ZSBmZENvbnRl
bnRzTGVuZ3RoOworICAgIGdfYXNzZXJ0X3RydWUocmVhZEZpbGVEZXNjcmlwdG9yKGZkLCAmZmRD
b250ZW50cy5vdXRQdHIoKSwgJmZkQ29udGVudHNMZW5ndGgpKTsKKyAgICBjbG9zZShmZCk7Cisg
ICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBmaWxlQ29udGVudHM7CisgICAgZ3NpemUgZmlsZUNvbnRl
bnRzTGVuZ3RoOworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFt
ZS5nZXQoKSwgJmZpbGVDb250ZW50cy5vdXRQdHIoKSwgJmZpbGVDb250ZW50c0xlbmd0aCwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0X2NtcG1lbShmZENvbnRlbnRzLmdldCgpLCBmZENvbnRlbnRz
TGVuZ3RoLCBmaWxlQ29udGVudHMuZ2V0KCksIGZpbGVDb250ZW50c0xlbmd0aCk7CisKKyAgICAv
LyBVbmhhbmRsZWQgbWVzc2FnZS4KKyAgICBHRXJyb3IqIG1lc3NhZ2VFcnJvciA9IG51bGxwdHI7
CisgICAgcmVwbHkgPSB0ZXN0LT5zZW5kTWVzc2FnZSh3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygi
VGVzdC5JbnZhbGlkIiwgbnVsbHB0ciksICZtZXNzYWdlRXJyb3IpOworICAgIGdfYXNzZXJ0X251
bGwocmVwbHkpOworICAgIGdfYXNzZXJ0X2Vycm9yKG1lc3NhZ2VFcnJvciwgV0VCS0lUX1VTRVJf
TUVTU0FHRV9FUlJPUiwgV0VCS0lUX1VTRVJfTUVTU0FHRV9VTkhBTkRMRURfTUVTU0FHRSk7CisK
KyAgICAvLyBNZXNzYWdlIHRoYXQgaXMgbmV2ZXIgcmVwbGllZC4KKyAgICBHUmVmUHRyPFdlYktp
dFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoVGVzdDo6Y3JlYXRlV2ViVmlldyh0
ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNz
YWdlX3RvX3BhZ2Uod2ViVmlldy5nZXQoKSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIlRlc3Qu
SW5maW5pdGUiLCBudWxscHRyKSwgbnVsbHB0ciwKKyAgICAgICAgW10oR09iamVjdCogb2JqZWN0
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAg
IGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxVc2VyTWVzc2FnZVRlc3QqPih1c2VyRGF0YSk7Cisg
ICAgICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgICAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2goV0VC
S0lUX1dFQl9WSUVXKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgICAg
ICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9D
QU5DRUxMRUQpOworICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgICAgIH0s
IHRlc3QpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKworICAgIC8v
IFdhaXQgZm9yIHJlY2VpdmVkIG1lc3NhZ2UuCisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxi
b2R5PjwvYm9keT48L2h0bWw+IiwgbnVsbHB0cik7CisgICAgbWVzc2FnZSA9IHRlc3QtPndhaXRV
bnRpbFZpZXdNZXNzYWdlUmVjZWl2ZWQoIkRvY3VtZW50TG9hZGVkIik7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSwgPT0sICJEb2N1bWVudExv
YWRlZCIpOworCisgICAgLy8gUmVwbHkgdG8gYSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIHdl
YiBwcm9jZXNzLgorICAgIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZSh0ZXN0
LT5tX3dlYlZpZXcsIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkFzeW5jUGluZyIsIG51
bGxwdHIpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBtZXNzYWdlID0gdGVzdC0+
d2FpdFVudGlsVmlld01lc3NhZ2VSZWNlaXZlZCgiVGVzdC5QaW5nIik7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfVVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSwgPT0sICJUZXN0LlBpbmci
KTsKKyAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkobWVzc2FnZSwgd2Via2l0X3Vz
ZXJfbWVzc2FnZV9uZXcoIlRlc3QuUG9uZyIsIG51bGxwdHIpKTsKKyAgICBtZXNzYWdlID0gdGVz
dC0+d2FpdFVudGlsVmlld01lc3NhZ2VSZWNlaXZlZCgiVGVzdC5Bc3luY1BvbmciKTsKKyAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19VU0VSX01FU1NBR0UobWVzc2FnZSkpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKG1lc3NhZ2UpLCA9PSwgIlRl
c3QuQXN5bmNQb25nIik7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgcGFnZSBhbmQgd2FpdCBmb3Ig
cGFnZSBjcmVhdGVkIG1lc3NhZ2UuCisgICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhUZXN0
OjpjcmVhdGVXZWJWaWV3KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX2h0bWwod2ViVmlldy5nZXQoKSwgIjxodG1sPjxib2R5PjwvYm9keT48L2h0
bWw+IiwgbnVsbHB0cik7CisgICAgbWVzc2FnZSA9IHRlc3QtPndhaXRVbnRpbENvbnRleHRNZXNz
YWdlUmVjZWl2ZWQoIlBhZ2VDcmVhdGVkIik7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNf
VVNFUl9NRVNTQUdFKG1lc3NhZ2UpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VzZXJf
bWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKSwgPT0sICJQYWdlQ3JlYXRlZCIpOworICAgIHBhcmFt
ZXRlcnMgPSB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9wYXJhbWV0ZXJzKG1lc3NhZ2UpOworICAg
IGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7CisgICAgZ3VpbnQ2NCBwYWdlSUQ7CisgICAg
Z192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHQpIiwgJnBhZ2VJRCk7CisgICAgZ19hc3NlcnRf
Y21wdWludChwYWdlSUQsID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQod2ViVmlldy5n
ZXQoKSkpOworCisgICAgLy8gUmVxdWVzdCB0byBzdGFydCBhIHBpbmcgdG8gYWxsIHByb2Nlc3Nl
cy4KKyAgICB0ZXN0LT5zZW5kTWVzc2FnZVRvQWxsRXh0ZW5zaW9ucyh3ZWJraXRfdXNlcl9tZXNz
YWdlX25ldygiVGVzdC5SZXF1ZXN0UGluZyIsIG51bGxwdHIpKTsKKyAgICAvLyBXZSBzaG91bGQg
cmVjZWl2ZWQgdHdvIHBpbmcgcmVxdWVzdHMuCisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2Fn
ZT4gcGluZzEgPSB0ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJQaW5nIik7
CisgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gcGluZzIgPSB0ZXN0LT53YWl0VW50aWxD
b250ZXh0TWVzc2FnZVJlY2VpdmVkKCJQaW5nIik7CisgICAgd2Via2l0X3VzZXJfbWVzc2FnZV9z
ZW5kX3JlcGx5KHBpbmcxLmdldCgpLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiUG9uZyIsIG51
bGxwdHIpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxDb250ZXh0TWVzc2FnZVJlY2VpdmVkKCJUZXN0
LkZpbmlzaGVkUGluZ1JlcXVlc3QiKTsKKyAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVw
bHkocGluZzIuZ2V0KCksIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQb25nIiwgbnVsbHB0cikp
OworICAgIHRlc3QtPndhaXRVbnRpbENvbnRleHRNZXNzYWdlUmVjZWl2ZWQoIlRlc3QuRmluaXNo
ZWRQaW5nUmVxdWVzdCIpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRvbS1kb2N1bWVudC10aXRsZSIsIHRlc3RX
ZWJFeHRlbnNpb25HZXRUaXRsZSk7CkBAIC01NTMsNiArODExLDcgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLWNvbnRy
b2xzLWFzc29jaWF0ZWQtc2lnbmFsIiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29j
aWF0ZWQpOwogICAgIEZvcm1TdWJtaXNzaW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24i
LCAiZm9ybS1zdWJtaXNzaW9uLXN0ZXBzIiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1TdWJtaXNzaW9u
U3RlcHMpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJwYWdl
LWlkIiwgdGVzdFdlYkV4dGVuc2lvblBhZ2VJRCk7CisgICAgVXNlck1lc3NhZ2VUZXN0OjphZGQo
IldlYktpdFdlYkV4dGVuc2lvbiIsICJ1c2VyLW1lc3NhZ2VzIiwgdGVzdFdlYkV4dGVuc2lvblVz
ZXJNZXNzYWdlcyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4
IGIzYjljOGJmZmVhLi42ZDJhNDg2MDRiMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjEsNyAr
MjEsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVk
ZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpZiBVU0Uo
R1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNlbmRpZgpAQCAtMTYyLDYgKzE2NSw4
IEBAIHN0YXRpYyB2b2lkIGRvY3VtZW50TG9hZGVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2Vi
UGFnZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBlCiAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVD
QVRJT05TOwogI2VuZGlmCiAKKyAgICB3ZWJraXRfd2ViX3BhZ2Vfc2VuZF9tZXNzYWdlX3RvX3Zp
ZXcod2ViUGFnZSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXcoIkRvY3VtZW50TG9hZGVkIiwgbnVs
bHB0ciksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworCiAgICAgZ3BvaW50ZXIgZGF0YSA9
IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGV4dGVuc2lvbiksICJkYnVzLWNvbm5lY3Rpb24i
KTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgZW1pdERvY3VtZW50TG9hZGVkKEdfREJVU19DT05O
RUNUSU9OKGRhdGEpKTsKQEAgLTQxNiw2ICs0MjEsNzUgQEAgc3RhdGljIHZvaWQgd2lsbFN1Ym1p
dEZvcm1DYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJLaXRET01FbGVtZW50KiBm
b3IKICAgICB9CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBwYWdlTWVzc2FnZVJlY2VpdmVkQ2FsbGJh
Y2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0VXNlck1lc3NhZ2UqIG1lc3NhZ2UsIFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VO
YW1lID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKTsKKyAgICBpZiAoIWdf
c3RyY21wMChtZXNzYWdlTmFtZSwgIlRlc3QuSGVsbG8iKSkgeworICAgICAgICBhdXRvKiBwYXJh
bWV0ZXJzID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfcGFyYW1ldGVycyhtZXNzYWdlKTsKKyAg
ICAgICAgZ19hc3NlcnRfbm9ubnVsbChwYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciog
cGFyYW1ldGVyID0gbnVsbHB0cjsKKyAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAi
JnMiLCAmcGFyYW1ldGVyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHBhcmFtZXRlciwgPT0s
ICJXZWJQcm9jZXNzIik7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VzZXJfbWVzc2Fn
ZV9nZXRfZmRfbGlzdChtZXNzYWdlKSk7CisgICAgICAgIHdlYmtpdF91c2VyX21lc3NhZ2Vfc2Vu
ZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5IZWxsbyIsIGdf
dmFyaWFudF9uZXcoInMiLCAiVUlQcm9jZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7Cisg
ICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0Lk9wdGlvbmFsIikp
IHsKKyAgICAgICAgYXV0byogcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3Bh
cmFtZXRlcnMobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7
CisgICAgICAgIGNvbnN0IGNoYXIqIHBhcmFtZXRlcjEgPSBudWxscHRyOworICAgICAgICBjb25z
dCBjaGFyKiBwYXJhbWV0ZXIyID0gbnVsbHB0cjsKKyAgICAgICAgZ192YXJpYW50X2dldChwYXJh
bWV0ZXJzLCAiKCZzbSZzKSIsICZwYXJhbWV0ZXIxLCAmcGFyYW1ldGVyMik7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHN0cihwYXJhbWV0ZXIxLCA9PSwgIkhlbGxvIik7CisgICAgICAgIHdlYmtpdF91
c2VyX21lc3NhZ2Vfc2VuZF9yZXBseShtZXNzYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygi
VGVzdC5PcHRpb25hbCIsIGdfdmFyaWFudF9uZXcoInMiLCBwYXJhbWV0ZXIyID8gcGFyYW1ldGVy
MiA6ICJOVUxMIikpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFn
X3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0LlBpbmciKSkgeworICAgICAgICBnX2Fzc2VydF9u
dWxsKHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3BhcmFtZXRlcnMobWVzc2FnZSkpOworICAgICAg
ICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRfcmVwbHkobWVzc2FnZSwgd2Via2l0X3VzZXJfbWVz
c2FnZV9uZXcoIlRlc3QuUG9uZyIsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7Cisg
ICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0Lk9wZW5GaWxlIikp
IHsKKyAgICAgICAgYXV0byogcGFyYW1ldGVycyA9IHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0X3Bh
cmFtZXRlcnMobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocGFyYW1ldGVycyk7
CisgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gbnVsbHB0cjsKKyAgICAgICAgZ192YXJp
YW50X2dldChwYXJhbWV0ZXJzLCAiJnMiLCAmZmlsZW5hbWUpOworICAgICAgICBpbnQgZmQgPSBn
X29wZW4oZmlsZW5hbWUsIE9fUkRPTkxZLCAwKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGZk
LCAhPSwgLTEpOworICAgICAgICBHUmVmUHRyPEdVbml4RkRMaXN0PiBmZExpc3QgPSBhZG9wdEdS
ZWYoZ191bml4X2ZkX2xpc3RfbmV3KCkpOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgICAgIGdfdW5peF9mZF9saXN0X2FwcGVuZChmZExpc3QuZ2V0KCksIGZkLCAm
ZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7
CisgICAgICAgIGNsb3NlKGZkKTsKKworICAgICAgICB3ZWJraXRfdXNlcl9tZXNzYWdlX3NlbmRf
cmVwbHkobWVzc2FnZSwgd2Via2l0X3VzZXJfbWVzc2FnZV9uZXdfd2l0aF9mZF9saXN0KCJUZXN0
Lk9wZW5GaWxlIiwgZ192YXJpYW50X25ldygiaCIsIDApLCBmZExpc3QuZ2V0KCkpKTsKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUs
ICJUZXN0LkluZmluaXRlIikpIHsKKyAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuIFRS
VUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAobWVzc2FnZU5hbWUsICJUZXN0LkFzeW5j
UGluZyIpKSB7CisgICAgICAgIHdlYmtpdF93ZWJfcGFnZV9zZW5kX21lc3NhZ2VfdG9fdmlldyh3
ZWJQYWdlLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5QaW5nIiwgbnVsbHB0ciksIG51
bGxwdHIsCisgICAgICAgICAgICBbXShHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBncG9pbnRlcikgeworICAgICAgICAgICAgICAgIGF1dG8qIHdlYlBhZ2UgPSBXRUJLSVRf
V0VCX1BBR0Uob2JqZWN0KTsKKyAgICAgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRVc2VyTWVzc2FnZT4gcmVwbHkg
PSBhZG9wdEdSZWYod2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192aWV3X2ZpbmlzaCh3
ZWJQYWdlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShyZXBseS5nZXQoKSksID09LCAiVGVzdC5Q
b25nIik7CisgICAgICAgICAgICAgICAgd2Via2l0X3dlYl9wYWdlX3NlbmRfbWVzc2FnZV90b192
aWV3KHdlYlBhZ2UsIHdlYmtpdF91c2VyX21lc3NhZ2VfbmV3KCJUZXN0LkFzeW5jUG9uZyIsIG51
bGxwdHIpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgICAgIH0sIG51bGxw
dHIpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICByZXR1cm4gRkFMU0U7Cit9
CisKIHN0YXRpYyB2b2lkIGVtaXRQYWdlQ3JlYXRlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIGd1aW50NjQgcGFnZUlEKQogewogICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9l
bWl0X3NpZ25hbCgKQEAgLTQzNiw2ICs1MTAsOSBAQCBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENh
bGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRXZWJQYWdlKiB3ZQog
ICAgIGVsc2UKICAgICAgICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25h
bChQYWdlQ3JlYXRlZFNpZ25hbCwgd2Via2l0X3dlYl9wYWdlX2dldF9pZCh3ZWJQYWdlKSkpOwog
CisgICAgd2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3RvX2NvbnRleHQoZXh0ZW5z
aW9uLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiUGFnZUNyZWF0ZWQiLCBnX3ZhcmlhbnRfbmV3
KCIodCkiLCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkKHdlYlBhZ2UpKSksCisgICAgICAgIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIpOworCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAi
ZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxMQkFDSyhkb2N1bWVudExvYWRlZENhbGxiYWNrKSwgZXh0
ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJub3RpZnk6OnVyaSIsIEdf
Q0FMTEJBQ0sodXJpQ2hhbmdlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNLKHNlbmRSZXF1ZXN0Q2Fs
bGJhY2spLCBudWxscHRyKTsKQEAgLTQ0Myw2ICs1MjAsMjYgQEAgc3RhdGljIHZvaWQgcGFnZUNy
ZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0V2ViUGFn
ZSogd2UKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJjb250ZXh0LW1lbnUiLCBHX0NB
TExCQUNLKGNvbnRleHRNZW51Q2FsbGJhY2spLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYlBhZ2UsICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQtZm9yLWZyYW1lIiwgR19DQUxM
QkFDSyhmb3JtQ29udHJvbHNBc3NvY2lhdGVkRm9yRnJhbWVDYWxsYmFjayksIGV4dGVuc2lvbik7
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAid2lsbC1zdWJtaXQtZm9ybSIsIEdfQ0FM
TEJBQ0sod2lsbFN1Ym1pdEZvcm1DYWxsYmFjayksIGV4dGVuc2lvbik7CisgICAgZ19zaWduYWxf
Y29ubmVjdCh3ZWJQYWdlLCAidXNlci1tZXNzYWdlLXJlY2VpdmVkIiwgR19DQUxMQkFDSyhwYWdl
TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCBleHRlbnNpb24pOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gZXh0ZW5zaW9uTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIFdlYktpdFVzZXJNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIGNvbnN0IGNoYXIq
IG1lc3NhZ2VOYW1lID0gd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfbmFtZShtZXNzYWdlKTsKKyAg
ICBpZiAoZ19zdHJjbXAwKG1lc3NhZ2VOYW1lLCAiUmVxdWVzdFBpbmciKSkgeworICAgICAgICB3
ZWJraXRfd2ViX2V4dGVuc2lvbl9zZW5kX21lc3NhZ2VfdG9fY29udGV4dChleHRlbnNpb24sIHdl
YmtpdF91c2VyX21lc3NhZ2VfbmV3KCJQaW5nIiwgbnVsbHB0ciksIG51bGxwdHIsCisgICAgICAg
ICAgICBbXShHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcikg
eworICAgICAgICAgICAgICAgIGF1dG8qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9O
KG9iamVjdCk7CisgICAgICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwor
ICAgICAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0VXNlck1lc3NhZ2U+IHJlcGx5ID0gYWRvcHRH
UmVmKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3NlbmRfbWVzc2FnZV90b19jb250ZXh0X2ZpbmlzaChl
eHRlbnNpb24sIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgICAgICAgICAgICAgZ19h
c3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF9uYW1lKHJlcGx5LmdldCgpKSwgPT0sICJQb25n
Iik7CisgICAgICAgICAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fc2VuZF9tZXNzYWdlX3Rv
X2NvbnRleHQoZXh0ZW5zaW9uLCB3ZWJraXRfdXNlcl9tZXNzYWdlX25ldygiVGVzdC5GaW5pc2hl
ZFBpbmdSZXF1ZXN0IiwgbnVsbHB0ciksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAg
ICAgICAgICAgfSwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAg
IHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIGNoYXIqIGVjaG9DYWxsYmFjayhjb25zdCBjaGFy
KiBtZXNzYWdlKQpAQCAtNjE0LDYgKzcxMSw3IEBAIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvCiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X25hbWUoaXNvbGF0ZWRX
b3JsZCksID09LCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIik7CiAgICAgZ19vYmplY3Rf
c2V0X2RhdGFfZnVsbChHX09CSkVDVChleHRlbnNpb24pLCAid2stc2NyaXB0LXdvcmxkIiwgaXNv
bGF0ZWRXb3JsZCwgZ19vYmplY3RfdW5yZWYpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChleHRl
bnNpb24sICJ1c2VyLW1lc3NhZ2UtcmVjZWl2ZWQiLCBHX0NBTExCQUNLKGV4dGVuc2lvbk1lc3Nh
Z2VSZWNlaXZlZENhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdChleHRl
bnNpb24sICJwYWdlLWNyZWF0ZWQiLCBHX0NBTExCQUNLKHBhZ2VDcmVhdGVkQ2FsbGJhY2spLCBl
eHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3NjcmlwdF93b3JsZF9nZXRf
ZGVmYXVsdCgpLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwgR19DQUxMQkFDSyh3aW5kb3dPYmpl
Y3RDbGVhcmVkKSwgbnVsbHB0cik7CiAK
</data>
<flag name="review"
          id="396741"
          type_id="1"
          status="+"
          setter="aperez"
    />
    <flag name="commit-queue"
          id="396796"
          type_id="3"
          status="-"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>