<?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>151992</bug_id>
          
          <creation_ts>2015-12-08 08:11:12 -0800</creation_ts>
          <short_desc>[UNIX] Add support for windowless NPAPI plugins with no UI in non X11 platforms</short_desc>
          <delta_ts>2016-02-04 11:32:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>153878</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1147283</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-08 08:11:12 -0800</bug_when>
    <thetext>We are currently disabling all plugins when running under wayland, for example. There are some plugins, like the one used by extensions.gnome.org, that don&apos;t do any rendering, so there&apos;s not reason not to support those plugins under wayland or any other unix non-x11 platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147286</commentid>
    <comment_count>1</comment_count>
      <attachid>266886</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-08 08:25:28 -0800</bug_when>
    <thetext>Created attachment 266886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147288</commentid>
    <comment_count>2</comment_count>
      <attachid>266887</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-08 08:33:59 -0800</bug_when>
    <thetext>Created attachment 266887
Updated patch

I forgot to add the new files to the EFL makefile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147292</commentid>
    <comment_count>3</comment_count>
      <attachid>266889</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-08 08:45:37 -0800</bug_when>
    <thetext>Created attachment 266889
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147300</commentid>
    <comment_count>4</comment_count>
      <attachid>266893</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-08 09:01:21 -0800</bug_when>
    <thetext>Created attachment 266893
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147313</commentid>
    <comment_count>5</comment_count>
      <attachid>266898</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-12-08 09:30:43 -0800</bug_when>
    <thetext>Created attachment 266898
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152317</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-01-04 08:13:40 -0800</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160141</commentid>
    <comment_count>7</comment_count>
      <attachid>266898</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2016-01-29 09:48:08 -0800</bug_when>
    <thetext>Comment on attachment 266898
Try to fix EFL build

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        that will ue the X11 implementatin only when needed and

s/ue/use/

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:275
&gt; +    ASSERT(m_plugin.isWindowed());

Won&apos;t this be called with windowless? It looks like the only criteria for platformPaint() to call this one is whether it&apos;s running under X, and I&apos;d expect windowed plugins to do their own painting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161216</commentid>
    <comment_count>8</comment_count>
      <attachid>266898</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-01 23:10:45 -0800</bug_when>
    <thetext>Comment on attachment 266898
Try to fix EFL build

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

&gt;&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:275
&gt;&gt; +    ASSERT(m_plugin.isWindowed());
&gt; 
&gt; Won&apos;t this be called with windowless? It looks like the only criteria for platformPaint() to call this one is whether it&apos;s running under X, and I&apos;d expect windowed plugins to do their own painting?

You are right, I forgot to return early in NetscapePlugin::platformPaint() like I do in other windowless only methods. Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161237</commentid>
    <comment_count>9</comment_count>
      <attachid>270480</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-02 03:14:42 -0800</bug_when>
    <thetext>Created attachment 270480
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161454</commentid>
    <comment_count>10</comment_count>
      <attachid>270480</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-02 16:42:06 -0800</bug_when>
    <thetext>Comment on attachment 270480
Updated patch

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

While I’m not a platform expert I think I can review.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:534
&gt; +            const auto&amp; display = WebCore::PlatformDisplay::sharedDisplay();

I don’t think the const here is needed or helpful.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:537
&gt; +            *reinterpret_cast&lt;Display**&gt;(value) = downcast&lt;PlatformDisplayX11&gt;(display).native();

Strange that the WebCore prefix is not needed here but is needed on the line above.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:56
&gt;  class NetscapePluginStream;
&gt; -    
&gt; +#if PLUGIN_ARCHITECTURE(X11)
&gt; +class NetscapePluginUnix;
&gt; +#endif
&gt;  class NetscapePlugin : public Plugin {

Please don’t delete the blank line here that separates the forward declarations from the class definition. Not clear that we need to put #if around a forward declaration. If we do, then please put it in a separate paragraph with spaces above and below the #if/#endif

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.h:31
&gt; +#include &lt;WebCore/GraphicsContext.h&gt;

I think we could use forward declarations for GraphicsContext and IntRect in this file rather than including the header, which is typically better.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:31
&gt; +#if PLUGIN_ARCHITECTURE(X11)
&gt; +#include &quot;NetscapePluginUnix.h&quot;

We normally put a blank line here between the #if and the #include.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:38
&gt; +class NetscapePluginX11 final: public NetscapePluginUnix {

We normally put a space after final before &quot;:&quot;.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:46
&gt; +private:

We normally put a blank line here before private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161583</commentid>
    <comment_count>11</comment_count>
      <attachid>270557</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-02 23:34:45 -0800</bug_when>
    <thetext>Created attachment 270557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161586</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-02 23:36:53 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 270480 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270480&amp;action=review
&gt; 
&gt; While I’m not a platform expert I think I can review.

Thanks!

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:534
&gt; &gt; +            const auto&amp; display = WebCore::PlatformDisplay::sharedDisplay();
&gt; 
&gt; I don’t think the const here is needed or helpful.

Ok, removed.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:537
&gt; &gt; +            *reinterpret_cast&lt;Display**&gt;(value) = downcast&lt;PlatformDisplayX11&gt;(display).native();
&gt; 
&gt; Strange that the WebCore prefix is not needed here but is needed on the line
&gt; above.

It&apos;s not needed, there&apos;s a using namespace in this file.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:56
&gt; &gt;  class NetscapePluginStream;
&gt; &gt; -    
&gt; &gt; +#if PLUGIN_ARCHITECTURE(X11)
&gt; &gt; +class NetscapePluginUnix;
&gt; &gt; +#endif
&gt; &gt;  class NetscapePlugin : public Plugin {
&gt; 
&gt; Please don’t delete the blank line here that separates the forward
&gt; declarations from the class definition. Not clear that we need to put #if
&gt; around a forward declaration. If we do, then please put it in a separate
&gt; paragraph with spaces above and below the #if/#endif

I don&apos;t think we need ifdefs.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.h:31
&gt; &gt; +#include &lt;WebCore/GraphicsContext.h&gt;
&gt; 
&gt; I think we could use forward declarations for GraphicsContext and IntRect in
&gt; this file rather than including the header, which is typically better.

Ok.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:31
&gt; &gt; +#if PLUGIN_ARCHITECTURE(X11)
&gt; &gt; +#include &quot;NetscapePluginUnix.h&quot;
&gt; 
&gt; We normally put a blank line here between the #if and the #include.

Ok.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:38
&gt; &gt; +class NetscapePluginX11 final: public NetscapePluginUnix {
&gt; 
&gt; We normally put a space after final before &quot;:&quot;.

OK.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:46
&gt; &gt; +private:
&gt; 
&gt; We normally put a blank line here before private.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161591</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-03 00:18:37 -0800</bug_when>
    <thetext>Committed r196053: &lt;http://trac.webkit.org/changeset/196053&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266886</attachid>
            <date>2015-12-08 08:25:28 -0800</date>
            <delta_ts>2015-12-08 08:33:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-npapi-plugins-wayland.diff</filename>
            <type>text/plain</type>
            <size>42866</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MWZkMTNkLi42YzRiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTUtMTItMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFs
bCBwbHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBs
ZS4gVGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAg
ZXh0ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhl
cmUncyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5k
ZXIgd2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgor
ICAgICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBO
ZXRzY2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1v
biBjb2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVl
IHRoZSBYMTEgaW1wbGVtZW50YXRpbiBvbmx5IHdoZW4gbmVlZGVkIGFuZAorICAgICAgICBhdmFp
bGFibGUuIEZvciB3aW5kb3dlZCBwbHVnaW5zIHdlIHdpbGwgZmFpbCB0aGUgaW5pdGlhbGl6YXRp
b24KKyAgICAgICAgdW5kZXIgbm9uLVgxMSBwbGFmb3Jtcywgd2hpbGUgZm9yIHdpbmRvd2xlc3Mg
cGx1Z2lucyB3ZSB3aWxsIGp1c3QKKyAgICAgICAgcmV0dXJuIGVhcmx5IGZyb20gcGFpbnQgbWV0
aG9kLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29t
cGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3Bw
OgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6IERvIG5vdCBk
aXNhYmxlIHBsdWdpbnMgaW4gd2F5bGFuZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBy
ZWZlcmVuY2VzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRm
b3JtSW5pdGlhbGl6ZVN0b3JlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBO
X0dldFZhbHVlKTogVXNlIFBsYXRmb3JtRGlzcGxheSBpbnN0ZWFkIG9mCisgICAgICAgIE5ldHNj
YXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpIGFuZCBkb24ndCBjbGFpbSB0byBzdXBwb3J0IFgx
MQorICAgICAgICBzcGVjaWZpYyBmZWF0dXJlcyB1bmRlciBub24teDExIHBsYXRmb3Jtcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4pOiBSZW1vdmUg
WDExIGFuZCBHVEsKKyAgICAgICAgc3BlY2lmaWMgbWVtZWJlcnMgdGhhdCBhcmUgbm93IG1vdmVk
IHRvIGEgZGVkaWNhdGVkIGNsYXNzIE5ldHNjYXBlUGx1Z2luWDExLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbjo6ZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcyk6IE1ha2UgdGhp
cyBwdWJsaWMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpjbGlwUmVjdCk6IEFk
ZCBnZXR0ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzaXplKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc1dpbmRvd2VkKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc1Zpc2libGUpOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXgu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJl
SW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBv
c3RJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
RGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFs
aWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRy
eURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZp
c2liaWxpdHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1QYWludCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhh
bmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1IYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtU2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6d2FudHNQ
bHVnaW5SZWxhdGl2ZU5QV2luZG93Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUVudGVyRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUxlYXZlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBs
dWdpblVuaXguaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luVW5peDo6
fk5ldHNjYXBlUGx1Z2luVW5peCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdp
bkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2Vi
S2l0Ojp4MTFIb3N0RGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDEx
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQ
bHVnaW5YMTEpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6fk5ldHNjYXBl
UGx1Z2luWDExKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OndpbmRvd1R5
cGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6d2luZG93KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0
Ojppbml0aWFsaXplWEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6
OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6
aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpz
ZXRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3Vz
ZUVudGVyRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxl
TW91c2VMZWF2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6Omhh
bmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpzZXRDb21tb25Nb3VzZUV2ZW50
RmllbGRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6c2V0WEtleUV2ZW50RmllbGRzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmg6IEFkZGVkLgorCiAyMDE1LTEyLTA3ICBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIE5vdGlmeSBXZWJDb3JlIHdoZW4g
bm90aWZpY2F0aW9uIGlzIGNsaWNrZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOGYx
NzE3Zi4uNTEwNzIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTMzNSw2ICszMzUs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcAogICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKIAogICAgIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC01MjAsNiAr
NTIxLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4IgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3VuaXgi
CkBAIC03OTAsNiArNzkzLDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogICAg
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Ob25lLmNwcAog
ICAgICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCiAKKyAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQ
bHVnaW5Vbml4LmNwcAogICAgICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luWDExLmNwcAogCiAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJf
RElSfS9QbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXgg
M2UwYzQ4OC4uOWQyMTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMTU5NCwxMiArMTU5NCw2IEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGdib29sZWFuIGVuYWJsCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElO
R1Moc2V0dGluZ3MpKTsKIAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0gICAgLy8gRG8gbm90IGFs
bG93IHRvIGNoYW5nZSB0aGlzIHNldHRpbmcgaW4gV2F5bGFuZCwgc2luY2UgcGx1Z2lucyBhcmUg
bm90IHN1cHBvcnRlZC4KLSAgICBpZiAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkudHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFu
ZCkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKICAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnBy
ZWZlcmVuY2VzLT5wbHVnaW5zRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVy
ZW5jZXNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNl
c0d0ay5jcHAKaW5kZXggZTRhMGI3YS4uYzcyNDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKQEAgLTM5LDggKzM5LDYgQEAg
dm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQogICAgICAgICAv
LyBGSVhNRTogQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdW5kZXIgV2F5bGFuZCBpcyBub3QgeWV0
IHN1cHBvcnRlZC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTgwMwogICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChm
YWxzZSk7Ci0KLSAgICAgICAgc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwogICAgIH0KICNlbmRp
ZgogI2lmICFFTkFCTEUoT1BFTkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAKaW5kZXggY2M2ZTc0ZC4uMzY2MmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWFjaFNlbmRS
aWdodC5oPgogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUyNCwxOCArNTI4LDIxIEBAIHN0
YXRpYyBOUEVycm9yIE5QTl9HZXRWYWx1ZShOUFAgbnBwLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwg
dm9pZCAqdmFsdWUpCiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCi0gICAgICAgY2FzZSBOUE5WeERpc3BsYXk6IHsKLSAgICAgICAgICAg
aWYgKCFucHApCi0gICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLSAg
ICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBOZXRzY2FwZVBs
dWdpbjo6eDExSG9zdERpc3BsYXkoKTsKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotICAg
ICAgIGNhc2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbDoKLSAgICAgICAgICAgKnN0YXRpY19jYXN0
PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2Ug
TlBOVlN1cHBvcnRzV2luZG93bGVzczoKLSAgICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+
KHZhbHVlKSA9IHRydWU7Ci0gICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5QTlZ4RGlz
cGxheTogeworICAgICAgICAgICAgaWYgKCFucHApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5Q
RVJSX0dFTkVSSUNfRVJST1I7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBkaXNwbGF5ID0gV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CisgICAgICAgICAgICBpZiAo
ZGlzcGxheS50eXBlKCkgIT0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgICAgICAgICAq
cmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5Kio+KHZhbHVlKSA9IGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oZGlzcGxheSkubmF0aXZlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6CisgICAgICAgICAgICAqc3Rh
dGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkudHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDEx
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVz
czoKKyAgICAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7CiAgICAgICAgICAg
IC8vIEd0ayBiYXNlZCBwbHVnaW5zIG5lZWQgdG8gYmUgYXNzdXJlZCBhYm91dCB0aGUgdG9vbGtp
dCB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggOTNlZjM2ZC4uM2RjMGE4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1
ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Vbml4LmgiCisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
OTAsMTIgKzk0LDYgQEAgTmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8
TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSkKICAgICAsIG1fbnVsbEV2ZW50VGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTmV0c2NhcGVQbHVnaW46Om51bGxFdmVudFRpbWVy
RmlyZWQpCiAgICAgLCBtX25wQ0dDb250ZXh0KCkKICNlbmRpZgotI2VsaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCi0gICAgLCBtX2RyYXdhYmxlKDApCi0gICAgLCBtX3BsdWdpbkRpc3BsYXko
MCkKLSNpZiBQTEFURk9STShHVEspCi0gICAgLCBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KDApCi0j
ZW5kaWYKICNlbmRpZgogewogICAgIG1fbnBwLm5kYXRhID0gdGhpczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKaW5kZXggNGY5MmQ4Zi4uZjJjODkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAg
LTM4LDEwICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQot
I2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CkBA
IC01NCw3ICs1MCw5IEBAIE9CSkNfQ0xBU1MgV0tOUEFQSVBsdWdJbkNvbnRhaW5lcjsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXRzY2FwZVBsdWdpblN0cmVhbTsKLSAgICAKKyNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK2NsYXNzIE5ldHNjYXBlUGx1Z2luVW5peDsKKyNlbmRp
ZgogY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbk1vZHVsZT4pOwpAQCAtOTUsNiArOTMsMTIgQEAgcHVibGljOgogCiAjZW5kaWYKIAorI2lm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdElu
V2luZG93Q29vcmRpbmF0ZXM7IH0KKyNlbmRpZgorICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQorICAgIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblNpemU7IH0KKwogICAg
IFBsdWdpblF1aXJrcyBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1
Z2luUXVpcmtzKCk7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBOUFJlY3QqKTsKQEAg
LTEwOSw2ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBldmFsdWF0ZShOUE9iamVjdCosIGNv
bnN0IFN0cmluZyZzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0KTsKICAgICBib29sIGlz
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0OworICAg
IGJvb2wgaXNXaW5kb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXaW5kb3dlZDsgfQorICAgIGJv
b2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc2libGU7IH0KIAogICAgIHN0YXRp
YyB2b2lkIHNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKHZvaWQgKCopKGNvbnN0IFN0cmluZyYpKTsK
IApAQCAtMTU1LDYgKzE2MSw5IEBAIHB1YmxpYzoKICAgICBOUEVycm9yIE5QUF9HZXRWYWx1ZShO
UFBWYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogICAgIE5QRXJyb3IgTlBQX1NldFZhbHVlKE5QTlZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7CiAKKyAgICAvLyBDb252ZXJ0IHRoZSBnaXZlbiBwb2ludCBm
cm9tIHBsdWctaW4gY29vcmRpbmF0ZXMgdG8gcm9vdCB2aWV3IGNvb3JkaW5hdGVzLgorICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBOZXRzY2FwZVBsdWdp
bihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpOwogCkBAIC0y
NTgsOSArMjY3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBz
aG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8gQ29udmVydCB0aGUgZ2l2ZW4gcG9p
bnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGluYXRlcy4KLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICAvLyBDb252ZXJ0IHRoZSBnaXZl
biBwb2ludCBmcm9tIHJvb3QgdmlldyBjb29yZGluYXRlcyB0byBwbHVnLWluIGNvb3JkaW5hdGVz
LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBwb2ludCBjYW4ndCBiZQogICAgIC8vIGNvbnZlcnRlZCAo
aWYgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29s
IGNvbnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290
Vmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5h
dGVzKTsKQEAgLTI3NywxMSArMjgzLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTlBO
UHJpdmF0ZU1vZGUoKTsKIAotI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIGJvb2wg
cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2VkKGJvb2wgbmVlZHNYRW1iZWQsIHVpbnQ2NF90
IHdpbmRvd0lEKTsKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKCk7
Ci0jZW5kaWYKLQogICAgIHVpbnQ2NF90IG1fbmV4dFJlcXVlc3RJRDsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFN0cmluZywgdm9pZCo+PiBQZW5kaW5nVVJMTm90
aWZ5TWFwOwpAQCAtMzk0LDE0ICszOTUsNyBAQCBwcml2YXRlOgogICAgIE5QX0NHQ29udGV4dCBt
X25wQ0dDb250ZXh0OwogI2VuZGlmCiAjZWxpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAg
ICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fZHJhd2FibGU7Ci0gICAgRGlzcGxheSogbV9wbHVn
aW5EaXNwbGF5OwotI2lmIFBMQVRGT1JNKEdUSykKLSAgICBHdGtXaWRnZXQqIG1fcGxhdGZvcm1Q
bHVnaW5XaWRnZXQ7Ci0jZW5kaWYKLQotcHVibGljOiAvLyBOZWVkIHRvIGNhbGwgaXQgaW4gdGhl
IE5QTl9HZXRWYWx1ZSBicm93c2VyIGNhbGxiYWNrLgotICAgIHN0YXRpYyBEaXNwbGF5KiB4MTFI
b3N0RGlzcGxheSgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblVuaXg+IG1f
aW1wbDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5p
eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIzNDk4ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCisKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJF
KFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdpblgxMS5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKCkKK3sKK30KKworYm9vbCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCit7CisjaWYgUExBVEZPUk0oWDEx
KQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxh
dGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKKyAgICAgICAgbV9pbXBsID0gTmV0c2NhcGVQbHVn
aW5YMTE6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIGlmICghbV9pbXBsKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX25wV2luZG93LnR5cGUgPSBtX2ltcGwtPndpbmRvd1R5cGUoKTsKKyAgICAgICAgbV9ucFdp
bmRvdy53aW5kb3cgPSBtX2ltcGwtPndpbmRvdygpOworICAgICAgICBtX25wV2luZG93LndzX2lu
Zm8gPSBtX2ltcGwtPndpbmRvd1N5c3RlbUluZm8oKTsKKyAgICAgICAgY2FsbFNldFdpbmRvdygp
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybURlc3Ryb3koKQoreworICAgIG1faW1wbCA9IG51bGxwdHI7Cit9CisKK2Jvb2wgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCit7CisgICAgaWYgKCFtX2ltcGwpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2ltcGwtPmdlb21ldHJ5RGlkQ2hhbmdlKCk7Cit9CisKK3Zv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCit7CisgICAg
aWYgKCFtX2lzV2luZG93ZWQgfHwgIW1faW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9p
bXBsLT52aXNpYmlsaXR5RGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIGJvb2wgLyppc1NuYXBzaG90Ki8pCit7CisgICAgaWYgKCFtX2lzU3RhcnRlZCB8fCAh
bV9pbXBsKSB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcGFpbnQgYSBtaXNzaW5nIHBs
dWdpbiBpY29uLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1faW1wbC0+cGFpbnQoY29u
dGV4dCwgZGlydHlSZWN0KTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5k
bGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChtX2lz
V2luZG93ZWQgfHwgIW1faW1wbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChl
dmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93biB8fCBldmVudC50eXBlKCkgPT0gV2Vi
RXZlbnQ6Ok1vdXNlVXApCisgICAgICAgICYmIGV2ZW50LmJ1dHRvbigpID09IFdlYk1vdXNlRXZl
bnQ6OlJpZ2h0QnV0dG9uCisgICAgICAgICYmIHF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJr
czo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01vZGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUV2ZW50KGV2ZW50KTsKK30KKwor
Ym9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldo
ZWVsRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChtX2lzV2luZG93ZWQgfHwgIW1faW1wbCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlV2hlZWxFdmVu
dChldmVudCk7Cit9CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtU2V0Rm9jdXMoYm9v
bCBmb2N1c0luKQoreworICAgIGlmIChtX2lzV2luZG93ZWQgfHwgIW1faW1wbCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9pbXBsLT5zZXRGb2N1cyhmb2N1c0luKTsKK30KKworYm9vbCBOZXRz
Y2FwZVBsdWdpbjo6d2FudHNQbHVnaW5SZWxhdGl2ZU5QV2luZG93Q29vcmRpbmF0ZXMoKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRs
ZU1vdXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAo
bV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBtX2ltcGwtPmhhbmRsZU1vdXNlRW50ZXJFdmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmIGV2ZW50KQoreworICAgIGlmIChtX2lzV2luZG93ZWQgfHwgIW1faW1wbCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VMZWF2ZUV2
ZW50KGV2ZW50KTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXli
b2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIC8vIFdlIGRv
bid0IGdlbmVyYXRlIG90aGVyIHR5cGVzIG9mIGtleWJvYXJkIGV2ZW50cyB2aWEgV2ViRXZlbnRG
YWN0b3J5LgorICAgIEFTU0VSVChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24gfHwg
ZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCk7CisKKyAgICBpZiAobV9pc1dpbmRvd2Vk
IHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwt
PmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA4NDE4MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBl
UGx1Z2luVW5peC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXRzY2FwZVBsdWdpblVuaXhfaAorI2Rl
ZmluZSBOZXRzY2FwZVBsdWdpblVuaXhfaAorCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
ICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdl
Yk1vdXNlRXZlbnQ7CitjbGFzcyBXZWJXaGVlbEV2ZW50OworCitjbGFzcyBOZXRzY2FwZVBsdWdp
blVuaXggeworcHVibGljOgorICAgIHZpcnR1YWwgfk5ldHNjYXBlUGx1Z2luVW5peCgpIHsgfQor
ICAgIHZpcnR1YWwgTlBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkKiB3aW5kb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBOUFNldFdpbmRvd0Nh
bGxiYWNrU3RydWN0KiB3aW5kb3dTeXN0ZW1JbmZvKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZW9tZXRyeURpZENoYW5nZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0eURpZENo
YW5nZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGhhbmRsZU1vdXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRF
Q1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2VuZGlmIC8vIE5l
dHNjYXBlUGx1Z2luVW5peF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3Bw
CmluZGV4IDM4MDI4OTcuLmMwYjI2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwCkBAIC0yNSwxMCArMjUsMTEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5YMTEuaCIKKwogI2lmIFBMVUdJTl9BUkNISVRFQ1RV
UkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIk5ldHNj
YXBlUGx1Z2luLmgiCi0KICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
V2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtNjYs
NyArNjcsNyBAQCBzdGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAjZWxpZiBQTEFU
Rk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApAQCAtODYsNyArODcsNyBAQCBzdGF0
aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1
cm4gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtf
c2NyZWVuX2dldF9kZWZhdWx0KCkpKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChI
QVZFX0VDT1JFX1gpCi0gICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2Nh
cGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkp
OworICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0KHgxMUhvc3REaXNwbGF5KCks
IGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNl
bmRpZgpAQCAtMTAzLDcgKzEwNCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByb290
V2luZG93SUQoKQogI2VuZGlmCiB9CiAKLURpc3BsYXkqIE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0
RGlzcGxheSgpCitzdGF0aWMgaW5saW5lIERpc3BsYXkqIHgxMUhvc3REaXNwbGF5KCkKIHsKICAg
ICByZXR1cm4gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CiB9CkBAIC0xMTksMTgwICsxMjAsMTU0IEBAIHN0YXRp
YyBnYm9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKEd0a1NvY2tldCopCiB9CiAjZW5k
aWYKIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2Vk
KGJvb2wgbmVlZHNYRW1iZWQsIHVpbnQ2NF90IHdpbmRvd0lEKQorc3RkOjp1bmlxdWVfcHRyPE5l
dHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2lu
JiBwbHVnaW4pCiB7Ci0gICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBlV2luZG93Owot
ICAgIGlmICghbmVlZHNYRW1iZWQpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFIb3N0
RGlzcGxheSgpOwogCisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAvLyBJdCBzZWVtcyBmbGFzaCBuZWVkcyB0aGUgc29ja2V0IHRvIGJlIGluIHRoZSBz
YW1lIHByb2Nlc3MsCi0gICAgLy8gSSBndWVzcyBpdCB1c2VzIGdka193aW5kb3dfbG9va3VwKCks
IHNvIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQotICAgIC8vIGNvbnRhaW5pbmcgYSBwbHVn
IHdpdGggdGhlIFVJIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVkLgotICAgIG1fcGxhdGZvcm1QbHVn
aW5XaWRnZXQgPSBndGtfcGx1Z19uZXcoc3RhdGljX2Nhc3Q8V2luZG93Pih3aW5kb3dJRCkpOwot
Ci0gICAgLy8gSGlkZSB0aGUgR3RrUGx1ZyBvbiBkZWxldGUtZXZlbnQgc2luY2Ugd2UgYXNzdW1l
IHRoZSB3aWRnZXQgaXMgdmFsaWQgd2hpbGUgdGhlIHBsdWdpbiBpcyBhY3RpdmUuCi0gICAgLy8g
cGxhdGZvcm1EZXN0cm95KCkgd2lsbCBiZSBjYWxsZWQgYW55d2F5IHJpZ2h0IGFmdGVyIHRoZSBk
ZWxldGUtZXZlbnQuCi0gICAgZ19zaWduYWxfY29ubmVjdChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0
LCAiZGVsZXRlLWV2ZW50IiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGVfb25fZGVsZXRlKSwg
bnVsbHB0cik7Ci0KLSAgICBHdGtXaWRnZXQqIHNvY2tldCA9IGd0a19zb2NrZXRfbmV3KCk7Ci0g
ICAgLy8gRG8gbm90IHNob3cgdGhlIHBsdWcgd2lkZ2V0IHVudGlsIHRoZSBzb2NrZXQgaXMgY29u
bmVjdGVkLgotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzb2NrZXQsICJwbHVnLWFkZGVk
IiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X3Nob3cpLCBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KTsK
LSAgICBnX3NpZ25hbF9jb25uZWN0KHNvY2tldCwgInBsdWctcmVtb3ZlZCIsIEdfQ0FMTEJBQ0so
c29ja2V0UGx1Z1JlbW92ZWRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIGd0a19jb250YWluZXJf
YWRkKEdUS19DT05UQUlORVIobV9wbGF0Zm9ybVBsdWdpbldpZGdldCksIHNvY2tldCk7Ci0gICAg
Z3RrX3dpZGdldF9zaG93KHNvY2tldCk7Ci0KLSAgICBtX25wV2luZG93LndpbmRvdyA9IEdJTlRf
VE9fUE9JTlRFUihndGtfc29ja2V0X2dldF9pZChHVEtfU09DS0VUKHNvY2tldCkpKTsKLSAgICBH
ZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhzb2NrZXQpOwotICAgIE5Q
U2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGljX2Nhc3Q8TlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7Ci0gICAgY2FsbGJh
Y2tTdHJ1Y3QtPmRpc3BsYXkgPSBHREtfV0lORE9XX1hESVNQTEFZKHdpbmRvdyk7Ci0gICAgY2Fs
bGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IEdES19WSVNVQUxfWFZJU1VBTChnZGtfd2luZG93X2dldF92
aXN1YWwod2luZG93KSk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRlcHRoID0gZ2RrX3Zpc3VhbF9n
ZXRfZGVwdGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOwotICAgIGNhbGxiYWNrU3Ry
dWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCBHREtfUk9PVF9XSU5ET1co
KSwgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCwgQWxsb2NOb25lKTsKKyAgICBpZiAocGx1Z2luLmlz
V2luZG93ZWQoKSkgeworICAgICAgICAvLyBOUFBWcGx1Z2lOZWVkc1hFbWJlZCBpcyBhIGJvb2xl
YW4gdmFsdWUsIGJ1dCBhdCBsZWFzdCB0aGUKKyAgICAgICAgLy8gRmxhc2ggcGxheWVyIHBsdWdp
biBpcyB1c2luZyBhbiAnaW50JyBpbnN0ZWFkLgorICAgICAgICBpbnQgbmVlZHNYRW1iZWQgPSAw
OworICAgICAgICBwbHVnaW4uTlBQX0dldFZhbHVlKE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm5l
ZWRzWEVtYmVkKTsKKyAgICAgICAgaWYgKG5lZWRzWEVtYmVkKSB7CisgICAgICAgICAgICB3aW5k
b3dJRCA9IHBsdWdpbi5jb250cm9sbGVyKCktPmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworICAg
ICAgICAgICAgaWYgKCF3aW5kb3dJRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
d2luZG93SUQpOworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICNlbmRpZgorICAgIH0KIAotICAgIFhGbHVzaChkaXNwbGF5KTsKKyAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gZ2V0UGx1Z2luRGlzcGxheSgpOworICAgIGlmICghZGlzcGxheSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjYWxsU2V0V2luZG93KCk7CisjaWYgUExBVEZPUk0o
R1RLKQorICAgIGlmIChwbHVnaW4uaXNXaW5kb3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7
CisjZW5kaWYKIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOwogfQogCi1ib29sIE5ldHNjYXBl
UGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpCitOZXRzY2FwZVBsdWdp
blgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mIHBsdWdpbiwgRGlzcGxheSog
ZGlzcGxheSkKKyAgICA6IG1fcGx1Z2luKHBsdWdpbikKKyAgICAsIG1fcGx1Z2luRGlzcGxheShk
aXNwbGF5KQogewotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAg
IG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOwotICAgIG1fbnBXaW5kb3cu
d2luZG93ID0gMDsKLQorICAgIERpc3BsYXkqIGhvc3REaXNwbGF5ID0geDExSG9zdERpc3BsYXko
KTsKICAgICBpbnQgZGVwdGggPSBkaXNwbGF5RGVwdGgoKTsKLQotICAgIE5QU2V0V2luZG93Q2Fs
bGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxs
YmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRp
c3BsYXkgPSBkaXNwbGF5OwotICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9IGRlcHRoOworICAg
IG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGlzcGxheSA9IGhvc3REaXNwbGF5OworICAgIG1f
c2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGVwdGggPSBkZXB0aDsKIAogICAgIFhWaXN1YWxJbmZv
IHZpc3VhbFRlbXBsYXRlOwogICAgIHZpc3VhbFRlbXBsYXRlLnNjcmVlbiA9IHgxMVNjcmVlbigp
OwogICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0gZGVwdGg7CiAgICAgdmlzdWFsVGVtcGxhdGUu
Y19jbGFzcyA9IFRydWVDb2xvcjsKICAgICBpbnQgbnVtTWF0Y2hpbmc7Ci0gICAgWFVuaXF1ZVB0
cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxT
Y3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVt
cGxhdGUsICZudW1NYXRjaGluZykpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3Vh
bEluZm8oWEdldFZpc3VhbEluZm8oaG9zdERpc3BsYXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1
YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNo
aW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbEluZm8pOwogICAgIFZpc3VhbCogdmlzdWFsID0gdmlz
dWFsSW5mby5nZXQoKVswXS52aXN1YWw7CiAgICAgQVNTRVJUKHZpc3VhbCk7CiAKLSAgICBjYWxs
YmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwotICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1h
cCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxv
Y05vbmUpOwotCi0gICAgY2FsbFNldFdpbmRvdygpOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAg
bV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwgPSB2aXN1YWw7CisgICAgbV9zZXRXaW5k
b3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChob3N0RGlzcGxheSwg
cm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKCkKLXsKLX0KLQotYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCisjaWYgUExBVEZPUk0oR1RLKQorTmV0c2NhcGVQ
bHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3Bs
YXkqIGRpc3BsYXksIHVpbnQ2NF90IHdpbmRvd0lEKQorICAgIDogbV9wbHVnaW4ocGx1Z2luKQor
ICAgICwgbV9wbHVnaW5EaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX3dpbmRvd0lEKHdpbmRvd0lE
KQogewotICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKLSAgICAvLyBOUFBWcGx1Z2luTmVlZHNY
RW1iZWQgaXMgYSBib29sZWFuIHZhbHVlLCBidXQgYXQgbGVhc3QgdGhlCi0gICAgLy8gRmxhc2gg
cGxheWVyIHBsdWdpbiBpcyB1c2luZyBhbiAnaW50JyBpbnN0ZWFkLgotICAgIGludCBuZWVkc1hF
bWJlZCA9IDA7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkgewotICAgICAgICBOUFBfR2V0VmFsdWUo
TlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNYRW1iZWQpOwotICAgICAgICBpZiAobmVlZHNY
RW1iZWQpIHsKLSAgICAgICAgICAgIHdpbmRvd0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVn
aW5Db250YWluZXIoKTsKLSAgICAgICAgICAgIGlmICghd2luZG93SUQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICAvLyBJdCBzZWVtcyBmbGFzaCBuZWVkcyB0aGUgc29ja2V0IHRvIGJlIGluIHRoZSBzYW1lIHBy
b2Nlc3MsCisgICAgLy8gSSBndWVzcyBpdCB1c2VzIGdka193aW5kb3dfbG9va3VwKCksIHNvIHdl
IGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQorICAgIC8vIGNvbnRhaW5pbmcgYSBwbHVnIHdpdGgg
dGhlIFVJIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVkLgorICAgIG1fcGxhdGZvcm1QbHVnaW5XaWRn
ZXQgPSBndGtfcGx1Z19uZXcoc3RhdGljX2Nhc3Q8V2luZG93Pih3aW5kb3dJRCkpOwogCi0gICAg
aWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2luRGlzcGxheSgpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vIEhpZGUgdGhlIEd0a1BsdWcgb24gZGVsZXRlLWV2ZW50IHNpbmNl
IHdlIGFzc3VtZSB0aGUgd2lkZ2V0IGlzIHZhbGlkIHdoaWxlIHRoZSBwbHVnaW4gaXMgYWN0aXZl
LgorICAgIC8vIHBsYXRmb3JtRGVzdHJveSgpIHdpbGwgYmUgY2FsbGVkIGFueXdheSByaWdodCBh
ZnRlciB0aGUgZGVsZXRlLWV2ZW50LgorICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF0Zm9ybVBs
dWdpbldpZGdldCwgImRlbGV0ZS1ldmVudCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlX29u
X2RlbGV0ZSksIG51bGxwdHIpOwogCi0gICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2Fs
bGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdDsKLSAgICBjYWxsYmFj
a1N0cnVjdC0+dHlwZSA9IDA7Ci0gICAgbV9ucFdpbmRvdy53c19pbmZvID0gY2FsbGJhY2tTdHJ1
Y3Q7CisgICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBndGtfc29ja2V0X25ldygpOworICAgIC8vIERv
IG5vdCBzaG93IHRoZSBwbHVnIHdpZGdldCB1bnRpbCB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZC4K
KyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc29ja2V0LCAicGx1Zy1hZGRlZCIsIEdfQ0FM
TEJBQ0soZ3RrX3dpZGdldF9zaG93KSwgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCk7CisgICAgZ19z
aWduYWxfY29ubmVjdChzb2NrZXQsICJwbHVnLXJlbW92ZWQiLCBHX0NBTExCQUNLKHNvY2tldFBs
dWdSZW1vdmVkQ2FsbGJhY2spLCBudWxscHRyKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpLCBzb2NrZXQpOworICAgIGd0a193aWRn
ZXRfc2hvdyhzb2NrZXQpOwogCi0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJu
IHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChuZWVkc1hFbWJlZCwgd2luZG93SUQpOwor
ICAgIERpc3BsYXkqIGhvc3REaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKKyAgICBtX25wV2lu
ZG93SUQgPSBndGtfc29ja2V0X2dldF9pZChHVEtfU09DS0VUKHNvY2tldCkpOworICAgIEdka1dp
bmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHNvY2tldCk7CisgICAgbV9zZXRX
aW5kb3dDYWxsYmFja1N0cnVjdC5kaXNwbGF5ID0gR0RLX1dJTkRPV19YRElTUExBWSh3aW5kb3cp
OworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QudmlzdWFsID0gR0RLX1ZJU1VBTF9YVklT
VUFMKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKKyAgICBtX3NldFdpbmRvd0NhbGxi
YWNrU3RydWN0LmRlcHRoID0gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3dpbmRvd19nZXRfdmlz
dWFsKHdpbmRvdykpOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXAgPSBY
Q3JlYXRlQ29sb3JtYXAoaG9zdERpc3BsYXksIEdES19ST09UX1dJTkRPVygpLCBtX3NldFdpbmRv
d0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgQWxsb2NOb25lKTsKIAotICAgIHJldHVybiBwbGF0Zm9y
bVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpOworICAgIFhGbHVzaChob3N0RGlzcGxheSk7CiB9
CisjZW5kaWYKIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKK05ldHNj
YXBlUGx1Z2luWDExOjp+TmV0c2NhcGVQbHVnaW5YMTEoKQogewotICAgIE5QU2V0V2luZG93Q2Fs
bGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxs
YmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7Ci0gICAgRGlzcGxheSogaG9zdERpc3Bs
YXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIFhGcmVlQ29sb3JtYXAoaG9zdERpc3BsYXksIGNh
bGxiYWNrU3RydWN0LT5jb2xvcm1hcCk7Ci0gICAgZGVsZXRlIGNhbGxiYWNrU3RydWN0OworICAg
IFhGcmVlQ29sb3JtYXAoeDExSG9zdERpc3BsYXkoKSwgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVj
dC5jb2xvcm1hcCk7CiAKICAgICBtX2RyYXdhYmxlLnJlc2V0KCk7CiAKICNpZiBQTEFURk9STShH
VEspCi0gICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpIHsKKyAgICBpZiAobV9wbGF0Zm9y
bVBsdWdpbldpZGdldCkKICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fcGxhdGZvcm1QbHVn
aW5XaWRnZXQpOwotICAgICAgICBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gMDsKLSAgICB9CiAj
ZW5kaWYKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0
IEludFJlY3QmKQorTlBXaW5kb3dUeXBlIE5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKCkg
Y29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8gTlBXaW5kb3dUeXBlV2luZG93IDogTlBXaW5k
b3dUeXBlRHJhd2FibGU7Cit9CisKK3ZvaWQqIE5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3coKSBj
b25zdAoreworICAgIHJldHVybiBtX3BsdWdpbi5pc1dpbmRvd2VkKCkgPyBHSU5UX1RPX1BPSU5U
RVIobV9ucFdpbmRvd0lEKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6Z2VvbWV0
cnlEaWRDaGFuZ2UoKQogewotICAgIGlmIChtX2lzV2luZG93ZWQpIHsKKyAgICBpZiAobV9wbHVn
aW4uaXNXaW5kb3dlZCgpKSB7CiAgICAgICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgICAgIHdpbmRvd0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdE
S19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9zb2NrZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZv
cm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlmCi0gICAgICAgIGNvbnRyb2xsZXIoKS0+d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX2ZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMs
IG1fY2xpcFJlY3QsIHdpbmRvd0lEKTsKKyAgICAgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93
Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwgd2luZG93SUQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgbV9kcmF3YWJsZS5yZXNldCgpOwotICAgIGlmIChtX3BsdWdp
blNpemUuaXNFbXB0eSgpKQorICAgIGlmIChtX3BsdWdpbi5zaXplKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlz
cGxheSgpLCByb290V2luZG93SUQoKSwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6
ZS5oZWlnaHQoKSwgZGlzcGxheURlcHRoKCkpOworICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4
bWFwKHgxMUhvc3REaXNwbGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3BsdWdpbi5zaXplKCkud2lk
dGgoKSwgbV9wbHVnaW4uc2l6ZSgpLmhlaWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7CiAgICAgWFN5
bmMoeDExSG9zdERpc3BsYXkoKSwgZmFsc2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVy
IGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZS4KIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnZpc2li
aWxpdHlEaWRDaGFuZ2UoKQogewotICAgIGlmICghbV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1
cm47Ci0KKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKICAgICB1aW50NjRfdCB3
aW5kb3dJRCA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHdpbmRvd0lEID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9zb2NrZXRfd2luZG93KEdU
S19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlmCi0gICAgY29udHJvbGxl
cigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UobV9pc1Zpc2libGUsIHdpbmRv
d0lEKTsKLSAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCB3aW5kb3dJRCk7Cisg
ICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFu
Z2UobV9wbHVnaW4uaXNWaXNpYmxlKCksIHdpbmRvd0lEKTsKKyAgICBtX3BsdWdpbi5jb250cm9s
bGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlcygpLCBtX3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7CiB9
CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgLyppc1NuYXBzaG90Ki8pCit2
b2lkIE5ldHNjYXBlUGx1Z2luWDExOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNTdGFydGVkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB3
ZSBzaG91bGQgcGFpbnQgYSBtaXNzaW5nIHBsdWdpbiBpY29uLgotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogCiAgICAgaWYgKGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFtX2RyYXdhYmxlKQogICAgICAgICByZXR1cm47CkBA
IC0zMTMsMTQgKzI4OCwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydAogICAgIGV4cG9zZUV2
ZW50LndpZHRoID0gZXhwb3NlZFJlY3Qud2lkdGgoKTsKICAgICBleHBvc2VFdmVudC5oZWlnaHQg
PSBleHBvc2VkUmVjdC5oZWlnaHQoKTsKIAotICAgIE5QUF9IYW5kbGVFdmVudCgmeGV2ZW50KTsK
KyAgICBtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhldmVudCk7CiAKICAgICBpZiAobV9wbHVn
aW5EaXNwbGF5ICE9IHgxMUhvc3REaXNwbGF5KCkpCiAgICAgICAgIFhTeW5jKG1fcGx1Z2luRGlz
cGxheSwgZmFsc2UpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBV
U0UoQ0FJUk8pKQogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9wbHVnaW5EaXNwbGF5LCBtX2Ry
YXdhYmxlLmdldCgpLAotICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3Ry
dWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLCBtX3BsdWdpblNpemUud2lkdGgoKSwg
bV9wbHVnaW5TaXplLmhlaWdodCgpKSk7CisgICAgICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1
Y3QudmlzdWFsLCBtX3BsdWdpbi5zaXplKCkud2lkdGgoKSwgbV9wbHVnaW4uc2l6ZSgpLmhlaWdo
dCgpKSk7CiAgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwogCkBAIC0zNDIsNyArMzE3LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGluaXRpYWxpemVYRXZlbnQoWEV2ZW50JiBldmVudCkKICAgICBtZW1zZXQoJmV2ZW50
LCAwLCBzaXplb2YoWEV2ZW50KSk7CiAgICAgZXZlbnQueGFueS5zZXJpYWwgPSAwOwogICAgIGV2
ZW50Lnhhbnkuc2VuZF9ldmVudCA9IGZhbHNlOwotICAgIGV2ZW50LnhhbnkuZGlzcGxheSA9IE5l
dHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpOworICAgIGV2ZW50LnhhbnkuZGlzcGxheSA9
IHgxMUhvc3REaXNwbGF5KCk7CiAgICAgZXZlbnQueGFueS53aW5kb3cgPSAwOwogfQogCkBAIC00
NDAsMTUgKzQxNSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxk
cyhYRXZlbnQmIHhFdmVudCwgY29uc3QgV2ViTW91c2VFdmVudCYKICAgICB4Q3Jvc3NpbmcuZm9j
dXMgPSBmYWxzZTsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3Vz
ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdpblgx
MTo6aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBp
ZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoKGV2ZW50
LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVu
dDo6TW91c2VVcCkKLSAgICAgICAgICYmIGV2ZW50LmJ1dHRvbigpID09IFdlYk1vdXNlRXZlbnQ6
OlJpZ2h0QnV0dG9uCi0gICAgICAgICAmJiBxdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6
Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogCiAgICAgWEV2ZW50IHhFdmVu
dDsKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7CkBAIC00NTYsMTAgKzQyNSwxMCBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91
c2VFdmVudCYgZXZlbnQpCiAgICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKICAgICBjYXNlIFdl
YkV2ZW50OjpNb3VzZURvd246CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VVcDoKLSAgICAgICAg
c2V0WEJ1dHRvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KElu
dFBvaW50KCkpKTsKKyAgICAgICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQs
IG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VNb3ZlOgotICAgICAgICBzZXRYTW90aW9uRXZlbnRG
aWVsZHMoeEV2ZW50LCBldmVudCwgY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOworICAg
ICAgICBzZXRYTW90aW9uRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVy
dFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkV2
ZW50OjpNb3VzZUZvcmNlQ2hhbmdlZDoKICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZUZvcmNlRG93
bjoKQEAgLTQ3OSw3ICs0NDgsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRs
ZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gIU5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAg
ICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKIH0KIAogLy8gV2Ug
dW5kZWZpbmUgdGhlc2UgY29uc3RhbnRzIGluIG5wcnVudGltZV9pbnRlcm5hbC5oIHRvIGF2b2lk
IGNvbGxpc2lvbgpAQCAtNDg5LDIyICs0NTgsMjAgQEAgY29uc3QgaW50IGtLZXlSZWxlYXNlVHlw
ZSA9IDM7CiBjb25zdCBpbnQga0ZvY3VzSW5UeXBlID0gOTsKIGNvbnN0IGludCBrRm9jdXNPdXRU
eXBlID0gMTA7CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVu
dChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6Omhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKG1f
aXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChtX3BsdWdpbi5p
c1dpbmRvd2VkKCkpOwogCiAgICAgWEV2ZW50IHhFdmVudDsKICAgICBpbml0aWFsaXplWEV2ZW50
KHhFdmVudCk7Ci0gICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzQnlXZWJXaGVlbEV2ZW50KHhFdmVu
dCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKKyAgICBzZXRYQnV0dG9u
RXZlbnRGaWVsZHNCeVdlYldoZWVsRXZlbnQoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVy
dFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQo
JnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7
CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtU2V0Rm9jdXMoYm9vbCBmb2N1c0lu
KQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6c2V0Rm9jdXMoYm9vbCBmb2N1c0luKQogewotICAg
IGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9wbHVnaW4u
aXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVu
dCh4RXZlbnQpOwpAQCAtNTEzLDM2ICs0ODAsMjkgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1TZXRGb2N1cyhib29sIGZvY3VzSW4pCiAgICAgZm9jdXNFdmVudC5tb2RlID0gTm90aWZ5
Tm9ybWFsOwogICAgIGZvY3VzRXZlbnQuZGV0YWlsID0gTm90aWZ5RGV0YWlsTm9uZTsKIAotICAg
IE5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICBtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQo
JnhFdmVudCk7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVO
UFdpbmRvd0Nvb3JkaW5hdGVzKCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNl
RW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUVudGVyRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkp
OwogCiAgICAgWEV2ZW50IHhFdmVudDsKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7Ci0g
ICAgc2V0WENyb3NzaW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgY29udmVydFRvUm9vdFZp
ZXcoSW50UG9pbnQoKSksIEVudGVyTm90aWZ5KTsKKyAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxk
cyh4RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwg
RW50ZXJOb3RpZnkpOwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7Cisg
ICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CiB9CiAKLWJvb2wg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1v
dXNlRXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VMZWF2
ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChtX2lzV2luZG93
ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dl
ZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQp
OwotICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jv
b3RWaWV3KEludFBvaW50KCkpLCBMZWF2ZU5vdGlmeSk7CisgICAgc2V0WENyb3NzaW5nRXZlbnRG
aWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQo
KSksIExlYXZlTm90aWZ5KTsKIAotICAgIHJldHVybiAhTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQp
OworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCiBz
dGF0aWMgaW5saW5lIHZvaWQgc2V0WEtleUV2ZW50RmllbGRzKFhFdmVudCYgeEV2ZW50LCBjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiB3ZWJFdmVudCkKQEAgLTU2NSw4ICs1MjUsOSBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgc2V0WEtleUV2ZW50RmllbGRzKFhFdmVudCYgeEV2ZW50LCBjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiB3ZQogICAgIHhLZXkueV9yb290ID0gMDsKIH0KIAotYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlS2V5Ym9hcmRFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNX
aW5kb3dlZCgpKTsKICAgICAvLyBXZSBkb24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXli
b2FyZCBldmVudHMgdmlhIFdlYkV2ZW50RmFjdG9yeS4KICAgICBBU1NFUlQoZXZlbnQudHlwZSgp
ID09IFdlYkV2ZW50OjpLZXlEb3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXAp
OwogCkBAIC01NzQsNyArNTM1LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5k
bGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGluaXRp
YWxpemVYRXZlbnQoeEV2ZW50KTsKICAgICBzZXRYS2V5RXZlbnRGaWVsZHMoeEV2ZW50LCBldmVu
dCk7CiAKLSAgICByZXR1cm4gIU5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4g
IW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWExMDg3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
aApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5ldHNjYXBlUGx1Z2luWDExX2gKKyNkZWZpbmUg
TmV0c2NhcGVQbHVnaW5YMTFfaAorCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5Vbml4LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVz
b3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHNjYXBlUGx1Z2luOwor
CitjbGFzcyBOZXRzY2FwZVBsdWdpblgxMSBmaW5hbDogcHVibGljIE5ldHNjYXBlUGx1Z2luVW5p
eCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgx
MT4gY3JlYXRlKE5ldHNjYXBlUGx1Z2luJik7CisgICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2Nh
cGVQbHVnaW4mLCBEaXNwbGF5Kik7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIE5ldHNjYXBlUGx1
Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSosIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNl
bmRpZgorICAgIHZpcnR1YWwgfk5ldHNjYXBlUGx1Z2luWDExKCk7Citwcml2YXRlOgorICAgIHZp
cnR1YWwgTlBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQqIHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTlBTZXRXaW5k
b3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygpIG92ZXJyaWRlIHsgcmV0dXJuICZt
X3NldFdpbmRvd0NhbGxiYWNrU3RydWN0OyB9CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2Uo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlTGVhdmVFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRs
ZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsKKworICAgIE5ldHNjYXBlUGx1Z2lu
JiBtX3BsdWdpbjsKKyAgICBEaXNwbGF5KiBtX3BsdWdpbkRpc3BsYXkgeyBudWxscHRyIH07Cisg
ICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOworI2lmIFBMQVRGT1JNKEdUSykK
KyAgICB1aW50NjRfdCBtX3dpbmRvd0lEIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbV9ucFdp
bmRvd0lEIHsgMCB9OworICAgIEd0a1dpZGdldCogbV9wbGF0Zm9ybVBsdWdpbldpZGdldCB7IG51
bGxwdHIgfTsKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0IG1fc2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3Q7CisjZW5kaWYKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorCisjZW5kaWYgLy8gTmV0c2NhcGVQbHVnaW5YMTFf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266887</attachid>
            <date>2015-12-08 08:33:59 -0800</date>
            <delta_ts>2015-12-08 08:45:37 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-npapi-plugins-wayland.diff</filename>
            <type>text/plain</type>
            <size>43848</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MWZkMTNkLi5iNjQ3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMTItMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFs
bCBwbHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBs
ZS4gVGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAg
ZXh0ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhl
cmUncyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5k
ZXIgd2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgor
ICAgICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBO
ZXRzY2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1v
biBjb2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVl
IHRoZSBYMTEgaW1wbGVtZW50YXRpbiBvbmx5IHdoZW4gbmVlZGVkIGFuZAorICAgICAgICBhdmFp
bGFibGUuIEZvciB3aW5kb3dlZCBwbHVnaW5zIHdlIHdpbGwgZmFpbCB0aGUgaW5pdGlhbGl6YXRp
b24KKyAgICAgICAgdW5kZXIgbm9uLVgxMSBwbGFmb3Jtcywgd2hpbGUgZm9yIHdpbmRvd2xlc3Mg
cGx1Z2lucyB3ZSB3aWxsIGp1c3QKKyAgICAgICAgcmV0dXJuIGVhcmx5IGZyb20gcGFpbnQgbWV0
aG9kLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29t
cGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMpOiBEbyBub3QgZGlzYWJsZSBwbHVnaW5zIGluIHdh
eWxhbmQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSk6
IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6IFVzZSBQbGF0
Zm9ybURpc3BsYXkgaW5zdGVhZCBvZgorICAgICAgICBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERp
c3BsYXkoKSBhbmQgZG9uJ3QgY2xhaW0gdG8gc3VwcG9ydCBYMTEKKyAgICAgICAgc3BlY2lmaWMg
ZmVhdHVyZXMgdW5kZXIgbm9uLXgxMSBwbGF0Zm9ybXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKTogUmVtb3ZlIFgxMSBhbmQgR1RLCisgICAgICAg
IHNwZWNpZmljIG1lbWViZXJzIHRoYXQgYXJlIG5vdyBtb3ZlZCB0byBhIGRlZGljYXRlZCBjbGFz
cyBOZXRzY2FwZVBsdWdpblgxMS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmZy
YW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOiBNYWtlIHRoaXMgcHVibGljLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Y2xpcFJlY3QpOiBBZGQgZ2V0dGVyLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6aXNXaW5kb3dlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6aXNWaXNpYmxlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRv
d0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
SGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VMZWF2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblVuaXg6On5OZXRzY2FwZVBsdWdpblVuaXgp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5KToKKyAgICAgICAg
KFdlYktpdDo6ZGlzcGxheURlcHRoKToKKyAgICAgICAgKFdlYktpdDo6eDExSG9zdERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6On5OZXRzY2FwZVBsdWdpblgxMSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5YMTE6OndpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5YMTE6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVhFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6c2V0Rm9jdXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlTGVhdmVFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6c2V0Q29tbW9uTW91c2VFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OnNldFhLZXlFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oOiBBZGRl
ZC4KKwogMjAxNS0xMi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLXSBOb3RpZnkgV2ViQ29yZSB3aGVuIG5vdGlmaWNhdGlvbiBpcyBjbGlj
a2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGRiZTg3NGIuLmMxZjM0ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTksNiArMTk5LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5p
eC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjcyLDYgKzI3Myw4IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgorICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDhmMTcxN2YuLjUxMDcyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMzUsNiArMzM1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAK
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cApAQCAtNTIwLDYgKzUyMSw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9ndGsiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy91bml4IgpAQCAtNzkwLDYgKzc5Myw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NF
U1NfR1RLMikKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTm9uZS5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcAogCisgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAogICAgICAgICAke0RFUklWRURfU09V
UkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwCmluZGV4IDNlMGM0ODguLjlkMjEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE1OTQsMTIgKzE1OTQs
NiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotICAg
IC8vIERvIG5vdCBhbGxvdyB0byBjaGFuZ2UgdGhpcyBzZXR0aW5nIGluIFdheWxhbmQsIHNpbmNl
IHBsdWdpbnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CiAgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJsZWQoKTsKICAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4IGU0YTBiN2EuLmM3MjQyYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCkBAIC0z
OSw4ICszOSw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3Jl
KCkKICAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVyIFdheWxh
bmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoZmFsc2UpOwotCi0gICAgICAgIHNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsK
ICAgICB9CiAjZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCmluZGV4IGNjNmU3NGQuLjM2NjJmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShY
MTEpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MjQsMTgg
KzUyOCwyMSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNl
bGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiB7
Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4odmFsdWUp
ID0gTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCk7Ci0gICAgICAgICAgIGJyZWFrOwot
ICAgICAgIH0KLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6Ci0gICAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsK
LSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6Ci0gICAgICAgICAgICpzdGF0aWNf
Y2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgICAgIGlmICghbnBwKQorICAgICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgY29uc3QgYXV0byYg
ZGlzcGxheSA9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOworICAg
ICAgICAgICAgaWYgKGRpc3BsYXkudHlwZSgpICE9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
ICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXkpLm5hdGl2ZSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgorICAg
ICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OlgxMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5QTlZTdXBw
b3J0c1dpbmRvd2xlc3M6CisgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDog
ewogICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQgYWJv
dXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDkz
ZWYzNmQuLjNkYzBhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDIsNiArNDIs
MTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
VW5peC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTkwLDEyICs5NCw2IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdp
bihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAgICAgLCBt
X251bGxFdmVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1Z2luOjpu
dWxsRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9ucENHQ29udGV4dCgpCiAjZW5kaWYKLSNlbGlm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICwgbV9kcmF3YWJsZSgwKQotICAgICwgbV9w
bHVnaW5EaXNwbGF5KDApCi0jaWYgUExBVEZPUk0oR1RLKQotICAgICwgbV9wbGF0Zm9ybVBsdWdp
bldpZGdldCgwKQotI2VuZGlmCiAjZW5kaWYKIHsKICAgICBtX25wcC5uZGF0YSA9IHRoaXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDRmOTJkOGYuLmYyYzg5MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0zOCwxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQ
SGVhZGVyTWFwOwpAQCAtNTQsNyArNTAsOSBAQCBPQkpDX0NMQVNTIFdLTlBBUElQbHVnSW5Db250
YWluZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5TdHJlYW07
Ci0gICAgCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitjbGFzcyBOZXRzY2FwZVBsdWdp
blVuaXg7CisjZW5kaWYKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKQEAgLTk1LDYgKzkzLDEyIEBAIHB1YmxpYzoKIAog
I2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOyB9CisjZW5kaWYKKyAgICBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5T
aXplOyB9CisKICAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoY29uc3Qg
TlBSZWN0Kik7CkBAIC0xMDksNiArMTEzLDggQEAgcHVibGljOgogICAgIGJvb2wgZXZhbHVhdGUo
TlBPYmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7
CiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBib29sIGlzTXV0ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzV2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2luZG93
ZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTZXRFeGNlcHRpb25GdW5jdGlvbih2b2lkICgqKShjb25z
dCBTdHJpbmcmKSk7CiAKQEAgLTE1NSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTlBFcnJvciBO
UFBfR2V0VmFsdWUoTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKICAgICBOUEVycm9yIE5QUF9T
ZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogCisgICAgLy8gQ29udmVydCB0aGUg
Z2l2ZW4gcG9pbnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGlu
YXRlcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9k
dWxlKTsKIApAQCAtMjU4LDkgKzI2Nyw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIENvbnZlcnQg
dGhlIGdpdmVuIHBvaW50IGZyb20gcGx1Zy1pbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgLy8gQ29u
dmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1p
biBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUKICAgICAv
LyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJs
ZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Q
bHVnaW5Db29yZGluYXRlcyk7CkBAIC0yNzcsMTEgKzI4Myw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpOwotI2VuZGlmCi0KICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPj4g
UGVuZGluZ1VSTE5vdGlmeU1hcDsKQEAgLTM5NCwxNCArMzk1LDcgQEAgcHJpdmF0ZToKICAgICBO
UF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCi0gICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwotICAgIERp
c3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgR3RrV2lkZ2V0
KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwotI2VuZGlmCi0KLXB1YmxpYzogLy8gTmVlZCB0byBj
YWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KLSAgICBzdGF0aWMg
RGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQ
bHVnaW5Vbml4PiBtX2ltcGw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAy
MzQ5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorCisjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5YMTEuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgpCit7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQoreworI2lm
IFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7CisgICAgICAgIG1faW1wbCA9
IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBpZiAoIW1faW1wbCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9ucFdpbmRvdy50eXBlID0gbV9pbXBsLT53aW5kb3dUeXBlKCk7Cisg
ICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gbV9pbXBsLT53aW5kb3coKTsKKyAgICAgICAgbV9u
cFdpbmRvdy53c19pbmZvID0gbV9pbXBsLT53aW5kb3dTeXN0ZW1JbmZvKCk7CisgICAgICAgIGNh
bGxTZXRXaW5kb3coKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBtX2ltcGwgPSBudWxscHRyOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVj
dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIGlm
ICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgbV9pbXBsLT5nZW9tZXRyeURpZENoYW5n
ZSgpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFu
Z2UoKQoreworICAgIGlmICghbV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faW1wbC0+dmlzaWJpbGl0eURpZENoYW5nZSgpOworfQorCit2b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQoreworICAgIGlmICghbV9p
c1N0YXJ0ZWQgfHwgIW1faW1wbCkgeworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50
IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2lt
cGwtPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sK
KyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gfHwgZXZlbnQu
dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQorICAgICAgICAmJiBldmVudC5idXR0b24oKSA9
PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgorICAgICAgICAmJiBxdWlya3MoKS5jb250YWlu
cyhQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VFdmVudChl
dmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVu
dChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8
ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVNldEZvY3VzKGJvb2wgZm9jdXNJbikKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2lt
cGwpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1wbC0+c2V0Rm9jdXMoZm9jdXNJbik7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3Jk
aW5hdGVzKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
Cit7CisgICAgaWYgKG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoZXZlbnQpOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFt
X2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRs
ZU1vdXNlTGVhdmVFdmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sK
KyAgICAvLyBXZSBkb24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMg
dmlhIFdlYkV2ZW50RmFjdG9yeS4KKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50
OjpLZXlEb3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOworCisgICAgaWYg
KG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9pbXBsLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2lu
VW5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODQxODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
dW5peC9OZXRzY2FwZVBsdWdpblVuaXguaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0c2NhcGVQbHVn
aW5Vbml4X2gKKyNkZWZpbmUgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKworI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVf
aW50ZXJuYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJkRXZl
bnQ7CitjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViV2hlZWxFdmVudDsKKworY2xhc3Mg
TmV0c2NhcGVQbHVnaW5Vbml4IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
blVuaXgoKSB7IH0KKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCogd2luZG93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZp
c2liaWxpdHlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWJvYXJkRXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXMoYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisK
KyNlbmRpZiAvLyBOZXRzY2FwZVBsdWdpblVuaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAppbmRleCAzODAyODk3Li5jMGIyNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisKICNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNp
bmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgotCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KQEAgLTY2LDcgKzY3LDcgQEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXko
KQogI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAgLTg2LDcg
Kzg3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZGlzcGxheURlcHRoKCkKICNpZiBQTEFURk9STShH
VEspCiAgICAgcmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdka19zY3JlZW5fZ2V0X3N5c3Rl
bV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7CiAjZWxpZiBQTEFURk9STShFRkwp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQotICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVw
dGhfZ2V0KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRf
c2NyZWVuX2dldCgpKTsKKyAgICByZXR1cm4gZWNvcmVfeF9kZWZhdWx0X2RlcHRoX2dldCh4MTFI
b3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEwMyw3ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkKICNlbmRpZgogfQogCi1EaXNwbGF5KiBOZXRzY2FwZVBs
dWdpbjo6eDExSG9zdERpc3BsYXkoKQorc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFIb3N0RGlz
cGxheSgpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogfQpAQCAtMTE5LDE4MCArMTIw
LDE1NCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc29ja2V0UGx1Z1JlbW92ZWRDYWxsYmFjayhHdGtTb2Nr
ZXQqKQogfQogI2VuZGlmCiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRp
YWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVtYmVkLCB1aW50NjRfdCB3aW5kb3dJRCkKK3N0ZDo6
dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gTmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZShO
ZXRzY2FwZVBsdWdpbiYgcGx1Z2luKQogewotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93
VHlwZVdpbmRvdzsKLSAgICBpZiAoIW5lZWRzWEVtYmVkKSB7Ci0gICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBEaXNwbGF5KiBkaXNw
bGF5ID0geDExSG9zdERpc3BsYXkoKTsKIAorICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKICNp
ZiBQTEFURk9STShHVEspCi0gICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNvY2tldCB0
byBiZSBpbiB0aGUgc2FtZSBwcm9jZXNzLAotICAgIC8vIEkgZ3Vlc3MgaXQgdXNlcyBnZGtfd2lu
ZG93X2xvb2t1cCgpLCBzbyB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGhlcmUKLSAgICAvLyBjb250
YWluaW5nIGEgcGx1ZyB3aXRoIHRoZSBVSSBwcm9jZXNzIHNvY2tldCBlbWJlZGRlZC4KLSAgICBt
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdfbmV3KHN0YXRpY19jYXN0PFdpbmRvdz4o
d2luZG93SUQpKTsKLQotICAgIC8vIEhpZGUgdGhlIEd0a1BsdWcgb24gZGVsZXRlLWV2ZW50IHNp
bmNlIHdlIGFzc3VtZSB0aGUgd2lkZ2V0IGlzIHZhbGlkIHdoaWxlIHRoZSBwbHVnaW4gaXMgYWN0
aXZlLgotICAgIC8vIHBsYXRmb3JtRGVzdHJveSgpIHdpbGwgYmUgY2FsbGVkIGFueXdheSByaWdo
dCBhZnRlciB0aGUgZGVsZXRlLWV2ZW50LgotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF0Zm9y
bVBsdWdpbldpZGdldCwgImRlbGV0ZS1ldmVudCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRl
X29uX2RlbGV0ZSksIG51bGxwdHIpOwotCi0gICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBndGtfc29j
a2V0X25ldygpOwotICAgIC8vIERvIG5vdCBzaG93IHRoZSBwbHVnIHdpZGdldCB1bnRpbCB0aGUg
c29ja2V0IGlzIGNvbm5lY3RlZC4KLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc29ja2V0
LCAicGx1Zy1hZGRlZCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9zaG93KSwgbV9wbGF0Zm9ybVBs
dWdpbldpZGdldCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzb2NrZXQsICJwbHVnLXJlbW92ZWQi
LCBHX0NBTExCQUNLKHNvY2tldFBsdWdSZW1vdmVkQ2FsbGJhY2spLCBudWxscHRyKTsKLSAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpLCBz
b2NrZXQpOwotICAgIGd0a193aWRnZXRfc2hvdyhzb2NrZXQpOwotCi0gICAgbV9ucFdpbmRvdy53
aW5kb3cgPSBHSU5UX1RPX1BPSU5URVIoZ3RrX3NvY2tldF9nZXRfaWQoR1RLX1NPQ0tFVChzb2Nr
ZXQpKSk7Ci0gICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coc29j
a2V0KTsKLSAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0
YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8p
OwotICAgIGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gR0RLX1dJTkRPV19YRElTUExBWSh3aW5k
b3cpOwotICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwgPSBHREtfVklTVUFMX1hWSVNVQUwoZ2Rr
X3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOwotICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9
IGdka192aXN1YWxfZ2V0X2RlcHRoKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKLSAg
ICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgR0RL
X1JPT1RfV0lORE9XKCksIGNhbGxiYWNrU3RydWN0LT52aXN1YWwsIEFsbG9jTm9uZSk7CisgICAg
aWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpIHsKKyAgICAgICAgLy8gTlBQVnBsdWdpTmVlZHNYRW1i
ZWQgaXMgYSBib29sZWFuIHZhbHVlLCBidXQgYXQgbGVhc3QgdGhlCisgICAgICAgIC8vIEZsYXNo
IHBsYXllciBwbHVnaW4gaXMgdXNpbmcgYW4gJ2ludCcgaW5zdGVhZC4KKyAgICAgICAgaW50IG5l
ZWRzWEVtYmVkID0gMDsKKyAgICAgICAgcGx1Z2luLk5QUF9HZXRWYWx1ZShOUFBWcGx1Z2luTmVl
ZHNYRW1iZWQsICZuZWVkc1hFbWJlZCk7CisgICAgICAgIGlmIChuZWVkc1hFbWJlZCkgeworICAg
ICAgICAgICAgd2luZG93SUQgPSBwbHVnaW4uY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250
YWluZXIoKTsKKyAgICAgICAgICAgIGlmICghd2luZG93SUQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHdpbmRvd0lEKTsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKKyAgICB9CiAKLSAgICBYRmx1c2goZGlzcGxheSk7
CisgICAgRGlzcGxheSogZGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKTsKKyAgICBpZiAoIWRp
c3BsYXkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY2FsbFNldFdpbmRvdygpOwor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxh
eSwgd2luZG93SUQpOworI2VuZGlmCiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAot
Ym9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKQor
TmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVn
aW4sIERpc3BsYXkqIGRpc3BsYXkpCisgICAgOiBtX3BsdWdpbihwbHVnaW4pCisgICAgLCBtX3Bs
dWdpbkRpc3BsYXkoZGlzcGxheSkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0geDExSG9zdERp
c3BsYXkoKTsKLSAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKLSAg
ICBtX25wV2luZG93LndpbmRvdyA9IDA7Ci0KKyAgICBEaXNwbGF5KiBob3N0RGlzcGxheSA9IHgx
MUhvc3REaXNwbGF5KCk7CiAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7Ci0KLSAgICBO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5Q
U2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pOwotICAgIGNhbGxi
YWNrU3RydWN0LT5kaXNwbGF5ID0gZGlzcGxheTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGVwdGgg
PSBkZXB0aDsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRpc3BsYXkgPSBob3N0RGlz
cGxheTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRlcHRoID0gZGVwdGg7CiAKICAg
ICBYVmlzdWFsSW5mbyB2aXN1YWxUZW1wbGF0ZTsKICAgICB2aXN1YWxUZW1wbGF0ZS5zY3JlZW4g
PSB4MTFTY3JlZW4oKTsKICAgICB2aXN1YWxUZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZp
c3VhbFRlbXBsYXRlLmNfY2xhc3MgPSBUcnVlQ29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwot
ICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oZGlz
cGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFz
aywgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpKTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1
YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1YWxJbmZvKGhvc3REaXNwbGF5LCBWaXN1YWxTY3Jl
ZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxh
dGUsICZudW1NYXRjaGluZykpOwogICAgIEFTU0VSVCh2aXN1YWxJbmZvKTsKICAgICBWaXN1YWwq
IHZpc3VhbCA9IHZpc3VhbEluZm8uZ2V0KClbMF0udmlzdWFsOwogICAgIEFTU0VSVCh2aXN1YWwp
OwogCi0gICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IHZpc3VhbDsKLSAgICBjYWxsYmFja1N0
cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCks
IHZpc3VhbCwgQWxsb2NOb25lKTsKLQotICAgIGNhbGxTZXRXaW5kb3coKTsKLQotICAgIHJldHVy
biB0cnVlOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QudmlzdWFsID0gdmlzdWFsOwor
ICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAo
aG9zdERpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgpCi17Ci19Ci0KLWJvb2wg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQorI2lmIFBMQVRGT1JNKEdU
SykKK05ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYg
cGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICA6IG1fcGx1
Z2luKHBsdWdpbikKKyAgICAsIG1fcGx1Z2luRGlzcGxheShkaXNwbGF5KQorICAgICwgbV93aW5k
b3dJRCh3aW5kb3dJRCkKIHsKLSAgICB1aW50NjRfdCB3aW5kb3dJRCA9IDA7Ci0gICAgLy8gTlBQ
VnBsdWdpbk5lZWRzWEVtYmVkIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGF0IGxlYXN0IHRoZQot
ICAgIC8vIEZsYXNoIHBsYXllciBwbHVnaW4gaXMgdXNpbmcgYW4gJ2ludCcgaW5zdGVhZC4KLSAg
ICBpbnQgbmVlZHNYRW1iZWQgPSAwOwotICAgIGlmIChtX2lzV2luZG93ZWQpIHsKLSAgICAgICAg
TlBQX0dldFZhbHVlKE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm5lZWRzWEVtYmVkKTsKLSAgICAg
ICAgaWYgKG5lZWRzWEVtYmVkKSB7Ci0gICAgICAgICAgICB3aW5kb3dJRCA9IGNvbnRyb2xsZXIo
KS0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNvY2tldCB0byBiZSBp
biB0aGUgc2FtZSBwcm9jZXNzLAorICAgIC8vIEkgZ3Vlc3MgaXQgdXNlcyBnZGtfd2luZG93X2xv
b2t1cCgpLCBzbyB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGhlcmUKKyAgICAvLyBjb250YWluaW5n
IGEgcGx1ZyB3aXRoIHRoZSBVSSBwcm9jZXNzIHNvY2tldCBlbWJlZGRlZC4KKyAgICBtX3BsYXRm
b3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdfbmV3KHN0YXRpY19jYXN0PFdpbmRvdz4od2luZG93
SUQpKTsKIAotICAgIGlmICghKG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBIaWRlIHRoZSBHdGtQbHVnIG9uIGRlbGV0
ZS1ldmVudCBzaW5jZSB3ZSBhc3N1bWUgdGhlIHdpZGdldCBpcyB2YWxpZCB3aGlsZSB0aGUgcGx1
Z2luIGlzIGFjdGl2ZS4KKyAgICAvLyBwbGF0Zm9ybURlc3Ryb3koKSB3aWxsIGJlIGNhbGxlZCBh
bnl3YXkgcmlnaHQgYWZ0ZXIgdGhlIGRlbGV0ZS1ldmVudC4KKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQsICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193
aWRnZXRfaGlkZV9vbl9kZWxldGUpLCBudWxscHRyKTsKIAotICAgIE5QU2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gbmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7
Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPnR5cGUgPSAwOwotICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9
IGNhbGxiYWNrU3RydWN0OworICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3RrX3NvY2tldF9uZXco
KTsKKyAgICAvLyBEbyBub3Qgc2hvdyB0aGUgcGx1ZyB3aWRnZXQgdW50aWwgdGhlIHNvY2tldCBp
cyBjb25uZWN0ZWQuCisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNvY2tldCwgInBsdWct
YWRkZWQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfc2hvdyksIG1fcGxhdGZvcm1QbHVnaW5XaWRn
ZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0LCAicGx1Zy1yZW1vdmVkIiwgR19DQUxM
QkFDSyhzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKSwgbnVsbHB0cik7CisgICAgZ3RrX2NvbnRh
aW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSwgc29ja2V0KTsK
KyAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKIAotICAgIGlmIChtX2lzV2luZG93ZWQpCi0g
ICAgICAgIHJldHVybiBwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93ZWQobmVlZHNYRW1iZWQs
IHdpbmRvd0lEKTsKKyAgICBEaXNwbGF5KiBob3N0RGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7
CisgICAgbV9ucFdpbmRvd0lEID0gZ3RrX3NvY2tldF9nZXRfaWQoR1RLX1NPQ0tFVChzb2NrZXQp
KTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhzb2NrZXQp
OworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGlzcGxheSA9IEdES19XSU5ET1dfWERJ
U1BMQVkod2luZG93KTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCA9IEdE
S19WSVNVQUxfWFZJU1VBTChnZGtfd2luZG93X2dldF92aXN1YWwod2luZG93KSk7CisgICAgbV9z
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5kZXB0aCA9IGdka192aXN1YWxfZ2V0X2RlcHRoKGdka193
aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0
LmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGhvc3REaXNwbGF5LCBHREtfUk9PVF9XSU5ET1co
KSwgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwsIEFsbG9jTm9uZSk7CiAKLSAgICBy
ZXR1cm4gcGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKTsKKyAgICBYRmx1c2goaG9z
dERpc3BsYXkpOwogfQorI2VuZGlmCiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVz
dHJveSgpCitOZXRzY2FwZVBsdWdpblgxMTo6fk5ldHNjYXBlUGx1Z2luWDExKCkKIHsKLSAgICBO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5Q
U2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pOwotICAgIERpc3Bs
YXkqIGhvc3REaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKLSAgICBYRnJlZUNvbG9ybWFwKGhv
c3REaXNwbGF5LCBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXApOwotICAgIGRlbGV0ZSBjYWxsYmFj
a1N0cnVjdDsKKyAgICBYRnJlZUNvbG9ybWFwKHgxMUhvc3REaXNwbGF5KCksIG1fc2V0V2luZG93
Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXApOwogCiAgICAgbV9kcmF3YWJsZS5yZXNldCgpOwogCiAj
aWYgUExBVEZPUk0oR1RLKQotICAgIGlmIChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSB7CisgICAg
aWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpCiAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveSht
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0KTsKLSAgICAgICAgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCA9
IDA7Ci0gICAgfQogI2VuZGlmCiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52
YWxpZGF0ZShjb25zdCBJbnRSZWN0JikKK05QV2luZG93VHlwZSBOZXRzY2FwZVBsdWdpblgxMTo6
d2luZG93VHlwZSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fcGx1Z2luLmlzV2luZG93ZWQoKSA/IE5QV2luZG93VHlwZVdp
bmRvdyA6IE5QV2luZG93VHlwZURyYXdhYmxlOworfQorCit2b2lkKiBOZXRzY2FwZVBsdWdpblgx
MTo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8g
R0lOVF9UT19QT0lOVEVSKG1fbnBXaW5kb3dJRCkgOiBudWxscHRyOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKK3ZvaWQgTmV0c2NhcGVQbHVn
aW5YMTE6Omdlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKSB7Cisg
ICAgaWYgKG1fcGx1Z2luLmlzV2luZG93ZWQoKSkgewogICAgICAgICB1aW50NjRfdCB3aW5kb3dJ
RCA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtf
UExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNlbmRpZgotICAgICAgICBjb250cm9s
bGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCB3aW5kb3dJRCk7CisgICAgICAgIG1fcGx1Z2luLmNv
bnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX3BsdWdpbi5mcmFt
ZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCksIG1fcGx1Z2luLmNsaXBSZWN0KCksIHdpbmRvd0lE
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZHJhd2FibGUucmVzZXQoKTsKLSAg
ICBpZiAobV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKKyAgICBpZiAobV9wbHVnaW4uc2l6ZSgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXht
YXAoeDExSG9zdERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgp
LCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBtX2RyYXdhYmxl
ID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93SUQoKSwgbV9wbHVn
aW4uc2l6ZSgpLndpZHRoKCksIG1fcGx1Z2luLnNpemUoKS5oZWlnaHQoKSwgZGlzcGxheURlcHRo
KCkpOwogICAgIFhTeW5jKHgxMUhvc3REaXNwbGF5KCksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUuCiB9CiAKLXZvaWQgTmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCit2b2lkIE5ldHNjYXBlUGx1
Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIHsKLSAgICBpZiAoIW1faXNXaW5kb3dlZCkK
LSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAg
ICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICB3aW5kb3dJ
RCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29j
a2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNlbmRpZgot
ICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKG1faXNW
aXNpYmxlLCB3aW5kb3dJRCk7Ci0gICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgbV9jbGlwUmVjdCwg
d2luZG93SUQpOworICAgIG1fcGx1Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5WaXNp
YmlsaXR5RGlkQ2hhbmdlKG1fcGx1Z2luLmlzVmlzaWJsZSgpLCB3aW5kb3dJRCk7CisgICAgbV9w
bHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1
Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwg
d2luZG93SUQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNT
bmFwc2hvdCovKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgaWYgKG1faXNXaW5k
b3dlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzU3RhcnRlZCkgewotICAgICAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAog
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhbV9kcmF3YWJsZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzEzLDE0ICsyODgsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQK
ICAgICBleHBvc2VFdmVudC53aWR0aCA9IGV4cG9zZWRSZWN0LndpZHRoKCk7CiAgICAgZXhwb3Nl
RXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QuaGVpZ2h0KCk7CiAKLSAgICBOUFBfSGFuZGxlRXZl
bnQoJnhldmVudCk7CisgICAgbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4ZXZlbnQpOwogCiAg
ICAgaWYgKG1fcGx1Z2luRGlzcGxheSAhPSB4MTFIb3N0RGlzcGxheSgpKQogICAgICAgICBYU3lu
YyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRG
T1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3
YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2lu
RGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8TlBTZXRXaW5k
b3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwgbV9wbHVnaW5T
aXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBtX3NldFdpbmRv
d0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgbV9wbHVnaW4uc2l6ZSgpLndpZHRoKCksIG1fcGx1Z2lu
LnNpemUoKS5oZWlnaHQoKSkpOwogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIApAQCAtMzQyLDcgKzMxNyw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplWEV2ZW50KFhFdmVudCYgZXZlbnQpCiAgICAg
bWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogICAgIGV2ZW50Lnhhbnkuc2VyaWFs
ID0gMDsKICAgICBldmVudC54YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsKLSAgICBldmVudC54YW55
LmRpc3BsYXkgPSBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKTsKKyAgICBldmVudC54
YW55LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwogICAgIGV2ZW50Lnhhbnkud2luZG93ID0g
MDsKIH0KIApAQCAtNDQwLDE1ICs0MTUsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WENyb3Nz
aW5nRXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNvbnN0IFdlYk1vdXNlRXZlbnQmCiAgICAg
eENyb3NzaW5nLmZvY3VzID0gZmFsc2U7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgTmV0
c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZl
bnQpCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93biB8fCBldmVudC50eXBl
KCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXApCi0gICAgICAgICAmJiBldmVudC5idXR0b24oKSA9PSBX
ZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgotICAgICAgICAgJiYgcXVpcmtzKCkuY29udGFpbnMo
UGx1Z2luUXVpcmtzOjpJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAg
IFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwpAQCAtNDU2LDEw
ICs0MjUsMTAgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50
KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7
CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNl
VXA6Ci0gICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0
VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CisgICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4
RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlTW92ZToKLSAgICAgICAgc2V0
WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBv
aW50KCkpKTsKKyAgICAgICAgc2V0WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1f
cGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXZWJFdmVudDo6TW91c2VGb3JjZUNoYW5nZWQ6CiAgICAgY2FzZSBXZWJFdmVudDo6
TW91c2VGb3JjZURvd246CkBAIC00NzksNyArNDQ4LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQo
JnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7
CiB9CiAKIC8vIFdlIHVuZGVmaW5lIHRoZXNlIGNvbnN0YW50cyBpbiBucHJ1bnRpbWVfaW50ZXJu
YWwuaCB0byBhdm9pZCBjb2xsaXNpb24KQEAgLTQ4OSwyMiArNDU4LDIwIEBAIGNvbnN0IGludCBr
S2V5UmVsZWFzZVR5cGUgPSAzOwogY29uc3QgaW50IGtGb2N1c0luVHlwZSA9IDk7CiBjb25zdCBp
bnQga0ZvY3VzT3V0VHlwZSA9IDEwOwogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCitib29sIE5ldHNjYXBl
UGx1Z2luWDExOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQog
ewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NF
UlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5p
dGlhbGl6ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhCdXR0b25FdmVudEZpZWxkc0J5V2ViV2hl
ZWxFdmVudCh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7Cisg
ICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzQnlXZWJXaGVlbEV2ZW50KHhFdmVudCwgZXZlbnQsIG1f
cGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKIAotICAgIHJldHVybiAhTlBQ
X0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2
ZW50KCZ4RXZlbnQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3Vz
KGJvb2wgZm9jdXNJbikKK3ZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnNldEZvY3VzKGJvb2wgZm9j
dXNJbikKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGlu
aXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKQEAgLTUxMywzNiArNDgwLDI5IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtU2V0Rm9jdXMoYm9vbCBmb2N1c0luKQogICAgIGZvY3VzRXZlbnQu
bW9kZSA9IE5vdGlmeU5vcm1hbDsKICAgICBmb2N1c0V2ZW50LmRldGFpbCA9IE5vdGlmeURldGFp
bE5vbmU7CiAKLSAgICBOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CisgICAgbV9wbHVnaW4uTlBQ
X0hhbmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjp3YW50c1Bs
dWdpblJlbGF0aXZlTlBXaW5kb3dDb29yZGluYXRlcygpCitib29sIE5ldHNjYXBlUGx1Z2luWDEx
OjpoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxl
TW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQotewotICAgIGlmICht
X2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4u
aXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVu
dCh4RXZlbnQpOwotICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNv
bnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBFbnRlck5vdGlmeSk7CisgICAgc2V0WENyb3Nz
aW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVydFRvUm9vdFZpZXco
SW50UG9pbnQoKSksIEVudGVyTm90aWZ5KTsKIAotICAgIHJldHVybiAhTlBQX0hhbmRsZUV2ZW50
KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQp
OwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6Omhh
bmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBp
ZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fcGx1
Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGluaXRpYWxpemVY
RXZlbnQoeEV2ZW50KTsKLSAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50
LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwgTGVhdmVOb3RpZnkpOworICAgIHNldFhD
cm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RW
aWV3KEludFBvaW50KCkpLCBMZWF2ZU5vdGlmeSk7CiAKLSAgICByZXR1cm4gIU5QUF9IYW5kbGVF
dmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2
ZW50KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhYRXZlbnQm
IHhFdmVudCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViRXZlbnQpCkBAIC01NjUsOCArNTI1
LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhYRXZlbnQmIHhFdmVu
dCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2UKICAgICB4S2V5Lnlfcm9vdCA9IDA7CiB9CiAK
LWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZUtl
eWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJU
KG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAgICAgLy8gV2UgZG9uJ3QgZ2VuZXJhdGUgb3RoZXIg
dHlwZXMgb2Yga2V5Ym9hcmQgZXZlbnRzIHZpYSBXZWJFdmVudEZhY3RvcnkuCiAgICAgQVNTRVJU
KGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biB8fCBldmVudC50eXBlKCkgPT0gV2Vi
RXZlbnQ6OktleVVwKTsKIApAQCAtNTc0LDcgKzUzNSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7CiAgICAgc2V0WEtleUV2ZW50RmllbGRz
KHhFdmVudCwgZXZlbnQpOwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7
CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMTA4NzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
VW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXRzY2FwZVBsdWdpblgx
MV9oCisjZGVmaW5lIE5ldHNjYXBlUGx1Z2luWDExX2gKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RV
UkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luVW5peC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXRz
Y2FwZVBsdWdpbjsKKworY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWw6IHB1YmxpYyBOZXRz
Y2FwZVBsdWdpblVuaXggeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0
c2NhcGVQbHVnaW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOworICAgIE5ldHNjYXBlUGx1
Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOworI2lmIFBMQVRGT1JNKEdUSykKKyAg
ICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYsIERpc3BsYXkqLCB1aW50NjRfdCB3
aW5kb3dJRCk7CisjZW5kaWYKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdpblgxMSgpOworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkKiB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdpbmRvd1N5c3RlbUluZm8oKSBvdmVycmlk
ZSB7IHJldHVybiAmbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBnZW9tZXRyeURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB2aXNpYmls
aXR5RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVN
b3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CisKKyAgICBO
ZXRzY2FwZVBsdWdpbiYgbV9wbHVnaW47CisgICAgRGlzcGxheSogbV9wbHVnaW5EaXNwbGF5IHsg
bnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKKyNpZiBQ
TEFURk9STShHVEspCisgICAgdWludDY0X3QgbV93aW5kb3dJRCB7IDAgfTsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fbnBXaW5kb3dJRCB7IDAgfTsKKyAgICBHdGtXaWRnZXQqIG1fcGxhdGZvcm1QbHVn
aW5XaWRnZXQgeyBudWxscHRyIH07CisgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCBtX3Nl
dFdpbmRvd0NhbGxiYWNrU3RydWN0OworI2VuZGlmCit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKworI2VuZGlmIC8vIE5ldHNj
YXBlUGx1Z2luWDExX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266889</attachid>
            <date>2015-12-08 08:45:37 -0800</date>
            <delta_ts>2015-12-08 09:01:21 -0800</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk2-npapi-plugins-wayland.diff</filename>
            <type>text/plain</type>
            <size>43848</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MWZkMTNkLi5iNjQ3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMTItMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFs
bCBwbHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBs
ZS4gVGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAg
ZXh0ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhl
cmUncyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5k
ZXIgd2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgor
ICAgICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBO
ZXRzY2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1v
biBjb2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVl
IHRoZSBYMTEgaW1wbGVtZW50YXRpbiBvbmx5IHdoZW4gbmVlZGVkIGFuZAorICAgICAgICBhdmFp
bGFibGUuIEZvciB3aW5kb3dlZCBwbHVnaW5zIHdlIHdpbGwgZmFpbCB0aGUgaW5pdGlhbGl6YXRp
b24KKyAgICAgICAgdW5kZXIgbm9uLVgxMSBwbGFmb3Jtcywgd2hpbGUgZm9yIHdpbmRvd2xlc3Mg
cGx1Z2lucyB3ZSB3aWxsIGp1c3QKKyAgICAgICAgcmV0dXJuIGVhcmx5IGZyb20gcGFpbnQgbWV0
aG9kLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29t
cGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMpOiBEbyBub3QgZGlzYWJsZSBwbHVnaW5zIGluIHdh
eWxhbmQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSk6
IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6IFVzZSBQbGF0
Zm9ybURpc3BsYXkgaW5zdGVhZCBvZgorICAgICAgICBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERp
c3BsYXkoKSBhbmQgZG9uJ3QgY2xhaW0gdG8gc3VwcG9ydCBYMTEKKyAgICAgICAgc3BlY2lmaWMg
ZmVhdHVyZXMgdW5kZXIgbm9uLXgxMSBwbGF0Zm9ybXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKTogUmVtb3ZlIFgxMSBhbmQgR1RLCisgICAgICAg
IHNwZWNpZmljIG1lbWViZXJzIHRoYXQgYXJlIG5vdyBtb3ZlZCB0byBhIGRlZGljYXRlZCBjbGFz
cyBOZXRzY2FwZVBsdWdpblgxMS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmZy
YW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOiBNYWtlIHRoaXMgcHVibGljLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Y2xpcFJlY3QpOiBBZGQgZ2V0dGVyLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6aXNXaW5kb3dlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6aXNWaXNpYmxlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRv
d0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
SGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VMZWF2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblVuaXg6On5OZXRzY2FwZVBsdWdpblVuaXgp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5KToKKyAgICAgICAg
KFdlYktpdDo6ZGlzcGxheURlcHRoKToKKyAgICAgICAgKFdlYktpdDo6eDExSG9zdERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6On5OZXRzY2FwZVBsdWdpblgxMSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5YMTE6OndpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5YMTE6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVhFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6c2V0Rm9jdXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlTGVhdmVFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6c2V0Q29tbW9uTW91c2VFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OnNldFhLZXlFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oOiBBZGRl
ZC4KKwogMjAxNS0xMi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLXSBOb3RpZnkgV2ViQ29yZSB3aGVuIG5vdGlmaWNhdGlvbiBpcyBjbGlj
a2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGRiZTg3NGIuLmMxZjM0ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTksNiArMTk5LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5p
eC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjcyLDYgKzI3Myw4IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgorICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDhmMTcxN2YuLjUxMDcyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMzUsNiArMzM1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAK
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cApAQCAtNTIwLDYgKzUyMSw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9ndGsiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy91bml4IgpAQCAtNzkwLDYgKzc5Myw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NF
U1NfR1RLMikKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTm9uZS5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcAogCisgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAogICAgICAgICAke0RFUklWRURfU09V
UkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwCmluZGV4IDNlMGM0ODguLjlkMjEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE1OTQsMTIgKzE1OTQs
NiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotICAg
IC8vIERvIG5vdCBhbGxvdyB0byBjaGFuZ2UgdGhpcyBzZXR0aW5nIGluIFdheWxhbmQsIHNpbmNl
IHBsdWdpbnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CiAgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJsZWQoKTsKICAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4IGU0YTBiN2EuLmM3MjQyYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCkBAIC0z
OSw4ICszOSw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3Jl
KCkKICAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVyIFdheWxh
bmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoZmFsc2UpOwotCi0gICAgICAgIHNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsK
ICAgICB9CiAjZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCmluZGV4IGNjNmU3NGQuLjM2NjJmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShY
MTEpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MjQsMTgg
KzUyOCwyMSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNl
bGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiB7
Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4odmFsdWUp
ID0gTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCk7Ci0gICAgICAgICAgIGJyZWFrOwot
ICAgICAgIH0KLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6Ci0gICAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsK
LSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6Ci0gICAgICAgICAgICpzdGF0aWNf
Y2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgICAgIGlmICghbnBwKQorICAgICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgY29uc3QgYXV0byYg
ZGlzcGxheSA9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOworICAg
ICAgICAgICAgaWYgKGRpc3BsYXkudHlwZSgpICE9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
ICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXkpLm5hdGl2ZSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgorICAg
ICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OlgxMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5QTlZTdXBw
b3J0c1dpbmRvd2xlc3M6CisgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDog
ewogICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQgYWJv
dXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDkz
ZWYzNmQuLjNkYzBhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDIsNiArNDIs
MTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
VW5peC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTkwLDEyICs5NCw2IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdp
bihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAgICAgLCBt
X251bGxFdmVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1Z2luOjpu
dWxsRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9ucENHQ29udGV4dCgpCiAjZW5kaWYKLSNlbGlm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICwgbV9kcmF3YWJsZSgwKQotICAgICwgbV9w
bHVnaW5EaXNwbGF5KDApCi0jaWYgUExBVEZPUk0oR1RLKQotICAgICwgbV9wbGF0Zm9ybVBsdWdp
bldpZGdldCgwKQotI2VuZGlmCiAjZW5kaWYKIHsKICAgICBtX25wcC5uZGF0YSA9IHRoaXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDRmOTJkOGYuLmYyYzg5MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0zOCwxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQ
SGVhZGVyTWFwOwpAQCAtNTQsNyArNTAsOSBAQCBPQkpDX0NMQVNTIFdLTlBBUElQbHVnSW5Db250
YWluZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5TdHJlYW07
Ci0gICAgCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitjbGFzcyBOZXRzY2FwZVBsdWdp
blVuaXg7CisjZW5kaWYKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKQEAgLTk1LDYgKzkzLDEyIEBAIHB1YmxpYzoKIAog
I2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOyB9CisjZW5kaWYKKyAgICBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5T
aXplOyB9CisKICAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoY29uc3Qg
TlBSZWN0Kik7CkBAIC0xMDksNiArMTEzLDggQEAgcHVibGljOgogICAgIGJvb2wgZXZhbHVhdGUo
TlBPYmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7
CiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBib29sIGlzTXV0ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzV2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2luZG93
ZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTZXRFeGNlcHRpb25GdW5jdGlvbih2b2lkICgqKShjb25z
dCBTdHJpbmcmKSk7CiAKQEAgLTE1NSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTlBFcnJvciBO
UFBfR2V0VmFsdWUoTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKICAgICBOUEVycm9yIE5QUF9T
ZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogCisgICAgLy8gQ29udmVydCB0aGUg
Z2l2ZW4gcG9pbnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGlu
YXRlcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9k
dWxlKTsKIApAQCAtMjU4LDkgKzI2Nyw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIENvbnZlcnQg
dGhlIGdpdmVuIHBvaW50IGZyb20gcGx1Zy1pbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgLy8gQ29u
dmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1p
biBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUKICAgICAv
LyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJs
ZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Q
bHVnaW5Db29yZGluYXRlcyk7CkBAIC0yNzcsMTEgKzI4Myw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpOwotI2VuZGlmCi0KICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPj4g
UGVuZGluZ1VSTE5vdGlmeU1hcDsKQEAgLTM5NCwxNCArMzk1LDcgQEAgcHJpdmF0ZToKICAgICBO
UF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCi0gICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwotICAgIERp
c3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgR3RrV2lkZ2V0
KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwotI2VuZGlmCi0KLXB1YmxpYzogLy8gTmVlZCB0byBj
YWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KLSAgICBzdGF0aWMg
RGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQ
bHVnaW5Vbml4PiBtX2ltcGw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAy
MzQ5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorCisjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5YMTEuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgpCit7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQoreworI2lm
IFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7CisgICAgICAgIG1faW1wbCA9
IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBpZiAoIW1faW1wbCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9ucFdpbmRvdy50eXBlID0gbV9pbXBsLT53aW5kb3dUeXBlKCk7Cisg
ICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gbV9pbXBsLT53aW5kb3coKTsKKyAgICAgICAgbV9u
cFdpbmRvdy53c19pbmZvID0gbV9pbXBsLT53aW5kb3dTeXN0ZW1JbmZvKCk7CisgICAgICAgIGNh
bGxTZXRXaW5kb3coKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBtX2ltcGwgPSBudWxscHRyOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVj
dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIGlm
ICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgbV9pbXBsLT5nZW9tZXRyeURpZENoYW5n
ZSgpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFu
Z2UoKQoreworICAgIGlmICghbV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faW1wbC0+dmlzaWJpbGl0eURpZENoYW5nZSgpOworfQorCit2b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQoreworICAgIGlmICghbV9p
c1N0YXJ0ZWQgfHwgIW1faW1wbCkgeworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50
IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2lt
cGwtPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sK
KyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gfHwgZXZlbnQu
dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQorICAgICAgICAmJiBldmVudC5idXR0b24oKSA9
PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgorICAgICAgICAmJiBxdWlya3MoKS5jb250YWlu
cyhQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VFdmVudChl
dmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVu
dChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8
ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVNldEZvY3VzKGJvb2wgZm9jdXNJbikKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2lt
cGwpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1wbC0+c2V0Rm9jdXMoZm9jdXNJbik7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3Jk
aW5hdGVzKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
Cit7CisgICAgaWYgKG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoZXZlbnQpOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFt
X2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRs
ZU1vdXNlTGVhdmVFdmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sK
KyAgICAvLyBXZSBkb24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMg
dmlhIFdlYkV2ZW50RmFjdG9yeS4KKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50
OjpLZXlEb3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOworCisgICAgaWYg
KG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9pbXBsLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2lu
VW5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODQxODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
dW5peC9OZXRzY2FwZVBsdWdpblVuaXguaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0c2NhcGVQbHVn
aW5Vbml4X2gKKyNkZWZpbmUgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKworI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVf
aW50ZXJuYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJkRXZl
bnQ7CitjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViV2hlZWxFdmVudDsKKworY2xhc3Mg
TmV0c2NhcGVQbHVnaW5Vbml4IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
blVuaXgoKSB7IH0KKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCogd2luZG93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZp
c2liaWxpdHlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWJvYXJkRXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXMoYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisK
KyNlbmRpZiAvLyBOZXRzY2FwZVBsdWdpblVuaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAppbmRleCAzODAyODk3Li5jMGIyNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisKICNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNp
bmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgotCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KQEAgLTY2LDcgKzY3LDcgQEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXko
KQogI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAgLTg2LDcg
Kzg3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZGlzcGxheURlcHRoKCkKICNpZiBQTEFURk9STShH
VEspCiAgICAgcmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdka19zY3JlZW5fZ2V0X3N5c3Rl
bV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7CiAjZWxpZiBQTEFURk9STShFRkwp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQotICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVw
dGhfZ2V0KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRf
c2NyZWVuX2dldCgpKTsKKyAgICByZXR1cm4gZWNvcmVfeF9kZWZhdWx0X2RlcHRoX2dldCh4MTFI
b3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEwMyw3ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkKICNlbmRpZgogfQogCi1EaXNwbGF5KiBOZXRzY2FwZVBs
dWdpbjo6eDExSG9zdERpc3BsYXkoKQorc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFIb3N0RGlz
cGxheSgpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogfQpAQCAtMTE5LDE4MCArMTIw
LDE1NCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc29ja2V0UGx1Z1JlbW92ZWRDYWxsYmFjayhHdGtTb2Nr
ZXQqKQogfQogI2VuZGlmCiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRp
YWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVtYmVkLCB1aW50NjRfdCB3aW5kb3dJRCkKK3N0ZDo6
dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gTmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZShO
ZXRzY2FwZVBsdWdpbiYgcGx1Z2luKQogewotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93
VHlwZVdpbmRvdzsKLSAgICBpZiAoIW5lZWRzWEVtYmVkKSB7Ci0gICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBEaXNwbGF5KiBkaXNw
bGF5ID0geDExSG9zdERpc3BsYXkoKTsKIAorICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKICNp
ZiBQTEFURk9STShHVEspCi0gICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNvY2tldCB0
byBiZSBpbiB0aGUgc2FtZSBwcm9jZXNzLAotICAgIC8vIEkgZ3Vlc3MgaXQgdXNlcyBnZGtfd2lu
ZG93X2xvb2t1cCgpLCBzbyB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGhlcmUKLSAgICAvLyBjb250
YWluaW5nIGEgcGx1ZyB3aXRoIHRoZSBVSSBwcm9jZXNzIHNvY2tldCBlbWJlZGRlZC4KLSAgICBt
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdfbmV3KHN0YXRpY19jYXN0PFdpbmRvdz4o
d2luZG93SUQpKTsKLQotICAgIC8vIEhpZGUgdGhlIEd0a1BsdWcgb24gZGVsZXRlLWV2ZW50IHNp
bmNlIHdlIGFzc3VtZSB0aGUgd2lkZ2V0IGlzIHZhbGlkIHdoaWxlIHRoZSBwbHVnaW4gaXMgYWN0
aXZlLgotICAgIC8vIHBsYXRmb3JtRGVzdHJveSgpIHdpbGwgYmUgY2FsbGVkIGFueXdheSByaWdo
dCBhZnRlciB0aGUgZGVsZXRlLWV2ZW50LgotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF0Zm9y
bVBsdWdpbldpZGdldCwgImRlbGV0ZS1ldmVudCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRl
X29uX2RlbGV0ZSksIG51bGxwdHIpOwotCi0gICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBndGtfc29j
a2V0X25ldygpOwotICAgIC8vIERvIG5vdCBzaG93IHRoZSBwbHVnIHdpZGdldCB1bnRpbCB0aGUg
c29ja2V0IGlzIGNvbm5lY3RlZC4KLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc29ja2V0
LCAicGx1Zy1hZGRlZCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9zaG93KSwgbV9wbGF0Zm9ybVBs
dWdpbldpZGdldCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChzb2NrZXQsICJwbHVnLXJlbW92ZWQi
LCBHX0NBTExCQUNLKHNvY2tldFBsdWdSZW1vdmVkQ2FsbGJhY2spLCBudWxscHRyKTsKLSAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpLCBz
b2NrZXQpOwotICAgIGd0a193aWRnZXRfc2hvdyhzb2NrZXQpOwotCi0gICAgbV9ucFdpbmRvdy53
aW5kb3cgPSBHSU5UX1RPX1BPSU5URVIoZ3RrX3NvY2tldF9nZXRfaWQoR1RLX1NPQ0tFVChzb2Nr
ZXQpKSk7Ci0gICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coc29j
a2V0KTsKLSAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0
YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8p
OwotICAgIGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gR0RLX1dJTkRPV19YRElTUExBWSh3aW5k
b3cpOwotICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwgPSBHREtfVklTVUFMX1hWSVNVQUwoZ2Rr
X3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOwotICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9
IGdka192aXN1YWxfZ2V0X2RlcHRoKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKLSAg
ICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgR0RL
X1JPT1RfV0lORE9XKCksIGNhbGxiYWNrU3RydWN0LT52aXN1YWwsIEFsbG9jTm9uZSk7CisgICAg
aWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpIHsKKyAgICAgICAgLy8gTlBQVnBsdWdpTmVlZHNYRW1i
ZWQgaXMgYSBib29sZWFuIHZhbHVlLCBidXQgYXQgbGVhc3QgdGhlCisgICAgICAgIC8vIEZsYXNo
IHBsYXllciBwbHVnaW4gaXMgdXNpbmcgYW4gJ2ludCcgaW5zdGVhZC4KKyAgICAgICAgaW50IG5l
ZWRzWEVtYmVkID0gMDsKKyAgICAgICAgcGx1Z2luLk5QUF9HZXRWYWx1ZShOUFBWcGx1Z2luTmVl
ZHNYRW1iZWQsICZuZWVkc1hFbWJlZCk7CisgICAgICAgIGlmIChuZWVkc1hFbWJlZCkgeworICAg
ICAgICAgICAgd2luZG93SUQgPSBwbHVnaW4uY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250
YWluZXIoKTsKKyAgICAgICAgICAgIGlmICghd2luZG93SUQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHdpbmRvd0lEKTsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKKyAgICB9CiAKLSAgICBYRmx1c2goZGlzcGxheSk7
CisgICAgRGlzcGxheSogZGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKTsKKyAgICBpZiAoIWRp
c3BsYXkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY2FsbFNldFdpbmRvdygpOwor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxh
eSwgd2luZG93SUQpOworI2VuZGlmCiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAot
Ym9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKQor
TmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVn
aW4sIERpc3BsYXkqIGRpc3BsYXkpCisgICAgOiBtX3BsdWdpbihwbHVnaW4pCisgICAgLCBtX3Bs
dWdpbkRpc3BsYXkoZGlzcGxheSkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0geDExSG9zdERp
c3BsYXkoKTsKLSAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKLSAg
ICBtX25wV2luZG93LndpbmRvdyA9IDA7Ci0KKyAgICBEaXNwbGF5KiBob3N0RGlzcGxheSA9IHgx
MUhvc3REaXNwbGF5KCk7CiAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7Ci0KLSAgICBO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5Q
U2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pOwotICAgIGNhbGxi
YWNrU3RydWN0LT5kaXNwbGF5ID0gZGlzcGxheTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGVwdGgg
PSBkZXB0aDsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRpc3BsYXkgPSBob3N0RGlz
cGxheTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRlcHRoID0gZGVwdGg7CiAKICAg
ICBYVmlzdWFsSW5mbyB2aXN1YWxUZW1wbGF0ZTsKICAgICB2aXN1YWxUZW1wbGF0ZS5zY3JlZW4g
PSB4MTFTY3JlZW4oKTsKICAgICB2aXN1YWxUZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZp
c3VhbFRlbXBsYXRlLmNfY2xhc3MgPSBUcnVlQ29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwot
ICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oZGlz
cGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFz
aywgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpKTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1
YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1YWxJbmZvKGhvc3REaXNwbGF5LCBWaXN1YWxTY3Jl
ZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxh
dGUsICZudW1NYXRjaGluZykpOwogICAgIEFTU0VSVCh2aXN1YWxJbmZvKTsKICAgICBWaXN1YWwq
IHZpc3VhbCA9IHZpc3VhbEluZm8uZ2V0KClbMF0udmlzdWFsOwogICAgIEFTU0VSVCh2aXN1YWwp
OwogCi0gICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IHZpc3VhbDsKLSAgICBjYWxsYmFja1N0
cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCks
IHZpc3VhbCwgQWxsb2NOb25lKTsKLQotICAgIGNhbGxTZXRXaW5kb3coKTsKLQotICAgIHJldHVy
biB0cnVlOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QudmlzdWFsID0gdmlzdWFsOwor
ICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAo
aG9zdERpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgpCi17Ci19Ci0KLWJvb2wg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQorI2lmIFBMQVRGT1JNKEdU
SykKK05ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYg
cGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5LCB1aW50NjRfdCB3aW5kb3dJRCkKKyAgICA6IG1fcGx1
Z2luKHBsdWdpbikKKyAgICAsIG1fcGx1Z2luRGlzcGxheShkaXNwbGF5KQorICAgICwgbV93aW5k
b3dJRCh3aW5kb3dJRCkKIHsKLSAgICB1aW50NjRfdCB3aW5kb3dJRCA9IDA7Ci0gICAgLy8gTlBQ
VnBsdWdpbk5lZWRzWEVtYmVkIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGF0IGxlYXN0IHRoZQot
ICAgIC8vIEZsYXNoIHBsYXllciBwbHVnaW4gaXMgdXNpbmcgYW4gJ2ludCcgaW5zdGVhZC4KLSAg
ICBpbnQgbmVlZHNYRW1iZWQgPSAwOwotICAgIGlmIChtX2lzV2luZG93ZWQpIHsKLSAgICAgICAg
TlBQX0dldFZhbHVlKE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm5lZWRzWEVtYmVkKTsKLSAgICAg
ICAgaWYgKG5lZWRzWEVtYmVkKSB7Ci0gICAgICAgICAgICB3aW5kb3dJRCA9IGNvbnRyb2xsZXIo
KS0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNvY2tldCB0byBiZSBp
biB0aGUgc2FtZSBwcm9jZXNzLAorICAgIC8vIEkgZ3Vlc3MgaXQgdXNlcyBnZGtfd2luZG93X2xv
b2t1cCgpLCBzbyB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGhlcmUKKyAgICAvLyBjb250YWluaW5n
IGEgcGx1ZyB3aXRoIHRoZSBVSSBwcm9jZXNzIHNvY2tldCBlbWJlZGRlZC4KKyAgICBtX3BsYXRm
b3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdfbmV3KHN0YXRpY19jYXN0PFdpbmRvdz4od2luZG93
SUQpKTsKIAotICAgIGlmICghKG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBIaWRlIHRoZSBHdGtQbHVnIG9uIGRlbGV0
ZS1ldmVudCBzaW5jZSB3ZSBhc3N1bWUgdGhlIHdpZGdldCBpcyB2YWxpZCB3aGlsZSB0aGUgcGx1
Z2luIGlzIGFjdGl2ZS4KKyAgICAvLyBwbGF0Zm9ybURlc3Ryb3koKSB3aWxsIGJlIGNhbGxlZCBh
bnl3YXkgcmlnaHQgYWZ0ZXIgdGhlIGRlbGV0ZS1ldmVudC4KKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQsICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193
aWRnZXRfaGlkZV9vbl9kZWxldGUpLCBudWxscHRyKTsKIAotICAgIE5QU2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gbmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7
Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPnR5cGUgPSAwOwotICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9
IGNhbGxiYWNrU3RydWN0OworICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3RrX3NvY2tldF9uZXco
KTsKKyAgICAvLyBEbyBub3Qgc2hvdyB0aGUgcGx1ZyB3aWRnZXQgdW50aWwgdGhlIHNvY2tldCBp
cyBjb25uZWN0ZWQuCisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNvY2tldCwgInBsdWct
YWRkZWQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfc2hvdyksIG1fcGxhdGZvcm1QbHVnaW5XaWRn
ZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0LCAicGx1Zy1yZW1vdmVkIiwgR19DQUxM
QkFDSyhzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKSwgbnVsbHB0cik7CisgICAgZ3RrX2NvbnRh
aW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSwgc29ja2V0KTsK
KyAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKIAotICAgIGlmIChtX2lzV2luZG93ZWQpCi0g
ICAgICAgIHJldHVybiBwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93ZWQobmVlZHNYRW1iZWQs
IHdpbmRvd0lEKTsKKyAgICBEaXNwbGF5KiBob3N0RGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7
CisgICAgbV9ucFdpbmRvd0lEID0gZ3RrX3NvY2tldF9nZXRfaWQoR1RLX1NPQ0tFVChzb2NrZXQp
KTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhzb2NrZXQp
OworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGlzcGxheSA9IEdES19XSU5ET1dfWERJ
U1BMQVkod2luZG93KTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCA9IEdE
S19WSVNVQUxfWFZJU1VBTChnZGtfd2luZG93X2dldF92aXN1YWwod2luZG93KSk7CisgICAgbV9z
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5kZXB0aCA9IGdka192aXN1YWxfZ2V0X2RlcHRoKGdka193
aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0
LmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGhvc3REaXNwbGF5LCBHREtfUk9PVF9XSU5ET1co
KSwgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwsIEFsbG9jTm9uZSk7CiAKLSAgICBy
ZXR1cm4gcGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKTsKKyAgICBYRmx1c2goaG9z
dERpc3BsYXkpOwogfQorI2VuZGlmCiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVz
dHJveSgpCitOZXRzY2FwZVBsdWdpblgxMTo6fk5ldHNjYXBlUGx1Z2luWDExKCkKIHsKLSAgICBO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5Q
U2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pOwotICAgIERpc3Bs
YXkqIGhvc3REaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKLSAgICBYRnJlZUNvbG9ybWFwKGhv
c3REaXNwbGF5LCBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXApOwotICAgIGRlbGV0ZSBjYWxsYmFj
a1N0cnVjdDsKKyAgICBYRnJlZUNvbG9ybWFwKHgxMUhvc3REaXNwbGF5KCksIG1fc2V0V2luZG93
Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXApOwogCiAgICAgbV9kcmF3YWJsZS5yZXNldCgpOwogCiAj
aWYgUExBVEZPUk0oR1RLKQotICAgIGlmIChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSB7CisgICAg
aWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpCiAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveSht
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0KTsKLSAgICAgICAgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCA9
IDA7Ci0gICAgfQogI2VuZGlmCiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52
YWxpZGF0ZShjb25zdCBJbnRSZWN0JikKK05QV2luZG93VHlwZSBOZXRzY2FwZVBsdWdpblgxMTo6
d2luZG93VHlwZSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fcGx1Z2luLmlzV2luZG93ZWQoKSA/IE5QV2luZG93VHlwZVdp
bmRvdyA6IE5QV2luZG93VHlwZURyYXdhYmxlOworfQorCit2b2lkKiBOZXRzY2FwZVBsdWdpblgx
MTo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8g
R0lOVF9UT19QT0lOVEVSKG1fbnBXaW5kb3dJRCkgOiBudWxscHRyOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKK3ZvaWQgTmV0c2NhcGVQbHVn
aW5YMTE6Omdlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKSB7Cisg
ICAgaWYgKG1fcGx1Z2luLmlzV2luZG93ZWQoKSkgewogICAgICAgICB1aW50NjRfdCB3aW5kb3dJ
RCA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtf
UExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNlbmRpZgotICAgICAgICBjb250cm9s
bGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCB3aW5kb3dJRCk7CisgICAgICAgIG1fcGx1Z2luLmNv
bnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX3BsdWdpbi5mcmFt
ZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCksIG1fcGx1Z2luLmNsaXBSZWN0KCksIHdpbmRvd0lE
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZHJhd2FibGUucmVzZXQoKTsKLSAg
ICBpZiAobV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKKyAgICBpZiAobV9wbHVnaW4uc2l6ZSgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXht
YXAoeDExSG9zdERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgp
LCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBtX2RyYXdhYmxl
ID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93SUQoKSwgbV9wbHVn
aW4uc2l6ZSgpLndpZHRoKCksIG1fcGx1Z2luLnNpemUoKS5oZWlnaHQoKSwgZGlzcGxheURlcHRo
KCkpOwogICAgIFhTeW5jKHgxMUhvc3REaXNwbGF5KCksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUuCiB9CiAKLXZvaWQgTmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCit2b2lkIE5ldHNjYXBlUGx1
Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIHsKLSAgICBpZiAoIW1faXNXaW5kb3dlZCkK
LSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAg
ICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICB3aW5kb3dJ
RCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29j
a2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNlbmRpZgot
ICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKG1faXNW
aXNpYmxlLCB3aW5kb3dJRCk7Ci0gICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgbV9jbGlwUmVjdCwg
d2luZG93SUQpOworICAgIG1fcGx1Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5WaXNp
YmlsaXR5RGlkQ2hhbmdlKG1fcGx1Z2luLmlzVmlzaWJsZSgpLCB3aW5kb3dJRCk7CisgICAgbV9w
bHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fcGx1
Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJlY3QoKSwg
d2luZG93SUQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNT
bmFwc2hvdCovKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgaWYgKG1faXNXaW5k
b3dlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzU3RhcnRlZCkgewotICAgICAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAog
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhbV9kcmF3YWJsZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzEzLDE0ICsyODgsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQK
ICAgICBleHBvc2VFdmVudC53aWR0aCA9IGV4cG9zZWRSZWN0LndpZHRoKCk7CiAgICAgZXhwb3Nl
RXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QuaGVpZ2h0KCk7CiAKLSAgICBOUFBfSGFuZGxlRXZl
bnQoJnhldmVudCk7CisgICAgbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4ZXZlbnQpOwogCiAg
ICAgaWYgKG1fcGx1Z2luRGlzcGxheSAhPSB4MTFIb3N0RGlzcGxheSgpKQogICAgICAgICBYU3lu
YyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRG
T1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3
YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2lu
RGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8TlBTZXRXaW5k
b3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwgbV9wbHVnaW5T
aXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBtX3NldFdpbmRv
d0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgbV9wbHVnaW4uc2l6ZSgpLndpZHRoKCksIG1fcGx1Z2lu
LnNpemUoKS5oZWlnaHQoKSkpOwogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIApAQCAtMzQyLDcgKzMxNyw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplWEV2ZW50KFhFdmVudCYgZXZlbnQpCiAgICAg
bWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogICAgIGV2ZW50Lnhhbnkuc2VyaWFs
ID0gMDsKICAgICBldmVudC54YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsKLSAgICBldmVudC54YW55
LmRpc3BsYXkgPSBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKTsKKyAgICBldmVudC54
YW55LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwogICAgIGV2ZW50Lnhhbnkud2luZG93ID0g
MDsKIH0KIApAQCAtNDQwLDE1ICs0MTUsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WENyb3Nz
aW5nRXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNvbnN0IFdlYk1vdXNlRXZlbnQmCiAgICAg
eENyb3NzaW5nLmZvY3VzID0gZmFsc2U7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgTmV0
c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZl
bnQpCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93biB8fCBldmVudC50eXBl
KCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXApCi0gICAgICAgICAmJiBldmVudC5idXR0b24oKSA9PSBX
ZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgotICAgICAgICAgJiYgcXVpcmtzKCkuY29udGFpbnMo
UGx1Z2luUXVpcmtzOjpJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAg
IFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwpAQCAtNDU2LDEw
ICs0MjUsMTAgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50
KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7
CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNl
VXA6Ci0gICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0
VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CisgICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4
RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlTW92ZToKLSAgICAgICAgc2V0
WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBv
aW50KCkpKTsKKyAgICAgICAgc2V0WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1f
cGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXZWJFdmVudDo6TW91c2VGb3JjZUNoYW5nZWQ6CiAgICAgY2FzZSBXZWJFdmVudDo6
TW91c2VGb3JjZURvd246CkBAIC00NzksNyArNDQ4LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQo
JnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7
CiB9CiAKIC8vIFdlIHVuZGVmaW5lIHRoZXNlIGNvbnN0YW50cyBpbiBucHJ1bnRpbWVfaW50ZXJu
YWwuaCB0byBhdm9pZCBjb2xsaXNpb24KQEAgLTQ4OSwyMiArNDU4LDIwIEBAIGNvbnN0IGludCBr
S2V5UmVsZWFzZVR5cGUgPSAzOwogY29uc3QgaW50IGtGb2N1c0luVHlwZSA9IDk7CiBjb25zdCBp
bnQga0ZvY3VzT3V0VHlwZSA9IDEwOwogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCitib29sIE5ldHNjYXBl
UGx1Z2luWDExOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQog
ewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NF
UlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5p
dGlhbGl6ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhCdXR0b25FdmVudEZpZWxkc0J5V2ViV2hl
ZWxFdmVudCh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7Cisg
ICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzQnlXZWJXaGVlbEV2ZW50KHhFdmVudCwgZXZlbnQsIG1f
cGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKIAotICAgIHJldHVybiAhTlBQ
X0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2
ZW50KCZ4RXZlbnQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3Vz
KGJvb2wgZm9jdXNJbikKK3ZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnNldEZvY3VzKGJvb2wgZm9j
dXNJbikKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGlu
aXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKQEAgLTUxMywzNiArNDgwLDI5IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtU2V0Rm9jdXMoYm9vbCBmb2N1c0luKQogICAgIGZvY3VzRXZlbnQu
bW9kZSA9IE5vdGlmeU5vcm1hbDsKICAgICBmb2N1c0V2ZW50LmRldGFpbCA9IE5vdGlmeURldGFp
bE5vbmU7CiAKLSAgICBOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CisgICAgbV9wbHVnaW4uTlBQ
X0hhbmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjp3YW50c1Bs
dWdpblJlbGF0aXZlTlBXaW5kb3dDb29yZGluYXRlcygpCitib29sIE5ldHNjYXBlUGx1Z2luWDEx
OjpoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxl
TW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQotewotICAgIGlmICht
X2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4u
aXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVu
dCh4RXZlbnQpOwotICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNv
bnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBFbnRlck5vdGlmeSk7CisgICAgc2V0WENyb3Nz
aW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVydFRvUm9vdFZpZXco
SW50UG9pbnQoKSksIEVudGVyTm90aWZ5KTsKIAotICAgIHJldHVybiAhTlBQX0hhbmRsZUV2ZW50
KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQp
OwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6Omhh
bmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBp
ZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fcGx1
Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGluaXRpYWxpemVY
RXZlbnQoeEV2ZW50KTsKLSAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50
LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwgTGVhdmVOb3RpZnkpOworICAgIHNldFhD
cm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RW
aWV3KEludFBvaW50KCkpLCBMZWF2ZU5vdGlmeSk7CiAKLSAgICByZXR1cm4gIU5QUF9IYW5kbGVF
dmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2
ZW50KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhYRXZlbnQm
IHhFdmVudCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViRXZlbnQpCkBAIC01NjUsOCArNTI1
LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhYRXZlbnQmIHhFdmVu
dCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2UKICAgICB4S2V5Lnlfcm9vdCA9IDA7CiB9CiAK
LWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZUtl
eWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CisgICAgQVNTRVJU
KG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAgICAgLy8gV2UgZG9uJ3QgZ2VuZXJhdGUgb3RoZXIg
dHlwZXMgb2Yga2V5Ym9hcmQgZXZlbnRzIHZpYSBXZWJFdmVudEZhY3RvcnkuCiAgICAgQVNTRVJU
KGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biB8fCBldmVudC50eXBlKCkgPT0gV2Vi
RXZlbnQ6OktleVVwKTsKIApAQCAtNTc0LDcgKzUzNSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7CiAgICAgc2V0WEtleUV2ZW50RmllbGRz
KHhFdmVudCwgZXZlbnQpOwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7
CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZjkzZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
VW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXRzY2FwZVBsdWdpblgx
MV9oCisjZGVmaW5lIE5ldHNjYXBlUGx1Z2luWDExX2gKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RV
UkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luVW5peC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXRz
Y2FwZVBsdWdpbjsKKworY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWw6IHB1YmxpYyBOZXRz
Y2FwZVBsdWdpblVuaXggeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0
c2NhcGVQbHVnaW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOworICAgIE5ldHNjYXBlUGx1
Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOworI2lmIFBMQVRGT1JNKEdUSykKKyAg
ICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYsIERpc3BsYXkqLCB1aW50NjRfdCB3
aW5kb3dJRCk7CisjZW5kaWYKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdpblgxMSgpOworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkKiB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdpbmRvd1N5c3RlbUluZm8oKSBvdmVycmlk
ZSB7IHJldHVybiAmbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBnZW9tZXRyeURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB2aXNpYmls
aXR5RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVN
b3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CisKKyAgICBO
ZXRzY2FwZVBsdWdpbiYgbV9wbHVnaW47CisgICAgRGlzcGxheSogbV9wbHVnaW5EaXNwbGF5IHsg
bnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKKyAgICBO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0IG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgIHVpbnQ2NF90IG1fd2luZG93SUQgeyAwIH07CisgICAgdW5zaWdu
ZWQgbG9uZyBtX25wV2luZG93SUQgeyAwIH07CisgICAgR3RrV2lkZ2V0KiBtX3BsYXRmb3JtUGx1
Z2luV2lkZ2V0IHsgbnVsbHB0ciB9OworI2VuZGlmCit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKworI2VuZGlmIC8vIE5ldHNj
YXBlUGx1Z2luWDExX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266893</attachid>
            <date>2015-12-08 09:01:21 -0800</date>
            <delta_ts>2015-12-08 09:30:43 -0800</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk2-npapi-plugins-wayland.diff</filename>
            <type>text/plain</type>
            <size>44147</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MWZkMTNkLi5iNjQ3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMTItMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFs
bCBwbHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBs
ZS4gVGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAg
ZXh0ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhl
cmUncyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5k
ZXIgd2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgor
ICAgICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBO
ZXRzY2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1v
biBjb2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVl
IHRoZSBYMTEgaW1wbGVtZW50YXRpbiBvbmx5IHdoZW4gbmVlZGVkIGFuZAorICAgICAgICBhdmFp
bGFibGUuIEZvciB3aW5kb3dlZCBwbHVnaW5zIHdlIHdpbGwgZmFpbCB0aGUgaW5pdGlhbGl6YXRp
b24KKyAgICAgICAgdW5kZXIgbm9uLVgxMSBwbGFmb3Jtcywgd2hpbGUgZm9yIHdpbmRvd2xlc3Mg
cGx1Z2lucyB3ZSB3aWxsIGp1c3QKKyAgICAgICAgcmV0dXJuIGVhcmx5IGZyb20gcGFpbnQgbWV0
aG9kLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29t
cGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMpOiBEbyBub3QgZGlzYWJsZSBwbHVnaW5zIGluIHdh
eWxhbmQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSk6
IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6IFVzZSBQbGF0
Zm9ybURpc3BsYXkgaW5zdGVhZCBvZgorICAgICAgICBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERp
c3BsYXkoKSBhbmQgZG9uJ3QgY2xhaW0gdG8gc3VwcG9ydCBYMTEKKyAgICAgICAgc3BlY2lmaWMg
ZmVhdHVyZXMgdW5kZXIgbm9uLXgxMSBwbGF0Zm9ybXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKTogUmVtb3ZlIFgxMSBhbmQgR1RLCisgICAgICAg
IHNwZWNpZmljIG1lbWViZXJzIHRoYXQgYXJlIG5vdyBtb3ZlZCB0byBhIGRlZGljYXRlZCBjbGFz
cyBOZXRzY2FwZVBsdWdpblgxMS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmZy
YW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOiBNYWtlIHRoaXMgcHVibGljLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Y2xpcFJlY3QpOiBBZGQgZ2V0dGVyLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6aXNXaW5kb3dlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6aXNWaXNpYmxlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRv
d0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
SGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VMZWF2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblVuaXg6On5OZXRzY2FwZVBsdWdpblVuaXgp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5KToKKyAgICAgICAg
KFdlYktpdDo6ZGlzcGxheURlcHRoKToKKyAgICAgICAgKFdlYktpdDo6eDExSG9zdERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6On5OZXRzY2FwZVBsdWdpblgxMSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5YMTE6OndpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5YMTE6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVhFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6c2V0Rm9jdXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlTGVhdmVFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6c2V0Q29tbW9uTW91c2VFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OnNldFhLZXlFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oOiBBZGRl
ZC4KKwogMjAxNS0xMi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLXSBOb3RpZnkgV2ViQ29yZSB3aGVuIG5vdGlmaWNhdGlvbiBpcyBjbGlj
a2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGRiZTg3NGIuLmMxZjM0ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTksNiArMTk5LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5p
eC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjcyLDYgKzI3Myw4IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgorICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDhmMTcxN2YuLjUxMDcyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMzUsNiArMzM1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAK
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cApAQCAtNTIwLDYgKzUyMSw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9ndGsiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy91bml4IgpAQCAtNzkwLDYgKzc5Myw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NF
U1NfR1RLMikKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTm9uZS5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcAogCisgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAogICAgICAgICAke0RFUklWRURfU09V
UkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwCmluZGV4IDNlMGM0ODguLjlkMjEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE1OTQsMTIgKzE1OTQs
NiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotICAg
IC8vIERvIG5vdCBhbGxvdyB0byBjaGFuZ2UgdGhpcyBzZXR0aW5nIGluIFdheWxhbmQsIHNpbmNl
IHBsdWdpbnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CiAgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJsZWQoKTsKICAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4IGU0YTBiN2EuLmM3MjQyYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCkBAIC0z
OSw4ICszOSw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3Jl
KCkKICAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVyIFdheWxh
bmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoZmFsc2UpOwotCi0gICAgICAgIHNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsK
ICAgICB9CiAjZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCmluZGV4IGNjNmU3NGQuLjM2NjJmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShY
MTEpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MjQsMTgg
KzUyOCwyMSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNl
bGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiB7
Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4odmFsdWUp
ID0gTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCk7Ci0gICAgICAgICAgIGJyZWFrOwot
ICAgICAgIH0KLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6Ci0gICAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsK
LSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6Ci0gICAgICAgICAgICpzdGF0aWNf
Y2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgICAgIGlmICghbnBwKQorICAgICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgY29uc3QgYXV0byYg
ZGlzcGxheSA9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOworICAg
ICAgICAgICAgaWYgKGRpc3BsYXkudHlwZSgpICE9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
ICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXkpLm5hdGl2ZSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgorICAg
ICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OlgxMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5QTlZTdXBw
b3J0c1dpbmRvd2xlc3M6CisgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDog
ewogICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQgYWJv
dXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDkz
ZWYzNmQuLjNkYzBhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDIsNiArNDIs
MTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
VW5peC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTkwLDEyICs5NCw2IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdp
bihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAgICAgLCBt
X251bGxFdmVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1Z2luOjpu
dWxsRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9ucENHQ29udGV4dCgpCiAjZW5kaWYKLSNlbGlm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICwgbV9kcmF3YWJsZSgwKQotICAgICwgbV9w
bHVnaW5EaXNwbGF5KDApCi0jaWYgUExBVEZPUk0oR1RLKQotICAgICwgbV9wbGF0Zm9ybVBsdWdp
bldpZGdldCgwKQotI2VuZGlmCiAjZW5kaWYKIHsKICAgICBtX25wcC5uZGF0YSA9IHRoaXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDRmOTJkOGYuLmYyYzg5MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0zOCwxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQ
SGVhZGVyTWFwOwpAQCAtNTQsNyArNTAsOSBAQCBPQkpDX0NMQVNTIFdLTlBBUElQbHVnSW5Db250
YWluZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5TdHJlYW07
Ci0gICAgCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitjbGFzcyBOZXRzY2FwZVBsdWdp
blVuaXg7CisjZW5kaWYKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKQEAgLTk1LDYgKzkzLDEyIEBAIHB1YmxpYzoKIAog
I2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOyB9CisjZW5kaWYKKyAgICBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5T
aXplOyB9CisKICAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoY29uc3Qg
TlBSZWN0Kik7CkBAIC0xMDksNiArMTEzLDggQEAgcHVibGljOgogICAgIGJvb2wgZXZhbHVhdGUo
TlBPYmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7
CiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBib29sIGlzTXV0ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzV2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2luZG93
ZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTZXRFeGNlcHRpb25GdW5jdGlvbih2b2lkICgqKShjb25z
dCBTdHJpbmcmKSk7CiAKQEAgLTE1NSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTlBFcnJvciBO
UFBfR2V0VmFsdWUoTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKICAgICBOUEVycm9yIE5QUF9T
ZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogCisgICAgLy8gQ29udmVydCB0aGUg
Z2l2ZW4gcG9pbnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGlu
YXRlcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9k
dWxlKTsKIApAQCAtMjU4LDkgKzI2Nyw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIENvbnZlcnQg
dGhlIGdpdmVuIHBvaW50IGZyb20gcGx1Zy1pbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgLy8gQ29u
dmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1p
biBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUKICAgICAv
LyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJs
ZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Q
bHVnaW5Db29yZGluYXRlcyk7CkBAIC0yNzcsMTEgKzI4Myw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpOwotI2VuZGlmCi0KICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPj4g
UGVuZGluZ1VSTE5vdGlmeU1hcDsKQEAgLTM5NCwxNCArMzk1LDcgQEAgcHJpdmF0ZToKICAgICBO
UF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCi0gICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwotICAgIERp
c3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgR3RrV2lkZ2V0
KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwotI2VuZGlmCi0KLXB1YmxpYzogLy8gTmVlZCB0byBj
YWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KLSAgICBzdGF0aWMg
RGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQ
bHVnaW5Vbml4PiBtX2ltcGw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAy
MzQ5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorCisjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5YMTEuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgpCit7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQoreworI2lm
IFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7CisgICAgICAgIG1faW1wbCA9
IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBpZiAoIW1faW1wbCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9ucFdpbmRvdy50eXBlID0gbV9pbXBsLT53aW5kb3dUeXBlKCk7Cisg
ICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gbV9pbXBsLT53aW5kb3coKTsKKyAgICAgICAgbV9u
cFdpbmRvdy53c19pbmZvID0gbV9pbXBsLT53aW5kb3dTeXN0ZW1JbmZvKCk7CisgICAgICAgIGNh
bGxTZXRXaW5kb3coKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBtX2ltcGwgPSBudWxscHRyOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVj
dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIGlm
ICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgbV9pbXBsLT5nZW9tZXRyeURpZENoYW5n
ZSgpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFu
Z2UoKQoreworICAgIGlmICghbV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faW1wbC0+dmlzaWJpbGl0eURpZENoYW5nZSgpOworfQorCit2b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQoreworICAgIGlmICghbV9p
c1N0YXJ0ZWQgfHwgIW1faW1wbCkgeworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50
IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2lt
cGwtPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sK
KyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gfHwgZXZlbnQu
dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQorICAgICAgICAmJiBldmVudC5idXR0b24oKSA9
PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgorICAgICAgICAmJiBxdWlya3MoKS5jb250YWlu
cyhQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VFdmVudChl
dmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVu
dChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8
ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVNldEZvY3VzKGJvb2wgZm9jdXNJbikKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2lt
cGwpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1wbC0+c2V0Rm9jdXMoZm9jdXNJbik7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3Jk
aW5hdGVzKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
Cit7CisgICAgaWYgKG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoZXZlbnQpOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFt
X2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRs
ZU1vdXNlTGVhdmVFdmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sK
KyAgICAvLyBXZSBkb24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMg
dmlhIFdlYkV2ZW50RmFjdG9yeS4KKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50
OjpLZXlEb3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOworCisgICAgaWYg
KG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9pbXBsLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2lu
VW5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODQxODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
dW5peC9OZXRzY2FwZVBsdWdpblVuaXguaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0c2NhcGVQbHVn
aW5Vbml4X2gKKyNkZWZpbmUgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKworI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVf
aW50ZXJuYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJkRXZl
bnQ7CitjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViV2hlZWxFdmVudDsKKworY2xhc3Mg
TmV0c2NhcGVQbHVnaW5Vbml4IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
blVuaXgoKSB7IH0KKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCogd2luZG93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZp
c2liaWxpdHlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWJvYXJkRXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXMoYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisK
KyNlbmRpZiAvLyBOZXRzY2FwZVBsdWdpblVuaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAppbmRleCAzODAyODk3Li5mYmYyY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisKICNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNp
bmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgotCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KQEAgLTU3LDYgKzU4LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFIb3N0RGlzcGxheSgp
Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworfQorCiBzdGF0aWMgRGlzcGxheSogZ2V0
UGx1Z2luRGlzcGxheSgpCiB7CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtNjYsNyArNzIsNyBAQCBz
dGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAjZWxpZiBQTEFURk9STShFRkwpICYm
IGRlZmluZWQoSEFWRV9FQ09SRV9YKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4o
ZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG51bGxwdHI7CiAjZW5kaWYKIH0KIApAQCAtODYsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGlu
dCBkaXNwbGF5RGVwdGgoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3Vh
bF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9k
ZWZhdWx0KCkpKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
Ci0gICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46Ongx
MUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOworICAgIHJldHVy
biBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0KHgxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVm
YXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTAz
LDExICsxMDksNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkK
ICNlbmRpZgogfQogCi1EaXNwbGF5KiBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKQot
ewotICAgIHJldHVybiBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLX0KLQogI2lmIFBMQVRGT1JNKEdUSykKIHN0
YXRpYyBnYm9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKEd0a1NvY2tldCopCiB7CkBA
IC0xMTksMTgwICsxMjAsMTU1IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENh
bGxiYWNrKEd0a1NvY2tldCopCiB9CiAjZW5kaWYKIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2VkKGJvb2wgbmVlZHNYRW1iZWQsIHVpbnQ2NF90IHdp
bmRvd0lEKQorc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdp
blgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4pCiB7Ci0gICAgbV9ucFdpbmRvdy50
eXBlID0gTlBXaW5kb3dUeXBlV2luZG93OwotICAgIGlmICghbmVlZHNYRW1iZWQpIHsKKyNpZiBQ
TEFURk9STShHVEspCisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworI2VuZGlmCisgICAgaWYg
KHBsdWdpbi5pc1dpbmRvd2VkKCkpIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIC8vIE5Q
UFZwbHVnaU5lZWRzWEVtYmVkIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGF0IGxlYXN0IHRoZQor
ICAgICAgICAvLyBGbGFzaCBwbGF5ZXIgcGx1Z2luIGlzIHVzaW5nIGFuICdpbnQnIGluc3RlYWQu
CisgICAgICAgIGludCBuZWVkc1hFbWJlZCA9IDA7CisgICAgICAgIHBsdWdpbi5OUFBfR2V0VmFs
dWUoTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNYRW1iZWQpOworICAgICAgICBpZiAobmVl
ZHNYRW1iZWQpIHsKKyAgICAgICAgICAgIHdpbmRvd0lEID0gcGx1Z2luLmNvbnRyb2xsZXIoKS0+
Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7CisgICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgfQogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGdl
dFBsdWdpbkRpc3BsYXkoKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIC8vIEl0IHNlZW1zIGZsYXNoIG5lZWRzIHRo
ZSBzb2NrZXQgdG8gYmUgaW4gdGhlIHNhbWUgcHJvY2VzcywKLSAgICAvLyBJIGd1ZXNzIGl0IHVz
ZXMgZ2RrX3dpbmRvd19sb29rdXAoKSwgc28gd2UgY3JlYXRlIGEgbmV3IHNvY2tldCBoZXJlCi0g
ICAgLy8gY29udGFpbmluZyBhIHBsdWcgd2l0aCB0aGUgVUkgcHJvY2VzcyBzb2NrZXQgZW1iZWRk
ZWQuCi0gICAgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCA9IGd0a19wbHVnX25ldyhzdGF0aWNfY2Fz
dDxXaW5kb3c+KHdpbmRvd0lEKSk7Ci0KLSAgICAvLyBIaWRlIHRoZSBHdGtQbHVnIG9uIGRlbGV0
ZS1ldmVudCBzaW5jZSB3ZSBhc3N1bWUgdGhlIHdpZGdldCBpcyB2YWxpZCB3aGlsZSB0aGUgcGx1
Z2luIGlzIGFjdGl2ZS4KLSAgICAvLyBwbGF0Zm9ybURlc3Ryb3koKSB3aWxsIGJlIGNhbGxlZCBh
bnl3YXkgcmlnaHQgYWZ0ZXIgdGhlIGRlbGV0ZS1ldmVudC4KLSAgICBnX3NpZ25hbF9jb25uZWN0
KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQsICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193
aWRnZXRfaGlkZV9vbl9kZWxldGUpLCBudWxscHRyKTsKLQotICAgIEd0a1dpZGdldCogc29ja2V0
ID0gZ3RrX3NvY2tldF9uZXcoKTsKLSAgICAvLyBEbyBub3Qgc2hvdyB0aGUgcGx1ZyB3aWRnZXQg
dW50aWwgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQuCi0gICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKHNvY2tldCwgInBsdWctYWRkZWQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfc2hvdyksIG1f
cGxhdGZvcm1QbHVnaW5XaWRnZXQpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0LCAicGx1
Zy1yZW1vdmVkIiwgR19DQUxMQkFDSyhzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKSwgbnVsbHB0
cik7Ci0gICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtUGx1Z2lu
V2lkZ2V0KSwgc29ja2V0KTsKLSAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKLQotICAgIG1f
bnBXaW5kb3cud2luZG93ID0gR0lOVF9UT19QT0lOVEVSKGd0a19zb2NrZXRfZ2V0X2lkKEdUS19T
T0NLRVQoc29ja2V0KSkpOwotICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
d2luZG93KHNvY2tldCk7Ci0gICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tT
dHJ1Y3QgPSBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRv
dy53c19pbmZvKTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGlzcGxheSA9IEdES19XSU5ET1dfWERJ
U1BMQVkod2luZG93KTsKLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gR0RLX1ZJU1VBTF9Y
VklTVUFMKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKLSAgICBjYWxsYmFja1N0cnVj
dC0+ZGVwdGggPSBnZGtfdmlzdWFsX2dldF9kZXB0aChnZGtfd2luZG93X2dldF92aXN1YWwod2lu
ZG93KSk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGRp
c3BsYXksIEdES19ST09UX1dJTkRPVygpLCBjYWxsYmFja1N0cnVjdC0+dmlzdWFsLCBBbGxvY05v
bmUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0od2luZG93SUQpOworICAgIGlmIChwbHVnaW4u
aXNXaW5kb3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBs
dWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIFhGbHVz
aChkaXNwbGF5KTsKLQotICAgIGNhbGxTZXRXaW5kb3coKTsKLQotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRp
c3BsYXkpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpCitOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2Nh
cGVQbHVnaW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKKyAgICA6IG1fcGx1Z2luKHBsdWdp
bikKKyAgICAsIG1fcGx1Z2luRGlzcGxheShkaXNwbGF5KQogewotICAgIERpc3BsYXkqIGRpc3Bs
YXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlw
ZURyYXdhYmxlOwotICAgIG1fbnBXaW5kb3cud2luZG93ID0gMDsKLQorICAgIERpc3BsYXkqIGhv
c3REaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKICAgICBpbnQgZGVwdGggPSBkaXNwbGF5RGVw
dGgoKTsKLQotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
c3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5m
byk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIGNhbGxiYWNr
U3RydWN0LT5kZXB0aCA9IGRlcHRoOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGlz
cGxheSA9IGhvc3REaXNwbGF5OworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGVwdGgg
PSBkZXB0aDsKIAogICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOwogICAgIHZpc3VhbFRl
bXBsYXRlLnNjcmVlbiA9IHgxMVNjcmVlbigpOwogICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0g
ZGVwdGg7CiAgICAgdmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsKICAgICBpbnQg
bnVtTWF0Y2hpbmc7Ci0gICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhYR2V0
VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwg
VmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykpOworICAgIFhV
bmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oaG9zdERpc3Bs
YXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ss
ICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbEluZm8p
OwogICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mby5nZXQoKVswXS52aXN1YWw7CiAgICAg
QVNTRVJUKHZpc3VhbCk7CiAKLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwot
ICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCBy
b290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOwotCi0gICAgY2FsbFNldFdpbmRvdygp
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
UHJlSW5pdGlhbGl6ZSgpCi17CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwg
PSB2aXN1YWw7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCA9IFhDcmVh
dGVDb2xvcm1hcChob3N0RGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25l
KTsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCisj
aWYgUExBVEZPUk0oR1RLKQorTmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5l
dHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRpc3BsYXksIHVpbnQ2NF90IHdpbmRvd0lE
KQorICAgIDogbV9wbHVnaW4ocGx1Z2luKQorICAgICwgbV9wbHVnaW5EaXNwbGF5KGRpc3BsYXkp
CisgICAgLCBtX3dpbmRvd0lEKHdpbmRvd0lEKQogewotICAgIHVpbnQ2NF90IHdpbmRvd0lEID0g
MDsKLSAgICAvLyBOUFBWcGx1Z2luTmVlZHNYRW1iZWQgaXMgYSBib29sZWFuIHZhbHVlLCBidXQg
YXQgbGVhc3QgdGhlCi0gICAgLy8gRmxhc2ggcGxheWVyIHBsdWdpbiBpcyB1c2luZyBhbiAnaW50
JyBpbnN0ZWFkLgotICAgIGludCBuZWVkc1hFbWJlZCA9IDA7Ci0gICAgaWYgKG1faXNXaW5kb3dl
ZCkgewotICAgICAgICBOUFBfR2V0VmFsdWUoTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNY
RW1iZWQpOwotICAgICAgICBpZiAobmVlZHNYRW1iZWQpIHsKLSAgICAgICAgICAgIHdpbmRvd0lE
ID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250YWluZXIoKTsKLSAgICAgICAgICAgIGlm
ICghd2luZG93SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBJdCBzZWVtcyBmbGFzaCBuZWVkcyB0aGUg
c29ja2V0IHRvIGJlIGluIHRoZSBzYW1lIHByb2Nlc3MsCisgICAgLy8gSSBndWVzcyBpdCB1c2Vz
IGdka193aW5kb3dfbG9va3VwKCksIHNvIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQorICAg
IC8vIGNvbnRhaW5pbmcgYSBwbHVnIHdpdGggdGhlIFVJIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVk
LgorICAgIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQgPSBndGtfcGx1Z19uZXcoc3RhdGljX2Nhc3Q8
V2luZG93Pih3aW5kb3dJRCkpOwogCi0gICAgaWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1
Z2luRGlzcGxheSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEhpZGUgdGhlIEd0
a1BsdWcgb24gZGVsZXRlLWV2ZW50IHNpbmNlIHdlIGFzc3VtZSB0aGUgd2lkZ2V0IGlzIHZhbGlk
IHdoaWxlIHRoZSBwbHVnaW4gaXMgYWN0aXZlLgorICAgIC8vIHBsYXRmb3JtRGVzdHJveSgpIHdp
bGwgYmUgY2FsbGVkIGFueXdheSByaWdodCBhZnRlciB0aGUgZGVsZXRlLWV2ZW50LgorICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9wbGF0Zm9ybVBsdWdpbldpZGdldCwgImRlbGV0ZS1ldmVudCIsIEdf
Q0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlX29uX2RlbGV0ZSksIG51bGxwdHIpOwogCi0gICAgTlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dD
YWxsYmFja1N0cnVjdDsKLSAgICBjYWxsYmFja1N0cnVjdC0+dHlwZSA9IDA7Ci0gICAgbV9ucFdp
bmRvdy53c19pbmZvID0gY2FsbGJhY2tTdHJ1Y3Q7CisgICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBn
dGtfc29ja2V0X25ldygpOworICAgIC8vIERvIG5vdCBzaG93IHRoZSBwbHVnIHdpZGdldCB1bnRp
bCB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZC4KKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
c29ja2V0LCAicGx1Zy1hZGRlZCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9zaG93KSwgbV9wbGF0
Zm9ybVBsdWdpbldpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdChzb2NrZXQsICJwbHVnLXJl
bW92ZWQiLCBHX0NBTExCQUNLKHNvY2tldFBsdWdSZW1vdmVkQ2FsbGJhY2spLCBudWxscHRyKTsK
KyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1QbHVnaW5XaWRn
ZXQpLCBzb2NrZXQpOworICAgIGd0a193aWRnZXRfc2hvdyhzb2NrZXQpOwogCi0gICAgaWYgKG1f
aXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dl
ZChuZWVkc1hFbWJlZCwgd2luZG93SUQpOworICAgIERpc3BsYXkqIGhvc3REaXNwbGF5ID0geDEx
SG9zdERpc3BsYXkoKTsKKyAgICBtX25wV2luZG93SUQgPSBndGtfc29ja2V0X2dldF9pZChHVEtf
U09DS0VUKHNvY2tldCkpOworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
d2luZG93KHNvY2tldCk7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5kaXNwbGF5ID0g
R0RLX1dJTkRPV19YRElTUExBWSh3aW5kb3cpOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1
Y3QudmlzdWFsID0gR0RLX1ZJU1VBTF9YVklTVUFMKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5k
b3cpKTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRlcHRoID0gZ2RrX3Zpc3VhbF9n
ZXRfZGVwdGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAgIG1fc2V0V2luZG93
Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoaG9zdERpc3BsYXksIEdE
S19ST09UX1dJTkRPVygpLCBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgQWxsb2NO
b25lKTsKIAotICAgIHJldHVybiBwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpOwor
ICAgIFhGbHVzaChob3N0RGlzcGxheSk7CiB9CisjZW5kaWYKIAotdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1EZXN0cm95KCkKK05ldHNjYXBlUGx1Z2luWDExOjp+TmV0c2NhcGVQbHVnaW5Y
MTEoKQogewotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
c3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5m
byk7Ci0gICAgRGlzcGxheSogaG9zdERpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIFhG
cmVlQ29sb3JtYXAoaG9zdERpc3BsYXksIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCk7Ci0gICAg
ZGVsZXRlIGNhbGxiYWNrU3RydWN0OworICAgIFhGcmVlQ29sb3JtYXAoeDExSG9zdERpc3BsYXko
KSwgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCk7CiAKICAgICBtX2RyYXdhYmxl
LnJlc2V0KCk7CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5X
aWRnZXQpIHsKKyAgICBpZiAobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkKICAgICAgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpOwotICAgICAgICBtX3BsYXRmb3Jt
UGx1Z2luV2lkZ2V0ID0gMDsKLSAgICB9CiAjZW5kaWYKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQorTlBXaW5kb3dUeXBlIE5ldHNj
YXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8g
TlBXaW5kb3dUeXBlV2luZG93IDogTlBXaW5kb3dUeXBlRHJhd2FibGU7Cit9CisKK3ZvaWQqIE5l
dHNjYXBlUGx1Z2luWDExOjp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBtX3BsdWdpbi5p
c1dpbmRvd2VkKCkgPyBHSU5UX1RPX1BPSU5URVIobV9ucFdpbmRvd0lEKSA6IG51bGxwdHI7CiB9
CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQordm9p
ZCBOZXRzY2FwZVBsdWdpblgxMTo6Z2VvbWV0cnlEaWRDaGFuZ2UoKQogewotICAgIGlmIChtX2lz
V2luZG93ZWQpIHsKKyAgICBpZiAobV9wbHVnaW4uaXNXaW5kb3dlZCgpKSB7CiAgICAgICAgIHVp
bnQ2NF90IHdpbmRvd0lEID0gMDsKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIHdpbmRvd0lE
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9zb2Nr
ZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOwogI2VuZGlmCi0g
ICAgICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX2Zy
YW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIG1fY2xpcFJlY3QsIHdpbmRvd0lEKTsKKyAgICAg
ICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdl
KG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJl
Y3QoKSwgd2luZG93SUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9kcmF3YWJs
ZS5yZXNldCgpOwotICAgIGlmIChtX3BsdWdpblNpemUuaXNFbXB0eSgpKQorICAgIGlmIChtX3Bs
dWdpbi5zaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RyYXdhYmxl
ID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93SUQoKSwgbV9wbHVn
aW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSwgZGlzcGxheURlcHRoKCkpOwor
ICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKHgxMUhvc3REaXNwbGF5KCksIHJvb3RXaW5k
b3dJRCgpLCBtX3BsdWdpbi5zaXplKCkud2lkdGgoKSwgbV9wbHVnaW4uc2l6ZSgpLmhlaWdodCgp
LCBkaXNwbGF5RGVwdGgoKSk7CiAgICAgWFN5bmMoeDExSG9zdERpc3BsYXkoKSwgZmFsc2UpOyAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZS4KIH0K
IAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKK3Zv
aWQgTmV0c2NhcGVQbHVnaW5YMTE6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogewotICAgIGlmICgh
bV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQobV9wbHVnaW4uaXNX
aW5kb3dlZCgpKTsKICAgICB1aW50NjRfdCB3aW5kb3dJRCA9IDA7CiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIHdpbmRvd0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0
a19wbHVnX2dldF9zb2NrZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQp
KSkpOwogI2VuZGlmCi0gICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpblZpc2liaWxpdHlE
aWRDaGFuZ2UobV9pc1Zpc2libGUsIHdpbmRvd0lEKTsKLSAgICBjb250cm9sbGVyKCktPndpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
LCBtX2NsaXBSZWN0LCB3aW5kb3dJRCk7CisgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5k
b3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UobV9wbHVnaW4uaXNWaXNpYmxlKCksIHdpbmRv
d0lEKTsKKyAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpLCBtX3BsdWdp
bi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIGJvb2wgLyppc1NuYXBzaG90Ki8pCit2b2lkIE5ldHNjYXBlUGx1Z2luWDExOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAg
ICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faXNTdGFy
dGVkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcGFpbnQgYSBtaXNzaW5nIHBsdWdp
biBpY29uLgotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVChtX3BsdWdpbi5pc1dp
bmRvd2VkKCkpOwogCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFtX2Ry
YXdhYmxlKQogICAgICAgICByZXR1cm47CkBAIC0zMTMsMTQgKzI4OSwxNCBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydAogICAgIGV4cG9zZUV2ZW50LndpZHRoID0gZXhwb3NlZFJlY3Qud2lkdGgo
KTsKICAgICBleHBvc2VFdmVudC5oZWlnaHQgPSBleHBvc2VkUmVjdC5oZWlnaHQoKTsKIAotICAg
IE5QUF9IYW5kbGVFdmVudCgmeGV2ZW50KTsKKyAgICBtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQo
JnhldmVudCk7CiAKICAgICBpZiAobV9wbHVnaW5EaXNwbGF5ICE9IHgxMUhvc3REaXNwbGF5KCkp
CiAgICAgICAgIFhTeW5jKG1fcGx1Z2luRGlzcGxheSwgZmFsc2UpOwogCiAjaWYgUExBVEZPUk0o
R1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBVU0UoQ0FJUk8pKQogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9j
cmVhdGUobV9wbHVnaW5EaXNwbGF5LCBtX2RyYXdhYmxlLmdldCgpLAotICAgICAgICBzdGF0aWNf
Y2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlz
dWFsLCBtX3BsdWdpblNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpKSk7CisgICAg
ICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QudmlzdWFsLCBtX3BsdWdpbi5zaXplKCkud2lk
dGgoKSwgbV9wbHVnaW4uc2l6ZSgpLmhlaWdodCgpKSk7CiAgICAgY2Fpcm9fdCogY3IgPSBjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCkBAIC0z
NDIsNyArMzE4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRpYWxpemVYRXZlbnQoWEV2ZW50
JiBldmVudCkKICAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoWEV2ZW50KSk7CiAgICAgZXZl
bnQueGFueS5zZXJpYWwgPSAwOwogICAgIGV2ZW50Lnhhbnkuc2VuZF9ldmVudCA9IGZhbHNlOwot
ICAgIGV2ZW50LnhhbnkuZGlzcGxheSA9IE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgp
OworICAgIGV2ZW50LnhhbnkuZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CiAgICAgZXZlbnQu
eGFueS53aW5kb3cgPSAwOwogfQogCkBAIC00NDAsMTUgKzQxNiw5IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyhYRXZlbnQmIHhFdmVudCwgY29uc3QgV2ViTW91
c2VFdmVudCYKICAgICB4Q3Jvc3NpbmcuZm9jdXMgPSBmYWxzZTsKIH0KIAotYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2
ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3du
IHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VVcCkKLSAgICAgICAgICYmIGV2ZW50
LmJ1dHRvbigpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uCi0gICAgICAgICAmJiBxdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NN
b2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRv
d2VkKCkpOwogCiAgICAgWEV2ZW50IHhFdmVudDsKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVu
dCk7CkBAIC00NTYsMTAgKzQyNiwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhh
bmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgc3dpdGNoIChl
dmVudC50eXBlKCkpIHsKICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZURvd246CiAgICAgY2FzZSBX
ZWJFdmVudDo6TW91c2VVcDoKLSAgICAgICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzKHhFdmVudCwg
ZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKKyAgICAgICAgc2V0WEJ1dHRv
bkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KElu
dFBvaW50KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VNb3Zl
OgotICAgICAgICBzZXRYTW90aW9uRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgY29udmVydFRv
Um9vdFZpZXcoSW50UG9pbnQoKSkpOworICAgICAgICBzZXRYTW90aW9uRXZlbnRGaWVsZHMoeEV2
ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZUZvcmNlQ2hhbmdlZDoKICAgICBj
YXNlIFdlYkV2ZW50OjpNb3VzZUZvcmNlRG93bjoKQEAgLTQ3OSw3ICs0NDksNyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gIU5Q
UF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVF
dmVudCgmeEV2ZW50KTsKIH0KIAogLy8gV2UgdW5kZWZpbmUgdGhlc2UgY29uc3RhbnRzIGluIG5w
cnVudGltZV9pbnRlcm5hbC5oIHRvIGF2b2lkIGNvbGxpc2lvbgpAQCAtNDg5LDIyICs0NTksMjAg
QEAgY29uc3QgaW50IGtLZXlSZWxlYXNlVHlwZSA9IDM7CiBjb25zdCBpbnQga0ZvY3VzSW5UeXBl
ID0gOTsKIGNvbnN0IGludCBrRm9jdXNPdXRUeXBlID0gMTA7CiAKLWJvb2wgTmV0c2NhcGVQbHVn
aW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkK
K2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogCiAgICAgWEV2ZW50IHhF
dmVudDsKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7Ci0gICAgc2V0WEJ1dHRvbkV2ZW50
RmllbGRzQnlXZWJXaGVlbEV2ZW50KHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KElu
dFBvaW50KCkpKTsKKyAgICBzZXRYQnV0dG9uRXZlbnRGaWVsZHNCeVdlYldoZWVsRXZlbnQoeEV2
ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOwogCi0g
ICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdp
bi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtU2V0Rm9jdXMoYm9vbCBmb2N1c0luKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6c2V0
Rm9jdXMoYm9vbCBmb2N1c0luKQogewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJl
dHVybjsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4
RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwpAQCAtNTEzLDM2ICs0ODEsMjkg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1TZXRGb2N1cyhib29sIGZvY3VzSW4pCiAg
ICAgZm9jdXNFdmVudC5tb2RlID0gTm90aWZ5Tm9ybWFsOwogICAgIGZvY3VzRXZlbnQuZGV0YWls
ID0gTm90aWZ5RGV0YWlsTm9uZTsKIAotICAgIE5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKLX0K
LQotYm9vbCBOZXRzY2FwZVBsdWdpbjo6d2FudHNQbHVnaW5SZWxhdGl2ZU5QV2luZG93Q29vcmRp
bmF0ZXMoKQotewotICAgIHJldHVybiB0cnVlOworICAgIG1fcGx1Z2luLk5QUF9IYW5kbGVFdmVu
dCgmeEV2ZW50KTsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3Vz
ZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCitib29sIE5ldHNjYXBlUGx1
Z2luWDExOjpoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
CiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFT
U0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogCiAgICAgWEV2ZW50IHhFdmVudDsKICAgICBp
bml0aWFsaXplWEV2ZW50KHhFdmVudCk7Ci0gICAgc2V0WENyb3NzaW5nRXZlbnRGaWVsZHMoeEV2
ZW50LCBldmVudCwgY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoKSksIEVudGVyTm90aWZ5KTsK
KyAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252
ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwgRW50ZXJOb3RpZnkpOwogCi0gICAgcmV0dXJuICFO
UFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxl
RXZlbnQoJnhFdmVudCk7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxl
TW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2Fw
ZVBsdWdpblgxMTo6aGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2
ZW50KQogewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAg
ICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRz
KHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBMZWF2ZU5vdGlm
eSk7CisgICAgc2V0WENyb3NzaW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4u
Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoKSksIExlYXZlTm90aWZ5KTsKIAotICAgIHJldHVy
biAhTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hh
bmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEtleUV2ZW50
RmllbGRzKFhFdmVudCYgeEV2ZW50LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3ZWJFdmVudCkK
QEAgLTU2NSw4ICs1MjYsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEtleUV2ZW50RmllbGRz
KFhFdmVudCYgeEV2ZW50LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3ZQogICAgIHhLZXkueV9y
b290ID0gMDsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2Fy
ZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdp
blgxMTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkK
IHsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKICAgICAvLyBXZSBkb24ndCBn
ZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMgdmlhIFdlYkV2ZW50RmFjdG9y
eS4KICAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duIHx8IGV2ZW50
LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOwogCkBAIC01NzQsNyArNTM2LDcgQEAgYm9vbCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGV2ZW50KQogICAgIGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKICAgICBzZXRY
S2V5RXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCk7CiAKLSAgICByZXR1cm4gIU5QUF9IYW5kbGVF
dmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2
ZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmOTNmNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5l
dHNjYXBlUGx1Z2luWDExX2gKKyNkZWZpbmUgTmV0c2NhcGVQbHVnaW5YMTFfaAorCisjaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRShYMTEpCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Vbml4LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE5ldHNjYXBlUGx1Z2luOworCitjbGFzcyBOZXRzY2FwZVBsdWdpblgxMSBmaW5h
bDogcHVibGljIE5ldHNjYXBlUGx1Z2luVW5peCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gY3JlYXRlKE5ldHNjYXBlUGx1Z2luJik7Cisg
ICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mLCBEaXNwbGF5Kik7CisjaWYgUExB
VEZPUk0oR1RLKQorICAgIE5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxh
eSosIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgfk5ldHNjYXBlUGx1
Z2luWDExKCk7Citwcml2YXRlOgorICAgIHZpcnR1YWwgTlBXaW5kb3dUeXBlIHdpbmRvd1R5cGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQqIHdpbmRvdygpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVt
SW5mbygpIG92ZXJyaWRlIHsgcmV0dXJuICZtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0OyB9Cisg
ICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1v
dXNlRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChj
b25zdCBXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZU1v
dXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9h
cmRFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVy
cmlkZTsKKworICAgIE5ldHNjYXBlUGx1Z2luJiBtX3BsdWdpbjsKKyAgICBEaXNwbGF5KiBtX3Bs
dWdpbkRpc3BsYXkgeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2Ry
YXdhYmxlOworICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QgbV9zZXRXaW5kb3dDYWxsYmFj
a1N0cnVjdDsKKyNpZiBQTEFURk9STShHVEspCisgICAgdWludDY0X3QgbV93aW5kb3dJRCB7IDAg
fTsKKyAgICB1bnNpZ25lZCBsb25nIG1fbnBXaW5kb3dJRCB7IDAgfTsKKyAgICBHdGtXaWRnZXQq
IG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQgeyBudWxscHRyIH07CisjZW5kaWYKK307Cit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorCisj
ZW5kaWYgLy8gTmV0c2NhcGVQbHVnaW5YMTFfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266898</attachid>
            <date>2015-12-08 09:30:43 -0800</date>
            <delta_ts>2016-02-02 03:14:42 -0800</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk2-npapi-plugins-wayland.diff</filename>
            <type>text/plain</type>
            <size>44202</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MWZkMTNkLi5iNjQ3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMTItMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFs
bCBwbHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBs
ZS4gVGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAg
ZXh0ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhl
cmUncyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5k
ZXIgd2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgor
ICAgICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBO
ZXRzY2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1v
biBjb2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVl
IHRoZSBYMTEgaW1wbGVtZW50YXRpbiBvbmx5IHdoZW4gbmVlZGVkIGFuZAorICAgICAgICBhdmFp
bGFibGUuIEZvciB3aW5kb3dlZCBwbHVnaW5zIHdlIHdpbGwgZmFpbCB0aGUgaW5pdGlhbGl6YXRp
b24KKyAgICAgICAgdW5kZXIgbm9uLVgxMSBwbGFmb3Jtcywgd2hpbGUgZm9yIHdpbmRvd2xlc3Mg
cGx1Z2lucyB3ZSB3aWxsIGp1c3QKKyAgICAgICAgcmV0dXJuIGVhcmx5IGZyb20gcGFpbnQgbWV0
aG9kLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8gY29t
cGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMpOiBEbyBub3QgZGlzYWJsZSBwbHVnaW5zIGluIHdh
eWxhbmQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSk6
IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6IFVzZSBQbGF0
Zm9ybURpc3BsYXkgaW5zdGVhZCBvZgorICAgICAgICBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERp
c3BsYXkoKSBhbmQgZG9uJ3QgY2xhaW0gdG8gc3VwcG9ydCBYMTEKKyAgICAgICAgc3BlY2lmaWMg
ZmVhdHVyZXMgdW5kZXIgbm9uLXgxMSBwbGF0Zm9ybXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKTogUmVtb3ZlIFgxMSBhbmQgR1RLCisgICAgICAg
IHNwZWNpZmljIG1lbWViZXJzIHRoYXQgYXJlIG5vdyBtb3ZlZCB0byBhIGRlZGljYXRlZCBjbGFz
cyBOZXRzY2FwZVBsdWdpblgxMS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmZy
YW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOiBNYWtlIHRoaXMgcHVibGljLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6Y2xpcFJlY3QpOiBBZGQgZ2V0dGVyLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6aXNXaW5kb3dlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6aXNWaXNpYmxlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRv
d0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
SGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VMZWF2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblVuaXg6On5OZXRzY2FwZVBsdWdpblVuaXgp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5KToKKyAgICAgICAg
KFdlYktpdDo6ZGlzcGxheURlcHRoKToKKyAgICAgICAgKFdlYktpdDo6eDExSG9zdERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6On5OZXRzY2FwZVBsdWdpblgxMSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5YMTE6OndpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5YMTE6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVhFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6c2V0Rm9jdXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlTGVhdmVFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6c2V0Q29tbW9uTW91c2VFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OnNldFhLZXlFdmVudEZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oOiBBZGRl
ZC4KKwogMjAxNS0xMi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLXSBOb3RpZnkgV2ViQ29yZSB3aGVuIG5vdGlmaWNhdGlvbiBpcyBjbGlj
a2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGRiZTg3NGIuLmMxZjM0ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTksNiArMTk5LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5p
eC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjcyLDYgKzI3Myw4IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgorICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDhmMTcxN2YuLjUxMDcyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMzUsNiArMzM1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAK
ICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cApAQCAtNTIwLDYgKzUyMSw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9ndGsiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy91bml4IgpAQCAtNzkwLDYgKzc5Myw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NF
U1NfR1RLMikKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTm9uZS5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcAogCisgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAogICAgICAgICAke0RFUklWRURfU09V
UkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwCmluZGV4IDNlMGM0ODguLjlkMjEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE1OTQsMTIgKzE1OTQs
NiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotICAg
IC8vIERvIG5vdCBhbGxvdyB0byBjaGFuZ2UgdGhpcyBzZXR0aW5nIGluIFdheWxhbmQsIHNpbmNl
IHBsdWdpbnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CiAgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJsZWQoKTsKICAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4IGU0YTBiN2EuLmM3MjQyYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCkBAIC0z
OSw4ICszOSw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3Jl
KCkKICAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVyIFdheWxh
bmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoZmFsc2UpOwotCi0gICAgICAgIHNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsK
ICAgICB9CiAjZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCmluZGV4IGNjNmU3NGQuLjM2NjJmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShY
MTEpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MjQsMTgg
KzUyOCwyMSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNl
bGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiB7
Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4odmFsdWUp
ID0gTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCk7Ci0gICAgICAgICAgIGJyZWFrOwot
ICAgICAgIH0KLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6Ci0gICAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsK
LSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6Ci0gICAgICAgICAgICpzdGF0aWNf
Y2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgICAgIGlmICghbnBwKQorICAgICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgY29uc3QgYXV0byYg
ZGlzcGxheSA9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOworICAg
ICAgICAgICAgaWYgKGRpc3BsYXkudHlwZSgpICE9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
ICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXkpLm5hdGl2ZSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgorICAg
ICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OlgxMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5QTlZTdXBw
b3J0c1dpbmRvd2xlc3M6CisgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDog
ewogICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQgYWJv
dXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDkz
ZWYzNmQuLjNkYzBhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDIsNiArNDIs
MTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
VW5peC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTkwLDEyICs5NCw2IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdp
bihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAgICAgLCBt
X251bGxFdmVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1Z2luOjpu
dWxsRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9ucENHQ29udGV4dCgpCiAjZW5kaWYKLSNlbGlm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICwgbV9kcmF3YWJsZSgwKQotICAgICwgbV9w
bHVnaW5EaXNwbGF5KDApCi0jaWYgUExBVEZPUk0oR1RLKQotICAgICwgbV9wbGF0Zm9ybVBsdWdp
bldpZGdldCgwKQotI2VuZGlmCiAjZW5kaWYKIHsKICAgICBtX25wcC5uZGF0YSA9IHRoaXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDRmOTJkOGYuLmYyYzg5MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0zOCwxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQ
SGVhZGVyTWFwOwpAQCAtNTQsNyArNTAsOSBAQCBPQkpDX0NMQVNTIFdLTlBBUElQbHVnSW5Db250
YWluZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5TdHJlYW07
Ci0gICAgCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitjbGFzcyBOZXRzY2FwZVBsdWdp
blVuaXg7CisjZW5kaWYKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKQEAgLTk1LDYgKzkzLDEyIEBAIHB1YmxpYzoKIAog
I2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOyB9CisjZW5kaWYKKyAgICBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5T
aXplOyB9CisKICAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoY29uc3Qg
TlBSZWN0Kik7CkBAIC0xMDksNiArMTEzLDggQEAgcHVibGljOgogICAgIGJvb2wgZXZhbHVhdGUo
TlBPYmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7
CiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBib29sIGlzTXV0ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzV2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2luZG93
ZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTZXRFeGNlcHRpb25GdW5jdGlvbih2b2lkICgqKShjb25z
dCBTdHJpbmcmKSk7CiAKQEAgLTE1NSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTlBFcnJvciBO
UFBfR2V0VmFsdWUoTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKICAgICBOUEVycm9yIE5QUF9T
ZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogCisgICAgLy8gQ29udmVydCB0aGUg
Z2l2ZW4gcG9pbnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGlu
YXRlcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9k
dWxlKTsKIApAQCAtMjU4LDkgKzI2Nyw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIENvbnZlcnQg
dGhlIGdpdmVuIHBvaW50IGZyb20gcGx1Zy1pbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgLy8gQ29u
dmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1p
biBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUKICAgICAv
LyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJs
ZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Q
bHVnaW5Db29yZGluYXRlcyk7CkBAIC0yNzcsMTEgKzI4Myw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpOwotI2VuZGlmCi0KICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPj4g
UGVuZGluZ1VSTE5vdGlmeU1hcDsKQEAgLTM5NCwxNCArMzk1LDcgQEAgcHJpdmF0ZToKICAgICBO
UF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCi0gICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwotICAgIERp
c3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgR3RrV2lkZ2V0
KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwotI2VuZGlmCi0KLXB1YmxpYzogLy8gTmVlZCB0byBj
YWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KLSAgICBzdGF0aWMg
RGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQ
bHVnaW5Vbml4PiBtX2ltcGw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAy
MzQ5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguY3BwCkBAIC0wLDAgKzEsMTYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorCisjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW5YMTEuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgpCit7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQoreworI2lm
IFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7CisgICAgICAgIG1faW1wbCA9
IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBpZiAoIW1faW1wbCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9ucFdpbmRvdy50eXBlID0gbV9pbXBsLT53aW5kb3dUeXBlKCk7Cisg
ICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gbV9pbXBsLT53aW5kb3coKTsKKyAgICAgICAgbV9u
cFdpbmRvdy53c19pbmZvID0gbV9pbXBsLT53aW5kb3dTeXN0ZW1JbmZvKCk7CisgICAgICAgIGNh
bGxTZXRXaW5kb3coKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBtX2ltcGwgPSBudWxscHRyOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVj
dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIGlm
ICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgbV9pbXBsLT5nZW9tZXRyeURpZENoYW5n
ZSgpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFu
Z2UoKQoreworICAgIGlmICghbV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faW1wbC0+dmlzaWJpbGl0eURpZENoYW5nZSgpOworfQorCit2b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQoreworICAgIGlmICghbV9p
c1N0YXJ0ZWQgfHwgIW1faW1wbCkgeworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50
IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2lt
cGwtPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sK
KyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gfHwgZXZlbnQu
dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQorICAgICAgICAmJiBldmVudC5idXR0b24oKSA9
PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgorICAgICAgICAmJiBxdWlya3MoKS5jb250YWlu
cyhQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VFdmVudChl
dmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVu
dChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8
ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhh
bmRsZVdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVNldEZvY3VzKGJvb2wgZm9jdXNJbikKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2lt
cGwpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1wbC0+c2V0Rm9jdXMoZm9jdXNJbik7Cit9
CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3Jk
aW5hdGVzKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
Cit7CisgICAgaWYgKG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoZXZlbnQpOwor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFt
X2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRs
ZU1vdXNlTGVhdmVFdmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sK
KyAgICAvLyBXZSBkb24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMg
dmlhIFdlYkV2ZW50RmFjdG9yeS4KKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50
OjpLZXlEb3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOworCisgICAgaWYg
KG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9pbXBsLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2lu
VW5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODQxODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
dW5peC9OZXRzY2FwZVBsdWdpblVuaXguaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0c2NhcGVQbHVn
aW5Vbml4X2gKKyNkZWZpbmUgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKworI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVf
aW50ZXJuYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJkRXZl
bnQ7CitjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViV2hlZWxFdmVudDsKKworY2xhc3Mg
TmV0c2NhcGVQbHVnaW5Vbml4IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
blVuaXgoKSB7IH0KKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCogd2luZG93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZp
c2liaWxpdHlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWJvYXJkRXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXMoYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisK
KyNlbmRpZiAvLyBOZXRzY2FwZVBsdWdpblVuaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAppbmRleCAzODAyODk3Li5iNWI1NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisKICNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNp
bmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgotCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KQEAgLTU3LDYgKzU4LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFIb3N0RGlzcGxheSgp
Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworfQorCiBzdGF0aWMgRGlzcGxheSogZ2V0
UGx1Z2luRGlzcGxheSgpCiB7CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtNjYsNyArNzIsNyBAQCBz
dGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAjZWxpZiBQTEFURk9STShFRkwpICYm
IGRlZmluZWQoSEFWRV9FQ09SRV9YKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4o
ZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG51bGxwdHI7CiAjZW5kaWYKIH0KIApAQCAtODYsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGlu
dCBkaXNwbGF5RGVwdGgoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3Vh
bF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9k
ZWZhdWx0KCkpKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
Ci0gICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46Ongx
MUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOworICAgIHJldHVy
biBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0KHgxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVm
YXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTAz
LDExICsxMDksNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkK
ICNlbmRpZgogfQogCi1EaXNwbGF5KiBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKQot
ewotICAgIHJldHVybiBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLX0KLQogI2lmIFBMQVRGT1JNKEdUSykKIHN0
YXRpYyBnYm9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKEd0a1NvY2tldCopCiB7CkBA
IC0xMTksMTgwICsxMjAsMTU5IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENh
bGxiYWNrKEd0a1NvY2tldCopCiB9CiAjZW5kaWYKIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2VkKGJvb2wgbmVlZHNYRW1iZWQsIHVpbnQ2NF90IHdp
bmRvd0lEKQorc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdp
blgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4pCiB7Ci0gICAgbV9ucFdpbmRvdy50
eXBlID0gTlBXaW5kb3dUeXBlV2luZG93OwotICAgIGlmICghbmVlZHNYRW1iZWQpIHsKKyNpZiBQ
TEFURk9STShHVEspCisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworI2VuZGlmCisgICAgaWYg
KHBsdWdpbi5pc1dpbmRvd2VkKCkpIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIC8vIE5Q
UFZwbHVnaU5lZWRzWEVtYmVkIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGF0IGxlYXN0IHRoZQor
ICAgICAgICAvLyBGbGFzaCBwbGF5ZXIgcGx1Z2luIGlzIHVzaW5nIGFuICdpbnQnIGluc3RlYWQu
CisgICAgICAgIGludCBuZWVkc1hFbWJlZCA9IDA7CisgICAgICAgIHBsdWdpbi5OUFBfR2V0VmFs
dWUoTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNYRW1iZWQpOworICAgICAgICBpZiAobmVl
ZHNYRW1iZWQpIHsKKyAgICAgICAgICAgIHdpbmRvd0lEID0gcGx1Z2luLmNvbnRyb2xsZXIoKS0+
Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7CisgICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgfQogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGdl
dFBsdWdpbkRpc3BsYXkoKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIC8vIEl0IHNlZW1zIGZsYXNoIG5lZWRzIHRo
ZSBzb2NrZXQgdG8gYmUgaW4gdGhlIHNhbWUgcHJvY2VzcywKLSAgICAvLyBJIGd1ZXNzIGl0IHVz
ZXMgZ2RrX3dpbmRvd19sb29rdXAoKSwgc28gd2UgY3JlYXRlIGEgbmV3IHNvY2tldCBoZXJlCi0g
ICAgLy8gY29udGFpbmluZyBhIHBsdWcgd2l0aCB0aGUgVUkgcHJvY2VzcyBzb2NrZXQgZW1iZWRk
ZWQuCi0gICAgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCA9IGd0a19wbHVnX25ldyhzdGF0aWNfY2Fz
dDxXaW5kb3c+KHdpbmRvd0lEKSk7Ci0KLSAgICAvLyBIaWRlIHRoZSBHdGtQbHVnIG9uIGRlbGV0
ZS1ldmVudCBzaW5jZSB3ZSBhc3N1bWUgdGhlIHdpZGdldCBpcyB2YWxpZCB3aGlsZSB0aGUgcGx1
Z2luIGlzIGFjdGl2ZS4KLSAgICAvLyBwbGF0Zm9ybURlc3Ryb3koKSB3aWxsIGJlIGNhbGxlZCBh
bnl3YXkgcmlnaHQgYWZ0ZXIgdGhlIGRlbGV0ZS1ldmVudC4KLSAgICBnX3NpZ25hbF9jb25uZWN0
KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQsICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193
aWRnZXRfaGlkZV9vbl9kZWxldGUpLCBudWxscHRyKTsKLQotICAgIEd0a1dpZGdldCogc29ja2V0
ID0gZ3RrX3NvY2tldF9uZXcoKTsKLSAgICAvLyBEbyBub3Qgc2hvdyB0aGUgcGx1ZyB3aWRnZXQg
dW50aWwgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQuCi0gICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKHNvY2tldCwgInBsdWctYWRkZWQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfc2hvdyksIG1f
cGxhdGZvcm1QbHVnaW5XaWRnZXQpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0LCAicGx1
Zy1yZW1vdmVkIiwgR19DQUxMQkFDSyhzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKSwgbnVsbHB0
cik7Ci0gICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtUGx1Z2lu
V2lkZ2V0KSwgc29ja2V0KTsKLSAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKLQotICAgIG1f
bnBXaW5kb3cud2luZG93ID0gR0lOVF9UT19QT0lOVEVSKGd0a19zb2NrZXRfZ2V0X2lkKEdUS19T
T0NLRVQoc29ja2V0KSkpOwotICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
d2luZG93KHNvY2tldCk7Ci0gICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tT
dHJ1Y3QgPSBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRv
dy53c19pbmZvKTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGlzcGxheSA9IEdES19XSU5ET1dfWERJ
U1BMQVkod2luZG93KTsKLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gR0RLX1ZJU1VBTF9Y
VklTVUFMKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKLSAgICBjYWxsYmFja1N0cnVj
dC0+ZGVwdGggPSBnZGtfdmlzdWFsX2dldF9kZXB0aChnZGtfd2luZG93X2dldF92aXN1YWwod2lu
ZG93KSk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGRp
c3BsYXksIEdES19ST09UX1dJTkRPVygpLCBjYWxsYmFja1N0cnVjdC0+dmlzdWFsLCBBbGxvY05v
bmUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0od2luZG93SUQpOworICAgIGlmIChwbHVnaW4u
aXNXaW5kb3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBs
dWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIFhGbHVz
aChkaXNwbGF5KTsKLQotICAgIGNhbGxTZXRXaW5kb3coKTsKLQotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRp
c3BsYXkpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpCitOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2Nh
cGVQbHVnaW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKKyAgICA6IG1fcGx1Z2luKHBsdWdp
bikKKyAgICAsIG1fcGx1Z2luRGlzcGxheShkaXNwbGF5KQogewotICAgIERpc3BsYXkqIGRpc3Bs
YXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlw
ZURyYXdhYmxlOwotICAgIG1fbnBXaW5kb3cud2luZG93ID0gMDsKLQorICAgIERpc3BsYXkqIGhv
c3REaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKICAgICBpbnQgZGVwdGggPSBkaXNwbGF5RGVw
dGgoKTsKLQotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
c3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5m
byk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIGNhbGxiYWNr
U3RydWN0LT5kZXB0aCA9IGRlcHRoOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGlz
cGxheSA9IGhvc3REaXNwbGF5OworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGVwdGgg
PSBkZXB0aDsKIAogICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOwogICAgIHZpc3VhbFRl
bXBsYXRlLnNjcmVlbiA9IHgxMVNjcmVlbigpOwogICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0g
ZGVwdGg7CiAgICAgdmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsKICAgICBpbnQg
bnVtTWF0Y2hpbmc7Ci0gICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhYR2V0
VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwg
VmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykpOworICAgIFhV
bmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oaG9zdERpc3Bs
YXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ss
ICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbEluZm8p
OwogICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mby5nZXQoKVswXS52aXN1YWw7CiAgICAg
QVNTRVJUKHZpc3VhbCk7CiAKLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwot
ICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCBy
b290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOwotCi0gICAgY2FsbFNldFdpbmRvdygp
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
UHJlSW5pdGlhbGl6ZSgpCi17CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwg
PSB2aXN1YWw7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCA9IFhDcmVh
dGVDb2xvcm1hcChob3N0RGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25l
KTsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCisj
aWYgUExBVEZPUk0oR1RLKQorTmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5l
dHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRpc3BsYXksIHVpbnQ2NF90IHdpbmRvd0lE
KQorICAgIDogbV9wbHVnaW4ocGx1Z2luKQorICAgICwgbV9wbHVnaW5EaXNwbGF5KGRpc3BsYXkp
CisgICAgLCBtX3dpbmRvd0lEKHdpbmRvd0lEKQogewotICAgIHVpbnQ2NF90IHdpbmRvd0lEID0g
MDsKLSAgICAvLyBOUFBWcGx1Z2luTmVlZHNYRW1iZWQgaXMgYSBib29sZWFuIHZhbHVlLCBidXQg
YXQgbGVhc3QgdGhlCi0gICAgLy8gRmxhc2ggcGxheWVyIHBsdWdpbiBpcyB1c2luZyBhbiAnaW50
JyBpbnN0ZWFkLgotICAgIGludCBuZWVkc1hFbWJlZCA9IDA7Ci0gICAgaWYgKG1faXNXaW5kb3dl
ZCkgewotICAgICAgICBOUFBfR2V0VmFsdWUoTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNY
RW1iZWQpOwotICAgICAgICBpZiAobmVlZHNYRW1iZWQpIHsKLSAgICAgICAgICAgIHdpbmRvd0lE
ID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250YWluZXIoKTsKLSAgICAgICAgICAgIGlm
ICghd2luZG93SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBJdCBzZWVtcyBmbGFzaCBuZWVkcyB0aGUg
c29ja2V0IHRvIGJlIGluIHRoZSBzYW1lIHByb2Nlc3MsCisgICAgLy8gSSBndWVzcyBpdCB1c2Vz
IGdka193aW5kb3dfbG9va3VwKCksIHNvIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQorICAg
IC8vIGNvbnRhaW5pbmcgYSBwbHVnIHdpdGggdGhlIFVJIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVk
LgorICAgIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQgPSBndGtfcGx1Z19uZXcoc3RhdGljX2Nhc3Q8
V2luZG93Pih3aW5kb3dJRCkpOwogCi0gICAgaWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1
Z2luRGlzcGxheSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEhpZGUgdGhlIEd0
a1BsdWcgb24gZGVsZXRlLWV2ZW50IHNpbmNlIHdlIGFzc3VtZSB0aGUgd2lkZ2V0IGlzIHZhbGlk
IHdoaWxlIHRoZSBwbHVnaW4gaXMgYWN0aXZlLgorICAgIC8vIHBsYXRmb3JtRGVzdHJveSgpIHdp
bGwgYmUgY2FsbGVkIGFueXdheSByaWdodCBhZnRlciB0aGUgZGVsZXRlLWV2ZW50LgorICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9wbGF0Zm9ybVBsdWdpbldpZGdldCwgImRlbGV0ZS1ldmVudCIsIEdf
Q0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlX29uX2RlbGV0ZSksIG51bGxwdHIpOwogCi0gICAgTlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dD
YWxsYmFja1N0cnVjdDsKLSAgICBjYWxsYmFja1N0cnVjdC0+dHlwZSA9IDA7Ci0gICAgbV9ucFdp
bmRvdy53c19pbmZvID0gY2FsbGJhY2tTdHJ1Y3Q7CisgICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBn
dGtfc29ja2V0X25ldygpOworICAgIC8vIERvIG5vdCBzaG93IHRoZSBwbHVnIHdpZGdldCB1bnRp
bCB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZC4KKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
c29ja2V0LCAicGx1Zy1hZGRlZCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9zaG93KSwgbV9wbGF0
Zm9ybVBsdWdpbldpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdChzb2NrZXQsICJwbHVnLXJl
bW92ZWQiLCBHX0NBTExCQUNLKHNvY2tldFBsdWdSZW1vdmVkQ2FsbGJhY2spLCBudWxscHRyKTsK
KyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1QbHVnaW5XaWRn
ZXQpLCBzb2NrZXQpOworICAgIGd0a193aWRnZXRfc2hvdyhzb2NrZXQpOwogCi0gICAgaWYgKG1f
aXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dl
ZChuZWVkc1hFbWJlZCwgd2luZG93SUQpOworICAgIERpc3BsYXkqIGhvc3REaXNwbGF5ID0geDEx
SG9zdERpc3BsYXkoKTsKKyAgICBtX25wV2luZG93SUQgPSBndGtfc29ja2V0X2dldF9pZChHVEtf
U09DS0VUKHNvY2tldCkpOworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
d2luZG93KHNvY2tldCk7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5kaXNwbGF5ID0g
R0RLX1dJTkRPV19YRElTUExBWSh3aW5kb3cpOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1
Y3QudmlzdWFsID0gR0RLX1ZJU1VBTF9YVklTVUFMKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5k
b3cpKTsKKyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRlcHRoID0gZ2RrX3Zpc3VhbF9n
ZXRfZGVwdGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAgIG1fc2V0V2luZG93
Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoaG9zdERpc3BsYXksIEdE
S19ST09UX1dJTkRPVygpLCBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgQWxsb2NO
b25lKTsKIAotICAgIHJldHVybiBwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpOwor
ICAgIFhGbHVzaChob3N0RGlzcGxheSk7CiB9CisjZW5kaWYKIAotdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1EZXN0cm95KCkKK05ldHNjYXBlUGx1Z2luWDExOjp+TmV0c2NhcGVQbHVnaW5Y
MTEoKQogewotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
c3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5m
byk7Ci0gICAgRGlzcGxheSogaG9zdERpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIFhG
cmVlQ29sb3JtYXAoaG9zdERpc3BsYXksIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCk7Ci0gICAg
ZGVsZXRlIGNhbGxiYWNrU3RydWN0OworICAgIFhGcmVlQ29sb3JtYXAoeDExSG9zdERpc3BsYXko
KSwgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCk7CiAKICAgICBtX2RyYXdhYmxl
LnJlc2V0KCk7CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5X
aWRnZXQpIHsKKyAgICBpZiAobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkKICAgICAgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpOwotICAgICAgICBtX3BsYXRmb3Jt
UGx1Z2luV2lkZ2V0ID0gMDsKLSAgICB9CiAjZW5kaWYKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQorTlBXaW5kb3dUeXBlIE5ldHNj
YXBlUGx1Z2luWDExOjp3aW5kb3dUeXBlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8g
TlBXaW5kb3dUeXBlV2luZG93IDogTlBXaW5kb3dUeXBlRHJhd2FibGU7CiB9CiAKLXZvaWQgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQordm9pZCogTmV0c2NhcGVQ
bHVnaW5YMTE6OndpbmRvdygpIGNvbnN0CiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkgeworI2lm
IFBMQVRGT1JNKEdUSykKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8gR0lOVF9U
T19QT0lOVEVSKG1fbnBXaW5kb3dJRCkgOiBudWxscHRyOworI2Vsc2UKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyNlbmRpZgorfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luWDExOjpnZW9tZXRyeURpZENo
YW5nZSgpCit7CisgICAgaWYgKG1fcGx1Z2luLmlzV2luZG93ZWQoKSkgewogICAgICAgICB1aW50
NjRfdCB3aW5kb3dJRCA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB3aW5kb3dJRCA9
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0
X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNlbmRpZgotICAg
ICAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFt
ZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCB3aW5kb3dJRCk7CisgICAgICAg
IG1fcGx1Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSht
X3BsdWdpbi5mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCksIG1fcGx1Z2luLmNsaXBSZWN0
KCksIHdpbmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZHJhd2FibGUu
cmVzZXQoKTsKLSAgICBpZiAobV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKKyAgICBpZiAobV9wbHVn
aW4uc2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3YWJsZSA9
IFhDcmVhdGVQaXhtYXAoeDExSG9zdERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2lu
U2l6ZS53aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAg
ICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93
SUQoKSwgbV9wbHVnaW4uc2l6ZSgpLndpZHRoKCksIG1fcGx1Z2luLnNpemUoKS5oZWlnaHQoKSwg
ZGlzcGxheURlcHRoKCkpOwogICAgIFhTeW5jKHgxMUhvc3REaXNwbGF5KCksIGZhbHNlKTsgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUuCiB9CiAK
LXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCit2b2lk
IE5ldHNjYXBlUGx1Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIHsKLSAgICBpZiAoIW1f
aXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2lu
ZG93ZWQoKSk7CiAgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtf
cGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkp
KTsKICNlbmRpZgotICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlk
Q2hhbmdlKG1faXNWaXNpYmxlLCB3aW5kb3dJRCk7Ci0gICAgY29udHJvbGxlcigpLT53aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywg
bV9jbGlwUmVjdCwgd2luZG93SUQpOworICAgIG1fcGx1Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93
ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKG1fcGx1Z2luLmlzVmlzaWJsZSgpLCB3aW5kb3dJ
RCk7CisgICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4u
Y2xpcFJlY3QoKSwgd2luZG93SUQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
LCBib29sIC8qaXNTbmFwc2hvdCovKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAg
aWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzU3RhcnRl
ZCkgewotICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50IGEgbWlzc2luZyBwbHVnaW4g
aWNvbi4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5k
b3dlZCgpKTsKIAogICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhbV9kcmF3
YWJsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDE0ICsyOTMsMTQgQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnQKICAgICBleHBvc2VFdmVudC53aWR0aCA9IGV4cG9zZWRSZWN0LndpZHRoKCk7
CiAgICAgZXhwb3NlRXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QuaGVpZ2h0KCk7CiAKLSAgICBO
UFBfSGFuZGxlRXZlbnQoJnhldmVudCk7CisgICAgbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4
ZXZlbnQpOwogCiAgICAgaWYgKG1fcGx1Z2luRGlzcGxheSAhPSB4MTFIb3N0RGlzcGxheSgpKQog
ICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsKIAogI2lmIFBMQVRGT1JNKEdU
SykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKG1fcGx1Z2luRGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3Vh
bCwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOworICAgICAg
ICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgbV9wbHVnaW4uc2l6ZSgpLndpZHRo
KCksIG1fcGx1Z2luLnNpemUoKS5oZWlnaHQoKSkpOwogICAgIGNhaXJvX3QqIGNyID0gY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIApAQCAtMzQy
LDcgKzMyMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplWEV2ZW50KFhFdmVudCYg
ZXZlbnQpCiAgICAgbWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogICAgIGV2ZW50
Lnhhbnkuc2VyaWFsID0gMDsKICAgICBldmVudC54YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsKLSAg
ICBldmVudC54YW55LmRpc3BsYXkgPSBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKTsK
KyAgICBldmVudC54YW55LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwogICAgIGV2ZW50Lnhh
bnkud2luZG93ID0gMDsKIH0KIApAQCAtNDQwLDE1ICs0MjAsOSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0WENyb3NzaW5nRXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNvbnN0IFdlYk1vdXNl
RXZlbnQmCiAgICAgeENyb3NzaW5nLmZvY3VzID0gZmFsc2U7CiB9CiAKLWJvb2wgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVu
dCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91
c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93biB8
fCBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXApCi0gICAgICAgICAmJiBldmVudC5i
dXR0b24oKSA9PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgotICAgICAgICAgJiYgcXVpcmtz
KCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9k
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dl
ZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQp
OwpAQCAtNDU2LDEwICs0MzAsMTAgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5k
bGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIHN3aXRjaCAoZXZl
bnQudHlwZSgpKSB7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgIGNhc2UgV2Vi
RXZlbnQ6Ok1vdXNlVXA6Ci0gICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4RXZlbnQsIGV2
ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CisgICAgICAgIHNldFhCdXR0b25F
dmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQ
b2ludCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlTW92ZToK
LSAgICAgICAgc2V0WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jv
b3RWaWV3KEludFBvaW50KCkpKTsKKyAgICAgICAgc2V0WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVu
dCwgZXZlbnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VGb3JjZUNoYW5nZWQ6CiAgICAgY2Fz
ZSBXZWJFdmVudDo6TW91c2VGb3JjZURvd246CkBAIC00NzksNyArNDUzLDcgQEAgYm9vbCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQm
IGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuICFOUFBf
SGFuZGxlRXZlbnQoJnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZl
bnQoJnhFdmVudCk7CiB9CiAKIC8vIFdlIHVuZGVmaW5lIHRoZXNlIGNvbnN0YW50cyBpbiBucHJ1
bnRpbWVfaW50ZXJuYWwuaCB0byBhdm9pZCBjb2xsaXNpb24KQEAgLTQ4OSwyMiArNDYzLDIwIEBA
IGNvbnN0IGludCBrS2V5UmVsZWFzZVR5cGUgPSAzOwogY29uc3QgaW50IGtGb2N1c0luVHlwZSA9
IDk7CiBjb25zdCBpbnQga0ZvY3VzT3V0VHlwZSA9IDEwOwogCi1ib29sIE5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybUhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCiti
b29sIE5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZl
bnQmIGV2ZW50KQogewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZl
bnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhCdXR0b25FdmVudEZp
ZWxkc0J5V2ViV2hlZWxFdmVudCh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQ
b2ludCgpKSk7CisgICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzQnlXZWJXaGVlbEV2ZW50KHhFdmVu
dCwgZXZlbnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKIAotICAg
IHJldHVybiAhTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4u
TlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybVNldEZvY3VzKGJvb2wgZm9jdXNJbikKK3ZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnNldEZv
Y3VzKGJvb2wgZm9jdXNJbikKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1
cm47CisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2
ZW50OwogICAgIGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKQEAgLTUxMywzNiArNDg1LDI5IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtU2V0Rm9jdXMoYm9vbCBmb2N1c0luKQogICAg
IGZvY3VzRXZlbnQubW9kZSA9IE5vdGlmeU5vcm1hbDsKICAgICBmb2N1c0V2ZW50LmRldGFpbCA9
IE5vdGlmeURldGFpbE5vbmU7CiAKLSAgICBOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7Ci19Ci0K
LWJvb2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3JkaW5h
dGVzKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQo
JnhFdmVudCk7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VF
bnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdp
blgxMTo6aGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQog
ewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NF
UlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5p
dGlhbGl6ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVu
dCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBFbnRlck5vdGlmeSk7Cisg
ICAgc2V0WENyb3NzaW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVy
dFRvUm9vdFZpZXcoSW50UG9pbnQoKSksIEVudGVyTm90aWZ5KTsKIAotICAgIHJldHVybiAhTlBQ
X0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2
ZW50KCZ4RXZlbnQpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1v
dXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQ
bHVnaW5YMTE6OmhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVu
dCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
QVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAg
IGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKLSAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyh4
RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwgTGVhdmVOb3RpZnkp
OworICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1fcGx1Z2luLmNv
bnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBMZWF2ZU5vdGlmeSk7CiAKLSAgICByZXR1cm4g
IU5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5k
bGVFdmVudCgmeEV2ZW50KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZp
ZWxkcyhYRXZlbnQmIHhFdmVudCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViRXZlbnQpCkBA
IC01NjUsOCArNTMwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhY
RXZlbnQmIHhFdmVudCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2UKICAgICB4S2V5Lnlfcm9v
dCA9IDA7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRF
dmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Y
MTE6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7
CisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAgICAgLy8gV2UgZG9uJ3QgZ2Vu
ZXJhdGUgb3RoZXIgdHlwZXMgb2Yga2V5Ym9hcmQgZXZlbnRzIHZpYSBXZWJFdmVudEZhY3Rvcnku
CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biB8fCBldmVudC50
eXBlKCkgPT0gV2ViRXZlbnQ6OktleVVwKTsKIApAQCAtNTc0LDcgKzU0MCw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCkKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7CiAgICAgc2V0WEtl
eUV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQpOwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZl
bnQoJnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVu
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZjkzZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXRz
Y2FwZVBsdWdpblgxMV9oCisjZGVmaW5lIE5ldHNjYXBlUGx1Z2luWDExX2gKKworI2lmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luVW5peC5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBOZXRzY2FwZVBsdWdpbjsKKworY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWw6
IHB1YmxpYyBOZXRzY2FwZVBsdWdpblVuaXggeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOworICAg
IE5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYsIERpc3BsYXkq
LCB1aW50NjRfdCB3aW5kb3dJRCk7CisjZW5kaWYKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
blgxMSgpOworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkKiB3aW5kb3coKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdpbmRvd1N5c3RlbUlu
Zm8oKSBvdmVycmlkZSB7IHJldHVybiAmbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdDsgfQorICAg
IHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3Vz
ZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJp
ZGU7CisKKyAgICBOZXRzY2FwZVBsdWdpbiYgbV9wbHVnaW47CisgICAgRGlzcGxheSogbV9wbHVn
aW5EaXNwbGF5IHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3
YWJsZTsKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0IG1fc2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3Q7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHVpbnQ2NF90IG1fd2luZG93SUQgeyAwIH07
CisgICAgdW5zaWduZWQgbG9uZyBtX25wV2luZG93SUQgeyAwIH07CisgICAgR3RrV2lkZ2V0KiBt
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0IHsgbnVsbHB0ciB9OworI2VuZGlmCit9OworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKworI2Vu
ZGlmIC8vIE5ldHNjYXBlUGx1Z2luWDExX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270480</attachid>
            <date>2016-02-02 03:14:42 -0800</date>
            <delta_ts>2016-02-02 23:34:57 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-wayland-npapi-plugins.diff</filename>
            <type>text/plain</type>
            <size>44253</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MmQ1NjRmLi4zMDQzYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMTItMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFs
bCBwbHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBs
ZS4gVGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAg
ZXh0ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhl
cmUncyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5k
ZXIgd2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgor
ICAgICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBO
ZXRzY2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1v
biBjb2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVz
ZSB0aGUgWDExIGltcGxlbWVudGF0aW4gb25seSB3aGVuIG5lZWRlZCBhbmQKKyAgICAgICAgYXZh
aWxhYmxlLiBGb3Igd2luZG93ZWQgcGx1Z2lucyB3ZSB3aWxsIGZhaWwgdGhlIGluaXRpYWxpemF0
aW9uCisgICAgICAgIHVuZGVyIG5vbi1YMTEgcGxhZm9ybXMsIHdoaWxlIGZvciB3aW5kb3dsZXNz
IHBsdWdpbnMgd2Ugd2lsbCBqdXN0CisgICAgICAgIHJldHVybiBlYXJseSBmcm9tIHBhaW50IG1l
dGhvZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgbmV3IGZpbGVzIHRvIGNv
bXBpbGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKTogRG8gbm90IGRpc2FibGUgcGx1Z2lucyBpbiB3
YXlsYW5kLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUp
OiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOiBVc2UgUGxh
dGZvcm1EaXNwbGF5IGluc3RlYWQgb2YKKyAgICAgICAgTmV0c2NhcGVQbHVnaW46OngxMUhvc3RE
aXNwbGF5KCkgYW5kIGRvbid0IGNsYWltIHRvIHN1cHBvcnQgWDExCisgICAgICAgIHNwZWNpZmlj
IGZlYXR1cmVzIHVuZGVyIG5vbi14MTEgcGxhdGZvcm1zLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbik6IFJlbW92ZSBYMTEgYW5kIEdUSworICAgICAg
ICBzcGVjaWZpYyBtZW1lYmVycyB0aGF0IGFyZSBub3cgbW92ZWQgdG8gYSBkZWRpY2F0ZWQgY2xh
c3MgTmV0c2NhcGVQbHVnaW5YMTEuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpm
cmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKTogTWFrZSB0aGlzIHB1YmxpYy4KKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmNsaXBSZWN0KTogQWRkIGdldHRlci4KKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OmlzV2luZG93ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OmlzVmlzaWJsZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZVdoZWVsRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1TZXRGb2N1cyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp3YW50c1BsdWdpblJlbGF0aXZlTlBXaW5k
b3dDb29yZGluYXRlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bUhhbmRsZU1vdXNlRW50ZXJFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Vbml4Ojp+TmV0c2NhcGVQbHVnaW5Vbml4
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0UGx1Z2luRGlzcGxheSk6CisgICAgICAg
IChXZWJLaXQ6OmRpc3BsYXlEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OngxMUhvc3REaXNwbGF5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp+TmV0c2NhcGVQbHVnaW5YMTEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6d2luZG93VHlwZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpblgxMTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpblgxMTo6dmlzaWJpbGl0eURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luWDExOjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVYRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVXaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OnNldEZvY3VzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRW50ZXJFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OnNldENvbW1vbk1vdXNlRXZlbnRGaWVsZHMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpzZXRYS2V5RXZlbnRGaWVsZHMpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaDogQWRk
ZWQuCisKIDIwMTYtMDItMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFJlZHVjZSBJUEMgdHJhZmZpYyBkdWUgdG8gdmlldyBzdGF0
ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDk3ZjY4MGIuLjljMGFhNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yMDAsNiArMjAwLDcgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjczLDYgKzI3NCw4IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgorICAg
ICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCmluZGV4IGYyYTkzYTkuLmMwMTBiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC0zMzgsNiArMzM4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAg
ICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAor
ICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5j
cHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXgu
Y3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcApAQCAtNTI0LDYgKzUyNSw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZ3RrIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9ndGsi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy91bml4IgpAQCAtNzkzLDYgKzc5Niw3IEBAIGlmIChFTkFCTEVfUExVR0lO
X1BST0NFU1NfR1RLMikKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTm9uZS5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcAogCisgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAogICAgICAgICAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDNlMGM0ODguLjlkMjEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE1OTQsMTIg
KzE1OTQsNiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BsdWdpbnMoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibAogewogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKLSNpZiBQTEFURk9STShXQVlMQU5E
KQotICAgIC8vIERvIG5vdCBhbGxvdyB0byBjaGFuZ2UgdGhpcyBzZXR0aW5nIGluIFdheWxhbmQs
IHNpbmNlIHBsdWdpbnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OldheWxhbmQpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgV2Vi
S2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CiAgICAgYm9vbCBjdXJy
ZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJsZWQoKTsKICAgICBpZiAo
Y3VycmVudFZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4IGU0YTBiN2EuLmM3MjQyYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3Bw
CkBAIC0zOSw4ICszOSw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6
ZVN0b3JlKCkKICAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVy
IFdheWxhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwotCi0gICAgICAgIHNldFBsdWdpbnNFbmFibGVkKGZh
bHNlKTsKICAgICB9CiAjZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDM5MzczM2IuLmVkOTBhMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
MjQsMTggKzUyOCwyMSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKICNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICAgIGNhc2UgTlBOVnhEaXNw
bGF5OiB7Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJS
X0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PERpc3BsYXkqKj4o
dmFsdWUpID0gTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCk7Ci0gICAgICAgICAgIGJy
ZWFrOwotICAgICAgIH0KLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6Ci0gICAg
ICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBi
cmVhazsKLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6Ci0gICAgICAgICAgICpz
dGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgICAgIGlmICghbnBwKQorICAgICAg
ICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgY29uc3Qg
YXV0byYgZGlzcGxheSA9IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
OworICAgICAgICAgICAgaWYgKGRpc3BsYXkudHlwZSgpICE9IFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheTo6VHlwZTo6WDExKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOworICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXkpLm5hdGl2ZSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29s
OgorICAgICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXk6OlR5cGU6OlgxMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5Q
TlZTdXBwb3J0c1dpbmRvd2xlc3M6CisgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4o
dmFsdWUpID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSBOUE5WVG9v
bGtpdDogewogICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3Vy
ZWQgYWJvdXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmlu
ZGV4IDExMjdkMTIuLjI0ODM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDIs
NiArNDIsMTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBl
UGx1Z2luVW5peC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTkwLDEyICs5NCw2IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2Fw
ZVBsdWdpbihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAg
ICAgLCBtX251bGxFdmVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1
Z2luOjpudWxsRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9ucENHQ29udGV4dCgpCiAjZW5kaWYK
LSNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICwgbV9kcmF3YWJsZSgwKQotICAg
ICwgbV9wbHVnaW5EaXNwbGF5KDApCi0jaWYgUExBVEZPUk0oR1RLKQotICAgICwgbV9wbGF0Zm9y
bVBsdWdpbldpZGdldCgwKQotI2VuZGlmCiAjZW5kaWYKIHsKICAgICBtX25wcC5uZGF0YSA9IHRo
aXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDRmOTJkOGYuLmYyYzg5MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCkBAIC0zOCwxMCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkKLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFz
cyBIVFRQSGVhZGVyTWFwOwpAQCAtNTQsNyArNTAsOSBAQCBPQkpDX0NMQVNTIFdLTlBBUElQbHVn
SW5Db250YWluZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5T
dHJlYW07Ci0gICAgCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitjbGFzcyBOZXRzY2Fw
ZVBsdWdpblVuaXg7CisjZW5kaWYKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdp
biB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBh
c3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKQEAgLTk1LDYgKzkzLDEyIEBAIHB1Ymxp
YzoKIAogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOyB9CisjZW5kaWYKKyAgICBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7
IH0KKyAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9w
bHVnaW5TaXplOyB9CisKICAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4g
bV9wbHVnaW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGUo
Y29uc3QgTlBSZWN0Kik7CkBAIC0xMDksNiArMTEzLDggQEAgcHVibGljOgogICAgIGJvb2wgZXZh
bHVhdGUoTlBPYmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJl
c3VsdCk7CiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBib29sIGlz
TXV0ZWQoKSBjb25zdDsKKyAgICBib29sIGlzV2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
V2luZG93ZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNp
YmxlOyB9CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTZXRFeGNlcHRpb25GdW5jdGlvbih2b2lkICgq
KShjb25zdCBTdHJpbmcmKSk7CiAKQEAgLTE1NSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTlBF
cnJvciBOUFBfR2V0VmFsdWUoTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKICAgICBOUEVycm9y
IE5QUF9TZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogCisgICAgLy8gQ29udmVy
dCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBj
b29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZhdGU6
CiAgICAgTmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1
Z2luTW9kdWxlKTsKIApAQCAtMjU4LDkgKzI2Nyw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIENv
bnZlcnQgdGhlIGdpdmVuIHBvaW50IGZyb20gcGx1Zy1pbiBjb29yZGluYXRlcyB0byByb290IHZp
ZXcgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAg
Ly8gQ29udmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8g
cGx1Zy1pbiBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUK
ICAgICAvLyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52
ZXJ0aWJsZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50SW5QbHVnaW5Db29yZGluYXRlcyk7CkBAIC0yNzcsMTEgKzI4Myw2IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKLSNpZiBQTFVHSU5fQVJDSElURUNU
VVJFKFgxMSkKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5l
ZWRzWEVtYmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0
aWFsaXplV2luZG93bGVzcygpOwotI2VuZGlmCi0KICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0
SUQ7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZv
aWQqPj4gUGVuZGluZ1VSTE5vdGlmeU1hcDsKQEAgLTM5NCwxNCArMzk1LDcgQEAgcHJpdmF0ZToK
ICAgICBOUF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCi0gICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwot
ICAgIERpc3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgR3Rr
V2lkZ2V0KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwotI2VuZGlmCi0KLXB1YmxpYzogLy8gTmVl
ZCB0byBjYWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KLSAgICBz
dGF0aWMgRGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
c2NhcGVQbHVnaW5Vbml4PiBtX2ltcGw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2lu
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5p
eC9OZXRzY2FwZVBsdWdpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmIzOTZiMGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcApAQCAtMCwwICsx
LDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKKworI2lm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
KworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybURpc3BsYXkuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUo
KQoreworfQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplKCkK
K3sKKyNpZiBQTEFURk9STShYMTEpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgeworICAgICAgICBt
X2ltcGwgPSBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgaWYgKCFt
X2ltcGwpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1fbnBXaW5kb3cudHlwZSA9IG1faW1wbC0+d2luZG93VHlw
ZSgpOworICAgICAgICBtX25wV2luZG93LndpbmRvdyA9IG1faW1wbC0+d2luZG93KCk7CisgICAg
ICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9IG1faW1wbC0+d2luZG93U3lzdGVtSW5mbygpOworICAg
ICAgICBjYWxsU2V0V2luZG93KCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgbV9pbXBsID0gbnVs
bHB0cjsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0
IEludFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKK3sK
KyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW1wbC0+Z2VvbWV0cnlE
aWRDaGFuZ2UoKTsKK30KKwordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5
RGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAoIW1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2ltcGwtPnZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKK30KKwordm9p
ZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCAvKmlzU25hcHNob3QqLykKK3sKKyAgICBp
ZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9pc1N0YXJ0ZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwYWludCBhIG1pc3Np
bmcgcGx1Z2luIGljb24uCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ltcGwtPnBh
aW50KGNvbnRleHQsIGRpcnR5UmVjdCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBp
ZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICgoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gfHwgZXZlbnQudHlwZSgp
ID09IFdlYkV2ZW50OjpNb3VzZVVwKQorICAgICAgICAmJiBldmVudC5idXR0b24oKSA9PSBXZWJN
b3VzZUV2ZW50OjpSaWdodEJ1dHRvbgorICAgICAgICAmJiBxdWlya3MoKS5jb250YWlucyhQbHVn
aW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VFdmVudChldmVudCk7
Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudChjb25z
dCBXZWJXaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2lt
cGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRsZVdo
ZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZv
Y3VzKGJvb2wgZm9jdXNJbikKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faW1wbC0+c2V0Rm9jdXMoZm9jdXNJbik7Cit9CisKK2Jv
b2wgTmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3JkaW5hdGVz
KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1IYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7Cisg
ICAgaWYgKG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoZXZlbnQpOworfQorCiti
b29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBX
ZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRsZU1vdXNl
TGVhdmVFdmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFu
ZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICAv
LyBXZSBkb24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMgdmlhIFdl
YkV2ZW50RmFjdG9yeS4KKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlE
b3duIHx8IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOworCisgICAgaWYgKG1faXNX
aW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
bV9pbXBsLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODQxODEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9O
ZXRzY2FwZVBsdWdpblVuaXguaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0c2NhcGVQbHVnaW5Vbml4
X2gKKyNkZWZpbmUgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RV
UkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJu
YWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJkRXZlbnQ7Citj
bGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViV2hlZWxFdmVudDsKKworY2xhc3MgTmV0c2Nh
cGVQbHVnaW5Vbml4IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdpblVuaXgo
KSB7IH0KKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCogd2luZG93KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTlBTZXRX
aW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpc2liaWxp
dHlEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1v
dXNlRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUtleWJvYXJkRXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9v
bCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyNlbmRp
ZiAvLyBOZXRzY2FwZVBsdWdpblVuaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcAppbmRleCAzODAyODk3Li5iNWI1NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisKICNpZiBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbmNsdWRl
ICJOZXRzY2FwZVBsdWdpbi5oIgotCiAjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4K
QEAgLTU3LDYgKzU4LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFIb3N0RGlzcGxheSgpCit7Cisg
ICAgcmV0dXJuIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworfQorCiBzdGF0aWMgRGlzcGxheSogZ2V0UGx1Z2lu
RGlzcGxheSgpCiB7CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtNjYsNyArNzIsNyBAQCBzdGF0aWMg
RGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmlu
ZWQoSEFWRV9FQ09SRV9YKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVf
eF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiAjZW5kaWYKIH0KIApAQCAtODYsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGludCBkaXNw
bGF5RGVwdGgoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3VhbF9nZXRf
ZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0
KCkpKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCi0gICAg
cmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46OngxMUhvc3RE
aXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOworICAgIHJldHVybiBlY29y
ZV94X2RlZmF1bHRfZGVwdGhfZ2V0KHgxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9z
Y3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTAzLDExICsx
MDksNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkKICNlbmRp
ZgogfQogCi1EaXNwbGF5KiBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKQotewotICAg
IHJldHVybiBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLX0KLQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyBn
Ym9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKEd0a1NvY2tldCopCiB7CkBAIC0xMTks
MTgwICsxMjAsMTU5IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNr
KEd0a1NvY2tldCopCiB9CiAjZW5kaWYKIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Q
b3N0SW5pdGlhbGl6ZVdpbmRvd2VkKGJvb2wgbmVlZHNYRW1iZWQsIHVpbnQ2NF90IHdpbmRvd0lE
KQorc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6
Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4pCiB7Ci0gICAgbV9ucFdpbmRvdy50eXBlID0g
TlBXaW5kb3dUeXBlV2luZG93OwotICAgIGlmICghbmVlZHNYRW1iZWQpIHsKKyNpZiBQTEFURk9S
TShHVEspCisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworI2VuZGlmCisgICAgaWYgKHBsdWdp
bi5pc1dpbmRvd2VkKCkpIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIC8vIE5QUFZwbHVn
aU5lZWRzWEVtYmVkIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGF0IGxlYXN0IHRoZQorICAgICAg
ICAvLyBGbGFzaCBwbGF5ZXIgcGx1Z2luIGlzIHVzaW5nIGFuICdpbnQnIGluc3RlYWQuCisgICAg
ICAgIGludCBuZWVkc1hFbWJlZCA9IDA7CisgICAgICAgIHBsdWdpbi5OUFBfR2V0VmFsdWUoTlBQ
VnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNYRW1iZWQpOworICAgICAgICBpZiAobmVlZHNYRW1i
ZWQpIHsKKyAgICAgICAgICAgIHdpbmRvd0lEID0gcGx1Z2luLmNvbnRyb2xsZXIoKS0+Y3JlYXRl
UGx1Z2luQ29udGFpbmVyKCk7CisgICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisj
ZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgfQogCi0gICAgRGlzcGxheSogZGlz
cGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGdldFBsdWdp
bkRpc3BsYXkoKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIC8vIEl0IHNlZW1zIGZsYXNoIG5lZWRzIHRoZSBzb2Nr
ZXQgdG8gYmUgaW4gdGhlIHNhbWUgcHJvY2VzcywKLSAgICAvLyBJIGd1ZXNzIGl0IHVzZXMgZ2Rr
X3dpbmRvd19sb29rdXAoKSwgc28gd2UgY3JlYXRlIGEgbmV3IHNvY2tldCBoZXJlCi0gICAgLy8g
Y29udGFpbmluZyBhIHBsdWcgd2l0aCB0aGUgVUkgcHJvY2VzcyBzb2NrZXQgZW1iZWRkZWQuCi0g
ICAgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCA9IGd0a19wbHVnX25ldyhzdGF0aWNfY2FzdDxXaW5k
b3c+KHdpbmRvd0lEKSk7Ci0KLSAgICAvLyBIaWRlIHRoZSBHdGtQbHVnIG9uIGRlbGV0ZS1ldmVu
dCBzaW5jZSB3ZSBhc3N1bWUgdGhlIHdpZGdldCBpcyB2YWxpZCB3aGlsZSB0aGUgcGx1Z2luIGlz
IGFjdGl2ZS4KLSAgICAvLyBwbGF0Zm9ybURlc3Ryb3koKSB3aWxsIGJlIGNhbGxlZCBhbnl3YXkg
cmlnaHQgYWZ0ZXIgdGhlIGRlbGV0ZS1ldmVudC4KLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxh
dGZvcm1QbHVnaW5XaWRnZXQsICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRf
aGlkZV9vbl9kZWxldGUpLCBudWxscHRyKTsKLQotICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3Rr
X3NvY2tldF9uZXcoKTsKLSAgICAvLyBEbyBub3Qgc2hvdyB0aGUgcGx1ZyB3aWRnZXQgdW50aWwg
dGhlIHNvY2tldCBpcyBjb25uZWN0ZWQuCi0gICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNv
Y2tldCwgInBsdWctYWRkZWQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfc2hvdyksIG1fcGxhdGZv
cm1QbHVnaW5XaWRnZXQpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0LCAicGx1Zy1yZW1v
dmVkIiwgR19DQUxMQkFDSyhzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKSwgbnVsbHB0cik7Ci0g
ICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0
KSwgc29ja2V0KTsKLSAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKLQotICAgIG1fbnBXaW5k
b3cud2luZG93ID0gR0lOVF9UT19QT0lOVEVSKGd0a19zb2NrZXRfZ2V0X2lkKEdUS19TT0NLRVQo
c29ja2V0KSkpOwotICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93
KHNvY2tldCk7Ci0gICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tTdHJ1Y3Qg
PSBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19p
bmZvKTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGlzcGxheSA9IEdES19XSU5ET1dfWERJU1BMQVko
d2luZG93KTsKLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gR0RLX1ZJU1VBTF9YVklTVUFM
KGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGVw
dGggPSBnZGtfdmlzdWFsX2dldF9kZXB0aChnZGtfd2luZG93X2dldF92aXN1YWwod2luZG93KSk7
Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3BsYXks
IEdES19ST09UX1dJTkRPVygpLCBjYWxsYmFja1N0cnVjdC0+dmlzdWFsLCBBbGxvY05vbmUpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0od2luZG93SUQpOworICAgIGlmIChwbHVnaW4uaXNXaW5k
b3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgx
MT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIFhGbHVzaChkaXNw
bGF5KTsKLQotICAgIGNhbGxTZXRXaW5kb3coKTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkp
OwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93
bGVzcygpCitOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVn
aW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKKyAgICA6IG1fcGx1Z2luKHBsdWdpbikKKyAg
ICAsIG1fcGx1Z2luRGlzcGxheShkaXNwbGF5KQogewotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4
MTFIb3N0RGlzcGxheSgpOwotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdh
YmxlOwotICAgIG1fbnBXaW5kb3cud2luZG93ID0gMDsKLQorICAgIERpc3BsYXkqIGhvc3REaXNw
bGF5ID0geDExSG9zdERpc3BsYXkoKTsKICAgICBpbnQgZGVwdGggPSBkaXNwbGF5RGVwdGgoKTsK
LQotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGlj
X2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7Ci0g
ICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIGNhbGxiYWNrU3RydWN0
LT5kZXB0aCA9IGRlcHRoOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGlzcGxheSA9
IGhvc3REaXNwbGF5OworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuZGVwdGggPSBkZXB0
aDsKIAogICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOwogICAgIHZpc3VhbFRlbXBsYXRl
LnNjcmVlbiA9IHgxMVNjcmVlbigpOwogICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0gZGVwdGg7
CiAgICAgdmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsKICAgICBpbnQgbnVtTWF0
Y2hpbmc7Ci0gICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhYR2V0VmlzdWFs
SW5mbyhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFs
Q2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykpOworICAgIFhVbmlxdWVQ
dHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oaG9zdERpc3BsYXksIFZp
c3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssICZ2aXN1
YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbEluZm8pOwogICAg
IFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mby5nZXQoKVswXS52aXN1YWw7CiAgICAgQVNTRVJU
KHZpc3VhbCk7CiAKLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwotICAgIGNh
bGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCByb290V2lu
ZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOwotCi0gICAgY2FsbFNldFdpbmRvdygpOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5p
dGlhbGl6ZSgpCi17CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwgPSB2aXN1
YWw7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCA9IFhDcmVhdGVDb2xv
cm1hcChob3N0RGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKIH0K
IAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCisjaWYgUExB
VEZPUk0oR1RLKQorTmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBl
UGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRpc3BsYXksIHVpbnQ2NF90IHdpbmRvd0lEKQorICAg
IDogbV9wbHVnaW4ocGx1Z2luKQorICAgICwgbV9wbHVnaW5EaXNwbGF5KGRpc3BsYXkpCisgICAg
LCBtX3dpbmRvd0lEKHdpbmRvd0lEKQogewotICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKLSAg
ICAvLyBOUFBWcGx1Z2luTmVlZHNYRW1iZWQgaXMgYSBib29sZWFuIHZhbHVlLCBidXQgYXQgbGVh
c3QgdGhlCi0gICAgLy8gRmxhc2ggcGxheWVyIHBsdWdpbiBpcyB1c2luZyBhbiAnaW50JyBpbnN0
ZWFkLgotICAgIGludCBuZWVkc1hFbWJlZCA9IDA7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkgewot
ICAgICAgICBOUFBfR2V0VmFsdWUoTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNYRW1iZWQp
OwotICAgICAgICBpZiAobmVlZHNYRW1iZWQpIHsKLSAgICAgICAgICAgIHdpbmRvd0lEID0gY29u
dHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250YWluZXIoKTsKLSAgICAgICAgICAgIGlmICghd2lu
ZG93SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KKyAgICAvLyBJdCBzZWVtcyBmbGFzaCBuZWVkcyB0aGUgc29ja2V0
IHRvIGJlIGluIHRoZSBzYW1lIHByb2Nlc3MsCisgICAgLy8gSSBndWVzcyBpdCB1c2VzIGdka193
aW5kb3dfbG9va3VwKCksIHNvIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQorICAgIC8vIGNv
bnRhaW5pbmcgYSBwbHVnIHdpdGggdGhlIFVJIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVkLgorICAg
IG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQgPSBndGtfcGx1Z19uZXcoc3RhdGljX2Nhc3Q8V2luZG93
Pih3aW5kb3dJRCkpOwogCi0gICAgaWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2luRGlz
cGxheSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEhpZGUgdGhlIEd0a1BsdWcg
b24gZGVsZXRlLWV2ZW50IHNpbmNlIHdlIGFzc3VtZSB0aGUgd2lkZ2V0IGlzIHZhbGlkIHdoaWxl
IHRoZSBwbHVnaW4gaXMgYWN0aXZlLgorICAgIC8vIHBsYXRmb3JtRGVzdHJveSgpIHdpbGwgYmUg
Y2FsbGVkIGFueXdheSByaWdodCBhZnRlciB0aGUgZGVsZXRlLWV2ZW50LgorICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9wbGF0Zm9ybVBsdWdpbldpZGdldCwgImRlbGV0ZS1ldmVudCIsIEdfQ0FMTEJB
Q0soZ3RrX3dpZGdldF9oaWRlX29uX2RlbGV0ZSksIG51bGxwdHIpOwogCi0gICAgTlBTZXRXaW5k
b3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dDYWxsYmFj
a1N0cnVjdDsKLSAgICBjYWxsYmFja1N0cnVjdC0+dHlwZSA9IDA7Ci0gICAgbV9ucFdpbmRvdy53
c19pbmZvID0gY2FsbGJhY2tTdHJ1Y3Q7CisgICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBndGtfc29j
a2V0X25ldygpOworICAgIC8vIERvIG5vdCBzaG93IHRoZSBwbHVnIHdpZGdldCB1bnRpbCB0aGUg
c29ja2V0IGlzIGNvbm5lY3RlZC4KKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc29ja2V0
LCAicGx1Zy1hZGRlZCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9zaG93KSwgbV9wbGF0Zm9ybVBs
dWdpbldpZGdldCk7CisgICAgZ19zaWduYWxfY29ubmVjdChzb2NrZXQsICJwbHVnLXJlbW92ZWQi
LCBHX0NBTExCQUNLKHNvY2tldFBsdWdSZW1vdmVkQ2FsbGJhY2spLCBudWxscHRyKTsKKyAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpLCBz
b2NrZXQpOworICAgIGd0a193aWRnZXRfc2hvdyhzb2NrZXQpOwogCi0gICAgaWYgKG1faXNXaW5k
b3dlZCkKLSAgICAgICAgcmV0dXJuIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChuZWVk
c1hFbWJlZCwgd2luZG93SUQpOworICAgIERpc3BsYXkqIGhvc3REaXNwbGF5ID0geDExSG9zdERp
c3BsYXkoKTsKKyAgICBtX25wV2luZG93SUQgPSBndGtfc29ja2V0X2dldF9pZChHVEtfU09DS0VU
KHNvY2tldCkpOworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93
KHNvY2tldCk7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5kaXNwbGF5ID0gR0RLX1dJ
TkRPV19YRElTUExBWSh3aW5kb3cpOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Qudmlz
dWFsID0gR0RLX1ZJU1VBTF9YVklTVUFMKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsK
KyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmRlcHRoID0gZ2RrX3Zpc3VhbF9nZXRfZGVw
dGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAgIG1fc2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3QuY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoaG9zdERpc3BsYXksIEdES19ST09U
X1dJTkRPVygpLCBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgQWxsb2NOb25lKTsK
IAotICAgIHJldHVybiBwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpOworICAgIFhG
bHVzaChob3N0RGlzcGxheSk7CiB9CisjZW5kaWYKIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1EZXN0cm95KCkKK05ldHNjYXBlUGx1Z2luWDExOjp+TmV0c2NhcGVQbHVnaW5YMTEoKQog
ewotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGlj
X2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7Ci0g
ICAgRGlzcGxheSogaG9zdERpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIFhGcmVlQ29s
b3JtYXAoaG9zdERpc3BsYXksIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCk7Ci0gICAgZGVsZXRl
IGNhbGxiYWNrU3RydWN0OworICAgIFhGcmVlQ29sb3JtYXAoeDExSG9zdERpc3BsYXkoKSwgbV9z
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5jb2xvcm1hcCk7CiAKICAgICBtX2RyYXdhYmxlLnJlc2V0
KCk7CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQp
IHsKKyAgICBpZiAobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkKICAgICAgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpOwotICAgICAgICBtX3BsYXRmb3JtUGx1Z2lu
V2lkZ2V0ID0gMDsKLSAgICB9CiAjZW5kaWYKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQorTlBXaW5kb3dUeXBlIE5ldHNjYXBlUGx1
Z2luWDExOjp3aW5kb3dUeXBlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8gTlBXaW5k
b3dUeXBlV2luZG93IDogTlBXaW5kb3dUeXBlRHJhd2FibGU7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQordm9pZCogTmV0c2NhcGVQbHVnaW5Y
MTE6OndpbmRvdygpIGNvbnN0CiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkgeworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICByZXR1cm4gbV9wbHVnaW4uaXNXaW5kb3dlZCgpID8gR0lOVF9UT19QT0lO
VEVSKG1fbnBXaW5kb3dJRCkgOiBudWxscHRyOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyNlbmRpZgorfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luWDExOjpnZW9tZXRyeURpZENoYW5nZSgp
Cit7CisgICAgaWYgKG1fcGx1Z2luLmlzV2luZG93ZWQoKSkgewogICAgICAgICB1aW50NjRfdCB3
aW5kb3dJRCA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB3aW5kb3dJRCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRv
dyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNlbmRpZgotICAgICAgICBj
b250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3RJ
bldpbmRvd0Nvb3JkaW5hdGVzLCBtX2NsaXBSZWN0LCB3aW5kb3dJRCk7CisgICAgICAgIG1fcGx1
Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX3BsdWdp
bi5mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCksIG1fcGx1Z2luLmNsaXBSZWN0KCksIHdp
bmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZHJhd2FibGUucmVzZXQo
KTsKLSAgICBpZiAobV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKKyAgICBpZiAobV9wbHVnaW4uc2l6
ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3YWJsZSA9IFhDcmVh
dGVQaXhtYXAoeDExSG9zdERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53
aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBtX2Ry
YXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93SUQoKSwg
bV9wbHVnaW4uc2l6ZSgpLndpZHRoKCksIG1fcGx1Z2luLnNpemUoKS5oZWlnaHQoKSwgZGlzcGxh
eURlcHRoKCkpOwogICAgIFhTeW5jKHgxMUhvc3REaXNwbGF5KCksIGZhbHNlKTsgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUuCiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCit2b2lkIE5ldHNj
YXBlUGx1Z2luWDExOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIHsKLSAgICBpZiAoIW1faXNXaW5k
b3dlZCkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQo
KSk7CiAgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICB3
aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19n
ZXRfc29ja2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKICNl
bmRpZgotICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdl
KG1faXNWaXNpYmxlLCB3aW5kb3dJRCk7Ci0gICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdp
bkdlb21ldHJ5RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgbV9jbGlw
UmVjdCwgd2luZG93SUQpOworICAgIG1fcGx1Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVn
aW5WaXNpYmlsaXR5RGlkQ2hhbmdlKG1fcGx1Z2luLmlzVmlzaWJsZSgpLCB3aW5kb3dJRCk7Cisg
ICAgbV9wbHVnaW4uY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdl
KG1fcGx1Z2luLmZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSwgbV9wbHVnaW4uY2xpcFJl
Y3QoKSwgd2luZG93SUQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29s
IC8qaXNTbmFwc2hvdCovKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgaWYgKG1f
aXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzU3RhcnRlZCkgewot
ICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50IGEgbWlzc2luZyBwbHVnaW4gaWNvbi4K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgp
KTsKIAogICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhbV9kcmF3YWJsZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDE0ICsyOTMsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRpcnQKICAgICBleHBvc2VFdmVudC53aWR0aCA9IGV4cG9zZWRSZWN0LndpZHRoKCk7CiAgICAg
ZXhwb3NlRXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QuaGVpZ2h0KCk7CiAKLSAgICBOUFBfSGFu
ZGxlRXZlbnQoJnhldmVudCk7CisgICAgbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4ZXZlbnQp
OwogCiAgICAgaWYgKG1fcGx1Z2luRGlzcGxheSAhPSB4MTFIb3N0RGlzcGxheSgpKQogICAgICAg
ICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1f
cGx1Z2luRGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8TlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwgbV9w
bHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBtX3Nl
dFdpbmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCwgbV9wbHVnaW4uc2l6ZSgpLndpZHRoKCksIG1f
cGx1Z2luLnNpemUoKS5oZWlnaHQoKSkpOwogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIApAQCAtMzQyLDcgKzMy
Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplWEV2ZW50KFhFdmVudCYgZXZlbnQp
CiAgICAgbWVtc2V0KCZldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogICAgIGV2ZW50Lnhhbnku
c2VyaWFsID0gMDsKICAgICBldmVudC54YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsKLSAgICBldmVu
dC54YW55LmRpc3BsYXkgPSBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKTsKKyAgICBl
dmVudC54YW55LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwogICAgIGV2ZW50Lnhhbnkud2lu
ZG93ID0gMDsKIH0KIApAQCAtNDQwLDE1ICs0MjAsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0
WENyb3NzaW5nRXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNvbnN0IFdlYk1vdXNlRXZlbnQm
CiAgICAgeENyb3NzaW5nLmZvY3VzID0gZmFsc2U7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jv
b2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93biB8fCBldmVu
dC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXApCi0gICAgICAgICAmJiBldmVudC5idXR0b24o
KSA9PSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgotICAgICAgICAgJiYgcXVpcmtzKCkuY29u
dGFpbnMoUGx1Z2luUXVpcmtzOjpJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsK
IAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwpAQCAt
NDU2LDEwICs0MzAsMTAgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3Vz
ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIHN3aXRjaCAoZXZlbnQudHlw
ZSgpKSB7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgIGNhc2UgV2ViRXZlbnQ6
Ok1vdXNlVXA6Ci0gICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBj
b252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CisgICAgICAgIHNldFhCdXR0b25FdmVudEZp
ZWxkcyh4RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgp
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlTW92ZToKLSAgICAg
ICAgc2V0WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIGNvbnZlcnRUb1Jvb3RWaWV3
KEludFBvaW50KCkpKTsKKyAgICAgICAgc2V0WE1vdGlvbkV2ZW50RmllbGRzKHhFdmVudCwgZXZl
bnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VGb3JjZUNoYW5nZWQ6CiAgICAgY2FzZSBXZWJF
dmVudDo6TW91c2VGb3JjZURvd246CkBAIC00NzksNyArNDUzLDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxl
RXZlbnQoJnhFdmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhF
dmVudCk7CiB9CiAKIC8vIFdlIHVuZGVmaW5lIHRoZXNlIGNvbnN0YW50cyBpbiBucHJ1bnRpbWVf
aW50ZXJuYWwuaCB0byBhdm9pZCBjb2xsaXNpb24KQEAgLTQ4OSwyMiArNDYzLDIwIEBAIGNvbnN0
IGludCBrS2V5UmVsZWFzZVR5cGUgPSAzOwogY29uc3QgaW50IGtGb2N1c0luVHlwZSA9IDk7CiBj
b25zdCBpbnQga0ZvY3VzT3V0VHlwZSA9IDEwOwogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybUhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCitib29sIE5l
dHNjYXBlUGx1Z2luWDExOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2
ZW50KQogewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBBU1NFUlQobV9wbHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAg
ICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhCdXR0b25FdmVudEZpZWxkc0J5
V2ViV2hlZWxFdmVudCh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgp
KSk7CisgICAgc2V0WEJ1dHRvbkV2ZW50RmllbGRzQnlXZWJXaGVlbEV2ZW50KHhFdmVudCwgZXZl
bnQsIG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpKTsKIAotICAgIHJldHVy
biAhTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hh
bmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNl
dEZvY3VzKGJvb2wgZm9jdXNJbikKK3ZvaWQgTmV0c2NhcGVQbHVnaW5YMTE6OnNldEZvY3VzKGJv
b2wgZm9jdXNJbikKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm47Cisg
ICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50Owog
ICAgIGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKQEAgLTUxMywzNiArNDg1LDI5IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtU2V0Rm9jdXMoYm9vbCBmb2N1c0luKQogICAgIGZvY3Vz
RXZlbnQubW9kZSA9IE5vdGlmeU5vcm1hbDsKICAgICBmb2N1c0V2ZW50LmRldGFpbCA9IE5vdGlm
eURldGFpbE5vbmU7CiAKLSAgICBOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7Ci19Ci0KLWJvb2wg
TmV0c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3JkaW5hdGVzKCkK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVu
dCk7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFbnRlckV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdpblgxMTo6
aGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAg
IGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9w
bHVnaW4uaXNXaW5kb3dlZCgpKTsKIAogICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6
ZVhFdmVudCh4RXZlbnQpOwotICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZl
bnQsIGNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBFbnRlck5vdGlmeSk7CisgICAgc2V0
WENyb3NzaW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVydFRvUm9v
dFZpZXcoSW50UG9pbnQoKSksIEVudGVyTm90aWZ5KTsKIAotICAgIHJldHVybiAhTlBQX0hhbmRs
ZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hhbmRsZUV2ZW50KCZ4
RXZlbnQpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVh
dmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Y
MTE6OmhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsK
LSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
KG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGluaXRp
YWxpemVYRXZlbnQoeEV2ZW50KTsKLSAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyh4RXZlbnQs
IGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwgTGVhdmVOb3RpZnkpOworICAg
IHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQsIG1fcGx1Z2luLmNvbnZlcnRU
b1Jvb3RWaWV3KEludFBvaW50KCkpLCBMZWF2ZU5vdGlmeSk7CiAKLSAgICByZXR1cm4gIU5QUF9I
YW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVu
dCgmeEV2ZW50KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhY
RXZlbnQmIHhFdmVudCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViRXZlbnQpCkBAIC01NjUs
OCArNTMwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFhLZXlFdmVudEZpZWxkcyhYRXZlbnQm
IHhFdmVudCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2UKICAgICB4S2V5Lnlfcm9vdCA9IDA7
CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK2Jvb2wgTmV0c2NhcGVQbHVnaW5YMTE6Omhh
bmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CisgICAg
QVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAgICAgLy8gV2UgZG9uJ3QgZ2VuZXJhdGUg
b3RoZXIgdHlwZXMgb2Yga2V5Ym9hcmQgZXZlbnRzIHZpYSBXZWJFdmVudEZhY3RvcnkuCiAgICAg
QVNTRVJUKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biB8fCBldmVudC50eXBlKCkg
PT0gV2ViRXZlbnQ6OktleVVwKTsKIApAQCAtNTc0LDcgKzU0MCw3IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50
JiBldmVudCkKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7CiAgICAgc2V0WEtleUV2ZW50
RmllbGRzKHhFdmVudCwgZXZlbnQpOwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQoJnhF
dmVudCk7CisgICAgcmV0dXJuICFtX3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZjkzZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXRzY2FwZVBs
dWdpblgxMV9oCisjZGVmaW5lIE5ldHNjYXBlUGx1Z2luWDExX2gKKworI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luVW5peC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBOZXRzY2FwZVBsdWdpbjsKKworY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWw6IHB1Ymxp
YyBOZXRzY2FwZVBsdWdpblVuaXggeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0c2NhcGVQbHVnaW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOworICAgIE5ldHNj
YXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOworI2lmIFBMQVRGT1JNKEdU
SykKKyAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYsIERpc3BsYXkqLCB1aW50
NjRfdCB3aW5kb3dJRCk7CisjZW5kaWYKKyAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdpblgxMSgp
OworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIE5QV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkKiB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdpbmRvd1N5c3RlbUluZm8oKSBv
dmVycmlkZSB7IHJldHVybiAmbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdDsgfQorICAgIHZpcnR1
YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB2
aXNpYmlsaXR5RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2Vi
V2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVy
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CisK
KyAgICBOZXRzY2FwZVBsdWdpbiYgbV9wbHVnaW47CisgICAgRGlzcGxheSogbV9wbHVnaW5EaXNw
bGF5IHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsK
KyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0IG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHVpbnQ2NF90IG1fd2luZG93SUQgeyAwIH07CisgICAg
dW5zaWduZWQgbG9uZyBtX25wV2luZG93SUQgeyAwIH07CisgICAgR3RrV2lkZ2V0KiBtX3BsYXRm
b3JtUGx1Z2luV2lkZ2V0IHsgbnVsbHB0ciB9OworI2VuZGlmCit9OworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKworI2VuZGlmIC8v
IE5ldHNjYXBlUGx1Z2luWDExX2gK
</data>
<flag name="review"
          id="295316"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270557</attachid>
            <date>2016-02-02 23:34:45 -0800</date>
            <delta_ts>2016-02-02 23:34:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-npapi-plugins-wayland.diff</filename>
            <type>text/plain</type>
            <size>44223</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNTk4NWFkLi5mMDNmMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTYtMDItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93bGVzcyBOUEFQSSBwbHVn
aW5zIHdpdGggbm8gVUkgaW4gbm9uIFgxMSBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlIGFyZSBjdXJyZW50bHkgZGlzYWJsaW5nIGFsbCBw
bHVnaW5zIHdoZW4gcnVubmluZyB1bmRlciB3YXlsYW5kLAorICAgICAgICBmb3IgZXhhbXBsZS4g
VGhlcmUgYXJlIHNvbWUgcGx1Z2lucywgbGlrZSB0aGUgb25lIHVzZWQgYnkKKyAgICAgICAgZXh0
ZW5zaW9ucy5nbm9tZS5vcmcsIHRoYXQgZG9uJ3QgZG8gYW55IHJlbmRlcmluZywgc28gdGhlcmUn
cyBub3QKKyAgICAgICAgcmVhc29uIG5vdCB0byBzdXBwb3J0IHRob3NlIHBsdWdpbnMgdW5kZXIg
d2F5bGFuZCBvciBhbnkgb3RoZXIKKyAgICAgICAgdW5peCBub24teDExIHBsYXRmb3JtLgorICAg
ICAgICBYMTEgc3BlY2lmaWMgY29kZSBoYXMgYmVlbiBtb3ZlZCB0byBhIG5ldyBjbGFzcyBOZXRz
Y2FwZVBsdWdpblgxMSwKKyAgICAgICAgb25seSB1c2VkIHVuZGVyIFgxMS4gVGhlIGNvbW1vbiBj
b2RlIGlzIGluIE5ldHNjYXBlUGx1Z2luVW5peC5jcHAKKyAgICAgICAgdGhhdCB3aWxsIHVzZSB0
aGUgWDExIGltcGxlbWVudGF0aW4gb25seSB3aGVuIG5lZWRlZCBhbmQKKyAgICAgICAgYXZhaWxh
YmxlLiBGb3Igd2luZG93ZWQgcGx1Z2lucyB3ZSB3aWxsIGZhaWwgdGhlIGluaXRpYWxpemF0aW9u
CisgICAgICAgIHVuZGVyIG5vbi1YMTEgcGxhZm9ybXMsIHdoaWxlIGZvciB3aW5kb3dsZXNzIHBs
dWdpbnMgd2Ugd2lsbCBqdXN0CisgICAgICAgIHJldHVybiBlYXJseSBmcm9tIHBhaW50IG1ldGhv
ZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKTogRG8gbm90IGRpc2FibGUgcGx1Z2lucyBpbiB3YXls
YW5kLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUpOiBE
aXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOiBVc2UgUGxhdGZv
cm1EaXNwbGF5IGluc3RlYWQgb2YKKyAgICAgICAgTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNw
bGF5KCkgYW5kIGRvbid0IGNsYWltIHRvIHN1cHBvcnQgWDExCisgICAgICAgIHNwZWNpZmljIGZl
YXR1cmVzIHVuZGVyIG5vbi14MTEgcGxhdGZvcm1zLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbik6IFJlbW92ZSBYMTEgYW5kIEdUSworICAgICAgICBz
cGVjaWZpYyBtZW1lYmVycyB0aGF0IGFyZSBub3cgbW92ZWQgdG8gYSBkZWRpY2F0ZWQgY2xhc3Mg
TmV0c2NhcGVQbHVnaW5YMTEuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpmcmFt
ZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKTogTWFrZSB0aGlzIHB1YmxpYy4KKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OmNsaXBSZWN0KTogQWRkIGdldHRlci4KKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OmlzV2luZG93ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OmlzVmlzaWJsZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1TZXRGb2N1cyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp3YW50c1BsdWdpblJlbGF0aXZlTlBXaW5kb3dD
b29yZGluYXRlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhh
bmRsZU1vdXNlRW50ZXJFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Vbml4Ojp+TmV0c2NhcGVQbHVnaW5Vbml4KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0UGx1Z2luRGlzcGxheSk6CisgICAgICAgIChX
ZWJLaXQ6OmRpc3BsYXlEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OngxMUhvc3REaXNwbGF5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjp+TmV0c2NhcGVQbHVnaW5YMTEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6d2luZG93VHlwZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpblgxMTo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpblgxMTo6dmlzaWJpbGl0eURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luWDExOjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVYRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlTW91c2VFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OnNldEZvY3VzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRW50ZXJFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OnNldENvbW1vbk1vdXNlRXZlbnRGaWVsZHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpzZXRYS2V5RXZlbnRGaWVsZHMpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaDogQWRkZWQu
CisKIDIwMTYtMDItMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBFTkFCTEUoR0xPQkFMX0ZBU1RNQUxMT0NfTkVXKSBndWFyZCBpbiBX
ZWJNZW1vcnlTYW1wbGVyTGludXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDk3
ZjY4MGIuLjljMGFhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yMDAsNiArMjAw
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjczLDYg
KzI3NCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGYyYTkzYTkuLmMwMTBiZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zMzgsNiArMzM4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNj
YXBlUGx1Z2luVW5peC5jcHAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9Q
bHVnaW5Qcm94eVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtNTI0LDYgKzUyNSw4IEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
Z3RrIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIgorICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMSIKICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy91bml4IgpAQCAtNzkzLDYgKzc5Niw3IEBAIGlm
IChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTm9uZS5jcHAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAogCisgICAgICAgIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5jcHAKICAgICAgICAg
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAog
ICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IDNlMGM0ODguLjlkMjEzM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5j
cHAKQEAgLTE1OTQsMTIgKzE1OTQsNiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X3BsdWdpbnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibAogewogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKLSNpZiBQ
TEFURk9STShXQVlMQU5EKQotICAgIC8vIERvIG5vdCBhbGxvdyB0byBjaGFuZ2UgdGhpcyBzZXR0
aW5nIGluIFdheWxhbmQsIHNpbmNlIHBsdWdpbnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgaWYg
KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCi0gICAgICAgIHJldHVybjsKLSNl
bmRpZgotCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
CiAgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJs
ZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4IGU0YTBiN2Eu
LmM3MjQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJl
ZmVyZW5jZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJl
ZmVyZW5jZXNHdGsuY3BwCkBAIC0zOSw4ICszOSw2IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBs
YXRmb3JtSW5pdGlhbGl6ZVN0b3JlKCkKICAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIHVuZGVyIFdheWxhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKICAgICAgICAg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwotCi0gICAgICAgIHNldFBs
dWdpbnNFbmFibGVkKGZhbHNlKTsKICAgICB9CiAjZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDM5MzczM2IuLmQwODU3
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDUsNiArNDUs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCisjaWYg
UExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3Bs
YXlYMTEuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01MjQsMTggKzUyOCwyMSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFs
dWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAg
ICAgYnJlYWs7CiAjZW5kaWYKICNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgICAg
IGNhc2UgTlBOVnhEaXNwbGF5OiB7Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAg
ICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICAgICpyZWludGVycHJldF9j
YXN0PERpc3BsYXkqKj4odmFsdWUpID0gTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCk7
Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgIH0KLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1hF
bWJlZEJvb2w6Ci0gICAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVl
OwotICAgICAgICAgICBicmVhazsKLSAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6
Ci0gICAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgICAgIGlm
ICghbnBwKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAg
ICAgICAgICAgYXV0byYgZGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
OworICAgICAgICAgICAgaWYgKGRpc3BsYXkudHlwZSgpICE9IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6WDExKQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAg
ICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheSoqPih2YWx1ZSkgPSBkb3duY2FzdDxQ
bGF0Zm9ybURpc3BsYXlYMTE+KGRpc3BsYXkpLm5hdGl2ZSgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgorICAgICAg
ICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CisgICAg
ICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDogewogICAgICAgICAgICAvLyBHdGsg
YmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQgYWJvdXQgdGhlIHRvb2xraXQgdmVyc2lv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDExMjdkMTIuLjI0ODM5ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDx1dGls
aXR5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMVUdJTl9BUkNISVRF
Q1RVUkUoWDExKQorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luVW5peC5oIgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkwLDEyICs5
NCw2IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbihQYXNzUmVmUHRyPE5ldHNjYXBl
UGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAgICAgLCBtX251bGxFdmVudFRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1Z2luOjpudWxsRXZlbnRUaW1lckZpcmVkKQog
ICAgICwgbV9ucENHQ29udGV4dCgpCiAjZW5kaWYKLSNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUo
WDExKQotICAgICwgbV9kcmF3YWJsZSgwKQotICAgICwgbV9wbHVnaW5EaXNwbGF5KDApCi0jaWYg
UExBVEZPUk0oR1RLKQotICAgICwgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCgwKQotI2VuZGlmCiAj
ZW5kaWYKIHsKICAgICBtX25wcC5uZGF0YSA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmlu
ZGV4IDRmOTJkOGYuLjc3YzVjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0zOCwxMCAr
MzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSNpbmNsdWRl
IDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtNTQsNyAr
NTAsOCBAQCBPQkpDX0NMQVNTIFdLTlBBUElQbHVnSW5Db250YWluZXI7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5TdHJlYW07Ci0gICAgCitjbGFzcyBOZXRzY2Fw
ZVBsdWdpblVuaXg7CisKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKQEAgLTk1LDYgKzkyLDEyIEBAIHB1YmxpYzoKIAog
I2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzOyB9CisjZW5kaWYKKyAgICBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5T
aXplOyB9CisKICAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoY29uc3Qg
TlBSZWN0Kik7CkBAIC0xMDksNiArMTEyLDggQEAgcHVibGljOgogICAgIGJvb2wgZXZhbHVhdGUo
TlBPYmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7
CiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBib29sIGlzTXV0ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzV2luZG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2luZG93
ZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTZXRFeGNlcHRpb25GdW5jdGlvbih2b2lkICgqKShjb25z
dCBTdHJpbmcmKSk7CiAKQEAgLTE1NSw2ICsxNjAsOSBAQCBwdWJsaWM6CiAgICAgTlBFcnJvciBO
UFBfR2V0VmFsdWUoTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKICAgICBOUEVycm9yIE5QUF9T
ZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCAqdmFsdWUpOwogCisgICAgLy8gQ29udmVydCB0aGUg
Z2l2ZW4gcG9pbnQgZnJvbSBwbHVnLWluIGNvb3JkaW5hdGVzIHRvIHJvb3QgdmlldyBjb29yZGlu
YXRlcy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9k
dWxlKTsKIApAQCAtMjU4LDkgKzI2Niw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIENvbnZlcnQg
dGhlIGdpdmVuIHBvaW50IGZyb20gcGx1Zy1pbiBjb29yZGluYXRlcyB0byByb290IHZpZXcgY29v
cmRpbmF0ZXMuCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgLy8gQ29u
dmVydCB0aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1p
biBjb29yZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUKICAgICAv
LyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJs
ZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Q
bHVnaW5Db29yZGluYXRlcyk7CkBAIC0yNzcsMTEgKzI4Miw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKLSAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpOwotI2VuZGlmCi0KICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPj4g
UGVuZGluZ1VSTE5vdGlmeU1hcDsKQEAgLTM5NCwxNCArMzk0LDcgQEAgcHJpdmF0ZToKICAgICBO
UF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCi0gICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwotICAgIERp
c3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgR3RrV2lkZ2V0
KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwotI2VuZGlmCi0KLXB1YmxpYzogLy8gTmVlZCB0byBj
YWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KLSAgICBzdGF0aWMg
RGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQ
bHVnaW5Vbml4PiBtX2ltcGw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIz
OTZiMGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Vbml4LmNwcApAQCAtMCwwICsxLDE2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKKworI2lmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2lu
Y2x1ZGUgIk5ldHNjYXBlUGx1Z2luWDExLmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bURpc3BsYXkuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUoKQorewor
fQorCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplKCkKK3sKKyNp
ZiBQTEFURk9STShYMTEpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgeworICAgICAgICBtX2ltcGwg
PSBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgaWYgKCFtX2ltcGwp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1fbnBXaW5kb3cudHlwZSA9IG1faW1wbC0+d2luZG93VHlwZSgpOwor
ICAgICAgICBtX25wV2luZG93LndpbmRvdyA9IG1faW1wbC0+d2luZG93KCk7CisgICAgICAgIG1f
bnBXaW5kb3cud3NfaW5mbyA9IG1faW1wbC0+d2luZG93U3lzdGVtSW5mbygpOworICAgICAgICBj
YWxsU2V0V2luZG93KCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgbV9pbXBsID0gbnVsbHB0cjsK
K30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IEludFJl
Y3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKK3sKKyAgICBp
ZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW1wbC0+Z2VvbWV0cnlEaWRDaGFu
Z2UoKTsKK30KKwordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hh
bmdlKCkKK3sKKyAgICBpZiAoIW1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ltcGwtPnZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCAvKmlzU25hcHNob3QqLykKK3sKKyAgICBpZiAobV9p
c1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9pc1N0
YXJ0ZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwYWludCBhIG1pc3NpbmcgcGx1
Z2luIGljb24uCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ltcGwtPnBhaW50KGNv
bnRleHQsIGRpcnR5UmVjdCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFu
ZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9p
c1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgo
ZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gfHwgZXZlbnQudHlwZSgpID09IFdl
YkV2ZW50OjpNb3VzZVVwKQorICAgICAgICAmJiBldmVudC5idXR0b24oKSA9PSBXZWJNb3VzZUV2
ZW50OjpSaWdodEJ1dHRvbgorICAgICAgICAmJiBxdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWly
a3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIG1faW1wbC0+aGFuZGxlTW91c2VFdmVudChldmVudCk7Cit9CisK
K2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJX
aGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRsZVdoZWVsRXZl
bnQoZXZlbnQpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKGJv
b2wgZm9jdXNJbikKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAgICAg
IHJldHVybjsKKworICAgIG1faW1wbC0+c2V0Rm9jdXMoZm9jdXNJbik7Cit9CisKK2Jvb2wgTmV0
c2NhcGVQbHVnaW46OndhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3JkaW5hdGVzKCkKK3sK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5k
bGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYg
KG1faXNXaW5kb3dlZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9pbXBsLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoZXZlbnQpOworfQorCitib29sIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkIHx8ICFtX2ltcGwpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ltcGwtPmhhbmRsZU1vdXNlTGVhdmVF
dmVudChldmVudCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5
Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICAvLyBXZSBk
b24ndCBnZW5lcmF0ZSBvdGhlciB0eXBlcyBvZiBrZXlib2FyZCBldmVudHMgdmlhIFdlYkV2ZW50
RmFjdG9yeS4KKyAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duIHx8
IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApOworCisgICAgaWYgKG1faXNXaW5kb3dl
ZCB8fCAhbV9pbXBsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9pbXBs
LT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkgJiYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpblVuaXguaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luVW5peC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTZjZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2Fw
ZVBsdWdpblVuaXguaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKyNk
ZWZpbmUgTmV0c2NhcGVQbHVnaW5Vbml4X2gKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDEx
KSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUgPFdlYkNvcmUvbnBy
dW50aW1lX2ludGVybmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYldoZWVs
RXZlbnQ7CisKK2NsYXNzIE5ldHNjYXBlUGx1Z2luVW5peCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+TmV0c2NhcGVQbHVnaW5Vbml4KCkgeyB9CisgICAgdmlydHVhbCBOUFdpbmRvd1R5cGUgd2lu
ZG93VHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQqIHdpbmRvdygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdpbmRvd1N5c3RlbUlu
Zm8oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdlKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2Vi
V2hlZWxFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFbnRlckV2ZW50
KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNl
TGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpICYmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQorCisjZW5kaWYgLy8gTmV0c2NhcGVQbHVnaW5Vbml4X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggMzgwMjg5Ny4uYjViNTQ4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTI1LDEwICsyNSwxMSBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpblgx
MS5oIgorCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpICYmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKLQogI2luY2x1ZGUgIlBs
dWdpbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC01Nyw2ICs1OCwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBpbmxpbmUgRGlzcGxheSog
eDExSG9zdERpc3BsYXkoKQoreworICAgIHJldHVybiBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKK30KKwogc3Rh
dGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXkoKQogewogI2lmIFBMQVRGT1JNKEdUSykKQEAg
LTY2LDcgKzcyLDcgQEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXkoKQogI2VsaWYg
UExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAgLTg2LDcgKzkyLDcgQEAg
c3RhdGljIGlubGluZSBpbnQgZGlzcGxheURlcHRoKCkKICNpZiBQTEFURk9STShHVEspCiAgICAg
cmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwo
Z2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7CiAjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmlu
ZWQoSEFWRV9FQ09SRV9YKQotICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0KE5l
dHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVuX2dl
dCgpKTsKKyAgICByZXR1cm4gZWNvcmVfeF9kZWZhdWx0X2RlcHRoX2dldCh4MTFIb3N0RGlzcGxh
eSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7
CiAjZW5kaWYKQEAgLTEwMywxMSArMTA5LDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n
IHJvb3RXaW5kb3dJRCgpCiAjZW5kaWYKIH0KIAotRGlzcGxheSogTmV0c2NhcGVQbHVnaW46Ongx
MUhvc3REaXNwbGF5KCkKLXsKLSAgICByZXR1cm4gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDEx
PihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci19Ci0KICNpZiBQ
TEFURk9STShHVEspCiBzdGF0aWMgZ2Jvb2xlYW4gc29ja2V0UGx1Z1JlbW92ZWRDYWxsYmFjayhH
dGtTb2NrZXQqKQogewpAQCAtMTE5LDE4MCArMTIwLDE1OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gc29j
a2V0UGx1Z1JlbW92ZWRDYWxsYmFjayhHdGtTb2NrZXQqKQogfQogI2VuZGlmCiAKLWJvb2wgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCkKK3N0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgx
MT4gTmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1Z2luKQogewot
ICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZVdpbmRvdzsKLSAgICBpZiAoIW5lZWRz
WEVtYmVkKSB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsK
KyNlbmRpZgorICAgIGlmIChwbHVnaW4uaXNXaW5kb3dlZCgpKSB7CisjaWYgUExBVEZPUk0oR1RL
KQorICAgICAgICAvLyBOUFBWcGx1Z2lOZWVkc1hFbWJlZCBpcyBhIGJvb2xlYW4gdmFsdWUsIGJ1
dCBhdCBsZWFzdCB0aGUKKyAgICAgICAgLy8gRmxhc2ggcGxheWVyIHBsdWdpbiBpcyB1c2luZyBh
biAnaW50JyBpbnN0ZWFkLgorICAgICAgICBpbnQgbmVlZHNYRW1iZWQgPSAwOworICAgICAgICBw
bHVnaW4uTlBQX0dldFZhbHVlKE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm5lZWRzWEVtYmVkKTsK
KyAgICAgICAgaWYgKG5lZWRzWEVtYmVkKSB7CisgICAgICAgICAgICB3aW5kb3dJRCA9IHBsdWdp
bi5jb250cm9sbGVyKCktPmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworICAgICAgICAgICAgaWYg
KCF3aW5kb3dJRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAg
IH0KIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOworICAgIERpc3Bs
YXkqIGRpc3BsYXkgPSBnZXRQbHVnaW5EaXNwbGF5KCk7CisgICAgaWYgKCFkaXNwbGF5KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAvLyBJdCBzZWVt
cyBmbGFzaCBuZWVkcyB0aGUgc29ja2V0IHRvIGJlIGluIHRoZSBzYW1lIHByb2Nlc3MsCi0gICAg
Ly8gSSBndWVzcyBpdCB1c2VzIGdka193aW5kb3dfbG9va3VwKCksIHNvIHdlIGNyZWF0ZSBhIG5l
dyBzb2NrZXQgaGVyZQotICAgIC8vIGNvbnRhaW5pbmcgYSBwbHVnIHdpdGggdGhlIFVJIHByb2Nl
c3Mgc29ja2V0IGVtYmVkZGVkLgotICAgIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQgPSBndGtfcGx1
Z19uZXcoc3RhdGljX2Nhc3Q8V2luZG93Pih3aW5kb3dJRCkpOwotCi0gICAgLy8gSGlkZSB0aGUg
R3RrUGx1ZyBvbiBkZWxldGUtZXZlbnQgc2luY2Ugd2UgYXNzdW1lIHRoZSB3aWRnZXQgaXMgdmFs
aWQgd2hpbGUgdGhlIHBsdWdpbiBpcyBhY3RpdmUuCi0gICAgLy8gcGxhdGZvcm1EZXN0cm95KCkg
d2lsbCBiZSBjYWxsZWQgYW55d2F5IHJpZ2h0IGFmdGVyIHRoZSBkZWxldGUtZXZlbnQuCi0gICAg
Z19zaWduYWxfY29ubmVjdChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0LCAiZGVsZXRlLWV2ZW50Iiwg
R19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGVfb25fZGVsZXRlKSwgbnVsbHB0cik7Ci0KLSAgICBH
dGtXaWRnZXQqIHNvY2tldCA9IGd0a19zb2NrZXRfbmV3KCk7Ci0gICAgLy8gRG8gbm90IHNob3cg
dGhlIHBsdWcgd2lkZ2V0IHVudGlsIHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkLgotICAgIGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZChzb2NrZXQsICJwbHVnLWFkZGVkIiwgR19DQUxMQkFDSyhndGtf
d2lkZ2V0X3Nob3cpLCBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KTsKLSAgICBnX3NpZ25hbF9jb25u
ZWN0KHNvY2tldCwgInBsdWctcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soc29ja2V0UGx1Z1JlbW92ZWRD
YWxsYmFjayksIG51bGxwdHIpOwotICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIo
bV9wbGF0Zm9ybVBsdWdpbldpZGdldCksIHNvY2tldCk7Ci0gICAgZ3RrX3dpZGdldF9zaG93KHNv
Y2tldCk7Ci0KLSAgICBtX25wV2luZG93LndpbmRvdyA9IEdJTlRfVE9fUE9JTlRFUihndGtfc29j
a2V0X2dldF9pZChHVEtfU09DS0VUKHNvY2tldCkpKTsKLSAgICBHZGtXaW5kb3cqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhzb2NrZXQpOwotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0
cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkg
PSBHREtfV0lORE9XX1hESVNQTEFZKHdpbmRvdyk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3Vh
bCA9IEdES19WSVNVQUxfWFZJU1VBTChnZGtfd2luZG93X2dldF92aXN1YWwod2luZG93KSk7Ci0g
ICAgY2FsbGJhY2tTdHJ1Y3QtPmRlcHRoID0gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3dpbmRv
d19nZXRfdmlzdWFsKHdpbmRvdykpOwotICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhD
cmVhdGVDb2xvcm1hcChkaXNwbGF5LCBHREtfUk9PVF9XSU5ET1coKSwgY2FsbGJhY2tTdHJ1Y3Qt
PnZpc3VhbCwgQWxsb2NOb25lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdpbmRvd0lEKTsK
KyAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSwgd2luZG93SUQpOwogI2Vu
ZGlmCiAKLSAgICBYRmx1c2goZGlzcGxheSk7Ci0KLSAgICBjYWxsU2V0V2luZG93KCk7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdp
blgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKQorTmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBl
UGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRpc3BsYXkpCisgICAg
OiBtX3BsdWdpbihwbHVnaW4pCisgICAgLCBtX3BsdWdpbkRpc3BsYXkoZGlzcGxheSkKIHsKLSAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKLSAgICBtX25wV2luZG93LnR5
cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKLSAgICBtX25wV2luZG93LndpbmRvdyA9IDA7Ci0K
KyAgICBEaXNwbGF5KiBob3N0RGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CiAgICAgaW50IGRl
cHRoID0gZGlzcGxheURlcHRoKCk7Ci0KLSAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBj
YWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPiht
X25wV2luZG93LndzX2luZm8pOwotICAgIGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gZGlzcGxh
eTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGVwdGggPSBkZXB0aDsKKyAgICBtX3NldFdpbmRvd0Nh
bGxiYWNrU3RydWN0LmRpc3BsYXkgPSBob3N0RGlzcGxheTsKKyAgICBtX3NldFdpbmRvd0NhbGxi
YWNrU3RydWN0LmRlcHRoID0gZGVwdGg7CiAKICAgICBYVmlzdWFsSW5mbyB2aXN1YWxUZW1wbGF0
ZTsKICAgICB2aXN1YWxUZW1wbGF0ZS5zY3JlZW4gPSB4MTFTY3JlZW4oKTsKICAgICB2aXN1YWxU
ZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZpc3VhbFRlbXBsYXRlLmNfY2xhc3MgPSBUcnVl
Q29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwotICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+
IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZp
c3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0
Y2hpbmcpKTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1
YWxJbmZvKGhvc3REaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwg
VmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykpOwogICAgIEFT
U0VSVCh2aXN1YWxJbmZvKTsKICAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbEluZm8uZ2V0KClb
MF0udmlzdWFsOwogICAgIEFTU0VSVCh2aXN1YWwpOwogCi0gICAgY2FsbGJhY2tTdHJ1Y3QtPnZp
c3VhbCA9IHZpc3VhbDsKLSAgICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29s
b3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKLQotICAg
IGNhbGxTZXRXaW5kb3coKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE5ldHNjYXBl
UGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUoKQoteworICAgIG1fc2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3QudmlzdWFsID0gdmlzdWFsOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Qu
Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoaG9zdERpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2
aXN1YWwsIEFsbG9jTm9uZSk7CiB9CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9z
dEluaXRpYWxpemUoKQorI2lmIFBMQVRGT1JNKEdUSykKK05ldHNjYXBlUGx1Z2luWDExOjpOZXRz
Y2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5LCB1
aW50NjRfdCB3aW5kb3dJRCkKKyAgICA6IG1fcGx1Z2luKHBsdWdpbikKKyAgICAsIG1fcGx1Z2lu
RGlzcGxheShkaXNwbGF5KQorICAgICwgbV93aW5kb3dJRCh3aW5kb3dJRCkKIHsKLSAgICB1aW50
NjRfdCB3aW5kb3dJRCA9IDA7Ci0gICAgLy8gTlBQVnBsdWdpbk5lZWRzWEVtYmVkIGlzIGEgYm9v
bGVhbiB2YWx1ZSwgYnV0IGF0IGxlYXN0IHRoZQotICAgIC8vIEZsYXNoIHBsYXllciBwbHVnaW4g
aXMgdXNpbmcgYW4gJ2ludCcgaW5zdGVhZC4KLSAgICBpbnQgbmVlZHNYRW1iZWQgPSAwOwotICAg
IGlmIChtX2lzV2luZG93ZWQpIHsKLSAgICAgICAgTlBQX0dldFZhbHVlKE5QUFZwbHVnaW5OZWVk
c1hFbWJlZCwgJm5lZWRzWEVtYmVkKTsKLSAgICAgICAgaWYgKG5lZWRzWEVtYmVkKSB7Ci0gICAg
ICAgICAgICB3aW5kb3dJRCA9IGNvbnRyb2xsZXIoKS0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7
Ci0gICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CisgICAgLy8gSXQgc2VlbXMg
Zmxhc2ggbmVlZHMgdGhlIHNvY2tldCB0byBiZSBpbiB0aGUgc2FtZSBwcm9jZXNzLAorICAgIC8v
IEkgZ3Vlc3MgaXQgdXNlcyBnZGtfd2luZG93X2xvb2t1cCgpLCBzbyB3ZSBjcmVhdGUgYSBuZXcg
c29ja2V0IGhlcmUKKyAgICAvLyBjb250YWluaW5nIGEgcGx1ZyB3aXRoIHRoZSBVSSBwcm9jZXNz
IHNvY2tldCBlbWJlZGRlZC4KKyAgICBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdf
bmV3KHN0YXRpY19jYXN0PFdpbmRvdz4od2luZG93SUQpKTsKIAotICAgIGlmICghKG1fcGx1Z2lu
RGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAvLyBIaWRlIHRoZSBHdGtQbHVnIG9uIGRlbGV0ZS1ldmVudCBzaW5jZSB3ZSBhc3N1bWUgdGhl
IHdpZGdldCBpcyB2YWxpZCB3aGlsZSB0aGUgcGx1Z2luIGlzIGFjdGl2ZS4KKyAgICAvLyBwbGF0
Zm9ybURlc3Ryb3koKSB3aWxsIGJlIGNhbGxlZCBhbnl3YXkgcmlnaHQgYWZ0ZXIgdGhlIGRlbGV0
ZS1ldmVudC4KKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQsICJk
ZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZV9vbl9kZWxldGUpLCBudWxs
cHRyKTsKIAotICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
bmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPnR5cGUg
PSAwOwotICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9IGNhbGxiYWNrU3RydWN0OworICAgIEd0a1dp
ZGdldCogc29ja2V0ID0gZ3RrX3NvY2tldF9uZXcoKTsKKyAgICAvLyBEbyBub3Qgc2hvdyB0aGUg
cGx1ZyB3aWRnZXQgdW50aWwgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQuCisgICAgZ19zaWduYWxf
Y29ubmVjdF9zd2FwcGVkKHNvY2tldCwgInBsdWctYWRkZWQiLCBHX0NBTExCQUNLKGd0a193aWRn
ZXRfc2hvdyksIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
c29ja2V0LCAicGx1Zy1yZW1vdmVkIiwgR19DQUxMQkFDSyhzb2NrZXRQbHVnUmVtb3ZlZENhbGxi
YWNrKSwgbnVsbHB0cik7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3Bs
YXRmb3JtUGx1Z2luV2lkZ2V0KSwgc29ja2V0KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0
KTsKIAotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVBvc3RJ
bml0aWFsaXplV2luZG93ZWQobmVlZHNYRW1iZWQsIHdpbmRvd0lEKTsKKyAgICBEaXNwbGF5KiBo
b3N0RGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CisgICAgbV9ucFdpbmRvd0lEID0gZ3RrX3Nv
Y2tldF9nZXRfaWQoR1RLX1NPQ0tFVChzb2NrZXQpKTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhzb2NrZXQpOworICAgIG1fc2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3QuZGlzcGxheSA9IEdES19XSU5ET1dfWERJU1BMQVkod2luZG93KTsKKyAgICBtX3NldFdp
bmRvd0NhbGxiYWNrU3RydWN0LnZpc3VhbCA9IEdES19WSVNVQUxfWFZJU1VBTChnZGtfd2luZG93
X2dldF92aXN1YWwod2luZG93KSk7CisgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC5kZXB0
aCA9IGdka192aXN1YWxfZ2V0X2RlcHRoKGdka193aW5kb3dfZ2V0X3Zpc3VhbCh3aW5kb3cpKTsK
KyAgICBtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0LmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFw
KGhvc3REaXNwbGF5LCBHREtfUk9PVF9XSU5ET1coKSwgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVj
dC52aXN1YWwsIEFsbG9jTm9uZSk7CiAKLSAgICByZXR1cm4gcGxhdGZvcm1Qb3N0SW5pdGlhbGl6
ZVdpbmRvd2xlc3MoKTsKKyAgICBYRmx1c2goaG9zdERpc3BsYXkpOwogfQorI2VuZGlmCiAKLXZv
aWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCitOZXRzY2FwZVBsdWdpblgxMTo6
fk5ldHNjYXBlUGx1Z2luWDExKCkKIHsKLSAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBj
YWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPiht
X25wV2luZG93LndzX2luZm8pOwotICAgIERpc3BsYXkqIGhvc3REaXNwbGF5ID0geDExSG9zdERp
c3BsYXkoKTsKLSAgICBYRnJlZUNvbG9ybWFwKGhvc3REaXNwbGF5LCBjYWxsYmFja1N0cnVjdC0+
Y29sb3JtYXApOwotICAgIGRlbGV0ZSBjYWxsYmFja1N0cnVjdDsKKyAgICBYRnJlZUNvbG9ybWFw
KHgxMUhvc3REaXNwbGF5KCksIG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QuY29sb3JtYXApOwog
CiAgICAgbV9kcmF3YWJsZS5yZXNldCgpOwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGlmICht
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSB7CisgICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQp
CiAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KTsKLSAg
ICAgICAgbV9wbGF0Zm9ybVBsdWdpbldpZGdldCA9IDA7Ci0gICAgfQogI2VuZGlmCiB9CiAKLWJv
b2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JikKK05Q
V2luZG93VHlwZSBOZXRzY2FwZVBsdWdpblgxMTo6d2luZG93VHlwZSgpIGNvbnN0CiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGx1Z2lu
LmlzV2luZG93ZWQoKSA/IE5QV2luZG93VHlwZVdpbmRvdyA6IE5QV2luZG93VHlwZURyYXdhYmxl
OwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkK
K3ZvaWQqIE5ldHNjYXBlUGx1Z2luWDExOjp3aW5kb3coKSBjb25zdAogewotICAgIGlmIChtX2lz
V2luZG93ZWQpIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgcmV0dXJuIG1fcGx1Z2luLmlzV2lu
ZG93ZWQoKSA/IEdJTlRfVE9fUE9JTlRFUihtX25wV2luZG93SUQpIDogbnVsbHB0cjsKKyNlbHNl
CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBOZXRzY2FwZVBsdWdpblgx
MTo6Z2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX3BsdWdpbi5pc1dpbmRvd2VkKCkp
IHsKICAgICAgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICAgICAgd2luZG93SUQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oR0RLX1dJTkRPV19YSUQoZ3Rr
X3BsdWdfZ2V0X3NvY2tldF93aW5kb3coR1RLX1BMVUcobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkp
KSk7CiAjZW5kaWYKLSAgICAgICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgbV9jbGlwUmVjdCwgd2lu
ZG93SUQpOworICAgICAgICBtX3BsdWdpbi5jb250cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UobV9wbHVnaW4uZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpLCBt
X3BsdWdpbi5jbGlwUmVjdCgpLCB3aW5kb3dJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBtX2RyYXdhYmxlLnJlc2V0KCk7Ci0gICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkp
CisgICAgaWYgKG1fcGx1Z2luLnNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKHgxMUhvc3REaXNwbGF5KCksIHJvb3RXaW5k
b3dJRCgpLCBtX3BsdWdpblNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpLCBkaXNw
bGF5RGVwdGgoKSk7CisgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoeDExSG9zdERpc3Bs
YXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luLnNpemUoKS53aWR0aCgpLCBtX3BsdWdpbi5z
aXplKCkuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKICAgICBYU3luYyh4MTFIb3N0RGlzcGxh
eSgpLCBmYWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQgdGhl
IERyYXdhYmxlLgogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlE
aWRDaGFuZ2UoKQordm9pZCBOZXRzY2FwZVBsdWdpblgxMTo6dmlzaWJpbGl0eURpZENoYW5nZSgp
CiB7Ci0gICAgaWYgKCFtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VS
VChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKICNp
ZiBQTEFURk9STShHVEspCiAgICAgd2luZG93SUQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oR0RL
X1dJTkRPV19YSUQoZ3RrX3BsdWdfZ2V0X3NvY2tldF93aW5kb3coR1RLX1BMVUcobV9wbGF0Zm9y
bVBsdWdpbldpZGdldCkpKSk7CiAjZW5kaWYKLSAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1
Z2luVmlzaWJpbGl0eURpZENoYW5nZShtX2lzVmlzaWJsZSwgd2luZG93SUQpOwotICAgIGNvbnRy
b2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX2ZyYW1lUmVjdEluV2lu
ZG93Q29vcmRpbmF0ZXMsIG1fY2xpcFJlY3QsIHdpbmRvd0lEKTsKKyAgICBtX3BsdWdpbi5jb250
cm9sbGVyKCktPndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShtX3BsdWdpbi5pc1Zp
c2libGUoKSwgd2luZG93SUQpOworICAgIG1fcGx1Z2luLmNvbnRyb2xsZXIoKS0+d2luZG93ZWRQ
bHVnaW5HZW9tZXRyeURpZENoYW5nZShtX3BsdWdpbi5mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5h
dGVzKCksIG1fcGx1Z2luLmNsaXBSZWN0KCksIHdpbmRvd0lEKTsKIH0KIAotdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgYm9vbCAvKmlzU25hcHNob3QqLykKK3ZvaWQgTmV0c2NhcGVQbHVn
aW5YMTE6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0KQogewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghbV9pc1N0YXJ0ZWQpIHsKLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwYWludCBh
IG1pc3NpbmcgcGx1Z2luIGljb24uCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQVNTRVJU
KG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkgfHwgIW1fZHJhd2FibGUpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMywxNCArMjkzLDE0
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAgICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBv
c2VkUmVjdC53aWR0aCgpOwogICAgIGV4cG9zZUV2ZW50LmhlaWdodCA9IGV4cG9zZWRSZWN0Lmhl
aWdodCgpOwogCi0gICAgTlBQX0hhbmRsZUV2ZW50KCZ4ZXZlbnQpOworICAgIG1fcGx1Z2luLk5Q
UF9IYW5kbGVFdmVudCgmeGV2ZW50KTsKIAogICAgIGlmIChtX3BsdWdpbkRpc3BsYXkgIT0geDEx
SG9zdERpc3BsYXkoKSkKICAgICAgICAgWFN5bmMobV9wbHVnaW5EaXNwbGF5LCBmYWxzZSk7CiAK
ICNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9f
eGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksIG1fZHJhd2FibGUuZ2V0KCksCi0g
ICAgICAgIHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93
LndzX2luZm8pLT52aXN1YWwsIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3BsdWdpblNpemUuaGVp
Z2h0KCkpKTsKKyAgICAgICAgbV9zZXRXaW5kb3dDYWxsYmFja1N0cnVjdC52aXN1YWwsIG1fcGx1
Z2luLnNpemUoKS53aWR0aCgpLCBtX3BsdWdpbi5zaXplKCkuaGVpZ2h0KCkpKTsKICAgICBjYWly
b190KiBjciA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2
ZShjcik7CiAKQEAgLTM0Miw3ICszMjIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5pdGlhbGl6
ZVhFdmVudChYRXZlbnQmIGV2ZW50KQogICAgIG1lbXNldCgmZXZlbnQsIDAsIHNpemVvZihYRXZl
bnQpKTsKICAgICBldmVudC54YW55LnNlcmlhbCA9IDA7CiAgICAgZXZlbnQueGFueS5zZW5kX2V2
ZW50ID0gZmFsc2U7Ci0gICAgZXZlbnQueGFueS5kaXNwbGF5ID0gTmV0c2NhcGVQbHVnaW46Ongx
MUhvc3REaXNwbGF5KCk7CisgICAgZXZlbnQueGFueS5kaXNwbGF5ID0geDExSG9zdERpc3BsYXko
KTsKICAgICBldmVudC54YW55LndpbmRvdyA9IDA7CiB9CiAKQEAgLTQ0MCwxNSArNDIwLDkgQEAg
c3RhdGljIGlubGluZSB2b2lkIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKFhFdmVudCYgeEV2ZW50
LCBjb25zdCBXZWJNb3VzZUV2ZW50JgogICAgIHhDcm9zc2luZy5mb2N1cyA9IGZhbHNlOwogfQog
Ci1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2Vi
TW91c2VFdmVudCYgZXZlbnQpCitib29sIE5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChtX2lzV2luZG93ZWQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgoZXZlbnQudHlwZSgpID09IFdlYkV2
ZW50OjpNb3VzZURvd24gfHwgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQotICAg
ICAgICAgJiYgZXZlbnQuYnV0dG9uKCkgPT0gV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b24KLSAg
ICAgICAgICYmIHF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6SWdub3JlUmlnaHRDbGlj
a0luV2luZG93bGVzc01vZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1f
cGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGluaXRpYWxp
emVYRXZlbnQoeEV2ZW50KTsKQEAgLTQ1NiwxMCArNDMwLDEwIEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkK
ICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgewogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRG93
bjoKICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZVVwOgotICAgICAgICBzZXRYQnV0dG9uRXZlbnRG
aWVsZHMoeEV2ZW50LCBldmVudCwgY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOworICAg
ICAgICBzZXRYQnV0dG9uRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgbV9wbHVnaW4uY29udmVy
dFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkV2
ZW50OjpNb3VzZU1vdmU6Ci0gICAgICAgIHNldFhNb3Rpb25FdmVudEZpZWxkcyh4RXZlbnQsIGV2
ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CisgICAgICAgIHNldFhNb3Rpb25F
dmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQ
b2ludCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRm9yY2VD
aGFuZ2VkOgogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRm9yY2VEb3duOgpAQCAtNDc5LDcgKzQ1
Myw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25z
dCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHJldHVybiAhTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVn
aW4uTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCiAvLyBXZSB1bmRlZmluZSB0aGVzZSBj
b25zdGFudHMgaW4gbnBydW50aW1lX2ludGVybmFsLmggdG8gYXZvaWQgY29sbGlzaW9uCkBAIC00
ODksMjIgKzQ2MywyMCBAQCBjb25zdCBpbnQga0tleVJlbGVhc2VUeXBlID0gMzsKIGNvbnN0IGlu
dCBrRm9jdXNJblR5cGUgPSA5OwogY29uc3QgaW50IGtGb2N1c091dFR5cGUgPSAxMDsKIAotYm9v
bCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVs
RXZlbnQmIGV2ZW50KQorYm9vbCBOZXRzY2FwZVBsdWdpblgxMTo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAK
ICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKLSAgICBz
ZXRYQnV0dG9uRXZlbnRGaWVsZHNCeVdlYldoZWVsRXZlbnQoeEV2ZW50LCBldmVudCwgY29udmVy
dFRvUm9vdFZpZXcoSW50UG9pbnQoKSkpOworICAgIHNldFhCdXR0b25FdmVudEZpZWxkc0J5V2Vi
V2hlZWxFdmVudCh4RXZlbnQsIGV2ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQ
b2ludCgpKSk7CiAKLSAgICByZXR1cm4gIU5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICBy
ZXR1cm4gIW1fcGx1Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKIH0KIAotdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1TZXRGb2N1cyhib29sIGZvY3VzSW4pCit2b2lkIE5ldHNjYXBl
UGx1Z2luWDExOjpzZXRGb2N1cyhib29sIGZvY3VzSW4pCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dl
ZCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwog
CiAgICAgWEV2ZW50IHhFdmVudDsKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7CkBAIC01
MTMsMzYgKzQ4NSwyOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVNldEZvY3VzKGJv
b2wgZm9jdXNJbikKICAgICBmb2N1c0V2ZW50Lm1vZGUgPSBOb3RpZnlOb3JtYWw7CiAgICAgZm9j
dXNFdmVudC5kZXRhaWwgPSBOb3RpZnlEZXRhaWxOb25lOwogCi0gICAgTlBQX0hhbmRsZUV2ZW50
KCZ4RXZlbnQpOwotfQotCi1ib29sIE5ldHNjYXBlUGx1Z2luOjp3YW50c1BsdWdpblJlbGF0aXZl
TlBXaW5kb3dDb29yZGluYXRlcygpCi17Ci0gICAgcmV0dXJuIHRydWU7CisgICAgbV9wbHVnaW4u
TlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybUhhbmRsZU1vdXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK2Jv
b2wgTmV0c2NhcGVQbHVnaW5YMTE6OmhhbmRsZU1vdXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKG1fcGx1Z2luLmlzV2luZG93ZWQoKSk7CiAKICAgICBYRXZlbnQg
eEV2ZW50OwogICAgIGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKLSAgICBzZXRYQ3Jvc3NpbmdF
dmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwg
RW50ZXJOb3RpZnkpOworICAgIHNldFhDcm9zc2luZ0V2ZW50RmllbGRzKHhFdmVudCwgZXZlbnQs
IG1fcGx1Z2luLmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KCkpLCBFbnRlck5vdGlmeSk7CiAK
LSAgICByZXR1cm4gIU5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKKyAgICByZXR1cm4gIW1fcGx1
Z2luLk5QUF9IYW5kbGVFdmVudCgmeEV2ZW50KTsKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1IYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQp
Citib29sIE5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2Vi
TW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogCiAgICAgWEV2
ZW50IHhFdmVudDsKICAgICBpbml0aWFsaXplWEV2ZW50KHhFdmVudCk7Ci0gICAgc2V0WENyb3Nz
aW5nRXZlbnRGaWVsZHMoeEV2ZW50LCBldmVudCwgY29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQo
KSksIExlYXZlTm90aWZ5KTsKKyAgICBzZXRYQ3Jvc3NpbmdFdmVudEZpZWxkcyh4RXZlbnQsIGV2
ZW50LCBtX3BsdWdpbi5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludCgpKSwgTGVhdmVOb3RpZnkp
OwogCi0gICAgcmV0dXJuICFOUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CisgICAgcmV0dXJuICFt
X3BsdWdpbi5OUFBfSGFuZGxlRXZlbnQoJnhFdmVudCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBzZXRYS2V5RXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIHdlYkV2ZW50KQpAQCAtNTY1LDggKzUzMCw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRY
S2V5RXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdl
CiAgICAgeEtleS55X3Jvb3QgPSAwOwogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bUhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCitib29s
IE5ldHNjYXBlUGx1Z2luWDExOjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGV2ZW50KQogeworICAgIEFTU0VSVChtX3BsdWdpbi5pc1dpbmRvd2VkKCkpOwogICAg
IC8vIFdlIGRvbid0IGdlbmVyYXRlIG90aGVyIHR5cGVzIG9mIGtleWJvYXJkIGV2ZW50cyB2aWEg
V2ViRXZlbnRGYWN0b3J5LgogICAgIEFTU0VSVChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Oktl
eURvd24gfHwgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCk7CiAKQEAgLTU3NCw3ICs1
NDAsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZl
bnQpOwogICAgIHNldFhLZXlFdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50KTsKIAotICAgIHJldHVy
biAhTlBQX0hhbmRsZUV2ZW50KCZ4RXZlbnQpOworICAgIHJldHVybiAhbV9wbHVnaW4uTlBQX0hh
bmRsZUV2ZW50KCZ4RXZlbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hNjA5MDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTmV0c2NhcGVQbHVnaW5YMTFfaAorI2RlZmluZSBOZXRzY2FwZVBsdWdpblgx
MV9oCisKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKworI2luY2x1ZGUgIk5ldHNjYXBl
UGx1Z2luVW5peC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXRzY2FwZVBsdWdpbjsKKworY2xhc3MgTmV0c2Nh
cGVQbHVnaW5YMTEgZmluYWwgOiBwdWJsaWMgTmV0c2NhcGVQbHVnaW5Vbml4IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBjcmVhdGUoTmV0
c2NhcGVQbHVnaW4mKTsKKyAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYsIERp
c3BsYXkqKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2Nh
cGVQbHVnaW4mLCBEaXNwbGF5KiwgdWludDY0X3Qgd2luZG93SUQpOworI2VuZGlmCisgICAgdmly
dHVhbCB+TmV0c2NhcGVQbHVnaW5YMTEoKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIE5QV2lu
ZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkKiB3
aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE5QU2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3QqIHdpbmRvd1N5c3RlbUluZm8oKSBvdmVycmlkZSB7IHJldHVybiAmbV9zZXRXaW5kb3dD
YWxsYmFja1N0cnVjdDsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeURpZENoYW5nZSgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91
c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2Vi
TW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlib2FyZEV2
ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CisKKyAgICBOZXRzY2FwZVBsdWdpbiYgbV9wbHVnaW47
CisgICAgRGlzcGxheSogbV9wbHVnaW5EaXNwbGF5IHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6
OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0
IG1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHVpbnQ2
NF90IG1fd2luZG93SUQgeyAwIH07CisgICAgdW5zaWduZWQgbG9uZyBtX25wV2luZG93SUQgeyAw
IH07CisgICAgR3RrV2lkZ2V0KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0IHsgbnVsbHB0ciB9Owor
I2VuZGlmCit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkKKworI2VuZGlmIC8vIE5ldHNjYXBlUGx1Z2luWDExX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>